diff -Nru geos-3.7.1/aclocal.m4 geos-3.8.0/aclocal.m4 --- geos-3.7.1/aclocal.m4 2018-11-29 23:05:14.000000000 +0000 +++ geos-3.8.0/aclocal.m4 2019-10-10 17:21:08.000000000 +0000 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.13.4 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ 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'.])]) -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ # 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.16' +[am__api_version='1.13' 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.16.1], [], +m4_if([$1], [1.13.4], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ # 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.16.1])dnl +[AM_AUTOMAKE_VERSION([1.13.4])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-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -103,14 +103,15 @@ # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` +[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-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +142,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,12 +333,13 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 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_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], @@ -345,41 +347,49 @@ # Older Autoconf 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. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - AS_CASE([$CONFIG_FILES], - [*\'*], [eval set x "$CONFIG_FILES"], - [*], [set x $CONFIG_FILES]) + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf + for mf do # Strip MF so we end up with the name of the file. - am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line + 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. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`AS_DIRNAME(["$am_mf"])` - am_filepart=`AS_BASENAME(["$am_mf"])` - AM_RUN_LOG([cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles]) || am_rc=$? + 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"` + # 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'`; 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 - if test $am_rc -ne 0; then - AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking).]) - fi - AS_UNSET([am_dirpart]) - AS_UNSET([am_filepart]) - AS_UNSET([am_mf]) - AS_UNSET([am_rc]) - rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -388,17 +398,18 @@ # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # -# This code is only required when automatic dependency tracking is enabled. -# This creates each '.Po' and '.Plo' makefile fragment that we'll need in -# order to bootstrap the dependency handling code. +# 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" MAKE="${MAKE-make}"])]) + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -407,12 +418,6 @@ # 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. -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -485,11 +490,11 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: -# -# +# +# AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. +# 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 @@ -521,51 +526,6 @@ AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not @@ -574,6 +534,7 @@ 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. @@ -595,7 +556,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -606,7 +567,7 @@ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then +if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -616,7 +577,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -638,7 +599,7 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -673,7 +634,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -681,42 +642,49 @@ # AM_MAKE_INCLUDE() # ----------------- -# Check whether make has an 'include' directive that can support all -# the idioms we need for our automatic dependency tracking code. +# Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], -[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) -cat > confinc.mk << 'END' +[am_make=${MAKE-make} +cat > confinc << 'END' am__doit: - @echo this is the am__doit target >confinc.out + @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= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) - AS_CASE([$?:`cat confinc.out 2>/dev/null`], - ['0:this is the am__doit target'], - [AS_CASE([$s], - [BSD], [am__include='.include' am__quote='"'], - [am__include='include' am__quote=''])]) - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -AC_MSG_RESULT([${_am_result}]) -AC_SUBST([am__include])]) -AC_SUBST([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-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -755,7 +723,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -784,73 +752,9 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 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_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2018 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_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -931,7 +835,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -991,7 +895,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1019,7 +923,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1038,7 +942,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -Nru geos-3.7.1/autogen.bat geos-3.8.0/autogen.bat --- geos-3.7.1/autogen.bat 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/autogen.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -@ECHO OFF -REM -REM This script generates headers for use with Visual C++ only -REM -REM Usage: -REM .\autogen.bat -REM nmake -f makefile.vc -REM -REM NOTE: DO NOT include this script in GEOS sources distribution -REM - -set GEOS_HEADERS=include\geos - -COPY %GEOS_HEADERS%\version.h.vc %GEOS_HEADERS%\version.h -COPY %GEOS_HEADERS%\platform.h.vc %GEOS_HEADERS%\platform.h -COPY capi\geos_c.h.in capi\geos_c.h -REM Empty string as dummy git SHA-1 -@ECHO #define GEOS_REVISION "" > geos_revision.h diff -Nru geos-3.7.1/benchmarks/algorithm/CMakeLists.txt geos-3.8.0/benchmarks/algorithm/CMakeLists.txt --- geos-3.7.1/benchmarks/algorithm/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,20 @@ +################################################################################# +# +# CMake configuration for GEOS benchmarks/operation/predicate tests +# +# Copyright (C) 2017 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +# +################################################################################# +add_executable(perf_interiorpoint_area InteriorPointAreaPerfTest.cpp) +target_link_libraries(perf_interiorpoint_area geos) + +add_executable(perf_voronoi VoronoiPerfTest.cpp) +target_link_libraries(perf_voronoi geos) + +add_executable(perf_unaryunion_segments UnaryUnionSegmentsPerfTest.cpp) +target_link_libraries(perf_unaryunion_segments geos) diff -Nru geos-3.7.1/benchmarks/algorithm/InteriorPointAreaPerfTest.cpp geos-3.8.0/benchmarks/algorithm/InteriorPointAreaPerfTest.cpp --- geos-3.7.1/benchmarks/algorithm/InteriorPointAreaPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/InteriorPointAreaPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,138 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2011 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: perf/operation/predicate/RectangleIntersectsPerfTest.java r378 (JTS-1.12) + * + **********************************************************************/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace geos::geom; +using namespace geos::io; +using namespace std; + +class InteriorPointAreaPerfTest { +public: + InteriorPointAreaPerfTest() + : + pm(), + fact(GeometryFactory::create(&pm, 0)) + { + showHeader(); + } + + void + test(int nPts) + { + Coordinate origin(ORG_X, ORG_Y); + std::unique_ptr sinePoly = + createSineStar(origin, SIZE, nPts); + + /** + * Make the geometry "crinkly" by rounding off the points. + * This defeats the MonotoneChain optimization in the full relate + * algorithm, and provides a more realistic test. + */ + using geos::precision::SimpleGeometryPrecisionReducer; + double scale = nPts / SIZE; + PrecisionModel p_pm(scale); + SimpleGeometryPrecisionReducer reducer(&p_pm); + std::unique_ptr sinePolyCrinkly(reducer.reduce(sinePoly.get())); + sinePoly.reset(); + + //cout << sinePolyCrinkly->toText() << endl; + + test(*sinePolyCrinkly); + } + + const double ORG_X = 100.0; + const double ORG_Y = 100.0; + const double SIZE = 100.0; + const int N_ARMS = 20; + const double ARM_RATIO = 0.3; + const int N_ITER = 100; + +private: + PrecisionModel pm; + GeometryFactory::Ptr fact; + + void + showHeader() { + cout << "Interior Point Area perf test" << endl; + cout << "# Iterations: " << N_ITER << endl; + cout << "SineStar: origin: (" + << ORG_X << ", " << ORG_Y + << ") size: " << SIZE + << " # arms: " << N_ARMS + << " arm ratio: " << ARM_RATIO + << endl; + } + + void + test(geos::geom::Geometry& poly) + { + geos::util::Profile sw(""); + sw.start(); + + for(int i = 0; i < N_ITER; i++) { + std::unique_ptr pt( poly.getInteriorPoint() ); + } + + sw.stop(); + cout << poly.getNumPoints() << " points: " << sw.getTotFormatted() << endl; + } + + std::unique_ptr + createSineStar(const Coordinate& origin, + double size, int nPts) + { + using geos::geom::util::SineStarFactory; + + SineStarFactory gsf(fact.get()); + gsf.setCentre(origin); + gsf.setSize(size); + gsf.setNumPoints(nPts); + gsf.setArmLengthRatio( ARM_RATIO ); + gsf.setNumArms( N_ARMS ); + std::unique_ptr poly = gsf.createSineStar(); + return poly; + } +}; + +int +main() +{ + InteriorPointAreaPerfTest tester; + + tester.test(100); + tester.test(1000); + tester.test(10000); + tester.test(100000); + tester.test(1000000); +} + diff -Nru geos-3.7.1/benchmarks/algorithm/Makefile.am geos-3.8.0/benchmarks/algorithm/Makefile.am --- geos-3.7.1/benchmarks/algorithm/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,25 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix=@prefix@ +top_srcdir=@top_srcdir@ +top_builddir=@top_builddir@ + +noinst_PROGRAMS = \ + InteriorPointAreaPerfTest \ + VoronoiPerfTest \ + UnaryUnionSegmentsPerfTest + +InteriorPointAreaPerfTest_SOURCES = InteriorPointAreaPerfTest.cpp +InteriorPointAreaPerfTest_LDADD = $(top_builddir)/src/libgeos.la + +VoronoiPerfTest_SOURCES = VoronoiPerfTest.cpp +VoronoiPerfTest_LDADD = $(top_builddir)/src/libgeos.la + +UnaryUnionSegmentsPerfTest_SOURCES = UnaryUnionSegmentsPerfTest.cpp +UnaryUnionSegmentsPerfTest_LDADD = $(top_builddir)/src/libgeos.la + +AM_CPPFLAGS = -I$(top_srcdir)/include +AM_CPPFLAGS += -I$(top_srcdir)/src/io/markup + +EXTRA_DIST = CMakeLists.txt diff -Nru geos-3.7.1/benchmarks/algorithm/Makefile.in geos-3.8.0/benchmarks/algorithm/Makefile.in --- geos-3.7.1/benchmarks/algorithm/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,673 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +noinst_PROGRAMS = InteriorPointAreaPerfTest$(EXEEXT) \ + VoronoiPerfTest$(EXEEXT) UnaryUnionSegmentsPerfTest$(EXEEXT) +subdir = benchmarks/algorithm +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_InteriorPointAreaPerfTest_OBJECTS = \ + InteriorPointAreaPerfTest.$(OBJEXT) +InteriorPointAreaPerfTest_OBJECTS = \ + $(am_InteriorPointAreaPerfTest_OBJECTS) +InteriorPointAreaPerfTest_DEPENDENCIES = \ + $(top_builddir)/src/libgeos.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_UnaryUnionSegmentsPerfTest_OBJECTS = \ + UnaryUnionSegmentsPerfTest.$(OBJEXT) +UnaryUnionSegmentsPerfTest_OBJECTS = \ + $(am_UnaryUnionSegmentsPerfTest_OBJECTS) +UnaryUnionSegmentsPerfTest_DEPENDENCIES = \ + $(top_builddir)/src/libgeos.la +am_VoronoiPerfTest_OBJECTS = VoronoiPerfTest.$(OBJEXT) +VoronoiPerfTest_OBJECTS = $(am_VoronoiPerfTest_OBJECTS) +VoronoiPerfTest_DEPENDENCIES = $(top_builddir)/src/libgeos.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(InteriorPointAreaPerfTest_SOURCES) \ + $(UnaryUnionSegmentsPerfTest_SOURCES) \ + $(VoronoiPerfTest_SOURCES) +DIST_SOURCES = $(InteriorPointAreaPerfTest_SOURCES) \ + $(UnaryUnionSegmentsPerfTest_SOURCES) \ + $(VoronoiPerfTest_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +InteriorPointAreaPerfTest_SOURCES = InteriorPointAreaPerfTest.cpp +InteriorPointAreaPerfTest_LDADD = $(top_builddir)/src/libgeos.la +VoronoiPerfTest_SOURCES = VoronoiPerfTest.cpp +VoronoiPerfTest_LDADD = $(top_builddir)/src/libgeos.la +UnaryUnionSegmentsPerfTest_SOURCES = UnaryUnionSegmentsPerfTest.cpp +UnaryUnionSegmentsPerfTest_LDADD = $(top_builddir)/src/libgeos.la +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src/io/markup +EXTRA_DIST = CMakeLists.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/algorithm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/algorithm/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 + +InteriorPointAreaPerfTest$(EXEEXT): $(InteriorPointAreaPerfTest_OBJECTS) $(InteriorPointAreaPerfTest_DEPENDENCIES) $(EXTRA_InteriorPointAreaPerfTest_DEPENDENCIES) + @rm -f InteriorPointAreaPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(InteriorPointAreaPerfTest_OBJECTS) $(InteriorPointAreaPerfTest_LDADD) $(LIBS) + +UnaryUnionSegmentsPerfTest$(EXEEXT): $(UnaryUnionSegmentsPerfTest_OBJECTS) $(UnaryUnionSegmentsPerfTest_DEPENDENCIES) $(EXTRA_UnaryUnionSegmentsPerfTest_DEPENDENCIES) + @rm -f UnaryUnionSegmentsPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(UnaryUnionSegmentsPerfTest_OBJECTS) $(UnaryUnionSegmentsPerfTest_LDADD) $(LIBS) + +VoronoiPerfTest$(EXEEXT): $(VoronoiPerfTest_OBJECTS) $(VoronoiPerfTest_DEPENDENCIES) $(EXTRA_VoronoiPerfTest_DEPENDENCIES) + @rm -f VoronoiPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(VoronoiPerfTest_OBJECTS) $(VoronoiPerfTest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InteriorPointAreaPerfTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnaryUnionSegmentsPerfTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VoronoiPerfTest.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + 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-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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: +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 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: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am 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 tags-am 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 -Nru geos-3.7.1/benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp geos-3.8.0/benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp --- geos-3.7.1/benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,71 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2019 Daniel Baston + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + **********************************************************************/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +class SegmentUnaryUnionPerfTest { + +public: + void test(size_t num_lines) { + using namespace geos::geom; + + std::default_random_engine e(12345); + std::uniform_real_distribution<> dis(0, 100); + + + std::vector> lines; + + for (size_t i = 0; i < num_lines; i++) { + CoordinateArraySequence cas(2, 2); + cas.setAt(Coordinate(dis(e), dis(e)), 0); + cas.setAt(Coordinate(dis(e), dis(e)), 1); + + lines.emplace_back(gfact->createLineString(std::move(cas))); + } + + auto g = gfact->createMultiLineString(std::move(lines)); + + auto sw = profiler->get("union"); + sw->start(); + + g->Union(); + + sw->stop(); + + std::cout << *sw << std::endl; + } +private: + decltype(geos::geom::GeometryFactory::create()) gfact = geos::geom::GeometryFactory::create(); + geos::util::Profiler* profiler = geos::util::Profiler::instance(); +}; + +int main(int argc, char** argv) { + SegmentUnaryUnionPerfTest tester; + + auto num_lines = std::atol(argv[1]); + auto num_reps = argc > 2 ? std::atol(argv[2]) : 1; + + for (int i = 0; i < num_reps; i++) { + tester.test(num_lines); + } +} \ No newline at end of file diff -Nru geos-3.7.1/benchmarks/algorithm/VoronoiPerfTest.cpp geos-3.8.0/benchmarks/algorithm/VoronoiPerfTest.cpp --- geos-3.7.1/benchmarks/algorithm/VoronoiPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/algorithm/VoronoiPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,92 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2019 Daniel Baston + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + **********************************************************************/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +class VoronoiPerfTest { + +public: + void test(size_t num_points) { + using namespace geos::geom; + + std::default_random_engine e(12345); + std::uniform_real_distribution<> dis(0, 100); + + std::unique_ptr> coords(new std::vector(num_points)); + std::generate(coords->begin(), coords->end(), [&dis, &e]() { + return Coordinate(dis(e), dis(e)); + }); + CoordinateArraySequence seq(coords.release()); + auto geom = gfact->createLineString(seq.clone()); + + voronoi(seq); + voronoi(*geom); + + delaunay(seq); + delaunay(*geom); + + std::cout << std::endl; + } +private: + decltype(geos::geom::GeometryFactory::create()) gfact = geos::geom::GeometryFactory::create(); + geos::util::Profiler* profiler = geos::util::Profiler::instance(); + + template + void voronoi(const T & sites) { + auto sw = profiler->get(std::string("Voronoi from ") + typeid(T).name()); + sw->start(); + + geos::triangulate::VoronoiDiagramBuilder vdb; + vdb.setSites(sites); + + auto result = vdb.getDiagram(*gfact); + + sw->stop(); + std::cout << sw->name << ": " << result->getNumGeometries() << ": " << *sw << std::endl; + } + + template + void delaunay(const T & seq) { + auto sw = profiler->get(std::string("Delaunay from ") + typeid(T).name()); + sw->start(); + + geos::triangulate::DelaunayTriangulationBuilder dtb; + dtb.setSites(seq); + + auto result = dtb.getTriangles(*gfact); + + sw->stop(); + std::cout << sw->name << ": " << result->getNumGeometries() << ": " << *sw << std::endl; + } +}; + +int main() { + VoronoiPerfTest tester; + + //tester.test(100); + //tester.test(1000); + //tester.test(10000); + for (auto i = 0; i < 5; i++) { + tester.test(100000); + } +} \ No newline at end of file diff -Nru geos-3.7.1/benchmarks/capi/CMakeLists.txt geos-3.8.0/benchmarks/capi/CMakeLists.txt --- geos-3.7.1/benchmarks/capi/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,24 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +add_executable(perf_memleak_mp_prep memleak_mp_prep.c) +# test_perf_memleak_mp_prep is not dependant against geos target, +# but geos_c only, so need explicit include directories. +target_include_directories(perf_memleak_mp_prep + PUBLIC + $ + $) +target_link_libraries(perf_memleak_mp_prep PRIVATE geos_c) + +add_executable(perf_geospreparedcontains GEOSPreparedContainsPerfTest.cpp) +target_link_libraries(perf_geospreparedcontains PRIVATE geos geos_c) + +add_executable(perf_intersection IntersectionPerfTest.cpp) +target_link_libraries(perf_intersection PRIVATE geos geos_c) diff -Nru geos-3.7.1/benchmarks/capi/GEOSPreparedContainsPerfTest.cpp geos-3.8.0/benchmarks/capi/GEOSPreparedContainsPerfTest.cpp --- geos-3.7.1/benchmarks/capi/GEOSPreparedContainsPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/GEOSPreparedContainsPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,111 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2019 Daniel Baston + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + **********************************************************************/ + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +class GEOSPreparedContainsPerfTest { + +public: + void test(const GEOSGeometry* g, size_t num_points) { + using namespace geos::geom; + + double xmin, xmax, ymin, ymax; + + GEOSGeom_getXMin(g, &xmin); + GEOSGeom_getXMax(g, &xmax); + GEOSGeom_getYMin(g, &ymin); + GEOSGeom_getYMax(g, &ymax); + + std::default_random_engine e(12345); + std::uniform_real_distribution<> xdist(xmin, xmax); + std::uniform_real_distribution<> ydist(ymin, ymax); + + std::vector coords(num_points); + std::generate(coords.begin(), coords.end(), [&xdist, &ydist, &e]() { + return Coordinate(xdist(e), ydist(e)); + }); + + geos::util::Profile sw("GEOSPreparedContains"); + sw.start(); + + size_t hits = 0; + auto prep = GEOSPrepare(g); + for (const auto& c : coords) { + auto pt = GEOSGeom_createPointFromXY(c.x, c.y); + + if (GEOSPreparedContains(prep, pt)) { + hits++; + } + + GEOSGeom_destroy(pt); + } + + GEOSPreparedGeom_destroy(prep); + + sw.stop(); + + std::cout << sw.name << ": " << hits << " hits from " << num_points << " points in " << sw.getTotFormatted() << std::endl; + + } +}; + +int main(int argc, char** argv) { + if (argc != 3) { + std::cout << "perf_geospreparedcontins performs a specified number of point-in-polygon tests" << std::endl; + std::cout << "on randomly generated points from the bounding box of a single geometry provided" << std::endl; + std::cout << "in a file as WKT." << std::endl; + std::cout << std::endl; + std::cout << "Usage: perf_geospreparedcontins [wktfile] [n]" << std::endl; + return 0; + } + + GEOSPreparedContainsPerfTest tester; + + int n = std::atoi(argv[2]); + std::cout << "Performing " << n << " point-in-polygon tests." << std::endl; + + std::string fname{argv[1]}; + std::cout << "Reading shape from " << fname << std::endl; + + std::ifstream f(fname); + std::stringstream buff; + buff << f.rdbuf(); + f.close(); + + std::string wkt = buff.str(); + buff.clear(); + + initGEOS(nullptr, nullptr); + GEOSGeometry* g = GEOSGeomFromWKT(wkt.c_str()); + wkt.clear(); + + tester.test(g, n); + + GEOSGeom_destroy(g); +} diff -Nru geos-3.7.1/benchmarks/capi/IntersectionPerfTest.cpp geos-3.8.0/benchmarks/capi/IntersectionPerfTest.cpp --- geos-3.7.1/benchmarks/capi/IntersectionPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/IntersectionPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,87 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2019 Daniel Baston + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + **********************************************************************/ + +#include +#include + +#include +#include +#include + +int main(int argc, char** argv) { + if (argc != 2 && argc != 3) { + std::cout << "perf_intersection reads geometries from a WKT file and" << std::endl; + std::cout << "inserts them into an STR-tree. For each input geometry, it" << std::endl; + std::cout << "queries the tree to find all intersecting geometries and" << std::endl; + std::cout << "then computes their intersection." << std::endl; + std::cout << std::endl; + std::cout << "Usage: perf_intersection [wktfile] [n]" << std::endl; + return 0; + } + + initGEOS(nullptr, nullptr); + + std::string fname{argv[1]}; + + long max_geoms; + if (argc == 3) { + max_geoms = std::atol(argv[2]); + std::cout << "Reading up to " << max_geoms << " geometries from " << fname << std::endl; + } else { + std::cout << "Reading geometries from " << fname << std::endl; + max_geoms = -1; + } + + std::vector geoms; + + std::ifstream f(fname); + std::string line; + long i = 0; + while(std::getline(f, line) && i < max_geoms) { + geoms.push_back(GEOSGeomFromWKT(line.c_str())); + i++; + } + f.close(); + + std::cout << "Read " << geoms.size() << " geometries." << std::endl; + + GEOSSTRtree* tree = GEOSSTRtree_create(10); + + for (const auto& g : geoms) { + GEOSSTRtree_insert(tree, g, g); + } + + geos::util::Profile sw("Intersection"); + sw.start(); + + for (const auto& g : geoms) { + GEOSSTRtree_query(tree, g, [](void* g2v, void* g1v) { + GEOSGeometry* g1 = (GEOSGeometry*) g1v; + GEOSGeometry* g2 = (GEOSGeometry*) g2v; + if (GEOSIntersects(g1, g2) == 1) { + GEOSGeometry* g3 = GEOSIntersection(g1, g2); + GEOSGeom_destroy(g3); + } + }, g); + } + + sw.stop(); + std::cout << sw.getTotFormatted() << std::endl; + + GEOSSTRtree_destroy(tree); + + for (auto& g : geoms) { + GEOSGeom_destroy(g); + } +} diff -Nru geos-3.7.1/benchmarks/capi/Makefile.am geos-3.8.0/benchmarks/capi/Makefile.am --- geos-3.7.1/benchmarks/capi/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,26 @@ +# +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix=@prefix@ +top_srcdir=@top_srcdir@ +top_builddir=@top_builddir@ + +check_PROGRAMS = \ + memleak_mp_prep \ + GEOSPreparedContainsPerfTest \ + IntersectionPerfTest + +LIBS = $(top_builddir)/capi/libgeos_c.la +AM_CPPFLAGS = -I$(top_builddir)/capi -I$(top_srcdir)/include + +memleak_mp_prep_SOURCES = memleak_mp_prep.c +memleak_mp_prep_LDADD = $(LIBS) + +GEOSPreparedContainsPerfTest_SOURCES = GEOSPreparedContainsPerfTest.cpp +GEOSPreparedContainsPerfTest_LDADD = $(top_builddir)/src/libgeos.la + +IntersectionPerfTest_SOURCES = IntersectionPerfTest.cpp +IntersectionPerfTest_LDADD = $(top_builddir)/src/libgeos.la + +EXTRA_DIST = CMakeLists.txt diff -Nru geos-3.7.1/benchmarks/capi/Makefile.in geos-3.8.0/benchmarks/capi/Makefile.in --- geos-3.7.1/benchmarks/capi/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,708 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +check_PROGRAMS = memleak_mp_prep$(EXEEXT) \ + GEOSPreparedContainsPerfTest$(EXEEXT) \ + IntersectionPerfTest$(EXEEXT) +subdir = benchmarks/capi +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am_GEOSPreparedContainsPerfTest_OBJECTS = \ + GEOSPreparedContainsPerfTest.$(OBJEXT) +GEOSPreparedContainsPerfTest_OBJECTS = \ + $(am_GEOSPreparedContainsPerfTest_OBJECTS) +GEOSPreparedContainsPerfTest_DEPENDENCIES = \ + $(top_builddir)/src/libgeos.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +am_IntersectionPerfTest_OBJECTS = IntersectionPerfTest.$(OBJEXT) +IntersectionPerfTest_OBJECTS = $(am_IntersectionPerfTest_OBJECTS) +IntersectionPerfTest_DEPENDENCIES = $(top_builddir)/src/libgeos.la +am_memleak_mp_prep_OBJECTS = memleak_mp_prep.$(OBJEXT) +memleak_mp_prep_OBJECTS = $(am_memleak_mp_prep_OBJECTS) +memleak_mp_prep_DEPENDENCIES = $(LIBS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +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) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(GEOSPreparedContainsPerfTest_SOURCES) \ + $(IntersectionPerfTest_SOURCES) $(memleak_mp_prep_SOURCES) +DIST_SOURCES = $(GEOSPreparedContainsPerfTest_SOURCES) \ + $(IntersectionPerfTest_SOURCES) $(memleak_mp_prep_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(top_builddir)/capi/libgeos_c.la +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ + +# +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = -I$(top_builddir)/capi -I$(top_srcdir)/include +memleak_mp_prep_SOURCES = memleak_mp_prep.c +memleak_mp_prep_LDADD = $(LIBS) +GEOSPreparedContainsPerfTest_SOURCES = GEOSPreparedContainsPerfTest.cpp +GEOSPreparedContainsPerfTest_LDADD = $(top_builddir)/src/libgeos.la +IntersectionPerfTest_SOURCES = IntersectionPerfTest.cpp +IntersectionPerfTest_LDADD = $(top_builddir)/src/libgeos.la +EXTRA_DIST = CMakeLists.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/capi/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/capi/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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 + +GEOSPreparedContainsPerfTest$(EXEEXT): $(GEOSPreparedContainsPerfTest_OBJECTS) $(GEOSPreparedContainsPerfTest_DEPENDENCIES) $(EXTRA_GEOSPreparedContainsPerfTest_DEPENDENCIES) + @rm -f GEOSPreparedContainsPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(GEOSPreparedContainsPerfTest_OBJECTS) $(GEOSPreparedContainsPerfTest_LDADD) $(LIBS) + +IntersectionPerfTest$(EXEEXT): $(IntersectionPerfTest_OBJECTS) $(IntersectionPerfTest_DEPENDENCIES) $(EXTRA_IntersectionPerfTest_DEPENDENCIES) + @rm -f IntersectionPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(IntersectionPerfTest_OBJECTS) $(IntersectionPerfTest_LDADD) $(LIBS) + +memleak_mp_prep$(EXEEXT): $(memleak_mp_prep_OBJECTS) $(memleak_mp_prep_DEPENDENCIES) $(EXTRA_memleak_mp_prep_DEPENDENCIES) + @rm -f memleak_mp_prep$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(memleak_mp_prep_OBJECTS) $(memleak_mp_prep_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSPreparedContainsPerfTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntersectionPerfTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memleak_mp_prep.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + 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-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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 + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) +check: check-am +all-am: Makefile +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 \ + 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 TAGS all all-am check check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am 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 tags-am 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 -Nru geos-3.7.1/benchmarks/capi/memleak_mp_prep.c geos-3.8.0/benchmarks/capi/memleak_mp_prep.c --- geos-3.7.1/benchmarks/capi/memleak_mp_prep.c 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/capi/memleak_mp_prep.c 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,42 @@ +#include +#include +#include "geos_c.h" + +int main(void) { + GEOSWKTReader *reader; + GEOSGeometry *mp; + GEOSGeometry *p; + const GEOSPreparedGeometry *prep_mp; + unsigned long int i; + unsigned long int count = 1e6; + + initGEOS(NULL, NULL); + + reader = GEOSWKTReader_create(); + + mp = GEOSWKTReader_read(reader, + "MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)))"); + + p = GEOSWKTReader_read(reader, + "POLYGON((2 2, 6 2, 6 6, 2 6, 2 2))"); + + assert(GEOSisValid(mp)); + assert(GEOSisValid(p)); + + prep_mp = GEOSPrepare(mp); + + for (i=0; i + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * - Monitor class sizes + * + **********************************************************************/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace geos; + +#define check(x) \ + { cout << "Size of " << #x << " is " << sizeof(x) << endl; } + +int +main() +{ + check(geomgraph::Depth); + check(geomgraph::DirectedEdge); + check(geomgraph::DirectedEdgeStar); + check(geomgraph::Edge); + check(geomgraph::EdgeEnd); + check(geomgraph::PlanarGraph); + check(geomgraph::TopologyLocation); + check(geomgraph::index::SweepLineEvent); + check(noding::NodedSegmentString); + check(geom::Geometry); + check(geom::Point); + check(geom::LineString); + check(geom::LinearRing); + check(geom::Polygon); + check(geom::GeometryCollection); + check(geom::MultiPoint); + check(geom::MultiLineString); + check(geom::MultiPolygon); + check(geom::CoordinateArraySequence); + check(geom::FixedSizeCoordinateSequence<1>); + check(geom::FixedSizeCoordinateSequence<2>); + check(int64); +} + diff -Nru geos-3.7.1/benchmarks/CMakeLists.txt geos-3.8.0/benchmarks/CMakeLists.txt --- geos-3.7.1/benchmarks/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,16 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +add_executable(perf_class_sizes ClassSizes.cpp) +target_link_libraries(perf_class_sizes PRIVATE geos) + +add_subdirectory(algorithm) +add_subdirectory(operation) +add_subdirectory(capi) diff -Nru geos-3.7.1/benchmarks/Makefile.am geos-3.8.0/benchmarks/Makefile.am --- geos-3.7.1/benchmarks/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,17 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +SUBDIRS = \ + algorithm \ + operation \ + capi + +LIBS = $(top_builddir)/src/libgeos.la + +AM_CPPFLAGS = -I$(top_srcdir)/include + +noinst_PROGRAMS = ClassSizes + +ClassSizes_SOURCES = ClassSizes.cpp + +EXTRA_DIST = CMakeLists.txt diff -Nru geos-3.7.1/benchmarks/Makefile.in geos-3.8.0/benchmarks/Makefile.in --- geos-3.7.1/benchmarks/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,762 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +noinst_PROGRAMS = ClassSizes$(EXEEXT) +subdir = benchmarks +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_ClassSizes_OBJECTS = ClassSizes.$(OBJEXT) +ClassSizes_OBJECTS = $(am_ClassSizes_OBJECTS) +ClassSizes_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(ClassSizes_SOURCES) +DIST_SOURCES = $(ClassSizes_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-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 \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +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" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(top_builddir)/src/libgeos.la +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +SUBDIRS = \ + algorithm \ + operation \ + capi + +AM_CPPFLAGS = -I$(top_srcdir)/include +ClassSizes_SOURCES = ClassSizes.cpp +EXTRA_DIST = CMakeLists.txt +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 + +ClassSizes$(EXEEXT): $(ClassSizes_OBJECTS) $(ClassSizes_DEPENDENCIES) $(EXTRA_ClassSizes_DEPENDENCIES) + @rm -f ClassSizes$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(ClassSizes_OBJECTS) $(ClassSizes_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClassSizes.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + 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" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + 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; \ + $(am__define_uniq_tagged_files); \ + 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-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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 + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + 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 +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + 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 -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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 \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am 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 -Nru geos-3.7.1/benchmarks/operation/buffer/CMakeLists.txt geos-3.8.0/benchmarks/operation/buffer/CMakeLists.txt --- geos-3.7.1/benchmarks/operation/buffer/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/buffer/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,12 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +add_executable(perf_iterated_buffer IteratedBufferStressTest.cpp) +target_link_libraries(perf_iterated_buffer PRIVATE geos) diff -Nru geos-3.7.1/benchmarks/operation/buffer/IteratedBufferStressTest.cpp geos-3.8.0/benchmarks/operation/buffer/IteratedBufferStressTest.cpp --- geos-3.7.1/benchmarks/operation/buffer/IteratedBufferStressTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/buffer/IteratedBufferStressTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,90 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: perf/operation/buffer/IteratedBufferStressTest.java rev 1.1 + * + * - Added exit condition when number of vertices is zero + * + **********************************************************************/ + + +#include +#include +#include +#include +#include +#include + +using namespace geos::geom; +using namespace geos::io; +using namespace std; + +typedef unique_ptr GeomPtr; + +GeomPtr +doBuffer(const Geometry& g, double dist) +{ + cout << "Buffering with dist = " << dist << endl; + GeomPtr buf(g.buffer(dist)); + cout << "Buffer result has " << buf->getNumPoints() << " vertices" << endl; + +//cout << *buf << endl; + + return buf; +} + +// throws Exception +void +run(const Geometry* base) +{ + GeomPtr tmp; + + // profile here + geos::util::Profile totalSW("buffer"); + double dist = 1.0; + while(true) { + + totalSW.start(); + + GeomPtr b1 = doBuffer(*base, dist); + GeomPtr b2 = doBuffer(*b1, -dist); + + totalSW.stop(); + cout << "---------------------- " + << totalSW << endl; // totalSW.getTimeString() << endl; + + dist += 1; + base = b2.get(); + tmp = std::move(b2); // move as anti-optimisation? + + if(! base->getNumPoints()) { + break; + } + } +} + +int +main() +{ + PrecisionModel pm; + GeometryFactory::Ptr gf = GeometryFactory::create(&pm); + WKTReader rdr(gf.get()); + + string inputWKT = + "POLYGON ((110 320, 190 220, 60 200, 180 120, 120 40, 290 150, 410 40, 410 230, 500 340, 320 310, 260 370, 220 310, 110 320), (220 260, 250 180, 290 220, 360 150, 350 250, 260 280, 220 260))"; + + GeomPtr base(rdr.read(inputWKT)); + run(base.get()); +} + diff -Nru geos-3.7.1/benchmarks/operation/buffer/Makefile.am geos-3.8.0/benchmarks/operation/buffer/Makefile.am --- geos-3.7.1/benchmarks/operation/buffer/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/buffer/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,17 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix=@prefix@ +top_srcdir=@top_srcdir@ +top_builddir=@top_builddir@ + +noinst_PROGRAMS = IteratedBufferStressTest + +LIBS = $(top_builddir)/src/libgeos.la + +IteratedBufferStressTest_SOURCES = IteratedBufferStressTest.cpp +IteratedBufferStressTest_LDADD = $(LIBS) + +AM_CPPFLAGS = -I$(top_srcdir)/include + +EXTRA_DIST = CMakeLists.txt diff -Nru geos-3.7.1/benchmarks/operation/buffer/Makefile.in geos-3.8.0/benchmarks/operation/buffer/Makefile.in --- geos-3.7.1/benchmarks/operation/buffer/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/buffer/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,644 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +noinst_PROGRAMS = IteratedBufferStressTest$(EXEEXT) +subdir = benchmarks/operation/buffer +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_IteratedBufferStressTest_OBJECTS = \ + IteratedBufferStressTest.$(OBJEXT) +IteratedBufferStressTest_OBJECTS = \ + $(am_IteratedBufferStressTest_OBJECTS) +IteratedBufferStressTest_DEPENDENCIES = $(LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(IteratedBufferStressTest_SOURCES) +DIST_SOURCES = $(IteratedBufferStressTest_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(top_builddir)/src/libgeos.la +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +IteratedBufferStressTest_SOURCES = IteratedBufferStressTest.cpp +IteratedBufferStressTest_LDADD = $(LIBS) +AM_CPPFLAGS = -I$(top_srcdir)/include +EXTRA_DIST = CMakeLists.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/operation/buffer/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/operation/buffer/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 + +IteratedBufferStressTest$(EXEEXT): $(IteratedBufferStressTest_OBJECTS) $(IteratedBufferStressTest_DEPENDENCIES) $(EXTRA_IteratedBufferStressTest_DEPENDENCIES) + @rm -f IteratedBufferStressTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(IteratedBufferStressTest_OBJECTS) $(IteratedBufferStressTest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IteratedBufferStressTest.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + 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-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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: +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 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: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am 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 tags-am 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 -Nru geos-3.7.1/benchmarks/operation/CMakeLists.txt geos-3.8.0/benchmarks/operation/CMakeLists.txt --- geos-3.7.1/benchmarks/operation/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,12 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +add_subdirectory(buffer) +add_subdirectory(predicate) diff -Nru geos-3.7.1/benchmarks/operation/Makefile.am geos-3.8.0/benchmarks/operation/Makefile.am --- geos-3.7.1/benchmarks/operation/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,9 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +SUBDIRS = \ + buffer \ + predicate + +EXTRA_DIST = CMakeLists.txt + diff -Nru geos-3.7.1/benchmarks/operation/Makefile.in geos-3.8.0/benchmarks/operation/Makefile.in --- geos-3.7.1/benchmarks/operation/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,676 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +subdir = benchmarks/operation +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-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 \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +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" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +SUBDIRS = \ + buffer \ + predicate + +EXTRA_DIST = CMakeLists.txt +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/operation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/operation/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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 + +# 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. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + 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" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + 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; \ + $(am__define_uniq_tagged_files); \ + 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-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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 + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + 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 +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 Makefile +distclean-am: clean-am distclean-generic 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 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: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean 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 \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am 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 -Nru geos-3.7.1/benchmarks/operation/predicate/CMakeLists.txt geos-3.8.0/benchmarks/operation/predicate/CMakeLists.txt --- geos-3.7.1/benchmarks/operation/predicate/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/predicate/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,12 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +add_executable(perf_rectangle_intersects RectangleIntersectsPerfTest.cpp) +target_link_libraries(perf_rectangle_intersects PRIVATE geos) diff -Nru geos-3.7.1/benchmarks/operation/predicate/Makefile.am geos-3.8.0/benchmarks/operation/predicate/Makefile.am --- geos-3.7.1/benchmarks/operation/predicate/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/predicate/Makefile.am 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,17 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix=@prefix@ +top_srcdir=@top_srcdir@ +top_builddir=@top_builddir@ + +noinst_PROGRAMS = RectangleIntersectsPerfTest + +LIBS = $(top_builddir)/src/libgeos.la + +RectangleIntersectsPerfTest_SOURCES = RectangleIntersectsPerfTest.cpp +RectangleIntersectsPerfTest_LDADD = $(LIBS) + +AM_CPPFLAGS = -I$(top_srcdir)/include + +EXTRA_DIST = CMakeLists.txt diff -Nru geos-3.7.1/benchmarks/operation/predicate/Makefile.in geos-3.8.0/benchmarks/operation/predicate/Makefile.in --- geos-3.7.1/benchmarks/operation/predicate/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/predicate/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -0,0 +1,644 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +noinst_PROGRAMS = RectangleIntersectsPerfTest$(EXEEXT) +subdir = benchmarks/operation/predicate +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_RectangleIntersectsPerfTest_OBJECTS = \ + RectangleIntersectsPerfTest.$(OBJEXT) +RectangleIntersectsPerfTest_OBJECTS = \ + $(am_RectangleIntersectsPerfTest_OBJECTS) +RectangleIntersectsPerfTest_DEPENDENCIES = $(LIBS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(RectangleIntersectsPerfTest_SOURCES) +DIST_SOURCES = $(RectangleIntersectsPerfTest_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(top_builddir)/src/libgeos.la +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +RectangleIntersectsPerfTest_SOURCES = RectangleIntersectsPerfTest.cpp +RectangleIntersectsPerfTest_LDADD = $(LIBS) +AM_CPPFLAGS = -I$(top_srcdir)/include +EXTRA_DIST = CMakeLists.txt +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 benchmarks/operation/predicate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu benchmarks/operation/predicate/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 + +RectangleIntersectsPerfTest$(EXEEXT): $(RectangleIntersectsPerfTest_OBJECTS) $(RectangleIntersectsPerfTest_DEPENDENCIES) $(EXTRA_RectangleIntersectsPerfTest_DEPENDENCIES) + @rm -f RectangleIntersectsPerfTest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(RectangleIntersectsPerfTest_OBJECTS) $(RectangleIntersectsPerfTest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RectangleIntersectsPerfTest.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + 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-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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: +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 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: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am 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 tags-am 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 -Nru geos-3.7.1/benchmarks/operation/predicate/RectangleIntersectsPerfTest.cpp geos-3.8.0/benchmarks/operation/predicate/RectangleIntersectsPerfTest.cpp --- geos-3.7.1/benchmarks/operation/predicate/RectangleIntersectsPerfTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/benchmarks/operation/predicate/RectangleIntersectsPerfTest.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,164 @@ +/********************************************************************** + * + * GEOS - Geometry Engine Open Source + * http://geos.osgeo.org + * + * Copyright (C) 2011 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: perf/operation/predicate/RectangleIntersectsPerfTest.java r378 (JTS-1.12) + * + **********************************************************************/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace geos::geom; +using namespace geos::io; +using namespace std; + +class RectangleIntersectsPerfTest { +public: + RectangleIntersectsPerfTest() + : + pm(), + fact(GeometryFactory::create(&pm, 0)) + {} + + void + test(int nPts) + { + double size = 100; + Coordinate origin(0, 0); + Geometry::Ptr sinePoly( + createSineStar(origin, size, nPts)->getBoundary() + ); + + /** + * Make the geometry "crinkly" by rounding off the points. + * This defeats the MonotoneChain optimization in the full relate + * algorithm, and provides a more realistic test. + */ + using geos::precision::SimpleGeometryPrecisionReducer; + PrecisionModel p_pm(size / 10); + SimpleGeometryPrecisionReducer reducer(&p_pm); + Geometry::Ptr sinePolyCrinkly(reducer.reduce(sinePoly.get())); + sinePoly.reset(); + + Geometry& target = *sinePolyCrinkly; + + testRectangles(target, 30, 5); + } + + +private: + + static const int MAX_ITER = 10; + + static const int NUM_AOI_PTS = 2000; + static const int NUM_LINES = 5000; + static const int NUM_LINE_PTS = 1000; + + PrecisionModel pm; + GeometryFactory::Ptr fact; + + void + testRectangles(const Geometry& target, int nRect, double rectSize) + { + vector rects; + createRectangles(*target.getEnvelopeInternal(), nRect, rectSize, rects); + test(rects, target); + for(vector::iterator i = rects.begin(), n = rects.end(); + i != n; ++i) { + delete *i; + } + } + + void + test(vector& rect, const Geometry& g) + { + typedef vector::size_type size_type; + + geos::util::Profile sw(""); + sw.start(); + + for(int i = 0; i < MAX_ITER; i++) { + for(size_type j = 0; j < rect.size(); j++) { + rect[j]->intersects(&g); + } + } + + sw.stop(); + cout << g.getNumPoints() << " points: " << sw.getTot() << " usecs" << endl; + + } + + // Push newly created geoms to rectLit + void + createRectangles(const Envelope& env, int nRect, double, + vector& rectList) + { + int nSide = 1 + (int)sqrt((double) nRect); + double dx = env.getWidth() / nSide; + double dy = env.getHeight() / nSide; + + for(int i = 0; i < nSide; i++) { + for(int j = 0; j < nSide; j++) { + double baseX = env.getMinX() + i * dx; + double baseY = env.getMinY() + j * dy; + Envelope envRect( + baseX, baseX + dx, + baseY, baseY + dy); + Geometry* rect = fact->toGeometry(&envRect).release(); + rectList.push_back(rect); + } + } + } + + Polygon::Ptr + createSineStar(const Coordinate& origin, + double size, int nPts) + { + using geos::geom::util::SineStarFactory; + + SineStarFactory gsf(fact.get()); + gsf.setCentre(origin); + gsf.setSize(size); + gsf.setNumPoints(nPts); + gsf.setArmLengthRatio(2); + gsf.setNumArms(20); + Polygon::Ptr poly = gsf.createSineStar(); + return poly; + } + + +}; + +int +main() +{ + + RectangleIntersectsPerfTest tester; + + tester.test(500); + tester.test(100000); +} + diff -Nru geos-3.7.1/capi/CMakeLists.txt geos-3.8.0/capi/CMakeLists.txt --- geos-3.7.1/capi/CMakeLists.txt 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/capi/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -1,71 +1,36 @@ -################################################################################# +################################################################################ +# Part of CMake configuration for GEOS # -# GEOS C library build configuration for CMake build system -# -# Copyright (C) 2009 Mateusz Loskot +# Copyright (C) 2018 Mateusz Loskot # # This is free software; you can redistribute and/or modify it under # the terms of the GNU Lesser General Public Licence as published # by the Free Software Foundation. # See the COPYING file for more information. -# -################################################################################# - -if(WIN32) - add_definitions("-DGEOS_DLL_EXPORT=1") -endif() - -set(geos_c_SOURCES - geos_c.cpp - geos_ts_c.cpp) - -file(GLOB geos_capi_HEADERS ${CMAKE_BINARY_DIR}/capi/*.h) # fix source_group issue - -if(NOT GEOS_ENABLE_MACOSX_FRAMEWORK AND GEOS_BUILD_SHARED) - # if building OS X framework or only building static libs, CAPI built into C++ library - add_library(geos_c SHARED ${geos_c_SOURCES}) - - target_link_libraries(geos_c geos) - - if (WIN32) - set_target_properties(geos_c - PROPERTIES - VERSION ${CAPI_VERSION} - CLEAN_DIRECT_OUTPUT 1) - else() - set_target_properties(geos_c - PROPERTIES - VERSION ${CAPI_VERSION} - SOVERSION ${CAPI_SOVERSION} - CLEAN_DIRECT_OUTPUT 1) - endif() - -endif() - -add_dependencies(geos_c geos_revision) - -################################################################################# -# Installation -################################################################################# - -if(APPLE AND GEOS_ENABLE_MACOSX_FRAMEWORK) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/geos_c.h - DESTINATION GEOS.framework/Versions/${VERSION_MAJOR}/Headers) - install(CODE "execute_process(COMMAND sed -E -i \"\" \"s,# *include[[:space:]]+ + $) + +# Copy these over so they match the @VARIABLES@ used by autoconf +# in geos_c.h.in +set(VERSION ${GEOS_VERSION}) +set(VERSION_MAJOR ${GEOS_VERSION_MAJOR}) +set(VERSION_MINOR ${GEOS_VERSION_MINOR}) +set(VERSION_PATCH ${GEOS_VERSION_PATCH}) + +configure_file( + ${CMAKE_CURRENT_LIST_DIR}/geos_c.h.in + ${CMAKE_CURRENT_BINARY_DIR}/geos_c.h + @ONLY) + +unset(VERSION) +unset(VERSION_MAJOR) +unset(VERSION_MINOR) +unset(VERSION_PATCH) diff -Nru geos-3.7.1/capi/geos_c.cpp geos-3.8.0/capi/geos_c.cpp --- geos-3.7.1/capi/geos_c.cpp 2018-11-09 23:03:28.000000000 +0000 +++ geos-3.8.0/capi/geos_c.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -89,146 +89,144 @@ extern "C" { -void -initGEOS (GEOSMessageHandler nf, GEOSMessageHandler ef) -{ - if ( ! handle ) - { - handle = initGEOS_r( nf, ef ); - } - else - { - GEOSContext_setNoticeHandler_r(handle, nf); - GEOSContext_setErrorHandler_r(handle, ef); - } - - geos::util::Interrupt::cancel(); -} - -void -finishGEOS () -{ - if (handle != NULL) { - finishGEOS_r( handle ); - handle = NULL; - } -} - -GEOSInterruptCallback* -GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb) -{ - return geos::util::Interrupt::registerCallback(cb); -} - -void -GEOS_interruptRequest() -{ - geos::util::Interrupt::request(); -} - -void -GEOS_interruptCancel() -{ - geos::util::Interrupt::cancel(); -} - -void -GEOSFree (void* buffer) -{ - GEOSFree_r( handle, buffer ); -} - -/**************************************************************** -** relate()-related functions -** return 0 = false, 1 = true, 2 = error occured -** -*/ -char -GEOSDisjoint(const Geometry *g1, const Geometry *g2) -{ - return GEOSDisjoint_r( handle, g1, g2 ); -} - -char -GEOSTouches(const Geometry *g1, const Geometry *g2) -{ - return GEOSTouches_r( handle, g1, g2 ); -} - -char -GEOSIntersects(const Geometry *g1, const Geometry *g2) -{ - return GEOSIntersects_r( handle, g1, g2 ); -} - -char -GEOSCrosses(const Geometry *g1, const Geometry *g2) -{ - return GEOSCrosses_r( handle, g1, g2 ); -} - -char -GEOSWithin(const Geometry *g1, const Geometry *g2) -{ - return GEOSWithin_r( handle, g1, g2 ); -} + void + initGEOS(GEOSMessageHandler nf, GEOSMessageHandler ef) + { + if(! handle) { + handle = initGEOS_r(nf, ef); + } + else { + GEOSContext_setNoticeHandler_r(handle, nf); + GEOSContext_setErrorHandler_r(handle, ef); + } + + geos::util::Interrupt::cancel(); + } + + void + finishGEOS() + { + if(handle != NULL) { + finishGEOS_r(handle); + handle = NULL; + } + } + + GEOSInterruptCallback* + GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb) + { + return geos::util::Interrupt::registerCallback(cb); + } + + void + GEOS_interruptRequest() + { + geos::util::Interrupt::request(); + } + + void + GEOS_interruptCancel() + { + geos::util::Interrupt::cancel(); + } + + void + GEOSFree(void* buffer) + { + GEOSFree_r(handle, buffer); + } + + /**************************************************************** + ** relate()-related functions + ** return 0 = false, 1 = true, 2 = error occured + ** + */ + char + GEOSDisjoint(const Geometry* g1, const Geometry* g2) + { + return GEOSDisjoint_r(handle, g1, g2); + } + + char + GEOSTouches(const Geometry* g1, const Geometry* g2) + { + return GEOSTouches_r(handle, g1, g2); + } + + char + GEOSIntersects(const Geometry* g1, const Geometry* g2) + { + return GEOSIntersects_r(handle, g1, g2); + } + + char + GEOSCrosses(const Geometry* g1, const Geometry* g2) + { + return GEOSCrosses_r(handle, g1, g2); + } + + char + GEOSWithin(const Geometry* g1, const Geometry* g2) + { + return GEOSWithin_r(handle, g1, g2); + } // call g1->contains(g2) // returns 0 = false // 1 = true // 2 = error was trapped -char -GEOSContains(const Geometry *g1, const Geometry *g2) -{ - return GEOSContains_r( handle, g1, g2 ); -} - -char -GEOSOverlaps(const Geometry *g1, const Geometry *g2) -{ - return GEOSOverlaps_r( handle, g1, g2 ); -} - -char -GEOSCovers(const Geometry *g1, const Geometry *g2) -{ - return GEOSCovers_r( handle, g1, g2 ); -} - -char -GEOSCoveredBy(const Geometry *g1, const Geometry *g2) -{ - return GEOSCoveredBy_r( handle, g1, g2 ); -} + char + GEOSContains(const Geometry* g1, const Geometry* g2) + { + return GEOSContains_r(handle, g1, g2); + } + + char + GEOSOverlaps(const Geometry* g1, const Geometry* g2) + { + return GEOSOverlaps_r(handle, g1, g2); + } + + char + GEOSCovers(const Geometry* g1, const Geometry* g2) + { + return GEOSCovers_r(handle, g1, g2); + } + + char + GEOSCoveredBy(const Geometry* g1, const Geometry* g2) + { + return GEOSCoveredBy_r(handle, g1, g2); + } //------------------------------------------------------------------- // low-level relate functions //------------------------------------------------------------------ -char -GEOSRelatePattern(const Geometry *g1, const Geometry *g2, const char *pat) -{ - return GEOSRelatePattern_r( handle, g1, g2, pat ); -} - -char -GEOSRelatePatternMatch(const char *mat, const char *pat) -{ - return GEOSRelatePatternMatch_r( handle, mat, pat ); -} - -char * -GEOSRelate(const Geometry *g1, const Geometry *g2) -{ - return GEOSRelate_r( handle, g1, g2 ); -} - -char * -GEOSRelateBoundaryNodeRule(const Geometry *g1, const Geometry *g2, int bnr) -{ - return GEOSRelateBoundaryNodeRule_r( handle, g1, g2, bnr ); -} + char + GEOSRelatePattern(const Geometry* g1, const Geometry* g2, const char* pat) + { + return GEOSRelatePattern_r(handle, g1, g2, pat); + } + + char + GEOSRelatePatternMatch(const char* mat, const char* pat) + { + return GEOSRelatePatternMatch_r(handle, mat, pat); + } + + char* + GEOSRelate(const Geometry* g1, const Geometry* g2) + { + return GEOSRelate_r(handle, g1, g2); + } + + char* + GEOSRelateBoundaryNodeRule(const Geometry* g1, const Geometry* g2, int bnr) + { + return GEOSRelateBoundaryNodeRule_r(handle, g1, g2, bnr); + } //----------------------------------------------------------------- @@ -236,167 +234,167 @@ //----------------------------------------------------------------- -char -GEOSisValid(const Geometry *g) -{ - return GEOSisValid_r( handle, g ); -} - -char * -GEOSisValidReason(const Geometry *g) -{ - return GEOSisValidReason_r( handle, g ); -} - -char -GEOSisValidDetail(const Geometry *g, int flags, - char** reason, Geometry ** location) -{ - return GEOSisValidDetail_r( handle, g, flags, reason, location ); -} + char + GEOSisValid(const Geometry* g) + { + return GEOSisValid_r(handle, g); + } + + char* + GEOSisValidReason(const Geometry* g) + { + return GEOSisValidReason_r(handle, g); + } + + char + GEOSisValidDetail(const Geometry* g, int flags, + char** reason, Geometry** location) + { + return GEOSisValidDetail_r(handle, g, flags, reason, location); + } //----------------------------------------------------------------- // general purpose //----------------------------------------------------------------- -char -GEOSEquals(const Geometry *g1, const Geometry *g2) -{ - return GEOSEquals_r( handle, g1, g2 ); -} - -char -GEOSEqualsExact(const Geometry *g1, const Geometry *g2, double tolerance) -{ - return GEOSEqualsExact_r( handle, g1, g2, tolerance ); -} - -int -GEOSDistance(const Geometry *g1, const Geometry *g2, double *dist) -{ - return GEOSDistance_r( handle, g1, g2, dist ); -} - -int -GEOSDistanceIndexed(const Geometry *g1, const Geometry *g2, double *dist) -{ - return GEOSDistanceIndexed_r( handle, g1, g2, dist ); -} - -int -GEOSHausdorffDistance(const Geometry *g1, const Geometry *g2, double *dist) -{ - return GEOSHausdorffDistance_r( handle, g1, g2, dist ); -} - -int -GEOSHausdorffDistanceDensify(const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) -{ - return GEOSHausdorffDistanceDensify_r( handle, g1, g2, densifyFrac, dist ); -} - -int -GEOSFrechetDistance(const Geometry *g1, const Geometry *g2, double *dist) -{ - return GEOSFrechetDistance_r( handle, g1, g2, dist ); -} - -int -GEOSFrechetDistanceDensify(const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) -{ - return GEOSFrechetDistanceDensify_r( handle, g1, g2, densifyFrac, dist ); -} - -int -GEOSArea(const Geometry *g, double *area) -{ - return GEOSArea_r( handle, g, area ); -} - -int -GEOSLength(const Geometry *g, double *length) -{ - return GEOSLength_r( handle, g, length ); -} - -CoordinateSequence * -GEOSNearestPoints(const Geometry *g1, const Geometry *g2) -{ - return GEOSNearestPoints_r( handle, g1, g2 ); -} - -Geometry * -GEOSGeomFromWKT(const char *wkt) -{ - return GEOSGeomFromWKT_r( handle, wkt ); -} - -char * -GEOSGeomToWKT(const Geometry *g) -{ - return GEOSGeomToWKT_r( handle, g ); -} + char + GEOSEquals(const Geometry* g1, const Geometry* g2) + { + return GEOSEquals_r(handle, g1, g2); + } + + char + GEOSEqualsExact(const Geometry* g1, const Geometry* g2, double tolerance) + { + return GEOSEqualsExact_r(handle, g1, g2, tolerance); + } + + int + GEOSDistance(const Geometry* g1, const Geometry* g2, double* dist) + { + return GEOSDistance_r(handle, g1, g2, dist); + } + + int + GEOSDistanceIndexed(const Geometry* g1, const Geometry* g2, double* dist) + { + return GEOSDistanceIndexed_r(handle, g1, g2, dist); + } + + int + GEOSHausdorffDistance(const Geometry* g1, const Geometry* g2, double* dist) + { + return GEOSHausdorffDistance_r(handle, g1, g2, dist); + } + + int + GEOSHausdorffDistanceDensify(const Geometry* g1, const Geometry* g2, double densifyFrac, double* dist) + { + return GEOSHausdorffDistanceDensify_r(handle, g1, g2, densifyFrac, dist); + } + + int + GEOSFrechetDistance(const Geometry* g1, const Geometry* g2, double* dist) + { + return GEOSFrechetDistance_r(handle, g1, g2, dist); + } + + int + GEOSFrechetDistanceDensify(const Geometry* g1, const Geometry* g2, double densifyFrac, double* dist) + { + return GEOSFrechetDistanceDensify_r(handle, g1, g2, densifyFrac, dist); + } + + int + GEOSArea(const Geometry* g, double* area) + { + return GEOSArea_r(handle, g, area); + } + + int + GEOSLength(const Geometry* g, double* length) + { + return GEOSLength_r(handle, g, length); + } + + CoordinateSequence* + GEOSNearestPoints(const Geometry* g1, const Geometry* g2) + { + return GEOSNearestPoints_r(handle, g1, g2); + } + + Geometry* + GEOSGeomFromWKT(const char* wkt) + { + return GEOSGeomFromWKT_r(handle, wkt); + } + + char* + GEOSGeomToWKT(const Geometry* g) + { + return GEOSGeomToWKT_r(handle, g); + } // Remember to free the result! -unsigned char * -GEOSGeomToWKB_buf(const Geometry *g, size_t *size) -{ - return GEOSGeomToWKB_buf_r( handle, g, size ); -} - -Geometry * -GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size) -{ - return GEOSGeomFromWKB_buf_r( handle, wkb, size ); -} - -/* Read/write wkb hex values. Returned geometries are - owned by the caller.*/ -unsigned char * -GEOSGeomToHEX_buf(const Geometry *g, size_t *size) -{ - return GEOSGeomToHEX_buf_r( handle, g, size ); -} - -Geometry * -GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size) -{ - return GEOSGeomFromHEX_buf_r( handle, hex, size ); -} - -char -GEOSisEmpty(const Geometry *g) -{ - return GEOSisEmpty_r( handle, g ); -} - -char -GEOSisSimple(const Geometry *g) -{ - return GEOSisSimple_r( handle, g ); -} - -char -GEOSisRing(const Geometry *g) -{ - return GEOSisRing_r( handle, g ); -} + unsigned char* + GEOSGeomToWKB_buf(const Geometry* g, size_t* size) + { + return GEOSGeomToWKB_buf_r(handle, g, size); + } + + Geometry* + GEOSGeomFromWKB_buf(const unsigned char* wkb, size_t size) + { + return GEOSGeomFromWKB_buf_r(handle, wkb, size); + } + + /* Read/write wkb hex values. Returned geometries are + owned by the caller.*/ + unsigned char* + GEOSGeomToHEX_buf(const Geometry* g, size_t* size) + { + return GEOSGeomToHEX_buf_r(handle, g, size); + } + + Geometry* + GEOSGeomFromHEX_buf(const unsigned char* hex, size_t size) + { + return GEOSGeomFromHEX_buf_r(handle, hex, size); + } + + char + GEOSisEmpty(const Geometry* g) + { + return GEOSisEmpty_r(handle, g); + } + + char + GEOSisSimple(const Geometry* g) + { + return GEOSisSimple_r(handle, g); + } + + char + GEOSisRing(const Geometry* g) + { + return GEOSisRing_r(handle, g); + } //free the result of this -char * -GEOSGeomType(const Geometry *g) -{ - return GEOSGeomType_r( handle, g ); -} + char* + GEOSGeomType(const Geometry* g) + { + return GEOSGeomType_r(handle, g); + } // Return postgis geometry type index -int -GEOSGeomTypeId(const Geometry *g) -{ - return GEOSGeomTypeId_r( handle, g ); -} + int + GEOSGeomTypeId(const Geometry* g) + { + return GEOSGeomTypeId_r(handle, g); + } @@ -405,132 +403,138 @@ // GEOS functions that return geometries //------------------------------------------------------------------- -Geometry * -GEOSEnvelope(const Geometry *g) -{ - return GEOSEnvelope_r( handle, g ); -} - -Geometry * -GEOSIntersection(const Geometry *g1, const Geometry *g2) -{ - return GEOSIntersection_r( handle, g1, g2 ); -} - -Geometry * -GEOSBuffer(const Geometry *g, double width, int quadrantsegments) -{ - return GEOSBuffer_r( handle, g, width, quadrantsegments ); -} - -Geometry * -GEOSBufferWithStyle(const Geometry *g, double width, int quadsegs, - int endCapStyle, int joinStyle, double mitreLimit) -{ - return GEOSBufferWithStyle_r( handle, g, width, quadsegs, endCapStyle, - joinStyle, mitreLimit ); -} - -Geometry * -GEOSSingleSidedBuffer(const Geometry *g, double width, int quadsegs, - int joinStyle, double mitreLimit, int leftSide) -{ - return GEOSSingleSidedBuffer_r( handle, g, width, quadsegs, - joinStyle, mitreLimit, leftSide ); -} - -Geometry * -GEOSOffsetCurve(const Geometry *g, double width, int quadsegs, - int joinStyle, double mitreLimit) -{ - return GEOSOffsetCurve_r( handle, g, width, quadsegs, - joinStyle, mitreLimit ); -} - -Geometry * -GEOSConvexHull(const Geometry *g) -{ - return GEOSConvexHull_r( handle, g ); -} - -Geometry * -GEOSMinimumRotatedRectangle(const Geometry *g) -{ - return GEOSMinimumRotatedRectangle_r( handle, g ); -} - -Geometry * -GEOSMinimumWidth(const Geometry *g) -{ - return GEOSMinimumWidth_r( handle, g ); -} - -Geometry * -GEOSMinimumClearanceLine(const Geometry *g) -{ - return GEOSMinimumClearanceLine_r( handle, g ); -} - -int -GEOSMinimumClearance(const Geometry *g, double *d) -{ - return GEOSMinimumClearance_r( handle, g, d); -} - -Geometry * -GEOSDifference(const Geometry *g1, const Geometry *g2) -{ - return GEOSDifference_r( handle, g1, g2 ); -} - -Geometry * -GEOSBoundary(const Geometry *g) -{ - return GEOSBoundary_r( handle, g ); -} - -Geometry * -GEOSSymDifference(const Geometry *g1, const Geometry *g2) -{ - return GEOSSymDifference_r( handle, g1, g2 ); -} - -Geometry * -GEOSUnion(const Geometry *g1, const Geometry *g2) -{ - return GEOSUnion_r( handle, g1, g2 ); -} - -Geometry * -GEOSUnaryUnion(const Geometry *g) -{ - return GEOSUnaryUnion_r( handle, g); -} - -Geometry * -GEOSNode(const Geometry *g) -{ - return GEOSNode_r( handle, g ); -} - -Geometry * -GEOSUnionCascaded(const Geometry *g) -{ - return GEOSUnionCascaded_r( handle, g ); -} - -Geometry * -GEOSPointOnSurface(const Geometry *g) -{ - return GEOSPointOnSurface_r( handle, g ); -} - - -Geometry * -GEOSClipByRect(const Geometry *g, double xmin, double ymin, double xmax, double ymax) -{ - return GEOSClipByRect_r( handle, g, xmin, ymin, xmax, ymax ); -} + Geometry* + GEOSEnvelope(const Geometry* g) + { + return GEOSEnvelope_r(handle, g); + } + + Geometry* + GEOSIntersection(const Geometry* g1, const Geometry* g2) + { + return GEOSIntersection_r(handle, g1, g2); + } + + Geometry* + GEOSBuffer(const Geometry* g, double width, int quadrantsegments) + { + return GEOSBuffer_r(handle, g, width, quadrantsegments); + } + + Geometry* + GEOSBufferWithStyle(const Geometry* g, double width, int quadsegs, + int endCapStyle, int joinStyle, double mitreLimit) + { + return GEOSBufferWithStyle_r(handle, g, width, quadsegs, endCapStyle, + joinStyle, mitreLimit); + } + + Geometry* + GEOSSingleSidedBuffer(const Geometry* g, double width, int quadsegs, + int joinStyle, double mitreLimit, int leftSide) + { + return GEOSSingleSidedBuffer_r(handle, g, width, quadsegs, + joinStyle, mitreLimit, leftSide); + } + + Geometry* + GEOSOffsetCurve(const Geometry* g, double width, int quadsegs, + int joinStyle, double mitreLimit) + { + return GEOSOffsetCurve_r(handle, g, width, quadsegs, + joinStyle, mitreLimit); + } + + Geometry* + GEOSConvexHull(const Geometry* g) + { + return GEOSConvexHull_r(handle, g); + } + + Geometry* + GEOSMinimumRotatedRectangle(const Geometry* g) + { + return GEOSMinimumRotatedRectangle_r(handle, g); + } + + Geometry* + GEOSMinimumWidth(const Geometry* g) + { + return GEOSMinimumWidth_r(handle, g); + } + + Geometry* + GEOSMinimumClearanceLine(const Geometry* g) + { + return GEOSMinimumClearanceLine_r(handle, g); + } + + int + GEOSMinimumClearance(const Geometry* g, double* d) + { + return GEOSMinimumClearance_r(handle, g, d); + } + + Geometry* + GEOSDifference(const Geometry* g1, const Geometry* g2) + { + return GEOSDifference_r(handle, g1, g2); + } + + Geometry* + GEOSBoundary(const Geometry* g) + { + return GEOSBoundary_r(handle, g); + } + + Geometry* + GEOSSymDifference(const Geometry* g1, const Geometry* g2) + { + return GEOSSymDifference_r(handle, g1, g2); + } + + Geometry* + GEOSUnion(const Geometry* g1, const Geometry* g2) + { + return GEOSUnion_r(handle, g1, g2); + } + + Geometry* + GEOSUnaryUnion(const Geometry* g) + { + return GEOSUnaryUnion_r(handle, g); + } + + Geometry* + GEOSCoverageUnion(const Geometry* g) + { + return GEOSCoverageUnion_r(handle, g); + } + + Geometry* + GEOSNode(const Geometry* g) + { + return GEOSNode_r(handle, g); + } + + Geometry* + GEOSUnionCascaded(const Geometry* g) + { + return GEOSUnionCascaded_r(handle, g); + } + + Geometry* + GEOSPointOnSurface(const Geometry* g) + { + return GEOSPointOnSurface_r(handle, g); + } + + + Geometry* + GEOSClipByRect(const Geometry* g, double xmin, double ymin, double xmax, double ymax) + { + return GEOSClipByRect_r(handle, g, xmin, ymin, xmax, ymax); + } @@ -539,880 +543,934 @@ //------------------------------------------------------------------ -void -GEOSGeom_destroy(Geometry *a) -{ - return GEOSGeom_destroy_r( handle, a ); -} - - -int -GEOSGetNumCoordinates(const Geometry *g) -{ - return GEOSGetNumCoordinates_r( handle, g ); -} - -/* - * Return -1 on exception, 0 otherwise. - * Converts Geometry to normal form (or canonical form). - */ -int -GEOSNormalize(Geometry *g) -{ - return GEOSNormalize_r( handle, g ); -} - -int -GEOSGetNumInteriorRings(const Geometry *g) -{ - return GEOSGetNumInteriorRings_r( handle, g ); -} + void + GEOSGeom_destroy(Geometry* a) + { + return GEOSGeom_destroy_r(handle, a); + } + + + int + GEOSGetNumCoordinates(const Geometry* g) + { + return GEOSGetNumCoordinates_r(handle, g); + } + + /* + * Return -1 on exception, 0 otherwise. + * Converts Geometry to normal form (or canonical form). + */ + int + GEOSNormalize(Geometry* g) + { + return GEOSNormalize_r(handle, g); + } + + int + GEOSGetNumInteriorRings(const Geometry* g) + { + return GEOSGetNumInteriorRings_r(handle, g); + } // returns -1 on error and 1 for non-multi geometries -int -GEOSGetNumGeometries(const Geometry *g) -{ - return GEOSGetNumGeometries_r( handle, g ); -} - - -/* - * Call only on GEOMETRYCOLLECTION or MULTI*. - * Return a pointer to the internal Geometry. - */ -const Geometry * -GEOSGetGeometryN(const Geometry *g, int n) -{ - return GEOSGetGeometryN_r( handle, g, n ); -} - -/* - * Call only on LINESTRING - * Returns NULL on exception - */ -Geometry * -GEOSGeomGetPointN(const Geometry *g, int n) -{ - return GEOSGeomGetPointN_r(handle, g, n); -} - -/* - * Call only on LINESTRING - */ -Geometry * -GEOSGeomGetStartPoint(const Geometry *g) -{ - return GEOSGeomGetStartPoint_r(handle, g); -} - -/* - * Call only on LINESTRING - */ -Geometry * -GEOSGeomGetEndPoint(const Geometry *g) -{ - return GEOSGeomGetEndPoint_r(handle, g); -} - -/* - * Call only on LINESTRING - * return 2 on exception, 1 on true, 0 on false - */ -char -GEOSisClosed(const Geometry *g) -{ - return GEOSisClosed_r(handle, g); -} - -/* - * Call only on LINESTRING - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetLength(const Geometry *g, double *length) -{ - return GEOSGeomGetLength_r(handle, g, length); -} - -/* - * Call only on LINESTRING - * returns -1 on exception - */ -int -GEOSGeomGetNumPoints(const Geometry *g) -{ - return GEOSGeomGetNumPoints_r(handle, g); -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetX(const Geometry *g, double *x) -{ - return GEOSGeomGetX_r(handle, g, x); -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetY(const Geometry *g, double *y) -{ - return GEOSGeomGetY_r(handle, g, y); -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetZ(const Geometry *g1, double *z) -{ - return GEOSGeomGetZ_r(handle, g1, z); -} - -/* - * Call only on polygon - * Return a copy of the internal Geometry. - */ -const Geometry * -GEOSGetExteriorRing(const Geometry *g) -{ - return GEOSGetExteriorRing_r( handle, g ); -} - -/* - * Call only on polygon - * Return a pointer to internal storage, do not destroy it. - */ -const Geometry * -GEOSGetInteriorRingN(const Geometry *g, int n) -{ - return GEOSGetInteriorRingN_r( handle, g, n ); -} - -Geometry * -GEOSGetCentroid(const Geometry *g) -{ - return GEOSGetCentroid_r( handle, g ); -} - -Geometry * -GEOSGeom_createCollection(int type, Geometry **geoms, unsigned int ngeoms) -{ - return GEOSGeom_createCollection_r( handle, type, geoms, ngeoms ); -} - -Geometry * -GEOSPolygonize(const Geometry * const * g, unsigned int ngeoms) -{ - return GEOSPolygonize_r( handle, g, ngeoms ); -} - -Geometry * -GEOSPolygonizer_getCutEdges(const Geometry * const * g, unsigned int ngeoms) -{ - return GEOSPolygonizer_getCutEdges_r( handle, g, ngeoms ); -} - -GEOSGeometry * -GEOSPolygonize_full(const GEOSGeometry* input, - GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid) -{ - return GEOSPolygonize_full_r(handle, input, cuts, dangles, invalid ); -} - -Geometry * -GEOSLineMerge(const Geometry *g) -{ - return GEOSLineMerge_r( handle, g ); -} - -Geometry * -GEOSReverse(const Geometry *g) -{ - return GEOSReverse_r( handle, g ); -} - -int -GEOSGetSRID(const Geometry *g) -{ - return GEOSGetSRID_r( handle, g ); -} - -void -GEOSSetSRID(Geometry *g, int srid) -{ - return GEOSSetSRID_r( handle, g, srid ); -} - -void * -GEOSGeom_getUserData(const Geometry *g) -{ - return GEOSGeom_getUserData_r( handle, g ); -} - -void -GEOSGeom_setUserData(Geometry *g, void* userData) -{ - return GEOSGeom_setUserData_r( handle, g, userData ); -} - -char -GEOSHasZ(const Geometry *g) -{ - return GEOSHasZ_r( handle, g ); -} - -int -GEOS_getWKBOutputDims() -{ - return GEOS_getWKBOutputDims_r( handle ); -} - -int -GEOS_setWKBOutputDims(int newdims) -{ - return GEOS_setWKBOutputDims_r( handle, newdims ); -} - -int -GEOS_getWKBByteOrder() -{ - return GEOS_getWKBByteOrder_r( handle ); -} - -int -GEOS_setWKBByteOrder(int byteOrder) -{ - return GEOS_setWKBByteOrder_r( handle, byteOrder ); -} - - -CoordinateSequence * -GEOSCoordSeq_create(unsigned int size, unsigned int dims) -{ - return GEOSCoordSeq_create_r( handle, size, dims ); -} - -int -GEOSCoordSeq_setOrdinate(CoordinateSequence *s, unsigned int idx, unsigned int dim, double val) -{ - return GEOSCoordSeq_setOrdinate_r( handle, s, idx, dim, val ); -} - -int -GEOSCoordSeq_setX(CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate(s, idx, 0, val); -} - -int -GEOSCoordSeq_setY(CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate(s, idx, 1, val); -} - -int -GEOSCoordSeq_setZ(CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate(s, idx, 2, val); -} - -CoordinateSequence * -GEOSCoordSeq_clone(const CoordinateSequence *s) -{ - return GEOSCoordSeq_clone_r( handle, s ); -} - -int -GEOSCoordSeq_getOrdinate(const CoordinateSequence *s, unsigned int idx, unsigned int dim, double *val) -{ - return GEOSCoordSeq_getOrdinate_r( handle, s, idx, dim, val ); -} - -int -GEOSCoordSeq_getX(const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate(s, idx, 0, val); -} - -int -GEOSCoordSeq_getY(const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate(s, idx, 1, val); -} - -int -GEOSCoordSeq_getZ(const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate(s, idx, 2, val); -} - -int -GEOSCoordSeq_getSize(const CoordinateSequence *s, unsigned int *size) -{ - return GEOSCoordSeq_getSize_r( handle, s, size ); -} - -int -GEOSCoordSeq_getDimensions(const CoordinateSequence *s, unsigned int *dims) -{ - return GEOSCoordSeq_getDimensions_r( handle, s, dims ); -} - -int -GEOSCoordSeq_isCCW(const CoordinateSequence *s, char *is_ccw) -{ - return GEOSCoordSeq_isCCW_r(handle, s, is_ccw); -} - -void -GEOSCoordSeq_destroy(CoordinateSequence *s) -{ - return GEOSCoordSeq_destroy_r( handle, s ); -} - -const CoordinateSequence * -GEOSGeom_getCoordSeq(const Geometry *g) -{ - return GEOSGeom_getCoordSeq_r( handle, g ); -} - -Geometry * -GEOSGeom_createPoint(CoordinateSequence *cs) -{ - return GEOSGeom_createPoint_r( handle, cs ); -} - -Geometry * -GEOSGeom_createLinearRing(CoordinateSequence *cs) -{ - return GEOSGeom_createLinearRing_r( handle, cs ); -} - -Geometry * -GEOSGeom_createLineString(CoordinateSequence *cs) -{ - return GEOSGeom_createLineString_r( handle, cs ); -} - -Geometry * -GEOSGeom_createPolygon(Geometry *shell, Geometry **holes, unsigned int nholes) -{ - return GEOSGeom_createPolygon_r( handle, shell, holes, nholes ); -} - -Geometry * -GEOSGeom_clone(const Geometry *g) -{ - return GEOSGeom_clone_r( handle, g ); -} - -GEOSGeometry * -GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags) -{ - return GEOSGeom_setPrecision_r(handle, g, gridSize, flags); -} - -double -GEOSGeom_getPrecision(const GEOSGeometry *g) -{ - return GEOSGeom_getPrecision_r(handle, g); -} - -int -GEOSGeom_getDimensions(const Geometry *g) -{ - return GEOSGeom_getDimensions_r( handle, g ); -} - -int -GEOSGeom_getCoordinateDimension(const Geometry *g) -{ - return GEOSGeom_getCoordinateDimension_r( handle, g ); -} - -int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value) -{ - return GEOSGeom_getXMin_r(handle, g, value); -} - -int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value) -{ - return GEOSGeom_getYMin_r(handle, g, value); -} - -int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value) -{ - return GEOSGeom_getXMax_r(handle, g, value); -} - -int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value) -{ - return GEOSGeom_getYMax_r(handle, g, value); -} - -Geometry * -GEOSSimplify(const Geometry *g, double tolerance) -{ - return GEOSSimplify_r( handle, g, tolerance ); -} - -Geometry * -GEOSTopologyPreserveSimplify(const Geometry *g, double tolerance) -{ - return GEOSTopologyPreserveSimplify_r( handle, g, tolerance ); -} - - -/* WKT Reader */ -WKTReader * -GEOSWKTReader_create() -{ - return GEOSWKTReader_create_r( handle ); -} - -void -GEOSWKTReader_destroy(WKTReader *reader) -{ - GEOSWKTReader_destroy_r( handle, reader ); -} - - -Geometry* -GEOSWKTReader_read(WKTReader *reader, const char *wkt) -{ - return GEOSWKTReader_read_r( handle, reader, wkt ); -} - -/* WKT Writer */ -WKTWriter * -GEOSWKTWriter_create() -{ - return GEOSWKTWriter_create_r( handle ); -} - -void -GEOSWKTWriter_destroy(WKTWriter *Writer) -{ - GEOSWKTWriter_destroy_r( handle, Writer ); -} - -char* -GEOSWKTWriter_write(WKTWriter *writer, const Geometry *geom) -{ - return GEOSWKTWriter_write_r( handle, writer, geom ); -} - -void -GEOSWKTWriter_setTrim(WKTWriter *writer, char trim) -{ - GEOSWKTWriter_setTrim_r(handle, writer, trim); -} - -void -GEOSWKTWriter_setRoundingPrecision(WKTWriter *writer, int precision) -{ - return GEOSWKTWriter_setRoundingPrecision_r(handle, writer, precision); -} - -void -GEOSWKTWriter_setOutputDimension(WKTWriter *writer, int dim) -{ - GEOSWKTWriter_setOutputDimension_r(handle, writer, dim); -} - -int -GEOSWKTWriter_getOutputDimension(WKTWriter *writer) -{ - return GEOSWKTWriter_getOutputDimension_r(handle, writer); -} - -void -GEOSWKTWriter_setOld3D(WKTWriter *writer, int useOld3D) -{ - GEOSWKTWriter_setOld3D_r(handle, writer, useOld3D); -} - -/* WKB Reader */ -WKBReader * -GEOSWKBReader_create() -{ - return GEOSWKBReader_create_r( handle ); -} - -void -GEOSWKBReader_destroy(WKBReader *reader) -{ - GEOSWKBReader_destroy_r( handle, reader ); -} - - -Geometry* -GEOSWKBReader_read(WKBReader *reader, const unsigned char *wkb, size_t size) -{ - return GEOSWKBReader_read_r( handle, reader, wkb, size ); -} - -Geometry* -GEOSWKBReader_readHEX(WKBReader *reader, const unsigned char *hex, size_t size) -{ - return GEOSWKBReader_readHEX_r( handle, reader, hex, size ); -} - -/* WKB Writer */ -WKBWriter * -GEOSWKBWriter_create() -{ - return GEOSWKBWriter_create_r( handle ); -} - -void -GEOSWKBWriter_destroy(WKBWriter *Writer) -{ - GEOSWKBWriter_destroy_r( handle, Writer ); -} - - -/* The caller owns the result */ -unsigned char* -GEOSWKBWriter_write(WKBWriter *writer, const Geometry *geom, size_t *size) -{ - return GEOSWKBWriter_write_r( handle, writer, geom, size ); -} - -/* The caller owns the result */ -unsigned char* -GEOSWKBWriter_writeHEX(WKBWriter *writer, const Geometry *geom, size_t *size) -{ - return GEOSWKBWriter_writeHEX_r( handle, writer, geom, size ); -} - -int -GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer) -{ - return GEOSWKBWriter_getOutputDimension_r( handle, writer ); -} - -void -GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension) -{ - GEOSWKBWriter_setOutputDimension_r( handle, writer, newDimension ); -} - -int -GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer) -{ - return GEOSWKBWriter_getByteOrder_r( handle, writer ); -} - -void -GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int newByteOrder) -{ - GEOSWKBWriter_setByteOrder_r( handle, writer, newByteOrder ); -} - -char -GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer) -{ - return GEOSWKBWriter_getIncludeSRID_r( handle, writer ); -} - -void -GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char newIncludeSRID) -{ - GEOSWKBWriter_setIncludeSRID_r( handle, writer, newIncludeSRID ); -} + int + GEOSGetNumGeometries(const Geometry* g) + { + return GEOSGetNumGeometries_r(handle, g); + } -//----------------------------------------------------------------- -// Prepared Geometry -//----------------------------------------------------------------- + /* + * Call only on GEOMETRYCOLLECTION or MULTI*. + * Return a pointer to the internal Geometry. + */ + const Geometry* + GEOSGetGeometryN(const Geometry* g, int n) + { + return GEOSGetGeometryN_r(handle, g, n); + } + + /* + * Call only on LINESTRING + * Returns NULL on exception + */ + Geometry* + GEOSGeomGetPointN(const Geometry* g, int n) + { + return GEOSGeomGetPointN_r(handle, g, n); + } + + /* + * Call only on LINESTRING + */ + Geometry* + GEOSGeomGetStartPoint(const Geometry* g) + { + return GEOSGeomGetStartPoint_r(handle, g); + } + + /* + * Call only on LINESTRING + */ + Geometry* + GEOSGeomGetEndPoint(const Geometry* g) + { + return GEOSGeomGetEndPoint_r(handle, g); + } + + /* + * Call only on LINESTRING + * return 2 on exception, 1 on true, 0 on false + */ + char + GEOSisClosed(const Geometry* g) + { + return GEOSisClosed_r(handle, g); + } + + /* + * Call only on LINESTRING + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetLength(const Geometry* g, double* length) + { + return GEOSGeomGetLength_r(handle, g, length); + } + + /* + * Call only on LINESTRING + * returns -1 on exception + */ + int + GEOSGeomGetNumPoints(const Geometry* g) + { + return GEOSGeomGetNumPoints_r(handle, g); + } + + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetX(const Geometry* g, double* x) + { + return GEOSGeomGetX_r(handle, g, x); + } + + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetY(const Geometry* g, double* y) + { + return GEOSGeomGetY_r(handle, g, y); + } + + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetZ(const Geometry* g1, double* z) + { + return GEOSGeomGetZ_r(handle, g1, z); + } + + /* + * Call only on polygon + * Return a copy of the internal Geometry. + */ + const Geometry* + GEOSGetExteriorRing(const Geometry* g) + { + return GEOSGetExteriorRing_r(handle, g); + } + + /* + * Call only on polygon + * Return a pointer to internal storage, do not destroy it. + */ + const Geometry* + GEOSGetInteriorRingN(const Geometry* g, int n) + { + return GEOSGetInteriorRingN_r(handle, g, n); + } -const geos::geom::prep::PreparedGeometry* -GEOSPrepare(const Geometry *g) -{ - return GEOSPrepare_r( handle, g ); -} - -void -GEOSPreparedGeom_destroy(const geos::geom::prep::PreparedGeometry *a) -{ - GEOSPreparedGeom_destroy_r( handle, a ); -} - -char -GEOSPreparedContains(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedContains_r( handle, pg1, g2 ); -} - -char -GEOSPreparedContainsProperly(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedContainsProperly_r( handle, pg1, g2 ); -} - -char -GEOSPreparedCoveredBy(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedCoveredBy_r( handle, pg1, g2 ); -} - -char -GEOSPreparedCovers(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedCovers_r( handle, pg1, g2 ); -} - -char -GEOSPreparedCrosses(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedCrosses_r( handle, pg1, g2 ); -} - -char -GEOSPreparedDisjoint(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedDisjoint_r( handle, pg1, g2 ); -} - -char -GEOSPreparedIntersects(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedIntersects_r( handle, pg1, g2 ); -} - -char -GEOSPreparedOverlaps(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedOverlaps_r( handle, pg1, g2 ); -} - -char -GEOSPreparedTouches(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedTouches_r( handle, pg1, g2 ); -} - -char -GEOSPreparedWithin(const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) -{ - return GEOSPreparedWithin_r( handle, pg1, g2 ); -} - -STRtree * -GEOSSTRtree_create (size_t nodeCapacity) -{ - return GEOSSTRtree_create_r( handle, nodeCapacity ); -} - -void -GEOSSTRtree_insert (geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - void *item) -{ - GEOSSTRtree_insert_r( handle, tree, g, item ); -} - -void -GEOSSTRtree_query (geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - GEOSQueryCallback cb, - void *userdata) -{ - GEOSSTRtree_query_r( handle, tree, g, cb, userdata ); -} - -const GEOSGeometry * -GEOSSTRtree_nearest (geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g) -{ - return GEOSSTRtree_nearest_r( handle, tree, g); -} - -const void* GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, - const void* item, - const GEOSGeometry* itemEnvelope, - GEOSDistanceCallback distancefn, - void* userdata) -{ - return GEOSSTRtree_nearest_generic_r( handle, tree, item, itemEnvelope, distancefn, userdata); -} - -void -GEOSSTRtree_iterate(geos::index::strtree::STRtree *tree, - GEOSQueryCallback callback, - void *userdata) -{ - GEOSSTRtree_iterate_r( handle, tree, callback, userdata ); -} - -char -GEOSSTRtree_remove (geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - void *item) -{ - return GEOSSTRtree_remove_r( handle, tree, g, item ); -} - -void -GEOSSTRtree_destroy (geos::index::strtree::STRtree *tree) -{ - GEOSSTRtree_destroy_r( handle, tree ); -} - -double -GEOSProject (const geos::geom::Geometry *g, - const geos::geom::Geometry *p) -{ - return GEOSProject_r (handle, g, p); -} - -geos::geom::Geometry * -GEOSInterpolate (const geos::geom::Geometry *g, - double d) -{ - return GEOSInterpolate_r(handle, g, d); -} - -double -GEOSProjectNormalized (const geos::geom::Geometry *g, - const geos::geom::Geometry *p) -{ - return GEOSProjectNormalized_r (handle, g, p); -} - -geos::geom::Geometry * -GEOSInterpolateNormalized (const geos::geom::Geometry *g, - double d) -{ - return GEOSInterpolateNormalized_r(handle, g, d); -} - -geos::geom::Geometry * -GEOSGeom_extractUniquePoints (const geos::geom::Geometry *g) -{ - return GEOSGeom_extractUniquePoints_r(handle, g); -} - -geos::geom::Geometry * -GEOSGeom_createEmptyCollection(int type) -{ - return GEOSGeom_createEmptyCollection_r(handle, type); -} - -geos::geom::Geometry * -GEOSGeom_createEmptyPoint() -{ - return GEOSGeom_createEmptyPoint_r(handle); -} - -geos::geom::Geometry * -GEOSGeom_createEmptyLineString() -{ - return GEOSGeom_createEmptyLineString_r(handle); -} - -geos::geom::Geometry * -GEOSGeom_createEmptyPolygon() -{ - return GEOSGeom_createEmptyPolygon_r(handle); -} - -int -GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, - double Px, double Py) -{ - return GEOSOrientationIndex_r(handle, Ax, Ay, Bx, By, Px, Py); -} - -GEOSGeometry * -GEOSSharedPaths(const GEOSGeometry* g1, const GEOSGeometry* g2) -{ - return GEOSSharedPaths_r(handle, g1, g2); -} - -GEOSGeometry * -GEOSSnap(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance) -{ - return GEOSSnap_r(handle, g1, g2, tolerance); -} - -GEOSBufferParams* -GEOSBufferParams_create() -{ - return GEOSBufferParams_create_r(handle); -} - -void -GEOSBufferParams_destroy(GEOSBufferParams* p) -{ - return GEOSBufferParams_destroy_r(handle, p); -} - -int -GEOSBufferParams_setEndCapStyle(GEOSBufferParams* p, int style) -{ - return GEOSBufferParams_setEndCapStyle_r(handle, p, style); -} - -int -GEOSBufferParams_setJoinStyle(GEOSBufferParams* p, int joinStyle) -{ - return GEOSBufferParams_setJoinStyle_r(handle, p, joinStyle); -} - -int -GEOSBufferParams_setMitreLimit(GEOSBufferParams* p, double l) -{ - return GEOSBufferParams_setMitreLimit_r(handle, p, l); -} - -int -GEOSBufferParams_setQuadrantSegments(GEOSBufferParams* p, int joinStyle) -{ - return GEOSBufferParams_setQuadrantSegments_r(handle, p, joinStyle); -} - -int -GEOSBufferParams_setSingleSided(GEOSBufferParams* p, int singleSided) -{ - return GEOSBufferParams_setSingleSided_r(handle, p, singleSided); -} - -Geometry* -GEOSBufferWithParams(const Geometry* g, const GEOSBufferParams* p, double w) -{ - return GEOSBufferWithParams_r(handle, g, p, w); -} - -Geometry * -GEOSDelaunayTriangulation(const Geometry *g, double tolerance, int onlyEdges) -{ - return GEOSDelaunayTriangulation_r(handle, g, tolerance, onlyEdges); -} - -Geometry* -GEOSVoronoiDiagram(const Geometry *g, const Geometry *env, double tolerance, int onlyEdges) -{ - return GEOSVoronoiDiagram_r(handle, g, env, tolerance, onlyEdges); -} - -int -GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, - double bx0, double by0, double bx1, double by1, - double* cx, double* cy) -{ - return GEOSSegmentIntersection_r(handle, - ax0, ay0, ax1, ay1, - bx0, by0, bx1, by1, - cx, cy); -} + Geometry* + GEOSGetCentroid(const Geometry* g) + { + return GEOSGetCentroid_r(handle, g); + } + + Geometry* + GEOSMinimumBoundingCircle(const Geometry* g, double* radius, Geometry** center) + { + return GEOSMinimumBoundingCircle_r(handle, g, radius, center); + } + + Geometry* + GEOSGeom_createCollection(int type, Geometry** geoms, unsigned int ngeoms) + { + return GEOSGeom_createCollection_r(handle, type, geoms, ngeoms); + } + + Geometry* + GEOSPolygonize(const Geometry* const* g, unsigned int ngeoms) + { + return GEOSPolygonize_r(handle, g, ngeoms); + } + + Geometry* + GEOSPolygonize_valid(const Geometry* const* g, unsigned int ngeoms) + { + return GEOSPolygonize_valid_r(handle, g, ngeoms); + } + + Geometry* + GEOSPolygonizer_getCutEdges(const Geometry* const* g, unsigned int ngeoms) + { + return GEOSPolygonizer_getCutEdges_r(handle, g, ngeoms); + } + + GEOSGeometry* + GEOSPolygonize_full(const GEOSGeometry* input, + GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid) + { + return GEOSPolygonize_full_r(handle, input, cuts, dangles, invalid); + } + + Geometry* + GEOSBuildArea(const Geometry* g) + { + return GEOSBuildArea_r(handle, g); + } + + Geometry* + GEOSMakeValid(const Geometry* g) + { + return GEOSMakeValid_r(handle, g); + } + + Geometry* + GEOSLineMerge(const Geometry* g) + { + return GEOSLineMerge_r(handle, g); + } + + Geometry* + GEOSReverse(const Geometry* g) + { + return GEOSReverse_r(handle, g); + } + + int + GEOSGetSRID(const Geometry* g) + { + return GEOSGetSRID_r(handle, g); + } + + void + GEOSSetSRID(Geometry* g, int srid) + { + return GEOSSetSRID_r(handle, g, srid); + } + + void* + GEOSGeom_getUserData(const Geometry* g) + { + return GEOSGeom_getUserData_r(handle, g); + } + + void + GEOSGeom_setUserData(Geometry* g, void* userData) + { + return GEOSGeom_setUserData_r(handle, g, userData); + } + + char + GEOSHasZ(const Geometry* g) + { + return GEOSHasZ_r(handle, g); + } + + int + GEOS_getWKBOutputDims() + { + return GEOS_getWKBOutputDims_r(handle); + } + + int + GEOS_setWKBOutputDims(int newdims) + { + return GEOS_setWKBOutputDims_r(handle, newdims); + } + + int + GEOS_getWKBByteOrder() + { + return GEOS_getWKBByteOrder_r(handle); + } + + int + GEOS_setWKBByteOrder(int byteOrder) + { + return GEOS_setWKBByteOrder_r(handle, byteOrder); + } + + + CoordinateSequence* + GEOSCoordSeq_create(unsigned int size, unsigned int dims) + { + return GEOSCoordSeq_create_r(handle, size, dims); + } + + int + GEOSCoordSeq_setOrdinate(CoordinateSequence* s, unsigned int idx, unsigned int dim, double val) + { + return GEOSCoordSeq_setOrdinate_r(handle, s, idx, dim, val); + } + + int + GEOSCoordSeq_setX(CoordinateSequence* s, unsigned int idx, double val) + { + return GEOSCoordSeq_setOrdinate(s, idx, 0, val); + } + + int + GEOSCoordSeq_setY(CoordinateSequence* s, unsigned int idx, double val) + { + return GEOSCoordSeq_setOrdinate(s, idx, 1, val); + } + + int + GEOSCoordSeq_setZ(CoordinateSequence* s, unsigned int idx, double val) + { + return GEOSCoordSeq_setOrdinate(s, idx, 2, val); + } + + int + GEOSCoordSeq_setXY(CoordinateSequence* s, unsigned int idx, double x, double y) + { + return GEOSCoordSeq_setXY_r(handle, s, idx, x, y); + } + + int + GEOSCoordSeq_setXYZ(CoordinateSequence* s, unsigned int idx, double x, double y, double z) + { + return GEOSCoordSeq_setXYZ_r(handle, s, idx, x, y, z); + } + + CoordinateSequence* + GEOSCoordSeq_clone(const CoordinateSequence* s) + { + return GEOSCoordSeq_clone_r(handle, s); + } + + int + GEOSCoordSeq_getOrdinate(const CoordinateSequence* s, unsigned int idx, unsigned int dim, double* val) + { + return GEOSCoordSeq_getOrdinate_r(handle, s, idx, dim, val); + } + + int + GEOSCoordSeq_getX(const CoordinateSequence* s, unsigned int idx, double* val) + { + return GEOSCoordSeq_getOrdinate(s, idx, 0, val); + } + + int + GEOSCoordSeq_getY(const CoordinateSequence* s, unsigned int idx, double* val) + { + return GEOSCoordSeq_getOrdinate(s, idx, 1, val); + } + + int + GEOSCoordSeq_getZ(const CoordinateSequence* s, unsigned int idx, double* val) + { + return GEOSCoordSeq_getOrdinate(s, idx, 2, val); + } + + int + GEOSCoordSeq_getXY(const CoordinateSequence* s, unsigned int idx, double* x, double* y) + { + return GEOSCoordSeq_getXY_r(handle, s, idx, x, y); + } + + int + GEOSCoordSeq_getXYZ(const CoordinateSequence* s, unsigned int idx, double* x, double* y, double* z) + { + return GEOSCoordSeq_getXYZ_r(handle, s, idx, x, y, z); + } + + int + GEOSCoordSeq_getSize(const CoordinateSequence* s, unsigned int* size) + { + return GEOSCoordSeq_getSize_r(handle, s, size); + } + + int + GEOSCoordSeq_getDimensions(const CoordinateSequence* s, unsigned int* dims) + { + return GEOSCoordSeq_getDimensions_r(handle, s, dims); + } + + int + GEOSCoordSeq_isCCW(const CoordinateSequence* s, char* is_ccw) + { + return GEOSCoordSeq_isCCW_r(handle, s, is_ccw); + } + + void + GEOSCoordSeq_destroy(CoordinateSequence* s) + { + return GEOSCoordSeq_destroy_r(handle, s); + } + + const CoordinateSequence* + GEOSGeom_getCoordSeq(const Geometry* g) + { + return GEOSGeom_getCoordSeq_r(handle, g); + } + + Geometry* + GEOSGeom_createPoint(CoordinateSequence* cs) + { + return GEOSGeom_createPoint_r(handle, cs); + } + + Geometry* + GEOSGeom_createPointFromXY(double x, double y) + { + return GEOSGeom_createPointFromXY_r(handle, x, y); + } + + Geometry* + GEOSGeom_createLinearRing(CoordinateSequence* cs) + { + return GEOSGeom_createLinearRing_r(handle, cs); + } + + Geometry* + GEOSGeom_createLineString(CoordinateSequence* cs) + { + return GEOSGeom_createLineString_r(handle, cs); + } + + Geometry* + GEOSGeom_createPolygon(Geometry* shell, Geometry** holes, unsigned int nholes) + { + return GEOSGeom_createPolygon_r(handle, shell, holes, nholes); + } + + Geometry* + GEOSGeom_clone(const Geometry* g) + { + return GEOSGeom_clone_r(handle, g); + } + + GEOSGeometry* + GEOSGeom_setPrecision(const GEOSGeometry* g, double gridSize, int flags) + { + return GEOSGeom_setPrecision_r(handle, g, gridSize, flags); + } + + double + GEOSGeom_getPrecision(const GEOSGeometry* g) + { + return GEOSGeom_getPrecision_r(handle, g); + } + + int + GEOSGeom_getDimensions(const Geometry* g) + { + return GEOSGeom_getDimensions_r(handle, g); + } + + int + GEOSGeom_getCoordinateDimension(const Geometry* g) + { + return GEOSGeom_getCoordinateDimension_r(handle, g); + } + + int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value) + { + return GEOSGeom_getXMin_r(handle, g, value); + } + + int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value) + { + return GEOSGeom_getYMin_r(handle, g, value); + } + + int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value) + { + return GEOSGeom_getXMax_r(handle, g, value); + } + + int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value) + { + return GEOSGeom_getYMax_r(handle, g, value); + } + + Geometry* + GEOSSimplify(const Geometry* g, double tolerance) + { + return GEOSSimplify_r(handle, g, tolerance); + } + + Geometry* + GEOSTopologyPreserveSimplify(const Geometry* g, double tolerance) + { + return GEOSTopologyPreserveSimplify_r(handle, g, tolerance); + } + + + /* WKT Reader */ + WKTReader* + GEOSWKTReader_create() + { + return GEOSWKTReader_create_r(handle); + } + + void + GEOSWKTReader_destroy(WKTReader* reader) + { + GEOSWKTReader_destroy_r(handle, reader); + } + + + Geometry* + GEOSWKTReader_read(WKTReader* reader, const char* wkt) + { + return GEOSWKTReader_read_r(handle, reader, wkt); + } + + /* WKT Writer */ + WKTWriter* + GEOSWKTWriter_create() + { + return GEOSWKTWriter_create_r(handle); + } + + void + GEOSWKTWriter_destroy(WKTWriter* Writer) + { + GEOSWKTWriter_destroy_r(handle, Writer); + } + + char* + GEOSWKTWriter_write(WKTWriter* writer, const Geometry* geom) + { + return GEOSWKTWriter_write_r(handle, writer, geom); + } + + void + GEOSWKTWriter_setTrim(WKTWriter* writer, char trim) + { + GEOSWKTWriter_setTrim_r(handle, writer, trim); + } + + void + GEOSWKTWriter_setRoundingPrecision(WKTWriter* writer, int precision) + { + return GEOSWKTWriter_setRoundingPrecision_r(handle, writer, precision); + } + + void + GEOSWKTWriter_setOutputDimension(WKTWriter* writer, int dim) + { + GEOSWKTWriter_setOutputDimension_r(handle, writer, dim); + } + + int + GEOSWKTWriter_getOutputDimension(WKTWriter* writer) + { + return GEOSWKTWriter_getOutputDimension_r(handle, writer); + } + + void + GEOSWKTWriter_setOld3D(WKTWriter* writer, int useOld3D) + { + GEOSWKTWriter_setOld3D_r(handle, writer, useOld3D); + } + + /* WKB Reader */ + WKBReader* + GEOSWKBReader_create() + { + return GEOSWKBReader_create_r(handle); + } + + void + GEOSWKBReader_destroy(WKBReader* reader) + { + GEOSWKBReader_destroy_r(handle, reader); + } + + + Geometry* + GEOSWKBReader_read(WKBReader* reader, const unsigned char* wkb, size_t size) + { + return GEOSWKBReader_read_r(handle, reader, wkb, size); + } + + Geometry* + GEOSWKBReader_readHEX(WKBReader* reader, const unsigned char* hex, size_t size) + { + return GEOSWKBReader_readHEX_r(handle, reader, hex, size); + } + + /* WKB Writer */ + WKBWriter* + GEOSWKBWriter_create() + { + return GEOSWKBWriter_create_r(handle); + } + + void + GEOSWKBWriter_destroy(WKBWriter* Writer) + { + GEOSWKBWriter_destroy_r(handle, Writer); + } + + + /* The caller owns the result */ + unsigned char* + GEOSWKBWriter_write(WKBWriter* writer, const Geometry* geom, size_t* size) + { + return GEOSWKBWriter_write_r(handle, writer, geom, size); + } + + /* The caller owns the result */ + unsigned char* + GEOSWKBWriter_writeHEX(WKBWriter* writer, const Geometry* geom, size_t* size) + { + return GEOSWKBWriter_writeHEX_r(handle, writer, geom, size); + } + + int + GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer) + { + return GEOSWKBWriter_getOutputDimension_r(handle, writer); + } + + void + GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension) + { + GEOSWKBWriter_setOutputDimension_r(handle, writer, newDimension); + } + + int + GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer) + { + return GEOSWKBWriter_getByteOrder_r(handle, writer); + } + + void + GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int newByteOrder) + { + GEOSWKBWriter_setByteOrder_r(handle, writer, newByteOrder); + } + + char + GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer) + { + return GEOSWKBWriter_getIncludeSRID_r(handle, writer); + } + + void + GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char newIncludeSRID) + { + GEOSWKBWriter_setIncludeSRID_r(handle, writer, newIncludeSRID); + } + + +//----------------------------------------------------------------- +// Prepared Geometry +//----------------------------------------------------------------- + + const geos::geom::prep::PreparedGeometry* + GEOSPrepare(const Geometry* g) + { + return GEOSPrepare_r(handle, g); + } + + void + GEOSPreparedGeom_destroy(const geos::geom::prep::PreparedGeometry* a) + { + GEOSPreparedGeom_destroy_r(handle, a); + } + + char + GEOSPreparedContains(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedContains_r(handle, pg1, g2); + } + + char + GEOSPreparedContainsProperly(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedContainsProperly_r(handle, pg1, g2); + } + + char + GEOSPreparedCoveredBy(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedCoveredBy_r(handle, pg1, g2); + } + + char + GEOSPreparedCovers(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedCovers_r(handle, pg1, g2); + } + + char + GEOSPreparedCrosses(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedCrosses_r(handle, pg1, g2); + } + + char + GEOSPreparedDisjoint(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedDisjoint_r(handle, pg1, g2); + } + + char + GEOSPreparedIntersects(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedIntersects_r(handle, pg1, g2); + } + + char + GEOSPreparedOverlaps(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedOverlaps_r(handle, pg1, g2); + } + + char + GEOSPreparedTouches(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedTouches_r(handle, pg1, g2); + } + + char + GEOSPreparedWithin(const geos::geom::prep::PreparedGeometry* pg1, const Geometry* g2) + { + return GEOSPreparedWithin_r(handle, pg1, g2); + } + + STRtree* + GEOSSTRtree_create(size_t nodeCapacity) + { + return GEOSSTRtree_create_r(handle, nodeCapacity); + } + + void + GEOSSTRtree_insert(geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + void* item) + { + GEOSSTRtree_insert_r(handle, tree, g, item); + } + + void + GEOSSTRtree_query(geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + GEOSQueryCallback cb, + void* userdata) + { + GEOSSTRtree_query_r(handle, tree, g, cb, userdata); + } + + const GEOSGeometry* + GEOSSTRtree_nearest(geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g) + { + return GEOSSTRtree_nearest_r(handle, tree, g); + } + + const void* GEOSSTRtree_nearest_generic(GEOSSTRtree* tree, + const void* item, + const GEOSGeometry* itemEnvelope, + GEOSDistanceCallback distancefn, + void* userdata) + { + return GEOSSTRtree_nearest_generic_r(handle, tree, item, itemEnvelope, distancefn, userdata); + } + + void + GEOSSTRtree_iterate(geos::index::strtree::STRtree* tree, + GEOSQueryCallback callback, + void* userdata) + { + GEOSSTRtree_iterate_r(handle, tree, callback, userdata); + } + + char + GEOSSTRtree_remove(geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + void* item) + { + return GEOSSTRtree_remove_r(handle, tree, g, item); + } + + void + GEOSSTRtree_destroy(geos::index::strtree::STRtree* tree) + { + GEOSSTRtree_destroy_r(handle, tree); + } + + double + GEOSProject(const geos::geom::Geometry* g, + const geos::geom::Geometry* p) + { + return GEOSProject_r(handle, g, p); + } + + geos::geom::Geometry* + GEOSInterpolate(const geos::geom::Geometry* g, + double d) + { + return GEOSInterpolate_r(handle, g, d); + } + + double + GEOSProjectNormalized(const geos::geom::Geometry* g, + const geos::geom::Geometry* p) + { + return GEOSProjectNormalized_r(handle, g, p); + } + + geos::geom::Geometry* + GEOSInterpolateNormalized(const geos::geom::Geometry* g, + double d) + { + return GEOSInterpolateNormalized_r(handle, g, d); + } + + geos::geom::Geometry* + GEOSGeom_extractUniquePoints(const geos::geom::Geometry* g) + { + return GEOSGeom_extractUniquePoints_r(handle, g); + } + + geos::geom::Geometry* + GEOSGeom_createEmptyCollection(int type) + { + return GEOSGeom_createEmptyCollection_r(handle, type); + } + + geos::geom::Geometry* + GEOSGeom_createEmptyPoint() + { + return GEOSGeom_createEmptyPoint_r(handle); + } + + geos::geom::Geometry* + GEOSGeom_createEmptyLineString() + { + return GEOSGeom_createEmptyLineString_r(handle); + } + + geos::geom::Geometry* + GEOSGeom_createEmptyPolygon() + { + return GEOSGeom_createEmptyPolygon_r(handle); + } + + int + GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, + double Px, double Py) + { + return GEOSOrientationIndex_r(handle, Ax, Ay, Bx, By, Px, Py); + } + + GEOSGeometry* + GEOSSharedPaths(const GEOSGeometry* g1, const GEOSGeometry* g2) + { + return GEOSSharedPaths_r(handle, g1, g2); + } + + GEOSGeometry* + GEOSSnap(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance) + { + return GEOSSnap_r(handle, g1, g2, tolerance); + } + + GEOSBufferParams* + GEOSBufferParams_create() + { + return GEOSBufferParams_create_r(handle); + } + + void + GEOSBufferParams_destroy(GEOSBufferParams* p) + { + return GEOSBufferParams_destroy_r(handle, p); + } + + int + GEOSBufferParams_setEndCapStyle(GEOSBufferParams* p, int style) + { + return GEOSBufferParams_setEndCapStyle_r(handle, p, style); + } + + int + GEOSBufferParams_setJoinStyle(GEOSBufferParams* p, int joinStyle) + { + return GEOSBufferParams_setJoinStyle_r(handle, p, joinStyle); + } + + int + GEOSBufferParams_setMitreLimit(GEOSBufferParams* p, double l) + { + return GEOSBufferParams_setMitreLimit_r(handle, p, l); + } + + int + GEOSBufferParams_setQuadrantSegments(GEOSBufferParams* p, int joinStyle) + { + return GEOSBufferParams_setQuadrantSegments_r(handle, p, joinStyle); + } + + int + GEOSBufferParams_setSingleSided(GEOSBufferParams* p, int singleSided) + { + return GEOSBufferParams_setSingleSided_r(handle, p, singleSided); + } + + Geometry* + GEOSBufferWithParams(const Geometry* g, const GEOSBufferParams* p, double w) + { + return GEOSBufferWithParams_r(handle, g, p, w); + } + + Geometry* + GEOSDelaunayTriangulation(const Geometry* g, double tolerance, int onlyEdges) + { + return GEOSDelaunayTriangulation_r(handle, g, tolerance, onlyEdges); + } + + Geometry* + GEOSVoronoiDiagram(const Geometry* g, const Geometry* env, double tolerance, int onlyEdges) + { + return GEOSVoronoiDiagram_r(handle, g, env, tolerance, onlyEdges); + } + + int + GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, + double bx0, double by0, double bx1, double by1, + double* cx, double* cy) + { + return GEOSSegmentIntersection_r(handle, + ax0, ay0, ax1, ay1, + bx0, by0, bx1, by1, + cx, cy); + } } /* extern "C" */ diff -Nru geos-3.7.1/capi/geos_c.h geos-3.8.0/capi/geos_c.h --- geos-3.7.1/capi/geos_c.h 2018-11-29 23:05:39.000000000 +0000 +++ geos-3.8.0/capi/geos_c.h 2019-10-10 17:21:28.000000000 +0000 @@ -51,43 +51,31 @@ * ***********************************************************************/ -/* - * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, - * when building with Visual C++ compiler. - * - */ -#if defined(_MSC_VER) -#include -#define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 11 -#define GEOS_CAPI_VERSION_PATCH 0 -#define GEOS_CAPI_VERSION "3.7.0-CAPI-1.11.0" -#else #ifndef GEOS_VERSION_MAJOR #define GEOS_VERSION_MAJOR 3 #endif #ifndef GEOS_VERSION_MINOR -#define GEOS_VERSION_MINOR 7 +#define GEOS_VERSION_MINOR 8 #endif #ifndef GEOS_VERSION_PATCH -#define GEOS_VERSION_PATCH 1 +#define GEOS_VERSION_PATCH 0 #endif #ifndef GEOS_VERSION -#define GEOS_VERSION "3.7.1" +#define GEOS_VERSION "3.8.0" #endif #ifndef GEOS_JTS_PORT #define GEOS_JTS_PORT "1.13.0" #endif #define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 11 +#define GEOS_CAPI_VERSION_MINOR 13 #define GEOS_CAPI_VERSION_PATCH 1 -#define GEOS_CAPI_VERSION "3.7.1-CAPI-1.11.1" -#endif +#define GEOS_CAPI_VERSION "3.8.0-CAPI-1.13.1" #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR) + /************************************************************************ * * (Abstract) type definitions @@ -314,6 +302,13 @@ extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence* s, unsigned int idx, double val); +extern int GEOS_DLL GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, + GEOSCoordSequence* s, unsigned int idx, + double x, double y); +extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, + GEOSCoordSequence* s, unsigned int idx, + double x, double y, double z); + extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence* s, unsigned int idx, @@ -332,6 +327,12 @@ extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence* s, unsigned int idx, double *val); +extern int GEOS_DLL GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, + const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y); +extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, + const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y, double *z); extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence* s, unsigned int idx, @@ -492,6 +493,10 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r( GEOSContextHandle_t handle, GEOSCoordSequence* s); +extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY_r( + GEOSContextHandle_t handle, + double x, + double y); extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r( GEOSContextHandle_t handle); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r( @@ -585,6 +590,11 @@ const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry* g); +/* GEOSCoverageUnion is an optimized union algorithm for polygonal inputs that are correctly + * noded and do not overlap. It will not generate an error (return NULL) for inputs that + * do not satisfy this constraint. */ +extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(GEOSContextHandle_t handle, + const GEOSGeometry* g); /* @deprecated in 3.3.0: use GEOSUnaryUnion_r instead */ extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry* g); @@ -592,6 +602,9 @@ const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry* g); +extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, + const GEOSGeometry* g, double* radius, + GEOSGeometry** center); extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry* g); /* Fast, non-robust intersection between an arbitrary geometry and @@ -609,20 +622,20 @@ * Polygonizes a set of Geometries which contain linework that * represents the edges of a planar graph. * - * Any dimension of Geometry is handled - the constituent linework - * is extracted to form the edges. + * All types of Geometry are accepted as input; the constituent + * linework is extracted as the edges to be polygonized. * * The edges must be correctly noded; that is, they must only meet - * at their endpoints. - * The Polygonizer will still run on incorrectly noded input - * but will not form polygons from incorrectly noded edges. + * at their endpoints. Polygonization will accept incorrectly noded + * input but will not form polygons from non-noded edges, and reports + * them as errors. * * The Polygonizer reports the follow kinds of errors: * * - Dangles - edges which have one or both ends which are * not incident on another edge endpoint * - Cut Edges - edges which are connected at both ends but - * which do not form part of polygon + * which do not form part of a polygon * - Invalid Ring Lines - edges which form rings which are invalid * (e.g. the component lines contain a self-intersection) * @@ -631,11 +644,19 @@ * collection. NULL is returned on exception. All returned * geometries must be destroyed by caller. * + * The GEOSPolygonize_valid_r variant allows extracting only polygons + * which form a valid polygonal result. The set of extracted polygons + * is guaranteed to be edge-disjoint. This is useful when it is known + * that the input lines form a valid polygonal geometry (which may + * include holes or nested polygons). */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms); +extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(GEOSContextHandle_t handle, + const GEOSGeometry *const geoms[], + unsigned int ngems); extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r( GEOSContextHandle_t handle, const GEOSGeometry * const geoms[], @@ -644,6 +665,10 @@ const GEOSGeometry* input, GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalidRings); +extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r( + GEOSContextHandle_t handle, + const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSReverse_r(GEOSContextHandle_t handle, @@ -968,6 +993,9 @@ char** reason, GEOSGeometry** location); +extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(GEOSContextHandle_t handle, + const GEOSGeometry* g); + /************************************************************************ * * Geometry info @@ -1381,6 +1409,10 @@ unsigned int idx, double val); extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s, unsigned int idx, double val); +extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s, + unsigned int idx, double x, double y); +extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s, + unsigned int idx, double x, double y, double z); extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s, unsigned int idx, unsigned int dim, double val); @@ -1394,6 +1426,10 @@ unsigned int idx, double *val); extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s, unsigned int idx, double *val); +extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y); +extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y, double *z); extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s, unsigned int idx, unsigned int dim, double *val); /* @@ -1517,6 +1553,7 @@ ***********************************************************************/ extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s); +extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y); extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint(); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s); @@ -1601,10 +1638,17 @@ extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g); +/* GEOSCoverageUnion is an optimized union algorithm for polygonal inputs that are correctly + * noded and do not overlap. It will not generate an error (return NULL) for inputs that + * do not satisfy this constraint. */ +extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g); + /* @deprecated in 3.3.0: use GEOSUnaryUnion instead */ extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g); +extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(const GEOSGeometry* g, double* radius, GEOSGeometry** center); extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSClipByRect(const GEOSGeometry* g, double xmin, double ymin, double xmax, double ymax); @@ -1613,37 +1657,13 @@ * (both Geometries and pointers) */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms); +extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(const GEOSGeometry * const geoms[], unsigned int ngeoms); extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms); -/* - * Polygonizes a set of Geometries which contain linework that - * represents the edges of a planar graph. - * - * Any dimension of Geometry is handled - the constituent linework - * is extracted to form the edges. - * - * The edges must be correctly noded; that is, they must only meet - * at their endpoints. - * The Polygonizer will still run on incorrectly noded input - * but will not form polygons from incorrectly noded edges. - * - * The Polygonizer reports the follow kinds of errors: - * - * - Dangles - edges which have one or both ends which are - * not incident on another edge endpoint - * - Cut Edges - edges which are connected at both ends but - * which do not form part of polygon - * - Invalid Ring Lines - edges which form rings which are invalid - * (e.g. the component lines contain a self-intersection) - * - * Errors are reported to output parameters "cuts", "dangles" and - * "invalid" (if not-null). Formed polygons are returned as a - * collection. NULL is returned on exception. All returned - * geometries must be destroyed by caller. - * - */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(const GEOSGeometry* input, GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid); +extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g, double tolerance); @@ -1750,10 +1770,19 @@ extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2); -extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance); extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2); +/** + * Determine pointwise equivalence of two geometries, by checking if each vertex of g2 is + * within tolerance of the corresponding vertex in g1. + * Unlike GEOSEquals, geometries that are topologically equivalent but have different + * representations (e.g., LINESTRING (0 0, 1 1) and MULTILINESTRING ((0 0, 1 1)) ) are not + * considered equivalent by GEOSEqualsExact. + * returns 2 on exception, 1 on true, 0 on false + */ +extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance); + /************************************************************************ * * Prepared Geometry Binary predicates - return 2 on exception, 1 on true, 0 on false @@ -1935,6 +1964,8 @@ int flags, char** reason, GEOSGeometry** location); +extern GEOSGeometry GEOS_DLL *GEOSMakeValid(const GEOSGeometry* g); + /************************************************************************ * * Geometry info diff -Nru geos-3.7.1/capi/geos_c.h.in geos-3.8.0/capi/geos_c.h.in --- geos-3.7.1/capi/geos_c.h.in 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/capi/geos_c.h.in 2019-10-08 16:20:34.000000000 +0000 @@ -51,18 +51,6 @@ * ***********************************************************************/ -/* - * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, - * when building with Visual C++ compiler. - * - */ -#if defined(_MSC_VER) -#include -#define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 11 -#define GEOS_CAPI_VERSION_PATCH 0 -#define GEOS_CAPI_VERSION "3.7.0-CAPI-1.11.0" -#else #ifndef GEOS_VERSION_MAJOR #define GEOS_VERSION_MAJOR @VERSION_MAJOR@ #endif @@ -83,11 +71,11 @@ #define GEOS_CAPI_VERSION_MINOR @CAPI_VERSION_MINOR@ #define GEOS_CAPI_VERSION_PATCH @CAPI_VERSION_PATCH@ #define GEOS_CAPI_VERSION "@VERSION@-CAPI-@CAPI_VERSION@" -#endif #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR) + /************************************************************************ * * (Abstract) type definitions @@ -314,6 +302,13 @@ extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence* s, unsigned int idx, double val); +extern int GEOS_DLL GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, + GEOSCoordSequence* s, unsigned int idx, + double x, double y); +extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, + GEOSCoordSequence* s, unsigned int idx, + double x, double y, double z); + extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence* s, unsigned int idx, @@ -332,6 +327,12 @@ extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence* s, unsigned int idx, double *val); +extern int GEOS_DLL GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, + const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y); +extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, + const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y, double *z); extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence* s, unsigned int idx, @@ -492,6 +493,10 @@ extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r( GEOSContextHandle_t handle, GEOSCoordSequence* s); +extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY_r( + GEOSContextHandle_t handle, + double x, + double y); extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r( GEOSContextHandle_t handle); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r( @@ -585,6 +590,11 @@ const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry* g); +/* GEOSCoverageUnion is an optimized union algorithm for polygonal inputs that are correctly + * noded and do not overlap. It will not generate an error (return NULL) for inputs that + * do not satisfy this constraint. */ +extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(GEOSContextHandle_t handle, + const GEOSGeometry* g); /* @deprecated in 3.3.0: use GEOSUnaryUnion_r instead */ extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry* g); @@ -592,6 +602,9 @@ const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry* g); +extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, + const GEOSGeometry* g, double* radius, + GEOSGeometry** center); extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry* g); /* Fast, non-robust intersection between an arbitrary geometry and @@ -609,20 +622,20 @@ * Polygonizes a set of Geometries which contain linework that * represents the edges of a planar graph. * - * Any dimension of Geometry is handled - the constituent linework - * is extracted to form the edges. + * All types of Geometry are accepted as input; the constituent + * linework is extracted as the edges to be polygonized. * * The edges must be correctly noded; that is, they must only meet - * at their endpoints. - * The Polygonizer will still run on incorrectly noded input - * but will not form polygons from incorrectly noded edges. + * at their endpoints. Polygonization will accept incorrectly noded + * input but will not form polygons from non-noded edges, and reports + * them as errors. * * The Polygonizer reports the follow kinds of errors: * * - Dangles - edges which have one or both ends which are * not incident on another edge endpoint * - Cut Edges - edges which are connected at both ends but - * which do not form part of polygon + * which do not form part of a polygon * - Invalid Ring Lines - edges which form rings which are invalid * (e.g. the component lines contain a self-intersection) * @@ -631,11 +644,19 @@ * collection. NULL is returned on exception. All returned * geometries must be destroyed by caller. * + * The GEOSPolygonize_valid_r variant allows extracting only polygons + * which form a valid polygonal result. The set of extracted polygons + * is guaranteed to be edge-disjoint. This is useful when it is known + * that the input lines form a valid polygonal geometry (which may + * include holes or nested polygons). */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms); +extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(GEOSContextHandle_t handle, + const GEOSGeometry *const geoms[], + unsigned int ngems); extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r( GEOSContextHandle_t handle, const GEOSGeometry * const geoms[], @@ -644,6 +665,10 @@ const GEOSGeometry* input, GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalidRings); +extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r( + GEOSContextHandle_t handle, + const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSReverse_r(GEOSContextHandle_t handle, @@ -968,6 +993,9 @@ char** reason, GEOSGeometry** location); +extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(GEOSContextHandle_t handle, + const GEOSGeometry* g); + /************************************************************************ * * Geometry info @@ -1381,6 +1409,10 @@ unsigned int idx, double val); extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s, unsigned int idx, double val); +extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s, + unsigned int idx, double x, double y); +extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s, + unsigned int idx, double x, double y, double z); extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s, unsigned int idx, unsigned int dim, double val); @@ -1394,6 +1426,10 @@ unsigned int idx, double *val); extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s, unsigned int idx, double *val); +extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y); +extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s, + unsigned int idx, double *x, double *y, double *z); extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s, unsigned int idx, unsigned int dim, double *val); /* @@ -1517,6 +1553,7 @@ ***********************************************************************/ extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s); +extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y); extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint(); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s); extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s); @@ -1601,10 +1638,17 @@ extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g); +/* GEOSCoverageUnion is an optimized union algorithm for polygonal inputs that are correctly + * noded and do not overlap. It will not generate an error (return NULL) for inputs that + * do not satisfy this constraint. */ +extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g); + /* @deprecated in 3.3.0: use GEOSUnaryUnion instead */ extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g); +extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(const GEOSGeometry* g, double* radius, GEOSGeometry** center); extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSClipByRect(const GEOSGeometry* g, double xmin, double ymin, double xmax, double ymax); @@ -1613,37 +1657,13 @@ * (both Geometries and pointers) */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms); +extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(const GEOSGeometry * const geoms[], unsigned int ngeoms); extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms); -/* - * Polygonizes a set of Geometries which contain linework that - * represents the edges of a planar graph. - * - * Any dimension of Geometry is handled - the constituent linework - * is extracted to form the edges. - * - * The edges must be correctly noded; that is, they must only meet - * at their endpoints. - * The Polygonizer will still run on incorrectly noded input - * but will not form polygons from incorrectly noded edges. - * - * The Polygonizer reports the follow kinds of errors: - * - * - Dangles - edges which have one or both ends which are - * not incident on another edge endpoint - * - Cut Edges - edges which are connected at both ends but - * which do not form part of polygon - * - Invalid Ring Lines - edges which form rings which are invalid - * (e.g. the component lines contain a self-intersection) - * - * Errors are reported to output parameters "cuts", "dangles" and - * "invalid" (if not-null). Formed polygons are returned as a - * collection. NULL is returned on exception. All returned - * geometries must be destroyed by caller. - * - */ extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(const GEOSGeometry* input, GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid); +extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g); + extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g); extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g, double tolerance); @@ -1750,10 +1770,19 @@ extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2); -extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance); extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2); +/** + * Determine pointwise equivalence of two geometries, by checking if each vertex of g2 is + * within tolerance of the corresponding vertex in g1. + * Unlike GEOSEquals, geometries that are topologically equivalent but have different + * representations (e.g., LINESTRING (0 0, 1 1) and MULTILINESTRING ((0 0, 1 1)) ) are not + * considered equivalent by GEOSEqualsExact. + * returns 2 on exception, 1 on true, 0 on false + */ +extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance); + /************************************************************************ * * Prepared Geometry Binary predicates - return 2 on exception, 1 on true, 0 on false @@ -1935,6 +1964,8 @@ int flags, char** reason, GEOSGeometry** location); +extern GEOSGeometry GEOS_DLL *GEOSMakeValid(const GEOSGeometry* g); + /************************************************************************ * * Geometry info diff -Nru geos-3.7.1/capi/geos_ts_c.cpp geos-3.8.0/capi/geos_ts_c.cpp --- geos-3.7.1/capi/geos_ts_c.cpp 2018-11-10 16:21:48.000000000 +0000 +++ geos-3.8.0/capi/geos_ts_c.cpp 2019-10-08 16:20:34.000000000 +0000 @@ -16,7 +16,6 @@ * ***********************************************************************/ -#include // for FINITE #include #include #include @@ -33,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -43,11 +43,12 @@ #include #include #include -#include -#include -#include #include +#include #include +#include +#include +#include #include #include #include @@ -63,14 +64,18 @@ #include #include #include +#include #include #include #include +#include #include +#include #include #include #include #include +#include #include #include #include @@ -107,7 +112,6 @@ #define GEOSWKBWriter_t geos::io::WKBWriter #include "geos_c.h" -#include "../geos_revision.h" // Intentional, to allow non-standard C elements like C99 functions to be // imported through C++ headers of C library, like . @@ -152,37 +156,36 @@ typedef std::unique_ptr GeomPtr; -typedef struct GEOSContextHandle_HS -{ - const GeometryFactory *geomFactory; +typedef struct GEOSContextHandle_HS { + const GeometryFactory* geomFactory; char msgBuffer[1024]; GEOSMessageHandler noticeMessageOld; GEOSMessageHandler_r noticeMessageNew; - void *noticeData; + void* noticeData; GEOSMessageHandler errorMessageOld; GEOSMessageHandler_r errorMessageNew; - void *errorData; + void* errorData; int WKBOutputDims; int WKBByteOrder; int initialized; GEOSContextHandle_HS() - : - geomFactory(0), - noticeMessageOld(0), - noticeMessageNew(0), - noticeData(0), - errorMessageOld(0), - errorMessageNew(0), - errorData(0) - { - memset(msgBuffer, 0, sizeof(msgBuffer)); - geomFactory = GeometryFactory::getDefaultInstance(); - WKBOutputDims = 2; - WKBByteOrder = getMachineByteOrder(); - setNoticeHandler(NULL); - setErrorHandler(NULL); - initialized = 1; + : + geomFactory(0), + noticeMessageOld(0), + noticeMessageNew(0), + noticeData(0), + errorMessageOld(0), + errorMessageNew(0), + errorData(0) + { + memset(msgBuffer, 0, sizeof(msgBuffer)); + geomFactory = GeometryFactory::getDefaultInstance(); + WKBOutputDims = 2; + WKBByteOrder = getMachineByteOrder(); + setNoticeHandler(NULL); + setErrorHandler(NULL); + initialized = 1; } GEOSMessageHandler @@ -208,7 +211,8 @@ } GEOSMessageHandler_r - setNoticeHandler(GEOSMessageHandler_r nf, void *userData) { + setNoticeHandler(GEOSMessageHandler_r nf, void* userData) + { GEOSMessageHandler_r f = noticeMessageNew; noticeMessageOld = NULL; noticeMessageNew = nf; @@ -218,7 +222,7 @@ } GEOSMessageHandler_r - setErrorHandler(GEOSMessageHandler_r ef, void *userData) + setErrorHandler(GEOSMessageHandler_r ef, void* userData) { GEOSMessageHandler_r f = errorMessageNew; errorMessageOld = NULL; @@ -231,43 +235,45 @@ void NOTICE_MESSAGE(string fmt, ...) { - if (NULL == noticeMessageOld && NULL == noticeMessageNew) { - return; - } - - va_list args; - va_start(args, fmt); - int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), args); - va_end(args); - - if (result > 0) { - if (noticeMessageOld) { - noticeMessageOld("%s", msgBuffer); - } else { - noticeMessageNew(msgBuffer, noticeData); + if(NULL == noticeMessageOld && NULL == noticeMessageNew) { + return; + } + + va_list args; + va_start(args, fmt); + int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), args); + va_end(args); + + if(result > 0) { + if(noticeMessageOld) { + noticeMessageOld("%s", msgBuffer); + } + else { + noticeMessageNew(msgBuffer, noticeData); + } } - } } void ERROR_MESSAGE(string fmt, ...) { - if (NULL == errorMessageOld && NULL == errorMessageNew) { - return; - } - - va_list args; - va_start(args, fmt); - int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), args); - va_end(args); - - if (result > 0) { - if (errorMessageOld) { - errorMessageOld("%s", msgBuffer); - } else { - errorMessageNew(msgBuffer, errorData); + if(NULL == errorMessageOld && NULL == errorMessageNew) { + return; + } + + va_list args; + va_start(args, fmt); + int result = vsnprintf(msgBuffer, sizeof(msgBuffer) - 1, fmt.c_str(), args); + va_end(args); + + if(result > 0) { + if(errorMessageOld) { + errorMessageOld("%s", msgBuffer); + } + else { + errorMessageNew(msgBuffer, errorData); + } } - } } } GEOSContextHandleInternal_t; @@ -276,27 +282,31 @@ // extern "C" block. class CAPI_ItemVisitor : public geos::index::ItemVisitor { GEOSQueryCallback callback; - void *userdata; - public: - CAPI_ItemVisitor (GEOSQueryCallback cb, void *ud) + void* userdata; +public: + CAPI_ItemVisitor(GEOSQueryCallback cb, void* ud) : ItemVisitor(), callback(cb), userdata(ud) {} - void visitItem (void *item) override { callback(item, userdata); } + void + visitItem(void* item) override + { + callback(item, userdata); + } }; //## PROTOTYPES ############################################# -extern "C" const char GEOS_DLL *GEOSjtsport(); -extern "C" char GEOS_DLL *GEOSasText(Geometry *g1); +extern "C" const char GEOS_DLL* GEOSjtsport(); +extern "C" char GEOS_DLL* GEOSasText(Geometry* g1); namespace { // anonymous -char* gstrdup_s(const char* str, const std::size_t size) +char* +gstrdup_s(const char* str, const std::size_t size) { char* out = static_cast(malloc(size + 1)); - if (0 != out) - { + if(0 != out) { // as no strlen call necessary, memcpy may be faster than strcpy std::memcpy(out, str, size + 1); } @@ -304,15 +314,15 @@ assert(0 != out); // we haven't been checking allocation before ticket #371 - if (0 == out) - { + if(0 == out) { throw(std::runtime_error("Failed to allocate memory for duplicate string")); } return out; } -char* gstrdup(std::string const& str) +char* +gstrdup(std::string const& str) { return gstrdup_s(str.c_str(), str.size()); } @@ -321,589 +331,516 @@ extern "C" { -GEOSContextHandle_t -initGEOS_r(GEOSMessageHandler nf, GEOSMessageHandler ef) -{ - GEOSContextHandle_t handle = GEOS_init_r(); + GEOSContextHandle_t + initGEOS_r(GEOSMessageHandler nf, GEOSMessageHandler ef) + { + GEOSContextHandle_t handle = GEOS_init_r(); - if (0 != handle) { - GEOSContext_setNoticeHandler_r(handle, nf); - GEOSContext_setErrorHandler_r(handle, ef); - } + if(0 != handle) { + GEOSContext_setNoticeHandler_r(handle, nf); + GEOSContext_setErrorHandler_r(handle, ef); + } - return handle; -} + return handle; + } -GEOSContextHandle_t -GEOS_init_r() -{ - GEOSContextHandleInternal_t *handle = new GEOSContextHandleInternal_t(); + GEOSContextHandle_t + GEOS_init_r() + { + GEOSContextHandleInternal_t* handle = new GEOSContextHandleInternal_t(); - geos::util::Interrupt::cancel(); + geos::util::Interrupt::cancel(); - return static_cast(handle); -} + return static_cast(handle); + } -GEOSMessageHandler -GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) -{ - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + GEOSMessageHandler + GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return handle->setNoticeHandler(nf); -} + return handle->setNoticeHandler(nf); + } -GEOSMessageHandler -GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) -{ - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + GEOSMessageHandler + GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return handle->setErrorHandler(nf); -} + return handle->setErrorHandler(nf); + } -GEOSMessageHandler_r -GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData) { - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + GEOSMessageHandler_r + GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void* userData) { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return handle->setNoticeHandler(nf, userData); -} + return handle->setNoticeHandler(nf, userData); + } -GEOSMessageHandler_r -GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData) -{ - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + GEOSMessageHandler_r + GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void* userData) { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return handle->setErrorHandler(ef, userData); -} + return handle->setErrorHandler(ef, userData); + } -void -finishGEOS_r(GEOSContextHandle_t extHandle) -{ - // Fix up freeing handle w.r.t. malloc above - delete extHandle; - extHandle = NULL; -} + void + finishGEOS_r(GEOSContextHandle_t extHandle) + { + // Fix up freeing handle w.r.t. malloc above + delete extHandle; + extHandle = NULL; + } -void -GEOS_finish_r(GEOSContextHandle_t extHandle) -{ - finishGEOS_r(extHandle); -} + void + GEOS_finish_r(GEOSContextHandle_t extHandle) + { + finishGEOS_r(extHandle); + } -void -GEOSFree_r (GEOSContextHandle_t extHandle, void* buffer) -{ - assert(0 != extHandle); + void + GEOSFree_r(GEOSContextHandle_t extHandle, void* buffer) + { + assert(0 != extHandle); - free(buffer); -} + free(buffer); + } //----------------------------------------------------------- // relate()-related functions // return 0 = false, 1 = true, 2 = error occurred //----------------------------------------------------------- -char -GEOSDisjoint_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return 2; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) + char + GEOSDisjoint_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - bool result = g1->disjoint(g2); - return result; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return 2; + } - // TODO: mloskot is going to replace these double-catch block - // with a macro to remove redundant code in this and - // following functions. - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try { + bool result = g1->disjoint(g2); + return result; + } - return 2; -} + // TODO: mloskot is going to replace these double-catch block + // with a macro to remove redundant code in this and + // following functions. + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char -GEOSTouches_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSTouches_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - bool result = g1->touches(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return 2; -} + try { + bool result = g1->touches(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char -GEOSIntersects_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSIntersects_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - bool result = g1->intersects(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return 2; -} + try { + bool result = g1->intersects(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char -GEOSCrosses_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSCrosses_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - bool result = g1->crosses(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return 2; -} + try { + bool result = g1->crosses(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char -GEOSWithin_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSWithin_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - bool result = g1->within(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return 2; -} + try { + bool result = g1->within(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; + } // call g1->contains(g2) // returns 0 = false // 1 = true // 2 = error was trapped -char -GEOSContains_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) + char + GEOSContains_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } + + try { + bool result = g1->contains(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try - { - bool result = g1->contains(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSOverlaps_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -char -GEOSOverlaps_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + bool result = g1->overlaps(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try - { - bool result = g1->overlaps(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSCovers_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -char -GEOSCovers_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + bool result = g1->covers(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try - { - bool result = g1->covers(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSCoveredBy_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -char -GEOSCoveredBy_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + bool result = g1->coveredBy(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try - { - bool result = g1->coveredBy(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 2; -} - //------------------------------------------------------------------- // low-level relate functions //------------------------------------------------------------------ -char -GEOSRelatePattern_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, const char *pat) -{ - if ( 0 == extHandle ) - { - return 2; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } - - try - { - std::string s(pat); - bool result = g1->relate(g2, s); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSRelatePattern_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, const char* pat) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -char -GEOSRelatePatternMatch_r(GEOSContextHandle_t extHandle, const char *mat, - const char *pat) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + std::string s(pat); + bool result = g1->relate(g2, s); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try + char + GEOSRelatePatternMatch_r(GEOSContextHandle_t extHandle, const char* mat, + const char* pat) { - using geos::geom::IntersectionMatrix; + if(nullptr == extHandle) { + return 2; + } - std::string m(mat); - std::string p(pat); - IntersectionMatrix im(m); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - bool result = im.matches(p); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try { + using geos::geom::IntersectionMatrix; - return 2; -} + std::string m(mat); + std::string p(pat); + IntersectionMatrix im(m); -char * -GEOSRelate_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return NULL; - } + bool result = im.matches(p); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return 2; } - try + char* + GEOSRelate_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - using geos::geom::IntersectionMatrix; - - IntersectionMatrix* im = g1->relate(g2); - if (0 == im) - { - return 0; + if(nullptr == extHandle) { + return NULL; } - char *result = gstrdup(im->toString()); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - delete im; - im = 0; + try { + using geos::geom::IntersectionMatrix; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + auto im = g1->relate(g2); + if(im == nullptr) { + return 0; + } - return NULL; -} + char* result = gstrdup(im->toString()); -char * -GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, int bnr) -{ - if ( 0 == extHandle ) - { - return NULL; - } + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try + char* + GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, int bnr) { - using geos::operation::relate::RelateOp; - using geos::geom::IntersectionMatrix; - using geos::algorithm::BoundaryNodeRule; + if(nullptr == extHandle) { + return NULL; + } - IntersectionMatrix* im; - switch (bnr) { - case GEOSRELATE_BNR_MOD2: /* same as OGC */ - im = RelateOp::relate(g1, g2, - BoundaryNodeRule::getBoundaryRuleMod2()); - break; - case GEOSRELATE_BNR_ENDPOINT: - im = RelateOp::relate(g1, g2, - BoundaryNodeRule::getBoundaryEndPoint()); - break; - case GEOSRELATE_BNR_MULTIVALENT_ENDPOINT: - im = RelateOp::relate(g1, g2, - BoundaryNodeRule::getBoundaryMultivalentEndPoint()); - break; - case GEOSRELATE_BNR_MONOVALENT_ENDPOINT: - im = RelateOp::relate(g1, g2, - BoundaryNodeRule::getBoundaryMonovalentEndPoint()); - break; - default: - handle->ERROR_MESSAGE("Invalid boundary node rule %d", bnr); - return 0; - break; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - if (0 == im) return 0; + try { + using geos::operation::relate::RelateOp; + using geos::geom::IntersectionMatrix; + using geos::algorithm::BoundaryNodeRule; + + std::unique_ptr im; + switch(bnr) { + case GEOSRELATE_BNR_MOD2: /* same as OGC */ + im = RelateOp::relate(g1, g2, + BoundaryNodeRule::getBoundaryRuleMod2()); + break; + case GEOSRELATE_BNR_ENDPOINT: + im = RelateOp::relate(g1, g2, + BoundaryNodeRule::getBoundaryEndPoint()); + break; + case GEOSRELATE_BNR_MULTIVALENT_ENDPOINT: + im = RelateOp::relate(g1, g2, + BoundaryNodeRule::getBoundaryMultivalentEndPoint()); + break; + case GEOSRELATE_BNR_MONOVALENT_ENDPOINT: + im = RelateOp::relate(g1, g2, + BoundaryNodeRule::getBoundaryMonovalentEndPoint()); + break; + default: + handle->ERROR_MESSAGE("Invalid boundary node rule %d", bnr); + return 0; + break; + } - char *result = gstrdup(im->toString()); + if(0 == im) { + return 0; + } - delete im; - im = 0; + char* result = gstrdup(im->toString()); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return NULL; -} + return NULL; + } @@ -912,6312 +849,5964 @@ //----------------------------------------------------------------- -char -GEOSisValid_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return 2; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSisValid_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - using geos::operation::valid::IsValidOp; - using geos::operation::valid::TopologyValidationError; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - IsValidOp ivo(g1); - TopologyValidationError *err = ivo.getValidationError(); - if ( err ) - { - handle->NOTICE_MESSAGE("%s", err->toString().c_str()); - return 0; + try { + using geos::operation::valid::IsValidOp; + using geos::operation::valid::TopologyValidationError; + + IsValidOp ivo(g1); + TopologyValidationError* err = ivo.getValidationError(); + if(err) { + handle->NOTICE_MESSAGE("%s", err->toString().c_str()); + return 0; + } + else { + return 1; + } } - else - { - return 1; + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 2; -} -char * -GEOSisValidReason_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; + return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char* + GEOSisValidReason_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - using geos::operation::valid::IsValidOp; - using geos::operation::valid::TopologyValidationError; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - char* result = 0; - char const* const validstr = "Valid Geometry"; + try { + using geos::operation::valid::IsValidOp; + using geos::operation::valid::TopologyValidationError; + + char* result = 0; + char const* const validstr = "Valid Geometry"; + + IsValidOp ivo(g1); + TopologyValidationError* err = ivo.getValidationError(); + if(0 != err) { + std::ostringstream ss; + ss.precision(15); + ss << err->getCoordinate(); + const std::string errloc = ss.str(); + std::string errmsg(err->getMessage()); + errmsg += "[" + errloc + "]"; + result = gstrdup(errmsg); + } + else { + result = gstrdup(std::string(validstr)); + } - IsValidOp ivo(g1); - TopologyValidationError *err = ivo.getValidationError(); - if (0 != err) - { - std::ostringstream ss; - ss.precision(15); - ss << err->getCoordinate(); - const std::string errloc = ss.str(); - std::string errmsg(err->getMessage()); - errmsg += "[" + errloc + "]"; - result = gstrdup(errmsg); + return result; } - else - { - result = gstrdup(std::string(validstr)); + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } - return 0; -} - -char -GEOSisValidDetail_r(GEOSContextHandle_t extHandle, const Geometry *g, - int flags, char** reason, Geometry ** location) -{ - if ( 0 == extHandle ) + char + GEOSisValidDetail_r(GEOSContextHandle_t extHandle, const Geometry* g, + int flags, char** reason, Geometry** location) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - try - { - using geos::operation::valid::IsValidOp; - using geos::operation::valid::TopologyValidationError; + try { + using geos::operation::valid::IsValidOp; + using geos::operation::valid::TopologyValidationError; + + IsValidOp ivo(g); + if(flags & GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE) { + ivo.setSelfTouchingRingFormingHoleValid(true); + } + TopologyValidationError* err = ivo.getValidationError(); + if(0 != err) { + if(location) { + *location = handle->geomFactory->createPoint(err->getCoordinate()); + } + if(reason) { + std::string errmsg(err->getMessage()); + *reason = gstrdup(errmsg); + } + return 0; + } + + if(location) { + *location = 0; + } + if(reason) { + *reason = 0; + } + return 1; /* valid */ - IsValidOp ivo(g); - if ( flags & GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE ) { - ivo.setSelfTouchingRingFormingHoleValid(true); } - TopologyValidationError *err = ivo.getValidationError(); - if (0 != err) - { - if ( location ) { - *location = handle->geomFactory->createPoint(err->getCoordinate()); - } - if ( reason ) { - std::string errmsg(err->getMessage()); - *reason = gstrdup(errmsg); - } - return 0; + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - if ( location ) *location = 0; - if ( reason ) *reason = 0; - return 1; /* valid */ - - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; /* exception */ } - return 2; /* exception */ -} - //----------------------------------------------------------------- // general purpose //----------------------------------------------------------------- -char -GEOSEquals_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) + char + GEOSEquals_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } + + try { + bool result = g1->equals(g2); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try - { - bool result = g1->equals(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSEqualsExact_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double tolerance) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -char -GEOSEqualsExact_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double tolerance) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + bool result = g1->equalsExact(g2, tolerance); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try + int + GEOSDistance_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double* dist) { - bool result = g1->equalsExact(g2, tolerance); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 2; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSDistance_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = g1->distance(g2); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = g1->distance(g2); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSDistanceIndexed_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double* dist) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSDistanceIndexed_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = IndexedFacetDistance::distance(g1, g2); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = IndexedFacetDistance::distance(g1, g2); - return 1; - } - catch (const std::exception &e) + int + GEOSHausdorffDistance_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double* dist) { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSHausdorffDistance_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = DiscreteHausdorffDistance::distance(*g1, *g2); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = DiscreteHausdorffDistance::distance(*g1, *g2); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, + double densifyFrac, double* dist) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = DiscreteHausdorffDistance::distance(*g1, *g2, densifyFrac); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = DiscreteHausdorffDistance::distance(*g1, *g2, densifyFrac); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSFrechetDistance_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double* dist) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSFrechetDistance_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = DiscreteFrechetDistance::distance(*g1, *g2); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = DiscreteFrechetDistance::distance(*g1, *g2); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSFrechetDistanceDensify_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2, double densifyFrac, + double* dist) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != dist); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSFrechetDistanceDensify_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) -{ - assert(0 != dist); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *dist = DiscreteFrechetDistance::distance(*g1, *g2, densifyFrac); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *dist = DiscreteFrechetDistance::distance(*g1, *g2, densifyFrac); - return 1; - } - catch (const std::exception &e) + int + GEOSArea_r(GEOSContextHandle_t extHandle, const Geometry* g, double* area) { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != area); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSArea_r(GEOSContextHandle_t extHandle, const Geometry *g, double *area) -{ - assert(0 != area); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *area = g->getArea(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - *area = g->getArea(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSLength_r(GEOSContextHandle_t extHandle, const Geometry* g, double* length) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != length); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSLength_r(GEOSContextHandle_t extHandle, const Geometry *g, double *length) -{ - assert(0 != length); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return 0; - } + try { + *length = g->getLength(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try + CoordinateSequence* + GEOSNearestPoints_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - *length = g->getLength(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -CoordinateSequence * -GEOSNearestPoints_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + if(g1->isEmpty() || g2->isEmpty()) { + return 0; + } + return geos::operation::distance::DistanceOp::nearestPoints(g1, g2).release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - if (g1->isEmpty() || g2->isEmpty()) return 0; - return geos::operation::distance::DistanceOp::nearestPoints(g1, g2); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + + Geometry* + GEOSGeomFromWKT_r(GEOSContextHandle_t extHandle, const char* wkt) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + try { + const std::string wktstring(wkt); + WKTReader r(static_cast(handle->geomFactory)); -Geometry * -GEOSGeomFromWKT_r(GEOSContextHandle_t extHandle, const char *wkt) -{ - if ( 0 == extHandle ) - { - return NULL; - } + auto g = r.read(wktstring); + return g.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - const std::string wktstring(wkt); - WKTReader r(static_cast(handle->geomFactory)); - - Geometry *g = r.read(wktstring); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char* + GEOSGeomToWKT_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -char * -GEOSGeomToWKT_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { + char* result = gstrdup(g1->toString()); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } - try +// Remember to free the result! + unsigned char* + GEOSGeomToWKB_buf_r(GEOSContextHandle_t extHandle, const Geometry* g, size_t* size) { + assert(0 != size); - char *result = gstrdup(g1->toString()); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return NULL; -} + if(nullptr == extHandle) { + return NULL; + } -// Remember to free the result! -unsigned char * -GEOSGeomToWKB_buf_r(GEOSContextHandle_t extHandle, const Geometry *g, size_t *size) -{ - assert(0 != size); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return NULL; - } + using geos::io::WKBWriter; + try { + int byteOrder = handle->WKBByteOrder; + WKBWriter w(handle->WKBOutputDims, byteOrder); + std::ostringstream os(std::ios_base::binary); + w.write(*g, os); + std::string wkbstring(os.str()); + const std::size_t len = wkbstring.length(); + + unsigned char* result = 0; + result = static_cast(malloc(len)); + if(0 != result) { + std::memcpy(result, wkbstring.c_str(), len); + *size = len; + } + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - using geos::io::WKBWriter; - try + Geometry* + GEOSGeomFromWKB_buf_r(GEOSContextHandle_t extHandle, const unsigned char* wkb, size_t size) { - int byteOrder = handle->WKBByteOrder; - WKBWriter w(handle->WKBOutputDims, byteOrder); - std::ostringstream os(std::ios_base::binary); - w.write(*g, os); - std::string wkbstring(os.str()); - const std::size_t len = wkbstring.length(); + if(nullptr == extHandle) { + return NULL; + } - unsigned char* result = 0; - result = static_cast(malloc(len)); - if (0 != result) - { - std::memcpy(result, wkbstring.c_str(), len); - *size = len; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return NULL; -} + using geos::io::WKBReader; + try { + std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! + WKBReader r(*(static_cast(handle->geomFactory))); + std::istringstream is(std::ios_base::binary); + is.str(wkbstring); + is.seekg(0, std::ios::beg); // rewind reader pointer + auto g = r.read(is); + return g.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSGeomFromWKB_buf_r(GEOSContextHandle_t extHandle, const unsigned char *wkb, size_t size) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + /* Read/write wkb hex values. Returned geometries are + owned by the caller.*/ + unsigned char* + GEOSGeomToHEX_buf_r(GEOSContextHandle_t extHandle, const Geometry* g, size_t* size) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } - using geos::io::WKBReader; - try - { - std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! - WKBReader r(*(static_cast(handle->geomFactory))); - std::istringstream is(std::ios_base::binary); - is.str(wkbstring); - is.seekg(0, std::ios::beg); // rewind reader pointer - Geometry *g = r.read(is); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return NULL; -} + using geos::io::WKBWriter; + try { + int byteOrder = handle->WKBByteOrder; + WKBWriter w(handle->WKBOutputDims, byteOrder); + std::ostringstream os(std::ios_base::binary); + w.writeHEX(*g, os); + std::string hexstring(os.str()); + + char* result = gstrdup(hexstring); + if(0 != result) { + *size = hexstring.length(); + } -/* Read/write wkb hex values. Returned geometries are - owned by the caller.*/ -unsigned char * -GEOSGeomToHEX_buf_r(GEOSContextHandle_t extHandle, const Geometry *g, size_t *size) -{ - if ( 0 == extHandle ) - { - return NULL; - } + return reinterpret_cast(result); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - using geos::io::WKBWriter; - try + Geometry* + GEOSGeomFromHEX_buf_r(GEOSContextHandle_t extHandle, const unsigned char* hex, size_t size) { - int byteOrder = handle->WKBByteOrder; - WKBWriter w(handle->WKBOutputDims, byteOrder); - std::ostringstream os(std::ios_base::binary); - w.writeHEX(*g, os); - std::string hexstring(os.str()); + if(nullptr == extHandle) { + return NULL; + } - char *result = gstrdup(hexstring); - if (0 != result) - { - *size = hexstring.length(); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - return reinterpret_cast(result); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + using geos::io::WKBReader; + try { + std::string hexstring(reinterpret_cast(hex), size); + WKBReader r(*(static_cast(handle->geomFactory))); + std::istringstream is(std::ios_base::binary); + is.str(hexstring); + is.seekg(0, std::ios::beg); // rewind reader pointer - return NULL; -} - -Geometry * -GEOSGeomFromHEX_buf_r(GEOSContextHandle_t extHandle, const unsigned char *hex, size_t size) -{ - if ( 0 == extHandle ) - { - return NULL; - } + auto g = r.readHEX(is); + return g.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - using geos::io::WKBReader; - try + char + GEOSisEmpty_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - std::string hexstring(reinterpret_cast(hex), size); - WKBReader r(*(static_cast(handle->geomFactory))); - std::istringstream is(std::ios_base::binary); - is.str(hexstring); - is.seekg(0, std::ios::beg); // rewind reader pointer + if(nullptr == extHandle) { + return 2; + } - Geometry *g = r.readHEX(is); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return NULL; -} + try { + return g1->isEmpty(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char -GEOSisEmpty_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSisSimple_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - return g1->isEmpty(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return 2; -} + try { + return g1->isSimple(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 2; + } -char -GEOSisSimple_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return 2; + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + char + GEOSisRing_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return 2; - } + if(nullptr == extHandle) { + return 2; + } - try - { - return g1->isSimple(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } -} + try { + const LineString* ls = dynamic_cast(g); + if(ls) { + return (ls->isRing()); + } + else { + return 0; + } + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 2; + } -char -GEOSisRing_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return 2; + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } - try - { - const LineString *ls = dynamic_cast(g); - if ( ls ) { - return (ls->isRing()); - } else { - return 0; - } - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) +//free the result of this + char* + GEOSGeomType_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } -} + if(nullptr == extHandle) { + return NULL; + } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + try { + std::string s = g1->getGeometryType(); -//free the result of this -char * -GEOSGeomType_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } + char* result = gstrdup(s); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - std::string s = g1->getGeometryType(); - - char *result = gstrdup(s); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) +// Return postgis geometry type index + int + GEOSGeomTypeId_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return -1; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } -// Return postgis geometry type index -int -GEOSGeomTypeId_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return -1; - } + try { + return g1->getGeometryTypeId(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return -1; } - try - { - return g1->getGeometryTypeId(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return -1; -} - //------------------------------------------------------------------- // GEOS functions that return geometries //------------------------------------------------------------------- -Geometry * -GEOSEnvelope_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) + Geometry* + GEOSEnvelope_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + Geometry* g3 = g1->getEnvelope().release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - Geometry *g3 = g1->getEnvelope(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSIntersection_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSIntersection_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + Geometry* g3 = g1->intersection(g2).release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - return g1->intersection(g2); - } - catch (const std::exception &e) + Geometry* + GEOSBuffer_r(GEOSContextHandle_t extHandle, const Geometry* g1, double width, int quadrantsegments) { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSBuffer_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadrantsegments) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + Geometry* g3 = g1->buffer(width, quadrantsegments).release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - Geometry *g3 = g1->buffer(width, quadrantsegments); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + Geometry* + GEOSBufferWithStyle_r(GEOSContextHandle_t extHandle, const Geometry* g1, double width, int quadsegs, int endCapStyle, + int joinStyle, double mitreLimit) + { + using geos::operation::buffer::BufferParameters; + using geos::operation::buffer::BufferOp; + using geos::util::IllegalArgumentException; - return NULL; -} + if(nullptr == extHandle) { + return NULL; + } -Geometry * -GEOSBufferWithStyle_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit) -{ - using geos::operation::buffer::BufferParameters; - using geos::operation::buffer::BufferOp; - using geos::util::IllegalArgumentException; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return NULL; - } + try { + BufferParameters bp; + bp.setQuadrantSegments(quadsegs); + + if(endCapStyle > BufferParameters::CAP_SQUARE) { + throw IllegalArgumentException("Invalid buffer endCap style"); + } + bp.setEndCapStyle( + static_cast(endCapStyle) + ); + + if(joinStyle > BufferParameters::JOIN_BEVEL) { + throw IllegalArgumentException("Invalid buffer join style"); + } + bp.setJoinStyle( + static_cast(joinStyle) + ); + bp.setMitreLimit(mitreLimit); + BufferOp op(g1, bp); + Geometry* g3 = op.getResultGeometry(width); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try + Geometry* + GEOSOffsetCurve_r(GEOSContextHandle_t extHandle, const Geometry* g1, double width, int quadsegs, int joinStyle, + double mitreLimit) { - BufferParameters bp; - bp.setQuadrantSegments(quadsegs); - - if ( endCapStyle > BufferParameters::CAP_SQUARE ) - { - throw IllegalArgumentException("Invalid buffer endCap style"); + if(nullptr == extHandle) { + return NULL; } - bp.setEndCapStyle( - static_cast(endCapStyle) - ); - if ( joinStyle > BufferParameters::JOIN_BEVEL ) - { - throw IllegalArgumentException("Invalid buffer join style"); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - bp.setJoinStyle( - static_cast(joinStyle) - ); - bp.setMitreLimit(mitreLimit); - BufferOp op(g1, bp); - Geometry *g3 = op.getResultGeometry(width); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return NULL; -} + try { + BufferParameters bp; + bp.setEndCapStyle(BufferParameters::CAP_FLAT); + bp.setQuadrantSegments(quadsegs); + + if(joinStyle > BufferParameters::JOIN_BEVEL) { + throw IllegalArgumentException("Invalid buffer join style"); + } + bp.setJoinStyle( + static_cast(joinStyle) + ); + bp.setMitreLimit(mitreLimit); -Geometry * -GEOSOffsetCurve_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadsegs, int joinStyle, double mitreLimit) -{ - if ( 0 == extHandle ) return NULL; + bool isLeftSide = true; + if(width < 0) { + isLeftSide = false; + width = -width; + } + BufferBuilder bufBuilder(bp); + Geometry* g3 = bufBuilder.bufferLineSingleSided(g1, width, isLeftSide); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; + return NULL; + } - try + /* @deprecated in 3.3.0 */ + Geometry* + GEOSSingleSidedBuffer_r(GEOSContextHandle_t extHandle, const Geometry* g1, double width, int quadsegs, int joinStyle, + double mitreLimit, int leftSide) { - BufferParameters bp; - bp.setEndCapStyle( BufferParameters::CAP_FLAT ); - bp.setQuadrantSegments(quadsegs); + if(nullptr == extHandle) { + return NULL; + } - if ( joinStyle > BufferParameters::JOIN_BEVEL ) - { - throw IllegalArgumentException("Invalid buffer join style"); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - bp.setJoinStyle( - static_cast(joinStyle) + + try { + BufferParameters bp; + bp.setEndCapStyle(BufferParameters::CAP_FLAT); + bp.setQuadrantSegments(quadsegs); + + if(joinStyle > BufferParameters::JOIN_BEVEL) { + throw IllegalArgumentException("Invalid buffer join style"); + } + bp.setJoinStyle( + static_cast(joinStyle) ); - bp.setMitreLimit(mitreLimit); + bp.setMitreLimit(mitreLimit); - bool isLeftSide = true; - if ( width < 0 ) { - isLeftSide = false; - width = -width; + bool isLeftSide = leftSide == 0 ? false : true; + BufferBuilder bufBuilder(bp); + Geometry* g3 = bufBuilder.bufferLineSingleSided(g1, width, isLeftSide); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - BufferBuilder bufBuilder (bp); - Geometry *g3 = bufBuilder.bufferLineSingleSided(g1, width, isLeftSide); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return NULL; } - catch (...) + + Geometry* + GEOSConvexHull_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -/* @deprecated in 3.3.0 */ -Geometry * -GEOSSingleSidedBuffer_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide) -{ - if ( 0 == extHandle ) return NULL; + try { + Geometry* g3 = g1->convexHull().release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; - try + Geometry* + GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t extHandle, const Geometry* g) { - BufferParameters bp; - bp.setEndCapStyle( BufferParameters::CAP_FLAT ); - bp.setQuadrantSegments(quadsegs); + if(nullptr == extHandle) { + return NULL; + } - if ( joinStyle > BufferParameters::JOIN_BEVEL ) - { - throw IllegalArgumentException("Invalid buffer join style"); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - bp.setJoinStyle( - static_cast(joinStyle) - ); - bp.setMitreLimit(mitreLimit); - bool isLeftSide = leftSide == 0 ? false : true; - BufferBuilder bufBuilder (bp); - Geometry *g3 = bufBuilder.bufferLineSingleSided(g1, width, isLeftSide); + try { + geos::algorithm::MinimumDiameter m(g); + Geometry* g3 = m.getMinimumRectangle().release(); + g3->setSRID(g->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return NULL; } - catch (...) + + Geometry* + GEOSMinimumWidth_r(GEOSContextHandle_t extHandle, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSConvexHull_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + geos::algorithm::MinimumDiameter m(g); + Geometry* g3 = m.getDiameter().release(); + g3->setSRID(g->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - Geometry *g3 = g1->convexHull(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSMinimumClearanceLine_r(GEOSContextHandle_t extHandle, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} + if(nullptr == extHandle) { + return NULL; + } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + geos::precision::MinimumClearance mc(g); + Geometry *g3 = mc.getLine().release(); + g3->setSRID(g->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try + int + GEOSMinimumClearance_r(GEOSContextHandle_t extHandle, const Geometry* g, double* d) { - geos::algorithm::MinimumDiameter m(g); + if(nullptr == extHandle) { + return 2; + } - Geometry *g3 = m.getMinimumRectangle(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - return NULL; -} + try { + geos::precision::MinimumClearance mc(g); + double res = mc.getDistance(); + *d = res; + return 0; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSMinimumWidth_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return NULL; + return 2; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - try + Geometry* + GEOSDifference_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - geos::algorithm::MinimumDiameter m(g); + if(nullptr == extHandle) { + return NULL; + } - Geometry *g3 = m.getDiameter(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return NULL; -} + try { + Geometry *g3 = g1->difference(g2).release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSMinimumClearanceLine_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSBoundary_r(GEOSContextHandle_t extHandle, const Geometry* g1) { + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + Geometry* g3 = g1->getBoundary().release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } - try + Geometry* + GEOSSymDifference_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - geos::precision::MinimumClearance mc(g); - return mc.getLine().release(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -int -GEOSMinimumClearance_r(GEOSContextHandle_t extHandle, const Geometry *g, double *d) -{ - if ( 0 == extHandle ) - { - return 2; - } + try { + Geometry *g3 = g1->symDifference(g2).release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return NULL; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return NULL; + } } - try + Geometry* + GEOSUnion_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* g2) { - geos::precision::MinimumClearance mc(g); - double res = mc.getDistance(); - *d = res; - return 0; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + try { + Geometry *g3 = g1->Union(g2).release(); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { +#if VERBOSE_EXCEPTIONS + std::ostringstream s; + s << "Exception on GEOSUnion_r with following inputs:" << std::endl; + s << "A: " << g1->toString() << std::endl; + s << "B: " << g2->toString() << std::endl; + handle->NOTICE_MESSAGE("%s", s.str().c_str()); +#endif // VERBOSE_EXCEPTIONS + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSCoverageUnion_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - return g1->difference(g2); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return NULL; -} + try { + Geometry *g3 = geos::operation::geounion::CoverageUnion::Union(g).release(); + g3->setSRID(g->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSBoundary_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSUnaryUnion_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - Geometry *g3 = g1->getBoundary(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return NULL; -} + try { + GeomPtr g3(g->Union()); + g3->setSRID(g->getSRID()); + return g3.release(); + } + catch(const std::exception& e) { +#if VERBOSE_EXCEPTIONS + std::ostringstream s; + s << "Exception on GEOSUnaryUnion_r with following inputs:" << std::endl; + s << "A: " << g1->toString() << std::endl; + s << "B: " << g2->toString() << std::endl; + handle->NOTICE_MESSAGE("%s", s.str().c_str()); +#endif // VERBOSE_EXCEPTIONS + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSSymDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSNode_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + std::unique_ptr g3 = geos::noding::GeometryNoder::node(*g); + g3->setSRID(g->getSRID()); + return g3.release(); + } + catch(const std::exception& e) { +#if VERBOSE_EXCEPTIONS + std::ostringstream s; + s << "Exception on GEOSNode_r with following inputs:" << std::endl; + s << "A: " << g1->toString() << std::endl; + s << "B: " << g2->toString() << std::endl; + handle->NOTICE_MESSAGE("%s", s.str().c_str()); +#endif // VERBOSE_EXCEPTIONS + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - return g1->symDifference(g2); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); return NULL; } - catch (...) + Geometry* + GEOSUnionCascaded_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + const geos::geom::MultiPolygon* p = dynamic_cast(g1); + if(! p) { + handle->ERROR_MESSAGE("Invalid argument (must be a MultiPolygon)"); + return NULL; + } + + using geos::operation::geounion::CascadedPolygonUnion; + Geometry *g3 = CascadedPolygonUnion::Union(p); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } -} -Geometry * -GEOSUnion_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) -{ - if ( 0 == extHandle ) + Geometry* + GEOSPointOnSurface_r(GEOSContextHandle_t extHandle, const Geometry* g1) { + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + auto ret = g1->getInteriorPoint(); + if(ret == nullptr) { + const GeometryFactory* gf = handle->geomFactory; + // return an empty point + return gf->createPoint().release(); + } + ret->setSRID(g1->getSRID()); + return ret.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSClipByRect_r(GEOSContextHandle_t extHandle, const Geometry* g, double xmin, double ymin, double xmax, double ymax) { - return NULL; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - return g1->Union(g2); - } - catch (const std::exception &e) - { + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + using geos::operation::intersection::Rectangle; + using geos::operation::intersection::RectangleIntersection; + Rectangle rect(xmin, ymin, xmax, ymax); + std::unique_ptr g3 = RectangleIntersection::clip(*g, rect); + g3->setSRID(g->getSRID()); + return g3.release(); + } + catch(const std::exception& e) { #if VERBOSE_EXCEPTIONS - std::ostringstream s; - s << "Exception on GEOSUnion with following inputs:" << std::endl; - s << "A: "<toString() << std::endl; - s << "B: "<toString() << std::endl; - handle->NOTICE_MESSAGE("%s", s.str().c_str()); + std::ostringstream s; + s << "Exception on GEOSClipByRect_r with following inputs:" << std::endl; + s << "A: " << g1->toString() << std::endl; + s << "B: " << g2->toString() << std::endl; + handle->NOTICE_MESSAGE("%s", s.str().c_str()); #endif // VERBOSE_EXCEPTIONS - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSUnaryUnion_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } +//------------------------------------------------------------------- +// memory management functions +//------------------------------------------------------------------ - try - { - GeomPtr g3 ( g->Union() ); - return g3.release(); - } - catch (const std::exception &e) - { -#if VERBOSE_EXCEPTIONS - std::ostringstream s; - s << "Exception on GEOSUnaryUnion with following inputs:" << std::endl; - s << "A: "<toString() << std::endl; - s << "B: "<toString() << std::endl; - handle->NOTICE_MESSAGE("%s", s.str().c_str()); -#endif // VERBOSE_EXCEPTIONS - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSGeom_destroy_r(GEOSContextHandle_t extHandle, Geometry* a) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; - return NULL; -} + // FIXME: mloskot: Does this try-catch around delete means that + // destructors in GEOS may throw? If it does, this is a serious + // violation of "never throw an exception from a destructor" principle + + try { + delete a; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -Geometry * -GEOSNode_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return NULL; - } + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try - { - std::unique_ptr g3 = geos::noding::GeometryNoder::node(*g); - return g3.release(); - } - catch (const std::exception &e) - { -#if VERBOSE_EXCEPTIONS - std::ostringstream s; - s << "Exception on GEOSUnaryUnion with following inputs:" << std::endl; - s << "A: "<toString() << std::endl; - s << "B: "<toString() << std::endl; - handle->NOTICE_MESSAGE("%s", s.str().c_str()); -#endif // VERBOSE_EXCEPTIONS - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSGeom_setUserData_r(GEOSContextHandle_t extHandle, Geometry* g, void* userData) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != g); - return NULL; -} + if(nullptr == extHandle) { + return; + } -Geometry * -GEOSUnionCascaded_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + g->setUserData(userData); } - try + void + GEOSSetSRID_r(GEOSContextHandle_t extHandle, Geometry* g, int srid) { - const geos::geom::MultiPolygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a MultiPolygon)"); - return NULL; - } + assert(0 != g); - using geos::operation::geounion::CascadedPolygonUnion; - return CascadedPolygonUnion::Union(p); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -Geometry * -GEOSPointOnSurface_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; + g->setSRID(srid); } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - try + int + GEOSGetNumCoordinates_r(GEOSContextHandle_t extHandle, const Geometry* g) { - Geometry *ret = g1->getInteriorPoint(); - if ( ! ret ) - { - const GeometryFactory* gf = handle->geomFactory; - // return an empty point - return gf->createPoint(); + assert(0 != g); + + if(nullptr == extHandle) { + return -1; } - return ret; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } -Geometry * -GEOSClipByRect_r(GEOSContextHandle_t extHandle, const Geometry *g, double xmin, double ymin, double xmax, double ymax) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + return static_cast(g->getNumPoints()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return -1; } - try - { - using geos::operation::intersection::Rectangle; - using geos::operation::intersection::RectangleIntersection; - Rectangle rect(xmin, ymin, xmax, ymax); - std::unique_ptr g3 = RectangleIntersection::clip(*g, rect); - return g3.release(); - } - catch (const std::exception &e) - { -#if VERBOSE_EXCEPTIONS - std::ostringstream s; - s << "Exception on GEOSClipByRect with following inputs:" << std::endl; - s << "A: "<toString() << std::endl; - s << "B: "<toString() << std::endl; - handle->NOTICE_MESSAGE("%s", s.str().c_str()); -#endif // VERBOSE_EXCEPTIONS - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + /* + * Return -1 on exception, 0 otherwise. + * Converts Geometry to normal form (or canonical form). + */ + int + GEOSNormalize_r(GEOSContextHandle_t extHandle, Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} + assert(0 != g); -//------------------------------------------------------------------- -// memory management functions -//------------------------------------------------------------------ + if(nullptr == extHandle) { + return -1; + } -void -GEOSGeom_destroy_r(GEOSContextHandle_t extHandle, Geometry *a) -{ - GEOSContextHandleInternal_t *handle = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } - // FIXME: mloskot: Does this try-catch around delete means that - // destructors in GEOS may throw? If it does, this is a serious - // violation of "never throw an exception from a destructor" principle + try { + g->normalize(); + return 0; // SUCCESS + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - delete a; + return -1; } - catch (const std::exception &e) + + int + GEOSGetNumInteriorRings_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return -1; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return -1; + } + + try { + const Polygon* p = dynamic_cast(g1); + if(! p) { + handle->ERROR_MESSAGE("Argument is not a Polygon"); + return -1; + } + return static_cast(p->getNumInteriorRing()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return -1; } - catch (...) + + +// returns -1 on error and 1 for non-multi geometries + int + GEOSGetNumGeometries_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return -1; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return -1; + } + + try { + return static_cast(g1->getNumGeometries()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("Unknown exception thrown"); + return -1; } -} -void -GEOSGeom_setUserData_r(GEOSContextHandle_t extHandle, Geometry *g, void* userData) -{ - assert(0 != g); - if ( 0 == extHandle ) + /* + * Call only on GEOMETRYCOLLECTION or MULTI*. + * Return a pointer to the internal Geometry. + */ + const Geometry* + GEOSGetGeometryN_r(GEOSContextHandle_t extHandle, const Geometry* g1, int n) { - return; + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + return g1->getGeometryN(n); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + /* + * Call only on LINESTRING + * Returns NULL on exception + */ + Geometry* + GEOSGeomGetPointN_r(GEOSContextHandle_t extHandle, const Geometry* g1, int n) { - return; - } + if(nullptr == extHandle) { + return NULL; + } - g->setUserData(userData); -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -void -GEOSSetSRID_r(GEOSContextHandle_t extHandle, Geometry *g, int srid) -{ - assert(0 != g); + try { + using geos::geom::LineString; + const LineString* ls = dynamic_cast(g1); + if(! ls) { + handle->ERROR_MESSAGE("Argument is not a LineString"); + return NULL; + } + return ls->getPointN(n).release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + /* + * Call only on LINESTRING + */ + Geometry* + GEOSGeomGetStartPoint_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return; - } - - g->setSRID(srid); -} + if(nullptr == extHandle) { + return NULL; + } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -int -GEOSGetNumCoordinates_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + try { + using geos::geom::LineString; + const LineString* ls = dynamic_cast(g1); + if(! ls) { + handle->ERROR_MESSAGE("Argument is not a LineString"); + return NULL; + } + return ls->getStartPoint().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return -1; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + /* + * Call only on LINESTRING + */ + Geometry* + GEOSGeomGetEndPoint_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - return -1; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - return static_cast(g->getNumPoints()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + using geos::geom::LineString; + const LineString* ls = dynamic_cast(g1); + if(! ls) { + handle->ERROR_MESSAGE("Argument is not a LineString"); + return NULL; + } + return ls->getEndPoint().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - catch (...) + + /* + * Call only on LINESTRING or MULTILINESTRING + * return 2 on exception, 1 on true, 0 on false + */ + char + GEOSisClosed_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 2; + } - return -1; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -/* - * Return -1 on exception, 0 otherwise. - * Converts Geometry to normal form (or canonical form). - */ -int -GEOSNormalize_r(GEOSContextHandle_t extHandle, Geometry *g) -{ - assert(0 != g); + try { + using geos::geom::LineString; + using geos::geom::MultiLineString; - if ( 0 == extHandle ) - { - return -1; - } + const LineString* ls = dynamic_cast(g1); + if(ls) { + return ls->isClosed(); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; + const MultiLineString* mls = dynamic_cast(g1); + if(mls) { + return mls->isClosed(); + } + + handle->ERROR_MESSAGE("Argument is not a LineString or MultiLineString"); + return 2; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } - try + /* + * Call only on LINESTRING + * return 0 on exception, otherwise 1 + */ + int + GEOSGeomGetLength_r(GEOSContextHandle_t extHandle, const Geometry* g1, double* length) { - g->normalize(); - return 0; // SUCCESS - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return -1; -} - -int -GEOSGetNumInteriorRings_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return -1; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; - } - - try - { - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Argument is not a Polygon"); - return -1; - } - return static_cast(p->getNumInteriorRing()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return -1; -} - - -// returns -1 on error and 1 for non-multi geometries -int -GEOSGetNumGeometries_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return -1; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; - } - - try - { - return static_cast(g1->getNumGeometries()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return -1; -} - - -/* - * Call only on GEOMETRYCOLLECTION or MULTI*. - * Return a pointer to the internal Geometry. - */ -const Geometry * -GEOSGetGeometryN_r(GEOSContextHandle_t extHandle, const Geometry *g1, int n) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - return g1->getGeometryN(n); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -/* - * Call only on LINESTRING - * Returns NULL on exception - */ -Geometry * -GEOSGeomGetPointN_r(GEOSContextHandle_t extHandle, const Geometry *g1, int n) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - using geos::geom::LineString; - const LineString *ls = dynamic_cast(g1); - if ( ! ls ) - { - handle->ERROR_MESSAGE("Argument is not a LineString"); - return NULL; - } - return ls->getPointN(n); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -/* - * Call only on LINESTRING - */ -Geometry * -GEOSGeomGetStartPoint_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - using geos::geom::LineString; - const LineString *ls = dynamic_cast(g1); - if ( ! ls ) - { - handle->ERROR_MESSAGE("Argument is not a LineString"); - return NULL; - } - return ls->getStartPoint(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -/* - * Call only on LINESTRING - */ -Geometry * -GEOSGeomGetEndPoint_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - using geos::geom::LineString; - const LineString *ls = dynamic_cast(g1); - if ( ! ls ) - { - handle->ERROR_MESSAGE("Argument is not a LineString"); - return NULL; - } - return ls->getEndPoint(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -/* - * Call only on LINESTRING or MULTILINESTRING - * return 2 on exception, 1 on true, 0 on false - */ -char -GEOSisClosed_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return 2; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } - - try - { - using geos::geom::LineString; - using geos::geom::MultiLineString; - - const LineString *ls = dynamic_cast(g1); - if ( ls ) { - return ls->isClosed(); - } - - const MultiLineString *mls = dynamic_cast(g1); - if ( mls ) { - return mls->isClosed(); - } - - handle->ERROR_MESSAGE("Argument is not a LineString or MultiLineString"); - return 2; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 2; -} - -/* - * Call only on LINESTRING - * return 0 on exception, otherwise 1 - */ -int -GEOSGeomGetLength_r(GEOSContextHandle_t extHandle, const Geometry *g1, double *length) -{ - if ( 0 == extHandle ) - { - return 0; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - - try - { - using geos::geom::LineString; - const LineString *ls = dynamic_cast(g1); - if ( ! ls ) - { - handle->ERROR_MESSAGE("Argument is not a LineString"); - return 0; - } - *length = ls->getLength(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -/* - * Call only on LINESTRING - */ -int -GEOSGeomGetNumPoints_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return -1; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; - } - - try - { - using geos::geom::LineString; - const LineString *ls = dynamic_cast(g1); - if ( ! ls ) - { - handle->ERROR_MESSAGE("Argument is not a LineString"); - return -1; - } - return static_cast(ls->getNumPoints()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return -1; -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetX_r(GEOSContextHandle_t extHandle, const Geometry *g1, double *x) -{ - if ( 0 == extHandle ) - { - return 0; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - - try - { - using geos::geom::Point; - const Point *po = dynamic_cast(g1); - if ( ! po ) - { - handle->ERROR_MESSAGE("Argument is not a Point"); - return 0; - } - *x = po->getX(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetY_r(GEOSContextHandle_t extHandle, const Geometry *g1, double *y) -{ - if ( 0 == extHandle ) - { - return 0; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - - try - { - using geos::geom::Point; - const Point *po = dynamic_cast(g1); - if ( ! po ) - { - handle->ERROR_MESSAGE("Argument is not a Point"); - return 0; - } - *y = po->getY(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -/* - * For POINT - * returns 0 on exception, otherwise 1 - */ -int -GEOSGeomGetZ_r(GEOSContextHandle_t extHandle, const Geometry *g1, double *z) -{ - if ( 0 == extHandle ) - { - return 0; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - - try - { - using geos::geom::Point; - const Point *po = dynamic_cast(g1); - if ( ! po ) - { - handle->ERROR_MESSAGE("Argument is not a Point"); + if(nullptr == extHandle) { return 0; } - *z = po->getZ(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -/* - * Call only on polygon - * Return a copy of the internal Geometry. - */ -const Geometry * -GEOSGetExteriorRing_r(GEOSContextHandle_t extHandle, const Geometry *g1) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); - return NULL; - } - return p->getExteriorRing(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -/* - * Call only on polygon - * Return a pointer to internal storage, do not destroy it. - */ -const Geometry * -GEOSGetInteriorRingN_r(GEOSContextHandle_t extHandle, const Geometry *g1, int n) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); - return NULL; - } - return p->getInteriorRingN(n); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -Geometry * -GEOSGetCentroid_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - - try - { - Geometry *ret = g->getCentroid(); - if (0 == ret) - { - const GeometryFactory *gf = handle->geomFactory; - return gf->createPoint(); - } - return ret; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -Geometry * -GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t extHandle, int type) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - -#ifdef GEOS_DEBUG - char buf[256]; - sprintf(buf, "createCollection: requested type %d", type); - handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? -#endif - - try - { - const GeometryFactory* gf = handle->geomFactory; - - Geometry *g = 0; - switch (type) - { - case GEOS_GEOMETRYCOLLECTION: - g = gf->createGeometryCollection(); - break; - case GEOS_MULTIPOINT: - g = gf->createMultiPoint(); - break; - case GEOS_MULTILINESTRING: - g = gf->createMultiLineString(); - break; - case GEOS_MULTIPOLYGON: - g = gf->createMultiPolygon(); - break; - default: - handle->ERROR_MESSAGE("Unsupported type request for GEOSGeom_createEmptyCollection_r"); - g = 0; - - } - - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -Geometry * -GEOSGeom_createCollection_r(GEOSContextHandle_t extHandle, int type, Geometry **geoms, unsigned int ngeoms) -{ - if ( 0 == extHandle ) - { - return NULL; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } - -#ifdef GEOS_DEBUG - char buf[256]; - sprintf(buf, "PostGIS2GEOS_collection: requested type %d, ngeoms: %d", - type, ngeoms); - handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? -#endif - - try - { - const GeometryFactory* gf = handle->geomFactory; - std::vector* vgeoms = new std::vector(geoms, geoms + ngeoms); - - Geometry *g = 0; - switch (type) - { - case GEOS_GEOMETRYCOLLECTION: - g = gf->createGeometryCollection(vgeoms); - break; - case GEOS_MULTIPOINT: - g = gf->createMultiPoint(vgeoms); - break; - case GEOS_MULTILINESTRING: - g = gf->createMultiLineString(vgeoms); - break; - case GEOS_MULTIPOLYGON: - g = gf->createMultiPolygon(vgeoms); - break; - default: - handle->ERROR_MESSAGE("Unsupported type request for PostGIS2GEOS_collection"); - delete vgeoms; - g = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; } - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -Geometry * -GEOSPolygonize_r(GEOSContextHandle_t extHandle, const Geometry * const * g, unsigned int ngeoms) -{ - if ( 0 == extHandle ) - { - return 0; - } + try { + using geos::geom::LineString; + const LineString* ls = dynamic_cast(g1); + if(! ls) { + handle->ERROR_MESSAGE("Argument is not a LineString"); + return 0; + } + *length = ls->getLength(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - Geometry *out = 0; - - try + /* + * Call only on LINESTRING + */ + int + GEOSGeomGetNumPoints_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - // Polygonize - using geos::operation::polygonize::Polygonizer; - Polygonizer plgnzr; - for (std::size_t i = 0; i < ngeoms; ++i) - { - plgnzr.add(g[i]); + if(nullptr == extHandle) { + return -1; } -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); -#endif - - std::vector *polys = plgnzr.getPolygons(); - assert(0 != polys); - -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("output polygons got"); -#endif - - // We need a vector of Geometry pointers, not Polygon pointers. - // STL vector doesn't allow transparent upcast of this - // nature, so we explicitly convert. - // (it's just a waste of processor and memory, btw) - // - // XXX mloskot: Why not to extent GeometryFactory to accept - // vector of polygons or extend Polygonizer to return list of Geometry* - // or add a wrapper which semantic is similar to: - // std::vector > - std::vector *polyvec = new std::vector(polys->size()); - - for (std::size_t i = 0; i < polys->size(); ++i) - { - (*polyvec)[i] = (*polys)[i]; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; } - delete polys; - polys = 0; - const GeometryFactory *gf = handle->geomFactory; + try { + using geos::geom::LineString; + const LineString* ls = dynamic_cast(g1); + if(! ls) { + handle->ERROR_MESSAGE("Argument is not a LineString"); + return -1; + } + return static_cast(ls->getNumPoints()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - // The below takes ownership of the passed vector, - // so we must *not* delete it - out = gf->createGeometryCollection(polyvec); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return -1; } - catch (...) + + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetX_r(GEOSContextHandle_t extHandle, const Geometry* g1, double* x) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return out; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -Geometry * -GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t extHandle, const Geometry * const * g, unsigned int ngeoms) -{ - if ( 0 == extHandle ) - { - return 0; - } + try { + using geos::geom::Point; + const Point* po = dynamic_cast(g1); + if(! po) { + handle->ERROR_MESSAGE("Argument is not a Point"); + return 0; + } + *x = po->getX(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - Geometry *out = 0; - - try + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetY_r(GEOSContextHandle_t extHandle, const Geometry* g1, double* y) { - // Polygonize - using geos::operation::polygonize::Polygonizer; - Polygonizer plgnzr; - for (std::size_t i = 0; i < ngeoms; ++i) - { - plgnzr.add(g[i]); + if(nullptr == extHandle) { + return 0; } -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); -#endif - - const std::vector& lines = plgnzr.getCutEdges(); - -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("output polygons got"); -#endif - - // We need a vector of Geometry pointers, not Polygon pointers. - // STL vector doesn't allow transparent upcast of this - // nature, so we explicitly convert. - // (it's just a waste of processor and memory, btw) - // XXX mloskot: See comment for GEOSPolygonize_r - std::vector *linevec = new std::vector(lines.size()); - - for (std::size_t i = 0, n=lines.size(); i < n; ++i) - { - (*linevec)[i] = lines[i]->clone(); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; } - const GeometryFactory *gf = handle->geomFactory; + try { + using geos::geom::Point; + const Point* po = dynamic_cast(g1); + if(! po) { + handle->ERROR_MESSAGE("Argument is not a Point"); + return 0; + } + *y = po->getY(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - // The below takes ownership of the passed vector, - // so we must *not* delete it - out = gf->createGeometryCollection(linevec); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return 0; } - catch (...) + + /* + * For POINT + * returns 0 on exception, otherwise 1 + */ + int + GEOSGeomGetZ_r(GEOSContextHandle_t extHandle, const Geometry* g1, double* z) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return out; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -Geometry * -GEOSPolygonize_full_r(GEOSContextHandle_t extHandle, const Geometry* g, - Geometry** cuts, Geometry** dangles, Geometry** invalid) -{ - if ( 0 == extHandle ) - { - return 0; - } + try { + using geos::geom::Point; + const Point* po = dynamic_cast(g1); + if(! po) { + handle->ERROR_MESSAGE("Argument is not a Point"); + return 0; + } + *z = po->getZ(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try + /* + * Call only on polygon + * Return a copy of the internal Geometry. + */ + const Geometry* + GEOSGetExteriorRing_r(GEOSContextHandle_t extHandle, const Geometry* g1) { - // Polygonize - using geos::operation::polygonize::Polygonizer; - Polygonizer plgnzr; - for (std::size_t i = 0; i getNumGeometries(); ++i) - { - plgnzr.add(g->getGeometryN(i)); + if(nullptr == extHandle) { + return NULL; } -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); -#endif - const GeometryFactory *gf = handle->geomFactory; - - if ( cuts ) { + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - const std::vector& lines = plgnzr.getCutEdges(); - std::vector *linevec = new std::vector(lines.size()); - for (std::size_t i = 0, n=lines.size(); i < n; ++i) - { - (*linevec)[i] = lines[i]->clone(); - } - - // The below takes ownership of the passed vector, - // so we must *not* delete it - *cuts = gf->createGeometryCollection(linevec); - } - - if ( dangles ) { - - const std::vector& lines = plgnzr.getDangles(); - std::vector *linevec = new std::vector(lines.size()); - for (std::size_t i = 0, n=lines.size(); i < n; ++i) - { - (*linevec)[i] = lines[i]->clone(); - } - - // The below takes ownership of the passed vector, - // so we must *not* delete it - *dangles = gf->createGeometryCollection(linevec); - } - - if ( invalid ) { - - const std::vector& lines = plgnzr.getInvalidRingLines(); - std::vector *linevec = new std::vector(lines.size()); - for (std::size_t i = 0, n=lines.size(); i < n; ++i) - { - (*linevec)[i] = lines[i]->clone(); - } - - // The below takes ownership of the passed vector, - // so we must *not* delete it - *invalid = gf->createGeometryCollection(linevec); - } - - std::vector *polys = plgnzr.getPolygons(); - std::vector *polyvec = new std::vector(polys->size()); - for (std::size_t i = 0; i < polys->size(); ++i) - { - (*polyvec)[i] = (*polys)[i]; - } - delete polys; - - return gf->createGeometryCollection(polyvec); - - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } -} + try { + const Polygon* p = dynamic_cast(g1); + if(! p) { + handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); + return NULL; + } + return p->getExteriorRing(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSLineMerge_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return 0; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + /* + * Call only on polygon + * Return a pointer to internal storage, do not destroy it. + */ + const Geometry* + GEOSGetInteriorRingN_r(GEOSContextHandle_t extHandle, const Geometry* g1, int n) { - return 0; - } + if(nullptr == extHandle) { + return NULL; + } - Geometry *out = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - try - { - using geos::operation::linemerge::LineMerger; - LineMerger lmrgr; - lmrgr.add(g); + try { + const Polygon* p = dynamic_cast(g1); + if(! p) { + handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); + return NULL; + } + return p->getInteriorRingN(n); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - std::vector* lines = lmrgr.getMergedLineStrings(); - assert(0 != lines); + return NULL; + } -#if GEOS_DEBUG - handle->NOTICE_MESSAGE("output lines got"); -#endif + Geometry* + GEOSGetCentroid_r(GEOSContextHandle_t extHandle, const Geometry* g) + { + if(nullptr == extHandle) { + return NULL; + } - std::vector*geoms = new std::vector(lines->size()); - for (std::vector::size_type i = 0; i < lines->size(); ++i) - { - (*geoms)[i] = (*lines)[i]; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; } - delete lines; - lines = 0; - const GeometryFactory *gf = handle->geomFactory; - out = gf->buildGeometry(geoms); + try { + Geometry* ret = g->getCentroid().release(); + if(0 == ret) { + const GeometryFactory* gf = handle->geomFactory; + return gf->createPoint().release(); + } + ret->setSRID(g->getSRID()); + return ret; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - // XXX: old version - //out = gf->createGeometryCollection(geoms); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return NULL; } - return out; -} + Geometry* + GEOSMinimumBoundingCircle_r(GEOSContextHandle_t extHandle, const Geometry* g, + double* radius, Geometry** center) + { + if(nullptr == extHandle) { + return NULL; + } -Geometry * -GEOSReverse_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return nullptr; - } + try { + geos::algorithm::MinimumBoundingCircle mc(g); + std::unique_ptr ret = mc.getCircle(); + const GeometryFactory* gf = handle->geomFactory; + if(!ret) { + if (center) *center = NULL; + if (radius) *radius = 0.0; + return gf->createPolygon().release(); + } + if (center) *center = static_cast(gf->createPoint(mc.getCentre())); + if (radius) *radius = mc.getRadius(); + ret->setSRID(g->getSRID()); + return ret.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return nullptr; + return NULL; } - try - { - return g->reverse(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t extHandle, int type) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return nullptr; -} + if(nullptr == extHandle) { + return NULL; + } - void* -GEOSGeom_getUserData_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return 0; - } +#ifdef GEOS_DEBUG + char buf[256]; + sprintf(buf, "createCollection: requested type %d", type); + handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? +#endif - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } + try { + const GeometryFactory* gf = handle->geomFactory; - try - { - return g->getUserData(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + std::unique_ptr g = 0; + switch(type) { + case GEOS_GEOMETRYCOLLECTION: + g = gf->createGeometryCollection(); + break; + case GEOS_MULTIPOINT: + g = gf->createMultiPoint(); + break; + case GEOS_MULTILINESTRING: + g = gf->createMultiLineString(); + break; + case GEOS_MULTIPOLYGON: + g = gf->createMultiPolygon(); + break; + default: + handle->ERROR_MESSAGE("Unsupported type request for GEOSGeom_createEmptyCollection_r"); + g = 0; - return NULL; -} + } -int -GEOSGetSRID_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + return g.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSGeom_createCollection_r(GEOSContextHandle_t extHandle, int type, Geometry** geoms, unsigned int ngeoms) { - return 0; - } + if(nullptr == extHandle) { + return NULL; + } - try - { - return g->getSRID(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - return 0; -} +#ifdef GEOS_DEBUG + char buf[256]; + sprintf(buf, "PostGIS2GEOS_collection: requested type %d, ngeoms: %d", + type, ngeoms); + handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? +#endif -const char* GEOSversion() -{ - static char version[256]; - sprintf(version, "%s " GEOS_REVISION, GEOS_CAPI_VERSION); - return version; -} + try { + const GeometryFactory* gf = handle->geomFactory; + std::vector* vgeoms = new std::vector(geoms, geoms + ngeoms); -const char* GEOSjtsport() -{ - return GEOS_JTS_PORT; -} + Geometry* g = 0; + switch(type) { + case GEOS_GEOMETRYCOLLECTION: + g = gf->createGeometryCollection(vgeoms); + break; + case GEOS_MULTIPOINT: + g = gf->createMultiPoint(vgeoms); + break; + case GEOS_MULTILINESTRING: + g = gf->createMultiLineString(vgeoms); + break; + case GEOS_MULTIPOLYGON: + g = gf->createMultiPolygon(vgeoms); + break; + default: + handle->ERROR_MESSAGE("Unsupported type request for PostGIS2GEOS_collection"); + delete vgeoms; + g = 0; -char -GEOSHasZ_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + } + + return g; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return -1; + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSPolygonize_r(GEOSContextHandle_t extHandle, const Geometry* const* g, unsigned int ngeoms) { - return -1; - } + if(nullptr == extHandle) { + return 0; + } - if (g->isEmpty()) - { - return false; - } - assert(0 != g->getCoordinate()); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - double az = g->getCoordinate()->z; - //handle->ERROR_MESSAGE("ZCoord: %g", az); + Geometry* out = 0; - return static_cast(FINITE(az)); -} + try { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr; + for(std::size_t i = 0; i < ngeoms; ++i) { + plgnzr.add(g[i]); + } -int -GEOS_getWKBOutputDims_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return -1; - } +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); +#endif - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; - } + auto polys = plgnzr.getPolygons(); + assert(0 != polys); - return handle->WKBOutputDims; -} +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("output polygons got"); +#endif -int -GEOS_setWKBOutputDims_r(GEOSContextHandle_t extHandle, int newdims) -{ - if ( 0 == extHandle ) - { - return -1; - } + // We need a vector of Geometry pointers, not Polygon pointers. + // STL vector doesn't allow transparent upcast of this + // nature, so we explicitly convert. + // (it's just a waste of processor and memory, btw) + // + // XXX mloskot: Why not to extent GeometryFactory to accept + // vector of polygons or extend Polygonizer to return list of Geometry* + // or add a wrapper which semantic is similar to: + // std::vector > + std::vector* polyvec = new std::vector(polys->size()); + + for(std::size_t i = 0; i < polys->size(); ++i) { + (*polyvec)[i] = (*polys)[i].release(); + } + polys = 0; - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; + const GeometryFactory* gf = handle->geomFactory; + + // The below takes ownership of the passed vector, + // so we must *not* delete it + out = gf->createGeometryCollection(polyvec); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return out; } - if ( newdims < 2 || newdims > 3 ) + Geometry* + GEOSPolygonize_valid_r(GEOSContextHandle_t extHandle, const Geometry* const* g, unsigned int ngeoms) { - handle->ERROR_MESSAGE("WKB output dimensions out of range 2..3"); - } + if(nullptr == extHandle) { + return nullptr; + } - const int olddims = handle->WKBOutputDims; - handle->WKBOutputDims = newdims; + GEOSContextHandleInternal_t* handle = nullptr; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return nullptr; + } - return olddims; -} + Geometry* out = nullptr; -int -GEOS_getWKBByteOrder_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return -1; - } + try { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr(true); + int srid = 0; + for(std::size_t i = 0; i < ngeoms; ++i) { + plgnzr.add(g[i]); + srid = g[i]->getSRID(); + } + + auto polys = plgnzr.getPolygons(); + if (polys->empty()) { + out = handle->geomFactory->createGeometryCollection().release(); + } else if (polys->size() == 1) { + out = (*polys)[0].release(); + } else { + auto geoms = new std::vector(polys->size()); + for (size_t i = 0; i < polys->size(); i++) { + (*geoms)[i] = (*polys)[i].release(); + } + + out = handle->geomFactory->createMultiPolygon(geoms); + } + out->setSRID(srid); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; + return out; } - return handle->WKBByteOrder; -} - -int -GEOS_setWKBByteOrder_r(GEOSContextHandle_t extHandle, int byteOrder) -{ - if ( 0 == extHandle ) - { - return -1; - } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSBuildArea_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return -1; - } + if(nullptr == extHandle) { + return nullptr; + } - const int oldByteOrder = handle->WKBByteOrder; - handle->WKBByteOrder = byteOrder; + GEOSContextHandleInternal_t* handle = nullptr; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return nullptr; + } - return oldByteOrder; -} + Geometry* out = nullptr; + try { + using geos::operation::polygonize::BuildArea; + BuildArea builder; + out = builder.build(g).release(); + out->setSRID(g->getSRID()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -CoordinateSequence * -GEOSCoordSeq_create_r(GEOSContextHandle_t extHandle, unsigned int size, unsigned int dims) -{ - if ( 0 == extHandle ) - { - return NULL; + return out; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSMakeValid_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return NULL; - } + if(nullptr == extHandle) { + return nullptr; + } - try - { - const GeometryFactory *gf = handle->geomFactory; - return gf->getCoordinateSequenceFactory()->create(size, dims); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = nullptr; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return nullptr; + } - return NULL; -} + Geometry* out = nullptr; -int -GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs, - unsigned int idx, unsigned int dim, double val) -{ - assert(0 != cs); - if ( 0 == extHandle ) - { - return 0; - } + try { + // BuildArea + using geos::operation::valid::MakeValid; + MakeValid makeValid; + out = makeValid.build(g).release(); + out->setSRID(g->getSRID()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; + return out; } - try - { - cs->setOrdinate(idx, dim, val); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t extHandle, const Geometry* const* g, unsigned int ngeoms) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} - -int -GEOSCoordSeq_setX_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 0, val); -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSCoordSeq_setY_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 1, val); -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -int -GEOSCoordSeq_setZ_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) -{ - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 2, val); -} + Geometry* out = 0; -CoordinateSequence * -GEOSCoordSeq_clone_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs) -{ - assert(0 != cs); + try { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr; + int srid = 0; + for(std::size_t i = 0; i < ngeoms; ++i) { + plgnzr.add(g[i]); + srid = g[i]->getSRID(); + } - if ( 0 == extHandle ) - { - return NULL; - } +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); +#endif - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; - } + const std::vector& lines = plgnzr.getCutEdges(); - try - { - return cs->clone(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("output polygons got"); +#endif - return NULL; -} + // We need a vector of Geometry pointers, not Polygon pointers. + // STL vector doesn't allow transparent upcast of this + // nature, so we explicitly convert. + // (it's just a waste of processor and memory, btw) + // XXX mloskot: See comment for GEOSPolygonize_r + std::vector* linevec = new std::vector(lines.size()); + + for(std::size_t i = 0, n = lines.size(); i < n; ++i) { + (*linevec)[i] = lines[i]->clone().release(); + } -int -GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, - unsigned int idx, unsigned int dim, double *val) -{ - assert(0 != cs); - assert(0 != val); + const GeometryFactory* gf = handle->geomFactory; - if ( 0 == extHandle ) - { - return 0; - } + // The below takes ownership of the passed vector, + // so we must *not* delete it + out = gf->createGeometryCollection(linevec); + out->setSRID(srid); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; + return out; } - try - { - double d = cs->getOrdinate(idx, dim); - *val = d; - - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSPolygonize_full_r(GEOSContextHandle_t extHandle, const Geometry* g, + Geometry** cuts, Geometry** dangles, Geometry** invalid) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -int -GEOSCoordSeq_getX_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 0, val); -} + try { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr; + for(std::size_t i = 0; i < g->getNumGeometries(); ++i) { + plgnzr.add(g->getGeometryN(i)); + } -int -GEOSCoordSeq_getY_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 1, val); -} +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); +#endif + const GeometryFactory* gf = handle->geomFactory; -int -GEOSCoordSeq_getZ_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) -{ - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 2, val); -} + if(cuts) { -int -GEOSCoordSeq_getSize_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, unsigned int *size) -{ - assert(0 != cs); - assert(0 != size); + const std::vector& lines = plgnzr.getCutEdges(); + std::vector* linevec = new std::vector(lines.size()); + for(std::size_t i = 0, n = lines.size(); i < n; ++i) { + (*linevec)[i] = lines[i]->clone().release(); + } + + // The below takes ownership of the passed vector, + // so we must *not* delete it + *cuts = gf->createGeometryCollection(linevec); + } + + if(dangles) { + + const std::vector& lines = plgnzr.getDangles(); + std::vector* linevec = new std::vector(lines.size()); + for(std::size_t i = 0, n = lines.size(); i < n; ++i) { + (*linevec)[i] = lines[i]->clone().release(); + } + + // The below takes ownership of the passed vector, + // so we must *not* delete it + *dangles = gf->createGeometryCollection(linevec); + } + + if(invalid) { + + const std::vector>& lines = plgnzr.getInvalidRingLines(); + std::vector* linevec = new std::vector(lines.size()); + for(std::size_t i = 0, n = lines.size(); i < n; ++i) { + (*linevec)[i] = lines[i]->clone().release(); + } + + // The below takes ownership of the passed vector, + // so we must *not* delete it + *invalid = gf->createGeometryCollection(linevec); + } + + auto polys = plgnzr.getPolygons(); + std::vector* polyvec = new std::vector(polys->size()); + for(std::size_t i = 0; i < polys->size(); ++i) { + (*polyvec)[i] = (*polys)[i].release(); + } + + Geometry* out = gf->createGeometryCollection(polyvec); + out->setSRID(g->getSRID()); + return out; - if ( 0 == extHandle ) - { - return 0; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 0; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSLineMerge_r(GEOSContextHandle_t extHandle, const Geometry* g) { - return 0; - } + if(nullptr == extHandle) { + return 0; + } - try - { - const std::size_t sz = cs->getSize(); - *size = static_cast(sz); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return 0; -} + Geometry* out = 0; -int -GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, unsigned int *dims) -{ - assert(0 != cs); - assert(0 != dims); + try { + using geos::operation::linemerge::LineMerger; + LineMerger lmrgr; + lmrgr.add(g); - if ( 0 == extHandle ) - { - return 0; - } + std::vector* lines = lmrgr.getMergedLineStrings(); + assert(0 != lines); - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } +#if GEOS_DEBUG + handle->NOTICE_MESSAGE("output lines got"); +#endif - try - { - const std::size_t dim = cs->getDimension(); - *dims = static_cast(dim); + std::vector* geoms = new std::vector(lines->size()); + for(std::vector::size_type i = 0; i < lines->size(); ++i) { + (*geoms)[i] = (*lines)[i]; + } + delete lines; + lines = 0; - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + const GeometryFactory* gf = handle->geomFactory; + out = gf->buildGeometry(geoms); + out->setSRID(g->getSRID()); + + // XXX: old version + //out = gf->createGeometryCollection(geoms); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return out; } - catch (...) + Geometry* + GEOSReverse_r(GEOSContextHandle_t extHandle, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != g); - return 0; -} + if(nullptr == extHandle) { + return nullptr; + } -int -GEOSCoordSeq_isCCW_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, char *val) -{ - assert(cs != nullptr); - assert(val != nullptr); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return nullptr; + } - if (extHandle == nullptr) { - return 0; - } + try { + Geometry* g3 = g->reverse().release(); + g3->setSRID(g->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = nullptr; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - try - { - *val = geos::algorithm::CGAlgorithms::isCCW(cs); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return nullptr; } - catch (...) + void* + GEOSGeom_getUserData_r(GEOSContextHandle_t extHandle, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != g); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -void -GEOSCoordSeq_destroy_r(GEOSContextHandle_t extHandle, CoordinateSequence *s) -{ - GEOSContextHandleInternal_t *handle = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - try - { - delete s; + try { + return g->getUserData(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - catch (const std::exception &e) + + int + GEOSGetSRID_r(GEOSContextHandle_t extHandle, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + assert(0 != g); + + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; } - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - if ( 0 == extHandle ) - { - return; + try { + return g->getSRID(); } - - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } -} -const CoordinateSequence * -GEOSGeom_getCoordSeq_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) + const char* GEOSversion() { - return 0; + static char version[256]; + sprintf(version, "%s ", GEOS_CAPI_VERSION); + return version; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + const char* GEOSjtsport() { - return 0; + return GEOS_JTS_PORT; } - try + char + GEOSHasZ_r(GEOSContextHandle_t extHandle, const Geometry* g) { - using geos::geom::Point; + assert(0 != g); - const LineString *ls = dynamic_cast(g); - if ( ls ) - { - return ls->getCoordinatesRO(); + if(nullptr == extHandle) { + return -1; } - const Point *p = dynamic_cast(g); - if ( p ) - { - return p->getCoordinatesRO(); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; } - handle->ERROR_MESSAGE("Geometry must be a Point or LineString"); - return 0; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} + if(g->isEmpty()) { + return false; + } + assert(0 != g->getCoordinate()); -Geometry * -GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return NULL; - } + double az = g->getCoordinate()->z; + //handle->ERROR_MESSAGE("ZCoord: %g", az); - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return static_cast(std::isfinite(az)); } - try - { - const GeometryFactory *gf = handle->geomFactory; - return gf->createPoint(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOS_getWKBOutputDims_r(GEOSContextHandle_t extHandle) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return -1; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } -Geometry * -GEOSGeom_createPoint_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) -{ - if ( 0 == extHandle ) - { - return 0; + return handle->WKBOutputDims; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOS_setWKBOutputDims_r(GEOSContextHandle_t extHandle, int newdims) { - return 0; - } + if(nullptr == extHandle) { + return -1; + } - try - { - const GeometryFactory *gf = handle->geomFactory; - return gf->createPoint(cs); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } - return 0; -} + if(newdims < 2 || newdims > 3) { + handle->ERROR_MESSAGE("WKB output dimensions out of range 2..3"); + } -Geometry * -GEOSGeom_createLinearRing_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) -{ - if ( 0 == extHandle ) - { - return NULL; - } + const int olddims = handle->WKBOutputDims; + handle->WKBOutputDims = newdims; - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return olddims; } - try + int + GEOS_getWKBByteOrder_r(GEOSContextHandle_t extHandle) { - const GeometryFactory *gf = handle->geomFactory; + if(nullptr == extHandle) { + return -1; + } - return gf->createLinearRing(cs); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } + + return handle->WKBByteOrder; } - catch (...) + + int + GEOS_setWKBByteOrder_r(GEOSContextHandle_t extHandle, int byteOrder) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return -1; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } -Geometry * -GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return NULL; - } + const int oldByteOrder = handle->WKBByteOrder; + handle->WKBByteOrder = byteOrder; - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return oldByteOrder; } - try - { - const GeometryFactory *gf = handle->geomFactory; - return gf->createLineString(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + CoordinateSequence* + GEOSCoordSeq_create_r(GEOSContextHandle_t extHandle, unsigned int size, unsigned int dims) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSGeom_createLineString_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + switch (size) { + case 1: + return new geos::geom::FixedSizeCoordinateSequence<1>(dims); + case 2: + return new geos::geom::FixedSizeCoordinateSequence<2>(dims); + default: { + const GeometryFactory *gf = handle->geomFactory; + return gf->getCoordinateSequenceFactory()->create(size, dims).release(); + } + } + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try + int + GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs, + unsigned int idx, unsigned int dim, double val) { - const GeometryFactory *gf = handle->geomFactory; + assert(0 != cs); + if(nullptr == extHandle) { + return 0; + } - return gf->createLineString(cs); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return NULL; -} + try { + cs->setOrdinate(idx, dim, val); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -Geometry * -GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return NULL; + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSCoordSeq_setX_r(GEOSContextHandle_t extHandle, CoordinateSequence* s, unsigned int idx, double val) { - return NULL; + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 0, val); } - try - { - const GeometryFactory *gf = handle->geomFactory; - return gf->createPolygon(); - } - catch (const std::exception &e) + int + GEOSCoordSeq_setY_r(GEOSContextHandle_t extHandle, CoordinateSequence* s, unsigned int idx, double val) { - handle->ERROR_MESSAGE("%s", e.what()); + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 1, val); } - catch (...) + + int + GEOSCoordSeq_setZ_r(GEOSContextHandle_t extHandle, CoordinateSequence* s, unsigned int idx, double val) { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 2, val); } - return NULL; -} + int + GEOSCoordSeq_setXY_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs, unsigned int idx, double x, double y) + { + assert(0 != cs); + if(nullptr == extHandle) { + return 0; + } -Geometry * -GEOSGeom_createPolygon_r(GEOSContextHandle_t extHandle, Geometry *shell, Geometry **holes, unsigned int nholes) -{ - // FIXME: holes must be non-nullptr or may be nullptr? - //assert(0 != holes); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return NULL; - } + try { + cs->setAt({x, y}, idx); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return 0; } - try + int + GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs, unsigned int idx, double x, double y, double z) { - using geos::geom::LinearRing; + assert(0 != cs); + if(nullptr == extHandle) { + return 0; + } - std::vector *vholes = new std::vector(holes, holes + nholes); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - LinearRing *nshell = dynamic_cast(shell); - if ( ! nshell ) - { - handle->ERROR_MESSAGE("Shell is not a LinearRing"); - delete vholes; - return NULL; + try { + cs->setAt({x, y, z}, idx); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - const GeometryFactory *gf = handle->geomFactory; - return gf->createPolygon(nshell, vholes); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return 0; } - catch (...) + + CoordinateSequence* + GEOSCoordSeq_clone_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != cs); - return NULL; -} + if(nullptr == extHandle) { + return NULL; + } -Geometry * -GEOSGeom_clone_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - assert(0 != g); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return NULL; - } + try { + return cs->clone().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try + int + GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, + unsigned int idx, unsigned int dim, double* val) { - return g->clone(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != cs); + assert(0 != val); - return NULL; -} + if(nullptr == extHandle) { + return 0; + } -GEOSGeometry * -GEOSGeom_setPrecision_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, - double gridSize, int flags) -{ - using namespace geos::geom; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - assert(0 != g); + try { + double d = cs->getOrdinate(idx, dim); + *val = d; - if ( 0 == extHandle ) - { - return NULL; - } + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return 0; } - try + int + GEOSCoordSeq_getX_r(GEOSContextHandle_t extHandle, const CoordinateSequence* s, unsigned int idx, double* val) { - const PrecisionModel *pm = g->getPrecisionModel(); - double cursize = pm->isFloating() ? 0 : 1.0/pm->getScale(); - std::unique_ptr newpm; - if ( gridSize ) newpm.reset( new PrecisionModel(1.0/gridSize) ); - else newpm.reset( new PrecisionModel() ); - GeometryFactory::Ptr gf = - GeometryFactory::create( newpm.get(), g->getSRID() ); - Geometry *ret; - if ( gridSize && cursize != gridSize ) - { - // We need to snap the geometry - GeometryPrecisionReducer reducer( *gf ); - reducer.setPointwise( flags & GEOS_PREC_NO_TOPO ); - reducer.setRemoveCollapsedComponents( ! (flags & GEOS_PREC_KEEP_COLLAPSED) ); - ret = reducer.reduce( *g ).release(); - } - else - { - // No need or willing to snap, just change the factory - ret = gf->createGeometry(g); - } - return ret; + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 0, val); } - catch (const std::exception &e) + + int + GEOSCoordSeq_getY_r(GEOSContextHandle_t extHandle, const CoordinateSequence* s, unsigned int idx, double* val) { - handle->ERROR_MESSAGE("%s", e.what()); + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 1, val); } - catch (...) + + int + GEOSCoordSeq_getZ_r(GEOSContextHandle_t extHandle, const CoordinateSequence* s, unsigned int idx, double* val) { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 2, val); } - return NULL; -} + int + GEOSCoordSeq_getXY_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, unsigned int idx, double* x, double* y) + { + assert(0 != cs); + if(nullptr == extHandle) { + return 0; + } -double -GEOSGeom_getPrecision_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g) -{ - using namespace geos::geom; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - assert(0 != g); + try { + auto& c = cs->getAt(idx); + *x = c.x; + *y = c.y; + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return -1; + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, unsigned int idx, double* x, double* y, double* z) { - return -1; - } + assert(0 != cs); + if(nullptr == extHandle) { + return 0; + } - try - { - const PrecisionModel *pm = g->getPrecisionModel(); - double cursize = pm->isFloating() ? 0 : 1.0/pm->getScale(); - return cursize; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return -1; -} + try { + auto& c = cs->getAt(idx); + *x = c.x; + *y = c.y; + *z = c.z; + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -int -GEOSGeom_getDimensions_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSCoordSeq_getSize_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, unsigned int* size) { - return 0; - } + assert(0 != cs); + assert(0 != size); - try - { - return (int) g->getDimension(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -int -GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return 0; - } + try { + const std::size_t sz = cs->getSize(); + *size = static_cast(sz); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try - { - return g->getCoordinateDimension(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, unsigned int* dims) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != cs); + assert(0 != dims); - return 0; -} + if(nullptr == extHandle) { + return 0; + } -int -GEOSGeom_getXMin_r(GEOSContextHandle_t extHandle, const Geometry *g, double *value) -{ - if ( 0 == extHandle ) - { - return 0; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } + + try { + const std::size_t dim = cs->getDimension(); + *dims = static_cast(dim); + + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try + int + GEOSCoordSeq_isCCW_r(GEOSContextHandle_t extHandle, const CoordinateSequence* cs, char* val) { - if (g->isEmpty()) - { + assert(cs != nullptr); + assert(val != nullptr); + + if(extHandle == nullptr) { return 0; } - *value = g->getEnvelopeInternal()->getMinX(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = nullptr; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } + try { + *val = geos::algorithm::Orientation::isCCW(cs); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } - return 0; -} + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -int -GEOSGeom_getXMax_r(GEOSContextHandle_t extHandle, const Geometry *g, double *value) -{ - if ( 0 == extHandle ) - { return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + void + GEOSCoordSeq_destroy_r(GEOSContextHandle_t extHandle, CoordinateSequence* s) { - return 0; + GEOSContextHandleInternal_t* handle = 0; + + try { + delete s; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try + const CoordinateSequence* + GEOSGeom_getCoordSeq_r(GEOSContextHandle_t extHandle, const Geometry* g) { - if (g->isEmpty()) - { + if(nullptr == extHandle) { return 0; } - *value = g->getEnvelopeInternal()->getMaxX(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return 0; -} + try { + using geos::geom::Point; + + const LineString* ls = dynamic_cast(g); + if(ls) { + return ls->getCoordinatesRO(); + } + + const Point* p = dynamic_cast(g); + if(p) { + return p->getCoordinatesRO(); + } + + handle->ERROR_MESSAGE("Geometry must be a Point or LineString"); + return 0; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -int -GEOSGeom_getYMin_r(GEOSContextHandle_t extHandle, const Geometry *g, double *value) -{ - if ( 0 == extHandle ) - { return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t extHandle) { - return 0; + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + const GeometryFactory* gf = handle->geomFactory; + return gf->createPoint().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - try + Geometry* + GEOSGeom_createPoint_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs) { - if (g->isEmpty()) - { + if(nullptr == extHandle) { return 0; } - *value = g->getEnvelopeInternal()->getMinY(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return 0; -} + try { + const GeometryFactory* gf = handle->geomFactory; + return gf->createPoint(cs); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -int -GEOSGeom_getYMax_r(GEOSContextHandle_t extHandle, const Geometry *g, double *value) -{ - if ( 0 == extHandle ) - { return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSGeom_createPointFromXY_r(GEOSContextHandle_t extHandle, double x, double y) { - return 0; - } + if(nullptr == extHandle) { + return 0; + } - try - { - if (g->isEmpty()) - { + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { return 0; } - *value = g->getEnvelopeInternal()->getMaxY(); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + try { + const GeometryFactory* gf = handle->geomFactory; + geos::geom::Coordinate c(x, y); + return gf->createPoint(c); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } - catch (...) + + Geometry* + GEOSGeom_createLinearRing_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSSimplify_r(GEOSContextHandle_t extHandle, const Geometry *g1, double tolerance) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + const GeometryFactory* gf = handle->geomFactory; + + return gf->createLinearRing(cs); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - using namespace geos::simplify; - Geometry::Ptr g(DouglasPeuckerSimplifier::simplify(g1, tolerance)); - return g.release(); - } - catch (const std::exception &e) + Geometry* + GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t extHandle) { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t extHandle, const Geometry *g1, double tolerance) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + const GeometryFactory* gf = handle->geomFactory; + + return gf->createLineString().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - using namespace geos::simplify; - Geometry::Ptr g(TopologyPreservingSimplifier::simplify(g1, tolerance)); - return g.release(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSGeom_createLineString_r(GEOSContextHandle_t extHandle, CoordinateSequence* cs) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + try { + const GeometryFactory* gf = handle->geomFactory; + + return gf->createLineString(cs); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -/* WKT Reader */ -WKTReader * -GEOSWKTReader_create_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + Geometry* + GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t extHandle) { + if(nullptr == extHandle) { + return NULL; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } + + try { + const GeometryFactory* gf = handle->geomFactory; + return gf->createPolygon().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } - try - { - using geos::io::WKTReader; - return new WKTReader((GeometryFactory*)handle->geomFactory); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + Geometry* + GEOSGeom_createPolygon_r(GEOSContextHandle_t extHandle, Geometry* shell, Geometry** holes, unsigned int nholes) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + // FIXME: holes must be non-nullptr or may be nullptr? + //assert(0 != holes); - return NULL; -} + if(nullptr == extHandle) { + return NULL; + } -void -GEOSWKTReader_destroy_r(GEOSContextHandle_t extHandle, WKTReader *reader) -{ - GEOSContextHandleInternal_t *handle = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - try - { - delete reader; + try { + using geos::geom::LinearRing; + + auto vholes = geos::detail::make_unique>(nholes); + + for (size_t i = 0; i < nholes; i++) { + (*vholes)[i] = dynamic_cast(holes[i]); + if ((*vholes)[i] == nullptr) { + handle->ERROR_MESSAGE("Hole is not a LinearRing"); + return NULL; + } + } + + LinearRing* nshell = dynamic_cast(shell); + if(! nshell) { + handle->ERROR_MESSAGE("Shell is not a LinearRing"); + return NULL; + } + const GeometryFactory* gf = handle->geomFactory; + + return gf->createPolygon(nshell, vholes.release()); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - catch (const std::exception &e) + + Geometry* + GEOSGeom_clone_r(GEOSContextHandle_t extHandle, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + assert(0 != g); + + if(nullptr == extHandle) { + return NULL; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return NULL; + } + + try { + return g->clone().release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return NULL; } - catch (...) + + GEOSGeometry* + GEOSGeom_setPrecision_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g, + double gridSize, int flags) { - if ( 0 == extHandle ) - { - return; + using namespace geos::geom; + + assert(0 != g); + + if(nullptr == extHandle) { + return NULL; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return NULL; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} - - -Geometry* -GEOSWKTReader_read_r(GEOSContextHandle_t extHandle, WKTReader *reader, const char *wkt) -{ - assert(0 != reader); + try { + const PrecisionModel* pm = g->getPrecisionModel(); + double cursize = pm->isFloating() ? 0 : 1.0 / pm->getScale(); + std::unique_ptr newpm; + if(gridSize != 0) { + newpm.reset(new PrecisionModel(1.0 / gridSize)); + } + else { + newpm.reset(new PrecisionModel()); + } + GeometryFactory::Ptr gf = + GeometryFactory::create(newpm.get(), g->getSRID()); + Geometry* ret; + if(gridSize != 0 && cursize != gridSize) { + // We need to snap the geometry + GeometryPrecisionReducer reducer(*gf); + reducer.setPointwise(flags & GEOS_PREC_NO_TOPO); + reducer.setRemoveCollapsedComponents(!(flags & GEOS_PREC_KEEP_COLLAPSED)); + ret = reducer.reduce(*g).release(); + } + else { + // No need or willing to snap, just change the factory + ret = gf->createGeometry(g); + } + return ret; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return 0; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + double + GEOSGeom_getPrecision_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g) { - return 0; - } + using namespace geos::geom; - try - { - const std::string wktstring(wkt); - Geometry *g = reader->read(wktstring); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != g); - return 0; -} + if(nullptr == extHandle) { + return -1; + } -/* WKT Writer */ -WKTWriter * -GEOSWKTWriter_create_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return 0; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } + try { + const PrecisionModel* pm = g->getPrecisionModel(); + double cursize = pm->isFloating() ? 0 : 1.0 / pm->getScale(); + return cursize; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - using geos::io::WKTWriter; - return new WKTWriter(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return -1; } - return 0; -} + int + GEOSGeom_getDimensions_r(GEOSContextHandle_t extHandle, const Geometry* g) + { + if(nullptr == extHandle) { + return 0; + } -void -GEOSWKTWriter_destroy_r(GEOSContextHandle_t extHandle, WKTWriter *Writer) -{ + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - GEOSContextHandleInternal_t *handle = 0; + try { + return (int) g->getDimension(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - delete Writer; + return 0; } - catch (const std::exception &e) + + int + GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t extHandle, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; + } + + try { + return g->getCoordinateDimension(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return 0; } - catch (...) + + int + GEOSGeom_getXMin_r(GEOSContextHandle_t extHandle, const Geometry* g, double* value) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} + try { + if(g->isEmpty()) { + return 0; + } + *value = g->getEnvelopeInternal()->getMinX(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -char* -GEOSWKTWriter_write_r(GEOSContextHandle_t extHandle, WKTWriter *writer, const Geometry *geom) -{ - assert(0 != writer); - - if ( 0 == extHandle ) - { - return NULL; + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSGeom_getXMax_r(GEOSContextHandle_t extHandle, const Geometry* g, double* value) { - return NULL; - } + if(nullptr == extHandle) { + return 0; + } - try - { - std::string sgeom(writer->write(geom)); - char *result = gstrdup(sgeom); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - return NULL; -} + try { + if(g->isEmpty()) { + return 0; + } -void -GEOSWKTWriter_setTrim_r(GEOSContextHandle_t extHandle, WKTWriter *writer, char trim) -{ - assert(0 != writer); + *value = g->getEnvelopeInternal()->getMaxX(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return; + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSGeom_getYMin_r(GEOSContextHandle_t extHandle, const Geometry* g, double* value) { - return; - } + if(nullptr == extHandle) { + return 0; + } - writer->setTrim(0 != trim); -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -void -GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t extHandle, WKTWriter *writer, int precision) -{ - assert(0 != writer); + try { + if(g->isEmpty()) { + return 0; + } - if ( 0 == extHandle ) - { - return; + *value = g->getEnvelopeInternal()->getMinY(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSGeom_getYMax_r(GEOSContextHandle_t extHandle, const Geometry* g, double* value) { - return; - } + if(nullptr == extHandle) { + return 0; + } - writer->setRoundingPrecision(precision); -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -void -GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t extHandle, WKTWriter *writer, int dim) -{ - assert(0 != writer); + try { + if(g->isEmpty()) { + return 0; + } - if ( 0 == extHandle ) - { - return; - } + *value = g->getEnvelopeInternal()->getMaxY(); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + return 0; } - try + Geometry* + GEOSSimplify_r(GEOSContextHandle_t extHandle, const Geometry* g1, double tolerance) { - writer->setOutputDimension(dim); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} + if(nullptr == extHandle) { + return NULL; + } -int -GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t extHandle, WKTWriter *writer) -{ - assert(0 != writer); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - if ( 0 == extHandle ) - { - return -1; - } + try { + using namespace geos::simplify; + Geometry::Ptr g3(DouglasPeuckerSimplifier::simplify(g1, tolerance)); + g3->setSRID(g1->getSRID()); + return g3.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return -1; + return NULL; } - int dim = -1; - - try + Geometry* + GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t extHandle, const Geometry* g1, double tolerance) { - dim = writer->getOutputDimension(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return dim; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -void -GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t extHandle, WKTWriter *writer, int useOld3D) -{ - assert(0 != writer); + try { + using namespace geos::simplify; + Geometry::Ptr g3(TopologyPreservingSimplifier::simplify(g1, tolerance)); + g3->setSRID(g1->getSRID()); + return g3.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - if ( 0 == extHandle ) - { - return; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + + /* WKT Reader */ + WKTReader* + GEOSWKTReader_create_r(GEOSContextHandle_t extHandle) { - return; - } + if(nullptr == extHandle) { + return NULL; + } - writer->setOld3D(0 != useOld3D); -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -/* WKB Reader */ -WKBReader * -GEOSWKBReader_create_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + using geos::io::WKTReader; + return new WKTReader((GeometryFactory*)handle->geomFactory); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - using geos::io::WKBReader; - try - { - return new WKBReader(*(GeometryFactory*)handle->geomFactory); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSWKTReader_destroy_r(GEOSContextHandle_t extHandle, WKTReader* reader) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; - return NULL; -} + try { + delete reader; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -void -GEOSWKBReader_destroy_r(GEOSContextHandle_t extHandle, WKBReader *reader) -{ - GEOSContextHandleInternal_t *handle = 0; + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - try - { - delete reader; + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - catch (const std::exception &e) + + + Geometry* + GEOSWKTReader_read_r(GEOSContextHandle_t extHandle, WKTReader* reader, const char* wkt) { - if ( 0 == extHandle ) - { - return; + assert(0 != reader); + + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; + } + + try { + const std::string wktstring(wkt); + return reader->read(wktstring).release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return 0; } - catch (...) + + /* WKT Writer */ + WKTWriter* + GEOSWKTWriter_create_r(GEOSContextHandle_t extHandle) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} - -struct membuf : public std::streambuf -{ - membuf(char* s, std::size_t n) - { - setg(s, s, s + n); - } -}; - -Geometry* -GEOSWKBReader_read_r(GEOSContextHandle_t extHandle, WKBReader *reader, const unsigned char *wkb, size_t size) -{ - assert(0 != reader); - assert(0 != wkb); - - if ( 0 == extHandle ) - { - return 0; - } + try { + using geos::io::WKTWriter; + return new WKTWriter(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - try + void + GEOSWKTWriter_destroy_r(GEOSContextHandle_t extHandle, WKTWriter* Writer) { - //std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! - //std::istringstream is(std::ios_base::binary); - //is.str(wkbstring); - //is.seekg(0, std::ios::beg); // rewind reader pointer - // http://stackoverflow.com/questions/2079912/simpler-way-to-create-a-c-memorystream-from-char-size-t-without-copying-t - membuf mb((char*)wkb, size); - istream is(&mb); + GEOSContextHandleInternal_t* handle = 0; - Geometry *g = reader->read(is); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try { + delete Writer; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } - return 0; -} + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -Geometry* -GEOSWKBReader_readHEX_r(GEOSContextHandle_t extHandle, WKBReader *reader, const unsigned char *hex, size_t size) -{ - assert(0 != reader); - assert(0 != hex); + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - if ( 0 == extHandle ) - { - return 0; + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; - } - try + char* + GEOSWKTWriter_write_r(GEOSContextHandle_t extHandle, WKTWriter* writer, const Geometry* geom) { - std::string hexstring(reinterpret_cast(hex), size); - std::istringstream is(std::ios_base::binary); - is.str(hexstring); - is.seekg(0, std::ios::beg); // rewind reader pointer + assert(0 != writer); - Geometry *g = reader->readHEX(is); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -/* WKB Writer */ -WKBWriter * -GEOSWKBWriter_create_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) - { - return NULL; - } + try { + std::string sgeom(writer->write(geom)); + char* result = gstrdup(sgeom); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return NULL; } - try - { - using geos::io::WKBWriter; - return new WKBWriter(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSWKTWriter_setTrim_r(GEOSContextHandle_t extHandle, WKTWriter* writer, char trim) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return NULL; -} - -void -GEOSWKBWriter_destroy_r(GEOSContextHandle_t extHandle, WKBWriter *Writer) -{ - GEOSContextHandleInternal_t *handle = 0; + assert(0 != writer); - try - { - delete Writer; - } - catch (const std::exception &e) - { - if ( 0 == extHandle ) - { + if(nullptr == extHandle) { return; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { + if(0 == handle->initialized) { return; } - handle->ERROR_MESSAGE("%s", e.what()); + writer->setTrim(0 != trim); } - catch (...) + + void + GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t extHandle, WKTWriter* writer, int precision) { - if ( 0 == extHandle ) - { + assert(0 != writer); + + if(nullptr == extHandle) { return; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { + if(0 == handle->initialized) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); + writer->setRoundingPrecision(precision); } -} + void + GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t extHandle, WKTWriter* writer, int dim) + { + assert(0 != writer); -/* The caller owns the result */ -unsigned char* -GEOSWKBWriter_write_r(GEOSContextHandle_t extHandle, WKBWriter *writer, const Geometry *geom, size_t *size) -{ - assert(0 != writer); - assert(0 != geom); - assert(0 != size); + if(nullptr == extHandle) { + return; + } - if ( 0 == extHandle ) - { - return NULL; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + try { + writer->setOutputDimension(dim); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try + int + GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t extHandle, WKTWriter* writer) { - std::ostringstream os(std::ios_base::binary); - writer->write(*geom, os); + assert(0 != writer); - const std::string& wkbstring = os.str(); - const std::size_t len = wkbstring.length(); + if(nullptr == extHandle) { + return -1; + } - unsigned char *result = NULL; - result = (unsigned char*) malloc(len); - std::memcpy(result, wkbstring.c_str(), len); - *size = len; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return -1; + } -/* The caller owns the result */ -unsigned char* -GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t extHandle, WKBWriter *writer, const Geometry *geom, size_t *size) -{ - assert(0 != writer); - assert(0 != geom); - assert(0 != size); + int dim = -1; - if ( 0 == extHandle ) - { - return NULL; - } + try { + dim = writer->getOutputDimension(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + return dim; } - try + void + GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t extHandle, WKTWriter* writer, int useOld3D) { - std::ostringstream os(std::ios_base::binary); - writer->writeHEX(*geom, os); - std::string wkbstring(os.str()); - const std::size_t len = wkbstring.length(); + assert(0 != writer); - unsigned char *result = NULL; - result = (unsigned char*) malloc(len); - std::memcpy(result, wkbstring.c_str(), len); - *size = len; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -int -GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) -{ - assert(0 != writer); + writer->setOld3D(0 != useOld3D); + } - if ( 0 == extHandle ) + /* WKB Reader */ + WKBReader* + GEOSWKBReader_create_r(GEOSContextHandle_t extHandle) { - return 0; - } + if(nullptr == extHandle) { + return NULL; + } - int ret = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) - { - try - { - ret = writer->getOutputDimension(); + using geos::io::WKBReader; + try { + return new WKBReader(*(GeometryFactory*)handle->geomFactory); } - catch (...) - { + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { handle->ERROR_MESSAGE("Unknown exception thrown"); } - } - - return ret; -} - -void -GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newDimension) -{ - assert(0 != writer); - if ( 0 == extHandle ) - { - return; + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) + void + GEOSWKBReader_destroy_r(GEOSContextHandle_t extHandle, WKBReader* reader) { - try - { - writer->setOutputDimension(newDimension); + GEOSContextHandleInternal_t* handle = 0; + + try { + delete reader; } - catch (const std::exception &e) - { + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + handle->ERROR_MESSAGE("%s", e.what()); } - catch (...) - { + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + handle->ERROR_MESSAGE("Unknown exception thrown"); } } -} -int -GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) -{ - assert(0 != writer); + struct membuf : public std::streambuf { + membuf(char* s, std::size_t n) + { + setg(s, s, s + n); + } + }; - if ( 0 == extHandle ) + Geometry* + GEOSWKBReader_read_r(GEOSContextHandle_t extHandle, WKBReader* reader, const unsigned char* wkb, size_t size) { - return 0; - } + assert(0 != reader); + assert(0 != wkb); - int ret = 0; - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) - { - try - { - ret = writer->getByteOrder(); + if(nullptr == extHandle) { + return 0; } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; } - } - - return ret; -} - -void -GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newByteOrder) -{ - assert(0 != writer); - if ( 0 == extHandle ) - { - return; - } + try { + //std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! + //std::istringstream is(std::ios_base::binary); + //is.str(wkbstring); + //is.seekg(0, std::ios::beg); // rewind reader pointer + + // http://stackoverflow.com/questions/2079912/simpler-way-to-create-a-c-memorystream-from-char-size-t-without-copying-t + membuf mb((char*)wkb, size); + istream is(&mb); - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) - { - try - { - writer->setByteOrder(newByteOrder); + return reader->read(is).release(); } - catch (const std::exception &e) - { + catch(const std::exception& e) { handle->ERROR_MESSAGE("%s", e.what()); } - catch (...) - { + catch(...) { handle->ERROR_MESSAGE("Unknown exception thrown"); } - } -} - -char -GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) -{ - assert(0 != writer); - if ( 0 == extHandle ) - { - return -1; + return 0; } - int ret = -1; - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) + Geometry* + GEOSWKBReader_readHEX_r(GEOSContextHandle_t extHandle, WKBReader* reader, const unsigned char* hex, size_t size) { - try - { - int srid = writer->getIncludeSRID(); - ret = srid; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - } + assert(0 != reader); + assert(0 != hex); - return static_cast(ret); -} + if(nullptr == extHandle) { + return 0; + } -void -GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, const char newIncludeSRID) -{ - assert(0 != writer); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - if ( 0 == extHandle ) - { - return; - } + try { + std::string hexstring(reinterpret_cast(hex), size); + std::istringstream is(std::ios_base::binary); + is.str(hexstring); + is.seekg(0, std::ios::beg); // rewind reader pointer - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 != handle->initialized ) - { - try - { - writer->setIncludeSRID(newIncludeSRID); + return reader->readHEX(is).release(); } - catch (...) - { + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { handle->ERROR_MESSAGE("Unknown exception thrown"); } - } -} - -//----------------------------------------------------------------- -// Prepared Geometry -//----------------------------------------------------------------- - -const geos::geom::prep::PreparedGeometry* -GEOSPrepare_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - if ( 0 == extHandle ) - { - return 0; - } - - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 0; } - const geos::geom::prep::PreparedGeometry* prep = 0; - - try - { - prep = geos::geom::prep::PreparedGeometryFactory::prepare(g); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + /* WKB Writer */ + WKBWriter* + GEOSWKBWriter_create_r(GEOSContextHandle_t extHandle) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return prep; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -void -GEOSPreparedGeom_destroy_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *a) -{ - GEOSContextHandleInternal_t *handle = 0; + try { + using geos::io::WKBWriter; + return new WKBWriter(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - delete a; + return NULL; } - catch (const std::exception &e) + + void + GEOSWKBWriter_destroy_r(GEOSContextHandle_t extHandle, WKBWriter* Writer) { - if ( 0 == extHandle ) - { - return; + GEOSContextHandleInternal_t* handle = 0; + + try { + delete Writer; } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + handle->ERROR_MESSAGE("%s", e.what()); } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - handle->ERROR_MESSAGE("%s", e.what()); + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - catch (...) - { - if ( 0 == extHandle ) - { - return; + + + /* The caller owns the result */ + unsigned char* + GEOSWKBWriter_write_r(GEOSContextHandle_t extHandle, WKBWriter* writer, const Geometry* geom, size_t* size) + { + assert(0 != writer); + assert(0 != geom); + assert(0 != size); + + if(nullptr == extHandle) { + return NULL; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return NULL; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} + try { + std::ostringstream os(std::ios_base::binary); + writer->write(*geom, os); -char -GEOSPreparedContains_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + const std::string& wkbstring = os.str(); + const std::size_t len = wkbstring.length(); - if ( 0 == extHandle ) - { - return 2; + unsigned char* result = NULL; + result = (unsigned char*) malloc(len); + std::memcpy(result, wkbstring.c_str(), len); + *size = len; + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } + /* The caller owns the result */ + unsigned char* + GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t extHandle, WKBWriter* writer, const Geometry* geom, size_t* size) + { + assert(0 != writer); + assert(0 != geom); + assert(0 != size); - try - { - bool result = pg->contains(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -char -GEOSPreparedContainsProperly_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + try { + std::ostringstream os(std::ios_base::binary); + writer->writeHEX(*geom, os); + std::string wkbstring(os.str()); + const std::size_t len = wkbstring.length(); - if ( 0 == extHandle ) - { - return 2; - } + unsigned char* result = NULL; + result = (unsigned char*) malloc(len); + std::memcpy(result, wkbstring.c_str(), len); + *size = len; + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + return NULL; } - try - { - bool result = pg->containsProperly(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + int + GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != writer); - return 2; -} + if(nullptr == extHandle) { + return 0; + } -char -GEOSPreparedCoveredBy_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + int ret = 0; - if ( 0 == extHandle ) - { - return 2; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + ret = writer->getOutputDimension(); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + return ret; } - try - { - bool result = pg->coveredBy(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newDimension) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != writer); - return 2; -} - -char -GEOSPreparedCovers_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + if(nullptr == extHandle) { + return; + } - if ( 0 == extHandle ) - { - return 2; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + writer->setOutputDimension(newDimension); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + int + GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - return 2; - } + assert(0 != writer); - try - { - bool result = pg->covers(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return 2; -} + int ret = 0; -char -GEOSPreparedCrosses_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + ret = writer->getByteOrder(); + } + + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } - if ( 0 == extHandle ) - { - return 2; + return ret; } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) + void + GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newByteOrder) { - return 2; - } + assert(0 != writer); - try - { - bool result = pg->crosses(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + if(nullptr == extHandle) { + return; + } + + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + writer->setByteOrder(newByteOrder); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } } - catch (...) + + char + GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != writer); - return 2; -} + if(nullptr == extHandle) { + return -1; + } -char -GEOSPreparedDisjoint_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + int ret = -1; - if ( 0 == extHandle ) - { - return 2; - } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + int srid = writer->getIncludeSRID(); + ret = srid; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + return static_cast(ret); } - try - { - bool result = pg->disjoint(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, const char newIncludeSRID) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != writer); - return 2; -} - -char -GEOSPreparedIntersects_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + if(nullptr == extHandle) { + return; + } - if ( 0 == extHandle ) - { - return 2; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 != handle->initialized) { + try { + writer->setIncludeSRID(newIncludeSRID); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; - } - try - { - bool result = pg->intersects(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) +//----------------------------------------------------------------- +// Prepared Geometry +//----------------------------------------------------------------- + + const geos::geom::prep::PreparedGeometry* + GEOSPrepare_r(GEOSContextHandle_t extHandle, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return 0; + } - return 2; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -char -GEOSPreparedOverlaps_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + const geos::geom::prep::PreparedGeometry* prep = 0; - if ( 0 == extHandle ) - { - return 2; - } + try { + prep = geos::geom::prep::PreparedGeometryFactory::prepare(g).release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + return prep; } - try - { - bool result = pg->overlaps(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + void + GEOSPreparedGeom_destroy_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry* a) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + GEOSContextHandleInternal_t* handle = 0; - return 2; -} - -char -GEOSPreparedTouches_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + try { + delete a; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - if ( 0 == extHandle ) - { - return 2; - } + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try - { - bool result = pg->touches(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSPreparedContains_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != pg); + assert(0 != g); - return 2; -} + if(nullptr == extHandle) { + return 2; + } -char -GEOSPreparedWithin_r(GEOSContextHandle_t extHandle, - const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) -{ - assert(0 != pg); - assert(0 != g); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - if ( 0 == extHandle ) - { - return 2; - } + try { + bool result = pg->contains(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { return 2; } - try + char + GEOSPreparedContainsProperly_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - bool result = pg->within(g); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + assert(0 != pg); + assert(0 != g); - return 2; -} + if(nullptr == extHandle) { + return 2; + } -//----------------------------------------------------------------- -// STRtree -//----------------------------------------------------------------- + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } -geos::index::strtree::STRtree * -GEOSSTRtree_create_r(GEOSContextHandle_t extHandle, - size_t nodeCapacity) -{ - if ( 0 == extHandle ) - { - return 0; - } + try { + bool result = pg->containsProperly(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 0; + return 2; } - geos::index::strtree::STRtree *tree = 0; - - try - { - tree = new geos::index::strtree::STRtree(nodeCapacity); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) + char + GEOSPreparedCoveredBy_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return tree; -} + assert(0 != pg); + assert(0 != g); -void -GEOSSTRtree_insert_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - void *item) -{ - GEOSContextHandleInternal_t *handle = 0; - assert(tree != 0); - assert(g != 0); + if(nullptr == extHandle) { + return 2; + } - try - { - tree->insert(g->getEnvelopeInternal(), item); - } - catch (const std::exception &e) - { - if ( 0 == extHandle ) - { - return; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; } - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + try { + bool result = pg->coveredBy(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return 2; } - catch (...) + + char + GEOSPreparedCovers_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + assert(0 != pg); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 2; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} - -void -GEOSSTRtree_query_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - GEOSQueryCallback callback, - void *userdata) -{ - GEOSContextHandleInternal_t *handle = 0; - assert(tree != 0); - assert(g != 0); - assert(callback != 0); + try { + bool result = pg->covers(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - CAPI_ItemVisitor visitor(callback, userdata); - tree->query(g->getEnvelopeInternal(), visitor); + return 2; } - catch (const std::exception &e) + + char + GEOSPreparedCrosses_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + assert(0 != pg); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 2; + } + + try { + bool result = pg->crosses(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return 2; } - catch (...) + + char + GEOSPreparedDisjoint_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - if ( 0 == extHandle ) - { - return; + assert(0 != pg); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 2; + } + + try { + bool result = pg->disjoint(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; } -} -const GEOSGeometry * -GEOSSTRtree_nearest_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - const geos::geom::Geometry* geom) -{ - return (const GEOSGeometry*) GEOSSTRtree_nearest_generic_r( extHandle, tree, geom, geom, nullptr, nullptr); -} + char + GEOSPreparedIntersects_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) + { + assert(0 != pg); + assert(0 != g); -const void * -GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - const void* item, - const geos::geom::Geometry* itemEnvelope, - GEOSDistanceCallback distancefn, - void* userdata) -{ - using namespace geos::index::strtree; + if(nullptr == extHandle) { + return 2; + } - GEOSContextHandleInternal_t *handle = 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - struct CustomItemDistance : public ItemDistance { - CustomItemDistance(GEOSDistanceCallback p_distancefn, void* p_userdata) - : m_distancefn(p_distancefn), m_userdata(p_userdata) {} + try { + bool result = pg->intersects(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSDistanceCallback m_distancefn; - void* m_userdata; + return 2; + } - double distance(const ItemBoundable* item1, const ItemBoundable* item2) override { - const void* a = item1->getItem(); - const void* b = item2->getItem(); - double d; + char + GEOSPreparedOverlaps_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) + { + assert(0 != pg); + assert(0 != g); - if (!m_distancefn(a, b, &d, m_userdata)) { - throw std::runtime_error(std::string("Failed to compute distance.")); - } + if(nullptr == extHandle) { + return 2; + } - return d; - } - }; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } - try - { - if (distancefn) { - CustomItemDistance itemDistance(distancefn, userdata); - return tree->nearestNeighbour(itemEnvelope->getEnvelopeInternal(), item, &itemDistance); - } else { - GeometryItemDistance itemDistance = GeometryItemDistance(); - return tree->nearestNeighbour(itemEnvelope->getEnvelopeInternal(), item, &itemDistance); + try { + bool result = pg->overlaps(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } + + return 2; } - catch (const std::exception &e) + + char + GEOSPreparedTouches_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - if ( 0 == extHandle ) - { - return NULL; + assert(0 != pg); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + if(0 == handle->initialized) { + return 2; + } + + try { + bool result = pg->touches(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("%s", e.what()); + return 2; } - catch (...) + + char + GEOSPreparedWithin_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry* pg, const Geometry* g) { - if ( 0 == extHandle ) - { - return NULL; + assert(0 != pg); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return NULL; + if(0 == handle->initialized) { + return 2; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try { + bool result = pg->within(g); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return NULL; -} + return 2; + } -void -GEOSSTRtree_iterate_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - GEOSQueryCallback callback, - void *userdata) -{ - GEOSContextHandleInternal_t *handle = 0; - assert(tree != 0); - assert(callback != 0); +//----------------------------------------------------------------- +// STRtree +//----------------------------------------------------------------- - try - { - CAPI_ItemVisitor visitor(callback, userdata); - tree->iterate(visitor); - } - catch (const std::exception &e) + geos::index::strtree::STRtree* + GEOSSTRtree_create_r(GEOSContextHandle_t extHandle, + size_t nodeCapacity) { - if ( 0 == extHandle ) - { - return; + if(nullptr == extHandle) { + return 0; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 0; } - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - if ( 0 == extHandle ) - { - return; - } + geos::index::strtree::STRtree* tree = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + try { + tree = new geos::index::strtree::STRtree(nodeCapacity); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle->ERROR_MESSAGE("Unknown exception thrown"); + return tree; } -} -char -GEOSSTRtree_remove_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree, - const geos::geom::Geometry *g, - void *item) -{ - assert(0 != tree); - assert(0 != g); + void + GEOSSTRtree_insert_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + void* item) + { + GEOSContextHandleInternal_t* handle = 0; + assert(tree != 0); + assert(g != 0); + + try { + tree->insert(g->getEnvelopeInternal(), item); + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - if ( 0 == extHandle ) - { - return 2; - } + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try - { - bool result = tree->remove(g->getEnvelopeInternal(), item); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + void + GEOSSTRtree_query_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + GEOSQueryCallback callback, + void* userdata) + { + GEOSContextHandleInternal_t* handle = 0; + assert(tree != 0); + assert(g != 0); + assert(callback != 0); + + try { + CAPI_ItemVisitor visitor(callback, userdata); + tree->query(g->getEnvelopeInternal(), visitor); + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - return 2; -} + const GEOSGeometry* + GEOSSTRtree_nearest_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* geom) + { + return (const GEOSGeometry*) GEOSSTRtree_nearest_generic_r(extHandle, tree, geom, geom, nullptr, nullptr); + } + + const void* + GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + const void* item, + const geos::geom::Geometry* itemEnvelope, + GEOSDistanceCallback distancefn, + void* userdata) + { + using namespace geos::index::strtree; + + GEOSContextHandleInternal_t* handle = 0; + + struct CustomItemDistance : public ItemDistance { + CustomItemDistance(GEOSDistanceCallback p_distancefn, void* p_userdata) + : m_distancefn(p_distancefn), m_userdata(p_userdata) {} + + GEOSDistanceCallback m_distancefn; + void* m_userdata; + + double + distance(const ItemBoundable* item1, const ItemBoundable* item2) override + { + const void* a = item1->getItem(); + const void* b = item2->getItem(); + double d; + + if(!m_distancefn(a, b, &d, m_userdata)) { + throw std::runtime_error(std::string("Failed to compute distance.")); + } + + return d; + } + }; + + try { + if(distancefn) { + CustomItemDistance itemDistance(distancefn, userdata); + return tree->nearestNeighbour(itemEnvelope->getEnvelopeInternal(), item, &itemDistance); + } + else { + GeometryItemDistance itemDistance = GeometryItemDistance(); + return tree->nearestNeighbour(itemEnvelope->getEnvelopeInternal(), item, &itemDistance); + } + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return NULL; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -void -GEOSSTRtree_destroy_r(GEOSContextHandle_t extHandle, - geos::index::strtree::STRtree *tree) -{ - GEOSContextHandleInternal_t *handle = 0; + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return NULL; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - try - { - delete tree; - } - catch (const std::exception &e) - { - if ( 0 == extHandle ) - { - return; + handle->ERROR_MESSAGE("Unknown exception thrown"); } - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + return NULL; + } + + void + GEOSSTRtree_iterate_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + GEOSQueryCallback callback, + void* userdata) + { + GEOSContextHandleInternal_t* handle = 0; + assert(tree != 0); + assert(callback != 0); + + try { + CAPI_ItemVisitor visitor(callback, userdata); + tree->iterate(visitor); + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } - handle->ERROR_MESSAGE("%s", e.what()); + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - catch (...) + + char + GEOSSTRtree_remove_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree, + const geos::geom::Geometry* g, + void* item) { - if ( 0 == extHandle ) - { - return; + assert(0 != tree); + assert(0 != g); + + if(nullptr == extHandle) { + return 2; } + GEOSContextHandleInternal_t* handle = 0; handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return; + if(0 == handle->initialized) { + return 2; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } -} + try { + bool result = tree->remove(g->getEnvelopeInternal(), item); + return result; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } -double -GEOSProject_r(GEOSContextHandle_t extHandle, - const Geometry *g, - const Geometry *p) -{ - if ( 0 == extHandle ) return -1.0; - GEOSContextHandleInternal_t *handle = - reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) return -1.0; - - const geos::geom::Point* point = dynamic_cast(p); - if (!point) { - handle->ERROR_MESSAGE("third argument of GEOSProject_r must be Point*"); - return -1.0; - } - - const geos::geom::Coordinate* inputPt = p->getCoordinate(); - - try { - return geos::linearref::LengthIndexedLine(g).project(*inputPt); - } catch (const std::exception &e) { - handle->ERROR_MESSAGE("%s", e.what()); - return -1.0; - } catch (...) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1.0; + return 2; } -} + void + GEOSSTRtree_destroy_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree* tree) + { + GEOSContextHandleInternal_t* handle = 0; -Geometry* -GEOSInterpolate_r(GEOSContextHandle_t extHandle, const Geometry *g, double d) -{ - if ( 0 == extHandle ) return 0; - GEOSContextHandleInternal_t *handle = - reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) return 0; - - try { - geos::linearref::LengthIndexedLine lil(g); - geos::geom::Coordinate coord = lil.extractPoint(d); - const GeometryFactory *gf = handle->geomFactory; - Geometry* point = gf->createPoint(coord); - return point; - } catch (const std::exception &e) { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } catch (...) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } -} + try { + delete tree; + } + catch(const std::exception& e) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + if(nullptr == extHandle) { + return; + } + + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return; + } -double -GEOSProjectNormalized_r(GEOSContextHandle_t extHandle, const Geometry *g, - const Geometry *p) -{ + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } - double length; - GEOSLength_r(extHandle, g, &length); - return GEOSProject_r(extHandle, g, p) / length; -} + double + GEOSProject_r(GEOSContextHandle_t extHandle, + const Geometry* g, + const Geometry* p) + { + if(nullptr == extHandle) { + return -1.0; + } + GEOSContextHandleInternal_t* handle = + reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return -1.0; + } + const geos::geom::Point* point = dynamic_cast(p); + if(!point) { + handle->ERROR_MESSAGE("third argument of GEOSProject_r must be Point*"); + return -1.0; + } -Geometry* -GEOSInterpolateNormalized_r(GEOSContextHandle_t extHandle, const Geometry *g, - double d) -{ - double length; - GEOSLength_r(extHandle, g, &length); - return GEOSInterpolate_r(extHandle, g, d * length); -} + const geos::geom::Coordinate* inputPt = p->getCoordinate(); -GEOSGeometry* -GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t extHandle, - const GEOSGeometry* g) -{ - if ( 0 == extHandle ) return 0; - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) return 0; + try { + return geos::linearref::LengthIndexedLine(g).project(*inputPt); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return -1.0; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return -1.0; + } + } - using namespace geos::geom; - using namespace geos::util; - try + Geometry* + GEOSInterpolate_r(GEOSContextHandle_t extHandle, const Geometry* g, double d) { + if(nullptr == extHandle) { + return 0; + } + GEOSContextHandleInternal_t* handle = + reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return 0; + } + + try { + geos::linearref::LengthIndexedLine lil(g); + geos::geom::Coordinate coord = lil.extractPoint(d); + const GeometryFactory* gf = handle->geomFactory; + Geometry* point = gf->createPoint(coord); + point->setSRID(g->getSRID()); + return point; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 0; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; + } + } - /* 1: extract points */ - std::vector coords; - UniqueCoordinateArrayFilter filter(coords); - g->apply_ro(&filter); - /* 2: for each point, create a geometry and put into a vector */ - std::vector* points = new std::vector(); - points->reserve(coords.size()); - const GeometryFactory* factory = g->getFactory(); - for (std::vector::iterator it=coords.begin(), - itE=coords.end(); - it != itE; ++it) + double + GEOSProjectNormalized_r(GEOSContextHandle_t extHandle, const Geometry* g, + const Geometry* p) { - Geometry* point = factory->createPoint(*(*it)); - points->push_back(point); + + double length; + GEOSLength_r(extHandle, g, &length); + return GEOSProject_r(extHandle, g, p) / length; } - /* 3: create a multipoint */ - return factory->createMultiPoint(points); - } - catch (const std::exception &e) + Geometry* + GEOSInterpolateNormalized_r(GEOSContextHandle_t extHandle, const Geometry* g, + double d) { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; + double length; + GEOSLength_r(extHandle, g, &length); + return GEOSInterpolate_r(extHandle, g, d * length); } - catch (...) + + GEOSGeometry* + GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t extHandle, + const GEOSGeometry* g) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } -} + if(nullptr == extHandle) { + return 0; + } + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return 0; + } -int GEOSOrientationIndex_r(GEOSContextHandle_t extHandle, - double Ax, double Ay, double Bx, double By, double Px, double Py) -{ - GEOSContextHandleInternal_t *handle = 0; + using namespace geos::geom; + using namespace geos::util; - using geos::geom::Coordinate; - using geos::algorithm::CGAlgorithms; + try { - if ( 0 == extHandle ) - { - return 2; - } + /* 1: extract points */ + std::vector coords; + UniqueCoordinateArrayFilter filter(coords); + g->apply_ro(&filter); + + /* 2: for each point, create a geometry and put into a vector */ + std::vector* points = new std::vector(); + points->reserve(coords.size()); + const GeometryFactory* factory = g->getFactory(); + for(std::vector::iterator it = coords.begin(), + itE = coords.end(); + it != itE; ++it) { + Geometry* point = factory->createPoint(*(*it)); + points->push_back(point); + } + + /* 3: create a multipoint */ + Geometry* out = factory->createMultiPoint(points); + out->setSRID(g->getSRID()); + return out; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) - { - return 2; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 0; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; + } } - try - { - Coordinate A(Ax, Ay); - Coordinate B(Bx, By); - Coordinate P(Px, Py); - return CGAlgorithms::orientationIndex(A, B, P); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) + int GEOSOrientationIndex_r(GEOSContextHandle_t extHandle, + double Ax, double Ay, double Bx, double By, double Px, double Py) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } -} + GEOSContextHandleInternal_t* handle = 0; -GEOSGeometry * -GEOSSharedPaths_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g1, const GEOSGeometry* g2) -{ - using namespace geos::operation::sharedpaths; + using geos::geom::Coordinate; + using geos::algorithm::Orientation; - if ( 0 == extHandle ) return 0; - GEOSContextHandleInternal_t *handle = - reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) return 0; + if(nullptr == extHandle) { + return 2; + } - SharedPathsOp::PathList forw, back; - try { - SharedPathsOp::sharedPathsOp(*g1, *g2, forw, back); - } - catch (const std::exception &e) - { - SharedPathsOp::clearEdges(forw); - SharedPathsOp::clearEdges(back); - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - catch (...) - { - SharedPathsOp::clearEdges(forw); - SharedPathsOp::clearEdges(back); - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 2; + } + + try { + Coordinate A(Ax, Ay); + Coordinate B(Bx, By); + Coordinate P(Px, Py); + return Orientation::index(A, B, P); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 2; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; + } } - // Now forw and back have the geoms we want to use to construct - // our output GeometryCollections... + GEOSGeometry* + GEOSSharedPaths_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g1, const GEOSGeometry* g2) + { + using namespace geos::operation::sharedpaths; - const GeometryFactory* factory = g1->getFactory(); - size_t count; + if(nullptr == extHandle) { + return 0; + } + GEOSContextHandleInternal_t* handle = + reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return 0; + } - std::unique_ptr< std::vector > out1( - new std::vector() - ); - count = forw.size(); - out1->reserve(count); - for (size_t i=0; ipush_back(forw[i]); - } - std::unique_ptr out1g ( - factory->createMultiLineString(out1.release()) - ); + SharedPathsOp::PathList forw, back; + try { + SharedPathsOp::sharedPathsOp(*g1, *g2, forw, back); + } + catch(const std::exception& e) { + SharedPathsOp::clearEdges(forw); + SharedPathsOp::clearEdges(back); + handle->ERROR_MESSAGE("%s", e.what()); + return 0; + } + catch(...) { + SharedPathsOp::clearEdges(forw); + SharedPathsOp::clearEdges(back); + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; + } - std::unique_ptr< std::vector > out2( - new std::vector() - ); - count = back.size(); - out2->reserve(count); - for (size_t i=0; ipush_back(back[i]); - } - std::unique_ptr out2g ( - factory->createMultiLineString(out2.release()) - ); + // Now forw and back have the geoms we want to use to construct + // our output GeometryCollections... - std::unique_ptr< std::vector > out( - new std::vector() - ); - out->reserve(2); - out->push_back(out1g.release()); - out->push_back(out2g.release()); + const GeometryFactory* factory = g1->getFactory(); + size_t count; - std::unique_ptr outg ( - factory->createGeometryCollection(out.release()) - ); + std::unique_ptr< std::vector > out1( + new std::vector() + ); + count = forw.size(); + out1->reserve(count); + for(size_t i = 0; i < count; ++i) { + out1->push_back(forw[i]); + } + std::unique_ptr out1g( + factory->createMultiLineString(out1.release()) + ); - return outg.release(); + std::unique_ptr< std::vector > out2( + new std::vector() + ); + count = back.size(); + out2->reserve(count); + for(size_t i = 0; i < count; ++i) { + out2->push_back(back[i]); + } + std::unique_ptr out2g( + factory->createMultiLineString(out2.release()) + ); -} + std::unique_ptr< std::vector > out( + new std::vector() + ); + out->reserve(2); + out->push_back(out1g.release()); + out->push_back(out2g.release()); -GEOSGeometry * -GEOSSnap_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g1, - const GEOSGeometry* g2, double tolerance) -{ - using namespace geos::operation::overlay::snap; + std::unique_ptr outg( + factory->createGeometryCollection(out.release()) + ); - if ( 0 == extHandle ) return 0; - GEOSContextHandleInternal_t *handle = - reinterpret_cast(extHandle); - if ( handle->initialized == 0 ) return 0; + outg->setSRID(g1->getSRID()); + return outg.release(); - try{ - GeometrySnapper snapper( *g1 ); - std::unique_ptr ret = snapper.snapTo(*g2, tolerance); - return ret.release(); } - catch (const std::exception &e) + + GEOSGeometry* + GEOSSnap_r(GEOSContextHandle_t extHandle, const GEOSGeometry* g1, + const GEOSGeometry* g2, double tolerance) { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; + using namespace geos::operation::overlay::snap; + + if(nullptr == extHandle) { + return 0; + } + GEOSContextHandleInternal_t* handle = + reinterpret_cast(extHandle); + if(handle->initialized == 0) { + return 0; + } + + try { + GeometrySnapper snapper(*g1); + std::unique_ptr ret = snapper.snapTo(*g2, tolerance); + ret->setSRID(g1->getSRID()); + return ret.release(); + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + return 0; + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; + } } - catch (...) + + BufferParameters* + GEOSBufferParams_create_r(GEOSContextHandle_t extHandle) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } -} + if(nullptr == extHandle) { + return NULL; + } -BufferParameters * -GEOSBufferParams_create_r(GEOSContextHandle_t extHandle) -{ - if ( 0 == extHandle ) return NULL; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; + try { + BufferParameters* p = new BufferParameters(); + return p; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - BufferParameters *p = new BufferParameters(); - return p; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return 0; } - catch (...) + + void + GEOSBufferParams_destroy_r(GEOSContextHandle_t extHandle, BufferParameters* p) { - handle->ERROR_MESSAGE("Unknown exception thrown"); + (void)extHandle; + delete p; } - return 0; -} + int + GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t extHandle, + GEOSBufferParams* p, int style) + { + if(nullptr == extHandle) { + return 0; + } -void -GEOSBufferParams_destroy_r(GEOSContextHandle_t extHandle, BufferParameters* p) -{ - (void)extHandle; - delete p; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -int -GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t extHandle, - GEOSBufferParams* p, int style) -{ - if ( 0 == extHandle ) return 0; + try { + if(style > BufferParameters::CAP_SQUARE) { + throw IllegalArgumentException("Invalid buffer endCap style"); + } + p->setEndCapStyle(static_cast(style)); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + return 0; + } - try + int + GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t extHandle, + GEOSBufferParams* p, int style) { - if ( style > BufferParameters::CAP_SQUARE ) - { - throw IllegalArgumentException("Invalid buffer endCap style"); + if(nullptr == extHandle) { + return 0; } - p->setEndCapStyle(static_cast(style)); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return 0; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } -int -GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t extHandle, - GEOSBufferParams* p, int style) -{ - if ( 0 == extHandle ) return 0; + try { + if(style > BufferParameters::JOIN_BEVEL) { + throw IllegalArgumentException("Invalid buffer join style"); + } + p->setJoinStyle(static_cast(style)); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + return 0; + } - try + int + GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t extHandle, + GEOSBufferParams* p, double limit) { - if ( style > BufferParameters::JOIN_BEVEL ) { - throw IllegalArgumentException("Invalid buffer join style"); + if(nullptr == extHandle) { + return 0; } - p->setJoinStyle(static_cast(style)); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - - return 0; -} -int -GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t extHandle, - GEOSBufferParams* p, double limit) -{ - if ( 0 == extHandle ) return 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + try { + p->setMitreLimit(limit); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - p->setMitreLimit(limit); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } - return 0; -} + int + GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t extHandle, + GEOSBufferParams* p, int segs) + { + if(nullptr == extHandle) { + return 0; + } -int -GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t extHandle, - GEOSBufferParams* p, int segs) -{ - if ( 0 == extHandle ) return 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + try { + p->setQuadrantSegments(segs); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - p->setQuadrantSegments(segs); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } - return 0; -} + int + GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t extHandle, + GEOSBufferParams* p, int ss) + { + if(nullptr == extHandle) { + return 0; + } -int -GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t extHandle, - GEOSBufferParams* p, int ss) -{ - if ( 0 == extHandle ) return 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + try { + p->setSingleSided((ss != 0)); + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - p->setSingleSided( (ss != 0) ); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } - return 0; -} + Geometry* + GEOSBufferWithParams_r(GEOSContextHandle_t extHandle, const Geometry* g1, const BufferParameters* bp, double width) + { + using geos::operation::buffer::BufferOp; -Geometry * -GEOSBufferWithParams_r(GEOSContextHandle_t extHandle, const Geometry *g1, const BufferParameters* bp, double width) -{ - using geos::operation::buffer::BufferOp; + if(nullptr == extHandle) { + return NULL; + } - if ( 0 == extHandle ) return NULL; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; + try { + BufferOp op(g1, *bp); + Geometry* g3 = op.getResultGeometry(width); + g3->setSRID(g1->getSRID()); + return g3; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try - { - BufferOp op(g1, *bp); - Geometry *g3 = op.getResultGeometry(width); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); + return NULL; } - catch (...) + + Geometry* + GEOSDelaunayTriangulation_r(GEOSContextHandle_t extHandle, const Geometry* g1, double tolerance, int onlyEdges) { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + if(nullptr == extHandle) { + return NULL; + } - return NULL; -} + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } -Geometry * -GEOSDelaunayTriangulation_r(GEOSContextHandle_t extHandle, const Geometry *g1, double tolerance, int onlyEdges) -{ - if ( 0 == extHandle ) return NULL; + using geos::triangulate::DelaunayTriangulationBuilder; - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; + try { + DelaunayTriangulationBuilder builder; + builder.setTolerance(tolerance); + builder.setSites(*g1); + + if(onlyEdges) { + Geometry* out = builder.getEdges(*g1->getFactory()).release(); + out->setSRID(g1->getSRID()); + return out; + } + else { + Geometry* out = builder.getTriangles(*g1->getFactory()).release(); + out->setSRID(g1->getSRID()); + return out; + } - using geos::triangulate::DelaunayTriangulationBuilder; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - try + return NULL; + } + Geometry* + GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const Geometry* g1, const Geometry* env, double tolerance, + int onlyEdges) { - DelaunayTriangulationBuilder builder; - builder.setTolerance(tolerance); - builder.setSites(*g1); + if(nullptr == extHandle) { + return NULL; + } - if ( onlyEdges ) return builder.getEdges( *g1->getFactory() ).release(); - else return builder.getTriangles( *g1->getFactory() ).release(); + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return NULL; + } - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + using geos::triangulate::VoronoiDiagramBuilder; - return NULL; -} -Geometry* -GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *env, double tolerance ,int onlyEdges) -{ - if ( 0 == extHandle ) return NULL; + try { + VoronoiDiagramBuilder builder; + builder.setSites(*g1); + builder.setTolerance(tolerance); + if(env) { + builder.setClipEnvelope(env->getEnvelopeInternal()); + } + if(onlyEdges) { + Geometry* out = builder.getDiagramEdges(*g1->getFactory()).release(); + out->setSRID(g1->getSRID()); + return out; + } + else { + Geometry* out = builder.getDiagram(*g1->getFactory()).release(); + out->setSRID(g1->getSRID()); + return out; + } + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return NULL; - - using geos::triangulate::VoronoiDiagramBuilder; - - try - { - VoronoiDiagramBuilder builder; - builder.setSites(*g1); - builder.setTolerance(tolerance); - if(env) builder.setClipEnvelope(env->getEnvelopeInternal()); - if(onlyEdges) return builder.getDiagramEdges(*g1->getFactory()).release(); - else return builder.getDiagram(*g1->getFactory()).release(); - } - catch(const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch(...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + return NULL; + } - return NULL; -} + int + GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, + double ax0, double ay0, double ax1, double ay1, + double bx0, double by0, double bx1, double by1, + double* cx, double* cy) + { + if(nullptr == extHandle) { + return 0; + } -int -GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, - double ax0, double ay0, double ax1, double ay1, - double bx0, double by0, double bx1, double by1, - double* cx, double* cy) -{ - if ( 0 == extHandle ) return 0; + GEOSContextHandleInternal_t* handle = 0; + handle = reinterpret_cast(extHandle); + if(0 == handle->initialized) { + return 0; + } - GEOSContextHandleInternal_t *handle = 0; - handle = reinterpret_cast(extHandle); - if ( 0 == handle->initialized ) return 0; + try { + geos::geom::LineSegment a(ax0, ay0, ax1, ay1); + geos::geom::LineSegment b(bx0, by0, bx1, by1); + geos::geom::Coordinate isect = a.intersection(b); - try - { - geos::geom::LineSegment a(ax0, ay0, ax1, ay1); - geos::geom::LineSegment b(bx0, by0, bx1, by1); - geos::geom::Coordinate isect; + if(isect.isNull()) { + return -1; + } - bool intersects = a.intersection(b, isect); + *cx = isect.x; + *cy = isect.y; - if (!intersects) - { - return -1; + return 1; + } + catch(const std::exception& e) { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch(...) { + handle->ERROR_MESSAGE("Unknown exception thrown"); } - *cx = isect.x; - *cy = isect.y; - - return 1; - } - catch(const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch(...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); + return 0; } - return 0; -} - } /* extern "C" */ diff -Nru geos-3.7.1/capi/Makefile.in geos-3.8.0/capi/Makefile.in --- geos-3.7.1/capi/Makefile.in 2018-11-29 23:05:16.000000000 +0000 +++ geos-3.8.0/capi/Makefile.in 2019-10-10 17:21:09.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,17 +16,7 @@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -91,6 +81,8 @@ host_triplet = @host@ target_triplet = @target@ subdir = capi +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/geos_c.h.in $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ @@ -106,10 +98,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.h \ - $(top_builddir)/include/geos/platform.h +CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = geos_c.h CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -164,11 +154,9 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include -I$(top_builddir)/include/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libgeos_c_la-geos_c.Plo \ - ./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo +am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) @@ -215,8 +203,6 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/geos_c.h.in \ - $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ @@ -250,6 +236,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -266,9 +253,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTERFACE_AGE = @INTERFACE_AGE@ -INTERFACE_CURRENT = @INTERFACE_CURRENT@ -INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ LD = @LD@ LDFLAGS = @LDFLAGS@ @@ -278,7 +262,6 @@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ @@ -433,13 +416,14 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu capi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu capi/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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) @@ -497,14 +481,8 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeos_c_la-geos_c.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeos_c_la-geos_c.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -620,10 +598,7 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) +distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -696,8 +671,7 @@ mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/libgeos_c_la-geos_c.Plo - -rm -f ./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo + -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -743,8 +717,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libgeos_c_la-geos_c.Plo - -rm -f ./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo + -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -765,9 +738,9 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ + ctags-am 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 \ @@ -781,8 +754,6 @@ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ uninstall-nodist_capiHEADERS -.PRECIOUS: Makefile - dist-local: cp -p $(DIST_SOURCES) Makefile.am Makefile.in $(distdir) diff -Nru geos-3.7.1/ChangeLog geos-3.8.0/ChangeLog --- geos-3.7.1/ChangeLog 2018-11-29 23:35:22.000000000 +0000 +++ geos-3.8.0/ChangeLog 2019-10-10 17:50:13.000000000 +0000 @@ -1,2204 +1,7462 @@ -2018-11-29 Paul Ramsey - - * NEWS, configure.ac: News and version bump for 3.7.1 - -2018-11-19 Daniel Baston +2019-10-10 Paul Ramsey - * NEWS: Add NEWS entry for #919 + * NEWS, Version.txt: Release version numbers and NEWS -2018-11-15 Daniel Baston +2019-10-09 Paul Ramsey - * include/geos/index/strtree/SIRtree.h, - src/index/strtree/SIRtree.cpp, tests/unit/Makefile.am, - tests/unit/index/strtree/SIRtreeTest.cpp: Fix memory leak in SIRtree - Resolves #919 + * README.md: MD edit -2018-11-13 Paul Ramsey - - * tests/xmltester/tests/linemerge.xml: Make XML legal +2019-10-08 Daniel Baston -2018-10-29 Daniel Baston + * tests/xmltester/CMakeLists.txt, tests/xmltester/XMLTester.cpp: + Provide more XML test output on failure - * NEWS: Add NEWS entry for #941 +2019-10-08 Paul Ramsey -2018-10-27 Daniel Baston + * Version.txt: Bump versions after release - * capi/geos_ts_c.cpp: Fix incorrect error return values in CAPI - Fixes #941 +2019-10-08 Paul Ramsey -2018-10-19 Paul Ramsey + * tests/xmltester/Makefile.am: Add new XML tests to autoconf build - * NEWS: Add news item for #56 +2019-10-08 Daniel Baston -2018-10-19 pramsey + * src/operation/union/OverlapUnion.cpp, + tests/xmltester/tests/issue/issue-geos-994.xml: Avoid accessing + pointer after move Fixes #994 - Merge branch '3.7' of johnkharvey/geos into 3.7 Going to merge - and manually add NEWS entry so it's done (tm) +2019-10-07 Paul Ramsey -2018-10-07 Regina Obe + * include/geos/geom/GeometryFactory.h: Random guess at what the + problem is References #994 - * README.md: Clarify build instructions. Patch by Greg Troxel. - Closes #933 +2019-10-04 Sandro Santilli -2018-10-02 John K. Harvey + * include/geos/geom/DefaultCoordinateSequenceFactory.h: Add + gcc-suggested override keywords - * configure.ac, macros/ax_check_compile_flag.m4: 'make check' passes - with autoconf 2.63. +2019-10-03 Paul Ramsey -2018-09-21 Sergey Fedoseev + * Version.txt: Bump version number - * NEWS, src/operation/union/UnaryUnionOp.cpp, - tests/unit/capi/GEOSUnaryUnionTest.cpp, - tests/unit/operation/union/UnaryUnionOpTest.cpp: Fix #928: Fixed - crash in GEOSUnaryUnion() when used with empty linestring. +2019-10-03 Paul Ramsey -2018-09-21 Sergey Fedoseev + * HOWTO_RELEASE, Makefile.am, benchmarks/algorithm/Makefile.am, + benchmarks/capi/Makefile.am, doc/Makefile.am, tools/Makefile.am, + tools/astyle/Makefile.am: Add in CMake artifacts necessary to + build/check in the autotools-generated tarball - * NEWS, src/linearref/LinearLocation.cpp, tests/unit/Makefile.am, - tests/unit/capi/GEOSInterpolateTest.cpp, - tests/unit/linearref/LengthIndexedLineTest.cpp: Fix #926: Fixed - crash in GEOSInterpolate() when used with empty LineString. +2019-10-02 Paul Ramsey -2018-09-21 Daniel Baston + * Version.txt: Bump version post-release - Merge branch '3.7' of https://git.osgeo.org/gitea/geos/geos into - 3.7 +2019-10-02 Paul Ramsey -2018-09-21 Sergey Fedoseev + * HOWTO_RELEASE, Version.txt: RC1 release commit - * NEWS, src/algorithm/CGAlgorithms.cpp, - tests/unit/capi/GEOSCoordSeqTest.cpp: Fix #927 -- Fixed crash in - GEOSCoordSeq_isCCW() when used with empty coordseq. +2019-10-01 Paul Ramsey -2018-09-18 Sergey Fedoseev + * tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Add trimmed down test + case on Voronoi. Curiously, this case blows an exception on + PostGIS, but not in the unit test. References #859 - * capi/geos_c.h.in: Fixed documented return codes of GEOSGeomGetX() - and friends. +2019-09-27 Paul Ramsey -2018-09-10 Regina Obe + * HOWTO_RELEASE: Change directions for tag push - * NEWS, configure.ac: Prepare for 3.7.0 release +2019-09-27 Paul Ramsey -2018-09-03 Regina Obe + * Version.txt: Bump versions - * NEWS, tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Change to - ignore failure in CoordinateArraySequenceFactoryTest. Put back - UniqueCoordinateArrayFilterTest. +2019-09-27 Paul Ramsey -2018-09-03 Regina Obe + * HOWTO_RELEASE: Put tag step after verify step - * NEWS, configure.ac: Prep for 3.7.0rc2 release +2019-09-27 Paul Ramsey -2018-09-03 Regina Obe + * HOWTO_RELEASE: Reorganize release directions - * .gitignore: Add platform.h.disabled to git ignore so doesn't - accidentally get committed again +2019-09-27 Paul Ramsey -2018-09-03 Regina Obe + * HOWTO_RELEASE, Version.txt: Bump to beta version number, update + docs with new versioning file (yay) - * include/geos/platform.h.disabled: Remove accidentally committed - file and add to gitignore +2019-09-27 Paul Ramsey -2018-09-03 Regina Obe + * NEWS: Add news line about extended precision work - * NEWS, include/geos/platform.h.disabled, - tests/unit/capi/GEOSGeomFromWKBTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, - tools/ci/bessie.sh: Take out failing test on FreeBSD/macOS Clang. - References #894 Revert previous change (was wrong test) Will revisit - in 3.8. Put back use of autotools on bessie +2019-09-27 Howard Butler -2018-09-02 Regina Obe + * capi/geos_ts_c.cpp: check for empty extHandle using nullptr + instead of 0 - * tools/ci/bessie.sh: Revise bessies to use cmake +2019-09-27 Howard Butler -2018-09-02 Regina Obe + * doc/example.cpp, + tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, + tests/unit/geom/FixedSizeCoordinateSequenceTest.cpp, + tests/unit/operation/IsSimpleOpTest.cpp: clean up unused variable + warnings - * tests/unit/capi/GEOSGeomFromWKBTest.cpp: Take out failing test on - FreeBSD/macOS Clang. References #894 Will revisit in 3.8 +2019-09-27 Howard Butler -2018-09-02 Regina Obe + * tests/unit/geom/Geometry/normalizeTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: clean + up implicit bool conversion - * tests/unit/capi/GEOSGeomFromWKBTest.cpp: Take out failing test on - FreeBSD/macOS Clang. References #894 Will revisit in 3.8 +2019-09-27 Howard Butler -2018-09-02 Regina Obe + * tests/unit/operation/intersection/RectangleIntersectionTest.cpp: + clean up more implicit bool conversions - * NEWS: Take out failing test on FreeBSD/macOS Clang. References - #894 Will revisit in 3.8 +2019-09-27 Howard Butler -2018-09-02 Regina Obe + * tests/unit/capi/GEOSClipByRectTest.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp, + tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/capi/GEOSGeom_extentTest.cpp, + tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, + tests/unit/capi/GEOSMinimumBoundingCircleTest.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/capi/GEOSVoronoiDiagramTest.cpp: clean up many implicit + bool conversions in the tests - * tests/unit/capi/GEOSGeomFromWKBTest.cpp: Take out failing test on - FreeBSD/macOS Clang. References #894 Will revisit in 3.8 +2019-09-27 Howard Butler -2018-08-27 Regina Obe + * src/operation/union/OverlapUnion.cpp, + src/operation/union/UnaryUnionOp.cpp, + src/triangulate/quadedge/Vertex.cpp: remove unused variables - * NEWS: Clarify reason for sed change. References #317 +2019-09-27 Howard Butler -2018-08-27 Regina Obe + * src/operation/distance/GeometryLocation.cpp: cast type of + INSIDE_AREA to match segIndex - * NEWS, configure.ac: revise sed check for parsing version so works - on all sed per Greg Troxel and Bas Cowenberg. Closes #917 for - 3.7.0 Update NEWS credits +2019-09-27 Howard Butler -2018-08-23 Regina Obe + * src/algorithm/LineIntersector.cpp: intPt is already a member + variable. rename local object to ptInt - * Makefile.am: Add .editorconfig to distribution, references #920 - for geos 3.7.0 +2019-09-27 Daniel Baston -2018-08-19 Regina Obe + * include/geos/geom/Coordinate.inl, + tests/unit/geom/CoordinateTest.cpp, + tests/xmltester/tests/issue/issue-geos-990.xml: Ignore z in + Coordinate::HashCode Including z was inconsistent with the behavior of the equality + operator, and caused equivalent coordinates to be hashed into + different bins. Identified by Raul Marín, debugged by Paul Ramsey. - * NEWS, configure.ac: Prepping for geos 3.7.0rc1 release +2019-09-27 Daniel Baston -2018-08-19 Regina Obe + * NEWS: NEWS updates - * capi/CMakeLists.txt, src/CMakeLists.txt: Allow building C API as - static lib for CMake. References #878 for GEOS 3.7.0, closes - https://github.com/libgeos/geos/pull/102 +2019-09-27 Daniel Baston -2018-08-18 Regina Obe + * tests/xmltester/tests/issue/issue-geos-392.xml: Update expected + result for issue-geos-392 test Bypassing cascaded union of lines produces a different but still + correct result. - * CMakeLists.txt: Revert change in #914 cause breaks travis and - winnie +2019-08-28 Daniel Baston -2018-08-18 Daniel Baston + * tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/operation/geounion/UnaryUnionOpTest.cpp: Update unit + tests to accomodate UnaryUnion optimization. - Change two tests to use GEOSEquals instead of WKT comparison, so + as not to be sensitive to component ordering. - Change two tests to expect that the union of LINESTRING EMPTY is + LINESTRING EMPTY, instead of GEOMETRYCOLLECTION EMPTY. This is + consistent with JTS, as with how other types are handled. - Merge branch 'trac-730' +2019-08-26 Daniel Baston -2018-08-17 Regina Obe + * src/operation/union/UnaryUnionOp.cpp: Do cascaded union of lines + only after standard union fails Improves performance of segment unary union benchmark by 85%. - Merge branch 'master' of https://git.osgeo.org/gitea/geos/geos +2019-08-26 Daniel Baston -2018-08-17 Regina Obe + * src/algorithm/locate/SimplePointInAreaLocator.cpp: Remove + redundant envelope test - * CMakeLists.txt: Take out the C++11 enforcement causing issue with - finite - see #914. Also take out dev from pathc, its already in - there +2019-08-26 Daniel Baston -2018-08-13 Daniel Baston + * benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp: Reduce + dynamic_cast usage in SimplePointInAreaLocator Improves segment unary union perf test by 45%. - * src/index/strtree/AbstractSTRtree.cpp, - tests/unit/capi/GEOSSTRtreeTest.cpp: Avoid segfault when querying - empty tree Closes #730 Closes - https://github.com/libgeos/geos/pull/116 +2019-08-26 Daniel Baston -2018-08-13 Daniel Baston + * benchmarks/algorithm/CMakeLists.txt, + benchmarks/algorithm/UnaryUnionSegmentsPerfTest.cpp: Add benchmark + for unary union of segments - Merge branch 'trac-782' +2019-09-27 dbaston -2018-08-07 Daniel Baston + * : commit bdc41b10bb5f883c3379c4ce09093f5c382aef93 Author: Daniel + Baston Date: Fri Sep 13 22:07:10 2019 -0400 - * src/noding/GeometryNoder.cpp: Avoid losing exception message in - GeometryNoder References #864 +2019-09-27 Daniel Baston -2018-08-07 Daniel Baston + * : commit 76e23a266acf72314ae1c659f8c472ffd95262b4 Author: Paul + Ramsey Date: Thu Sep 26 11:04:10 2019 + -0700 - * include/geos/algorithm/PointLocator.h, - src/algorithm/PointLocator.cpp, - tests/unit/capi/GEOSIntersectsTest.cpp: Fix predicate crash with - empty collection components Fixes #782 Closes - https://github.com/libgeos/geos/pull/114 +2019-09-26 Paul Ramsey -2018-08-06 Kurt Schwehr + * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/Makefile.am, + tests/unit/capi/GEOSMinimumBoundingCircleTest.cpp: Expose + MinimumBoundingCircle to CAPI Closes #735 - Merge branch 'size-empty-849' of goatbar/geos into master +2019-09-12 nila -2018-08-06 Kurt Schwehr + * doc/CMakeLists.txt, doc/check_doxygen_errors.cmake: Add doxygen + error test with CMake - * src/geom/CoordinateArraySequence.cpp, - src/geomgraph/EdgeEndStar.cpp, - src/operation/buffer/SubgraphDepthLocater.cpp, - src/operation/linemerge/LineSequencer.cpp, - src/operation/overlay/LineBuilder.cpp: size() == 0 -> empty() (#849) - clang-tidy: readability-container-size-empty size() == 0 can be - replaced with empty() +2019-09-25 Paul Ramsey - ​https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html + * CMakeLists.txt: Make inlining status message less opaque -2018-08-06 Regina Obe +2019-09-25 Paul Ramsey - * NEWS, tests/perf/Makefile.am, tests/perf/capi/Makefile.am, - tests/perf/operation/Makefile.am, - tests/perf/operation/buffer/Makefile.am, - tests/perf/operation/predicate/Makefile.am: Not all cmake files - included in tar ball. Closes #895 for 3.7.0 + * NEWS: Add NEWS entries -2018-08-06 Regina Obe +2019-09-25 Paul Ramsey - * NEWS, configure.ac: Prep for 3.7.0beta2 release + * CMakeLists.txt: No symlinks on libgeos, only on libgeos_c -2018-08-01 Regina Obe +2019-09-25 Paul Ramsey - * AUTHORS: Update Martin's email address References #898 for GEOS - 3.7 + * capi/CMakeLists.txt: Uncomment the mapping of GEOS_VERSION to + VERSION for geos_c.h generation -2018-08-01 Regina Obe +2019-09-24 Paul Ramsey - * AUTHORS: Update list of Authors and PSC. Reorder things bringing - newer state to top. References #898 for GEOS 3.7 + * CMakeLists.txt, capi/CMakeLists.txt: Harmonize cmake install names + with autotools Make sure geos_c uses capi version numbers -2018-07-30 Daniel Baston +2019-09-23 Daniel Baston - * src/operation/intersection/RectangleIntersection.cpp, - src/operation/intersection/RectangleIntersectionBuilder.cpp, - tests/unit/operation/intersection/RectangleIntersectionTest.cpp: Fix - infinite loop in GEOSClipByRect Fixes #865 Closes - https://github.com/libgeos/geos/pull/110 + * src/operation/union/OverlapUnion.cpp: Catch exception by reference -2018-07-18 Daniel Baston +2019-09-23 Daniel Baston - * include/geos/util/GEOSException.h: Make GEOSException inherit from - std::runtime_error This avoids a bunch of "thrown exception is not - nothrow copy-constructible" warnings from clang-tidy. A description - of the issue is available at + * src/geomgraph/Depth.cpp, src/geomgraph/Label.cpp, + src/geomgraph/Quadrant.cpp, src/geomgraph/TopologyLocation.cpp, + src/geomgraph/index/SegmentIntersector.cpp, src/inlines.cpp, + src/noding/BasicSegmentString.cpp: Fix build for + -DDISABLE_GEOS_INLINE=YES - https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR60-CPP.+Exception+objects+must+be+nothrow+copy+constructible Closes https://github.com/libgeos/geos/pull/107 +2019-09-23 Daniel Baston -2018-07-18 Daniel Baston + * include/geos/geom/Coordinate.h, + include/geos/geomgraph/index/SegmentIntersector.h, + include/geos/geomgraph/index/SegmentIntersector.inl, + include/geos/noding/OrientedCoordinateArray.h: Use array instead of + vector in SegmentIntersector - * include/geos/index/strtree/ItemBoundable.h, - src/index/strtree/ItemBoundable.cpp: Simplify definition of - ItemBoundable destructor +2019-09-23 Daniel Baston -2018-07-17 Daniel Baston + * include/geos/geomgraph/index/Makefile.am, + include/geos/geomgraph/index/SegmentIntersector.h, + include/geos/geomgraph/index/SegmentIntersector.inl, + src/geomgraph/index/SegmentIntersector.cpp, src/inlines.cpp: Inline + short methods of SegmentIntersector - * capi/geos_c.h.in: Fix typos +2019-09-23 Daniel Baston -2018-07-10 Daniel Baston + * include/geos/noding/BasicSegmentString.h, + include/geos/noding/BasicSegmentString.inl, + include/geos/noding/Makefile.am, src/inlines.cpp, + src/noding/BasicSegmentString.cpp: Inline simple methods of + BasicSegmentString - * NEWS: Fix typo in NEWS Patch by Tobias Dressel Closes - https://github.com/libgeos/geos/pull/106 +2019-09-23 Daniel Baston -2018-06-27 Kurt Schwehr + * benchmarks/ClassSizes.cpp, + include/geos/geomgraph/DirectedEdgeStar.h, + src/geomgraph/DirectedEdgeStar.cpp: Avoid heap alloc in + DirectedEdgeStar - Merge branch 'byteordervalues-b74945003-863' of goatbar/geos - into master +2019-09-23 Daniel Baston -2018-06-26 Kurt Schwehr + * include/geos/operation/relate/EdgeEndBundle.h, + src/operation/relate/EdgeEndBundle.cpp, + src/operation/valid/ConsistentAreaTester.cpp: Remove heap alloc in + EdgeEndBundle - Merge branch 'readhex-b4945003-862' of goatbar/geos into master +2019-09-23 Daniel Baston + * src/noding/MCIndexNoder.cpp: Reuse vector between iterations of + MCIndexNoder::intersectChains() -2018-06-25 Regina Obe +2019-09-23 Daniel Baston - * NEWS, configure.ac: 3.7.0beta1 release + * src/geom/LineString.cpp: Optimize + LineString::computeEnvelopeInternal CoordinateSequence can calculate its own envlope faster that we can + through getAt() -2018-06-24 Regina Obe +2019-09-22 Daniel Baston - * Makefile.am: Revise to call git log explicitly with format - suitable for conversion by git2cl. This is needed because jenkins - uses git log format not suitable for git2cl Closes #884 + * include/geos/geomgraph/Depth.h, include/geos/geomgraph/Depth.inl, + include/geos/geomgraph/Makefile.am, src/geomgraph/Depth.cpp, + src/inlines.cpp: Inline small methods of Depth -2018-06-24 Regina Obe +2019-09-22 Daniel Baston - * README.md: Fix bessie badge link. + * include/geos/geom/CoordinateArraySequence.h, + src/geom/CoordinateArraySequence.cpp: Inline CoordinateArraySequence + destructor -2018-06-24 Regina Obe +2019-09-22 Daniel Baston - * README.md, tools/ci/bessie.sh, tools/ci/bessie32.sh: Fix travis - badges, add bessies badges. Add bessies (for FreeBSD 32/64-bit - tests). Closes #891 + * include/geos/geomgraph/Edge.h, + include/geos/index/chain/MonotoneChain.h, src/geomgraph/Edge.cpp, + src/index/chain/MonotoneChain.cpp: Eagerly calculate Envelope in + Edge and MonotoneChain We always end up needing it, so avoid the heap allocation associated + with lazy computation. -2018-06-23 Regina Obe +2019-09-22 Daniel Baston - * NEWS: Add J Smith to credits. Closes #581 + * include/geos/geom/CoordinateSequence.h, + include/geos/geomgraph/Edge.h, src/geom/CoordinateSequence.cpp, + src/geomgraph/Edge.cpp: Optimize Edge Envelope calculation A CoordinateSequence can more efficiently calculate its own + envelope, because it has optimal access to the underlying + coordinates. -2018-06-22 Regina Obe +2019-09-22 Daniel Baston - Merge branch 'add-GEOSGeomGetZ' of darkpanda/geos into master + * include/geos/geom/Envelope.h, include/geos/geom/Envelope.inl, + src/geom/Envelope.cpp: Inline many methods of Envelope -2016-01-19 J Smith +2019-09-22 Daniel Baston - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - include/geos/geom/Point.h, src/geom/Point.cpp, - tests/unit/capi/GEOSLineString_PointTest.cpp: Expose getZ to the - CAPI via GEOSGeomGetZ. + * src/index/chain/MonotoneChainBuilder.cpp: Reduce + CoordinateSequence::getAt calls in MonotoneChainBuilder -2018-06-19 Daniel Baston +2019-09-22 Daniel Baston - * NEWS: Add some entries to NEWS References #889 + * include/geos/geomgraph/Edge.h, src/geomgraph/Edge.cpp: Remove + unused Edge::name -2018-06-15 Regina Obe +2019-09-22 Daniel Baston - * configure.ac: Revise again to strip anything following the version - number. Revised patch from Bas Couwenberg. References #887 + * include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp: Reduce heap + allocations in SimpleMCSweepLineIntersector Improves performance of intersection benchmark by ~7%. -2018-06-15 Regina Obe +2019-09-22 Daniel Baston - * configure.ac: Revise remove pre-release suffix to handle lack of - number, and presense of dev. Closes #887 + * benchmarks/ClassSizes.cpp, + include/geos/geomgraph/index/SweepLineEvent.h, + src/geomgraph/index/SweepLineEvent.cpp: Reduce size of + SweepLineEvent - declare class to be final and remove virtual destructor. This + removes storage for the vtable. - avoid storing trivially computed event type -2018-06-15 Regina Obe +2019-09-22 Daniel Baston - * tools/geos-config.in: Apply updated geos-config patch. Closes #742 + * include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/Boundable.h, + include/geos/index/strtree/ItemBoundable.h, + src/index/strtree/AbstractSTRtree.cpp: Avoid dynamic_cast in STRtree This increases performance of tree operations. The addition of a + isLeaf() method to the Boundable interface isn't a great fit, but + the Boundable interface is really more of a TreeNode interface + anyway. +2019-09-21 Daniel Baston -2018-06-15 Regina Obe + * src/geomgraph/index/MonotoneChainIndexer.cpp: Avoid repeated call + to CoordinateSequence::getSize() - * NEWS: update credits. References #889 +2019-09-21 Daniel Baston -2018-06-14 Regina Obe + * include/geos/geomgraph/Makefile.am, + include/geos/geomgraph/Quadrant.h, + include/geos/geomgraph/Quadrant.inl, src/geomgraph/Quadrant.cpp, + src/inlines.cpp: Inline many methods of Quadrant - Merge branch 'issue742' of cvvergara/geos into master +2019-09-21 Daniel Baston -2018-06-15 Regina Obe + * include/geos/geom/Coordinate.h, include/geos/geom/Coordinate.inl, + include/geos/geom/Envelope.h, include/geos/geomgraph/Edge.h, + include/geos/geomgraph/EdgeList.h, + include/geos/noding/OrientedCoordinateArray.h, + src/geom/Envelope.cpp, src/geomgraph/EdgeList.cpp, + src/noding/OrientedCoordinateArray.cpp: Store + OrientedCoordinateArrays in unordered_map This improves performance by reducing the number of + OrientedCoordinateArray comparisons needed with std::set. - * HOWTO_RELEASE: correct reference to configure.ac in HOWTO_RELEASE +2019-09-21 Daniel Baston + * src/geomgraph/EdgeIntersectionList.cpp: Avoid heap alloc in + EdgeIntersectionList::createSplitEdge -2018-06-15 Regina Obe +2019-09-21 Daniel Baston - * configure.ac: Bump version to 3.7.0beta1dev and correct reference - in HOWTO_RELEASE + * include/geos/geomgraph/EdgeIntersection.h, + include/geos/geomgraph/EdgeIntersectionList.h, + src/geomgraph/EdgeIntersectionList.cpp, + src/operation/relate/EdgeEndBuilder.cpp: Back EdgeIntersectionList + with std::vector This is substantially faster than std::set. We satisfy the + uniqueness and sortedness conditions lazily, before iterating on the + EdgeIntersections. This improves overall performance of the + intersection benchmark by 10-15%. -2018-06-14 Regina Obe +2019-09-20 Daniel Baston - * README.md: correct winnie bot links + * include/geos/geomgraph/EdgeIntersection.h, + include/geos/geomgraph/EdgeIntersectionList.h, + include/geos/operation/relate/EdgeEndBuilder.h, + src/geomgraph/EdgeIntersectionList.cpp, + src/geomgraph/GeometryGraph.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/operation/IsSimpleOp.cpp, + src/operation/relate/EdgeEndBuilder.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNodeGraph.cpp, + src/operation/valid/IsValidOp.cpp: Reduce heap allocs in + EdgeIntersectionList Possibly more performance could be obtained with an unordered_set, + but at least some usages appear to require sorted iteration. -2018-06-14 cvvergara +2019-09-20 Daniel Baston - * doc/Doxyfile.in, macros/ruby.m4, swig/ruby/Makefile.am, - tools/geos-config.in: Applying patches for Closes #742 * - 01-geos-config.patch * Description: Fix library paths. * Author: - Francesco Paolo Lovergine * 02-ruby2.patch * - Description: Update include and libraries paths for Ruby 2.x. * - Fix linking with libruby. * Author: Bas Couwenberg - * 03-disable-docygen-html-timestamp.patch * - Description: Disable HTML timestamps in Doxygen to allow - reproducible builds. * https://wiki.debian.org/ReproducibleBuilds/ - * Author: Bas Couwenberg + * include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/ItemBoundable.h, + src/index/strtree/AbstractNode.cpp, + src/index/strtree/ItemBoundable.cpp, src/index/strtree/Makefile.am: + Inline AbstractNode and ItemBoundable -2018-06-14 Daniel Baston +2019-09-20 Daniel Baston - * README.md: Update Travis badge URLs Now using travis-ci.com, not - travis-ci.org + * include/geos/geomgraph/EdgeEnd.h, src/geomgraph/EdgeEnd.cpp: + Inline EdgeEnd::getCoordinate -2018-06-14 Sandro Santilli +2019-09-20 Daniel Baston - * Makefile.am: Better skip external sources from checking blanks - Patch by Bas Couwenberg Closes #888 + * include/geos/algorithm/InteriorPointArea.h, + include/geos/algorithm/InteriorPointLine.h, + include/geos/algorithm/SimplePointInRing.h, + include/geos/geom/CoordinateSequenceFactory.h, + include/geos/geom/Envelope.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/geomgraph/Depth.h, include/geos/geomgraph/EdgeRing.h, + include/geos/geomgraph/GraphComponent.h, + include/geos/geomgraph/Label.h, + include/geos/geomgraph/TopologyLocation.h, + include/geos/geomgraph/index/MonotoneChainEdge.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/geomgraph/index/SweepLineSegment.h, + include/geos/index/bintree/Interval.h, + include/geos/index/chain/MonotoneChain.h, + include/geos/index/quadtree/Key.h, + include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/STRtree.h, include/geos/io/WKBWriter.h, + include/geos/io/WKTWriter.h, include/geos/io/Writer.h, + include/geos/operation/linemerge/EdgeString.h, + include/geos/operation/overlay/ElevationMatrix.h, + include/geos/operation/overlay/ElevationMatrixCell.h, + include/geos/operation/overlay/LineBuilder.h, + include/geos/operation/overlay/MaximalEdgeRing.h, + include/geos/operation/relate/RelateComputer.h, + include/geos/operation/relate/RelateNode.h, + include/geos/operation/relate/RelateOp.h, + include/geos/operation/valid/ConnectedInteriorTester.h, + include/geos/operation/valid/ConsistentAreaTester.h, + include/geos/planargraph/NodeMap.h, + include/geos/triangulate/VoronoiDiagramBuilder.h, + include/geos/triangulate/quadedge/QuadEdgeLocator.h, + include/geos/triangulate/quadedge/TriangleVisitor.h, + src/algorithm/InteriorPointArea.cpp, + src/algorithm/InteriorPointLine.cpp, + src/algorithm/SimplePointInRing.cpp, + src/geom/CoordinateSequenceFactory.cpp, src/geom/Envelope.cpp, + src/geom/GeometryCollection.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/Makefile.am, + src/geom/MultiLineString.cpp, src/geom/MultiPoint.cpp, + src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/prep/BasicPreparedGeometry.cpp, + src/geom/util/GeometryTransformer.cpp, src/geomgraph/Depth.cpp, + src/geomgraph/EdgeRing.cpp, src/geomgraph/GraphComponent.cpp, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SweepLineEvent.cpp, + src/geomgraph/index/SweepLineSegment.cpp, + src/index/bintree/Interval.cpp, src/index/chain/MonotoneChain.cpp, + src/index/quadtree/Key.cpp, src/index/strtree/AbstractNode.cpp, + src/index/strtree/STRtree.cpp, src/io/WKBWriter.cpp, + src/io/WKTWriter.cpp, src/io/Writer.cpp, + src/operation/linemerge/EdgeString.cpp, + src/operation/overlay/ElevationMatrix.cpp, + src/operation/overlay/ElevationMatrixCell.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/overlay/MaximalEdgeRing.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNode.cpp, + src/operation/relate/RelateOp.cpp, + src/operation/valid/ConnectedInteriorTester.cpp, + src/operation/valid/ConsistentAreaTester.cpp, + src/planargraph/NodeMap.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/Makefile.am, + src/triangulate/quadedge/QuadEdgeLocator.cpp, + src/triangulate/quadedge/TriangleVisitor.cpp: Declare empty + destructors as default in header Destructors declared in separate files cannot be inlined. -2018-06-14 Sandro Santilli +2019-09-20 Daniel Baston - * configure.ac, src/Makefile.am: Strip pre-release suffix from - library name Patch by Bas Couwenberg Closes #887 + * include/geos/geomgraph/Label.inl, + include/geos/geomgraph/Makefile.am, + include/geos/geomgraph/TopologyLocation.inl, + src/geomgraph/Label.cpp, src/geomgraph/TopologyLocation.cpp, + src/inlines.cpp: Inline most methods of TopologyLocation and Label Improves intersection perf test by 3-5%. -2018-06-14 Sandro Santilli +2019-09-20 Howard Butler - * Makefile.am: Distribute README.md Closes #885 + * .azure-pipelines.yml: -DBUILD_SHARED_LIBS=ON for msvc builds in + azp -2018-06-14 Sandro Santilli +2019-09-23 nila - * capi/geos_ts_c.cpp, tests/xmltester/tinyxml/tinyxml.h: Fix - spelling errors Courtesy of Bas Couwenberg Closes #773 + * doc/Doxyfile.in: Enable macro expansion. Enables macro expansion with GEOS_DLL predefined. Addresses issue + with doxygen generation of geom::Location -2018-06-13 Regina Obe +2019-09-20 Paul Ramsey - * .gitlab-ci.yml: don't use docker, backer more or less as it was. - Works on my gitlab fork. references #881 + * : commit 842593ebd97c5c6380421e0f10e08966269cea5e Author: Paul + Ramsey Date: Fri Sep 20 16:07:31 2019 + -0700 -2018-06-12 dbaston +2019-09-20 Daniel Baston - Merge branch 'getbit-b37538186-834' of goatbar/geos into master + * .drone.yml, .vimrc, TODO: Remove unused files +2019-09-20 Paul Ramsey -2018-06-12 Dan Baston + * tests/xmltester/Makefile.am: Log the move of issue 488 xml test - Merge branch 'dbaston-trac-882' +2019-09-20 Paul Ramsey -2018-06-11 Daniel Baston + * include/geos/geom/Location.h: Be explicit about our literals in + enumerations References #867 - * CMakeLists.txt, tests/unit/Makefile.am, - tests/unit/capi/GEOSCAPIDefinesTest.cpp: [CMake] Restore - GEOS_VERSION defines in geos_c.h Fixes #882 Closes - https://github.com/OSGeo/geos/pull/105 +2019-09-20 Paul Ramsey -2018-06-11 Kurt Schwehr + * tests/xmltester/tests/failure/issue-geos-488.xml, + tests/xmltester/tests/issue/issue-geos-488.xml: Fix test case + expected value to match up to results generated now. No longer an + exception, and result passes visual inspection. Finally, Closes + #488 - * src/precision/CommonBits.cpp, - tests/unit/precision/CommonBitsTest.cpp: Fix CommonBits::getBit to - correctly handle i >= 32. Found with UBSan - -fsanitize=shift-exponent via ​https://github.com/paulsmith/gogeos - https://trac.osgeo.org/geos/ticket/834 Credit to Han Shen at - Google. +2019-09-20 Paul Ramsey -2018-06-11 Kurt Schwehr + * CMakeLists.txt, include/geos/geom/Geometry.h, + include/geos/geom/Location.h, + include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/profiler.h, src/operation/overlay/PolygonBuilder.cpp, + src/operation/polygonize/HoleAssigner.cpp, + src/operation/polygonize/Polygonizer.cpp, + src/operation/union/OverlapUnion.cpp: Fix MSVC 2017 compilation, + from @hobu. References #975 - * src/io/WKBReader.cpp: WKBReader::readHEX: Fix checking of - char_traits::eof of istream Additional changes: - Factored - out the switch statements into HexToUChar - Localize vars - Added - const Fixes https://trac.osgeo.org/geos/ticket/862 +2019-09-19 Sandro Santilli -2018-06-11 Kurt Schwehr + * INSTALL, README.md: Move build section from README.md to INSTALL - * src/io/ByteOrderValues.cpp: Fix building with - DEBUG_BYTEORDER_VALUES=1 in ByteOrderValues.cpp Add missing - includes and missing std:: Fixes #863 +2019-09-19 Sandro Santilli -2018-06-11 Regina Obe + * tests/unit/precision/CommonBitsTest.cpp: Fix signed==unsigned + compiler warning - * .gitlab-ci.yml: oops change script to geos specific not PostGIS - specific references #881 +2019-09-19 Sandro Santilli -2018-06-11 Regina Obe + * tests/unit/Makefile.am: Update list of unit tests after renames I took the chance to also order them by name. The list was obtained + by finding all files ending with 'Test.cpp' - * .gitlab-ci.yml: commit - https://gitlab.com/postgis/postgis/merge_requests/1 references #881 +2019-09-19 Sandro Santilli + * src/operation/union/OverlapUnion.cpp: Reorder members to fix + initialization order warning issues by GCC -2018-06-09 Regina Obe +2019-09-18 Daniel Baston - * .gitlab-ci.yml: break out install into separate sections, in - attempt to resolve #881 + * tests/unit/CMakeLists.txt: Fix CMake inference of test suite name + from file name -2018-06-09 Regina Obe +2019-09-18 Daniel Baston - * .gitlab-ci.yml: Get rid of first line comment in gitlab script, in - attempt to resolve #881 + * tests/unit/CMakeLists.txt, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, + tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSBuildArea.cpp, + tests/unit/capi/GEOSBuildAreaTest.cpp, + tests/unit/capi/GEOSCAPIDefinesTest.cpp, + tests/unit/capi/GEOSGeom_create.cpp, + tests/unit/capi/GEOSGeom_createCollection.cpp, + tests/unit/capi/GEOSGeom_createCollectionTest.cpp, + tests/unit/capi/GEOSGeom_createTest.cpp, + tests/unit/capi/GEOSGeom_extentTest.cpp, + tests/unit/capi/GEOSLineString_PointTest.cpp, + tests/unit/capi/GEOSMakeValid.cpp, + tests/unit/capi/GEOSMakeValidTest.cpp, + tests/unit/capi/GEOSMinimumRectangleTest.cpp, + tests/unit/capi/GEOSOrientationIndex.cpp, + tests/unit/capi/GEOSOrientationIndexTest.cpp, + tests/unit/geom/Geometry/clone.cpp, + tests/unit/geom/Geometry/cloneTest.cpp, + tests/unit/geom/Geometry/normalize.cpp, + tests/unit/geom/Geometry/normalizeTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/noding/OrientedCoordinateArray.cpp, + tests/unit/noding/OrientedCoordinateArrayTest.cpp, + tests/unit/operation/geounion/CascadedPolygonUnionTest.cpp, + tests/unit/operation/geounion/CoverageUnionTest.cpp, + tests/unit/operation/geounion/UnaryUnionOpTest.cpp, + tests/unit/operation/overlay/OverlayOpUnionTest.cpp, + tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/CoverageUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp, + tests/unit/operation/valid/IsValidOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp: Standardize test file + naming Test file names should end in "Test.cpp" Test suite names should + match test file names -2018-06-09 Regina Obe +2019-09-18 Daniel Baston - * configure.ac: Revert interface increment, was already incremented - after geos 3.6 release + * tests/unit/geos_unit.cpp: Make geos_unit return 1 when called with + non-existent test name -2018-06-09 Regina Obe +2019-09-18 Paul Ramsey - Merge branch '3.7.0alpha' of robe/geos into master + * : commit ba98e904ffaa1d7baffa0326de54fd19d9096f12 Author: Paul + Ramsey Date: Wed Sep 18 17:39:33 2019 + -0700 -2018-06-08 Regina Obe +2019-09-18 Daniel Baston - Merge branch '3.7.0alpha' of - https://git.osgeo.org/gitea/robe/geos into 3.7.0alpha + * include/geos/operation/relate/RelateNodeGraph.h, + src/operation/overlay/LineBuilder.cpp, + src/operation/overlay/PointBuilder.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNodeGraph.cpp, + src/operation/valid/ConsistentAreaTester.cpp: Simplify access to + NodeMap Using "auto" removes boilerplate and makes it easier to try + different backing containers for NodeMap. I tried unordered_map but + did not see a performance benefit. -2018-06-08 Regina Obe +2019-09-18 Daniel Baston - * NEWS, configure.ac: Flip to 3.7.0alpha + * include/geos/algorithm/MinimumBoundingCircle.h, + src/algorithm/MinimumBoundingCircle.cpp: Return unique_ptr from + MinimumBoundingCircle -2018-06-08 Raul Marin +2019-09-18 Daniel Baston - * configure.ac: Drop unavailable flags with clang during - configuration + * src/algorithm/ConvexHull.cpp: Minor simplification in ConvexHull -2018-06-08 Daniel Baston +2019-09-18 Daniel Baston - * src/geom/GeometryCollection.cpp: Indentation change Fixes #877 + * src/operation/overlay/validate/FuzzyPointLocator.cpp: Simplify + FuzzyPointLocator -2018-06-08 Regina Obe +2019-09-18 Daniel Baston - * NEWS, configure.ac: Flip to 3.7.0alpha + * src/geom/util/GeometryTransformer.cpp: Use simpler GeometryFactory + methods in GeometryTransformer -2018-05-29 Daniel Baston +2019-09-18 Daniel Baston - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - tests/unit/capi/GEOSSegmentIntersectionTest.cpp: Add - GEOSSegmentIntersection to CAPI Closes #873 Closes - https://github.com/OSGeo/geos/pull/101 + * include/geos/geom/GeometryFactory.h, src/geom/GeometryFactory.cpp: + Add GeometryFactory::buildGeometry signature and simplify + implementations -2018-06-01 Daniel Baston +2019-09-18 Daniel Baston - Merge branch 'reverse-capi' + * src/geom/util/CoordinateOperation.cpp: Use simpler GeometryFactory + methods in CoordinateOperation -2018-05-29 Daniel Baston +2019-09-18 Daniel Baston - * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - include/geos/geom/Geometry.h, - include/geos/geom/GeometryCollection.h, - include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, - include/geos/geom/MultiLineString.h, - include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, - include/geos/geom/Point.h, include/geos/geom/Polygon.h, - src/geom/GeometryCollection.cpp, src/geom/LineString.cpp, - src/geom/LinearRing.cpp, src/geom/MultiLineString.cpp, - src/geom/MultiPolygon.cpp, src/geom/Polygon.cpp, - tests/unit/Makefile.am, tests/unit/capi/GEOSReverseTest.cpp: Add - GEOSReverse to CAPI Closes #872 Closes - https://github.com/OSGeo/geos/pull/100 + * src/io/WKBReader.cpp: Use simpler GeometryFactory methods in + WKBReader -2018-05-31 dbaston +2019-09-18 Daniel Baston - Merge branch 'trac-874' of dbaston/geos into master + * src/operation/polygonize/BuildArea.cpp: Avoid vector heap alloc in + BuildArea -2018-05-30 Daniel Baston +2019-09-18 Paul Ramsey - * capi/geos_ts_c.cpp: Resolve memory leak in GEOSSTRtree_nearest_r - Closes #874 + * src/precision/CommonBits.cpp: Allow noop zeroing -2018-05-30 Daniel Baston +2019-09-18 Paul Ramsey - * NEWS, tests/unit/capi/GEOSContainsTest.cpp, - tests/unit/capi/GEOSPointOnSurfaceTest.cpp, - tests/unit/capi/GEOSPreparedGeometryTest.cpp, - tests/unit/geom/PolygonTest.cpp: Fix memory leaks in unit tests + * src/precision/CommonBits.cpp, + tests/unit/precision/CommonBitsTest.cpp: Improve the bit-shifting + logic with good types and so on Even Roualt, Kurt Schwehr References + #869 -2018-05-29 Dan Baston +2019-09-18 Sandro Santilli - * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - tests/unit/Makefile.am, tests/unit/capi/GEOSGeom_extentTest.cpp: Add - GEOSGeom_getXMin and friends Closes #871 Closes - https://github.com/OSGeo/geos/pull/99 + * Version.txt: Fix library version broken with 477029603 -2018-05-30 dbaston +2019-09-18 Sandro Santilli - Merge branch 'coordseq-isccw' of dbaston/geos into master + * NEWS, src/geom/GeometryFactory.cpp: Allocate default + geometryfactory on the stack Makes valgrind happier. Closes #714 Thanks Sandro Mani -2018-05-29 Dan Baston +2019-09-18 Sandro Santilli - * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - tests/unit/capi/GEOSCoordSeqTest.cpp: Add GEOSCoordSeq_isCCW Closes - #871 Closes https://github.com/OSGeo/geos/pull/98 + * .drone-1.0.yml: [drone] Add valgrindcheck call to drone-ci -2018-03-28 Regina Obe +2019-09-18 Sandro Santilli - Merge branch 'fix_warning_unstable_cpp_api_cmake' of - rouault/geos into master + * include/geos/geom/FixedSizeCoordinateSequence.h: Add GCC-suggested + "override" directives in new class -2018-03-28 Even Rouault +2019-09-17 Daniel Baston - * CMakeLists.txt: CMakeLists.txt: define -DUSE_UNSTABLE_GEOS_CPP_API - to avoid compilation warnings + * src/noding/GeometryNoder.cpp: Avoid heap alloc in + GeometryNoder::toGeometry -2018-02-05 robe +2019-09-17 Daniel Baston - Merge branch 't-856' of cvvergara/geos into master + * src/geom/GeometryCollection.cpp: Avoid heap alloc in + GeometryCollection::reverse -2018-02-05 robe +2019-09-17 Daniel Baston - Merge branch 't-852' of cvvergara/geos into master + * src/geom/MultiLineString.cpp, src/geom/Point.cpp: Use empty geom + constructor in getBoundary methods -2018-02-05 cvvergara +2019-09-17 Daniel Baston - * tests/xmltester/tinyxml/tinyxmlparser.cpp: Suppressing FALLTHRUGH - warning on g++11 when using gcc-7 closes #856 + * src/io/WKTReader.cpp: Use empty geometry constructors in WKTReader -2018-01-22 cvvergara +2019-09-17 Daniel Baston - * include/geos/geom/BinaryOp.h, - tests/unit/capi/GEOSGeom_createCollection.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/GeometryComponentFilterTest.cpp, - tests/unit/geom/GeometryFilterTest.cpp: fixing conversion warnings - closes #852 + * src/geom/util/GeometryEditor.cpp: Simplify GeometryFactory usage + in GeometryEditor -2018-01-20 robe +2019-09-17 Daniel Baston - Merge branch 'fixing-warning' of cvvergara/geos into master + * src/geom/util/GeometryCombiner.cpp: Use empty geometry constructor + in GeometryCombiner -2018-01-20 robe +2019-09-17 Daniel Baston - Merge branch 'ticket853-from-master' of cvvergara/geos into - master + * : commit 01f78df32cf6118533ce177b5cf8b6539ec66fe0 Author: Daniel + Baston Date: Tue Sep 17 21:36:08 2019 -0400 -2018-01-20 cvvergara +2019-09-17 Daniel Baston - * include/geos/platform.h.cmake: Updating platform.h.cmake Close - #853 + * include/geos/geom/GeometryFactory.h: Simplify + GeometryFactory::buildGeometry -2018-01-13 cvvergara +2019-09-17 Daniel Baston - * include/geos/algorithm/ConvexHull.inl, - include/geos/algorithm/RayCrossingCounter.h, - include/geos/algorithm/distance/DiscreteFrechetDistance.h, - include/geos/algorithm/distance/DiscreteHausdorffDistance.h, - include/geos/algorithm/locate/IndexedPointInAreaLocator.h, - include/geos/geom/prep/PreparedLineStringIntersects.h, - include/geos/geom/prep/PreparedPolygonPredicate.h, - include/geos/geom/util/ComponentCoordinateExtracter.h, - include/geos/geom/util/GeometryCombiner.h, - include/geos/geom/util/GeometryExtracter.h, - include/geos/geom/util/GeometryTransformer.h, - include/geos/geom/util/LinearComponentExtracter.h, - include/geos/geom/util/PointExtracter.h, - include/geos/geom/util/PolygonExtracter.h, - include/geos/geomgraph/GeometryGraph.h, - include/geos/geomgraph/NodeMap.h, - include/geos/index/chain/MonotoneChain.h, - include/geos/io/StringTokenizer.h, include/geos/io/WKBReader.h, - include/geos/linearref/LinearIterator.h, - include/geos/noding/FastNodingValidator.h, - include/geos/noding/IntersectionAdder.h, - include/geos/noding/IntersectionFinderAdder.h, - include/geos/noding/MCIndexNoder.h, - include/geos/noding/MCIndexSegmentSetMutualIntersector.h, - include/geos/noding/NodingValidator.h, - include/geos/noding/ScaledNoder.h, - include/geos/noding/SegmentNode.h, - include/geos/noding/SegmentNodeList.h, - include/geos/noding/SegmentString.h, - include/geos/noding/SingleInteriorIntersectionFinder.h, - include/geos/noding/snapround/HotPixel.h, - include/geos/noding/snapround/MCIndexPointSnapper.h, - include/geos/noding/snapround/MCIndexSnapRounder.h, - include/geos/noding/snapround/SimpleSnapRounder.h, - include/geos/operation/buffer/BufferBuilder.h, - include/geos/operation/buffer/BufferInputLineSimplifier.h, - include/geos/operation/buffer/OffsetCurveBuilder.h, - include/geos/operation/buffer/OffsetCurveSetBuilder.h, - include/geos/operation/overlay/ElevationMatrix.h, - include/geos/operation/overlay/snap/GeometrySnapper.h, - include/geos/operation/overlay/snap/LineStringSnapper.h, - include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, - include/geos/operation/overlay/snap/SnapOverlayOp.h, - include/geos/operation/overlay/validate/FuzzyPointLocator.h, - include/geos/operation/overlay/validate/OffsetPointGenerator.h, - include/geos/operation/overlay/validate/OverlayResultValidator.h, - include/geos/operation/predicate/RectangleContains.h, - include/geos/operation/predicate/RectangleIntersects.h, - include/geos/operation/sharedpaths/SharedPathsOp.h, - include/geos/operation/valid/ConnectedInteriorTester.h, - include/geos/planargraph/Subgraph.h, - include/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, - include/geos/simplify/DouglasPeuckerLineSimplifier.h, - include/geos/util/UniqueCoordinateArrayFilter.h, - src/noding/ScaledNoder.cpp, - src/noding/snapround/MCIndexPointSnapper.cpp, - src/operation/overlay/OverlayOp.cpp, - src/operation/predicate/RectangleIntersects.cpp, - src/simplify/TopologyPreservingSimplifier.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/IntersectionMatrixTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/PolygonTest.cpp, - tests/unit/operation/buffer/BufferBuilderTest.cpp, - tests/unit/operation/buffer/BufferOpTest.cpp, - tests/unit/operation/buffer/BufferParametersTest.cpp, - tests/unit/operation/linemerge/LineMergerTest.cpp, - tests/unit/operation/linemerge/LineSequencerTest.cpp, - tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Explicitly - dissallow copy & assignment using c++11 syntax + * include/geos/geom/GeometryFactory.h: Simplify + GeometryFactory::buildGeometry -2018-01-13 Sandro Santilli +2019-09-15 Daniel Baston - * src/geom/Polygon.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, - src/io/WKTWriter.cpp, src/operation/valid/IsValidOp.cpp: Fix - -Wmisleading-indentation warnings + * include/geos/geomgraph/EdgeRing.h, src/geom/LinearRing.cpp, + src/geom/Polygon.cpp, src/geomgraph/EdgeRing.cpp: Store + GeometryGraph EdgeRing rings using unique_ptr Clarifies ownership -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * include/geos/noding/SegmentIntersectionDetector.h: Remove - Wignored-qualifiers warning from SegmentIntersectionDetector.h + * src/geom/util/SineStarFactory.cpp: Avoid heap-allocating + Coordinate vectors in SineStarFactory -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * include/geos/geom/BinaryOp.h, - include/geos/noding/BasicSegmentString.h: Remove conversion warning - from include files modified: include/geos/geom/BinaryOp.h - modified: include/geos/noding/BasicSegmentString.h + * doc/example.cpp, include/geos/util/GeometricShapeFactory.h, + src/util/GeometricShapeFactory.cpp: Update GeometricShapeFactory - return unique_ptr for generated objects - avoid heap-allocating Coordinate vectors -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/simplify/TaggedLineString.cpp, - src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Remove conversion - warning from src/simplify and src/triangulate directories - modified: src/simplify/TaggedLineString.cpp modified: - src/triangulate/quadedge/QuadEdgeSubdivision.cpp + * capi/geos_ts_c.cpp, + include/geos/operation/polygonize/Polygonizer.h, + src/operation/polygonize/Polygonizer.cpp: Store Polygonizer invalid + ring lines as unique_ptr -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/precision/PrecisionReducerCoordinateOperation.cpp, - src/precision/SimpleGeometryPrecisionReducer.cpp: Remove conversion - warning from src/precision directory modified: - src/precision/PrecisionReducerCoordinateOperation.cpp - modified: src/precision/SimpleGeometryPrecisionReducer.cpp + * include/geos/operation/polygonize/EdgeRing.h, + src/operation/polygonize/EdgeRing.cpp: Store polygonize EdgeRing + holes as unique_ptr Avoids leak in case of exception -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/operation/distance/DistanceOp.cpp, - src/operation/intersection/RectangleIntersection.cpp, - src/operation/intersection/RectangleIntersectionBuilder.cpp, - src/operation/linemerge/LineMerger.cpp, - src/operation/linemerge/LineSequencer.cpp, - src/operation/overlay/OverlayOp.cpp, - src/operation/predicate/RectangleContains.cpp, - src/operation/valid/IsValidOp.cpp: Remove conversion warning from - src/operation directory modified: - src/operation/distance/DistanceOp.cpp modified: - src/operation/intersection/RectangleIntersection.cpp - modified: - src/operation/intersection/RectangleIntersectionBuilder.cpp - modified: src/operation/linemerge/LineMerger.cpp modified: - src/operation/linemerge/LineSequencer.cpp modified: - src/operation/overlay/OverlayOp.cpp modified: - src/operation/predicate/RectangleContains.cpp modified: - src/operation/valid/IsValidOp.cpp + * src/operation/buffer/BufferBuilder.cpp: Simplify + BufferBuilder::createEmptyResultGeometry() Use empty polygon factory function. -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/operation/buffer/OffsetCurveBuilder.cpp, - src/operation/buffer/OffsetCurveSetBuilder.cpp, - src/operation/buffer/SubgraphDepthLocater.cpp, - src/operation/polygonize/Polygonizer.cpp: Remove conversion warning - from src/operation/buffer directory modified: - src/operation/buffer/OffsetCurveBuilder.cpp modified: - src/operation/buffer/OffsetCurveSetBuilder.cpp modified: - src/operation/buffer/SubgraphDepthLocater.cpp + * benchmarks/operation/predicate/RectangleIntersectsPerfTest.cpp, + include/geos/geom/GeometryFactory.h, src/geom/GeometryFactory.cpp: + Return unique_ptr from Envelope->Geometry conversion -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/noding/GeometryNoder.cpp, src/noding/IteratedNoder.cpp, - src/noding/MCIndexNoder.cpp, - src/noding/MCIndexSegmentSetMutualIntersector.cpp, - src/noding/NodingValidator.cpp, - src/noding/OrientedCoordinateArray.cpp, - src/noding/SegmentNodeList.cpp, src/noding/SimpleNoder.cpp, - src/noding/snapround/HotPixel.cpp, - src/noding/snapround/MCIndexSnapRounder.cpp, - src/noding/snapround/SimpleSnapRounder.cpp: Remove conversion - warning from src/noding directory modified: - src/noding/GeometryNoder.cpp modified: - src/noding/IteratedNoder.cpp modified: - src/noding/MCIndexNoder.cpp modified: - src/noding/MCIndexSegmentSetMutualIntersector.cpp modified: - src/noding/NodingValidator.cpp modified: - src/noding/OrientedCoordinateArray.cpp modified: - src/noding/SegmentNodeList.cpp modified: - src/noding/SimpleNoder.cpp modified: - src/noding/snapround/HotPixel.cpp modified: - src/noding/snapround/MCIndexSnapRounder.cpp modified: - src/noding/snapround/SimpleSnapRounder.cpp + * include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Handle triangle + coords with unique_ptr in QuadEdgeSubdivsion -2018-01-12 cvvergara +2019-09-17 Paul Ramsey - * src/linearref/ExtractLineByLocation.cpp, - src/linearref/LinearIterator.cpp, src/linearref/LinearLocation.cpp, - src/linearref/LocationIndexOfLine.cpp: Remove conversion warning - from src/linearref directory modified: - src/linearref/ExtractLineByLocation.cpp modified: - src/linearref/LinearIterator.cpp modified: - src/linearref/LinearLocation.cpp modified: - src/linearref/LocationIndexOfLine.cpp + * src/precision/CommonBits.cpp: Handle nbits > 63 References #869 -2018-01-12 cvvergara +2019-09-16 Daniel Baston - * src/io/WKBReader.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, - src/io/WKTWriter.cpp: Remove conversion warning from src/io - directory modified: src/io/WKBReader.cpp modified: - src/io/WKBWriter.cpp modified: src/io/WKTReader.cpp - modified: src/io/WKTWriter.cpp + * benchmarks/capi/CMakeLists.txt, + benchmarks/capi/IntersectionPerfTest.cpp: Add overlay perf test -2018-01-12 cvvergara +2019-09-16 Paul Ramsey - * src/index/chain/MonotoneChain.cpp, - src/index/quadtree/DoubleBits.cpp, src/index/quadtree/NodeBase.cpp: - Remove conversion warning from src/index directory modified: - src/index/chain/MonotoneChain.cpp modified: - src/index/quadtree/DoubleBits.cpp modified: - src/index/quadtree/NodeBase.cpp + * NEWS, doc/example.cpp, include/geos/geom/GeometryFactory.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/operation/linemerge/LineMerger.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/CascadedUnion.h, + include/geos/operation/union/Makefile.am, + include/geos/operation/union/OverlapUnion.h, + src/geom/GeometryFactory.cpp, src/geom/util/GeometryCombiner.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/linemerge/LineMerger.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/union/Makefile.am, + src/operation/union/OverlapUnion.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + tests/unit/geom/GeometryCollectionTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/union/CoverageUnionTest.cpp, + tests/xmltester/tests/issue/issue-geos-837.xml: Port JTS + improvements to cascaded union. New approach to overlap handling, + to deal with robustness issues while preserving more performance + than the old GEOS fix. Add in fallback to buffer(0) when unary + union fails, for more fault tolerance on hard cases. Apply some + const correctness features when building geometries from + vector, as many constructors must do (from + @dbaston) https://github.com/locationtech/jts/pull/470 + https://github.com/locationtech/jts/pull/429 -2018-01-12 cvvergara +2019-09-13 Daniel Baston - * src/geomgraph/Node.cpp, - src/geomgraph/index/MonotoneChainEdge.cpp, - src/geomgraph/index/SimpleEdgeSetIntersector.cpp, - src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - src/geomgraph/index/SimpleSweepLineIntersector.cpp: Remove - conversion warning from src/geomgraph directory modified: - src/geomgraph/Node.cpp modified: - src/geomgraph/index/MonotoneChainEdge.cpp modified: - src/geomgraph/index/SimpleEdgeSetIntersector.cpp modified: - src/geomgraph/index/SimpleMCSweepLineIntersector.cpp - modified: src/geomgraph/index/SimpleSweepLineIntersector.cpp + * README.md, tests/unit/CMakeLists.txt, + tests/xmltester/CMakeLists.txt: Register individual tests with ctest Allows running of a single XML file or TUT test group. Fixes #930 -2018-01-12 cvvergara +2019-09-11 nila - * src/geom/LineString.cpp, src/geom/util/GeometryTransformer.cpp: - Remove conversion warning from src/geom directory modified: - src/geom/LineString.cpp modified: - src/geom/util/GeometryTransformer.cpp + * doc/CMakeLists.txt: Add version to CMake generated documentation -2018-01-12 cvvergara +2019-09-15 Daniel Baston - * src/algorithm/distance/DiscreteFrechetDistance.cpp, - src/algorithm/distance/DiscreteHausdorffDistance.cpp: Remove - conversion warning from algorithm directory modified: - src/algorithm/distance/DiscreteFrechetDistance.cpp modified: - src/algorithm/distance/DiscreteHausdorffDistance.cpp + * src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Fix gcc 4.8 + build gcc 4.8 does not allow return by converting move constructor. -2018-01-10 cvvergara +2019-09-15 Daniel Baston - * src/operation/overlay/ElevationMatrixCell.cpp, - src/operation/overlay/LineBuilder.cpp, - src/operation/polygonize/Polygonizer.cpp, - src/operation/valid/RepeatedPointTester.cpp: Removed warnings from - src/operation directory modified: - src/operation/overlay/ElevationMatrixCell.cpp modified: - src/operation/overlay/LineBuilder.cpp modified: - src/operation/valid/RepeatedPointTester.cpp modified: - src/operation/polygonize/Polygonizer.cpp + * src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Simplify + QuadEdgeSubdivision::getVoronoiCellPolygon Avoid conversions between unmanaged and managed pointers. Avoid + creating a coordinate sequence inconsistent with implementation used + in GeometryFactory. -2018-01-09 cvvergara +2019-09-15 Daniel Baston - * tests/unit/capi/GEOSDistanceTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/xmltester/XMLTester.cpp: fixing conversion warning on "tests" - directory + * src/io/WKTReader.cpp: Simplify WKTReader::readPolygonText Use factory method for building empty polygons. -2018-01-09 cvvergara +2019-09-15 Daniel Baston - * tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp, - tests/unit/capi/GEOSSTRtreeTest.cpp, tests/xmltester/XMLTester.cpp: - fixed unused parameter + * src/algorithm/ConvexHull.cpp: Simplify ConvexHull::lineOrPolygon Avoid converting back and forth between managed and raw pointers. -2018-01-10 cvvergara +2019-09-15 Daniel Baston - * include/geos/profiler.h, src/util/Profiler.cpp: Fixed profiler - warnings + * include/geos/geomgraph/EdgeRing.h, src/geomgraph/EdgeRing.cpp, + src/operation/overlay/PolygonBuilder.cpp: Avoid heap alloc in + EdgeRing::toPolygon Also avoid memory leak in case of exception. -2018-01-09 cvvergara +2019-09-13 Daniel Baston - * CMakeLists.txt, HOWTO_RELEASE: cmake: improving handling version + * capi/geos_ts_c.cpp, include/geos/geom/LineString.h, + src/geom/LineString.cpp, src/geom/LinearRing.cpp, + src/geom/MultiLineString.cpp, src/geom/MultiPolygon.cpp, + src/geom/Polygon.cpp, src/operation/valid/MakeValid.cpp: Simplify + Geometry methods with new GeometryFactory methods Avoid heap-allocating vectors and remove memory leaks on exception. -2018-01-09 cvvergara +2019-09-15 Daniel Baston - * CMakeLists.txt: getting stricter with warnings + * include/geos/geom/prep/PreparedLineString.h, + include/geos/geom/prep/PreparedPolygon.h, + include/geos/noding/FastSegmentSetIntersectionFinder.h, + src/geom/prep/PreparedLineString.cpp, + src/geom/prep/PreparedPolygon.cpp: Manage some prepared geometry + members with unique_ptr -2018-01-09 cvvergara +2019-09-15 Daniel Baston - * CMakeLists.txt: removing -ansi and fPIC from C++ compilation + * src/algorithm/MinimumBoundingCircle.cpp: Avoid unneeded Coordinate + copies in MinimumBoundingCircle -2018-01-10 Sandro Santilli +2019-09-15 Daniel Baston - * authors.svn: We don't need authors.svn anymore + * src/algorithm/MinimumDiameter.cpp: Fix typo in a6edac73 Caused test failure in MinimumDiameter -2018-01-06 Sandro Santilli +2019-09-15 Daniel Baston - * NEWS: Add note about USE_UNSTABLE_GEOS_CPP_API + * capi/geos_ts_c.cpp, include/geos/algorithm/MinimumDiameter.h, + src/algorithm/MinimumDiameter.cpp: Improve MinimumDiameter - Address TODO to avoid unnecessary heap-allocation of Coordinate + and LineSegment - Use unique_ptr to return pointers owned by caller -2018-01-05 Evgeniy A. Dushistov +2019-09-15 Daniel Baston - * include/geos/geom/Geometry.h: fix build under Visual Studio + * src/operation/valid/MakeValid.cpp: Simplify MakeValid Remove some unneeded heap allocation and copying between + std::vectors of Geometry and its subclasses. -2017-11-24 Sandro Santilli +2019-09-15 Daniel Baston - Merge branch 'ml/846' of mloskot/geos into master + * include/geos/operation/relate/EdgeEndBuilder.h, + src/operation/relate/EdgeEndBuilder.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNodeGraph.cpp: Remove some unneeded heap + allocs in EdgeEndBuilder -2017-11-24 Mateusz Loskot +2019-09-13 Daniel Baston - * include/geos/index/strtree/AbstractSTRtree.h, - src/algorithm/CGAlgorithms.cpp, src/algorithm/LineIntersector.cpp, - src/algorithm/RobustDeterminant.cpp, - src/geom/IntersectionMatrix.cpp, src/geom/util/GeometryEditor.cpp, - src/geom/util/ShortCircuitedGeometryVisitor.cpp: Remove BOM mark - Fixes #846 + * src/operation/union/CoverageUnion.cpp: Avoid Polygon->Geometry + conversion in CoverageUnion -2017-11-23 Sandro Santilli +2019-09-13 Paul Ramsey - * include/geos/util/GEOSException.h: Another BOM removed This one - was added in dbc52d41fd43bb9bdec31fc9969a66d05bc4bf95 See #846 + * CMakeLists.txt: Use Release as default cmake build instead of + Debug -2017-11-23 Sandro Santilli +2019-09-13 Daniel Baston - * include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, - include/geos/geom/Puntal.h: Remove BOM from header files It was - accidentally added by fbb4431f84ba516b873961b373567ae79a1d92e2 - Fixes #846 + * benchmarks/ClassSizes.cpp, + include/geos/geomgraph/TopologyLocation.h: Use uint8_t for + TopologyLocation size Reduces size of a TopologyLocation from 16 bytes to 4 -2017-10-11 Sandro Santilli +2019-09-13 Paul Ramsey - Merge branch 'ml/msvs-15.4.0' of mloskot/geos into master + * : commit 4f71e7b5741180f501531ae4b826410b2585c681 Author: Paul + Ramsey Date: Fri Sep 13 11:13:32 2019 + -0700 -2017-10-11 Mateusz Loskot +2019-09-12 Daniel Baston - * nmake.opt: Recognise NMAKE version from VS2017 15.4.0 + * include/geos/algorithm/CentralEndpointIntersector.h, + include/geos/algorithm/distance/DiscreteFrechetDistance.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/distance/PointPairDistance.h, + include/geos/geom/Coordinate.h, include/geos/geom/Coordinate.inl: + Add Coordinate::distanceSquared This can be used to shave some time off minimum distance + calculations. -2017-10-04 Sandro Santilli +2019-09-12 Daniel Baston - * configure.ac, include/geos/geom/Geometry.h, - tests/xmltester/Makefile.am: Emit a warning at compile time about - C++ API being unstable Aware users can remove the warning by - defining macro USE_UNSTABLE_GEOS_CPP_API See discussion + * tests/unit/operation/IsSimpleOpTest.cpp: Add include to + IsSimpleOpTest.cpp Attempts to fix error with Winnie build. - https://lists.osgeo.org/pipermail/geos-devel/2017-October/008054.html +2019-09-12 Daniel Baston -2017-10-04 Sandro Santilli + * include/geos/geom/FixedSizeCoordinateSequence.h: Clear + -Wsuggest-override warnings - * include/geos/noding/OrientedCoordinateArray.h, - src/noding/OrientedCoordinateArray.cpp, - tests/unit/capi/GEOSConvexHullTest.cpp, - tests/unit/capi/GEOSIntersectionTest.cpp, - tests/unit/capi/GEOSisClosedTest.cpp, - tests/unit/geom/Geometry/touchesTest.cpp, - tests/unit/geom/GeometryComponentFilterTest.cpp, - tests/unit/geom/GeometryFilterTest.cpp, - tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, - tests/unit/operation/buffer/BufferBuilderTest.cpp: Remove line feeds - from left-over files This is a style only change. The line feed - matched th [[:space:]] character class, which is why it was spotted. - Hopefully these are the last LF that'll ever enter the codebase +2019-09-11 nila -2017-10-04 Sandro Santilli + * README.md: add cmake doxygen build documentation - * Makefile.am: Make trailing blanks check portable +2019-09-11 nila -2017-10-01 Mateusz Loskot + * include/geos/index/chain/MonotoneChainBuilder.h: fix bad doxygen + params - Merge branch 'ml/clarify-cpp-api-status' of mloskot/geos into - master +2019-09-09 Daniel Baston -2017-10-01 Mateusz Loskot + * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp: Add multi-ordinate coordseq + setters and getters to C API The following CAPI functions are added for improved performance and + convenience: GEOSCoordSeq_setXY GEOSCoordSeq_setXYZ GEOSCoordSeq_getXY + GEOSCoordSeq_getXYZ - * README.md, src/Makefile.am: Clarify C++ API has not been - deprecated Make it clear it is not a bug for client program to use - the C++ API. Reverts patch submitted in - https://trac.osgeo.org/geos/ticket/553 - merged by mistake, without - RFC proposal, without PSC voting and without public announcement. - Related discussions occurred via the mailing lists +2019-09-09 Daniel Baston - https://lists.osgeo.org/pipermail/postgis-devel/2017-September/026548.html https://lists.osgeo.org/pipermail/geos-devel/2017-September/008043.html + * src/operation/buffer/SubgraphDepthLocater.cpp: Avoid unnecessary + sort in SubgraphDepthLocater Patch by dkvash Fixes #985 -2017-09-16 Sandro Santilli +2019-09-06 Daniel Baston - * include/geos/operation/relate/EdgeEndBundle.h: Mark - operation::relate::EdgeEndBundle::print as override as suggested by - compiler warning + * .travis.yml: Add doxygen to Travis -2017-05-03 nila +2019-09-05 Daniel Baston - * tests/unit/capi/GEOSGeom_createCollection.cpp: Suppress - GEOSGeom_createCollection:test1 -Wunnamed-type-template-args warning + * configure.ac, doc/CMakeLists.txt, doc/Doxyfile.in, + tools/ci/script_cmake.sh: Add Doxygen "docs" target to CMake build Must be explicitly enabled using -DBUILD_DOCUMENTATION=YES Direct all warnings to a log file that can be grepped for specific + errors as part of a CI build. Fixes #902 +2019-09-06 Paul Ramsey -2017-05-03 nila + * capi/geos_ts_c.cpp, include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/algorithm/Intersection.h, + include/geos/algorithm/LineIntersector.h, + include/geos/algorithm/Makefile.am, + include/geos/geom/LineSegment.h, src/algorithm/CGAlgorithmsDD.cpp, + src/algorithm/Intersection.cpp, src/algorithm/LineIntersector.cpp, + src/algorithm/Makefile.am, src/algorithm/MinimumDiameter.cpp, + src/geom/LineSegment.cpp, + src/operation/buffer/OffsetSegmentGenerator.cpp, + tests/unit/Makefile.am, tests/unit/algorithm/IntersectionTest.cpp, + tests/unit/geom/LineSegmentTest.cpp: Port JTS PR 468 https://github.com/locationtech/jts/pull/468 Refactor line intersection code into Intersection class. Use new + class for all line intersection computation Unroll input + conditioning for performance Add tests to verify accuracy of + conditioned double-precision intersection algorithm - * src/geom/GeometryFactory.cpp: Supress - GeometryFactory::buildGeometry -Wpotentially-evaluated-expression - warning +2019-09-05 Daniel Baston -2017-05-03 nila + * : commit c0792512e490468ff5343c53fc3dd1a8ebc195ab Merge: 38efd9b + ef19c26 Author: Daniel Baston Date: Thu Sep 5 + 14:43:11 2019 -0400 - * include/geos/operation/relate/EdgeEndBundle.h, - src/operation/relate/EdgeEndBundle.cpp: Suppress - EdgeEndBundle::print -Woverloaded-virtual warning +2019-09-05 Daniel Baston -2017-09-14 Sandro Santilli + * include/geos/geom/CoordinateArraySequenceFactory.h, + include/geos/geom/CoordinateArraySequenceFactory.inl, + include/geos/geom/CoordinateSequenceFactory.h, + src/algorithm/ConvexHull.cpp, src/geom/GeometryCollection.cpp, + src/geom/Polygon.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp: Remove some + heap-allocated vectors - * tests/unit/capi/GEOSInterruptTest.cpp: Remove trailing space +2019-09-04 Daniel Baston -2017-09-14 Mateusz Loskot + * include/geos/index/chain/MonotoneChain.h, + src/index/chain/MonotoneChain.cpp: Use unique_ptr in MonotoneChain - * nmake.opt: [NMAKE] Recognise Visual Studio 2017 version 15.3.4 +2019-09-04 Daniel Baston -2017-09-14 Sandro Santilli + * include/geos/noding/NodedSegmentString.h, + src/noding/NodedSegmentString.cpp: Use unique_ptr in + NodedSegmentString - * NEWS: Add interruptible snap news item +2019-09-04 Daniel Baston -2017-09-14 Sandro Santilli + * benchmarks/ClassSizes.cpp, include/geos/geomgraph/Edge.h, + src/geomgraph/Edge.cpp: Use unique_ptr in geomgraph::Edge Also reorder members to reduce class size by 8 bytes - Merge branch 'snap-interrupt' of pramsey/geos into master +2019-09-04 Daniel Baston -2017-09-12 Paul Ramsey + * include/geos/geom/FixedSizeCoordinateSequence.h: Mark + FixedSizeCoordinateSequence methods as final - * tests/unit/capi/GEOSInterruptTest.cpp: Renumber units tests +2019-09-04 Daniel Baston -2017-09-12 Paul Ramsey + * include/geos/geom/FixedSizeCoordinateSequence.h, + tests/unit/geom/FixedSizeCoordinateSequenceTest.cpp: Make + FixedSizeCoordinateSequence match CoordinateArraySequence dim + behavior - * tests/unit/capi/GEOSInterruptTest.cpp: Add unit test per strk +2019-09-04 Daniel Baston -2017-09-11 Paul Ramsey + * include/geos/geom/Makefile.am, tests/unit/Makefile.am: Add + FixedSizeCoordinateSequence to autotools build - * src/operation/overlay/snap/LineStringSnapper.cpp: Add interrupts - to the snap operation +2019-09-04 Paul Ramsey -2017-09-11 Mateusz Loskot + * include/geos/index/chain/MonotoneChainBuilder.h, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/index/chain/MonotoneChainBuilder.cpp: MonotoneChainBuilder can + be refactored to avoid using an array of indexes completely, by + constructing MonotoneChain objects as they determined. + https://github.com/locationtech/jts/pull/467 - * CMakeLists.txt: [CMake] Remove checks for prehistoric versions of - Visual Studio +2019-08-27 Daniel Baston -2017-09-11 Mateusz Loskot + * tests/unit/operation/overlay/OverlayOpUnionTest.cpp: Add test case + for #523 - * tools/build-cmake.bat: [CMake] No need to run cmake.exe in VS - command prompt [ci skip] +2019-08-27 Daniel Baston -2017-09-10 Mateusz Loskot + * tests/unit/operation/valid/IsValidTest.cpp: Add comment referring + to ticket - * appveyor.yml: [AppVeyor] Fix build environment for VS2017 and - NMAKE +2019-08-27 Daniel Baston -2017-09-10 Sandro Santilli + * tests/unit/operation/valid/IsValidTest.cpp: Add test for #588 - * src/operation/overlay/validate/OverlayResultValidator.cpp: Remove - unused code and protect debug-only used one +2019-08-27 Daniel Baston -2017-09-09 robe + * src/algorithm/Distance.cpp, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/simplify/DouglasPeuckerLineSimplifier.cpp, + src/simplify/TaggedLineString.cpp, + src/simplify/TaggedLineStringSimplifier.cpp: Use empty() instead of + size() where possible Fixes #860 - * README.md: fix winnies 3.6 badges +2019-08-27 Daniel Baston -2017-09-09 robe + * include/geos/operation/union/UnaryUnionOp.h: Fix doc typos Fixes #969 [ci skip] - * README.md: fix debbie and winnie's badges +2019-08-27 Daniel Baston -2017-09-10 Mateusz Loskot + * : Merge remote-tracking branch 'origin/trac-584' - * appveyor.yml: [AppVeyor] Add build jobs with Visual Studio 2017 - Currently, AppVeyor builds with VS 2017 and 2015 Part of GEOS RFC - 5: C++11 Compilation Mode +2019-08-26 Daniel Baston -2017-09-10 Mateusz Loskot + * : Merge remote-tracking branch 'dbaston/trac-858' - * .travis.yml: [Travis] Add build jobs with multiple GCC and clang - versions * GCC 4.8 and 7.x * clang 3.5 and 3.9 Part of GEOS RFC 5: - C++11 Compilation Mode +2019-08-24 Daniel Baston -2017-09-09 Mateusz Loskot + * tests/unit/tut/tut.hpp: Attempt to quiet TUT warnings in both + MSVC, gcc Fixes #904 - * capi/geos_ts_c.cpp, include/geos/algorithm/MCPointInRing.h, - include/geos/algorithm/NotRepresentableException.h, - include/geos/algorithm/SIRtreePointInRing.h, - include/geos/algorithm/SimplePointInRing.h, - include/geos/algorithm/distance/DiscreteHausdorffDistance.h, - include/geos/algorithm/locate/IndexedPointInAreaLocator.h, - include/geos/algorithm/locate/SimplePointInAreaLocator.h, +2019-08-25 Daniel Baston + + * include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineEvent.h, + src/geomgraph/GeometryGraph.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SweepLineEvent.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/valid/IsValidOp.cpp, + tests/unit/operation/IsSimpleOpTest.cpp: Fix invalid read on + exception in IsValidOp Fixes #858 + +2019-08-25 Daniel Baston + + * tests/unit/operation/IsSimpleOpTest.cpp: Add failing test for #858 + +2019-08-24 Daniel Baston + + * src/algorithm/Distance.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp: Add envelope test + to Distance::segmentToSegment JTS commit r652 Fixes Trac #584 + +2019-08-24 Daniel Baston + + * NEWS: NEWS updates + +2019-08-24 Daniel Baston + + * : commit 4b2f28c250cbb734605e13de3b3ceba289a438c9 Author: Paul + Ramsey Date: Tue Aug 20 15:52:11 2019 + -0700 + +2019-08-16 Paul Ramsey + + * src/noding/snapround/MCIndexPointSnapper.cpp: Port + https://github.com/locationtech/jts/pull/441 + +2019-08-07 Daniel Baston + + * include/geos/triangulate/quadedge/QuadEdge.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + src/triangulate/quadedge/QuadEdge.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Store visit state + with each QuadEdge instead of in a set This provides a surprising performance gain + +2019-08-05 Daniel Baston + + * src/triangulate/VoronoiDiagramBuilder.cpp: Avoid a heap alloc / + raw pointer usage + +2019-08-05 Daniel Baston + + * include/geos/geom/CoordinateArraySequence.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + src/geom/CoordinateArraySequence.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Delaunay + performance enhancements Net benefit is approximately 20% for Delaunay, 2-3% for Voronoi. - Avoid copying all triangles after construction - Avoid inFrame checks if result will be ignored - Avoid heap-allocating std::vector - Avoid conversions from unique_ptr to raw pointers + +2019-07-27 nila + + * include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/geom/Triangle.h: fix bad doxygen links and in addition some minor stylistic changes to the comments + +2019-07-25 Paul Ramsey + + * : commit 56417ce550e64eb4c1bf90f9959d74f34b6a296c Author: Paul + Ramsey Date: Thu Jul 25 13:43:02 2019 + -0700 + +2019-07-25 Paul Ramsey + + * tests/unit/triangulate/VoronoiTest.cpp: Add actual test case + +2019-07-25 Paul Ramsey + + * include/geos/geom/Triangle.h, src/algorithm/CGAlgorithmsDD.cpp, + src/geom/Triangle.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/util/math.cpp, tests/unit/geom/TriangleTest.cpp: Fix up mistakes + in drafting and add simple unit test + +2019-07-24 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + src/algorithm/CGAlgorithmsDD.cpp: First draft of circumcenterDD + support from JTS https://github.com/locationtech/jts/pull/448 + +2019-07-25 Paul Ramsey + + * include/geos/geom/Triangle.h, src/geom/Triangle.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Add filter to only + use DD math is we are in the "danger zone" for circumcenter, namely + that we have a potential equally-sided right triangle on our hands. + +2019-07-25 Paul Ramsey + + * tests/unit/triangulate/VoronoiTest.cpp: Add actual test case + +2019-07-25 Paul Ramsey + + * include/geos/geom/Triangle.h, src/algorithm/CGAlgorithmsDD.cpp, + src/geom/Triangle.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/util/math.cpp, tests/unit/geom/TriangleTest.cpp: Fix up mistakes + in drafting and add simple unit test + +2019-07-25 Daniel Baston + + * .azure-pipelines.yml: [azure-pipelines] Remove MSVC 2017 C++20 + build It seems unable to compile the TUT code. [ci skip] + +2019-07-24 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + src/algorithm/CGAlgorithmsDD.cpp: First draft of circumcenterDD + support from JTS https://github.com/locationtech/jts/pull/448 + +2019-07-11 Daniel Baston + + * src/triangulate/quadedge/Vertex.cpp: Catch exception by reference + +2019-07-11 Daniel Baston + + * src/linearref/LinearGeometryBuilder.cpp: Catch exception by + reference + +2019-07-11 Daniel Baston + + * NEWS: Add missing NEWS entry for #873 + +2019-06-08 Daniel Baston + + * benchmarks/ClassSizes.cpp, + benchmarks/capi/GEOSPreparedContainsPerfTest.cpp, capi/geos_c.cpp, + capi/geos_c.h.in, capi/geos_ts_c.cpp, include/geos/geom/CoordinateArraySequence.h, - include/geos/geom/CoordinateArraySequenceFactory.h, - include/geos/geom/Geometry.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/FixedSizeCoordinateSequence.h, + include/geos/geom/Point.h, src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp, src/geom/GeometryFactory.cpp, + src/geom/Point.cpp, + tests/unit/geom/FixedSizeCoordinateSequenceTest.cpp: Add + FixedSizeCoordinateSequence + +2019-06-21 Daniel Baston + + * include/geos/geom/Geometry.h, include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryFactory.h, include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, include/geos/geom/MultiLineString.h, include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, - include/geos/geom/Point.h, include/geos/geom/Polygon.h, - include/geos/geom/prep/AbstractPreparedPolygonContains.h, - include/geos/geom/prep/BasicPreparedGeometry.h, - include/geos/geom/prep/PreparedLineString.h, - include/geos/geom/prep/PreparedPoint.h, - include/geos/geom/prep/PreparedPolygon.h, - include/geos/geom/prep/PreparedPolygonContains.h, - include/geos/geom/prep/PreparedPolygonCovers.h, - include/geos/geom/util/ComponentCoordinateExtracter.h, - include/geos/geom/util/CoordinateOperation.h, - include/geos/geom/util/GeometryExtracter.h, - include/geos/geom/util/LinearComponentExtracter.h, - include/geos/geom/util/PointExtracter.h, - include/geos/geom/util/PolygonExtracter.h, - include/geos/geomgraph/DirectedEdge.h, - include/geos/geomgraph/DirectedEdgeStar.h, - include/geos/geomgraph/Edge.h, - include/geos/geomgraph/GeometryGraph.h, - include/geos/geomgraph/Node.h, - include/geos/geomgraph/index/MonotoneChain.h, - include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, - include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, - include/geos/geomgraph/index/SimpleSweepLineIntersector.h, - include/geos/geomgraph/index/SweepLineSegment.h, - include/geos/index/bintree/Node.h, - include/geos/index/bintree/Root.h, - include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, - include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, - include/geos/index/quadtree/Node.h, - include/geos/index/quadtree/Quadtree.h, - include/geos/index/quadtree/Root.h, - include/geos/index/strtree/AbstractNode.h, - include/geos/index/strtree/GeometryItemDistance.h, - include/geos/index/strtree/ItemBoundable.h, - include/geos/index/strtree/SIRtree.h, - include/geos/index/strtree/STRtree.h, - include/geos/io/ParseException.h, - include/geos/noding/BasicSegmentString.h, - include/geos/noding/IntersectionAdder.h, - include/geos/noding/IntersectionFinderAdder.h, - include/geos/noding/IteratedNoder.h, - include/geos/noding/MCIndexNoder.h, - include/geos/noding/MCIndexSegmentSetMutualIntersector.h, - include/geos/noding/NodedSegmentString.h, - include/geos/noding/ScaledNoder.h, - include/geos/noding/SegmentIntersectionDetector.h, - include/geos/noding/SimpleNoder.h, - include/geos/noding/SingleInteriorIntersectionFinder.h, - include/geos/noding/SinglePassNoder.h, - include/geos/noding/snapround/MCIndexSnapRounder.h, - include/geos/noding/snapround/SimpleSnapRounder.h, - include/geos/operation/distance/ConnectedElementLocationFilter.h, - include/geos/operation/distance/ConnectedElementPointFilter.h, - include/geos/operation/linemerge/LineMergeGraph.h, - include/geos/operation/overlay/ElevationMatrix.h, - include/geos/operation/overlay/MaximalEdgeRing.h, - include/geos/operation/overlay/MinimalEdgeRing.h, - include/geos/operation/overlay/OverlayNodeFactory.h, - include/geos/operation/overlay/OverlayOp.h, - include/geos/operation/polygonize/PolygonizeGraph.h, - include/geos/operation/polygonize/Polygonizer.h, - include/geos/operation/relate/EdgeEndBundle.h, - include/geos/operation/relate/EdgeEndBundleStar.h, - include/geos/operation/relate/RelateNode.h, - include/geos/operation/relate/RelateNodeFactory.h, - include/geos/operation/relate/RelateOp.h, - include/geos/operation/valid/SweeplineNestedRingTester.h, - include/geos/planargraph/Node.h, - include/geos/precision/PrecisionReducerCoordinateOperation.h, - include/geos/triangulate/quadedge/LastFoundQuadEdgeLocator.h, - include/geos/util/AssertionFailedException.h, - include/geos/util/GEOSException.h, - include/geos/util/IllegalArgumentException.h, - include/geos/util/IllegalStateException.h, - include/geos/util/TopologyException.h, - include/geos/util/UniqueCoordinateArrayFilter.h, - include/geos/util/UnsupportedOperationException.h, - src/algorithm/BoundaryNodeRule.cpp, src/geom/GeometryFactory.cpp, - src/index/strtree/SIRtree.cpp, src/index/strtree/STRtree.cpp, - src/noding/GeometryNoder.cpp, src/noding/ScaledNoder.cpp, - src/noding/snapround/MCIndexPointSnapper.cpp, - src/operation/distance/FacetSequenceTreeBuilder.cpp, - src/operation/distance/IndexedFacetDistance.cpp, + include/geos/geom/Polygon.h, src/geom/GeometryCollection.cpp, + src/geom/GeometryFactory.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/MultiLineString.cpp, + src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp, + src/geom/Polygon.cpp, src/io/WKBReader.cpp, src/io/WKTReader.cpp, + src/simplify/TaggedLineString.cpp: Augment GeometryFactory with a + methods taking and returning unique_ptr + +2019-06-28 Daniel Baston + + * .azure-pipelines.yml: [azure-pipelines] Disable C++20 build for + XCode 10.x + +2019-06-27 Daniel Baston + + * : Merge remote-tracking branch 'dbaston/fix-cpp17-build' + +2019-06-27 Daniel Baston + + * src/noding/MCIndexNoder.cpp, + src/noding/snapround/MCIndexSnapRounder.cpp, src/operation/overlay/OverlayOp.cpp, - src/operation/overlay/snap/GeometrySnapper.cpp, - src/operation/predicate/RectangleIntersects.cpp, - src/precision/CommonBitsRemover.cpp, - src/precision/MinimumClearance.cpp, - src/precision/SimpleGeometryPrecisionReducer.cpp, - src/simplify/DouglasPeuckerSimplifier.cpp, - src/simplify/LineSegmentIndex.cpp, - src/simplify/TopologyPreservingSimplifier.cpp, - src/triangulate/quadedge/QuadEdgeSubdivision.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, + src/operation/overlay/validate/OffsetPointGenerator.cpp: Remove use + of std::mem_fun It is deprecated in C+11 and removed in C++17. + +2019-06-25 Sandro Santilli + + * include/geos/geom/CoordinateSequence.h, + include/geos/geom/Geometry.h: Fix typo in comments + +2019-06-21 Daniel Baston + + * : commit 3c9c1603ef7202543b80dd03d134d6fed756078c Author: Daniel + Baston Date: Fri Jun 21 09:45:24 2019 -0400 + +2019-06-20 Daniel Baston + + * include/geos/geom/CoordinateArraySequence.h, + src/geom/CoordinateArraySequence.cpp: Avoid heap-allocating + std::vector in CoordinateArraySequence + +2019-06-20 Daniel Baston + + * src/geom/Geometry.cpp, src/geom/LineString.cpp, + src/geomgraph/Depth.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SimpleSweepLineIntersector.cpp, + src/index/sweepline/SweepLineIndex.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/valid/IndexedNestedRingTester.cpp, + src/operation/valid/QuadtreeNestedRingTester.cpp: Remove + commented-out code + +2019-06-20 Daniel Baston + + * README.md: Fix badge format in README.md + +2019-06-20 Daniel Baston + + * : commit 52c722871a56d104d9d639584bf4508ae0736b04 Author: Daniel + Baston Date: Mon Jun 17 22:08:35 2019 -0400 + +2019-06-19 nila + + * include/geos/geom/Location.h: Move GEOS_DLL macro to beginning of + declaration + +2019-06-19 nila + + * include/geos/algorithm/BoundaryNodeRule.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RayCrossingCounterDD.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/geom/Geometry.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/PointGeometryUnion.h: Fix broken + doxygen links as a result of removal of Puntal, Lineal, and + Polygonal classes + +2019-06-19 nila + + * .gitignore: Add benchmark test file InteriorPointAreaPerfTest + +2019-06-18 Daniel Baston + + * src/algorithm/MinimumBoundingCircle.cpp: Throw another unthrown + exception + +2019-06-18 Daniel Baston + + * src/algorithm/MinimumBoundingCircle.cpp: Throw unthrown exception + +2019-06-18 Daniel Baston + + * tests/unit/geom/MultiLineStringTest.cpp, + tests/unit/geom/MultiPolygonTest.cpp: Fix test build failures + +2019-06-18 Daniel Baston + + * : commit a64c3d737ae771d9734a987c5620dee6720a87df Merge: e83855d + ee679ea Author: Daniel Baston Date: Tue Jun 18 + 09:57:30 2019 -0400 + +2019-06-17 Daniel Baston + + * include/geos/geom/util/GeometryCombiner.h, + src/geom/util/GeometryCombiner.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/CascadedUnion.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp: Return unique_ptr + from GeometryCombiner + +2019-06-17 Daniel Baston + + * : commit 2e503e6c434961a1fff3a6ebe46d6fbfbf325911 Author: Daniel + Baston Date: Mon Jun 17 13:13:00 2019 -0400 + +2019-06-17 Daniel Baston + + * src/precision/GeometryPrecisionReducer.cpp: Remove trivial heap + alloc in GeometryPrecisionReducer + +2019-06-17 Daniel Baston + + * src/io/WKBReader.cpp, src/io/WKTReader.cpp: Simplify constuction + of base class unique_ptr from subclass unique_ptr + +2019-06-16 Daniel Baston + + * capi/geos_ts_c.cpp, doc/example.cpp, include/geos/io/WKBReader.h, + include/geos/io/WKTReader.h, src/io/WKBReader.cpp, + src/io/WKTReader.cpp, + tests/unit/algorithm/InteriorPointAreaTest.cpp, + tests/unit/algorithm/MinimumBoundingCircleTest.cpp, + tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/geom/Geometry/coversTest.cpp, + tests/unit/geom/Geometry/isRectangleTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, + tests/unit/geom/PolygonTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/unit/io/WKBWriterTest.cpp, tests/unit/io/WKTReaderTest.cpp, + tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, + tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/CoverageUnionTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp + , tests/unit/triangulate/DelaunayTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, + tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp: + Return unique_ptr from WKTReader and WKBReader + +2019-06-12 Daniel Baston + + * include/geos/algorithm/PointLocation.h, + include/geos/algorithm/PointLocator.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RayCrossingCounterDD.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/PointOnGeometryLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/geom/IntersectionMatrix.h, + include/geos/geom/Location.h, + include/geos/geom/prep/AbstractPreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geomgraph/Depth.h, + include/geos/geomgraph/DirectedEdge.h, + include/geos/geomgraph/EdgeEndStar.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/Label.h, include/geos/geomgraph/Node.h, + include/geos/geomgraph/TopologyLocation.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/overlay/OverlayOp.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/overlay/validate/OverlayResultValidator.h, + src/algorithm/PointLocation.cpp, src/algorithm/PointLocator.cpp, + src/algorithm/RayCrossingCounter.cpp, + src/algorithm/RayCrossingCounterDD.cpp, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp, + src/geom/IntersectionMatrix.cpp, src/geom/Location.cpp, + src/geom/prep/AbstractPreparedPolygonContains.cpp, + src/geom/prep/PreparedPolygonPredicate.cpp, + src/geomgraph/Depth.cpp, src/geomgraph/DirectedEdge.cpp, + src/geomgraph/DirectedEdgeStar.cpp, src/geomgraph/EdgeEndStar.cpp, + src/geomgraph/EdgeRing.cpp, src/geomgraph/GeometryGraph.cpp, + src/geomgraph/Label.cpp, src/geomgraph/Node.cpp, + src/geomgraph/TopologyLocation.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/overlay/validate/OverlayResultValidator.cpp, + src/operation/relate/EdgeEndBundle.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNodeGraph.cpp, + src/operation/union/PointGeometryUnion.cpp, + tests/unit/algorithm/LocatePointInRingTest.cpp, + tests/unit/algorithm/PointLocatorTest.cpp, + tests/unit/geom/IntersectionMatrixTest.cpp, + tests/unit/geom/LocationTest.cpp: Convert Location into an enum + class + +2019-06-16 Daniel Baston + + * : commit a2e06abed63f3aed2a200cea512bf966473d82cb Author: Daniel + Baston Date: Sun Jun 16 20:22:38 2019 -0400 + +2019-06-14 Sandro Santilli + + * .drone-1.0.yml, Makefile.am: Add doxygen-checked command, run it + from drone Checks that doxygen does not output unexpected warnings + +2019-06-15 nila + + * include/geos/algorithm/PointLocation.h: Remove duplicated doxygen + doc + +2019-06-15 Sandro Santilli + + * README.md: Update dronie badges to use 1.0 + +2019-06-14 Sandro Santilli + + * .drone-1.0.yml: [drone] Pull image _always_ + +2019-06-14 Daniel Baston + + * include/geos/triangulate/quadedge/QuadEdgeSubdivision.h: Reformat + Doxygen comment that apparently breaks autotools build + +2019-06-14 Sandro Santilli + + * : commit ee70a1e238d83bddee497043874ef1f3a8590152 Author: nila + Date: Fri Jun 14 21:15:29 2019 +0200 + +2019-06-14 Daniel Baston + + * benchmarks/ClassSizes.cpp, include/geos/geom/BinaryOp.h, + include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/LineString.h, include/geos/geom/Lineal.h, + include/geos/geom/Makefile.am, include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Point.h, include/geos/geom/Polygon.h, + include/geos/geom/Polygonal.h, include/geos/geom/Puntal.h, + include/geos/linearref/LocationIndexedLine.h, + include/geos/operation/union/PointGeometryUnion.h, + src/geom/GeometryCollection.cpp, + src/geom/prep/PreparedPolygonIntersects.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/PointGeometryUnion.cpp, + src/operation/union/UnaryUnionOp.cpp, + src/precision/GeometryPrecisionReducer.cpp, tests/unit/geom/GeometryComponentFilterTest.cpp, - tests/unit/geom/GeometryFilterTest.cpp, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, - tests/unit/tut/tut.hpp, tests/unit/tut/tut_console_reporter.hpp, - tests/unit/tut/tut_exception.hpp, tests/unit/tut/tut_result.hpp, - tests/xmltester/tinyxml/tinyxml.h: Apply clang-tidy-4.0 - modernize-use-override Used command: run-clang-tidy.py - -header-filter='.*' -checks='-*,modernize-use-modernize' -fix Part - of GEOS RFC 5: C++11 Compilation Mode + tests/unit/geom/GeometryFilterTest.cpp: Remove Puntal, Lineal, and + Polygonal classes These classes are used in only a handful of locations to check the + dimension of a Geometry. However, their use in the inheritance + hierarchy increases the class size of MultiPoint, MultiLineString, + and MultiPolygon by 8 bytes, and possibly imposes a runtime cost. + This commit provides alternative methods of checking Geometry + dimension. -2017-09-09 Mateusz Loskot +2019-06-14 nila - * include/geos/algorithm/LineIntersector.h, - include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, - include/geos/geom/Puntal.h, - include/geos/geom/prep/PreparedLineString.h, + * include/geos/triangulate/quadedge/QuadEdgeSubdivision.h: [doxygen] + fix non-ascii characters + +2019-06-03 nila + + * include/geos/algorithm/BoundaryNodeRule.h, + include/geos/algorithm/Centroid.h, + include/geos/algorithm/HCoordinate.h, + include/geos/algorithm/MinimumDiameter.h, + include/geos/algorithm/Orientation.h, + include/geos/algorithm/PointLocation.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RayCrossingCounterDD.h, + include/geos/algorithm/locate/PointOnGeometryLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/algorithm/ttmath/ttmathtypes.h, include/geos/geom.h, + include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateFilter.h, + include/geos/geom/CoordinateSequenceFilter.h, + include/geos/geom/Envelope.h, include/geos/geom/Geometry.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/PrecisionModel.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/GeometryTransformer.h, include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/EdgeNodingValidator.h, include/geos/geomgraph/GeometryGraph.h, - include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/geomgraph/Position.h, + include/geos/index/bintree/Bintree.h, include/geos/index/chain/MonotoneChainBuilder.h, - include/geos/index/sweepline/SweepLineInterval.h, - include/geos/io/ByteOrderDataInStream.h, + include/geos/index/chain/MonotoneChainOverlapAction.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/BoundablePair.h, + include/geos/index/strtree/ItemDistance.h, + include/geos/index/strtree/SIRtree.h, + include/geos/linearref/ExtractLineByLocation.h, + include/geos/linearref/LengthIndexedLine.h, + include/geos/linearref/LengthLocationMap.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/linearref/LinearIterator.h, + include/geos/linearref/LinearLocation.h, + include/geos/linearref/LocationIndexOfLine.h, + include/geos/linearref/LocationIndexOfPoint.h, + include/geos/linearref/LocationIndexedLine.h, + include/geos/noding/BasicSegmentString.h, include/geos/noding/FastNodingValidator.h, + include/geos/noding/FastSegmentSetIntersectionFinder.h, include/geos/noding/IntersectionAdder.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/IteratedNoder.h, include/geos/noding/MCIndexNoder.h, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + include/geos/noding/NodedSegmentString.h, + include/geos/noding/Noder.h, + include/geos/noding/NodingIntersectionFinder.h, + include/geos/noding/OrientedCoordinateArray.h, include/geos/noding/SegmentIntersectionDetector.h, include/geos/noding/SegmentSetMutualIntersector.h, - include/geos/noding/SimpleNoder.h, + include/geos/noding/SegmentString.h, + include/geos/noding/SegmentStringUtil.h, include/geos/noding/SinglePassNoder.h, include/geos/noding/snapround/MCIndexPointSnapper.h, + include/geos/opOverlay.h, include/geos/operation/IsSimpleOp.h, include/geos/operation/buffer/BufferBuilder.h, include/geos/operation/buffer/BufferOp.h, - include/geos/operation/buffer/OffsetSegmentString.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/operation/intersection/Rectangle.h, + include/geos/operation/intersection/RectangleIntersection.h, + include/geos/operation/intersection/RectangleIntersectionBuilder.h, + include/geos/operation/linemerge/LineMergeDirectedEdge.h, include/geos/operation/linemerge/LineSequencer.h, + include/geos/operation/overlay/MaximalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.h, include/geos/operation/overlay/OverlayOp.h, - include/geos/operation/overlay/PointBuilder.h, + include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + include/geos/operation/predicate/RectangleIntersects.h, + include/geos/operation/relate/RelateOp.h, include/geos/operation/union/CascadedPolygonUnion.h, - include/geos/operation/union/CascadedUnion.h, - include/geos/operation/union/GeometryListHolder.h, + include/geos/operation/union/PointGeometryUnion.h, include/geos/operation/union/UnaryUnionOp.h, + include/geos/operation/valid/ConsistentAreaTester.h, include/geos/operation/valid/IsValidOp.h, + include/geos/operation/valid/QuadtreeNestedRingTester.h, include/geos/operation/valid/SimpleNestedRingTester.h, include/geos/operation/valid/SweeplineNestedRingTester.h, - include/geos/precision/GeometryPrecisionReducer.h, - include/geos/profiler.h, src/algorithm/ConvexHull.cpp, - src/algorithm/LineIntersector.cpp, src/algorithm/MCPointInRing.cpp, - src/algorithm/MinimumDiameter.cpp, - src/algorithm/SIRtreePointInRing.cpp, - src/geom/CoordinateSequence.cpp, src/geom/Geometry.cpp, - src/geom/GeometryCollection.cpp, src/geom/GeometryFactory.cpp, - src/geom/LineString.cpp, src/geom/MultiLineString.cpp, - src/geom/Point.cpp, src/geom/Polygon.cpp, - src/geom/prep/PreparedGeometryFactory.cpp, - src/geom/prep/PreparedPolygon.cpp, - src/geom/util/GeometryCombiner.cpp, + include/geos/operation/valid/TopologyValidationError.h, + include/geos/planargraph/DirectedEdge.h, + include/geos/planargraph/Edge.h, + include/geos/planargraph/PlanarGraph.h, + include/geos/planargraph/Subgraph.h, + include/geos/precision/CommonBitsOp.h, + include/geos/simplify/TaggedLinesSimplifier.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/VoronoiDiagramBuilder.h, + include/geos/triangulate/quadedge/QuadEdge.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + include/geos/triangulate/quadedge/Vertex.h, + include/geos/util/CoordinateArrayFilter.h, + src/operation/valid/IndexedNestedRingTester.h: [doxygen] fix errors + and links + +2019-06-13 Daniel Baston + + * src/geom/GeometryCollection.cpp, + tests/unit/geom/GeometryCollectionTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiLineStringTest.cpp, + tests/unit/geom/MultiPointTest.cpp, + tests/unit/geom/MultiPolygonTest.cpp, + tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp: Fix + memory leak on GeometryCollection::getCoordinate Add tests to ensure all Geometry types have the same behavior when + calling getCoordinate on an empty geometry. Fixes #918 + +2019-06-13 Daniel Baston + + * tests/unit/algorithm/ConvexHullTest.cpp: Add test case for #850 + +2019-06-13 Daniel Baston + + * capi/geos_ts_c.cpp, doc/example.cpp, + include/geos/geom/Geometry.h, include/geos/geom/GeometryFactory.h, + include/geos/geom/Polygon.h, + include/geos/operation/polygonize/EdgeRing.h, + src/algorithm/InteriorPointArea.cpp, + src/algorithm/PointLocator.cpp, src/geom/Geometry.cpp, + src/geom/GeometryFactory.cpp, src/geom/Polygon.cpp, src/geom/util/GeometryEditor.cpp, - src/geom/util/GeometryTransformer.cpp, - src/geom/util/SineStarFactory.cpp, src/geomgraph/DirectedEdge.cpp, - src/geomgraph/DirectedEdgeStar.cpp, src/geomgraph/Edge.cpp, - src/geomgraph/EdgeEnd.cpp, src/geomgraph/EdgeEndStar.cpp, - src/geomgraph/EdgeList.cpp, src/geomgraph/EdgeRing.cpp, - src/geomgraph/GeometryGraph.cpp, src/geomgraph/NodeFactory.cpp, - src/geomgraph/NodeMap.cpp, src/geomgraph/PlanarGraph.cpp, - src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - src/geomgraph/index/SimpleSweepLineIntersector.cpp, - src/geomgraph/index/SweepLineEvent.cpp, - src/index/bintree/Bintree.cpp, src/index/bintree/Key.cpp, - src/index/bintree/Node.cpp, src/index/bintree/NodeBase.cpp, - src/index/bintree/Root.cpp, src/index/chain/MonotoneChain.cpp, - src/index/intervalrtree/SortedPackedIntervalRTree.cpp, - src/index/quadtree/Node.cpp, src/index/quadtree/NodeBase.cpp, - src/index/quadtree/Root.cpp, src/index/strtree/AbstractNode.cpp, - src/index/strtree/AbstractSTRtree.cpp, - src/index/strtree/BoundablePair.cpp, src/index/strtree/SIRtree.cpp, - src/index/strtree/STRtree.cpp, - src/index/sweepline/SweepLineEvent.cpp, - src/index/sweepline/SweepLineIndex.cpp, src/io/CLocalizer.cpp, - src/io/WKBReader.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, - src/io/WKTWriter.cpp, src/linearref/ExtractLineByLocation.cpp, - src/linearref/LinearGeometryBuilder.cpp, - src/linearref/LinearIterator.cpp, - src/linearref/LocationIndexOfPoint.cpp, - src/noding/GeometryNoder.cpp, src/noding/IteratedNoder.cpp, - src/noding/snapround/HotPixel.cpp, src/operation/IsSimpleOp.cpp, - src/operation/buffer/BufferBuilder.cpp, - src/operation/buffer/BufferOp.cpp, - src/operation/buffer/BufferSubgraph.cpp, - src/operation/buffer/RightmostEdgeFinder.cpp, - src/operation/buffer/SubgraphDepthLocater.cpp, - src/operation/distance/DistanceOp.cpp, - src/operation/intersection/Rectangle.cpp, + src/geom/util/GeometryTransformer.cpp, src/geomgraph/EdgeRing.cpp, + src/geomgraph/GeometryGraph.cpp, src/io/WKBReader.cpp, + src/io/WKTReader.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, src/operation/intersection/RectangleIntersection.cpp, src/operation/intersection/RectangleIntersectionBuilder.cpp, - src/operation/linemerge/EdgeString.cpp, - src/operation/linemerge/LineMergeDirectedEdge.cpp, - src/operation/linemerge/LineMergeGraph.cpp, - src/operation/linemerge/LineMerger.cpp, - src/operation/linemerge/LineSequencer.cpp, - src/operation/overlay/MaximalEdgeRing.cpp, - src/operation/overlay/OverlayOp.cpp, - src/operation/overlay/PolygonBuilder.cpp, - src/operation/overlay/validate/FuzzyPointLocator.cpp, - src/operation/overlay/validate/OffsetPointGenerator.cpp, src/operation/polygonize/EdgeRing.cpp, - src/operation/polygonize/PolygonizeDirectedEdge.cpp, - src/operation/polygonize/PolygonizeGraph.cpp, - src/operation/polygonize/Polygonizer.cpp, - src/operation/predicate/RectangleIntersects.cpp, - src/operation/relate/EdgeEndBuilder.cpp, - src/operation/union/CascadedPolygonUnion.cpp, - src/operation/union/CascadedUnion.cpp, - src/operation/valid/ConnectedInteriorTester.cpp, - src/operation/valid/IndexedNestedRingTester.cpp, - src/operation/valid/IndexedNestedRingTester.h, src/operation/valid/IsValidOp.cpp, - src/operation/valid/QuadtreeNestedRingTester.cpp, - src/operation/valid/SimpleNestedRingTester.cpp, - src/operation/valid/SweeplineNestedRingTester.cpp, - src/planargraph/Edge.cpp, src/planargraph/NodeMap.cpp, - src/planargraph/PlanarGraph.cpp, - src/precision/MinimumClearance.cpp, - src/precision/PrecisionReducerCoordinateOperation.cpp, - src/precision/SimpleGeometryPrecisionReducer.cpp, - src/simplify/TaggedLineSegment.cpp, - src/simplify/TaggedLineStringSimplifier.cpp, - src/triangulate/DelaunayTriangulationBuilder.cpp, - src/triangulate/VoronoiDiagramBuilder.cpp, - src/triangulate/quadedge/LastFoundQuadEdgeLocator.cpp, - src/triangulate/quadedge/QuadEdge.cpp, - src/triangulate/quadedge/QuadEdgeSubdivision.cpp, - src/util/GeometricShapeFactory.cpp, src/util/Interrupt.cpp, - tests/bigtest/GeometryTestFactory.cpp, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, - tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, - tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, - tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/algorithm/MinimumDiameterTest.cpp, - tests/unit/algorithm/RobustLineIntersectionTest.cpp, - tests/unit/capi/GEOSBufferTest.cpp, - tests/unit/capi/GEOSClipByRectTest.cpp, - tests/unit/capi/GEOSContainsTest.cpp, - tests/unit/capi/GEOSConvexHullTest.cpp, - tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSDelaunayTriangulationTest.cpp, - tests/unit/capi/GEOSDistanceTest.cpp, - tests/unit/capi/GEOSEqualsTest.cpp, - tests/unit/capi/GEOSFrechetDistanceTest.cpp, - tests/unit/capi/GEOSGeomFromWKBTest.cpp, - tests/unit/capi/GEOSGeomToWKTTest.cpp, - tests/unit/capi/GEOSGeom_create.cpp, - tests/unit/capi/GEOSGeom_createCollection.cpp, - tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, - tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, - tests/unit/capi/GEOSGetCentroidTest.cpp, - tests/unit/capi/GEOSHausdorffDistanceTest.cpp, - tests/unit/capi/GEOSInterruptTest.cpp, - tests/unit/capi/GEOSIntersectionTest.cpp, - tests/unit/capi/GEOSIntersectsTest.cpp, - tests/unit/capi/GEOSLineString_PointTest.cpp, - tests/unit/capi/GEOSMinimumClearanceTest.cpp, - tests/unit/capi/GEOSMinimumRectangleTest.cpp, - tests/unit/capi/GEOSMinimumWidthTest.cpp, - tests/unit/capi/GEOSNearestPointsTest.cpp, - tests/unit/capi/GEOSNodeTest.cpp, - tests/unit/capi/GEOSOffsetCurveTest.cpp, - tests/unit/capi/GEOSPointOnSurfaceTest.cpp, - tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp, - tests/unit/capi/GEOSPreparedGeometryTest.cpp, - tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp, - tests/unit/capi/GEOSSTRtreeTest.cpp, - tests/unit/capi/GEOSSharedPathsTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp, - tests/unit/capi/GEOSSnapTest.cpp, - tests/unit/capi/GEOSUnaryUnionTest.cpp, - tests/unit/capi/GEOSUserDataTest.cpp, - tests/unit/capi/GEOSVoronoiDiagramTest.cpp, - tests/unit/capi/GEOSWithinTest.cpp, - tests/unit/capi/GEOSisClosedTest.cpp, - tests/unit/capi/GEOSisValidDetailTest.cpp, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/Geometry/isRectangleTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/IntersectionMatrixTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, - tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/io/WKBWriterTest.cpp, - tests/unit/noding/BasicSegmentStringTest.cpp, - tests/unit/noding/NodedSegmentStringTest.cpp, - tests/unit/noding/SegmentNodeTest.cpp, - tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, - tests/unit/operation/buffer/BufferBuilderTest.cpp, - tests/unit/operation/distance/DistanceOpTest.cpp, - tests/unit/operation/linemerge/LineMergerTest.cpp, - tests/unit/operation/linemerge/LineSequencerTest.cpp, - tests/unit/operation/polygonize/PolygonizeTest.cpp, - tests/unit/operation/union/CascadedPolygonUnionTest.cpp, - tests/unit/operation/union/UnaryUnionOpTest.cpp, - tests/unit/operation/valid/IsValidTest.cpp, - tests/unit/operation/valid/ValidClosedRingTest.cpp, - tests/unit/tut/tut.hpp, tests/unit/tut/tut_runner.hpp, - tests/unit/utility.h, tests/xmltester/XMLTester.cpp, - tests/xmltester/tinyxml/tinystr.h, - tests/xmltester/tinyxml/tinyxml.cpp, - tests/xmltester/tinyxml/tinyxml.h, - tests/xmltester/tinyxml/tinyxmlparser.cpp: Apply clang-tidy-4.0 - modernize-use-nullptr Used command: run-clang-tidy.py - -header-filter='.*' -checks='-*,modernize-use-nullptr' -fix Part of - GEOS RFC 5: C++11 Compilation Mode + tests/unit/geom/GeometryFactoryTest.cpp: Handle Polygon rings as + LinearRings This removes the need for numerous dynamic casts. Related: JTS 992948a3312be5ad9bf97fc50b3c3a0de3acece1 JTS + af8aee0ba345d5f5f8c845c721d9df20fac3bd3d -2017-09-09 Mateusz Loskot +2019-06-12 Daniel Baston - * .travis.yml: [Travis CI] Remove branch filter Allow Travis CI - builds for any branch + * src/geom/prep/PreparedPolygonPredicate.cpp, + tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml: Fix + incorrect return from OutermostLocationFilter -2017-09-07 Mateusz Loskot +2019-06-11 Daniel Baston - * tests/bigtest/CMakeLists.txt, tests/unit/CMakeLists.txt, - tests/xmltester/CMakeLists.txt: [CMake] Rename tests targets using - test_ prefix + * : commit 8c4251685c937d6847ef92eee489a584a5c673ea Author: Daniel + Baston Date: Mon Jun 10 20:19:20 2019 -0400 -2017-09-07 Mateusz Loskot +2019-06-10 Daniel Baston - * tests/CMakeLists.txt, tests/perf/CMakeLists.txt, - tests/perf/capi/CMakeLists.txt, - tests/perf/operation/CMakeLists.txt, - tests/perf/operation/buffer/CMakeLists.txt, - tests/perf/operation/predicate/CMakeLists.txt, - tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: [CMake] - Add tests/perf targets to build configuration + * src/geom/prep/PreparedPolygonPredicate.cpp: Rename location + filters -2017-09-07 Mateusz Loskot +2019-06-10 Daniel Baston - * include/geos/profiler.h: Add GEOS_DLL to opeartor<< functions in - Profiler + * src/geom/prep/PreparedPolygonPredicate.cpp: Avoid relying on + numeric ordering of Location -2017-09-07 Mateusz Loskot +2019-06-09 Daniel Baston - * tests/perf/operation/buffer/IteratedBufferStressTest.cpp: Replace - GeometryFactory::unique_ptr remains with Ptr + * include/geos/geom/prep/PreparedPolygonPredicate.h, + src/geom/prep/AbstractPreparedPolygonContains.cpp, + src/geom/prep/PreparedPolygonPredicate.cpp: Clarify PIP + short-circuits in PreparedPolygonPredicate -2017-09-07 Mateusz Loskot +2019-06-09 Daniel Baston - * tests/perf/operation/buffer/IteratedBufferStressTest.cpp, - tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp: - Avoid copying of std::unique_ptr Prefer T::Ptr instead of - std::unique_ptr. + * tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml: + Add some prepared polygon predicate tests -2017-09-07 Mateusz Loskot +2019-06-08 Daniel Baston - * doc/example.cpp: Use GeometryFactory::Ptr instead of old - unique_ptr alias + * : commit 2da5dc33519659272f86197751e4f0aa8656290b Merge: dfb7783 + 44d77a2 Author: Daniel Baston Date: Sat Jun 8 + 21:23:33 2019 -0400 -2017-09-07 Mateusz Loskot +2019-06-08 Daniel Baston - * configure.ac: Remove option -ansi conflicting with -std=c++11 - Restore C++11 detection without extensions + * capi/geos_ts_c.cpp, tests/unit/io/WKTReaderTest.cpp: Quiet a + couple of warnings -2017-09-07 Mateusz Loskot +2019-06-06 Daniel Baston - * configure.ac: Allow GCC extension options (-std=gnu++11) + * benchmarks/algorithm/VoronoiPerfTest.cpp: More informative timing + output in VoronoiPerfTest -2017-09-07 Mateusz Loskot +2019-06-06 Daniel Baston - * include/geos/geom/Makefile.am: Remove GeometryList.h from makefile - Update for: Remove GeometryList class (#9) + * include/geos/profiler.h, src/util/Profiler.cpp: Remove manual + memory management in Profiler -2017-09-07 Sandro Santilli +2019-06-06 Daniel Baston - Merge branch 'ml/rfc5-cpp11-unique_ptr' of mloskot/geos into - master + * include/geos/Makefile.am, include/geos/profiler.h, + include/geos/timeval.h, src/util/Profiler.cpp: Use C++11 std::chrono + for Profiler This avoids the need for compiler-specific tests and headers, and + anecdotally seems to provide more repeatable measurements. -2017-09-07 Sandro Santilli +2019-06-06 Daniel Baston - Merge branch 'ml/rfc5-cpp11-configure' of mloskot/geos into - master + * include/geos/geom/GeometryComponentFilter.h, + src/geom/GeometryCollection.cpp, src/geom/Polygon.cpp, + src/geom/prep/PreparedPolygonPredicate.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp: Add + GeometryComponentFilter::isDone() -2017-09-06 Mateusz Loskot +2019-06-06 Daniel Baston - * capi/geos_c.cpp, capi/geos_ts_c.cpp, doc/example.cpp, - include/geos/algorithm/Centroid.h, include/geos/geom/BinaryOp.h, - include/geos/geom/CoordinateList.h, - include/geos/geom/CoordinateSequence.h, - include/geos/geom/Envelope.h, include/geos/geom/Geometry.h, - include/geos/geom/GeometryCollection.h, - include/geos/geom/GeometryFactory.h, - include/geos/geom/LineSegment.h, include/geos/geom/LineString.h, - include/geos/geom/LinearRing.h, include/geos/geom/Point.h, - include/geos/geom/Polygon.h, - include/geos/geom/util/GeometryTransformer.h, - include/geos/geom/util/SineStarFactory.h, - include/geos/geomgraph/GeometryGraph.h, - include/geos/index/chain/MonotoneChain.h, - include/geos/index/quadtree/Node.h, - include/geos/index/strtree/AbstractSTRtree.h, - include/geos/index/strtree/SIRtree.h, - include/geos/index/strtree/STRtree.h, - include/geos/linearref/LinearLocation.h, - include/geos/noding/FastNodingValidator.h, - include/geos/noding/GeometryNoder.h, - include/geos/noding/snapround/HotPixel.h, - include/geos/noding/snapround/MCIndexSnapRounder.h, - include/geos/operation/IsSimpleOp.h, - include/geos/operation/buffer/BufferInputLineSimplifier.h, - include/geos/operation/buffer/OffsetCurveBuilder.h, - include/geos/operation/distance/DistanceOp.h, - include/geos/operation/distance/IndexedFacetDistance.h, - include/geos/operation/intersection/RectangleIntersection.h, - include/geos/operation/intersection/RectangleIntersectionBuilder.h, - include/geos/operation/linemerge/LineSequencer.h, - include/geos/operation/overlay/snap/GeometrySnapper.h, - include/geos/operation/overlay/snap/LineStringSnapper.h, - include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, - include/geos/operation/overlay/snap/SnapOverlayOp.h, - include/geos/operation/overlay/validate/FuzzyPointLocator.h, - include/geos/operation/overlay/validate/OffsetPointGenerator.h, - include/geos/operation/relate/RelateComputer.h, - include/geos/operation/union/CascadedPolygonUnion.h, - include/geos/operation/union/PointGeometryUnion.h, - include/geos/operation/union/UnaryUnionOp.h, - include/geos/operation/valid/ConnectedInteriorTester.h, - include/geos/precision/CommonBitsOp.h, - include/geos/precision/GeometryPrecisionReducer.h, - include/geos/precision/MinimumClearance.h, - include/geos/simplify/DouglasPeuckerLineSimplifier.h, - include/geos/simplify/DouglasPeuckerSimplifier.h, - include/geos/simplify/LineSegmentIndex.h, - include/geos/simplify/TaggedLineString.h, - include/geos/simplify/TaggedLineStringSimplifier.h, - include/geos/simplify/TaggedLinesSimplifier.h, - include/geos/simplify/TopologyPreservingSimplifier.h, - include/geos/triangulate/DelaunayTriangulationBuilder.h, - include/geos/triangulate/VoronoiDiagramBuilder.h, - include/geos/triangulate/quadedge/QuadEdge.h, - include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, - include/geos/triangulate/quadedge/Vertex.h, - include/geos/util/GeometricShapeFactory.h, - src/algorithm/InteriorPointArea.cpp, src/geom/Geometry.cpp, - src/geom/GeometryCollection.cpp, src/geom/GeometryFactory.cpp, - src/geom/LineSegment.cpp, src/geom/LineString.cpp, - src/geom/LinearRing.cpp, src/geom/Point.cpp, src/geom/Polygon.cpp, - src/geom/util/GeometryTransformer.cpp, - src/geom/util/SineStarFactory.cpp, src/geomgraph/GeometryGraph.cpp, - src/geomgraph/PlanarGraph.cpp, src/index/chain/MonotoneChain.cpp, - src/index/quadtree/Node.cpp, src/index/quadtree/Root.cpp, - src/index/strtree/AbstractSTRtree.cpp, - src/index/strtree/BoundablePair.cpp, src/index/strtree/SIRtree.cpp, - src/index/strtree/STRtree.cpp, src/io/WKTReader.cpp, - src/linearref/LinearLocation.cpp, src/noding/GeometryNoder.cpp, - src/noding/snapround/HotPixel.cpp, - src/noding/snapround/MCIndexSnapRounder.cpp, - src/operation/IsSimpleOp.cpp, - src/operation/buffer/BufferBuilder.cpp, - src/operation/buffer/BufferInputLineSimplifier.cpp, - src/operation/buffer/BufferOp.cpp, - src/operation/buffer/OffsetCurveBuilder.cpp, - src/operation/buffer/OffsetCurveSetBuilder.cpp, - src/operation/distance/FacetSequenceTreeBuilder.cpp, - src/operation/distance/IndexedFacetDistance.cpp, - src/operation/intersection/RectangleIntersection.cpp, - src/operation/intersection/RectangleIntersectionBuilder.cpp, - src/operation/linemerge/LineMergeGraph.cpp, - src/operation/linemerge/LineSequencer.cpp, - src/operation/overlay/OverlayOp.cpp, - src/operation/overlay/snap/GeometrySnapper.cpp, - src/operation/overlay/snap/LineStringSnapper.cpp, - src/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, - src/operation/overlay/snap/SnapOverlayOp.cpp, - src/operation/overlay/validate/FuzzyPointLocator.cpp, - src/operation/overlay/validate/OffsetPointGenerator.cpp, - src/operation/overlay/validate/OverlayResultValidator.cpp, - src/operation/relate/RelateComputer.cpp, - src/operation/sharedpaths/SharedPathsOp.cpp, - src/operation/union/CascadedPolygonUnion.cpp, - src/operation/union/CascadedUnion.cpp, - src/operation/union/PointGeometryUnion.cpp, - src/operation/union/UnaryUnionOp.cpp, - src/operation/valid/ConsistentAreaTester.cpp, - src/operation/valid/IndexedNestedRingTester.h, - src/precision/CommonBitsOp.cpp, - src/precision/EnhancedPrecisionOp.cpp, - src/precision/GeometryPrecisionReducer.cpp, - src/precision/MinimumClearance.cpp, - src/simplify/DouglasPeuckerLineSimplifier.cpp, - src/simplify/DouglasPeuckerSimplifier.cpp, - src/simplify/LineSegmentIndex.cpp, - src/simplify/TaggedLineString.cpp, - src/simplify/TaggedLineStringSimplifier.cpp, - src/simplify/TopologyPreservingSimplifier.cpp, - src/triangulate/DelaunayTriangulationBuilder.cpp, - src/triangulate/VoronoiDiagramBuilder.cpp, - src/triangulate/quadedge/QuadEdge.cpp, - src/triangulate/quadedge/QuadEdgeSubdivision.cpp, - src/triangulate/quadedge/Vertex.cpp, - src/util/GeometricShapeFactory.cpp, - tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bug234.cpp, - tests/perf/operation/buffer/IteratedBufferStressTest.cpp, - tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp, - tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, - tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, - tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, - tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/algorithm/InteriorPointAreaTest.cpp, - tests/unit/algorithm/MinimumDiameterTest.cpp, - tests/unit/algorithm/PointLocatorTest.cpp, - tests/unit/algorithm/RobustLineIntersectionTest.cpp, - tests/unit/algorithm/RobustLineIntersectorTest.cpp, - tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, - tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, - tests/unit/capi/GEOSContainsTest.cpp, - tests/unit/capi/GEOSPreparedGeometryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateListTest.cpp, - tests/unit/geom/Geometry/clone.cpp, - tests/unit/geom/Geometry/coversTest.cpp, - tests/unit/geom/Geometry/equalsTest.cpp, - tests/unit/geom/Geometry/normalize.cpp, - tests/unit/geom/Geometry/touchesTest.cpp, - tests/unit/geom/GeometryComponentFilterTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/GeometryFilterTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, - tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/geom/util/GeometryExtracterTest.cpp, - tests/unit/io/WKBReaderTest.cpp, tests/unit/io/WKBWriterTest.cpp, - tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp, - tests/unit/linearref/LengthIndexedLineTest.cpp, - tests/unit/noding/BasicSegmentStringTest.cpp, - tests/unit/noding/NodedSegmentStringTest.cpp, - tests/unit/noding/OrientedCoordinateArray.cpp, - tests/unit/noding/SegmentNodeTest.cpp, - tests/unit/noding/SegmentPointComparatorTest.cpp, - tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, - tests/unit/operation/IsSimpleOpTest.cpp, - tests/unit/operation/buffer/BufferBuilderTest.cpp, - tests/unit/operation/buffer/BufferOpTest.cpp, - tests/unit/operation/distance/DistanceOpTest.cpp, - tests/unit/operation/intersection/RectangleIntersectionTest.cpp, - tests/unit/operation/linemerge/LineMergerTest.cpp, - tests/unit/operation/linemerge/LineSequencerTest.cpp, - tests/unit/operation/overlay/OverlayOpUnionTest.cpp, - tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, - tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, - tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, - tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, - tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp - p, tests/unit/operation/polygonize/PolygonizeTest.cpp, - tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, - tests/unit/operation/union/CascadedPolygonUnionTest.cpp, - tests/unit/operation/union/UnaryUnionOpTest.cpp, - tests/unit/operation/valid/IsValidTest.cpp, - tests/unit/operation/valid/ValidClosedRingTest.cpp, - tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp - , tests/unit/precision/GeometryPrecisionReducerTest.cpp, - tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, - tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, - tests/unit/triangulate/DelaunayTest.cpp, - tests/unit/triangulate/VoronoiTest.cpp, - tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, - tests/unit/triangulate/quadedge/QuadEdgeTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, - tests/unit/utility.h, tests/xmltester/BufferResultMatcher.cpp, - tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/SingleSidedBufferResultMatcher.cpp, - tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Replace - std::auto_ptr with std::unique_ptr Rename T::AutoPtr to T::Ptr. Add - explicit move of input arguments of unique_ptr type passed to sink - functions. Add explicit move of values of unique_ptr type returned - from source functions which give up class member resource. Comment - source functions with: NOTE: Apparently, this is 'source' method - giving up the object resource. Replace GeometryFactory::unique_ptr - with GeometryFactory::Ptr based on std::unique_ptr with custom - GeometryFactoryDeleter. Remove obscure dynamic_cast_auto_ptr from - test utilities. Part of GEOS RFC 5: C++11 Compilation Mode - -2017-09-07 Mateusz Loskot + * src/geom/prep/PreparedPolygonPredicate.cpp: Use custom + GeometryComponentFilter in PreparedPolygonPredicate to avoid + creating vectors - * configure.ac, macros/ax_check_compile_flag.m4, - macros/ax_cxx_compile_stdcxx.m4, macros/ax_cxx_compile_stdcxx_11.m4: - Set C++11 as required standard Add -Wsuggest-override or - -Wmissing-override compiler options. Part of GEOS RFC 5: C++11 - Compilation Mode +2019-06-05 Daniel Baston -2017-09-07 Mateusz Loskot + * src/geom/prep/PreparedPolygonPredicate.cpp: Add Point + short-circuit to + PreparedPolygonPredicate::isAnyTestComponentInTargetInterior - * src/Makefile.vc, src/geom/Makefile.am: Remove GeometryList from - makefiles. Update for: Remove GeometryList class (#9) +2019-06-05 Daniel Baston -2017-09-07 Sandro Santilli + * src/geom/prep/BasicPreparedGeometry.cpp: Avoid performing envelope + test against Points This causes an Envelope to be created and allocated for each point. - Merge branch 'ml/remove-GeometryList' of mloskot/geos into - master +2019-06-05 Daniel Baston -2017-09-07 Mateusz Loskot + * src/geom/prep/AbstractPreparedPolygonContains.cpp: Avoid + double-testing all positive PIP results in + AbstractPreparedPolygonContains - * include/geos/geom/GeometryList.h, src/geom/GeometryList.cpp: - Remove GeometryList class It is completely unused in GEOS and - becomes deprecated in C++11. Use std::vector instead. - Part of GEOS RFC 5: C++11 Compilation Mode +2019-06-05 Daniel Baston -2017-09-07 Mateusz Loskot + * include/geos/algorithm/RayCrossingCounter.h, + src/algorithm/RayCrossingCounter.cpp: Use adaptive OrientationIndex + in RayCrossingCounter Provides a roughly 20% gain in GEOSPreparedContains benchmark. - * tools/build-cmake.bat: [CMake] Add build-cmake.bat utility for - convenience. Builds GEOS using CMake and Visual Studio 2017 for - 32-bit or 64-bit platform. (eg. cd geos; tools\build-cmake.bat 64) +2019-06-05 Daniel Baston -2017-09-07 Mateusz Loskot + * benchmarks/capi/CMakeLists.txt, + benchmarks/capi/GEOSPreparedContainsPerfTest.cpp: Add + GEOSPreparedContains perf test - * CMakeLists.txt: [CMake] Report CMAKE_CXX_STANDARD value in - configuration output +2019-06-05 Daniel Baston -2017-09-07 Mateusz Loskot + * include/geos/operation/predicate/SegmentIntersectionTester.h, + src/operation/distance/FacetSequence.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/predicate/SegmentIntersectionTester.cpp: Remove + additional unnecessary Coordinate copies Located by checking usages of CoordinateSequence::getAt(size_t, + Coordinate&); - * CMakeLists.txt: [CMake] Set CMAKE_CXX_EXTENSIONS to OFF (require - -std=c++11) Move C++ standard settings to top of CMakeLists.txt. +2019-06-05 Daniel Baston -2017-04-26 nila + * src/algorithm/LineIntersector.cpp, + src/geom/CoordinateSequence.cpp, + src/geom/prep/PreparedLineStringIntersects.cpp, + src/operation/distance/FacetSequence.cpp, + src/operation/overlay/PolygonBuilder.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp: Remove some + unnecessary Coordinate copies Located using a quick check of egrep -Rn "Coordinate .*=" - * src/linearref/LinearLocation.cpp: Remove redundant code Closes - #832 +2019-06-05 Daniel Baston -2017-07-27 Sandro Santilli + * src/geom/LineSegment.cpp: Resolve trivial TODO in + LineSegment::reverse - * include/geos/geom/BinaryOp.h, - src/operation/union/CascadedPolygonUnion.cpp: Fix debug print syntax - And add more debugging lines +2019-06-04 Daniel Baston -2017-08-29 Mateusz Loskot + * doc/example.cpp, include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geomgraph/EdgeRing.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/noding/SegmentIntersectionDetector.h, + include/geos/operation/linemerge/EdgeString.h, + include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/valid/RepeatedPointRemover.h, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp, src/geom/Polygon.cpp, + src/geomgraph/EdgeRing.cpp, src/io/WKTReader.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/linemerge/EdgeString.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/valid/RepeatedPointRemover.cpp, + tests/bigtest/GeometryTestFactory.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp, + tests/unit/geom/PointTest.cpp, + tests/unit/noding/BasicSegmentStringTest.cpp, + tests/unit/noding/NodedSegmentStringTest.cpp, + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp: Move + CoordinateSequence::add variants to CoordinateArraySequence Making this change removes the assumption that any + CoordinateSequence is resizable, which opens the door to a + CoordinateSequence that is blocked by a raw block of memory (such as + a PostGIS POINTARRAY). The default CoordinateArraySequence constructor now creates a + CoordinateSequence of unknown dimension (dimension determined when + the first Coordinate is assigned) rather than of dimension 3. This + is for consistency with the behavior of the + CoordinateArraySequenceFactory. - * tests/unit/capi/GEOSPointOnSurfaceTest.cpp: Add GEOSPointOnSurface - test for case of three similar polygons Might help to catch - significant changes in algorithm calculating point on surface. - Source https://trac.osgeo.org/geos/ticket/840 +2019-06-04 Daniel Baston -2017-08-29 Mateusz Loskot + * include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateSequence.h, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp: Implement + CoordinateSequence::toString() Instead of being a pure virtual function that all implementations + must provide, CoordinateSequence::toString() now uses the existing + ostream operator to provide a consistent string representation for + any CoordinateSequence. - * CMakeLists.txt: [CMake] Add LANGUAGES property to project command - Note, VERSION property components must be integers, and cannot be - added due to 'dev' suffix in VERSION_PATCH. +2019-06-04 Daniel Baston -2017-08-29 Mateusz Loskot + * src/algorithm/MinimumBoundingCircle.cpp, + src/algorithm/MinimumDiameter.cpp, src/geom/GeometryFactory.cpp, + src/geom/LineSegment.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Remove some + trivial uses of CoordinateSequence::add - * CMakeLists.txt: [CMake] Set C++11 as required standard GEOS RFC - 5: C++11 Compilation Mode +2019-06-03 Daniel Baston -2017-08-29 Mateusz Loskot + * : commit 03b2f7d2f73dc0d8cb3a2b1c53f2ad7970be6701 Author: Daniel + Baston Date: Mon Jun 3 21:23:41 2019 -0400 - * nmake.opt: Add NMAKE version from latest VS 2017 and 2015 +2019-06-03 Sandro Santilli -2017-07-25 Sandro Santilli + * .drone-1.0.yml: [drone] pull docker image upfront - * HOWTO_RELEASE: Indexed steps, configure.ac name fix +2019-06-03 Sandro Santilli -2017-07-19 Sandro Santilli + * include/geos/algorithm/locate/IndexedPointInAreaLocator.h: + [doxygen] Fix more links - * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, - tests/xmltester/XMLTester.h, tests/xmltester/tests/general/MISSING, - tests/xmltester/tests/general/TestPreparedPointPredicate.xml, - tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml, - tests/xmltester/tests/general/TestPreparedPredicatesWithGeometryCol - lection.xml: Add support for testing prepared geometries operations - in XMLTester Add 3 more tests from JTS testsuite now that they can - be run See #694 +2019-06-03 Sandro Santilli -2017-07-19 Sandro Santilli + * .drone-1.0.yml: [drone] Build doxygen docs too - * tests/xmltester/JTSXMLTester.sh: Allow passing switches to JTS - test runner +2019-05-23 Daniel Baston -2017-07-18 Tamas Szekeres + * include/geos/util.h, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/geom/CoordinateArraySequence.cpp, src/geom/GeometryFactory.cpp, + src/geomgraph/PlanarGraph.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/valid/RepeatedPointRemover.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/triangulate/quadedge/Vertex.cpp: Add make_unique to geos_util.h - * src/io/CLocalizer.cpp: Fix multithreading issue for MSVC caused by - setlocale +2019-06-03 Daniel Baston -2017-07-18 Tamas Szekeres + * : Merge remote-tracking branch 'origin/distanceop-refactor' - * include/geos/geom/Envelope.h: Fix build error with MSVC +2019-06-03 Sandro Santilli -2017-07-14 Sandro Santilli + * include/geos/algorithm/distance/DiscreteFrechetDistance.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/operation/distance/DistanceOp.h, + include/geos/operation/overlay/snap/GeometrySnapper.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/CascadedUnion.h, + include/geos/precision/GeometryPrecisionReducer.h, + include/geos/precision/SimpleGeometryPrecisionReducer.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/IncrementalDelaunayTriangulator.h: Fix some + doxygen link resolutions - * tests/xmltester/XMLTester.cpp: Use overlay specific result checker - The check just supports some snap-distance based tolerance for exact - match (in addition to topology equality which is needed for some JTS - tests to pass) +2019-05-29 Daniel Baston -2017-07-14 Sandro Santilli + * include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/IncrementalDelaunayTriangulator.h, + include/geos/triangulate/VoronoiDiagramBuilder.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/IncrementalDelaunayTriangulator.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Improve + performance of VoronoiDiagramBuilder - Ensure vertices are inserted in sorted order - Reduce manual memory allocation - Remove some unnecessary copying - Use unordered_set instead of set Overall performance improvement is about 20-30% using the random + points benchmark for the case of a Geometry input. The improvement + is > 5x for the case of a CoordinateSequence input due to a + performance bug (vertices not sorted) that may have been recently + introduced. - * .editorconfig: Stackwalker.cpp uses 2 space indent while - XMLTester.cpp 2 space +2019-05-29 Daniel Baston -2017-07-14 Sandro Santilli + * benchmarks/algorithm/CMakeLists.txt, + benchmarks/algorithm/VoronoiPerfTest.cpp: Add Voronoi perf test - * .editorconfig: Stackwalker.cpp also wants spaces +2019-05-30 nila -2017-07-14 Sandro Santilli + * doc/Doxyfile.in: updated to Doxygen 1.8.14 - * .editorconfig: XMLTester.cpp wants space indent +2019-05-30 nila -2017-07-14 Sandro Santilli + * .gitignore: Hide doxygen generated doc files from git - * tests/xmltester/JTSXMLTester.sh: Add copyright header +2019-05-29 Daniel Baston -2017-07-14 Sandro Santilli + * capi/geos_ts_c.cpp, include/geos/geom/LineSegment.h, + include/geos/geom/LineSegment.inl, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/operation/distance/DistanceOp.h, + src/geom/LineSegment.cpp, + src/operation/distance/ConnectedElementLocationFilter.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/distance/FacetSequence.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp: Resolve memory + leaks in DistanceOp This commit takes a fairly invasive approach to resolving the leaks + and removes all manual memory management from the DistanceOp class. - * tests/xmltester/JTSXMLTester.sh: Add JTSXMLTester.sh script - Useful to compare results between GEOS and JTS. Works with newer JTS - versions (Maven-based install, locationtech namespace) +2019-05-22 nila -2017-07-14 Sandro Santilli + * include/geos/algorithm/Distance.h, + include/geos/algorithm/Length.h, + include/geos/algorithm/LineIntersector.h, + include/geos/algorithm/MinimumDiameter.h, + include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/Envelope.h, include/geos/geom/Geometry.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/LineSegment.h, include/geos/geom/Location.h, + include/geos/geom/PrecisionModel.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/prep/PreparedLineStringIntersects.h, + include/geos/geom/prep/PreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonContainsProperly.h, + include/geos/geom/prep/PreparedPolygonCovers.h, + include/geos/geom/prep/PreparedPolygonIntersects.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/EdgeEndStar.h, + include/geos/geomgraph/PlanarGraph.h, + include/geos/geomgraph/Quadrant.h, + include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + include/geos/index/quadtree/NodeBase.h, + include/geos/linearref/LengthIndexOfPoint.h, + include/geos/linearref/LengthIndexedLine.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/linearref/LinearLocation.h, + include/geos/linearref/LocationIndexedLine.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/NodedSegmentString.h, + include/geos/noding/NodingIntersectionFinder.h, + include/geos/noding/SegmentNode.h, + include/geos/noding/SegmentSetMutualIntersector.h, + include/geos/noding/snapround/SimpleSnapRounder.h, + include/geos/operation/buffer/BufferOp.h, + include/geos/operation/buffer/BufferParameters.h, + include/geos/operation/buffer/BufferSubgraph.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/overlay/snap/LineStringSnapper.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/sharedpaths/SharedPathsOp.h, + include/geos/operation/valid/ConsistentAreaTester.h, + include/geos/operation/valid/IsValidOp.h, + include/geos/planargraph/DirectedEdge.h, + include/geos/planargraph/GraphComponent.h, + include/geos/planargraph/PlanarGraph.h, + include/geos/precision/CommonBits.h, + include/geos/precision/EnhancedPrecisionOp.h, + include/geos/precision/SimpleGeometryPrecisionReducer.h, + include/geos/simplify/DouglasPeuckerSimplifier.h, + include/geos/simplify/TaggedLineStringSimplifier.h, + include/geos/simplify/TopologyPreservingSimplifier.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/quadedge/QuadEdge.h, + include/geos/triangulate/quadedge/TrianglePredicate.h, + include/geos/triangulate/quadedge/Vertex.h, + include/geos/util/GeometricShapeFactory.h, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/polygonize/PolygonizeDirectedEdge.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/simplify/TopologyPreservingSimplifier.cpp: Fix inconsistent + doxygen documentation - * .editorconfig, - include/geos/operation/union/CascadedPolygonUnion.h, - include/geos/operation/union/GeometryListHolder.h: CascadedUnion - uses spaces indent also in include files Convert the TABS added in - previous commit, and a single spurious tab found in existing file, - secure style in editorconfig +2019-05-29 Daniel Baston -2017-07-11 Sandro Santilli + * benchmarks/CMakeLists.txt: Add missing benchmark to CMake build - * include/geos/operation/union/CascadedPolygonUnion.h, +2019-05-28 Daniel Baston + + * include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateSequence.h, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp, src/geom/Polygon.cpp, + src/operation/buffer/BufferBuilder.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp: Remove + CoordinateSequence::deleteAt Having a deleteAt method in the CoordinateSequence interface + requires that all CoordinateSequence implementations be resizable, + which greatly limits the scope of possible implementations. The + deleteAt method is only used in two locations (one of them very + inefficiently), so nothing is lost by removing it. + +2019-05-29 Daniel Baston + + * .codecov.yml: Disable coverage comments on PRs [ci skip] + +2019-05-29 Daniel Baston + + * : commit 366cc04962fafa898c43d9b91848d5c7b58fc82f Author: Daniel + Baston Date: Wed May 29 16:46:21 2019 -0400 + +2019-05-29 Daniel Baston + + * .travis.yml, CMakeLists.txt, tools/ci/script_cmake.sh: Report code + coverage from Travis [skip appveyor] + +2019-05-29 Daniel Baston + + * src/algorithm/ConvexHull.cpp: Fix compilation with gcc 4.8 + +2019-05-29 Daniel Baston + + * doc/example.cpp: Fix compilation of example.cpp + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, + include/geos/algorithm/MinimumBoundingCircle.h, + include/geos/geom/BinaryOp.h, include/geos/geom/Geometry.h, + include/geos/geom/util/Densifier.h, + include/geos/precision/CommonBitsOp.h, + include/geos/precision/CommonBitsRemover.h, + include/geos/precision/EnhancedPrecisionOp.h, + src/algorithm/MinimumBoundingCircle.cpp, src/geom/Geometry.cpp, + src/geom/util/Densifier.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/overlay/snap/SnapOverlayOp.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/union/UnaryUnionOp.cpp, + src/operation/valid/MakeValid.cpp, src/precision/CommonBitsOp.cpp, + src/precision/CommonBitsRemover.cpp, + src/precision/EnhancedPrecisionOp.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/xmltester/XMLTester.cpp: Return unique_ptr from Geometry + overlay, buffer methods Also make these methods non-virtual, since Geometry subclasses have + no overriding implementations. + +2019-05-28 Daniel Baston + + * include/geos/geom/Geometry.h: Make Geometry::getInteriorPoint + non-virtual Subclasses have no overriding implementations. + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/geom/Geometry.h, + src/geom/Geometry.cpp: Return unique_ptr from + Geometry::getInteriorPoint + +2019-05-28 Daniel Baston + + * include/geos/geom/Geometry.h: Make Geometry::relate non-virtual Subclasses have no overriding implementations. + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/geom/Geometry.h, + include/geos/operation/relate/RelateComputer.h, + include/geos/operation/relate/RelateOp.h, src/geom/Geometry.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateOp.cpp: Return unique_ptr from + Geometry::relate + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/LineString.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Point.h, include/geos/geom/Polygon.h, + src/geom/Geometry.cpp, src/geom/GeometryCollection.cpp, + src/geom/LineString.cpp, src/geom/MultiLineString.cpp, + src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp, + src/geom/Point.cpp, src/geom/Polygon.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/polygonize/BuildArea.cpp, + src/operation/valid/MakeValid.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, + tests/unit/geom/PolygonTest.cpp: Return unique_ptr from + Geometry::getEnvelope, getBoundary, getCentroid + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/algorithm/ConvexHull.h, + include/geos/geom/Geometry.h, include/geos/geom/Polygon.h, + src/algorithm/ConvexHull.cpp, src/algorithm/MinimumDiameter.cpp, + src/geom/Geometry.cpp, src/geom/Polygon.cpp, + tests/unit/algorithm/ConvexHullTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, + tests/unit/geom/PolygonTest.cpp: Return unique_ptr from + Geometry::convexHull() + +2019-05-28 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/geom/BinaryOp.h, + include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiLineString.inl, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/MultiPolygon.inl, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, + include/geos/linearref/ExtractLineByLocation.h, + include/geos/linearref/LengthIndexedLine.h, + include/geos/linearref/LocationIndexedLine.h, + src/geom/Geometry.cpp, src/geom/GeometryCollection.cpp, + src/geom/GeometryFactory.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/MultiLineString.cpp, + src/geom/MultiPolygon.cpp, src/geom/Polygon.cpp, + src/geom/util/CoordinateOperation.cpp, src/geomgraph/EdgeRing.cpp, + src/linearref/ExtractLineByLocation.cpp, + src/linearref/LengthIndexedLine.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/snap/SnapOverlayOp.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/polygonize/BuildArea.cpp, src/operation/union/CascadedPolygonUnion.cpp, - tests/xmltester/Makefile.am, - tests/xmltester/tests/ticket/bug837.xml: UnaryUnion: Drop assumption - about union not moving vertices The assumption resulted in invalid - geometries being output by CascadedPolygonUnion intermediary results - and then fed as input by further union calls, which in turn would - fail on first robustness issue. Fixes #837 Includes automated XML - test + src/operation/union/CascadedUnion.cpp, + src/precision/CommonBitsOp.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + tests/unit/geom/Geometry/normalize.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/MultiPointTest.cpp, + tests/unit/geom/PolygonTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Return + unique_ptr from Geometry::clone and Geometry::reverse -2017-07-14 Sandro Santilli +2019-05-29 Daniel Baston - * .editorconfig: Institutionalize that CascadedUnion directory uses - spaces indent + * CMakeLists.txt, doc/CMakeLists.txt: [CMake] Add target for + doc/example.cpp Important to make sure example still compiles after C++ API changes. + Resolves #901. -2017-07-11 Sandro Santilli +2019-05-29 Daniel Baston - * include/geos/geom/BinaryOp.h: Move CBR_BEFORE_SNAPPING macro on - top of the file + * src/operation/distance/FacetSequence.cpp: Clear -Wshadow warning + in FacetSequence -2017-06-30 Sandro Santilli +2019-05-29 Daniel Baston - * include/geos/geom/Envelope.h, src/geom/Envelope.cpp: Add output - operator for geom::Envelope class + * src/algorithm/InteriorPointArea.cpp: Remove unneeded Coordinate + copies in InteriorPointArea -2017-06-30 Sandro Santilli +2019-05-28 Daniel Baston - * include/geos/geom/BinaryOp.h: Optionally debug-print invalid - geometry + * : commit c6b3d82d4c3954288758344c6d46d1893bdb2850 Author: Daniel + Baston Date: Tue May 28 20:30:24 2019 -0400 -2017-06-30 Sandro Santilli +2019-05-28 Daniel Baston - * include/geos/geom/BinaryOp.h: Add (disabled) code to check - validity of overlay op results + * : Merge remote-tracking branch 'mloskot/ml/azure-pipelines' -2017-06-22 Sandro Santilli +2019-05-25 Sandro Santilli - Merge pull request #85 from grizonnetm/master ENH: add - GenerateSourceGroups.cmake to EXTRA_DIST Closes #753 + * .drone-1.0.yml, .gitlab-ci.yml, configure.ac: [automake] Enable + silent rule, use in Dronie and Gitlab-CI -2017-06-22 Manuel Grizonnet +2019-05-24 Regina Obe - * Makefile.am: ENH: add GenerateSourceGroups.cmake to EXTRA_DIST + * README.md: Update 'README.md' Incorporate windows VS 2019 instructions from Mateusz Loskot - -2017-04-29 Mateusz Loskot + https://github.com/mloskot/mateusz.loskot.net/blob/master/content/post/2019/05/geos-with-cmake-and-vs2019.md - Merge branch 'master' of https://git.osgeo.org/gogs/geos/geos +2019-05-24 Regina Obe -2017-04-29 Mateusz Loskot + * .gitignore: Exclude out directory from commit - * tests/xmltester/XMLTester.cpp: Remove UTF-8 BOM [ci skip] +2019-05-21 Mateusz Åoskot -2017-04-29 Sandro Santilli + * .azure-pipelines.yml: Add CI builds on Azure Pipelines using CMake - * .editorconfig: Istitutionalize CR line ending in appveyor.yml +2019-05-24 Paul Ramsey -2017-04-29 Sandro Santilli + * include/geos/operation/predicate/RectangleContains.h: Quiet + warning - * .editorconfig: Use CRLF line ending for nmake.opt too +2019-05-24 Paul Ramsey -2017-04-29 Mateusz Loskot + * : commit a67be9b65839913fc2514f6ef77ff8e5e6b180cf Merge: b41859a + 39ce10e Author: Paul Ramsey Date: Fri + May 24 14:55:16 2019 -0700 - * README.md: Typo in branch name [ci skip] +2019-05-24 Paul Ramsey -2017-04-29 Mateusz Loskot + * : commit bacf81826199943cd6f697c5a14db79a7e9ad598 Author: Paul + Ramsey Date: Fri May 24 14:52:48 2019 + -0700 - * .travis.yml, README.md, appveyor.yml: Rename svn-trunk branch to - master Part of #822 +2019-05-24 Regina Obe -2017-04-24 Mateusz Åoskot + * CMakeLists.txt: Put back DISABLE_GEOS_INLINE and take out + GEOS_ENABLE_INLINE. Has clearer meaning though a breaking change. + References #970 - * tests/xmltester/XMLTester.cpp: Avoid use of internal - geos/util/math.h Copy java_math_round geos/util/math.cpp to - xmltester.cpp. Declared functions are internal to the library and - not included in GEOS shared library exports. Fixes #831 +2019-05-24 Paul Ramsey -2017-04-18 Mateusz Åoskot + * : commit fd44e762caa064440e4c0e7874e24dd271c58cec Author: Mateusz + Åoskot Date: Fri May 24 10:14:53 2019 +0200 - * nmake.opt: Add NMAKE_VER from VS 2017 Version 15.1 +2019-05-24 Mateusz Åoskot -2017-04-12 Kurt Schwehr + * CMakeLists.txt: Disable dist and distcheck targets for + multi-configuration generators Those targets are useless for the IDEs. Those targets have also + potential to be troublesome for the IDEs. - * src/io/WKTReader.cpp, tests/unit/io/WKTReaderTest.cpp: Fix leaks - in WKT parser Cleanup if failing to parse the WKT MultiLineString, - MultiPolygon, and GeometryCollection string. Wrap parsing in try - blocks. Catch any exception, cleanup, and rethrow. Closes #830 - Includes testcase Signed-off-by: Sandro Santilli +2019-05-24 Mateusz Åoskot -2017-04-12 Sandro Santilli + * CMakeLists.txt: Point CMAKE_*_OUTPUT_DIRECTORY to common location Place executables and shared libraries in the same location for + convenience of direct execution from common spot and for convenience + in environments without RPATH support. In future, if number of generated executables grows significantly, + with possible name clashes, it may be more convenient to replace the + common locations with setting PATH per test, on Windows only: set_tests_properties( PROPERTIES ENVIRONMENT + "PATH=$>$$>$$ENV{PATH}" ) - * README.md: Update drone build badge url [ci skip] +2019-05-23 Daniel Baston -2017-04-11 Kurt Schwehr + * tests/unit/tut/tut.hpp: Add comment explaining c14208190ad4 - * include/geos/io/StringTokenizer.h, src/io/StringTokenizer.cpp: Add - explicit to StringTokenizer ctor and move more to the initializer - list in ctor. Signed-off-by: Sandro Santilli +2019-05-23 Daniel Baston -2017-04-11 Sandro Santilli + * : Merge remote-tracking branch 'mloskot/ml/fix-msvc-warning-C4189' - * tests/xmltester/XMLTester.cpp: Fixed compile error in Microsoft - VS2010 Patch by sunxunfeng See #801 +2019-05-23 Daniel Baston -2017-04-10 Mateusz Loskot + * : Merge remote-tracking branch 'mloskot/ml/add-missing-dll-export' - * tests/unit/capi/GEOSSTRtreeTest.cpp: Add explicit cast of sqrt - arguments to double Fixes parts of #801 +2019-05-24 Mateusz Åoskot -2017-04-10 Mateusz Loskot + * tests/unit/tut/tut.hpp: Fix MSVC warning C4189: local variable not + referenced This is to avoid flood of 100+ occurrences of the warning. - * tools/CMakeLists.txt: [CMake] Fix geos-config is not installed on - MinGW/MSYS builds Closes #706 +2019-05-24 Mateusz Åoskot -2017-04-08 Sandro Santilli + * CMakeLists.txt: Add GEOS_DLL_EXPORT to compile definitions for + MSVC Required to trigger generation of `.lib` archive with import library + for DLL. - * TODO: Triangulation API was ported +2019-05-23 Paul Ramsey -2017-04-08 Sandro Santilli + * appveyor.yml: Try to get clean appveyor build - * HOWTO_RELEASE: Update release howto for SVN -> GIT move See #825 +2019-05-23 Paul Ramsey + * Makefile.am, capi/CMakeLists.txt, capi/geos_c.h.in, + capi/geos_ts_c.cpp, cmake/GetGitRevision.cmake, configure.ac: Remove + GIT_COMMIT_HASH entirely -2017-04-08 Sandro Santilli +2019-05-23 Daniel Baston - * tests/unit/Makefile.am: Distribute all of the new TUT Should fix - #824 + * include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateSequence.h, + src/geom/CoordinateArraySequence.cpp, src/geom/LinearRing.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/overlay/validate/OverlayResultValidator.cpp, + src/simplify/DouglasPeuckerSimplifier.cpp: Remove + CoordinateSequence::toVector() Deprecated a decade ago, but still used a couple of times within + GEOS. Supports the goal of a smaller CoordinateSequence interface. -2017-04-08 Mateusz Loskot +2019-05-23 Daniel Baston - * tests/CMakeLists.txt, tests/unit2/CMakeLists.txt, - tests/unit2/geom/PointTest.cpp, - tests/unit2/geos_include_all_headers.cpp: Drop pilot of Catch-based - tests + * : commit 449b033d832d2fefeb86d5d43964a19ba70e4688 Merge: 534da33 + 3a8cc94 Author: Daniel Baston Date: Thu May 23 + 15:51:00 2019 -0400 -2017-04-07 Mateusz Loskot +2019-05-23 Daniel Baston - * tests/unit/CMakeLists.txt, tests/unit/algorithm/AngleTest.cpp, - tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, - tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, - tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, - tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/algorithm/InteriorPointAreaTest.cpp, - tests/unit/algorithm/MinimumDiameterTest.cpp, - tests/unit/algorithm/PointLocatorTest.cpp, - tests/unit/algorithm/RobustLineIntersectionTest.cpp, - tests/unit/algorithm/RobustLineIntersectorTest.cpp, - tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, - tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, - tests/unit/capi/GEOSBufferTest.cpp, - tests/unit/capi/GEOSClipByRectTest.cpp, - tests/unit/capi/GEOSContainsTest.cpp, - tests/unit/capi/GEOSConvexHullTest.cpp, - tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSDelaunayTriangulationTest.cpp, - tests/unit/capi/GEOSDistanceTest.cpp, - tests/unit/capi/GEOSEqualsTest.cpp, - tests/unit/capi/GEOSFrechetDistanceTest.cpp, - tests/unit/capi/GEOSGeomFromWKBTest.cpp, - tests/unit/capi/GEOSGeomToWKTTest.cpp, - tests/unit/capi/GEOSGeom_create.cpp, - tests/unit/capi/GEOSGeom_createCollection.cpp, - tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, - tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, - tests/unit/capi/GEOSGetCentroidTest.cpp, - tests/unit/capi/GEOSHausdorffDistanceTest.cpp, - tests/unit/capi/GEOSInterruptTest.cpp, - tests/unit/capi/GEOSIntersectionTest.cpp, - tests/unit/capi/GEOSIntersectsTest.cpp, - tests/unit/capi/GEOSLineString_PointTest.cpp, - tests/unit/capi/GEOSMinimumClearanceTest.cpp, - tests/unit/capi/GEOSMinimumRectangleTest.cpp, - tests/unit/capi/GEOSMinimumWidthTest.cpp, - tests/unit/capi/GEOSNearestPointsTest.cpp, - tests/unit/capi/GEOSNodeTest.cpp, - tests/unit/capi/GEOSOffsetCurveTest.cpp, - tests/unit/capi/GEOSOrientationIndex.cpp, - tests/unit/capi/GEOSPointOnSurfaceTest.cpp, - tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp, - tests/unit/capi/GEOSPreparedGeometryTest.cpp, - tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp, - tests/unit/capi/GEOSRelatePatternMatchTest.cpp, - tests/unit/capi/GEOSSTRtreeTest.cpp, - tests/unit/capi/GEOSSharedPathsTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp, - tests/unit/capi/GEOSSnapTest.cpp, - tests/unit/capi/GEOSUnaryUnionTest.cpp, - tests/unit/capi/GEOSUserDataTest.cpp, - tests/unit/capi/GEOSVoronoiDiagramTest.cpp, - tests/unit/capi/GEOSWithinTest.cpp, - tests/unit/capi/GEOSisClosedTest.cpp, - tests/unit/capi/GEOSisValidDetailTest.cpp, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateListTest.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/EnvelopeTest.cpp, - tests/unit/geom/Geometry/clone.cpp, - tests/unit/geom/Geometry/coversTest.cpp, - tests/unit/geom/Geometry/equalsTest.cpp, - tests/unit/geom/Geometry/isRectangleTest.cpp, - tests/unit/geom/Geometry/normalize.cpp, - tests/unit/geom/Geometry/touchesTest.cpp, - tests/unit/geom/GeometryComponentFilterTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/GeometryFilterTest.cpp, - tests/unit/geom/IntersectionMatrixTest.cpp, - tests/unit/geom/LineSegmentTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/PrecisionModelTest.cpp, - tests/unit/geom/TriangleTest.cpp, - tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/geom/util/GeometryExtracterTest.cpp, - tests/unit/geos_unit.cpp, - tests/unit/index/quadtree/DoubleBitsTest.cpp, - tests/unit/io/ByteOrderValuesTest.cpp, - tests/unit/io/WKBReaderTest.cpp, tests/unit/io/WKBWriterTest.cpp, - tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp, - tests/unit/io/WriterTest.cpp, - tests/unit/linearref/LengthIndexedLineTest.cpp, - tests/unit/noding/BasicSegmentStringTest.cpp, - tests/unit/noding/NodedSegmentStringTest.cpp, - tests/unit/noding/OrientedCoordinateArray.cpp, - tests/unit/noding/SegmentNodeTest.cpp, - tests/unit/noding/SegmentPointComparatorTest.cpp, - tests/unit/noding/snapround/HotPixelTest.cpp, - tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, - tests/unit/operation/IsSimpleOpTest.cpp, - tests/unit/operation/buffer/BufferBuilderTest.cpp, - tests/unit/operation/buffer/BufferOpTest.cpp, - tests/unit/operation/buffer/BufferParametersTest.cpp, - tests/unit/operation/distance/DistanceOpTest.cpp, - tests/unit/operation/intersection/RectangleIntersectionTest.cpp, - tests/unit/operation/linemerge/LineMergerTest.cpp, - tests/unit/operation/linemerge/LineSequencerTest.cpp, - tests/unit/operation/overlay/OverlayOpUnionTest.cpp, - tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, - tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, - tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, - tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, - tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp - p, tests/unit/operation/polygonize/PolygonizeTest.cpp, - tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, - tests/unit/operation/union/CascadedPolygonUnionTest.cpp, - tests/unit/operation/union/UnaryUnionOpTest.cpp, - tests/unit/operation/valid/IsValidTest.cpp, - tests/unit/operation/valid/ValidClosedRingTest.cpp, - tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp - , tests/unit/precision/GeometryPrecisionReducerTest.cpp, - tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, - tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, - tests/unit/triangulate/DelaunayTest.cpp, - tests/unit/triangulate/VoronoiTest.cpp, - tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, - tests/unit/triangulate/quadedge/QuadEdgeTest.cpp, - tests/unit/triangulate/quadedge/VertexTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, - tests/unit/utility.h: Include buried TUT headers using + * nmake.opt: Remove leftover nmake.opt NMake support was removed following discussion in + https://lists.osgeo.org/pipermail/geos-devel/2018-December/008787.html -2017-04-07 Sandro Santilli +2019-05-23 Daniel Baston - Merge branch 'no-trailing-blanks' of strk/geos into svn-trunk + * : commit b3d48db34c0b024fc660b94b22eb50ca299478b1 Author: Sandro + Santilli Date: Thu May 23 16:13:29 2019 +0200 -2017-04-07 Sandro Santilli +2019-05-22 Daniel Baston - * Makefile.am: Add "check" rule step to verify no trailing blanks - are found in code + * capi/geos_ts_c.cpp, + include/geos/geom/prep/PreparedGeometryFactory.h, + src/geom/prep/PreparedGeometryFactory.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/xmltester/XMLTester.cpp: Use unique_ptr for prepared + geometries -2017-04-07 Sandro Santilli +2019-05-22 Daniel Baston - * doc/example.cpp, include/acconfig.h, include/geos.h, - include/geos/algorithm/Angle.h, - include/geos/algorithm/BoundaryNodeRule.h, - include/geos/algorithm/CGAlgorithms.h, - include/geos/algorithm/CentralEndpointIntersector.h, - include/geos/algorithm/Centroid.h, - include/geos/algorithm/CentroidArea.h, - include/geos/algorithm/CentroidLine.h, - include/geos/algorithm/CentroidPoint.h, - include/geos/algorithm/ConvexHull.h, - include/geos/algorithm/HCoordinate.h, - include/geos/algorithm/InteriorPointArea.h, - include/geos/algorithm/InteriorPointLine.h, - include/geos/algorithm/InteriorPointPoint.h, - include/geos/algorithm/LineIntersector.h, - include/geos/algorithm/MCPointInRing.h, + * src/noding/ScaledNoder.cpp: Fix handling of repeated points in + ScaledNoder + +2019-05-22 Daniel Baston + + * capi/geos_ts_c.cpp, include/geos/algorithm/ConvexHull.h, include/geos/algorithm/MinimumDiameter.h, - include/geos/algorithm/NotRepresentableException.h, - include/geos/algorithm/PointInRing.h, - include/geos/algorithm/PointLocator.h, - include/geos/algorithm/RayCrossingCounter.h, - include/geos/algorithm/RobustDeterminant.h, - include/geos/algorithm/SIRtreePointInRing.h, - include/geos/algorithm/SimplePointInRing.h, - include/geos/algorithm/distance/DiscreteHausdorffDistance.h, - include/geos/algorithm/distance/DistanceToPoint.h, - include/geos/algorithm/locate/IndexedPointInAreaLocator.h, - include/geos/algorithm/locate/PointOnGeometryLocator.h, - include/geos/algorithm/locate/SimplePointInAreaLocator.h, - include/geos/geom.h, include/geos/geom/BinaryOp.h, include/geos/geom/CoordinateArraySequence.h, include/geos/geom/CoordinateArraySequenceFactory.h, - include/geos/geom/CoordinateFilter.h, - include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateArraySequenceFactory.inl, include/geos/geom/CoordinateSequence.h, include/geos/geom/CoordinateSequenceFactory.h, - include/geos/geom/CoordinateSequenceFilter.h, - include/geos/geom/Dimension.h, include/geos/geom/Envelope.h, + include/geos/geom/Geometry.h, include/geos/geom/GeometryCollection.h, - include/geos/geom/GeometryComponentFilter.h, - include/geos/geom/GeometryFactory.h, - include/geos/geom/GeometryFilter.h, - include/geos/geom/GeometryList.h, - include/geos/geom/IntersectionMatrix.h, - include/geos/geom/LineSegment.h, include/geos/geom/LineString.h, - include/geos/geom/Lineal.h, include/geos/geom/LinearRing.h, - include/geos/geom/Location.h, include/geos/geom/MultiLineString.h, - include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, include/geos/geom/Point.h, include/geos/geom/Polygon.h, - include/geos/geom/Polygonal.h, include/geos/geom/PrecisionModel.h, - include/geos/geom/Puntal.h, include/geos/geom/Triangle.h, - include/geos/geom/prep/AbstractPreparedPolygonContains.h, - include/geos/geom/prep/BasicPreparedGeometry.h, - include/geos/geom/prep/PreparedGeometry.h, - include/geos/geom/prep/PreparedGeometryFactory.h, - include/geos/geom/prep/PreparedLineString.h, - include/geos/geom/prep/PreparedLineStringIntersects.h, - include/geos/geom/prep/PreparedPoint.h, - include/geos/geom/prep/PreparedPolygon.h, - include/geos/geom/prep/PreparedPolygonContains.h, - include/geos/geom/prep/PreparedPolygonContainsProperly.h, - include/geos/geom/prep/PreparedPolygonCovers.h, - include/geos/geom/prep/PreparedPolygonIntersects.h, - include/geos/geom/prep/PreparedPolygonPredicate.h, - include/geos/geom/util/ComponentCoordinateExtracter.h, - include/geos/geom/util/CoordinateOperation.h, - include/geos/geom/util/GeometryCombiner.h, - include/geos/geom/util/GeometryEditor.h, - include/geos/geom/util/GeometryEditorOperation.h, - include/geos/geom/util/GeometryExtracter.h, - include/geos/geom/util/LinearComponentExtracter.h, - include/geos/geom/util/PointExtracter.h, - include/geos/geom/util/PolygonExtracter.h, - include/geos/geom/util/ShortCircuitedGeometryVisitor.h, - include/geos/geom/util/SineStarFactory.h, include/geos/geomPrep.h, - include/geos/geomUtil.h, include/geos/geomgraph.h, - include/geos/geomgraph/Depth.h, - include/geos/geomgraph/DirectedEdge.h, - include/geos/geomgraph/DirectedEdgeStar.h, - include/geos/geomgraph/Edge.h, include/geos/geomgraph/EdgeEnd.h, - include/geos/geomgraph/EdgeEndStar.h, - include/geos/geomgraph/EdgeIntersection.h, - include/geos/geomgraph/EdgeIntersectionList.h, - include/geos/geomgraph/EdgeList.h, - include/geos/geomgraph/EdgeNodingValidator.h, - include/geos/geomgraph/EdgeRing.h, - include/geos/geomgraph/GeometryGraph.h, - include/geos/geomgraph/GraphComponent.h, - include/geos/geomgraph/Label.h, include/geos/geomgraph/Node.h, - include/geos/geomgraph/NodeFactory.h, - include/geos/geomgraph/NodeMap.h, - include/geos/geomgraph/PlanarGraph.h, - include/geos/geomgraph/Position.h, - include/geos/geomgraph/Quadrant.h, - include/geos/geomgraph/TopologyLocation.h, - include/geos/geomgraph/index/EdgeSetIntersector.h, - include/geos/geomgraph/index/MonotoneChain.h, - include/geos/geomgraph/index/MonotoneChainEdge.h, - include/geos/geomgraph/index/MonotoneChainIndexer.h, - include/geos/geomgraph/index/SegmentIntersector.h, - include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, - include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, - include/geos/geomgraph/index/SimpleSweepLineIntersector.h, - include/geos/geomgraph/index/SweepLineEvent.h, - include/geos/geomgraph/index/SweepLineEventObj.h, - include/geos/geomgraph/index/SweepLineSegment.h, - include/geos/geomgraphindex.h, include/geos/geosAlgorithm.h, - include/geos/index/ItemVisitor.h, - include/geos/index/SpatialIndex.h, - include/geos/index/bintree/Bintree.h, - include/geos/index/bintree/Interval.h, - include/geos/index/bintree/Key.h, - include/geos/index/bintree/Node.h, - include/geos/index/bintree/NodeBase.h, - include/geos/index/bintree/Root.h, - include/geos/index/chain/MonotoneChain.h, - include/geos/index/chain/MonotoneChainBuilder.h, - include/geos/index/chain/MonotoneChainOverlapAction.h, - include/geos/index/chain/MonotoneChainSelectAction.h, - include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, - include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, - include/geos/index/intervalrtree/IntervalRTreeNode.h, - include/geos/index/intervalrtree/SortedPackedIntervalRTree.h, - include/geos/index/quadtree/DoubleBits.h, - include/geos/index/quadtree/IntervalSize.h, - include/geos/index/quadtree/Key.h, - include/geos/index/quadtree/Node.h, - include/geos/index/quadtree/NodeBase.h, - include/geos/index/quadtree/Quadtree.h, - include/geos/index/quadtree/Root.h, - include/geos/index/strtree/AbstractNode.h, - include/geos/index/strtree/AbstractSTRtree.h, - include/geos/index/strtree/Boundable.h, - include/geos/index/strtree/Interval.h, - include/geos/index/strtree/ItemBoundable.h, - include/geos/index/strtree/SIRtree.h, - include/geos/index/strtree/STRtree.h, + include/geos/geomgraph/EdgeRing.h, include/geos/io/WKBReader.h, + include/geos/io/WKTReader.h, + include/geos/noding/SegmentStringUtil.h, + src/algorithm/ConvexHull.cpp, + src/algorithm/MinimumBoundingCircle.cpp, + src/algorithm/MinimumDiameter.cpp, + src/algorithm/distance/DiscreteFrechetDistance.cpp, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp, src/geom/GeometryCollection.cpp, + src/geom/GeometryFactory.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/util/CoordinateOperation.cpp, + src/geomgraph/EdgeNodingValidator.cpp, src/geomgraph/EdgeRing.cpp, + src/io/WKBReader.cpp, src/io/WKTReader.cpp, + src/linearref/ExtractLineByLocation.cpp, + src/noding/GeometryNoder.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/intersection/Rectangle.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/EdgeString.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/valid/RepeatedPointTester.cpp, + src/operation/valid/SimpleNestedRingTester.cpp, + src/operation/valid/SweeplineNestedRingTester.cpp, + src/precision/MinimumClearance.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/util/GeometricShapeFactory.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, + tests/unit/geom/PolygonTest.cpp, tests/unit/io/WKTReaderTest.cpp, + tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Use unique_ptr + for functions returning CoordinateSequence This incrementally chips away at the long-term goal of using managed + pointers throughout GEOS, while also working to solidify the + CoordinateSequence interface before building additional + implementations. + +2019-05-21 Daniel Baston + + * include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateSequence.h, + include/geos/operation/valid/Makefile.am, + include/geos/operation/valid/RepeatedPointRemover.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateSequence.cpp, src/geomgraph/GeometryGraph.cpp, + src/noding/ScaledNoder.cpp, src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/LineMergeGraph.cpp, + src/operation/polygonize/PolygonizeGraph.cpp, + src/operation/valid/Makefile.am, + src/operation/valid/RepeatedPointRemover.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, tests/unit/Makefile.am, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/operation/valid/RepeatedPointRemoverTest.cpp, + tests/unit/triangulate/DelaunayTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Pull + removeRepeatedPoints out of CoordinateSequence This refactoring supports the goal of a slimmed-down + CoordinateSequence interface against which it will be easier to + develop alternative implementations. + +2019-05-22 Regina Obe + + * CMakeLists.txt: Put back cmake GEOS_ENABLE_INLINE and get rid of + DISABLE_GEOS_INLINE introduced in + 9ed254c129428b12228fcb9e09f9bd87cf0f3b29 + +2019-05-22 Paul Ramsey + + * tools/Makefile.am: Remove reference to repo_revision.sh + +2019-05-22 Paul Ramsey + + * Makefile.am: Don't need GenerateRevisionHeader in distribution + list anymore + +2019-05-22 Paul Ramsey + + * capi/geos_c.h.in: Hash should be a string + +2019-05-22 Paul Ramsey + + * .gitignore, Makefile.am, capi/CMakeLists.txt, capi/geos_c.h.in, + capi/geos_ts_c.cpp, cmake/GenerateRevisionHeader.cmake, + configure.ac, tools/repo_revision.sh: Generate git revision hash + into geos_c.h instead of a separate .h file + +2019-05-22 Daniel Baston + + * CMakeLists.txt: [CMake] Don't package build subdirs of project + root + +2019-05-22 Sandro Santilli + + * configure.ac, tools/astyle.sh: Ensure astyle.sh appears in build + tree too, and fix it + +2019-05-22 Paul Ramsey + + * CMakeLists.txt: Automatically omit the build directory from the + package + +2019-05-22 Sandro Santilli + + * README.md, tools/astyle.sh: Add an astyle.sh wrapper script to the + shipped astyle + +2019-05-22 Paul Ramsey + + * tools/CMakeLists.txt, tools/geos-config.cmake, + tools/geos-config.in: First step to fixing geos-config, generate + from separate input files (cmake and in) to avoid crosstalk + References #971 + +2019-05-22 Sandro Santilli + + * README.md: Add note about astyle being shipped with source + +2019-05-22 Daniel Baston + + * tests/CMakeLists.txt: [CMake] Exclude perf tests from make check + +2019-05-22 Sandro Santilli + + * tests/bigtest/CMakeLists.txt, tests/bigtest/Makefile.am, + tests/bigtest/bug234.cpp, tests/xmltester/Makefile.am, + tests/xmltester/tests/issue/issue-geos-234.xml: Convert test for + bug234 into an XMLTeste Tweaks both autotools and CMake accordingly + +2019-05-22 Dan Baston + + * : Merge remote-tracking branch 'pramsey/modern-cmake' + +2019-05-21 Daniel Baston + + * .gitignore: .gitignore additions + +2019-05-21 Paul Ramsey + + * CMakeLists.txt: Remove noisy messages + +2019-05-21 Paul Ramsey + + * CMakeLists.txt, cmake/FindMakeDistCheck.cmake: Add prototype 'make + distcheck' target + +2019-05-21 Daniel Baston + + * README.md: Update Visual Studio instructions in README.md [ci + skip] NMake Makefiles are no longer supported. + +2019-05-21 Paul Ramsey + + * : commit 740c984fc32ffbfba265c803854824358cb5a20b Author: Paul + Ramsey Date: Tue May 21 09:12:14 2019 + -0700 + +2019-05-21 Daniel Baston + + * : commit 6b14044c691c7aa02177496686ef43f2a3911ade Author: Daniel + Baston Date: Tue May 21 11:49:48 2019 -0400 + +2019-05-21 Daniel Baston + + * tests/bigtest/CMakeLists.txt, tests/perf/CMakeLists.txt, + tests/perf/capi/CMakeLists.txt, + tests/perf/operation/buffer/CMakeLists.txt, + tests/perf/operation/predicate/CMakeLists.txt, + tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: Revert + "Remove unstable API warnings for tests" This reverts commit ae73bc45bbad44703ed0532b64ed0c2440a9cf90. + +2019-05-21 Paul Ramsey + + * : commit 60f60f75abd598912b495c0641a8118409ddb22a Author: Paul + Ramsey Date: Tue May 21 08:30:26 2019 + -0700 + +2019-05-21 Daniel Baston + + * CMakeLists.txt: Disable ttmath ASM for MSVC + +2018-12-04 Daniel Baston + + * tests/bigtest/CMakeLists.txt, tests/perf/CMakeLists.txt, + tests/perf/capi/CMakeLists.txt, + tests/perf/operation/buffer/CMakeLists.txt, + tests/perf/operation/predicate/CMakeLists.txt, + tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: Remove + unstable API warnings for tests + +2019-05-21 Daniel Baston + + * README.md: Some updates to README [ci skip] + +2019-05-16 Paul Ramsey + + * Makefile.am: Add geos_revision.h back to dist files + +2019-05-21 Daniel Baston + + * : Merge remote-tracking branch 'origin/reduce-travis-matrix' + +2019-05-18 Daniel Baston + + * include/geos/operation/distance/FacetSequence.h, + src/operation/distance/FacetSequence.cpp: Fix warnings in + FacetSequence + +2019-05-18 Daniel Baston + + * CMakeLists.txt: Reduce CMake requirement to version installed on + AppVeyor + +2019-05-18 Daniel Baston + + * .travis.yml: Reduce Travis build matrix There is no need to test each compiler/architecture combination + using both build systems. This commit uses CMake as the primary + build system for Travis (since it is significantly faster) and + includes one autotools build for a single compiler/architecture to + verify that the autotools system can continue to be used. + +2019-05-18 Daniel Baston + + * .travis.yml: Switch Travis builds to xenial + +2019-05-18 Daniel Baston + + * include/geos/operation/polygonize/HoleAssigner.h: Fix compilation + on gcc 4.8 + +2019-05-18 Daniel Baston + + * : commit e6de5e9c97d006d6add04f6d1ec23f3c4d66163c Author: Daniel + Baston Date: Sat May 18 22:02:32 2019 -0400 + +2019-05-18 Daniel Baston + + * include/geos/operation/polygonize/Makefile.am, + src/operation/polygonize/Makefile.am: Add HoleAssigner to automake + files + +2019-05-18 Daniel Baston + + * NEWS: NEWS entry + +2019-05-18 Daniel Baston + + * include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/polygonize/HoleAssigner.h, + include/geos/operation/polygonize/Polygonizer.h, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/HoleAssigner.cpp, + src/operation/polygonize/Polygonizer.cpp: Rework c5c826b340 to match + what ultimately landed in JTS + +2019-05-16 pramsey + + * : commit 5364af8387fdf480bff50e8caa1956e950721e38 Author: Paul + Ramsey Date: Thu May 16 17:02:44 2019 + -0500 + +2019-05-16 Paul Ramsey + + * tests/xmltester/CMakeLists.txt: Go to old Cmake syntax for + add_executable() + +2019-05-16 Paul Ramsey + + * tests/xmltester/CMakeLists.txt: Use slightly older CMake syntax in + add_executable() + +2019-05-16 Paul Ramsey + + * Makefile.am: Add geos_revision.h back to dist files + +2019-05-16 Paul Ramsey + + * tools/ci/script_cmake.sh: Emit cmake version in CI + +2019-05-16 Paul Ramsey + + * CMakeLists.txt, tests/xmltester/Makefile.am: Add moved tests to + autotools build, fix cmake versions.txt filename + +2019-05-16 Paul Ramsey + + * Makefile.am: Add new Cmake files to autoconf file list. Remove + deprecated Cmake files from autoconf. + +2018-10-20 Mateusz Åoskot + + * .editorconfig, .gitignore, CMakeLists.txt, appveyor.yml, + capi/CMakeLists.txt, cmake/GenerateRevisionHeader.cmake, + cmake/GetGitRevision.cmake, cmake/cmake_uninstall.cmake.in, + cmake/geos-config.cmake, cmake/modules/COPYING-CMAKE-SCRIPTS, + cmake/modules/CheckPrototypeExists.cmake, + cmake/modules/GenerateSourceGroups.cmake, + examples/client/CMakeLists.txt, examples/client/geos_c_client.cpp, + examples/client/geos_client.cpp, include/CMakeLists.txt, + src/CMakeLists.txt, tests/CMakeLists.txt, + tests/bigtest/CMakeLists.txt, tests/perf/CMakeLists.txt, + tests/perf/capi/CMakeLists.txt, + tests/perf/operation/CMakeLists.txt, + tests/perf/operation/buffer/CMakeLists.txt, + tests/perf/operation/predicate/CMakeLists.txt, + tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt, + tests/xmltester/tests/failure/issue-geos-344.xml, + tests/xmltester/tests/failure/issue-geos-488.xml, + tests/xmltester/tests/failure/misc-TestBigNastyBuffer.xml, + tests/xmltester/tests/failure/misc-TestSameDirection.xml, + tests/xmltester/tests/failure/robust-TestRobustRelateFloat.xml, + tests/xmltester/tests/issue/issue-geos-344.xml, + tests/xmltester/tests/issue/issue-geos-488.xml, + tests/xmltester/tests/misc/TestBigNastyBuffer.xml, + tests/xmltester/tests/misc/TestSameDirection.xml, + tests/xmltester/tests/robust/TestRobustRelateFloat.xml, + tools/CMakeLists.txt, tools/astyle/CMakeLists.txt, + tools/geos-config.in: Modernize CMake configuration Refactoring based on practices of the Modern CMake approach: * Set project version based on `version.txt` spec. * Build shared libraries by default. * Build tools and `geos-config` script. * Add make `check` target to run `ctest` (no dependencies). * Move failing/overlarge tests into `failure` directory. * Add target to deploy Config-module with installed targets: `GEOS::geos`, `GEOS::geos_c`. * Add basic uninstall target * Add basic client example configured with CMake to use GEOS + targets. + +2019-05-16 Sandro Santilli + + * .mailmap: Add Paul van der Linden merge email + +2019-05-16 Daniel Baston + + * src/operation/union/CoverageUnion.cpp: Fix compilation for gcc 4.8 + +2019-05-16 Sandro Santilli + + * .mailmap: Add .mailmap Useful for output of: git shortlog -ens + +2019-05-15 Daniel Baston + + * tests/unit/capi/GEOSCoverageUnionTest.cpp: Add GEOSCoverageUnion + CAPI test + +2019-05-15 Daniel Baston + + * include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/polygonize/Polygonizer.h, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/Polygonizer.cpp, + src/operation/union/CoverageUnion.cpp, + tests/unit/operation/polygonize/PolygonizeTest.cpp: Polygonizer + performance improvements - Use STRtree for assigning holes to shells - Use IndexedPointInAreaLocator for testing shell-in-shell + containment - Remove potential N^2 search for setting shell inclusion + +2019-05-14 Daniel Baston + + * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/Makefile.am, + tests/unit/operation/union/CoverageUnionTest.cpp: Add + GEOSCoverageUnion to C API + +2019-05-14 Daniel Baston + + * include/geos/geom/LineSegment.h, + include/geos/operation/union/CoverageUnion.h: Define a hash function + for LineSegment + +2019-05-13 Daniel Baston + + * include/geos/operation/polygonize/Polygonizer.h, + include/geos/operation/union/CoverageUnion.h, + src/operation/polygonize/Polygonizer.cpp, + src/operation/union/CoverageUnion.cpp, + tests/unit/operation/union/CoverageUnionTest.cpp: Fail on + overlapping or incorrectly noded inputs + +2019-05-08 Daniel Baston + + * include/geos/operation/union/CoverageUnion.h, + include/geos/operation/union/Makefile.am, + src/operation/union/CoverageUnion.cpp, + src/operation/union/Makefile.am, + tests/unit/operation/union/CoverageUnionTest.cpp: Initial + implementation of CoverageUnion. Tests copied from https://github.com/dbaston/CoverageOp and should + be reviewed. + +2019-05-09 Daniel Baston + + * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/Makefile.am, tests/unit/capi/GEOSPolygonizeTest.cpp, + tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp: Add + GEOSPolygonize_valid to CAPI Closes #727 + +2019-05-09 Daniel Baston + + * src/operation/polygonize/PolygonizeGraph.cpp: Simplify for loops + in PolygonizeGraph + +2019-05-09 Daniel Baston + + * include/geos/operation/polygonize/Polygonizer.h: Make + Polygonizer::findValidRings static + +2019-05-09 Daniel Baston + + * src/operation/polygonize/EdgeRing.cpp: Improve Polygonizer + performance for cases with many potential holes JTS commit r607 Closes #748 + +2019-05-09 Daniel Baston + + * include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/polygonize/Polygonizer.h, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/Polygonizer.cpp: Remove some manual memory + management + +2019-05-08 Daniel Baston + + * capi/geos_ts_c.cpp, doc/example.cpp, + include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/polygonize/PolygonizeDirectedEdge.h, + include/geos/operation/polygonize/PolygonizeGraph.h, + include/geos/operation/polygonize/Polygonizer.h, + src/operation/polygonize/BuildArea.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/PolygonizeGraph.cpp, + src/operation/polygonize/Polygonizer.cpp, + tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/xmltester/XMLTester.cpp: Add ability to retrieve only valid + polygons from Polygonizer. Tests pass and valgrind clean. Not yet added to C API. References #727 + +2019-05-03 Sandro Santilli + + * NEWS: Add 3.7.2 section + +2019-05-02 Sandro Santilli + + * NEWS: Add missing 3.7.1 section in NEWS file + +2019-05-01 Sandro Santilli + + * NEWS: Use consistent format for NEWS + +2019-04-24 Paul Ramsey + + * tests/unit/operation/valid/IsValidTest.cpp: Add NaN test to unit, + references #963 + +2019-04-24 Paul Ramsey + + * src/operation/valid/IsValidOp.cpp, + tests/unit/operation/valid/IsValidTest.cpp: Fill in the exception + error point when a eHoleOutsideShell occurs. Closes #963 + +2019-04-22 Daniel Baston + + * capi/geos_ts_c.cpp: Fix copy-paste error in debug output + +2019-04-15 Daniel Baston + + * src/geomgraph/GeometryGraph.cpp: Fix memory leak in GeometryGraph SegmentIntersector was leaked when an exception was thrown during + calculation of edge intersections. + +2019-04-15 Daniel Baston + + * tests/unit/geom/GeometryCollectionTest.cpp: Fix memory leaks in + GeometryCollection unit test + +2019-04-15 Daniel Baston + + * : commit 5f90f866dca5105cd99325378089b1ac50b95f40 Author: Daniel + Baston Date: Sun Apr 14 22:27:46 2019 -0400 + +2019-04-14 Daniel Baston + + * src/algorithm/MinimumBoundingCircle.cpp: Fix memory leaks in + MinimumBoundingCircle + +2019-04-12 Martin Davis + + * src/operation/union/CascadedPolygonUnion.cpp: Reverting + problematic fix for CascadedPolygonUnion + +2019-04-12 Martin Davis + + * src/operation/union/CascadedPolygonUnion.cpp: Rework the logic to + cope with unsafe unions by envelope (for cases where union snapping + alters the result envelope) This fixes the performance regression in + 3.6.2. Fixes #867 + +2019-04-12 Martin Davis + + * tests/README.md: Improve tests README + +2019-04-12 Martin Davis + + * tests/xmltester/XMLTester.cpp: Add XMLTester time output for -v + +2019-04-12 Martin Davis + + * tests/README.md: Add tests README + +2019-04-11 Paul Ramsey + + * src/index/strtree/EnvelopeUtil.cpp: Include for + std::min + +2019-04-11 Paul Ramsey + + * include/geos/index/strtree/BoundablePair.h, + include/geos/index/strtree/EnvelopeUtil.h, + include/geos/index/strtree/Makefile.am, + include/geos/index/strtree/STRtree.h, + src/index/strtree/BoundablePair.cpp, + src/index/strtree/EnvelopeUtil.cpp, src/index/strtree/Makefile.am, + src/index/strtree/STRtree.cpp: IndexedFacetDistance withinDistance + JTS 82459582ff4b410aadae3b0d143aa57528469493 + https://github.com/locationtech/jts/pull/387 + +2019-04-10 Paul Ramsey + + * README.md, src/index/strtree/BoundablePair.cpp: Strip out + commented dead code + +2019-04-10 Paul Ramsey + + * README.md: unpad-header doesn't seem to match the default style of + most of the code, alas + +2019-04-10 Paul Ramsey + + * README.md, src/algorithm/InteriorPointArea.cpp, + src/algorithm/InteriorPointLine.cpp, + src/algorithm/InteriorPointPoint.cpp: Reformat files after port JTS + a4f3848da812691ab9881a9b3ec857e941bc9deb + +2019-04-09 Paul Ramsey + + * include/geos/index/strtree/BoundablePair.h, + include/geos/operation/distance/FacetSequence.h, + include/geos/operation/distance/FacetSequenceTreeBuilder.h, + include/geos/operation/distance/GeometryLocation.h, + include/geos/operation/distance/IndexedFacetDistance.h, + src/index/strtree/BoundablePair.cpp, + src/operation/distance/FacetSequence.cpp, + src/operation/distance/FacetSequenceTreeBuilder.cpp, + src/operation/distance/GeometryLocation.cpp, + src/operation/distance/IndexedFacetDistance.cpp, + tests/unit/Makefile.am, + tests/unit/operation/distance/IndexedFacetDistanceTest.cpp: + Improvements to IndexedFacetDistance JTS + 15cb864a9dbba54cc0f81778e2f455b30a8d53c5 + https://github.com/locationtech/jts/pull/363 + +2019-04-08 Paul Ramsey + + * src/operation/valid/IsValidOp.cpp: Harmonize with JTS empty + handling JTS d810c3a1385d6c4213cada4a474f3d1f6cc08b47 + https://github.com/locationtech/jts/pull/360 + +2019-04-08 Paul Ramsey + + * include/geos/algorithm/locate/SimplePointInAreaLocator.h, + src/algorithm/locate/SimplePointInAreaLocator.cpp: Add envelope + check to SimplePointInAreaLocator Port JTS commit + 74a9b9d52440f024cd56f90c8c39fea4709cbee2 + https://github.com/locationtech/jts/pull/355 + +2019-03-26 Kirill Kouzoubov + + * capi/CMakeLists.txt, src/CMakeLists.txt: Link against static lib + if shared lib is disabled Create "interface" targets for "geos" and "geos_c" that redirect to + "geos-static" target if shared libs are not being built. + +2019-03-27 Sandro Santilli + + * NEWS: Reorder 3.7.0 beta entries (they should really go away) + +2019-02-28 Sandro Santilli + + * NEWS: Add missing release date for 3.7.0 + +2019-03-25 Daniel Baston + + * include/geos/operation/polygonize/Makefile.am, + include/geos/operation/valid/Makefile.am, + tests/xmltester/Makefile.am: Fix make distcheck failures + +2019-03-25 Daniel Baston + + * .travis.yml: Install git2cl for Travis autotools builds + +2019-03-25 Daniel Baston + + * tools/ci/common.sh, tools/ci/script_autotools.sh, + tools/ci/script_cmake.sh: Run make distcheck on Travis + +2019-03-18 Daniel Baston + + * tests/unit/operation/distance/DistanceOpTest.cpp: Add test case + for DistanceOp::closestPoints + +2019-03-14 Paul Ramsey + + * tests/xmltester/tests/general/TestValid2.xml: Harmonize with JTS + +2019-03-14 Paul Ramsey + + * tests/xmltester/Makefile.am: Fix automake file + +2019-03-14 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/misc/Buffer-1.xml, + tests/xmltester/tests/misc/Buffer-2.xml, + tests/xmltester/tests/misc/TestBufferExternal-1.xml, + tests/xmltester/tests/misc/TestBufferExternal-2.xml, + tests/xmltester/tests/misc/TestBufferExternal.xml, + tests/xmltester/tests/misc/TestBufferExternal2.xml, + tests/xmltester/tests/misc/badguy3.xml, + tests/xmltester/tests/misc/buffer.xml, + tests/xmltester/tests/misc/stmlf-20061020-invalid-output.xml, + tests/xmltester/tests/misc/stmlf-20061020.xml, + tests/xmltester/tests/misc/stmlf-20070119.xml, + tests/xmltester/tests/misc/stmlf-cases-20061020-invalid-output.xml, + tests/xmltester/tests/misc/stmlf-cases-20061020.xml, + tests/xmltester/tests/misc/stmlf-cases-20070119.xml: Rename more + tests + +2019-03-14 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/misc/InvalidRelates.xml, + tests/xmltester/tests/misc/Segfaults.xml: Just the unique tests from + old test cases + +2019-03-14 Paul Ramsey + + * tests/xmltester/tests/misc/test.xml, + tests/xmltester/tests/misc/testLeaksBig.xml: Remove old duplicative + test files + +2019-03-14 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am: + Change build files for new ticket names + +2019-03-14 Paul Ramsey + + * tests/xmltester/tests/issue/issue-geos-176.xml, + tests/xmltester/tests/issue/issue-geos-188.xml, + tests/xmltester/tests/issue/issue-geos-244.xml, + tests/xmltester/tests/issue/issue-geos-275.xml, + tests/xmltester/tests/issue/issue-geos-344.xml, + tests/xmltester/tests/issue/issue-geos-350.xml, + tests/xmltester/tests/issue/issue-geos-356.xml, + tests/xmltester/tests/issue/issue-geos-358.xml, + tests/xmltester/tests/issue/issue-geos-360.xml, + tests/xmltester/tests/issue/issue-geos-366.xml, + tests/xmltester/tests/issue/issue-geos-392.xml, + tests/xmltester/tests/issue/issue-geos-398.xml, + tests/xmltester/tests/issue/issue-geos-434.xml, + tests/xmltester/tests/issue/issue-geos-459.xml, + tests/xmltester/tests/issue/issue-geos-488.xml, + tests/xmltester/tests/issue/issue-geos-527.xml, + tests/xmltester/tests/issue/issue-geos-569.xml, + tests/xmltester/tests/issue/issue-geos-582.xml, + tests/xmltester/tests/issue/issue-geos-586.xml, + tests/xmltester/tests/issue/issue-geos-599.xml, + tests/xmltester/tests/issue/issue-geos-605.xml, + tests/xmltester/tests/issue/issue-geos-615.xml, + tests/xmltester/tests/issue/issue-geos-716.xml, + tests/xmltester/tests/issue/issue-geos-837.xml, + tests/xmltester/tests/issue/issue-geos-838.xml, + tests/xmltester/tests/ticket/ticket-geos-176.xml, + tests/xmltester/tests/ticket/ticket-geos-188.xml, + tests/xmltester/tests/ticket/ticket-geos-244.xml, + tests/xmltester/tests/ticket/ticket-geos-275.xml, + tests/xmltester/tests/ticket/ticket-geos-344.xml, + tests/xmltester/tests/ticket/ticket-geos-350.xml, + tests/xmltester/tests/ticket/ticket-geos-356.xml, + tests/xmltester/tests/ticket/ticket-geos-358.xml, + tests/xmltester/tests/ticket/ticket-geos-360.xml, + tests/xmltester/tests/ticket/ticket-geos-366.xml, + tests/xmltester/tests/ticket/ticket-geos-392.xml, + tests/xmltester/tests/ticket/ticket-geos-398.xml, + tests/xmltester/tests/ticket/ticket-geos-434.xml, + tests/xmltester/tests/ticket/ticket-geos-459.xml, + tests/xmltester/tests/ticket/ticket-geos-488.xml, + tests/xmltester/tests/ticket/ticket-geos-527.xml, + tests/xmltester/tests/ticket/ticket-geos-569.xml, + tests/xmltester/tests/ticket/ticket-geos-582.xml, + tests/xmltester/tests/ticket/ticket-geos-586.xml, + tests/xmltester/tests/ticket/ticket-geos-599.xml, + tests/xmltester/tests/ticket/ticket-geos-605.xml, + tests/xmltester/tests/ticket/ticket-geos-615.xml, + tests/xmltester/tests/ticket/ticket-geos-716.xml, + tests/xmltester/tests/ticket/ticket-geos-837.xml, + tests/xmltester/tests/ticket/ticket-geos-838.xml: Rename ticket to + issue + +2019-03-13 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/TestBigNastyBuffer.xml, + tests/xmltester/tests/TestBufferExternal.xml, + tests/xmltester/tests/TestBufferExternal2.xml, + tests/xmltester/tests/TestIsValid.xml, + tests/xmltester/tests/badguy3.xml, + tests/xmltester/tests/buffer.xml, + tests/xmltester/tests/buildarea.xml, tests/xmltester/tests/fme.xml, + tests/xmltester/tests/heisenbugs.xml, + tests/xmltester/tests/hexwkb.xml, + tests/xmltester/tests/hole_from_shell.xml, + tests/xmltester/tests/hole_red.xml, + tests/xmltester/tests/linemerge.xml, + tests/xmltester/tests/makevalid.xml, + tests/xmltester/tests/misc/TestBigNastyBuffer.xml, + tests/xmltester/tests/misc/TestBufferExternal.xml, + tests/xmltester/tests/misc/TestBufferExternal2.xml, + tests/xmltester/tests/misc/TestIsValid.xml, + tests/xmltester/tests/misc/TestSameDirection.xml, + tests/xmltester/tests/misc/badguy3.xml, + tests/xmltester/tests/misc/buffer.xml, + tests/xmltester/tests/misc/buildarea.xml, + tests/xmltester/tests/misc/fme.xml, + tests/xmltester/tests/misc/heisenbugs.xml, + tests/xmltester/tests/misc/hexwkb.xml, + tests/xmltester/tests/misc/hole_from_shell.xml, + tests/xmltester/tests/misc/hole_red.xml, + tests/xmltester/tests/misc/linemerge.xml, + tests/xmltester/tests/misc/makevalid.xml, + tests/xmltester/tests/misc/robustness.xml, + tests/xmltester/tests/misc/singlesidedbuffer.xml, + tests/xmltester/tests/misc/split.xml, + tests/xmltester/tests/misc/test.xml, + tests/xmltester/tests/misc/testLeaksBig.xml, + tests/xmltester/tests/robustness.xml, + tests/xmltester/tests/rt/TestSameDirection.xml, + tests/xmltester/tests/singlesidedbuffer.xml, + tests/xmltester/tests/split.xml, tests/xmltester/tests/test.xml, + tests/xmltester/tests/testLeaksBig.xml: Reorganize tests some more + +2019-03-13 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/misc/safe-16595.xml, + tests/xmltester/tests/misc/safe-16596.xml, + tests/xmltester/tests/misc/safe-TestBufferJagged.xml, + tests/xmltester/tests/misc/stmlf-cases-20061020-invalid-output.xml, + tests/xmltester/tests/misc/stmlf-cases-20061020.xml, + tests/xmltester/tests/misc/stmlf-cases-20070119.xml, + tests/xmltester/tests/safe/16595.xml, + tests/xmltester/tests/safe/16596.xml, + tests/xmltester/tests/safe/TestBufferJagged.xml, + tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml + , tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml, + tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml, + tests/xmltester/tests/ticket/bug176.xml, + tests/xmltester/tests/ticket/bug188.xml, + tests/xmltester/tests/ticket/bug244.xml, + tests/xmltester/tests/ticket/bug275.xml, + tests/xmltester/tests/ticket/bug344.xml, + tests/xmltester/tests/ticket/bug350.xml, + tests/xmltester/tests/ticket/bug356.xml, + tests/xmltester/tests/ticket/bug358.xml, + tests/xmltester/tests/ticket/bug360.xml, + tests/xmltester/tests/ticket/bug366.xml, + tests/xmltester/tests/ticket/bug392.xml, + tests/xmltester/tests/ticket/bug398.xml, + tests/xmltester/tests/ticket/bug434.xml, + tests/xmltester/tests/ticket/bug459.xml, + tests/xmltester/tests/ticket/bug488.xml, + tests/xmltester/tests/ticket/bug527.xml, + tests/xmltester/tests/ticket/bug569.xml, + tests/xmltester/tests/ticket/bug582.xml, + tests/xmltester/tests/ticket/bug586.xml, + tests/xmltester/tests/ticket/bug599.xml, + tests/xmltester/tests/ticket/bug605.xml, + tests/xmltester/tests/ticket/bug615.xml, + tests/xmltester/tests/ticket/bug716.xml, + tests/xmltester/tests/ticket/bug837.xml, + tests/xmltester/tests/ticket/bug838.xml, + tests/xmltester/tests/ticket/ticket-geos-176.xml, + tests/xmltester/tests/ticket/ticket-geos-188.xml, + tests/xmltester/tests/ticket/ticket-geos-244.xml, + tests/xmltester/tests/ticket/ticket-geos-275.xml, + tests/xmltester/tests/ticket/ticket-geos-344.xml, + tests/xmltester/tests/ticket/ticket-geos-350.xml, + tests/xmltester/tests/ticket/ticket-geos-356.xml, + tests/xmltester/tests/ticket/ticket-geos-358.xml, + tests/xmltester/tests/ticket/ticket-geos-360.xml, + tests/xmltester/tests/ticket/ticket-geos-366.xml, + tests/xmltester/tests/ticket/ticket-geos-392.xml, + tests/xmltester/tests/ticket/ticket-geos-398.xml, + tests/xmltester/tests/ticket/ticket-geos-434.xml, + tests/xmltester/tests/ticket/ticket-geos-459.xml, + tests/xmltester/tests/ticket/ticket-geos-488.xml, + tests/xmltester/tests/ticket/ticket-geos-527.xml, + tests/xmltester/tests/ticket/ticket-geos-569.xml, + tests/xmltester/tests/ticket/ticket-geos-582.xml, + tests/xmltester/tests/ticket/ticket-geos-586.xml, + tests/xmltester/tests/ticket/ticket-geos-599.xml, + tests/xmltester/tests/ticket/ticket-geos-605.xml, + tests/xmltester/tests/ticket/ticket-geos-615.xml, + tests/xmltester/tests/ticket/ticket-geos-716.xml, + tests/xmltester/tests/ticket/ticket-geos-837.xml, + tests/xmltester/tests/ticket/ticket-geos-838.xml: Reorganize some + tests and the makefiles + +2019-03-13 Paul Ramsey + + * tests/xmltester/tests/general/TestValid.xml: Update to latest JTS + version of test file + +2019-02-28 Daniel Baston + + * NEWS: NEWS entry for GEOSPointOnSurface improvements + +2019-02-28 Daniel Baston + + * : Merge remote-tracking branch 'rouault/add_GEOSMakeValid_cpp' + +2019-02-28 Even Rouault + + * Makefile.am: make check: fix whitespace detection for out-of-tree + builds If doing 'make check' from a 'build' subdirectory, it currently + checks for extra whitespace in files in this directory instead of + the top directory. + +2019-02-25 Even Rouault + + * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + include/geos/operation/valid/MakeValid.h, + src/operation/valid/MakeValid.cpp, src/operation/valid/Makefile.am, + tests/unit/Makefile.am, tests/unit/capi/GEOSMakeValid.cpp, + tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/XMLTester.cpp, tests/xmltester/tests/makevalid.xml: + Add operation::valid::MakeValid and add GEOSMakeValid_r() (fixes #952) + +2019-02-25 Even Rouault + + * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + include/geos/operation/polygonize/BuildArea.h, + include/geos/operation/polygonize/Makefile.am, + src/operation/polygonize/BuildArea.cpp, + src/operation/polygonize/Makefile.am, tests/unit/Makefile.am, + tests/unit/capi/GEOSBuildArea.cpp, tests/xmltester/CMakeLists.txt, + tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, + tests/xmltester/tests/buildarea.xml: Add + operation::polygonize::BuildArea And GEOSBuildArea_r() (refs #952) + +2019-02-26 Daniel Baston + + * src/util/Profiler.cpp: Fix conversion error warning in Profiler + +2019-02-22 Even Rouault + + * src/algorithm/InteriorPointArea.cpp: + src/algorithm/InteriorPointArea.cpp: fix -Wshadow warning (fixes + #954) + +2019-02-22 Daniel Baston + + * README.md: Update AppVeyor badge URLs Change to dbaston AppVeyor account per discussion in + + https://lists.osgeo.org/pipermail/geos-devel/2019-February/008856.html + +2019-02-22 mdavis + + * : commit 85b2d372728d9cd82fe49fde3326fd0213f1fd14 Merge: ddc165a + 1a73099 Author: pramsey Date: Fri Feb + 22 09:51:56 2019 -0800 + +2019-02-22 pramsey + + * : commit 1efc2711a5452bd562202f2269f6571482f2f451 Merge: 28900c0 + cc400eb Author: pramsey Date: Fri Feb + 22 09:32:44 2019 -0800 + +2019-02-22 Even Rouault + + * tools/astyle/Makefile.am: tools/astyle/Makefile.am: fixes so that + the .tar.gz generated by 'make dist' can be built with cmake + +2019-02-22 Even Rouault + + * configure.ac, tests/perf/Makefile.am: Integrate + InteriorPointAreaPerfTest.cpp in autoconf builds (fixes #957) + +2019-02-22 Even Rouault + + * tests/perf/algorithm/InteriorPointAreaPerfTest.cpp: + InteriorPointAreaPerfTest.cpp: fix MSVC build (fixes #957) + +2019-02-22 Even Rouault + + * appveyor.yml: appveyor.yml: reduce the number of configurations to + 2, still testing 2 compiler versions, 2 architectures and 2 makefile + generators (fixes #955) + +2019-02-22 Even Rouault + + * .travis.yml: .travis.yml: use ccache to speed-up builds + +2019-02-21 Even Rouault + + * tools/astyle/astyle.h, tools/astyle/astyle_main.h: astyle: add + missing override keyword + +2019-02-21 Even Rouault + + * tests/xmltester/tinyxml2/tinyxml2.h: tinyxml2: add missing + override keyword + +2019-02-21 Even Rouault + + * tests/xmltester/XMLTester.cpp: Do not compile unused function + getIndent() + +2019-02-21 Even Rouault + + * include/geos/geom/util/Densifier.h: Densifier.h: add missing + override keyword + +2019-02-20 Martin Davis + + * src/algorithm/InteriorPointArea.cpp: Fix declaration for std::sort + +2019-02-20 Martin Davis + + * include/geos/algorithm/InteriorPointArea.h, + src/algorithm/InteriorPointArea.cpp, + tests/perf/algorithm/InteriorPointAreaPerfTest.cpp, + tests/unit/algorithm/InteriorPointAreaTest.cpp, + tests/unit/capi/GEOSPointOnSurfaceTest.cpp: Port JTS + InteriorPointArea improvements + +2019-02-18 mdavis + + * tests/perf/algorithm/InteriorPointAreaPerfTest.cpp: Fix more + spaces in InteriorPointAreaPerfTest (#67) + +2019-02-18 mdavis + + * tests/perf/algorithm/InteriorPointAreaPerfTest.cpp: Fix spaces in + InteriorPointAreaPerfTest (#66) + +2019-02-15 mdavis + + * include/geos/profiler.h, src/util/Profiler.cpp, + tests/perf/CMakeLists.txt, tests/perf/algorithm/CMakeLists.txt, + tests/perf/algorithm/InteriorPointAreaPerfTest.cpp, + tests/perf/algorithm/Makefile.am: Add InteriorPoint Area perf test, + Profile enhancement (#63) + +2019-02-14 Paul Ramsey + + * src/io/Makefile.am, tests/bigtest/CMakeLists.txt, + tests/bigtest/Makefile.am, + tests/perf/operation/buffer/CMakeLists.txt, + tests/perf/operation/buffer/Makefile.am, + tests/perf/operation/predicate/CMakeLists.txt, + tests/perf/operation/predicate/Makefile.am: Remove vestigial + references to io/markup + +2019-02-14 Paul Ramsey + + * src/noding/NodingIntersectionFinder.cpp: Quiet compiler warnings + +2019-02-14 Paul Ramsey + + * include/geos/index/chain/MonotoneChain.h, + src/index/chain/MonotoneChain.cpp: Quiet compiler warnings + +2019-02-14 mdavis + + * : commit 1b74b4cd7a1431a89713458dc1260f295ff3737b Author: Martin + Davis Date: Thu Feb 14 11:57:10 2019 -0800 + +2019-02-10 Sandro Santilli + + * tools/astyle/Makefile.am: Remove unused variable Fixes warning: variable 'geos_unit_LDADD' is defined but no program or library has 'geos_unit' as canonical name (possible typo) + +2019-02-07 mdavis + + * README.md: Update 'README.md' Minor formatting, add subheaders + +2019-02-07 mdavis + + * tests/CMakeLists.txt: Disable cmake perf tests (#61) + +2019-02-05 Paul Ramsey + + * include/geos/triangulate/quadedge/Vertex.h: Quiet clang warnings + about Vertex + +2019-02-05 Paul Ramsey + + * tools/astyle/astyle_main.cpp: Address build failure on GitLabCI + +2019-02-04 Paul Ramsey + + * tools/astyle/LICENSE.md: Add astyle license + +2019-02-04 Paul Ramsey + + * configure.ac, tools/CMakeLists.txt, tools/Makefile.am, + tools/astyle/ASBeautifier.cpp, tools/astyle/ASEnhancer.cpp, + tools/astyle/ASFormatter.cpp, tools/astyle/ASLocalizer.cpp, + tools/astyle/ASLocalizer.h, tools/astyle/ASResource.cpp, + tools/astyle/CMakeLists.txt, tools/astyle/Makefile.am, + tools/astyle/astyle.h, tools/astyle/astyle_main.cpp, + tools/astyle/astyle_main.h: Astyle 3.1 added to source tree for + future spacing compatibility purposes (per strk) + +2019-02-01 Regina Obe + + * include/geos/algorithm/ttmath/ttmathtypes.h: Prevent infinite loop + in testing on mingw64 64-bit + +2019-02-01 Paul Ramsey + + * .git-blame-ignore-revs: Add reformatting commit to ignorable + commits in blame + +2019-02-01 Paul Ramsey + + * .astylerc, CMakeLists.txt, capi/geos_c.cpp, capi/geos_ts_c.cpp, + doc/example.cpp, include/geos/algorithm/Angle.h, + include/geos/algorithm/Area.h, + include/geos/algorithm/BoundaryNodeRule.h, + include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/algorithm/CentralEndpointIntersector.h, + include/geos/algorithm/Centroid.h, + include/geos/algorithm/ConvexHull.h, + include/geos/algorithm/ConvexHull.inl, + include/geos/algorithm/Distance.h, + include/geos/algorithm/HCoordinate.h, + include/geos/algorithm/InteriorPointArea.h, + include/geos/algorithm/InteriorPointLine.h, + include/geos/algorithm/InteriorPointPoint.h, + include/geos/algorithm/Length.h, + include/geos/algorithm/LineIntersector.h, + include/geos/algorithm/MinimumBoundingCircle.h, + include/geos/algorithm/MinimumDiameter.h, + include/geos/algorithm/NotRepresentableException.h, + include/geos/algorithm/Orientation.h, + include/geos/algorithm/PointInRing.h, + include/geos/algorithm/PointLocation.h, + include/geos/algorithm/PointLocator.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RayCrossingCounterDD.h, + include/geos/algorithm/RobustDeterminant.h, + include/geos/algorithm/SimplePointInRing.h, + include/geos/algorithm/distance/DiscreteFrechetDistance.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/distance/DistanceToPoint.h, + include/geos/algorithm/distance/PointPairDistance.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/PointOnGeometryLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/geom/BinaryOp.h, include/geos/geom/Coordinate.h, + include/geos/geom/Coordinate.inl, + include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateArraySequenceFactory.h, + include/geos/geom/CoordinateArraySequenceFactory.inl, + include/geos/geom/CoordinateFilter.h, + include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/CoordinateSequenceFactory.h, + include/geos/geom/CoordinateSequenceFilter.h, + include/geos/geom/Dimension.h, include/geos/geom/Envelope.h, + include/geos/geom/Envelope.inl, include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryCollection.inl, + include/geos/geom/GeometryComponentFilter.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/GeometryFactory.inl, + include/geos/geom/GeometryFilter.h, + include/geos/geom/IntersectionMatrix.h, + include/geos/geom/LineSegment.h, include/geos/geom/LineSegment.inl, + include/geos/geom/LineString.h, include/geos/geom/Lineal.h, + include/geos/geom/LinearRing.h, include/geos/geom/Location.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiLineString.inl, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/MultiPolygon.inl, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, include/geos/geom/Polygonal.h, + include/geos/geom/PrecisionModel.h, + include/geos/geom/PrecisionModel.inl, include/geos/geom/Puntal.h, + include/geos/geom/Triangle.h, + include/geos/geom/prep/AbstractPreparedPolygonContains.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/prep/PreparedGeometry.h, + include/geos/geom/prep/PreparedGeometryFactory.h, + include/geos/geom/prep/PreparedLineString.h, + include/geos/geom/prep/PreparedLineStringIntersects.h, + include/geos/geom/prep/PreparedPoint.h, + include/geos/geom/prep/PreparedPolygon.h, + include/geos/geom/prep/PreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonContainsProperly.h, + include/geos/geom/prep/PreparedPolygonCovers.h, + include/geos/geom/prep/PreparedPolygonIntersects.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/CoordinateOperation.h, + include/geos/geom/util/Densifier.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/geom/util/GeometryEditor.h, + include/geos/geom/util/GeometryEditorOperation.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/geom/util/LinearComponentExtracter.h, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/geom/util/ShortCircuitedGeometryVisitor.h, + include/geos/geom/util/SineStarFactory.h, + include/geos/geomgraph/Depth.h, + include/geos/geomgraph/DirectedEdge.h, + include/geos/geomgraph/DirectedEdge.inl, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/Edge.h, include/geos/geomgraph/EdgeEnd.h, + include/geos/geomgraph/EdgeEndStar.h, + include/geos/geomgraph/EdgeIntersection.h, + include/geos/geomgraph/EdgeIntersectionList.h, + include/geos/geomgraph/EdgeList.h, + include/geos/geomgraph/EdgeNodingValidator.h, + include/geos/geomgraph/EdgeRing.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/GeometryGraph.inl, + include/geos/geomgraph/GraphComponent.h, + include/geos/geomgraph/Label.h, include/geos/geomgraph/Node.h, + include/geos/geomgraph/NodeFactory.h, + include/geos/geomgraph/NodeMap.h, + include/geos/geomgraph/PlanarGraph.h, + include/geos/geomgraph/Position.h, + include/geos/geomgraph/Quadrant.h, + include/geos/geomgraph/TopologyLocation.h, + include/geos/geomgraph/index/EdgeSetIntersector.h, + include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/MonotoneChainEdge.h, + include/geos/geomgraph/index/MonotoneChainIndexer.h, + include/geos/geomgraph/index/SegmentIntersector.h, + include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SimpleSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/geomgraph/index/SweepLineEventObj.h, + include/geos/geomgraph/index/SweepLineSegment.h, + include/geos/index/ItemVisitor.h, + include/geos/index/SpatialIndex.h, + include/geos/index/bintree/Bintree.h, + include/geos/index/bintree/Interval.h, + include/geos/index/bintree/Key.h, + include/geos/index/bintree/Node.h, + include/geos/index/bintree/NodeBase.h, + include/geos/index/bintree/Root.h, + include/geos/index/chain/MonotoneChain.h, + include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/index/chain/MonotoneChainOverlapAction.h, + include/geos/index/chain/MonotoneChainSelectAction.h, + include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + include/geos/index/intervalrtree/IntervalRTreeNode.h, + include/geos/index/intervalrtree/SortedPackedIntervalRTree.h, + include/geos/index/quadtree/DoubleBits.h, + include/geos/index/quadtree/IntervalSize.h, + include/geos/index/quadtree/Key.h, + include/geos/index/quadtree/Node.h, + include/geos/index/quadtree/NodeBase.h, + include/geos/index/quadtree/Quadtree.h, + include/geos/index/quadtree/Root.h, + include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/Boundable.h, + include/geos/index/strtree/BoundablePair.h, + include/geos/index/strtree/GeometryItemDistance.h, + include/geos/index/strtree/Interval.h, + include/geos/index/strtree/ItemBoundable.h, + include/geos/index/strtree/ItemDistance.h, + include/geos/index/strtree/SIRtree.h, + include/geos/index/strtree/STRtree.h, + include/geos/index/sweepline/SweepLineEvent.h, + include/geos/index/sweepline/SweepLineIndex.h, + include/geos/index/sweepline/SweepLineInterval.h, + include/geos/index/sweepline/SweepLineOverlapAction.h, + include/geos/io/ByteOrderDataInStream.h, + include/geos/io/ByteOrderDataInStream.inl, + include/geos/io/ByteOrderValues.h, include/geos/io/CLocalizer.h, + include/geos/io/ParseException.h, + include/geos/io/StringTokenizer.h, include/geos/io/WKBConstants.h, + include/geos/io/WKBReader.h, include/geos/io/WKBWriter.h, + include/geos/io/WKTReader.h, include/geos/io/WKTReader.inl, + include/geos/io/WKTWriter.h, include/geos/io/Writer.h, + include/geos/linearref/ExtractLineByLocation.h, + include/geos/linearref/LengthIndexOfPoint.h, + include/geos/linearref/LengthIndexedLine.h, + include/geos/linearref/LengthLocationMap.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/linearref/LinearIterator.h, + include/geos/linearref/LinearLocation.h, + include/geos/linearref/LocationIndexOfLine.h, + include/geos/linearref/LocationIndexOfPoint.h, + include/geos/linearref/LocationIndexedLine.h, + include/geos/noding/BasicSegmentString.h, + include/geos/noding/FastNodingValidator.h, + include/geos/noding/FastSegmentSetIntersectionFinder.h, + include/geos/noding/GeometryNoder.h, + include/geos/noding/IntersectionAdder.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/IteratedNoder.h, + include/geos/noding/MCIndexNoder.h, + include/geos/noding/MCIndexNoder.inl, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + include/geos/noding/NodableSegmentString.h, + include/geos/noding/NodedSegmentString.h, + include/geos/noding/Noder.h, + include/geos/noding/NodingIntersectionFinder.h, + include/geos/noding/NodingValidator.h, + include/geos/noding/Octant.h, + include/geos/noding/OrientedCoordinateArray.h, + include/geos/noding/ScaledNoder.h, + include/geos/noding/SegmentIntersectionDetector.h, + include/geos/noding/SegmentIntersector.h, + include/geos/noding/SegmentNode.h, + include/geos/noding/SegmentNodeList.h, + include/geos/noding/SegmentPointComparator.h, + include/geos/noding/SegmentSetMutualIntersector.h, + include/geos/noding/SegmentString.h, + include/geos/noding/SegmentStringUtil.h, + include/geos/noding/SimpleNoder.h, + include/geos/noding/SinglePassNoder.h, + include/geos/noding/snapround/HotPixel.h, + include/geos/noding/snapround/HotPixel.inl, + include/geos/noding/snapround/MCIndexPointSnapper.h, + include/geos/noding/snapround/MCIndexSnapRounder.h, + include/geos/noding/snapround/SimpleSnapRounder.h, + include/geos/operation/GeometryGraphOperation.h, + include/geos/operation/IsSimpleOp.h, + include/geos/operation/buffer/BufferBuilder.h, + include/geos/operation/buffer/BufferInputLineSimplifier.h, + include/geos/operation/buffer/BufferOp.h, + include/geos/operation/buffer/BufferParameters.h, + include/geos/operation/buffer/BufferSubgraph.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/buffer/OffsetSegmentGenerator.h, + include/geos/operation/buffer/OffsetSegmentString.h, + include/geos/operation/buffer/RightmostEdgeFinder.h, + include/geos/operation/buffer/SubgraphDepthLocater.h, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/operation/distance/ConnectedElementPointFilter.h, + include/geos/operation/distance/DistanceOp.h, + include/geos/operation/distance/FacetSequence.h, + include/geos/operation/distance/FacetSequenceTreeBuilder.h, + include/geos/operation/distance/GeometryLocation.h, + include/geos/operation/distance/IndexedFacetDistance.h, + include/geos/operation/intersection/Rectangle.h, + include/geos/operation/intersection/RectangleIntersection.h, + include/geos/operation/intersection/RectangleIntersectionBuilder.h, + include/geos/operation/linemerge/EdgeString.h, + include/geos/operation/linemerge/LineMergeDirectedEdge.h, + include/geos/operation/linemerge/LineMergeEdge.h, + include/geos/operation/linemerge/LineMergeGraph.h, + include/geos/operation/linemerge/LineMerger.h, + include/geos/operation/linemerge/LineSequencer.h, + include/geos/operation/overlay/EdgeSetNoder.h, + include/geos/operation/overlay/ElevationMatrix.h, + include/geos/operation/overlay/ElevationMatrixCell.h, + include/geos/operation/overlay/LineBuilder.h, + include/geos/operation/overlay/MaximalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.inl, + include/geos/operation/overlay/OverlayNodeFactory.h, + include/geos/operation/overlay/OverlayOp.h, + include/geos/operation/overlay/PointBuilder.h, + include/geos/operation/overlay/PolygonBuilder.h, + include/geos/operation/overlay/snap/GeometrySnapper.h, + include/geos/operation/overlay/snap/LineStringSnapper.h, + include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + include/geos/operation/overlay/snap/SnapOverlayOp.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/overlay/validate/OffsetPointGenerator.h, + include/geos/operation/overlay/validate/OverlayResultValidator.h, + include/geos/operation/polygonize/EdgeRing.h, + include/geos/operation/polygonize/PolygonizeDirectedEdge.h, + include/geos/operation/polygonize/PolygonizeEdge.h, + include/geos/operation/polygonize/PolygonizeGraph.h, + include/geos/operation/polygonize/Polygonizer.h, + include/geos/operation/predicate/RectangleContains.h, + include/geos/operation/predicate/RectangleIntersects.h, + include/geos/operation/predicate/SegmentIntersectionTester.h, + include/geos/operation/relate/EdgeEndBuilder.h, + include/geos/operation/relate/EdgeEndBundle.h, + include/geos/operation/relate/EdgeEndBundleStar.h, + include/geos/operation/relate/RelateComputer.h, + include/geos/operation/relate/RelateNode.h, + include/geos/operation/relate/RelateNodeFactory.h, + include/geos/operation/relate/RelateNodeGraph.h, + include/geos/operation/relate/RelateOp.h, + include/geos/operation/sharedpaths/SharedPathsOp.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/CascadedUnion.h, + include/geos/operation/union/GeometryListHolder.h, + include/geos/operation/union/PointGeometryUnion.h, + include/geos/operation/union/UnaryUnionOp.h, + include/geos/operation/valid/ConnectedInteriorTester.h, + include/geos/operation/valid/ConsistentAreaTester.h, + include/geos/operation/valid/IsValidOp.h, + include/geos/operation/valid/QuadtreeNestedRingTester.h, + include/geos/operation/valid/RepeatedPointTester.h, + include/geos/operation/valid/SimpleNestedRingTester.h, + include/geos/operation/valid/SweeplineNestedRingTester.h, + include/geos/operation/valid/TopologyValidationError.h, + include/geos/planargraph/DirectedEdge.h, + include/geos/planargraph/DirectedEdgeStar.h, + include/geos/planargraph/Edge.h, + include/geos/planargraph/GraphComponent.h, + include/geos/planargraph/Node.h, + include/geos/planargraph/NodeMap.h, + include/geos/planargraph/PlanarGraph.h, + include/geos/planargraph/Subgraph.h, + include/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, + include/geos/precision/CommonBits.h, + include/geos/precision/CommonBitsOp.h, + include/geos/precision/CommonBitsRemover.h, + include/geos/precision/EnhancedPrecisionOp.h, + include/geos/precision/GeometryPrecisionReducer.h, + include/geos/precision/MinimumClearance.h, + include/geos/precision/PrecisionReducerCoordinateOperation.h, + include/geos/precision/SimpleGeometryPrecisionReducer.h, + include/geos/profiler.h, + include/geos/simplify/DouglasPeuckerLineSimplifier.h, + include/geos/simplify/DouglasPeuckerSimplifier.h, + include/geos/simplify/LineSegmentIndex.h, + include/geos/simplify/TaggedLineSegment.h, + include/geos/simplify/TaggedLineString.h, + include/geos/simplify/TaggedLineStringSimplifier.h, + include/geos/simplify/TaggedLinesSimplifier.h, + include/geos/simplify/TopologyPreservingSimplifier.h, + include/geos/timeval.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/IncrementalDelaunayTriangulator.h, + include/geos/triangulate/VoronoiDiagramBuilder.h, + include/geos/triangulate/quadedge/LastFoundQuadEdgeLocator.h, + include/geos/triangulate/quadedge/LocateFailureException.h, + include/geos/triangulate/quadedge/QuadEdge.h, + include/geos/triangulate/quadedge/QuadEdgeLocator.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + include/geos/triangulate/quadedge/TrianglePredicate.h, + include/geos/triangulate/quadedge/TriangleVisitor.h, + include/geos/triangulate/quadedge/Vertex.h, include/geos/unload.h, + include/geos/util.h, include/geos/util/Assert.h, + include/geos/util/AssertionFailedException.h, + include/geos/util/CoordinateArrayFilter.h, + include/geos/util/GEOSException.h, + include/geos/util/GeometricShapeFactory.h, + include/geos/util/IllegalArgumentException.h, + include/geos/util/IllegalStateException.h, + include/geos/util/Interrupt.h, include/geos/util/Machine.h, + include/geos/util/TopologyException.h, + include/geos/util/UniqueCoordinateArrayFilter.h, + include/geos/util/UnsupportedOperationException.h, + include/geos/util/math.h, src/algorithm/Angle.cpp, + src/algorithm/Area.cpp, src/algorithm/BoundaryNodeRule.cpp, + src/algorithm/CGAlgorithmsDD.cpp, src/algorithm/Centroid.cpp, + src/algorithm/ConvexHull.cpp, src/algorithm/Distance.cpp, + src/algorithm/HCoordinate.cpp, src/algorithm/InteriorPointArea.cpp, + src/algorithm/InteriorPointLine.cpp, + src/algorithm/InteriorPointPoint.cpp, src/algorithm/Length.cpp, + src/algorithm/LineIntersector.cpp, + src/algorithm/MinimumBoundingCircle.cpp, + src/algorithm/MinimumDiameter.cpp, + src/algorithm/NotRepresentableException.cpp, + src/algorithm/Orientation.cpp, src/algorithm/PointLocation.cpp, + src/algorithm/PointLocator.cpp, + src/algorithm/RayCrossingCounter.cpp, + src/algorithm/RayCrossingCounterDD.cpp, + src/algorithm/RobustDeterminant.cpp, + src/algorithm/SimplePointInRing.cpp, + src/algorithm/distance/DiscreteFrechetDistance.cpp, + src/algorithm/distance/DiscreteHausdorffDistance.cpp, + src/algorithm/distance/DistanceToPoint.cpp, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp, + src/geom/Coordinate.cpp, src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateArraySequenceFactory.cpp, + src/geom/CoordinateSequence.cpp, src/geom/Dimension.cpp, + src/geom/Envelope.cpp, src/geom/Geometry.cpp, + src/geom/GeometryCollection.cpp, + src/geom/GeometryComponentFilter.cpp, src/geom/GeometryFactory.cpp, + src/geom/IntersectionMatrix.cpp, src/geom/LineSegment.cpp, + src/geom/LineString.cpp, src/geom/LinearRing.cpp, + src/geom/Location.cpp, src/geom/MultiLineString.cpp, + src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp, + src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/PrecisionModel.cpp, src/geom/Triangle.cpp, + src/geom/prep/AbstractPreparedPolygonContains.cpp, + src/geom/prep/BasicPreparedGeometry.cpp, + src/geom/prep/PreparedGeometryFactory.cpp, + src/geom/prep/PreparedLineString.cpp, + src/geom/prep/PreparedLineStringIntersects.cpp, + src/geom/prep/PreparedPoint.cpp, src/geom/prep/PreparedPolygon.cpp, + src/geom/prep/PreparedPolygonContains.cpp, + src/geom/prep/PreparedPolygonContainsProperly.cpp, + src/geom/prep/PreparedPolygonCovers.cpp, + src/geom/prep/PreparedPolygonIntersects.cpp, + src/geom/prep/PreparedPolygonPredicate.cpp, + src/geom/util/ComponentCoordinateExtracter.cpp, + src/geom/util/CoordinateOperation.cpp, src/geom/util/Densifier.cpp, + src/geom/util/GeometryCombiner.cpp, + src/geom/util/GeometryEditor.cpp, + src/geom/util/GeometryTransformer.cpp, + src/geom/util/LinearComponentExtracter.cpp, + src/geom/util/PointExtracter.cpp, + src/geom/util/PolygonExtracter.cpp, + src/geom/util/ShortCircuitedGeometryVisitor.cpp, + src/geom/util/SineStarFactory.cpp, src/geomgraph/Depth.cpp, + src/geomgraph/DirectedEdge.cpp, src/geomgraph/DirectedEdgeStar.cpp, + src/geomgraph/Edge.cpp, src/geomgraph/EdgeEnd.cpp, + src/geomgraph/EdgeEndStar.cpp, + src/geomgraph/EdgeIntersectionList.cpp, src/geomgraph/EdgeList.cpp, + src/geomgraph/EdgeNodingValidator.cpp, src/geomgraph/EdgeRing.cpp, + src/geomgraph/GeometryGraph.cpp, src/geomgraph/GraphComponent.cpp, + src/geomgraph/Label.cpp, src/geomgraph/Node.cpp, + src/geomgraph/NodeFactory.cpp, src/geomgraph/NodeMap.cpp, + src/geomgraph/PlanarGraph.cpp, src/geomgraph/Position.cpp, + src/geomgraph/Quadrant.cpp, src/geomgraph/TopologyLocation.cpp, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/geomgraph/index/MonotoneChainIndexer.cpp, + src/geomgraph/index/SegmentIntersector.cpp, + src/geomgraph/index/SimpleEdgeSetIntersector.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SimpleSweepLineIntersector.cpp, + src/geomgraph/index/SweepLineEvent.cpp, + src/geomgraph/index/SweepLineSegment.cpp, + src/index/bintree/Bintree.cpp, src/index/bintree/Interval.cpp, + src/index/bintree/Key.cpp, src/index/bintree/Node.cpp, + src/index/bintree/NodeBase.cpp, src/index/bintree/Root.cpp, + src/index/chain/MonotoneChain.cpp, + src/index/chain/MonotoneChainBuilder.cpp, + src/index/chain/MonotoneChainOverlapAction.cpp, + src/index/chain/MonotoneChainSelectAction.cpp, + src/index/intervalrtree/IntervalRTreeBranchNode.cpp, + src/index/intervalrtree/IntervalRTreeLeafNode.cpp, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp, + src/index/quadtree/DoubleBits.cpp, + src/index/quadtree/IntervalSize.cpp, src/index/quadtree/Key.cpp, + src/index/quadtree/Node.cpp, src/index/quadtree/NodeBase.cpp, + src/index/quadtree/Quadtree.cpp, src/index/quadtree/Root.cpp, + src/index/strtree/AbstractNode.cpp, + src/index/strtree/AbstractSTRtree.cpp, + src/index/strtree/BoundablePair.cpp, + src/index/strtree/GeometryItemDistance.cpp, + src/index/strtree/Interval.cpp, + src/index/strtree/ItemBoundable.cpp, src/index/strtree/SIRtree.cpp, + src/index/strtree/STRtree.cpp, + src/index/sweepline/SweepLineEvent.cpp, + src/index/sweepline/SweepLineIndex.cpp, + src/index/sweepline/SweepLineInterval.cpp, + src/io/ByteOrderValues.cpp, src/io/CLocalizer.cpp, + src/io/ParseException.cpp, src/io/StringTokenizer.cpp, + src/io/Unload.cpp, src/io/WKBReader.cpp, src/io/WKBWriter.cpp, + src/io/WKTReader.cpp, src/io/WKTWriter.cpp, src/io/Writer.cpp, + src/linearref/ExtractLineByLocation.cpp, + src/linearref/LengthIndexOfPoint.cpp, + src/linearref/LengthIndexedLine.cpp, + src/linearref/LengthLocationMap.cpp, + src/linearref/LinearGeometryBuilder.cpp, + src/linearref/LinearIterator.cpp, src/linearref/LinearLocation.cpp, + src/linearref/LocationIndexOfLine.cpp, + src/linearref/LocationIndexOfPoint.cpp, + src/noding/BasicSegmentString.cpp, + src/noding/FastNodingValidator.cpp, + src/noding/FastSegmentSetIntersectionFinder.cpp, + src/noding/GeometryNoder.cpp, src/noding/IntersectionAdder.cpp, + src/noding/IntersectionFinderAdder.cpp, + src/noding/IteratedNoder.cpp, src/noding/MCIndexNoder.cpp, + src/noding/MCIndexSegmentSetMutualIntersector.cpp, + src/noding/NodedSegmentString.cpp, + src/noding/NodingIntersectionFinder.cpp, + src/noding/NodingValidator.cpp, src/noding/Octant.cpp, + src/noding/OrientedCoordinateArray.cpp, src/noding/ScaledNoder.cpp, + src/noding/SegmentIntersectionDetector.cpp, + src/noding/SegmentNode.cpp, src/noding/SegmentNodeList.cpp, + src/noding/SegmentString.cpp, src/noding/SimpleNoder.cpp, + src/noding/snapround/HotPixel.cpp, + src/noding/snapround/MCIndexPointSnapper.cpp, + src/noding/snapround/MCIndexSnapRounder.cpp, + src/noding/snapround/SimpleSnapRounder.cpp, + src/operation/GeometryGraphOperation.cpp, + src/operation/IsSimpleOp.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/BufferOp.cpp, + src/operation/buffer/BufferParameters.cpp, + src/operation/buffer/BufferSubgraph.cpp, + src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/buffer/OffsetSegmentGenerator.cpp, + src/operation/buffer/RightmostEdgeFinder.cpp, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/distance/ConnectedElementLocationFilter.cpp, + src/operation/distance/ConnectedElementPointFilter.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/distance/FacetSequence.cpp, + src/operation/distance/FacetSequenceTreeBuilder.cpp, + src/operation/distance/GeometryLocation.cpp, + src/operation/distance/IndexedFacetDistance.cpp, + src/operation/intersection/Rectangle.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/EdgeString.cpp, + src/operation/linemerge/LineMergeDirectedEdge.cpp, + src/operation/linemerge/LineMergeEdge.cpp, + src/operation/linemerge/LineMergeGraph.cpp, + src/operation/linemerge/LineMerger.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/EdgeSetNoder.cpp, + src/operation/overlay/ElevationMatrix.cpp, + src/operation/overlay/ElevationMatrixCell.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/overlay/MaximalEdgeRing.cpp, + src/operation/overlay/MinimalEdgeRing.cpp, + src/operation/overlay/OverlayNodeFactory.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/PointBuilder.cpp, + src/operation/overlay/PolygonBuilder.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/overlay/snap/LineStringSnapper.cpp, + src/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, + src/operation/overlay/snap/SnapOverlayOp.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/overlay/validate/OffsetPointGenerator.cpp, + src/operation/overlay/validate/OverlayResultValidator.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/PolygonizeDirectedEdge.cpp, + src/operation/polygonize/PolygonizeEdge.cpp, + src/operation/polygonize/PolygonizeGraph.cpp, + src/operation/polygonize/Polygonizer.cpp, + src/operation/predicate/RectangleContains.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/operation/predicate/SegmentIntersectionTester.cpp, + src/operation/relate/EdgeEndBuilder.cpp, + src/operation/relate/EdgeEndBundle.cpp, + src/operation/relate/EdgeEndBundleStar.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNode.cpp, + src/operation/relate/RelateNodeFactory.cpp, + src/operation/relate/RelateNodeGraph.cpp, + src/operation/relate/RelateOp.cpp, + src/operation/sharedpaths/SharedPathsOp.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/union/PointGeometryUnion.cpp, + src/operation/union/UnaryUnionOp.cpp, + src/operation/valid/ConnectedInteriorTester.cpp, + src/operation/valid/ConsistentAreaTester.cpp, + src/operation/valid/IndexedNestedRingTester.cpp, + src/operation/valid/IndexedNestedRingTester.h, + src/operation/valid/IsValidOp.cpp, + src/operation/valid/QuadtreeNestedRingTester.cpp, + src/operation/valid/RepeatedPointTester.cpp, + src/operation/valid/SimpleNestedRingTester.cpp, + src/operation/valid/SweeplineNestedRingTester.cpp, + src/operation/valid/TopologyValidationError.cpp, + src/planargraph/DirectedEdge.cpp, + src/planargraph/DirectedEdgeStar.cpp, src/planargraph/Edge.cpp, + src/planargraph/Node.cpp, src/planargraph/NodeMap.cpp, + src/planargraph/PlanarGraph.cpp, src/planargraph/Subgraph.cpp, + src/planargraph/algorithm/ConnectedSubgraphFinder.cpp, + src/precision/CommonBits.cpp, src/precision/CommonBitsOp.cpp, + src/precision/CommonBitsRemover.cpp, + src/precision/EnhancedPrecisionOp.cpp, + src/precision/GeometryPrecisionReducer.cpp, + src/precision/MinimumClearance.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/simplify/DouglasPeuckerLineSimplifier.cpp, + src/simplify/DouglasPeuckerSimplifier.cpp, + src/simplify/LineSegmentIndex.cpp, + src/simplify/TaggedLineSegment.cpp, + src/simplify/TaggedLineString.cpp, + src/simplify/TaggedLineStringSimplifier.cpp, + src/simplify/TaggedLinesSimplifier.cpp, + src/simplify/TopologyPreservingSimplifier.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/IncrementalDelaunayTriangulator.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/LastFoundQuadEdgeLocator.cpp, + src/triangulate/quadedge/LocateFailureException.cpp, + src/triangulate/quadedge/QuadEdge.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/triangulate/quadedge/TrianglePredicate.cpp, + src/triangulate/quadedge/Vertex.cpp, src/util/Assert.cpp, + src/util/GeometricShapeFactory.cpp, src/util/Interrupt.cpp, + src/util/Profiler.cpp, src/util/math.cpp, + tests/bigtest/GeometryTestFactory.cpp, + tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h, + tests/bigtest/bug234.cpp, tests/perf/ClassSizes.cpp, + tests/perf/operation/buffer/IteratedBufferStressTest.cpp, + tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp, + tests/unit/algorithm/AngleTest.cpp, + tests/unit/algorithm/AreaTest.cpp, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/ConvexHullTest.cpp, + tests/unit/algorithm/InteriorPointAreaTest.cpp, + tests/unit/algorithm/LengthTest.cpp, + tests/unit/algorithm/LocatePointInRingTest.cpp, + tests/unit/algorithm/MinimumBoundingCircleTest.cpp, + tests/unit/algorithm/MinimumDiameterTest.cpp, + tests/unit/algorithm/OrientationIndexFailureTest.cpp, + tests/unit/algorithm/PointLocatorTest.cpp, + tests/unit/algorithm/RobustLineIntersectionTest.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp, + tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, + tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSBufferTest.cpp, + tests/unit/capi/GEOSCAPIDefinesTest.cpp, + tests/unit/capi/GEOSClipByRectTest.cpp, + tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSConvexHullTest.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp, + tests/unit/capi/GEOSDelaunayTriangulationTest.cpp, + tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/capi/GEOSEqualsTest.cpp, + tests/unit/capi/GEOSFrechetDistanceTest.cpp, + tests/unit/capi/GEOSGeomFromWKBTest.cpp, + tests/unit/capi/GEOSGeomToWKTTest.cpp, + tests/unit/capi/GEOSGeom_create.cpp, + tests/unit/capi/GEOSGeom_createCollection.cpp, + tests/unit/capi/GEOSGeom_extentTest.cpp, + tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, + tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, + tests/unit/capi/GEOSGetCentroidTest.cpp, + tests/unit/capi/GEOSHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSInterpolateTest.cpp, + tests/unit/capi/GEOSInterruptTest.cpp, + tests/unit/capi/GEOSIntersectionTest.cpp, + tests/unit/capi/GEOSIntersectsTest.cpp, + tests/unit/capi/GEOSLineString_PointTest.cpp, + tests/unit/capi/GEOSMinimumClearanceTest.cpp, + tests/unit/capi/GEOSMinimumRectangleTest.cpp, + tests/unit/capi/GEOSMinimumWidthTest.cpp, + tests/unit/capi/GEOSNearestPointsTest.cpp, + tests/unit/capi/GEOSNodeTest.cpp, + tests/unit/capi/GEOSOffsetCurveTest.cpp, + tests/unit/capi/GEOSOrientationIndex.cpp, + tests/unit/capi/GEOSPointOnSurfaceTest.cpp, + tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp, + tests/unit/capi/GEOSRelatePatternMatchTest.cpp, + tests/unit/capi/GEOSReverseTest.cpp, + tests/unit/capi/GEOSSTRtreeTest.cpp, + tests/unit/capi/GEOSSegmentIntersectionTest.cpp, + tests/unit/capi/GEOSSharedPathsTest.cpp, + tests/unit/capi/GEOSSimplifyTest.cpp, + tests/unit/capi/GEOSSnapTest.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/capi/GEOSUserDataTest.cpp, + tests/unit/capi/GEOSVoronoiDiagramTest.cpp, + tests/unit/capi/GEOSWithinTest.cpp, + tests/unit/capi/GEOSisClosedTest.cpp, + tests/unit/capi/GEOSisValidDetailTest.cpp, + tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/CoordinateListTest.cpp, + tests/unit/geom/CoordinateTest.cpp, + tests/unit/geom/DimensionTest.cpp, + tests/unit/geom/EnvelopeTest.cpp, + tests/unit/geom/Geometry/clone.cpp, + tests/unit/geom/Geometry/coversTest.cpp, + tests/unit/geom/Geometry/equalsTest.cpp, + tests/unit/geom/Geometry/isRectangleTest.cpp, + tests/unit/geom/Geometry/normalize.cpp, + tests/unit/geom/Geometry/touchesTest.cpp, + tests/unit/geom/GeometryCollectionTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp, + tests/unit/geom/IntersectionMatrixTest.cpp, + tests/unit/geom/LineSegmentTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/LocationTest.cpp, + tests/unit/geom/MultiLineStringTest.cpp, + tests/unit/geom/MultiPointTest.cpp, + tests/unit/geom/MultiPolygonTest.cpp, + tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, + tests/unit/geom/PrecisionModelTest.cpp, + tests/unit/geom/TriangleTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/unit/geom/util/GeometryExtracterTest.cpp, + tests/unit/geos_unit.cpp, + tests/unit/index/quadtree/DoubleBitsTest.cpp, + tests/unit/index/strtree/SIRtreeTest.cpp, + tests/unit/io/ByteOrderValuesTest.cpp, + tests/unit/io/WKBReaderTest.cpp, tests/unit/io/WKBWriterTest.cpp, + tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp, + tests/unit/io/WriterTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/noding/BasicSegmentStringTest.cpp, + tests/unit/noding/NodedSegmentStringTest.cpp, + tests/unit/noding/OrientedCoordinateArray.cpp, + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/noding/SegmentPointComparatorTest.cpp, + tests/unit/noding/snapround/HotPixelTest.cpp, + tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, + tests/unit/operation/IsSimpleOpTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/buffer/BufferOpTest.cpp, + tests/unit/operation/buffer/BufferParametersTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/intersection/RectangleIntersectionTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/overlay/OverlayOpUnionTest.cpp, + tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, + tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, + tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, + tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp + p, tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp + , tests/unit/precision/CommonBitsTest.cpp, + tests/unit/precision/GeometryPrecisionReducerTest.cpp, + tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp, + tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, + tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, + tests/unit/triangulate/DelaunayTest.cpp, + tests/unit/triangulate/VoronoiTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeTest.cpp, + tests/unit/triangulate/quadedge/VertexTest.cpp, + tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, + tests/unit/utility.h, tests/xmltester/BufferResultMatcher.cpp, + tests/xmltester/BufferResultMatcher.h, tests/xmltester/CTS.cpp, + tests/xmltester/SimpleWKTTester.cpp, + tests/xmltester/SingleSidedBufferResultMatcher.cpp, + tests/xmltester/SingleSidedBufferResultMatcher.h, + tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Apply + 4-spaces standard indenting, 120 column wrapping, and some basic + consistency around parens, operators and function signatures. Code + now matches editorconfig so patches should largely lack whitespace + noise, and folks trying to "match the code around" should find it + easier to figure out what "match" means. Per + + https://lists.osgeo.org/pipermail/geos-devel/2018-September/008539.html + +2019-01-31 Paul Ramsey + + * src/CMakeLists.txt: Test to note MSVC+x64 to turn on ASM in ttmath + +2019-01-31 Paul Ramsey + + * src/CMakeLists.txt: More debugging in aid of NMake/CMake/ASM combo + +2019-01-31 Paul Ramsey + + * src/CMakeLists.txt: Add a debugging output to try to fix + NMake/CMake issue with ASM file + +2019-01-30 Paul Ramsey + + * src/CMakeLists.txt: Return to original platform detection + +2019-01-30 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/algorithm/ttmath/Makefile.am, + include/geos/geom/util/GeometryTransformer.h, src/CMakeLists.txt, + src/geom/util/GeometryTransformer.cpp, src/index/quadtree/Node.cpp: + Quiet warnings, enable ASM build for win64? + +2019-01-30 Paul Ramsey + + * appveyor.yml: Remove defunct appveyor nmake-only build + +2019-01-30 Paul Ramsey + + * include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/index/quadtree/Quadtree.h, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + include/geos/simplify/LineSegmentIndex.h: Disable copy constructors + on classes using vector> to get MSVC (appveyor) + compilation back on track + +2019-01-29 Paul Ramsey + + * src/CMakeLists.txt: Fix first appveyor issue + +2019-01-29 Paul Ramsey + + * Makefile.am, include/geos/Makefile.am, + include/geos/algorithm/Makefile.am, + include/geos/noding/IntersectionAdder.h, include/geos/version.h.vc, + makefile.vc, src/Makefile.am, + src/algorithm/MinimumBoundingCircle.cpp, + tests/xmltester/makefile.vc: Clean ups for make dist and build bots + +2019-01-29 Paul Ramsey + + * src/operation/valid/IsValidOp.cpp: Remove spurious reference to + MCPointInRing + +2019-01-29 Paul Ramsey + + * src/operation/valid/IsValidOp.cpp: Remove stray references to + CGAlgorithms.h + +2019-01-29 Paul Ramsey + + * src/algorithm/CGAlgorithmsDD.cpp, + src/operation/valid/IsValidOp.cpp: convert remaining NAN/INF macros + to std:: + +2018-09-11 cvvergara + + * CMakeLists.txt, capi/geos_ts_c.cpp, configure.ac, + doc/example.cpp, include/CMakeLists.txt, include/geos/Makefile.am, + include/geos/algorithm/distance/PointPairDistance.h, + include/geos/constants.h, include/geos/geom/Coordinate.h, + include/geos/geom/Coordinate.inl, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryFilter.h, include/geos/geom/LineString.h, + include/geos/geom/LinearRing.h, include/geos/geom/MultiPoint.h, + include/geos/geom/MultiPolygon.h, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/LinearComponentExtracter.h, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/index/intervalrtree/IntervalRTreeNode.h, + include/geos/index/quadtree/DoubleBits.h, + include/geos/io/ByteOrderDataInStream.h, + include/geos/io/ByteOrderValues.h, include/geos/platform.h.cmake, + include/geos/platform.h.in, include/geos/platform.h.vc, + include/geos/precision/CommonBits.h, + include/geos/precision/EnhancedPrecisionOp.h, src/Makefile.vc, + src/algorithm/HCoordinate.cpp, src/algorithm/InteriorPointLine.cpp, + src/algorithm/InteriorPointPoint.cpp, + src/algorithm/LineIntersector.cpp, + src/algorithm/MinimumDiameter.cpp, + src/algorithm/RobustDeterminant.cpp, src/geom/Coordinate.cpp, + src/geom/CoordinateArraySequence.cpp, src/geom/GeometryFactory.cpp, + src/geom/LineSegment.cpp, src/geom/util/SineStarFactory.cpp, + src/geomgraph/Node.cpp, src/io/ByteOrderValues.cpp, + src/io/WKTWriter.cpp, src/operation/buffer/BufferOp.cpp, + src/operation/buffer/BufferParameters.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/overlay/ElevationMatrix.cpp, + src/operation/overlay/ElevationMatrixCell.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/valid/IsValidOp.cpp, + src/planargraph/algorithm/ConnectedSubgraphFinder.cpp, + src/precision/CommonBits.cpp, src/util/GeometricShapeFactory.cpp, + tests/perf/ClassSizes.cpp, + tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, + tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/CoordinateTest.cpp, + tests/unit/geom/TriangleTest.cpp, + tests/unit/geom/util/GeometryExtracterTest.cpp, + tests/unit/io/ByteOrderValuesTest.cpp, + tests/unit/io/WKBWriterTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/buffer/BufferOpTest.cpp, + tests/unit/operation/buffer/BufferParametersTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp + , tests/unit/precision/CommonBitsTest.cpp: Using constants.h and + stop using platform.h (closes #925) + +2019-01-28 Paul Ramsey + + * autogen.bat: Remove autogen.bat, as all our *.vc infra is now gone + +2019-01-25 Paul Ramsey + + * src/geom/Envelope.cpp: Use strtod in Envelope constructor + References #875 + +2019-01-24 Paul Ramsey + + * src/geom/GeometryFactory.cpp: Add a return value in no-entry + portion of code to quite compiler. + +2019-01-24 Paul Ramsey + + * src/algorithm/MinimumBoundingCircle.cpp, + tests/unit/algorithm/MinimumBoundingCircleTest.cpp: + MinimumBoundingCircle passes tests + +2019-01-24 Paul Ramsey + + * include/geos/algorithm/MinimumBoundingCircle.h, + src/algorithm/MinimumBoundingCircle.cpp, tests/unit/Makefile.am, + tests/unit/algorithm/MinimumBoundingCircleTest.cpp: Draft tests for + MinimumBoundingCircle + +2019-01-24 Paul Ramsey + + * include/geos/algorithm/MinimumBoundingCircle.h, + include/geos/geom/Triangle.h, src/algorithm/Makefile.am, + src/algorithm/MinimumBoundingCircle.cpp, src/geom/Triangle.cpp: + First draft of MinimumBoundingCircle port + +2019-01-23 Paul Ramsey + + * tests/xmltester/CMakeLists.txt: Harmonize test list w/ autotools + +2019-01-23 Paul Ramsey + + * include/geos/algorithm/Orientation.h, + src/algorithm/Orientation.cpp, src/geom/Polygon.cpp: Confirm + Polygon.normalize JTS 3500a912c40cee7fd7ad706a8ae3b412fa3e4452 + +2019-01-23 Paul Ramsey + + * include/geos/operation/overlay/PolygonBuilder.h, + src/operation/overlay/PolygonBuilder.cpp, + tests/xmltester/tests/general/TestFunctionAA.xml: Confirm Fix + Overlay polygon building JTS + 9815531754c07e82718fccf9ea616d865c39cd32 + +2019-01-23 Paul Ramsey + + * src/noding/NodingIntersectionFinder.cpp, + tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/ticket/bug838.xml: Add test case and fix + intersection finger + +2019-01-22 Paul Ramsey + + * include/geos/noding/FastNodingValidator.h, + include/geos/noding/Makefile.am, + include/geos/noding/NodingIntersectionFinder.h, + include/geos/noding/SingleInteriorIntersectionFinder.h, + src/Makefile.vc, src/noding/FastNodingValidator.cpp, + src/noding/Makefile.am, src/noding/NodingIntersectionFinder.cpp, + src/noding/SingleInteriorIntersectionFinder.cpp: Improve overlay + noding validation JTS 06fa68bf9e6e445f0252ae5fc0dac33e86b4f890 + +2019-01-12 Regina Obe + + * .drone-1.0.yml: Run script for dronie.osgeo.org - the drone 1.0 + generation + +2018-12-28 Daniel Baston + + * include/geos/operation/distance/DistanceOp.h, + src/operation/distance/DistanceOp.cpp: Replace fixed-size + std::vector with std::array + +2018-12-28 Daniel Baston + + * src/operation/overlay/PolygonBuilder.cpp: Complete tuple->struct + transition + +2018-12-28 Daniel Baston + + * : commit d75a294d03e9ad0aa7775f893ca5ce7c5bfec142 Author: + doskabouter Date: Fri Dec 28 20:42:42 + 2018 +0100 + +2018-12-28 doskabouter + + * include/geos/operation/overlay/PolygonBuilder.h, + src/operation/overlay/PolygonBuilder.cpp: use struct instead of + tuple + +2018-12-28 doskabouter + + * src/operation/overlay/PolygonBuilder.cpp: fixed styling + +2018-12-27 Daniel Baston + + * tests/unit/geom/GeometryCollectionTest.cpp: Enable commented-out + test + +2018-12-27 Daniel Baston + + * : Merge remote-tracking branch 'sir-sigurd/geometry-item-srid' + +2018-12-27 Daniel Baston + + * : commit 9aeb40139866204de271e7f1b8dfd644e0ebc402 Author: Daniel + Baston Date: Thu Dec 27 15:18:39 2018 -0500 + +2018-12-27 Daniel Baston + + * : commit 7014e2b6509709f70dc08ca3b4b4d843d3df2a71 Author: Daniel + Baston Date: Sat Dec 22 20:49:22 2018 -0500 + +2018-12-22 Daniel Baston + + * src/simplify/TaggedLineStringSimplifier.cpp: Optimize intersection + testing Robust line intersection tests are slow, so avoid testing each line + segment against itself and then ignoring the positive result. + +2018-12-22 Daniel Baston + + * include/geos/simplify/TaggedLineStringSimplifier.h, + src/simplify/TaggedLineStringSimplifier.cpp: Use std::pair instead + of length-2 std::vector + +2018-12-22 Daniel Baston + + * src/index/quadtree/NodeBase.cpp: Avoid specifying iterator type + +2018-12-22 Daniel Baston + + * src/index/quadtree/NodeBase.cpp: Simplify for loop + +2018-12-22 Daniel Baston + + * include/geos/index/quadtree/NodeBase.h, + src/index/quadtree/Node.cpp, src/index/quadtree/NodeBase.cpp, + src/index/quadtree/Root.cpp: Use std::array for Quadtree nodes + +2018-12-22 Daniel Baston + + * include/geos/index/quadtree/Quadtree.h, + src/index/quadtree/Quadtree.cpp: Use unique_ptr for Quadtree-owned + envelopes + +2018-12-22 Daniel Baston + + * include/geos/simplify/LineSegmentIndex.h, + src/simplify/LineSegmentIndex.cpp: Store LineSegmentIndex Quadtree + as value, not pointer + +2018-12-22 Daniel Baston + + * src/simplify/LineSegmentIndex.cpp: Simplify for loop definition + +2018-12-22 Daniel Baston + + * src/simplify/LineSegmentIndex.cpp: Remove C-style casts + +2018-12-22 Daniel Baston + + * include/geos/simplify/LineSegmentIndex.h, + src/simplify/LineSegmentIndex.cpp: Use unique_ptr for managed + Envelopes in LineSegmentIndex + +2018-12-22 Daniel Baston + + * src/simplify/TaggedLineStringSimplifier.cpp: Simplify for loop + syntax + +2018-12-22 Daniel Baston + + * src/index/quadtree/NodeBase.cpp, + src/simplify/LineSegmentIndex.cpp: Fix typos in comments + +2018-12-22 Daniel Baston + + * src/algorithm/CGAlgorithmsDD.cpp: Improve orientationIndex + performance with fast filter JTS r623 + +2018-12-21 Paul Ramsey + + * CMakeLists.txt: Simpler windows test + +2018-12-21 Paul Ramsey + + * CMakeLists.txt: Attempt to catch all gcc/windows = mingw cases in + one net + +2018-12-21 Paul Ramsey + + * CMakeLists.txt: Message about not using TTMATH_NOASM + +2018-12-21 Paul Ramsey + + * include/geos/algorithm/Makefile.am: Add missing header to + algorithm Makefile.am + +2018-12-21 Paul Ramsey + + * CMakeLists.txt: Remove ttmath ASM on Windows/MinGW for now to see + if we can get MinGW builds at all + +2018-12-21 Paul Ramsey + + * .gitlab-ci.yml: Try and make gitlab-ci happy with the packages + we're adding + +2018-12-20 pramsey + + * : commit 3c83900a1776fda653f50481366487a397981c49 Author: Paul + Ramsey Date: Thu Dec 20 15:59:09 2018 + -0800 + +2018-12-20 Paul Ramsey + + * configure.ac: Prefix version file with srcdir for out-of-tree + support + +2018-12-20 Paul Ramsey + + * Makefile.am: Harmonize spacing with other entries + +2018-12-20 Paul Ramsey + + * Makefile.am, configure.ac: Aha, add Version.txt to dist files + +2018-12-20 Paul Ramsey + + * configure.ac: Still trying to get past CI + +2018-12-20 Paul Ramsey + + * configure.ac: Really get those CAPI numbers in... + +2018-12-20 Paul Ramsey + + * configure.ac: Fill out other common macros for autotools + +2018-12-20 Paul Ramsey + + * CMakeLists.txt, Version.txt, capi/geos_c.h.in, configure.ac: Move + version numbers to a single file + +2018-12-20 Paul Ramsey + + * src/geom/Geometry.cpp: Avoid using reflection JTS + ef92b816438c416303df2eecbc0f655db6e21466 + +2018-12-19 Paul Ramsey + + * include/geos/algorithm/CGAlgorithms.h, + include/geos/algorithm/Makefile.am, src/algorithm/CGAlgorithms.cpp, + src/algorithm/Makefile.am: Deprecate CGAlgorithms and remove all + references JTS b1c0a1e2992c3f3d523dcfb3c0158fbac72b6928 + +2018-12-19 doskabouter + + * : commit f00b4508ebcdc3e19bd63a295f862c5bbc9f3aa0 Author: + doskabouter Date: Wed Dec 19 22:20:36 + 2018 +0100 + +2018-12-19 Paul Ramsey + + * src/algorithm/Distance.cpp: Throw exception by value + +2018-12-19 Paul Ramsey + + * include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/MonotoneChainEdge.h, + include/geos/index/chain/MonotoneChain.h, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/index/chain/MonotoneChain.cpp: Remove extra coordinate + references in MonotoneChain classes JTS + 0315e8ab509ff49646187cda0dfcb7f286e5ba4d + +2018-12-19 Paul Ramsey + + * include/geos/algorithm/Distance.h, + include/geos/algorithm/Makefile.am, + include/geos/geom/LineSegment.inl, + include/geos/operation/buffer/BufferBuilder.h, + include/geos/operation/overlay/MinimalEdgeRing.h, + src/algorithm/ConvexHull.cpp, src/algorithm/Distance.cpp, + src/algorithm/LineIntersector.cpp, src/algorithm/Makefile.am, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/distance/FacetSequence.cpp, + src/operation/overlay/MaximalEdgeRing.cpp, + src/operation/overlay/OverlayOp.cpp, + src/precision/MinimumClearance.cpp, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp: + Refactor CGAlgorithms distance functions into Distance class JTS + 6103203279ec05e43c625d4f1b4377c93ff52934 + +2018-12-18 Paul Ramsey + + * include/geos/noding/SegmentIntersectionDetector.h, + src/noding/FastSegmentSetIntersectionFinder.cpp: Remove base 'using + namespace' call in header + +2018-12-18 Paul Ramsey + + * src/geom/util/Densifier.cpp, src/geomgraph/EdgeRing.cpp, + src/noding/snapround/SimpleSnapRounder.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/valid/ConnectedInteriorTester.cpp, + src/simplify/TopologyPreservingSimplifier.cpp: Remove duplicate + header includes + +2018-12-18 Paul Ramsey + + * include/geos/geom/Envelope.h, + include/geos/index/chain/MonotoneChainOverlapAction.h, + include/geos/index/chain/MonotoneChainSelectAction.h, + src/geom/Envelope.cpp, src/index/chain/MonotoneChain.cpp: Temporary + envelope removal JTS e994715b263e7dda56a1b33caa4e0b7404ae60b8 JTS + 8a4277544cf972639ea906b054c66bc22ab7ae4f JTS + 239881104355ec906de3bd69974614169fb14bb3 + +2018-12-18 Paul Ramsey + + * include/geos/geomgraph/index/MonotoneChainEdge.h, + src/geomgraph/index/MonotoneChainEdge.cpp: Remove use of temporary + Envelopes in MonotoneChainEdge JTS + 940dd3b71e44900fd2f8689085273f3454a737e3 + +2018-12-18 Paul Ramsey + + * capi/geos_ts_c.cpp, include/geos/algorithm/Angle.h, + include/geos/algorithm/Makefile.am, + include/geos/algorithm/PointLocation.h, + include/geos/geosAlgorithm.h, + include/geos/operation/buffer/BufferInputLineSimplifier.h, + src/algorithm/Angle.cpp, src/algorithm/CGAlgorithmsDD.cpp, + src/algorithm/ConvexHull.cpp, src/algorithm/LineIntersector.cpp, + src/algorithm/Makefile.am, src/algorithm/Orientation.cpp, + src/algorithm/PointLocation.cpp, src/algorithm/PointLocator.cpp, + src/algorithm/SimplePointInRing.cpp, + src/algorithm/distance/DiscreteHausdorffDistance.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp, + src/geom/GeometryCollection.cpp, src/geom/LineSegment.cpp, + src/geom/MultiLineString.cpp, src/geomgraph/EdgeRing.cpp, + src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/overlay/PolygonBuilder.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/valid/IndexedNestedRingTester.cpp, + src/operation/valid/IsValidOp.cpp, + src/operation/valid/QuadtreeNestedRingTester.cpp, + src/operation/valid/SimpleNestedRingTester.cpp, + src/operation/valid/SweeplineNestedRingTester.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/LocatePointInRingTest.cpp, + tests/unit/algorithm/OrientationIndexFailureTest.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp: Move + CGAlgorithms point location functions to PointLocation JTS + 555e2cbc45ce6207e3b4df9842cbb25220c494d5 + +2018-12-18 Sergey Fedoseev + + * src/geom/GeometryCollection.cpp, tests/unit/Makefile.am, + tests/unit/geom/GeometryCollectionTest.cpp: Fix #947: Fix + getCoordinate() of non-empty collection with empty first item. + +2018-12-18 Paul Ramsey + + * include/geos/algorithm/Orientation.h: Add some doco JTS + 7a4b7367fd63f545c3ead99583669ab2fbd21676 + +2018-12-17 Paul Ramsey + + * include/geos/geom/util/GeometryTransformer.h: Return unused member + for now + +2018-12-17 Paul Ramsey + + * capi/geos_ts_c.cpp, include/geos/algorithm/Makefile.am, + include/geos/algorithm/Orientation.h, + include/geos/geom/LineSegment.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/planargraph/DirectedEdge.h, + src/algorithm/Centroid.cpp, src/algorithm/ConvexHull.cpp, + src/algorithm/Makefile.am, src/algorithm/Orientation.cpp, + src/geom/Polygon.cpp, src/geomgraph/EdgeEnd.cpp, + src/geomgraph/EdgeRing.cpp, src/geomgraph/GeometryGraph.cpp, + src/geomgraph/PlanarGraph.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/buffer/OffsetSegmentGenerator.cpp, + src/operation/buffer/RightmostEdgeFinder.cpp, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/planargraph/DirectedEdge.cpp, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/xmltester/tinyxml2/tinyxml2.cpp: Move CGAlgorithms functions + into Orientation class JTS 4c4ccd7fe5c758abb48647da60dacf8e4cd7f9df + +2018-12-17 Paul Ramsey + + * tests/xmltester/XMLTester.cpp, + tests/xmltester/tinyxml2/tinyxml2.cpp: Quiet compiler warnings in + xmltester + +2018-12-17 Paul Ramsey + + * src/algorithm/Length.cpp: Pass by reference for cpp magic + +2018-12-17 Paul Ramsey + + * src/geom/util/Densifier.cpp, src/operation/IsSimpleOp.cpp, + tests/xmltester/XMLTester.cpp, + tests/xmltester/tinyxml2/tinyxml2.cpp: Quiet warnings from GCC 4.8 + +2018-12-17 Paul Ramsey + + * include/geos/algorithm/ttmath/ttmathbig.h: Try to quiet GCC + warning about type promotion + +2018-12-17 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/tests/robust/TestRobustRelateFloat.xml: Add some + robustness failure tests (Unfortunately these currently fail on + GEOS) JTS 5b30e1334e5999461eb3d9b80c51375ffa53f810 + +2018-12-17 Paul Ramsey + + * include/geos/algorithm/Length.h, + include/geos/algorithm/Makefile.am, src/algorithm/Length.cpp, + src/algorithm/Makefile.am, src/geom/LineString.cpp, + tests/unit/Makefile.am, tests/unit/algorithm/AreaTest.cpp, + tests/unit/algorithm/LengthTest.cpp: Move length functions to Length + class JTS 1b7bb75fcdeb1cbde1fe6c6deb2cde18929868d7 + +2018-12-17 Paul Ramsey + + * include/geos/algorithm/Area.h, tests/unit/algorithm/AreaTest.cpp: + Remove dead comments from Area code + +2018-12-17 Paul Ramsey + + * src/algorithm/Area.cpp: std::abs vs fabs + +2018-12-17 Paul Ramsey + + * tests/unit/capi/GEOSBufferTest.cpp, tests/unit/tut/tut_assert.hpp: + Change buffer unit failures to more correct message + +2018-12-17 Paul Ramsey + + * src/algorithm/Area.cpp: Use fabs not abs + +2018-12-17 Paul Ramsey + + * include/geos/algorithm/Area.h, + include/geos/algorithm/Makefile.am, src/algorithm/Area.cpp, + src/algorithm/Makefile.am, src/geom/Polygon.cpp, + tests/unit/Makefile.am, tests/unit/algorithm/AreaTest.cpp: Move area + functions to Area class JTS e06c0c9ce27abdf84f8dc897baac06cc70a2eed7 + +2018-12-14 Paul Ramsey + + * src/geom/Geometry.cpp: Improve optimization of contains and covers + for mixed dimension cases JTS + a797ee259886c15fcae9436e87b790152afe314f + +2018-12-14 Paul Ramsey + + * include/geos/geosAlgorithm.h, src/algorithm/CGAlgorithms.cpp, + src/algorithm/RayCrossingCounter.cpp, src/geom/Geometry.cpp: Add L/A + optimization for covers and contains JTS + a5f7141c3b723de582a720e4d7faf73928bf3704 + +2018-12-14 Paul Ramsey + + * include/geos/algorithm/Makefile.am, + include/geos/algorithm/SIRtreePointInRing.h, + include/geos/geosAlgorithm.h, src/Makefile.vc, + src/algorithm/Makefile.am, src/algorithm/SIRtreePointInRing.cpp, + tests/unit/Makefile.am, + tests/unit/algorithm/SIRtreePointInRingTest.cpp: Delete obsolete + PointInRing classes JTS 55fb1113655db08a9a4ce4c17c9ee5912b6aa0f2 + +2018-12-14 Paul Ramsey + + * include/geos/platform.h.in: Try fix build with isfinite macro + +2018-12-14 Paul Ramsey + + * src/algorithm/CGAlgorithmsDD.cpp, + src/algorithm/RayCrossingCounter.cpp, + src/algorithm/SIRtreePointInRing.cpp: Remove references to + RobustDeterminant JTS 2fc9fa215cdfff4210ec55cb8c6cfb79618b4ff2 + +2018-12-13 Paul Ramsey + + * include/geos/algorithm/CentroidArea.h, + include/geos/algorithm/CentroidLine.h, + include/geos/algorithm/CentroidPoint.h, + include/geos/algorithm/Makefile.am, include/geos/geosAlgorithm.h, + src/Makefile.vc, src/algorithm/CentroidArea.cpp, + src/algorithm/CentroidLine.cpp, src/algorithm/CentroidPoint.cpp, + src/algorithm/Makefile.am: Remove CentroidArea, CentroidLine, + CentroidPoint as per JTS 0a775496322c11bc6d838acf99d0106b926a13aa + +2018-12-13 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + src/algorithm/CGAlgorithmsDD.cpp: Whoops, forgot the implementation + of CGAlgorithmsDD::signOfDet2x2 to go with the test case :/ + +2018-12-13 Paul Ramsey + + * tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp: + Change types in test to double + +2018-12-13 Paul Ramsey + + * tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp: Add + test for cCGAlgorithmsDD::signOfDet2x2 + +2018-12-12 Paul Ramsey + + * include/geos/algorithm/MCPointInRing.h, + include/geos/algorithm/Makefile.am, src/Makefile.vc, + src/algorithm/MCPointInRing.cpp, src/algorithm/Makefile.am: Remove + MCPointInRing + +2018-12-12 Paul Ramsey + + * include/geos/algorithm/MCPointInRing.h, + include/geos/geosAlgorithm.h, src/operation/valid/IsValidOp.cpp: A + little clean up, but not quite full deprecation as indicated in JTS + 95f19c41741a5261c324f038f355549cab8be5a8 + +2018-12-12 Paul Ramsey + + * tests/unit/algorithm/LocatePointInRingTest.cpp: Remove unused + typedef + +2018-12-12 Paul Ramsey + + * tests/unit/Makefile.am: Add autotools support for new + LocatePointInRingTest + +2018-12-12 Paul Ramsey + + * tests/unit/algorithm/LocatePointInRingTest.cpp: Add JTS tests from + 9fa51113caeea33551fa8ee2f25fcbab60090004 + +2018-12-12 Paul Ramsey + + * include/geos/operation/valid/IsValidOp.h, + src/operation/valid/IsValidOp.cpp: Reformat IsValidOp + +2018-12-12 Paul Ramsey + + * src/operation/valid/IsValidOp.cpp: Change isValidOp to use + IndexedPointInAreaLocator JTS commit + 540a59107fd7b50d1057da11cf65b3d1894c82c1 + +2018-12-12 Paul Ramsey + + * include/geos/algorithm/ttmath/ttmathtypes.h: Turn off ASM for gcc + < 5 and 32-bit builds, as there's something that gcc hates in there + when building with PIC + +2018-12-12 Paul Ramsey + + * include/geos/algorithm/ttmath/COPYRIGHT, + include/geos/algorithm/ttmath/ttmath.h, + include/geos/algorithm/ttmath/ttmathbig.h, + include/geos/algorithm/ttmath/ttmathdec.h, + include/geos/algorithm/ttmath/ttmathint.h, + include/geos/algorithm/ttmath/ttmathmisc.h, + include/geos/algorithm/ttmath/ttmathobjects.h, + include/geos/algorithm/ttmath/ttmathparser.h, + include/geos/algorithm/ttmath/ttmaththreads.h, + include/geos/algorithm/ttmath/ttmathtypes.h, + include/geos/algorithm/ttmath/ttmathuint.h, + include/geos/algorithm/ttmath/ttmathuint_noasm.h, + include/geos/algorithm/ttmath/ttmathuint_x86.h, + include/geos/algorithm/ttmath/ttmathuint_x86_64.h, + include/geos/algorithm/ttmath/ttmathuint_x86_64_msvc.asm: Move to + 0.9.4 prerelease version of ttmath in hopes of getting past + regression failure on g++ 4.8 + +2018-12-11 Paul Ramsey + + * .gitignore, include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/algorithm/Makefile.am, + include/geos/algorithm/RayCrossingCounterDD.h, + src/algorithm/CGAlgorithmsDD.cpp, src/algorithm/Makefile.am, + src/algorithm/RayCrossingCounterDD.cpp, src/geom/util/Densifier.cpp: + Blind port for RayCrossingCounterDD and some minor changes to + existing files + +2018-12-11 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + src/algorithm/CGAlgorithmsDD.cpp: Reformat CGAlgorithmsDD + +2018-12-11 Paul Ramsey + + * .editorconfig, README.md: While we work up the nerves to + bulk-format the tree, change the editorconfig file to reflect the + decision, and add a note on a astyle call that should do the "right" + thing. + + https://lists.osgeo.org/pipermail/geos-devel/2018-September/008582.html + +2018-12-11 Paul Ramsey + + * include/geos/algorithm/CGAlgorithms.h, + include/geos/algorithm/CGAlgorithmsDD.h, + src/algorithm/CGAlgorithmsDD.cpp: Small clean-ups preparatory for + aping the JTS refactor around DD computation. + +2018-12-11 Paul Ramsey + + * tests/unit/algorithm/OrientationIndexFailureTest.cpp: Remove + commented out code from example + +2018-12-11 Paul Ramsey + + * src/geom/util/Densifier.cpp: Change coordinate list access to an + iterator pattern + +2018-12-11 Paul Ramsey + + * Makefile.am, configure.ac, include/geos/algorithm/Makefile.am, + include/geos/algorithm/locate/Makefile.am, + include/geos/algorithm/ttmath/Makefile.am, + src/algorithm/Makefile.am, tests/unit/Makefile.am: Add autoconf + support for DD updates + +2018-12-11 Paul Ramsey + + * tests/unit/algorithm/OrientationIndexFailureTest.cpp: Add DD + orientation test cases + +2018-12-10 Paul Ramsey + + * tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp: Add + in test for orientation that stresses robustness + +2018-12-10 Paul Ramsey + + * include/geos/algorithm/CGAlgorithmsDD.h, + include/geos/algorithm/ttmath/COPYRIGHT, + include/geos/algorithm/ttmath/README, + include/geos/algorithm/ttmath/ttmath.h, + include/geos/algorithm/ttmath/ttmathbig.h, + include/geos/algorithm/ttmath/ttmathdec.h, + include/geos/algorithm/ttmath/ttmathint.h, + include/geos/algorithm/ttmath/ttmathmisc.h, + include/geos/algorithm/ttmath/ttmathobjects.h, + include/geos/algorithm/ttmath/ttmathparser.h, + include/geos/algorithm/ttmath/ttmaththreads.h, + include/geos/algorithm/ttmath/ttmathtypes.h, + include/geos/algorithm/ttmath/ttmathuint.h, + include/geos/algorithm/ttmath/ttmathuint_noasm.h, + include/geos/algorithm/ttmath/ttmathuint_x86.h, + include/geos/algorithm/ttmath/ttmathuint_x86_64.h, + include/geos/algorithm/ttmath/ttmathuint_x86_64_msvc.asm, + src/CMakeLists.txt, src/algorithm/CGAlgorithmsDD.cpp: Draft port of + ttmath and CGAlgorithmsDD from JTS, builds cleanly, needs tests. + +2018-12-10 Daniel Baston + + * : commit 791fd4567e4b7058640984b98f142903c7268d33 Merge: 24652fb + 18f5db9 Author: Daniel Baston Date: Mon Dec 10 + 10:42:57 2018 -0500 + +2018-12-04 Daniel Baston + + * include/geos/algorithm/SIRtreePointInRing.h, + src/algorithm/SIRtreePointInRing.cpp, tests/unit/Makefile.am, + tests/unit/algorithm/SIRtreePointInRingTest.cpp: Fix mem leaks in + SIRtreePointInRing Fixes #944 + +2018-12-09 doskabouter + + * src/algorithm/locate/SimplePointInAreaLocator.cpp: Performance + improvement: First check envelope before calling + CGAlgorithms::isPointInRing + +2018-12-09 doskabouter + + * src/operation/polygonize/EdgeRing.cpp: Fixed todo + +2018-12-07 Paul Ramsey + + * include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp: Reformatting pass + for some wonky formatting + +2018-12-07 Paul Ramsey + + * include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp, + src/operation/predicate/RectangleIntersects.cpp: Update AreaLocator + classes to return Location instead of boolean, to mirror JTS update + in 6fac55a95727fab0989be39eb8491c1bb27666dd + +2018-12-07 Paul Ramsey + + * src/io/WKBReader.cpp, tests/unit/io/WKBReaderTest.cpp: Partially + harmonize with JTS 8e6abedeca3f3c1905c2f58c0a2dccc77f1f2f12 Support + for ISO WKB types for higher dimensions as well as old SFSQL + high-bit flags for Z. Commented out support for M for a future date + when M support is added to GEOS. + +2018-12-06 Paul Ramsey + + * include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Point.h, include/geos/geom/Polygon.h, + src/geom/Geometry.cpp: Port from JTS + 6e44c5ceb791a939bd54643e38a8fe5ee7b500a6 Refactor the implementation + of geometry type sort order and harmonize with JTS method names + +2018-12-06 Paul Ramsey + + * src/geom/util/Densifier.cpp, tests/xmltester/CMakeLists.txt, + tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, + tests/xmltester/tests/general/TestDensify.xml: Complete Densifier + port and add in integration XML tests + +2018-12-04 Paul Ramsey + + * include/geos/geom/util/Densifier.h, + include/geos/geom/util/Makefile.am, src/geom/util/Densifier.cpp, + src/geom/util/Makefile.am: Clean build of Densifier code only, tests + still TBD + +2018-12-04 Daniel Baston + + * : commit c3446ae16a5c81986ecb7fb5f16e4687cccece5b Merge: ce0449c + ad2319b Author: Daniel Baston Date: Tue Dec 4 + 16:27:21 2018 -0500 + +2018-12-04 Daniel Baston + + * include/geos/operation/overlay/OverlayOp.h: Make new methods + static + +2018-12-04 Daniel Baston + + * include/geos/noding/FastSegmentSetIntersectionFinder.h, + src/noding/FastSegmentSetIntersectionFinder.cpp: Use unique_ptr in + FastSegmentSetIntersectionFinder + +2018-12-04 Daniel Baston + + * src/geom/prep/PreparedGeometryFactory.cpp: Fix typo in error + message [ci skip] + +2018-11-30 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/XMLTester.cpp, + tests/xmltester/tests/general/TestMinimumClearance.xml: Add + TestMinimumClearance.xml to test set and update the XMLTester to + support "minclearance" and "minclearanceline" tests + +2018-11-30 Paul Ramsey + + * tests/xmltester/XMLTester.cpp: Reformatting pass + +2018-11-30 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/XMLTester.cpp, + tests/xmltester/tests/general/TestEqualsExact.xml: Add + TestEqualsExact.xml and update XMLTester + +2018-11-29 Paul Ramsey + + * tests/xmltester/CMakeLists.txt, tests/xmltester/Makefile.am, + tests/xmltester/XMLTester.cpp, + tests/xmltester/tests/validate/TestRelateAA-big.xml, + tests/xmltester/tests/validate/TestRelateAA.xml, + tests/xmltester/tests/validate/TestRelateAC.xml, + tests/xmltester/tests/validate/TestRelateLA.xml, + tests/xmltester/tests/validate/TestRelateLC.xml, + tests/xmltester/tests/validate/TestRelateLL.xml, + tests/xmltester/tests/validate/TestRelatePA.xml, + tests/xmltester/tests/validate/TestRelatePL.xml, + tests/xmltester/tests/validate/TestRelatePP.xml: Add the JTS + ./validate XML tests. Reorganize the order of XML tests in build + files to match sort order. Update the xml tester to handle the + operations in the validate tests. + +2018-11-29 Paul Ramsey + + * : commit 8476094fcbfc787d4e5541c5b3bde9a72edfb990 Author: Paul + Ramsey Date: Thu Nov 29 11:39:41 2018 + -0800 + +2018-11-29 Daniel Baston + + * src/operation/overlay/PolygonBuilder.cpp: Resolve unused value + warning + +2018-11-28 Paul Ramsey + + * src/operation/overlay/PolygonBuilder.cpp: OK, use a auto const& + loop instead, as I read up on C++11 + +2018-11-28 Paul Ramsey + + * src/operation/overlay/PolygonBuilder.cpp: One better, use C++11 + auto iterator on the vector + +2018-11-28 Paul Ramsey + + * src/operation/overlay/PolygonBuilder.cpp: Change + PolygonBuilder::findEdgeRingContaining over to an iterator loop + +2018-11-28 Paul Ramsey + + * tests/xmltester/tests/general/TestUnaryUnion.xml, + tests/xmltester/tests/general/TestUnaryUnionFloating.xml: Harmonize + formatting of XML tests with JTS so the files look more obviously + "the same" during these kind of porting runs + +2018-11-28 Paul Ramsey + + * tests/xmltester/tests/general/TestRectanglePredicate.xml: Update + TestRectanglePredicate.xml to current JTS version + +2018-11-28 Paul Ramsey + + * src/operation/overlay/PolygonBuilder.cpp, + tests/xmltester/tests/general/TestFunctionAA.xml: Implement updated + JTS hole assignment code, and associated tests. + +2018-11-27 Paul Ramsey + + * tests/xmltester/tests/general/TestFunctionAA.xml: Remove failing + tests from XML for now + +2018-11-27 Paul Ramsey + + * tests/xmltester/CMakeLists.txt: Harmonize CMake tests with + autotools, using --test-valid-output on the XML tests + +2018-11-27 Paul Ramsey + + * include/geos/geom/LinearRing.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Polygon.h, include/geos/operation/IsSimpleOp.h, + src/geom/Geometry.cpp, src/geom/LinearRing.cpp, + src/geom/MultiPolygon.cpp, src/geom/Polygon.cpp, + src/operation/IsSimpleOp.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/xmltester/tests/general/TestSimple.xml: Harmonize with JTS + isSimple behaviour for GeometryCollection and Polygons, which is + that an area with non-simple rings is itself non-simple, and a + collection with a non-simple component is non-simple. + +2018-11-27 Paul Ramsey + + * tests/xmltester/tests/general/TestConvexHull.xml: Harmonize + TestConvexHull.xml with JTS version + +2018-11-26 Paul Ramsey + + * tests/xmltester/tests/general/TestFunctionAA.xml: Add + TestFunctionAA.xml new tests from JTS + +2018-11-21 Daniel Baston + + * : Merge remote-tracking branch 'dbaston/mc-cleanup' + +2018-11-20 Daniel Baston + + * src/algorithm/MCPointInRing.cpp: Tidy MCPointInRing Remove unneeded heap allocations and manual deletes. + +2018-09-28 Raul Marin + + * src/geom/GeometryFactory.cpp: GeometryFactory: Refactor + buildGeometry to use int ids + +2018-09-27 Raul Marin + + * src/geom/GeometryFactory.cpp: Address memory warnings in + buildGeometry Suite: buildarea Test: buildarea1 ...Uninitialized bytes in __interceptor_memcmp at + offset 0 inside [0x7fffae24fa80, 4) ==19345==WARNING: + MemorySanitizer: use-of-uninitialized-value #0 0x7f5ed6768c5f in + std::char_traits::compare(char const*, char const*, unsigned + long) + + /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/char_traits.h:310:25#1 0x7f5ed6768c5f in std::__cxx11::basic_string, std::allocator >::compare(char const*) + const + + /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.tcc:1424:37#2 0x7f5ed6892f40 in bool std::operator==, std::allocator + >(std::__cxx11::basic_string, + std::allocator > const&, char const*) + /usr/include/c++/8.2.1/bits/basic_string.h:6075:35 #3 + 0x7f5ed6892f40 in + + geos::geom::GeometryFactory::buildGeometry(std::vector >*) const /usr/src/debug/geos/src/geom/GeometryFactory.cpp:664:16#4 0x7f5ed690dd48 in + + + + geos::operation::overlay::OverlayOp::computeOverlay(geos::operation::overlay::OverlayOp::OpCode) /usr/src/debug/geos/src/operation/overlay/OverlayOp.cpp:839:28#5 0x7f5ed690dee1 in + + + + geos::operation::overlay::OverlayOp::getResultGeometry(geos::operation::overlay::OverlayOp::OpCode) /usr/src/debug/geos/src/operation/overlay/OverlayOp.cpp:187:16#6 0x7f5ed690e281 in + geos::operation::overlay::OverlayOp::overlayOp(geos::geom::Geometry + const*, geos::geom::Geometry const*, + geos::operation::overlay::OverlayOp::OpCode) + /usr/src/debug/geos/src/operation/overlay/OverlayOp.cpp:93:30 #7 + 0x7f5ed688d11f in + + geos::operation::overlay::overlayOp::operator()(geos::geom::Geometry const*, geos::geom::Geometry const*) /usr/src/debug/geos/src/geom/../../include/geos/operation/overlay/OverlayOp.h:388:44#8 0x7f5ed688d11f in std::unique_ptr > + + geos::geom::BinaryOp(geos::geom::Geometry const*, geos::geom::Geometry const*, geos::operation::overlay::overlayOp) /usr/src/debug/geos/src/geom/../../include/geos/geom/BinaryOp.h:357:3#9 0x7f5ed688b16f in + geos::geom::Geometry::Union(geos::geom::Geometry const*) const + /usr/src/debug/geos/src/geom/Geometry.cpp:586:17 #10 + 0x7f5ed691885d in + + geos::operation::geounion::CascadedPolygonUnion::unionActual(geos::geom::Geometry*, geos::geom::Geometry*) /usr/src/debug/geos/src/operation/union/CascadedPolygonUnion.cpp:370:36#11 0x7f5ed6919080 in + + + + geos::operation::geounion::CascadedPolygonUnion::unionOptimized(geos::geom::Geometry*, geos::geom::Geometry*) /usr/src/debug/geos/src/operation/union/CascadedPolygonUnion.cpp:236:27#12 0x7f5ed6919252 in + + + + geos::operation::geounion::CascadedPolygonUnion::unionTree(geos::index::strtree::ItemsList*) /usr/src/debug/geos/src/operation/union/CascadedPolygonUnion.cpp:162:23#13 0x7f5ed6919630 in + geos::operation::geounion::CascadedPolygonUnion::Union() + + /usr/src/debug/geos/src/operation/union/CascadedPolygonUnion.cpp:151:21#14 0x7f5ed691983d in + + + + geos::operation::geounion::CascadedPolygonUnion::Union(geos::geom::MultiPolygon const*) /usr/src/debug/geos/src/operation/union/CascadedPolygonUnion.cpp:124:20#15 0x7f5ed71db6a8 in GEOSUnionCascaded_r + /usr/src/debug/geos/capi/geos_ts_c.cpp:2497:43 #16 0x7f5ed7332ed6 in + LWGEOM_GEOS_buildArea + /home/raul/dev/public/postgis/liblwgeom/lwgeom_geos.c:1124:8 #17 + 0x7f5ed7333164 in lwgeom_buildarea + /home/raul/dev/public/postgis/liblwgeom/lwgeom_geos.c:1155:7 #18 + 0x55b755e00bfa in buildarea1 + /un/dev_public/postgis/liblwgeom/cunit/cu_buildarea.c:66:9 #19 + 0x7f5ed6fb1117 (/usr/lib/libcunit.so.1+0x4117) #20 0x7f5ed6fb13b1 + (/usr/lib/libcunit.so.1+0x43b1) #21 0x7f5ed6fb17b6 in + CU_run_all_tests (/usr/lib/libcunit.so.1+0x47b6) #22 0x55b755e7f6b7 + in main /un/dev_public/postgis/liblwgeom/cunit/cu_tester.c:177:13 + #23 0x7f5ed6c3c222 in __libc_start_main (/usr/lib/libc.so.6+0x24222) #24 0x55b755d7f0bd in _start + + (/un/dev_public/postgis/liblwgeom/cunit/.libs/lt-cu_tester+0x250bd)SUMMARY: MemorySanitizer: use-of-uninitialized-value + + /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/char_traits.h:310:25 in std::char_traits::compare(char const*, char const*, unsigned long) + +2018-11-19 Daniel Baston + + * src/operation/overlay/OverlayOp.cpp: Fix memory leak introduced in + aefa49cbc + +2018-11-19 Daniel Baston + + * include/geos/algorithm/MCPointInRing.h, + include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + src/algorithm/MCPointInRing.cpp, src/index/bintree/NodeBase.cpp, + src/index/chain/MonotoneChainBuilder.cpp, + src/noding/MCIndexNoder.cpp, + src/noding/MCIndexSegmentSetMutualIntersector.cpp: Resolve segfault + in BinTree Take things a bit farther than needed to strictly fix the bug, by + using std::unique_ptr to clearly define the ownership of objects + returned by MonotoneChainBuilder. + +2018-11-19 Daniel Baston + + * : commit 23db5ed049bf5c149c2c048094602908932d9979 Author: Daniel + Baston Date: Thu Nov 15 22:05:04 2018 -0500 + +2018-11-16 Daniel Baston + + * src/noding/GeometryNoder.cpp: Resolve MSVC warning + +2018-11-16 Paul Ramsey + + * include/geos/operation/overlay/OverlayOp.h, + src/operation/overlay/OverlayOp.cpp: Formatting changes to please + make check (hm) + +2018-11-16 Paul Ramsey + + * src/operation/sharedpaths/SharedPathsOp.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp: Fix SharePathsOp to deal + with Empty results from OverlayOp Fix UnaryUnion test to deal with + typed EMPTY + +2018-11-15 Paul Ramsey + + * tests/xmltester/tests/general/TestFunctionAA.xml: Revert + tests/general/TestFunctionAA.xml to previous version, as it requires + further ports from JTS to support new behaviour + +2018-11-15 Paul Ramsey + + * include/geos/operation/overlay/OverlayOp.h, + src/operation/overlay/OverlayOp.cpp, tests/xmltester/Makefile.am, + tests/xmltester/tests/general/TestFunctionAA.xml, + tests/xmltester/tests/general/TestFunctionLA.xml, + tests/xmltester/tests/general/TestFunctionLL.xml, + tests/xmltester/tests/general/TestFunctionPP.xml: Update handling of + EMPTY geometry typing to match JTS current version and update test + cases to match. + +2018-11-14 Paul Ramsey + + * include/geos/algorithm/Centroid.h, src/algorithm/Centroid.cpp, + tests/xmltester/tests/general/TestCentroid.xml: Update Centroid + algorithm to match JTS, and accompanying test file + +2018-11-13 Paul Ramsey + + * tests/xmltester/XMLTester.cpp: Force destruction of xml document + stub on failed loading to work around limitation in tinyxml2 + +2018-11-13 Paul Ramsey + + * tests/xmltester/tinyxml2/tinyxml2.cpp, + tests/xmltester/tinyxml2/tinyxml2.h: Update to latest tinyxml2 + +2018-11-13 Paul Ramsey + + * tests/xmltester/tests/linemerge.xml: Actually, more valid XML uses + " for attributes + +2018-11-13 Paul Ramsey + + * tests/xmltester/tests/linemerge.xml: Make test XML more valid + +2018-11-09 pramsey + + * : commit d4d14146cb590260cbcdad29e625dc17b112e50b Author: Paul + Ramsey Date: Fri Nov 9 14:12:49 2018 + -0800 + +2018-11-09 pramsey + + * : commit bfe6b8bb635163a96bfba7a17383eb386486ec60 Author: Daniel + Baston Date: Sat Oct 27 15:20:11 2018 -0400 + +2018-09-01 Darafei Praliaskouski + + * src/triangulate/quadedge/TrianglePredicate.cpp, + tests/unit/triangulate/DelaunayTest.cpp: Fix Delaunay robustness by + using longer floating point variable on inCircle + +2018-10-21 Regina Obe + + * .gitignore, tools/ci/bessie.sh, tools/ci/bessie32.sh: Flip bessies + to cmake build test. Closes #939. Exclude exes from commit. + +2018-10-21 Regina Obe + + * tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp: Remark out + failed noticed for CoordinateArraySequenceFactor test one + +2018-10-19 Paul Ramsey + + * README.md: Update link to php repo + +2018-10-19 Paul Ramsey + + * .gitignore: Ignore TextMate transient files + +2018-10-18 Regina Obe + + * : commit d9546f690bcf2bb35c197265602731c8f6f8ca48 Merge: 4ff201d + 4a6ec06 Author: Regina Obe Date: Thu Oct 18 22:30:15 + 2018 -0700 + +2018-10-19 Simon Wells + + * capi/CMakeLists.txt: Move add_dependencies to inside the if where + add_library is done + +2018-10-07 Sandro Santilli + + * README.md: Put building prerequisite in a common section + +2018-10-06 Greg Troxel + + * README.md: README.md: Clarify installation instructions + +2018-10-04 Sandro Santilli + + * tools/repo_revision.sh: Fix skipping override of unchanged + geos_revision.h + +2018-10-02 John K. Harvey + + * configure.ac, macros/ax_check_compile_flag.m4: 'make check' passes + with autoconf 2.63. + +2018-09-25 Daniel Baston + + * src/Makefile.vc, src/index/intervalrtree/IntervalRTreeNode.cpp, + src/index/intervalrtree/Makefile.am: Remove empty file + +2018-09-18 Daniel Baston + + * include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + include/geos/index/intervalrtree/IntervalRTreeNode.h, + include/geos/index/intervalrtree/SortedPackedIntervalRTree.h, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp: Store + SortedPackedIntervalRTree leaf and branch nodes in vectors This minimizes the number of individual memory allocations. + +2018-09-23 Daniel Baston + + * : commit d5141be7fb1a427e9939eb6024dafedfa6df22f3 Merge: 52c516f + 2af4f06 Author: Daniel Baston Date: Sun Sep 23 + 21:32:00 2018 -0400 + +2018-09-23 Daniel Baston + + * : commit 3b745fdb83d8293d998a7b958bbf1adf99ecc0ae Merge: b578411 + 18505af Author: Daniel Baston Date: Sun Sep 23 + 21:22:31 2018 -0400 + +2018-09-21 Sergey Fedoseev + + * src/operation/union/UnaryUnionOp.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp: Fix #928: Fixed + crash in GEOSUnaryUnion() when used with empty linestring. + +2018-09-21 Sandro Santilli + + * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, + tests/xmltester/XMLTester.h, tests/xmltester/tinyxml2/README, + tests/xmltester/tinyxml2/tinyxml2.cpp, + tests/xmltester/tinyxml2/tinyxml2.h: Switch from tinyxml to tinyxml2 + +2018-09-21 Daniel Baston + + * : commit 9ba8f5ee2516c39c1037442383182b846b15ed3b Merge: 9393202 + 7a5f23a Author: Daniel Baston Date: Fri Sep 21 + 07:51:19 2018 -0400 + +2018-09-21 Sergey Fedoseev + + * src/algorithm/CGAlgorithms.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp: Fix #927 -- Fixed crash in + GEOSCoordSeq_isCCW() when used with empty coordseq. + +2018-09-21 Sergey Fedoseev + + * src/linearref/LinearLocation.cpp, tests/unit/Makefile.am, + tests/unit/capi/GEOSInterpolateTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp: Fix #926: Fixed + crash in GEOSInterpolate() when used with empty LineString. + +2018-09-20 Daniel Baston + + * : commit 79a5d902371a141f7f77669c5e5273fc664a2d1f Merge: 1ba1e6c + 9073593 Author: Daniel Baston Date: Thu Sep 20 + 14:27:29 2018 -0400 + +2018-09-20 Daniel Baston + + * : commit 066e5290dbe5332320910e8de2ebb101a5d42a0c Author: Daniel + Baston Date: Thu Sep 20 13:22:16 2018 -0400 + +2018-09-20 Raul Marin + + * src/noding/GeometryNoder.cpp: Fix memory leak in getNoded Reference: https://trac.osgeo.org/geos/ticket/923 + +2018-09-19 Daniel Baston + + * : commit 33e771633cab9ae248b769b89385b624371545d8 Merge: a71f21a + 175a6b4 Author: Daniel Baston Date: Tue Sep 18 + 17:27:45 2018 -0400 + +2018-09-18 Sergey Fedoseev + + * capi/geos_c.h.in: Fixed documented return codes of GEOSGeomGetX() + and friends. + +2018-09-18 Daniel Baston + + * include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + src/algorithm/locate/IndexedPointInAreaLocator.cpp: Minimize heap + allocations in IndexedPointInAreaLocator + +2018-09-18 Daniel Baston + + * src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp, + src/index/strtree/BoundablePair.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Avoid throwing + exceptions as pointers + +2018-09-17 Daniel Baston + + * : commit 33c1e7bc78dbfffcaf9a05744e49b76d91d21d2f Author: Sergey + Fedoseev Date: Sun Sep 16 18:07:06 + 2018 +0500 + +2018-09-16 Sergey Fedoseev + + * include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h: Fix typos in getGeometryN() + docs. + +2018-09-10 cvvergara + + * : commit 1facc1cc10d123e640a9a77445c117a4e2cce80d Author: + cvvergara Date: Sun Sep 9 15:19:09 2018 + -0500 + +2018-08-31 dbaston + + * : commit 8c380db59ec5183bd7e2fc8545e93ce692f680e2 Author: + cvvergara Date: Sun Aug 5 18:20:47 2018 + -0500 + +2018-08-30 cvvergara + + * : commit 55d8d35b2a399deb324239573881d947fca49061 Author: + cvvergara Date: Thu Jul 19 08:55:19 2018 + -0500 + +2018-08-30 cvvergara + + * : commit e7adbc55a20633064d3af49f2662b17e5ca02e47 Author: + cvvergara Date: Fri Aug 3 11:56:51 2018 + -0500 + +2018-08-28 cvvergara + + * : commit 71e8b93fa43be4c1027454cc98fa8d6267c64542 Author: + cvvergara Date: Sat Aug 4 15:08:21 2018 + -0500 + +2018-08-28 cvvergara + + * : commit 7d577f9368666310f372b066c81ae44e780bcb2f Author: + cvvergara Date: Sat Jul 14 19:24:18 2018 + -0500 + +2018-08-27 Daniel Baston + + * capi/geos_c.h.in: Add comment explaining GEOSEqualsExact Closes #731 + +2018-08-27 Regina Obe + + * configure.ac: revise sed check for parsing version so works on all + GNU compliant sed. References #917 for 3.8.0 + +2018-08-27 Regina Obe + + * Makefile.am: Add .editorconfig to distribution, closes #920 for + geos 3.8.0 + +2018-08-26 cvvergara + + * : commit 16bd141c8f9cd05f12f1d0574c4ffc89703e48d2 Author: + cvvergara Date: Sun Aug 26 00:58:18 2018 + +0200 + +2018-08-19 Regina Obe + + * README.md: Add in 3.7 badges + +2018-08-19 Regina Obe + + * CMakeLists.txt, include/geos/platform.h.cmake: Apply Vicky's + remove unnecessary cmake stuff no longer needed for c+11 Closes #914 + for GEOS 3.8 + +2018-08-19 Regina Obe + + * CMakeLists.txt: Put back the dev in VERSION_PATCH for cmake. + Needed because cmake parses the version, and adding dev to patch is + invalid. + +2018-08-19 Regina Obe + + * CMakeLists.txt, capi/geos_c.h.in, configure.ac, + include/geos/version.h.vc: Flip master to 3.8 development + +2018-08-19 Regina Obe + + * NEWS, configure.ac: Prepping for geos 3.7.0rc1 release + +2018-08-19 Regina Obe + + * capi/CMakeLists.txt, src/CMakeLists.txt: Allow building C API as + static lib for CMake. References #878 for GEOS 3.7.0, closes + https://github.com/libgeos/geos/pull/102 + +2018-08-18 Regina Obe + + * CMakeLists.txt: Revert change in #914 cause breaks travis and + winnie + +2018-08-18 Daniel Baston + + * : commit 3db733ddd1b6c4c407561023291cd648741ea79d Merge: 195dba5 + 1e66be5 Author: Regina Obe Date: Fri Aug 17 22:52:49 + 2018 -0400 + +2018-08-17 Regina Obe + + * CMakeLists.txt: Take out the C++11 enforcement causing issue with + finite - see #914. Also take out dev from pathc, its already in + there + +2018-08-13 Daniel Baston + + * src/index/strtree/AbstractSTRtree.cpp, + tests/unit/capi/GEOSSTRtreeTest.cpp: Avoid segfault when querying + empty tree Closes #730 Closes https://github.com/libgeos/geos/pull/116 + +2018-08-13 Daniel Baston + + * : commit 1fc7f585ed822ebbb685ba848f9537691d864697 Author: Daniel + Baston Date: Tue Aug 7 21:36:39 2018 -0400 + +2018-08-07 Daniel Baston + + * include/geos/algorithm/PointLocator.h, + src/algorithm/PointLocator.cpp, + tests/unit/capi/GEOSIntersectsTest.cpp: Fix predicate crash with + empty collection components Fixes #782 Closes https://github.com/libgeos/geos/pull/114 + +2018-08-06 Kurt Schwehr + + * : commit c05ad7552dab1b8a9e49bc974a9f557c4c451350 Author: Kurt + Schwehr Date: Mon Aug 6 11:19:59 2018 -0700 + +2018-08-06 Regina Obe + + * NEWS, tests/perf/Makefile.am, tests/perf/capi/Makefile.am, + tests/perf/operation/Makefile.am, + tests/perf/operation/buffer/Makefile.am, + tests/perf/operation/predicate/Makefile.am: Not all cmake files + included in tar ball. Closes #895 for 3.7.0 + +2018-08-06 Regina Obe + + * NEWS, configure.ac: Prep for 3.7.0beta2 release + +2018-08-01 Regina Obe + + * AUTHORS: Update Martin's email address References #898 for GEOS + 3.7 + +2018-08-01 Regina Obe + + * AUTHORS: Update list of Authors and PSC. Reorder things bringing + newer state to top. References #898 for GEOS 3.7 + +2018-07-30 Daniel Baston + + * src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + tests/unit/operation/intersection/RectangleIntersectionTest.cpp: Fix + infinite loop in GEOSClipByRect Fixes #865 Closes https://github.com/libgeos/geos/pull/110 + +2018-07-18 Daniel Baston + + * include/geos/util/GEOSException.h: Make GEOSException inherit from + std::runtime_error This avoids a bunch of "thrown exception is not nothrow + copy-constructible" warnings from clang-tidy. A description of the issue is available at + + https://wiki.sei.cmu.edu/confluence/display/cplusplus/ERR60-CPP.+Exception+objects+must+be+nothrow+copy+constructibleCloses https://github.com/libgeos/geos/pull/107 + +2018-07-18 Daniel Baston + + * include/geos/index/strtree/ItemBoundable.h, + src/index/strtree/ItemBoundable.cpp: Simplify definition of + ItemBoundable destructor + +2018-07-17 Daniel Baston + + * capi/geos_c.h.in: Fix typos + +2018-07-10 Daniel Baston + + * NEWS: Fix typo in NEWS Patch by Tobias Dressel Closes + https://github.com/libgeos/geos/pull/106 + +2018-06-27 Kurt Schwehr + + * : commit 02d67f53b479a07e8488d9ad8a51012902e5ae66 Merge: 5bf8bae + 375f1f1 Author: Kurt Schwehr Date: Tue Jun 26 + 13:42:47 2018 -0700 + +2018-06-25 Regina Obe + + * NEWS, configure.ac: 3.7.0beta1 release + +2018-06-24 Regina Obe + + * Makefile.am: Revise to call git log explicitly with format + suitable for conversion by git2cl. This is needed because jenkins + uses git log format not suitable for git2cl Closes #884 + +2018-06-24 Regina Obe + + * README.md: Fix bessie badge link. + +2018-06-24 Regina Obe + + * README.md, tools/ci/bessie.sh, tools/ci/bessie32.sh: Fix travis + badges, add bessies badges. Add bessies (for FreeBSD 32/64-bit + tests). Closes #891 + +2018-06-23 Regina Obe + + * NEWS: Add J Smith to credits. Closes #581 + +2018-06-22 Regina Obe + + * : commit fe5b4d41ed19fc8c076a6482f60e10c50b488e0f Author: J Smith + Date: Tue Jan 19 12:54:05 2016 -0500 + +2018-06-19 Daniel Baston + + * NEWS: Add some entries to NEWS References #889 + +2018-06-15 Regina Obe + + * configure.ac: Revise again to strip anything following the version + number. Revised patch from Bas Couwenberg. References #887 + +2018-06-15 Regina Obe + + * configure.ac: Revise remove pre-release suffix to handle lack of + number, and presense of dev. Closes #887 + +2018-06-15 Regina Obe + + * tools/geos-config.in: Apply updated geos-config patch. Closes #742 + +2018-06-15 Regina Obe + + * NEWS: update credits. References #889 + +2018-06-14 Regina Obe + + * : commit 94da3a382001f63b1516bf54df1ebbd4c6bc463a Author: Regina + Obe Date: Fri Jun 15 00:17:42 2018 -0400 + +2018-06-15 Regina Obe + + * configure.ac: Bump version to 3.7.0beta1dev and correct reference + in HOWTO_RELEASE + +2018-06-14 Regina Obe + + * README.md: correct winnie bot links + +2018-06-14 cvvergara + + * doc/Doxyfile.in, macros/ruby.m4, swig/ruby/Makefile.am, + tools/geos-config.in: Applying patches for Closes #742 * 01-geos-config.patch * Description: Fix library paths. * Author: Francesco Paolo Lovergine * 02-ruby2.patch * Description: Update include and libraries paths for Ruby 2.x. * Fix linking with libruby. * Author: Bas Couwenberg * 03-disable-docygen-html-timestamp.patch * Description: Disable HTML timestamps in Doxygen to allow + reproducible builds. * https://wiki.debian.org/ReproducibleBuilds/ * Author: Bas Couwenberg + +2018-06-14 Daniel Baston + + * README.md: Update Travis badge URLs Now using travis-ci.com, not travis-ci.org + +2018-06-14 Sandro Santilli + + * Makefile.am: Better skip external sources from checking blanks Patch by Bas Couwenberg Closes #888 + +2018-06-14 Sandro Santilli + + * configure.ac, src/Makefile.am: Strip pre-release suffix from + library name Patch by Bas Couwenberg Closes #887 + +2018-06-14 Sandro Santilli + + * Makefile.am: Distribute README.md Closes #885 + +2018-06-14 Sandro Santilli + + * capi/geos_ts_c.cpp, tests/xmltester/tinyxml/tinyxml.h: Fix + spelling errors Courtesy of Bas Couwenberg Closes #773 + +2018-06-13 Regina Obe + + * .gitlab-ci.yml: don't use docker, backer more or less as it was. + Works on my gitlab fork. references #881 + +2018-06-12 dbaston + + * : commit 38202bd17f9c8687f579a2ac5017e0370969ff28 Merge: b727cfa + 0039c29 Author: Dan Baston Date: Tue Jun + 12 11:36:59 2018 -0400 + +2018-06-11 Daniel Baston + + * CMakeLists.txt, tests/unit/Makefile.am, + tests/unit/capi/GEOSCAPIDefinesTest.cpp: [CMake] Restore + GEOS_VERSION defines in geos_c.h Fixes #882 Closes https://github.com/OSGeo/geos/pull/105 + +2018-06-11 Kurt Schwehr + + * src/precision/CommonBits.cpp, + tests/unit/precision/CommonBitsTest.cpp: Fix CommonBits::getBit to + correctly handle i >= 32. Found with UBSan -fsanitize=shift-exponent via + ​https://github.com/paulsmith/gogeos https://trac.osgeo.org/geos/ticket/834 Credit to Han Shen at Google. + +2018-06-11 Kurt Schwehr + + * src/io/WKBReader.cpp: WKBReader::readHEX: Fix checking of + char_traits::eof of istream Additional changes: - Factored out the switch statements into HexToUChar - Localize vars - Added const Fixes https://trac.osgeo.org/geos/ticket/862 + +2018-06-11 Kurt Schwehr + + * src/io/ByteOrderValues.cpp: Fix building with + DEBUG_BYTEORDER_VALUES=1 in ByteOrderValues.cpp Add missing includes and missing std:: Fixes #863 + +2018-06-11 Regina Obe + + * .gitlab-ci.yml: oops change script to geos specific not PostGIS + specific references #881 + +2018-06-11 Regina Obe + + * .gitlab-ci.yml: commit + https://gitlab.com/postgis/postgis/merge_requests/1 references #881 + +2018-06-09 Regina Obe + + * .gitlab-ci.yml: break out install into separate sections, in + attempt to resolve #881 + +2018-06-09 Regina Obe + + * .gitlab-ci.yml: Get rid of first line comment in gitlab script, in + attempt to resolve #881 + +2018-06-09 Regina Obe + + * configure.ac: Revert interface increment, was already incremented + after geos 3.6 release + +2018-06-09 Regina Obe + + * : commit 9da4e4d003c91413a055471a21fbd3b8fe6b3778 Merge: da94dc5 + 9f935f7 Author: Regina Obe Date: Fri Jun 8 22:01:56 + 2018 -0400 + +2018-06-08 Regina Obe + + * NEWS, configure.ac: Flip to 3.7.0alpha + +2018-06-08 Raul Marin + + * configure.ac: Drop unavailable flags with clang during + configuration + +2018-06-08 Daniel Baston + + * src/geom/GeometryCollection.cpp: Indentation change Fixes #877 + +2018-06-08 Regina Obe + + * NEWS, configure.ac: Flip to 3.7.0alpha + +2018-05-29 Daniel Baston + + * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/capi/GEOSSegmentIntersectionTest.cpp: Add + GEOSSegmentIntersection to CAPI Closes #873 Closes https://github.com/OSGeo/geos/pull/101 + +2018-06-01 Daniel Baston + + * : commit 8eff799cd72b7892009f1ed5e30c5c3e81796bca Author: Daniel + Baston Date: Tue May 29 21:05:43 2018 -0400 + +2018-05-31 dbaston + + * : commit 6c9463834edb712f315c18283e759a49b43b7759 Author: Daniel + Baston Date: Wed May 30 21:58:42 2018 -0400 + +2018-05-30 Daniel Baston + + * NEWS, tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSPointOnSurfaceTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/geom/PolygonTest.cpp: Fix memory leaks in unit tests + +2018-05-29 Dan Baston + + * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, + tests/unit/Makefile.am, tests/unit/capi/GEOSGeom_extentTest.cpp: Add + GEOSGeom_getXMin and friends Closes #871 Closes https://github.com/OSGeo/geos/pull/99 + +2018-05-30 dbaston + + * : commit fc10eaac1b604d66879b2ff776313bd9a3900269 Author: Dan + Baston Date: Tue May 29 11:30:13 2018 + -0400 + +2018-03-28 Regina Obe + + * : commit d10c844668c26edd8e4a377eff9bf031da5278a6 Author: Even + Rouault Date: Wed Mar 28 10:38:50 + 2018 +0200 + +2018-02-05 robe + + * : commit db7514be906d1f26d39c34403fd41d520daa56de Merge: 3fe3c03 + 4c571e0 Author: robe Date: Mon Feb 5 17:50:29 2018 + -0800 + +2018-02-05 cvvergara + + * tests/xmltester/tinyxml/tinyxmlparser.cpp: Suppressing FALLTHRUGH + warning on g++11 when using gcc-7 closes #856 + +2018-01-22 cvvergara + + * include/geos/geom/BinaryOp.h, + tests/unit/capi/GEOSGeom_createCollection.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp: fixing conversion warnings + closes #852 + +2018-01-20 robe + + * : commit 0f722dc002ff8f907078193548b9ce8e028b5da2 Merge: 759255f + 4b23f09 Author: robe Date: Sat Jan 20 22:26:40 2018 + -0800 + +2018-01-20 cvvergara + + * include/geos/platform.h.cmake: Updating platform.h.cmake Close + #853 + +2018-01-13 cvvergara + + * include/geos/algorithm/ConvexHull.inl, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/distance/DiscreteFrechetDistance.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/geom/prep/PreparedLineStringIntersects.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/geom/util/LinearComponentExtracter.h, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/NodeMap.h, + include/geos/index/chain/MonotoneChain.h, + include/geos/io/StringTokenizer.h, include/geos/io/WKBReader.h, + include/geos/linearref/LinearIterator.h, + include/geos/noding/FastNodingValidator.h, + include/geos/noding/IntersectionAdder.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/MCIndexNoder.h, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + include/geos/noding/NodingValidator.h, + include/geos/noding/ScaledNoder.h, + include/geos/noding/SegmentNode.h, + include/geos/noding/SegmentNodeList.h, + include/geos/noding/SegmentString.h, + include/geos/noding/SingleInteriorIntersectionFinder.h, + include/geos/noding/snapround/HotPixel.h, + include/geos/noding/snapround/MCIndexPointSnapper.h, + include/geos/noding/snapround/MCIndexSnapRounder.h, + include/geos/noding/snapround/SimpleSnapRounder.h, + include/geos/operation/buffer/BufferBuilder.h, + include/geos/operation/buffer/BufferInputLineSimplifier.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/overlay/ElevationMatrix.h, + include/geos/operation/overlay/snap/GeometrySnapper.h, + include/geos/operation/overlay/snap/LineStringSnapper.h, + include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + include/geos/operation/overlay/snap/SnapOverlayOp.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/overlay/validate/OffsetPointGenerator.h, + include/geos/operation/overlay/validate/OverlayResultValidator.h, + include/geos/operation/predicate/RectangleContains.h, + include/geos/operation/predicate/RectangleIntersects.h, + include/geos/operation/sharedpaths/SharedPathsOp.h, + include/geos/operation/valid/ConnectedInteriorTester.h, + include/geos/planargraph/Subgraph.h, + include/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, + include/geos/simplify/DouglasPeuckerLineSimplifier.h, + include/geos/util/UniqueCoordinateArrayFilter.h, + src/noding/ScaledNoder.cpp, + src/noding/snapround/MCIndexPointSnapper.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/simplify/TopologyPreservingSimplifier.cpp, + tests/unit/geom/CoordinateTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/IntersectionMatrixTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiPointTest.cpp, + tests/unit/geom/PolygonTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/buffer/BufferOpTest.cpp, + tests/unit/operation/buffer/BufferParametersTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Explicitly + dissallow copy & assignment using c++11 syntax + +2018-01-13 Sandro Santilli + + * src/geom/Polygon.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, + src/io/WKTWriter.cpp, src/operation/valid/IsValidOp.cpp: Fix + -Wmisleading-indentation warnings + +2018-01-12 cvvergara + + * include/geos/noding/SegmentIntersectionDetector.h: Remove + Wignored-qualifiers warning from SegmentIntersectionDetector.h + +2018-01-12 cvvergara + + * include/geos/geom/BinaryOp.h, + include/geos/noding/BasicSegmentString.h: Remove conversion warning + from include files modified: include/geos/geom/BinaryOp.h modified: include/geos/noding/BasicSegmentString.h + +2018-01-12 cvvergara + + * src/simplify/TaggedLineString.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: Remove conversion + warning from src/simplify and src/triangulate directories modified: + src/simplify/TaggedLineString.cpp modified: + src/triangulate/quadedge/QuadEdgeSubdivision.cpp + +2018-01-12 cvvergara + + * src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp: Remove conversion + warning from src/precision directory modified: + src/precision/PrecisionReducerCoordinateOperation.cpp modified: + src/precision/SimpleGeometryPrecisionReducer.cpp + +2018-01-12 cvvergara + + * src/operation/distance/DistanceOp.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/LineMerger.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/predicate/RectangleContains.cpp, + src/operation/valid/IsValidOp.cpp: Remove conversion warning from + src/operation directory modified: + src/operation/distance/DistanceOp.cpp modified: + src/operation/intersection/RectangleIntersection.cpp modified: + src/operation/intersection/RectangleIntersectionBuilder.cpp + modified: src/operation/linemerge/LineMerger.cpp modified: src/operation/linemerge/LineSequencer.cpp modified: src/operation/overlay/OverlayOp.cpp modified: src/operation/predicate/RectangleContains.cpp modified: src/operation/valid/IsValidOp.cpp + +2018-01-12 cvvergara + + * src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/polygonize/Polygonizer.cpp: Remove conversion warning + from src/operation/buffer directory modified: + src/operation/buffer/OffsetCurveBuilder.cpp modified: + src/operation/buffer/OffsetCurveSetBuilder.cpp modified: + src/operation/buffer/SubgraphDepthLocater.cpp + +2018-01-12 cvvergara + + * src/noding/GeometryNoder.cpp, src/noding/IteratedNoder.cpp, + src/noding/MCIndexNoder.cpp, + src/noding/MCIndexSegmentSetMutualIntersector.cpp, + src/noding/NodingValidator.cpp, + src/noding/OrientedCoordinateArray.cpp, + src/noding/SegmentNodeList.cpp, src/noding/SimpleNoder.cpp, + src/noding/snapround/HotPixel.cpp, + src/noding/snapround/MCIndexSnapRounder.cpp, + src/noding/snapround/SimpleSnapRounder.cpp: Remove conversion + warning from src/noding directory modified: + src/noding/GeometryNoder.cpp modified: + src/noding/IteratedNoder.cpp modified: src/noding/MCIndexNoder.cpp modified: src/noding/MCIndexSegmentSetMutualIntersector.cpp modified: src/noding/NodingValidator.cpp modified: src/noding/OrientedCoordinateArray.cpp modified: src/noding/SegmentNodeList.cpp modified: src/noding/SimpleNoder.cpp modified: src/noding/snapround/HotPixel.cpp modified: src/noding/snapround/MCIndexSnapRounder.cpp modified: src/noding/snapround/SimpleSnapRounder.cpp + +2018-01-12 cvvergara + + * src/linearref/ExtractLineByLocation.cpp, + src/linearref/LinearIterator.cpp, src/linearref/LinearLocation.cpp, + src/linearref/LocationIndexOfLine.cpp: Remove conversion warning + from src/linearref directory modified: + src/linearref/ExtractLineByLocation.cpp modified: + src/linearref/LinearIterator.cpp modified: + src/linearref/LinearLocation.cpp modified: + src/linearref/LocationIndexOfLine.cpp + +2018-01-12 cvvergara + + * src/io/WKBReader.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, + src/io/WKTWriter.cpp: Remove conversion warning from src/io + directory modified: src/io/WKBReader.cpp modified: src/io/WKBWriter.cpp modified: src/io/WKTReader.cpp modified: src/io/WKTWriter.cpp + +2018-01-12 cvvergara + + * src/index/chain/MonotoneChain.cpp, + src/index/quadtree/DoubleBits.cpp, src/index/quadtree/NodeBase.cpp: + Remove conversion warning from src/index directory modified: src/index/chain/MonotoneChain.cpp modified: src/index/quadtree/DoubleBits.cpp modified: src/index/quadtree/NodeBase.cpp + +2018-01-12 cvvergara + + * src/geomgraph/Node.cpp, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/geomgraph/index/SimpleEdgeSetIntersector.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SimpleSweepLineIntersector.cpp: Remove + conversion warning from src/geomgraph directory modified: + src/geomgraph/Node.cpp modified: + src/geomgraph/index/MonotoneChainEdge.cpp modified: + src/geomgraph/index/SimpleEdgeSetIntersector.cpp modified: + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp modified: + src/geomgraph/index/SimpleSweepLineIntersector.cpp + +2018-01-12 cvvergara + + * src/geom/LineString.cpp, src/geom/util/GeometryTransformer.cpp: + Remove conversion warning from src/geom directory modified: src/geom/LineString.cpp modified: src/geom/util/GeometryTransformer.cpp + +2018-01-12 cvvergara + + * src/algorithm/distance/DiscreteFrechetDistance.cpp, + src/algorithm/distance/DiscreteHausdorffDistance.cpp: Remove + conversion warning from algorithm directory modified: + src/algorithm/distance/DiscreteFrechetDistance.cpp modified: + src/algorithm/distance/DiscreteHausdorffDistance.cpp + +2018-01-10 cvvergara + + * src/operation/overlay/ElevationMatrixCell.cpp, + src/operation/overlay/LineBuilder.cpp, + src/operation/polygonize/Polygonizer.cpp, + src/operation/valid/RepeatedPointTester.cpp: Removed warnings from + src/operation directory modified: src/operation/overlay/ElevationMatrixCell.cpp modified: src/operation/overlay/LineBuilder.cpp modified: src/operation/valid/RepeatedPointTester.cpp modified: src/operation/polygonize/Polygonizer.cpp + +2018-01-09 cvvergara + + * tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/xmltester/XMLTester.cpp: fixing conversion warning on "tests" + directory + +2018-01-09 cvvergara + + * tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp, + tests/unit/capi/GEOSSTRtreeTest.cpp, tests/xmltester/XMLTester.cpp: + fixed unused parameter + +2018-01-10 cvvergara + + * include/geos/profiler.h, src/util/Profiler.cpp: Fixed profiler + warnings + +2018-01-09 cvvergara + + * CMakeLists.txt, HOWTO_RELEASE: cmake: improving handling version + +2018-01-09 cvvergara + + * CMakeLists.txt: getting stricter with warnings + +2018-01-09 cvvergara + + * CMakeLists.txt: removing -ansi and fPIC from C++ compilation + +2018-01-10 Sandro Santilli + + * authors.svn: We don't need authors.svn anymore + +2018-01-06 Sandro Santilli + + * NEWS: Add note about USE_UNSTABLE_GEOS_CPP_API + +2018-01-05 Evgeniy A. Dushistov + + * include/geos/geom/Geometry.h: fix build under Visual Studio + +2017-11-24 Sandro Santilli + + * : commit c292ffd76375a8f725bb7d889e3206c29f76b6b6 Author: Mateusz + Loskot Date: Fri Nov 24 13:09:54 2017 +0100 + +2017-11-23 Sandro Santilli + + * include/geos/util/GEOSException.h: Another BOM removed This one was added in dbc52d41fd43bb9bdec31fc9969a66d05bc4bf95 See #846 + +2017-11-23 Sandro Santilli + + * include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, + include/geos/geom/Puntal.h: Remove BOM from header files It was accidentally added by + fbb4431f84ba516b873961b373567ae79a1d92e2 Fixes #846 + +2017-10-11 Sandro Santilli + + * : commit a606747995b4d38a7e63f436f8d5057a9917fe51 Author: Mateusz + Loskot Date: Wed Oct 11 17:22:02 2017 +0100 + +2017-10-04 Sandro Santilli + + * configure.ac, include/geos/geom/Geometry.h, + tests/xmltester/Makefile.am: Emit a warning at compile time about + C++ API being unstable Aware users can remove the warning by defining macro + USE_UNSTABLE_GEOS_CPP_API See discussion + + https://lists.osgeo.org/pipermail/geos-devel/2017-October/008054.html + +2017-10-04 Sandro Santilli + + * include/geos/noding/OrientedCoordinateArray.h, + src/noding/OrientedCoordinateArray.cpp, + tests/unit/capi/GEOSConvexHullTest.cpp, + tests/unit/capi/GEOSIntersectionTest.cpp, + tests/unit/capi/GEOSisClosedTest.cpp, + tests/unit/geom/Geometry/touchesTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp: Remove line feeds + from left-over files This is a style only change. The line feed matched th [[:space:]] + character class, which is why it was spotted. Hopefully these are the last LF that'll ever enter the codebase + +2017-10-04 Sandro Santilli + + * Makefile.am: Make trailing blanks check portable + +2017-10-01 Mateusz Loskot + + * : commit 3c6391825ac5f9fbd253995f685c8bcc0f4f9d2a Author: Mateusz + Loskot Date: Sun Oct 1 15:32:17 2017 +0200 + +2017-09-16 Sandro Santilli + + * include/geos/operation/relate/EdgeEndBundle.h: Mark + operation::relate::EdgeEndBundle::print as override as suggested by compiler warning + +2017-05-03 nila + + * tests/unit/capi/GEOSGeom_createCollection.cpp: Suppress + GEOSGeom_createCollection:test1 -Wunnamed-type-template-args warning + +2017-05-03 nila + + * src/geom/GeometryFactory.cpp: Supress + GeometryFactory::buildGeometry -Wpotentially-evaluated-expression + warning + +2017-05-03 nila + + * include/geos/operation/relate/EdgeEndBundle.h, + src/operation/relate/EdgeEndBundle.cpp: Suppress + EdgeEndBundle::print -Woverloaded-virtual warning + +2017-09-14 Sandro Santilli + + * tests/unit/capi/GEOSInterruptTest.cpp: Remove trailing space + +2017-09-14 Mateusz Loskot + + * nmake.opt: [NMAKE] Recognise Visual Studio 2017 version 15.3.4 + +2017-09-14 Sandro Santilli + + * NEWS: Add interruptible snap news item + +2017-09-14 Sandro Santilli + + * : commit d78d4e4655afb4d71b12fd51b917e813bd57a6ff Author: Paul + Ramsey Date: Tue Sep 12 13:39:29 2017 + -0700 + +2017-09-12 Paul Ramsey + + * tests/unit/capi/GEOSInterruptTest.cpp: Add unit test per strk + +2017-09-11 Paul Ramsey + + * src/operation/overlay/snap/LineStringSnapper.cpp: Add interrupts + to the snap operation + +2017-09-11 Mateusz Loskot + + * CMakeLists.txt: [CMake] Remove checks for prehistoric versions of + Visual Studio + +2017-09-11 Mateusz Loskot + + * tools/build-cmake.bat: [CMake] No need to run cmake.exe in VS + command prompt [ci skip] + +2017-09-10 Mateusz Loskot + + * appveyor.yml: [AppVeyor] Fix build environment for VS2017 and + NMAKE + +2017-09-10 Sandro Santilli + + * src/operation/overlay/validate/OverlayResultValidator.cpp: Remove + unused code and protect debug-only used one + +2017-09-09 robe + + * README.md: fix winnies 3.6 badges + +2017-09-09 robe + + * README.md: fix debbie and winnie's badges + +2017-09-10 Mateusz Loskot + + * appveyor.yml: [AppVeyor] Add build jobs with Visual Studio 2017 Currently, AppVeyor builds with VS 2017 and 2015 Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-10 Mateusz Loskot + + * .travis.yml: [Travis] Add build jobs with multiple GCC and clang + versions * GCC 4.8 and 7.x * clang 3.5 and 3.9 Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-09 Mateusz Loskot + + * capi/geos_ts_c.cpp, include/geos/algorithm/MCPointInRing.h, + include/geos/algorithm/NotRepresentableException.h, + include/geos/algorithm/SIRtreePointInRing.h, + include/geos/algorithm/SimplePointInRing.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateArraySequenceFactory.h, + include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Point.h, include/geos/geom/Polygon.h, + include/geos/geom/prep/AbstractPreparedPolygonContains.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/prep/PreparedLineString.h, + include/geos/geom/prep/PreparedPoint.h, + include/geos/geom/prep/PreparedPolygon.h, + include/geos/geom/prep/PreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonCovers.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/CoordinateOperation.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/LinearComponentExtracter.h, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/geomgraph/DirectedEdge.h, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/Edge.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/Node.h, + include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SimpleSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineSegment.h, + include/geos/index/bintree/Node.h, + include/geos/index/bintree/Root.h, + include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + include/geos/index/quadtree/Node.h, + include/geos/index/quadtree/Quadtree.h, + include/geos/index/quadtree/Root.h, + include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/GeometryItemDistance.h, + include/geos/index/strtree/ItemBoundable.h, + include/geos/index/strtree/SIRtree.h, + include/geos/index/strtree/STRtree.h, + include/geos/io/ParseException.h, + include/geos/noding/BasicSegmentString.h, + include/geos/noding/IntersectionAdder.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/IteratedNoder.h, + include/geos/noding/MCIndexNoder.h, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, + include/geos/noding/NodedSegmentString.h, + include/geos/noding/ScaledNoder.h, + include/geos/noding/SegmentIntersectionDetector.h, + include/geos/noding/SimpleNoder.h, + include/geos/noding/SingleInteriorIntersectionFinder.h, + include/geos/noding/SinglePassNoder.h, + include/geos/noding/snapround/MCIndexSnapRounder.h, + include/geos/noding/snapround/SimpleSnapRounder.h, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/operation/distance/ConnectedElementPointFilter.h, + include/geos/operation/linemerge/LineMergeGraph.h, + include/geos/operation/overlay/ElevationMatrix.h, + include/geos/operation/overlay/MaximalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.h, + include/geos/operation/overlay/OverlayNodeFactory.h, + include/geos/operation/overlay/OverlayOp.h, + include/geos/operation/polygonize/PolygonizeGraph.h, + include/geos/operation/polygonize/Polygonizer.h, + include/geos/operation/relate/EdgeEndBundle.h, + include/geos/operation/relate/EdgeEndBundleStar.h, + include/geos/operation/relate/RelateNode.h, + include/geos/operation/relate/RelateNodeFactory.h, + include/geos/operation/relate/RelateOp.h, + include/geos/operation/valid/SweeplineNestedRingTester.h, + include/geos/planargraph/Node.h, + include/geos/precision/PrecisionReducerCoordinateOperation.h, + include/geos/triangulate/quadedge/LastFoundQuadEdgeLocator.h, + include/geos/util/AssertionFailedException.h, + include/geos/util/GEOSException.h, + include/geos/util/IllegalArgumentException.h, + include/geos/util/IllegalStateException.h, + include/geos/util/TopologyException.h, + include/geos/util/UniqueCoordinateArrayFilter.h, + include/geos/util/UnsupportedOperationException.h, + src/algorithm/BoundaryNodeRule.cpp, src/geom/GeometryFactory.cpp, + src/index/strtree/SIRtree.cpp, src/index/strtree/STRtree.cpp, + src/noding/GeometryNoder.cpp, src/noding/ScaledNoder.cpp, + src/noding/snapround/MCIndexPointSnapper.cpp, + src/operation/distance/FacetSequenceTreeBuilder.cpp, + src/operation/distance/IndexedFacetDistance.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/precision/CommonBitsRemover.cpp, + src/precision/MinimumClearance.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/simplify/DouglasPeuckerSimplifier.cpp, + src/simplify/LineSegmentIndex.cpp, + src/simplify/TopologyPreservingSimplifier.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp, + tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, + tests/unit/tut/tut.hpp, tests/unit/tut/tut_console_reporter.hpp, + tests/unit/tut/tut_exception.hpp, tests/unit/tut/tut_result.hpp, + tests/xmltester/tinyxml/tinyxml.h: Apply clang-tidy-4.0 + modernize-use-override Used command: run-clang-tidy.py -header-filter='.*' + -checks='-*,modernize-use-modernize' -fix Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-09 Mateusz Loskot + + * include/geos/algorithm/LineIntersector.h, + include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, + include/geos/geom/Puntal.h, + include/geos/geom/prep/PreparedLineString.h, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/index/sweepline/SweepLineInterval.h, + include/geos/io/ByteOrderDataInStream.h, + include/geos/noding/FastNodingValidator.h, + include/geos/noding/IntersectionAdder.h, + include/geos/noding/MCIndexNoder.h, + include/geos/noding/SegmentIntersectionDetector.h, + include/geos/noding/SegmentSetMutualIntersector.h, + include/geos/noding/SimpleNoder.h, + include/geos/noding/SinglePassNoder.h, + include/geos/noding/snapround/MCIndexPointSnapper.h, + include/geos/operation/buffer/BufferBuilder.h, + include/geos/operation/buffer/BufferOp.h, + include/geos/operation/buffer/OffsetSegmentString.h, + include/geos/operation/linemerge/LineSequencer.h, + include/geos/operation/overlay/OverlayOp.h, + include/geos/operation/overlay/PointBuilder.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/CascadedUnion.h, + include/geos/operation/union/GeometryListHolder.h, + include/geos/operation/union/UnaryUnionOp.h, + include/geos/operation/valid/IsValidOp.h, + include/geos/operation/valid/SimpleNestedRingTester.h, + include/geos/operation/valid/SweeplineNestedRingTester.h, + include/geos/precision/GeometryPrecisionReducer.h, + include/geos/profiler.h, src/algorithm/ConvexHull.cpp, + src/algorithm/LineIntersector.cpp, src/algorithm/MCPointInRing.cpp, + src/algorithm/MinimumDiameter.cpp, + src/algorithm/SIRtreePointInRing.cpp, + src/geom/CoordinateSequence.cpp, src/geom/Geometry.cpp, + src/geom/GeometryCollection.cpp, src/geom/GeometryFactory.cpp, + src/geom/LineString.cpp, src/geom/MultiLineString.cpp, + src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/prep/PreparedGeometryFactory.cpp, + src/geom/prep/PreparedPolygon.cpp, + src/geom/util/GeometryCombiner.cpp, + src/geom/util/GeometryEditor.cpp, + src/geom/util/GeometryTransformer.cpp, + src/geom/util/SineStarFactory.cpp, src/geomgraph/DirectedEdge.cpp, + src/geomgraph/DirectedEdgeStar.cpp, src/geomgraph/Edge.cpp, + src/geomgraph/EdgeEnd.cpp, src/geomgraph/EdgeEndStar.cpp, + src/geomgraph/EdgeList.cpp, src/geomgraph/EdgeRing.cpp, + src/geomgraph/GeometryGraph.cpp, src/geomgraph/NodeFactory.cpp, + src/geomgraph/NodeMap.cpp, src/geomgraph/PlanarGraph.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SimpleSweepLineIntersector.cpp, + src/geomgraph/index/SweepLineEvent.cpp, + src/index/bintree/Bintree.cpp, src/index/bintree/Key.cpp, + src/index/bintree/Node.cpp, src/index/bintree/NodeBase.cpp, + src/index/bintree/Root.cpp, src/index/chain/MonotoneChain.cpp, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp, + src/index/quadtree/Node.cpp, src/index/quadtree/NodeBase.cpp, + src/index/quadtree/Root.cpp, src/index/strtree/AbstractNode.cpp, + src/index/strtree/AbstractSTRtree.cpp, + src/index/strtree/BoundablePair.cpp, src/index/strtree/SIRtree.cpp, + src/index/strtree/STRtree.cpp, + src/index/sweepline/SweepLineEvent.cpp, + src/index/sweepline/SweepLineIndex.cpp, src/io/CLocalizer.cpp, + src/io/WKBReader.cpp, src/io/WKBWriter.cpp, src/io/WKTReader.cpp, + src/io/WKTWriter.cpp, src/linearref/ExtractLineByLocation.cpp, + src/linearref/LinearGeometryBuilder.cpp, + src/linearref/LinearIterator.cpp, + src/linearref/LocationIndexOfPoint.cpp, + src/noding/GeometryNoder.cpp, src/noding/IteratedNoder.cpp, + src/noding/snapround/HotPixel.cpp, src/operation/IsSimpleOp.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/BufferOp.cpp, + src/operation/buffer/BufferSubgraph.cpp, + src/operation/buffer/RightmostEdgeFinder.cpp, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/intersection/Rectangle.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/EdgeString.cpp, + src/operation/linemerge/LineMergeDirectedEdge.cpp, + src/operation/linemerge/LineMergeGraph.cpp, + src/operation/linemerge/LineMerger.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/MaximalEdgeRing.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/PolygonBuilder.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/overlay/validate/OffsetPointGenerator.cpp, + src/operation/polygonize/EdgeRing.cpp, + src/operation/polygonize/PolygonizeDirectedEdge.cpp, + src/operation/polygonize/PolygonizeGraph.cpp, + src/operation/polygonize/Polygonizer.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/operation/relate/EdgeEndBuilder.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/valid/ConnectedInteriorTester.cpp, + src/operation/valid/IndexedNestedRingTester.cpp, + src/operation/valid/IndexedNestedRingTester.h, + src/operation/valid/IsValidOp.cpp, + src/operation/valid/QuadtreeNestedRingTester.cpp, + src/operation/valid/SimpleNestedRingTester.cpp, + src/operation/valid/SweeplineNestedRingTester.cpp, + src/planargraph/Edge.cpp, src/planargraph/NodeMap.cpp, + src/planargraph/PlanarGraph.cpp, + src/precision/MinimumClearance.cpp, + src/precision/PrecisionReducerCoordinateOperation.cpp, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/simplify/TaggedLineSegment.cpp, + src/simplify/TaggedLineStringSimplifier.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/LastFoundQuadEdgeLocator.cpp, + src/triangulate/quadedge/QuadEdge.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/util/GeometricShapeFactory.cpp, src/util/Interrupt.cpp, + tests/bigtest/GeometryTestFactory.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/ConvexHullTest.cpp, + tests/unit/algorithm/MinimumDiameterTest.cpp, + tests/unit/algorithm/RobustLineIntersectionTest.cpp, + tests/unit/capi/GEOSBufferTest.cpp, + tests/unit/capi/GEOSClipByRectTest.cpp, + tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSConvexHullTest.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp, + tests/unit/capi/GEOSDelaunayTriangulationTest.cpp, + tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/capi/GEOSEqualsTest.cpp, + tests/unit/capi/GEOSFrechetDistanceTest.cpp, + tests/unit/capi/GEOSGeomFromWKBTest.cpp, + tests/unit/capi/GEOSGeomToWKTTest.cpp, + tests/unit/capi/GEOSGeom_create.cpp, + tests/unit/capi/GEOSGeom_createCollection.cpp, + tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, + tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, + tests/unit/capi/GEOSGetCentroidTest.cpp, + tests/unit/capi/GEOSHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSInterruptTest.cpp, + tests/unit/capi/GEOSIntersectionTest.cpp, + tests/unit/capi/GEOSIntersectsTest.cpp, + tests/unit/capi/GEOSLineString_PointTest.cpp, + tests/unit/capi/GEOSMinimumClearanceTest.cpp, + tests/unit/capi/GEOSMinimumRectangleTest.cpp, + tests/unit/capi/GEOSMinimumWidthTest.cpp, + tests/unit/capi/GEOSNearestPointsTest.cpp, + tests/unit/capi/GEOSNodeTest.cpp, + tests/unit/capi/GEOSOffsetCurveTest.cpp, + tests/unit/capi/GEOSPointOnSurfaceTest.cpp, + tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp, + tests/unit/capi/GEOSSTRtreeTest.cpp, + tests/unit/capi/GEOSSharedPathsTest.cpp, + tests/unit/capi/GEOSSimplifyTest.cpp, + tests/unit/capi/GEOSSnapTest.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/capi/GEOSUserDataTest.cpp, + tests/unit/capi/GEOSVoronoiDiagramTest.cpp, + tests/unit/capi/GEOSWithinTest.cpp, + tests/unit/capi/GEOSisClosedTest.cpp, + tests/unit/capi/GEOSisValidDetailTest.cpp, + tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, + tests/unit/geom/DimensionTest.cpp, + tests/unit/geom/Geometry/isRectangleTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/IntersectionMatrixTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/LocationTest.cpp, + tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, + tests/unit/geom/PolygonTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/unit/io/WKBWriterTest.cpp, + tests/unit/noding/BasicSegmentStringTest.cpp, + tests/unit/noding/NodedSegmentStringTest.cpp, + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/tut/tut.hpp, tests/unit/tut/tut_runner.hpp, + tests/unit/utility.h, tests/xmltester/XMLTester.cpp, + tests/xmltester/tinyxml/tinystr.h, + tests/xmltester/tinyxml/tinyxml.cpp, + tests/xmltester/tinyxml/tinyxml.h, + tests/xmltester/tinyxml/tinyxmlparser.cpp: Apply clang-tidy-4.0 + modernize-use-nullptr Used command: run-clang-tidy.py -header-filter='.*' + -checks='-*,modernize-use-nullptr' -fix Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-09 Mateusz Loskot + + * .travis.yml: [Travis CI] Remove branch filter Allow Travis CI builds for any branch + +2017-09-07 Mateusz Loskot + + * tests/bigtest/CMakeLists.txt, tests/unit/CMakeLists.txt, + tests/xmltester/CMakeLists.txt: [CMake] Rename tests targets using + test_ prefix + +2017-09-07 Mateusz Loskot + + * tests/CMakeLists.txt, tests/perf/CMakeLists.txt, + tests/perf/capi/CMakeLists.txt, + tests/perf/operation/CMakeLists.txt, + tests/perf/operation/buffer/CMakeLists.txt, + tests/perf/operation/predicate/CMakeLists.txt, + tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: [CMake] + Add tests/perf targets to build configuration + +2017-09-07 Mateusz Loskot + + * include/geos/profiler.h: Add GEOS_DLL to opeartor<< functions in + Profiler + +2017-09-07 Mateusz Loskot + + * tests/perf/operation/buffer/IteratedBufferStressTest.cpp: Replace + GeometryFactory::unique_ptr remains with Ptr + +2017-09-07 Mateusz Loskot + + * tests/perf/operation/buffer/IteratedBufferStressTest.cpp, + tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp: + Avoid copying of std::unique_ptr Prefer T::Ptr instead of std::unique_ptr. + +2017-09-07 Mateusz Loskot + + * doc/example.cpp: Use GeometryFactory::Ptr instead of old + unique_ptr alias + +2017-09-07 Mateusz Loskot + + * configure.ac: Remove option -ansi conflicting with -std=c++11 Restore C++11 detection without extensions + +2017-09-07 Mateusz Loskot + + * configure.ac: Allow GCC extension options (-std=gnu++11) + +2017-09-07 Mateusz Loskot + + * include/geos/geom/Makefile.am: Remove GeometryList.h from makefile Update for: Remove GeometryList class (#9) + +2017-09-07 Sandro Santilli + + * : commit b507095ff861fbe8642cd65660bf530e674efb2f Merge: d36e59c + 4c9b087 Author: Sandro Santilli Date: Thu Sep 7 + 03:28:15 2017 -0700 + +2017-09-06 Mateusz Loskot + + * capi/geos_c.cpp, capi/geos_ts_c.cpp, doc/example.cpp, + include/geos/algorithm/Centroid.h, include/geos/geom/BinaryOp.h, + include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/Envelope.h, include/geos/geom/Geometry.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/LineSegment.h, include/geos/geom/LineString.h, + include/geos/geom/LinearRing.h, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/geom/util/SineStarFactory.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/index/chain/MonotoneChain.h, + include/geos/index/quadtree/Node.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/SIRtree.h, + include/geos/index/strtree/STRtree.h, + include/geos/linearref/LinearLocation.h, + include/geos/noding/FastNodingValidator.h, + include/geos/noding/GeometryNoder.h, + include/geos/noding/snapround/HotPixel.h, + include/geos/noding/snapround/MCIndexSnapRounder.h, + include/geos/operation/IsSimpleOp.h, + include/geos/operation/buffer/BufferInputLineSimplifier.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/distance/DistanceOp.h, + include/geos/operation/distance/IndexedFacetDistance.h, + include/geos/operation/intersection/RectangleIntersection.h, + include/geos/operation/intersection/RectangleIntersectionBuilder.h, + include/geos/operation/linemerge/LineSequencer.h, + include/geos/operation/overlay/snap/GeometrySnapper.h, + include/geos/operation/overlay/snap/LineStringSnapper.h, + include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + include/geos/operation/overlay/snap/SnapOverlayOp.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/overlay/validate/OffsetPointGenerator.h, + include/geos/operation/relate/RelateComputer.h, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/PointGeometryUnion.h, + include/geos/operation/union/UnaryUnionOp.h, + include/geos/operation/valid/ConnectedInteriorTester.h, + include/geos/precision/CommonBitsOp.h, + include/geos/precision/GeometryPrecisionReducer.h, + include/geos/precision/MinimumClearance.h, + include/geos/simplify/DouglasPeuckerLineSimplifier.h, + include/geos/simplify/DouglasPeuckerSimplifier.h, + include/geos/simplify/LineSegmentIndex.h, + include/geos/simplify/TaggedLineString.h, + include/geos/simplify/TaggedLineStringSimplifier.h, + include/geos/simplify/TaggedLinesSimplifier.h, + include/geos/simplify/TopologyPreservingSimplifier.h, + include/geos/triangulate/DelaunayTriangulationBuilder.h, + include/geos/triangulate/VoronoiDiagramBuilder.h, + include/geos/triangulate/quadedge/QuadEdge.h, + include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, + include/geos/triangulate/quadedge/Vertex.h, + include/geos/util/GeometricShapeFactory.h, + src/algorithm/InteriorPointArea.cpp, src/geom/Geometry.cpp, + src/geom/GeometryCollection.cpp, src/geom/GeometryFactory.cpp, + src/geom/LineSegment.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/util/GeometryTransformer.cpp, + src/geom/util/SineStarFactory.cpp, src/geomgraph/GeometryGraph.cpp, + src/geomgraph/PlanarGraph.cpp, src/index/chain/MonotoneChain.cpp, + src/index/quadtree/Node.cpp, src/index/quadtree/Root.cpp, + src/index/strtree/AbstractSTRtree.cpp, + src/index/strtree/BoundablePair.cpp, src/index/strtree/SIRtree.cpp, + src/index/strtree/STRtree.cpp, src/io/WKTReader.cpp, + src/linearref/LinearLocation.cpp, src/noding/GeometryNoder.cpp, + src/noding/snapround/HotPixel.cpp, + src/noding/snapround/MCIndexSnapRounder.cpp, + src/operation/IsSimpleOp.cpp, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/BufferOp.cpp, + src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/distance/FacetSequenceTreeBuilder.cpp, + src/operation/distance/IndexedFacetDistance.cpp, + src/operation/intersection/RectangleIntersection.cpp, + src/operation/intersection/RectangleIntersectionBuilder.cpp, + src/operation/linemerge/LineMergeGraph.cpp, + src/operation/linemerge/LineSequencer.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/overlay/snap/LineStringSnapper.cpp, + src/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, + src/operation/overlay/snap/SnapOverlayOp.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/overlay/validate/OffsetPointGenerator.cpp, + src/operation/overlay/validate/OverlayResultValidator.cpp, + src/operation/relate/RelateComputer.cpp, + src/operation/sharedpaths/SharedPathsOp.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/CascadedUnion.cpp, + src/operation/union/PointGeometryUnion.cpp, + src/operation/union/UnaryUnionOp.cpp, + src/operation/valid/ConsistentAreaTester.cpp, + src/operation/valid/IndexedNestedRingTester.h, + src/precision/CommonBitsOp.cpp, + src/precision/EnhancedPrecisionOp.cpp, + src/precision/GeometryPrecisionReducer.cpp, + src/precision/MinimumClearance.cpp, + src/simplify/DouglasPeuckerLineSimplifier.cpp, + src/simplify/DouglasPeuckerSimplifier.cpp, + src/simplify/LineSegmentIndex.cpp, + src/simplify/TaggedLineString.cpp, + src/simplify/TaggedLineStringSimplifier.cpp, + src/simplify/TopologyPreservingSimplifier.cpp, + src/triangulate/DelaunayTriangulationBuilder.cpp, + src/triangulate/VoronoiDiagramBuilder.cpp, + src/triangulate/quadedge/QuadEdge.cpp, + src/triangulate/quadedge/QuadEdgeSubdivision.cpp, + src/triangulate/quadedge/Vertex.cpp, + src/util/GeometricShapeFactory.cpp, + tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bug234.cpp, + tests/perf/operation/buffer/IteratedBufferStressTest.cpp, + tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/ConvexHullTest.cpp, + tests/unit/algorithm/InteriorPointAreaTest.cpp, + tests/unit/algorithm/MinimumDiameterTest.cpp, + tests/unit/algorithm/PointLocatorTest.cpp, + tests/unit/algorithm/RobustLineIntersectionTest.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp, + tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, + tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/CoordinateListTest.cpp, + tests/unit/geom/Geometry/clone.cpp, + tests/unit/geom/Geometry/coversTest.cpp, + tests/unit/geom/Geometry/equalsTest.cpp, + tests/unit/geom/Geometry/normalize.cpp, + tests/unit/geom/Geometry/touchesTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, + tests/unit/geom/PolygonTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/unit/geom/util/GeometryExtracterTest.cpp, + tests/unit/io/WKBReaderTest.cpp, tests/unit/io/WKBWriterTest.cpp, + tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/noding/BasicSegmentStringTest.cpp, + tests/unit/noding/NodedSegmentStringTest.cpp, + tests/unit/noding/OrientedCoordinateArray.cpp, + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/noding/SegmentPointComparatorTest.cpp, + tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, + tests/unit/operation/IsSimpleOpTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/buffer/BufferOpTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/intersection/RectangleIntersectionTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/overlay/OverlayOpUnionTest.cpp, + tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, + tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, + tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, + tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp + p, tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp + , tests/unit/precision/GeometryPrecisionReducerTest.cpp, + tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp, + tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, + tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, + tests/unit/triangulate/DelaunayTest.cpp, + tests/unit/triangulate/VoronoiTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeTest.cpp, + tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, + tests/unit/utility.h, tests/xmltester/BufferResultMatcher.cpp, + tests/xmltester/SimpleWKTTester.cpp, + tests/xmltester/SingleSidedBufferResultMatcher.cpp, + tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Replace + std::auto_ptr with std::unique_ptr Rename T::AutoPtr to T::Ptr. Add explicit move of input arguments + of unique_ptr type passed to sink functions. Add explicit move of + values of unique_ptr type returned from source functions which give + up class member resource. Comment source functions with: NOTE: Apparently, this is 'source' method giving up the object + resource. Replace GeometryFactory::unique_ptr with + GeometryFactory::Ptr based on std::unique_ptr with custom + GeometryFactoryDeleter. Remove obscure dynamic_cast_auto_ptr from + test utilities. Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-07 Mateusz Loskot + + * configure.ac, macros/ax_check_compile_flag.m4, + macros/ax_cxx_compile_stdcxx.m4, macros/ax_cxx_compile_stdcxx_11.m4: + Set C++11 as required standard Add -Wsuggest-override or -Wmissing-override compiler options. Part of GEOS RFC 5: C++11 Compilation Mode + +2017-09-07 Mateusz Loskot + + * src/Makefile.vc, src/geom/Makefile.am: Remove GeometryList from + makefiles. Update for: Remove GeometryList class (#9) + +2017-09-07 Sandro Santilli + + * : commit 441dc93f8cd23dcdf204143d524e426f4ccb8bc3 Author: Mateusz + Loskot Date: Thu Sep 7 10:25:58 2017 +0200 + +2017-09-07 Mateusz Loskot + + * tools/build-cmake.bat: [CMake] Add build-cmake.bat utility for + convenience. Builds GEOS using CMake and Visual Studio 2017 for 32-bit or 64-bit + platform. (eg. cd geos; tools\build-cmake.bat 64) + +2017-09-07 Mateusz Loskot + + * CMakeLists.txt: [CMake] Report CMAKE_CXX_STANDARD value in + configuration output + +2017-09-07 Mateusz Loskot + + * CMakeLists.txt: [CMake] Set CMAKE_CXX_EXTENSIONS to OFF (require + -std=c++11) Move C++ standard settings to top of CMakeLists.txt. + +2017-04-26 nila + + * src/linearref/LinearLocation.cpp: Remove redundant code Closes #832 + +2017-07-27 Sandro Santilli + + * include/geos/geom/BinaryOp.h, + src/operation/union/CascadedPolygonUnion.cpp: Fix debug print syntax And add more debugging lines + +2017-08-29 Mateusz Loskot + + * tests/unit/capi/GEOSPointOnSurfaceTest.cpp: Add GEOSPointOnSurface + test for case of three similar polygons Might help to catch significant changes in algorithm calculating + point on surface. Source https://trac.osgeo.org/geos/ticket/840 + +2017-08-29 Mateusz Loskot + + * CMakeLists.txt: [CMake] Add LANGUAGES property to project command Note, VERSION property components must be integers, and cannot be + added due to 'dev' suffix in VERSION_PATCH. + +2017-08-29 Mateusz Loskot + + * CMakeLists.txt: [CMake] Set C++11 as required standard GEOS RFC 5: C++11 Compilation Mode + +2017-08-29 Mateusz Loskot + + * nmake.opt: Add NMAKE version from latest VS 2017 and 2015 + +2017-07-25 Sandro Santilli + + * HOWTO_RELEASE: Indexed steps, configure.ac name fix + +2017-07-19 Sandro Santilli + + * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, + tests/xmltester/XMLTester.h, tests/xmltester/tests/general/MISSING, + tests/xmltester/tests/general/TestPreparedPointPredicate.xml, + tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml, + tests/xmltester/tests/general/TestPreparedPredicatesWithGeometryCol + lection.xml: Add support for testing prepared geometries operations + in XMLTester Add 3 more tests from JTS testsuite now that they can be run See + #694 + +2017-07-19 Sandro Santilli + + * tests/xmltester/JTSXMLTester.sh: Allow passing switches to JTS + test runner + +2017-07-18 Tamas Szekeres + + * src/io/CLocalizer.cpp: Fix multithreading issue for MSVC caused by + setlocale + +2017-07-18 Tamas Szekeres + + * include/geos/geom/Envelope.h: Fix build error with MSVC + +2017-07-14 Sandro Santilli + + * tests/xmltester/XMLTester.cpp: Use overlay specific result checker The check just supports some snap-distance based tolerance for exact + match (in addition to topology equality which is needed for some JTS + tests to pass) + +2017-07-14 Sandro Santilli + + * .editorconfig: Stackwalker.cpp uses 2 space indent while + XMLTester.cpp 2 space + +2017-07-14 Sandro Santilli + + * .editorconfig: Stackwalker.cpp also wants spaces + +2017-07-14 Sandro Santilli + + * .editorconfig: XMLTester.cpp wants space indent + +2017-07-14 Sandro Santilli + + * tests/xmltester/JTSXMLTester.sh: Add copyright header + +2017-07-14 Sandro Santilli + + * tests/xmltester/JTSXMLTester.sh: Add JTSXMLTester.sh script Useful to compare results between GEOS and JTS. Works with newer + JTS versions (Maven-based install, locationtech namespace) + +2017-07-14 Sandro Santilli + + * .editorconfig, + include/geos/operation/union/CascadedPolygonUnion.h, + include/geos/operation/union/GeometryListHolder.h: CascadedUnion + uses spaces indent also in include files Convert the TABS added in previous commit, and a single spurious tab + found in existing file, secure style in editorconfig + +2017-07-11 Sandro Santilli + + * include/geos/operation/union/CascadedPolygonUnion.h, + src/operation/union/CascadedPolygonUnion.cpp, + tests/xmltester/Makefile.am, + tests/xmltester/tests/ticket/bug837.xml: UnaryUnion: Drop assumption + about union not moving vertices The assumption resulted in invalid geometries being output by + CascadedPolygonUnion intermediary results and then fed as input by + further union calls, which in turn would fail on first robustness + issue. Fixes #837 Includes automated XML test + +2017-07-14 Sandro Santilli + + * .editorconfig: Institutionalize that CascadedUnion directory uses + spaces indent + +2017-07-11 Sandro Santilli + + * include/geos/geom/BinaryOp.h: Move CBR_BEFORE_SNAPPING macro on + top of the file + +2017-06-30 Sandro Santilli + + * include/geos/geom/Envelope.h, src/geom/Envelope.cpp: Add output + operator for geom::Envelope class + +2017-06-30 Sandro Santilli + + * include/geos/geom/BinaryOp.h: Optionally debug-print invalid + geometry + +2017-06-30 Sandro Santilli + + * include/geos/geom/BinaryOp.h: Add (disabled) code to check + validity of overlay op results + +2017-06-22 Sandro Santilli + + * : Merge pull request #85 from grizonnetm/master ENH: add GenerateSourceGroups.cmake to EXTRA_DIST Closes #753 + +2017-04-29 Mateusz Loskot + + * : commit 27b5f998d5cab908ddf027e7b8f6844d0cbe77a1 Author: Mateusz + Loskot Date: Sat Apr 29 23:07:10 2017 +0200 + +2017-04-29 Sandro Santilli + + * .editorconfig: Istitutionalize CR line ending in appveyor.yml + +2017-04-29 Sandro Santilli + + * .editorconfig: Use CRLF line ending for nmake.opt too + +2017-04-29 Mateusz Loskot + + * README.md: Typo in branch name [ci skip] + +2017-04-29 Mateusz Loskot + + * .travis.yml, README.md, appveyor.yml: Rename svn-trunk branch to + master Part of #822 + +2017-04-24 Mateusz Åoskot + + * tests/xmltester/XMLTester.cpp: Avoid use of internal + geos/util/math.h Copy java_math_round geos/util/math.cpp to xmltester.cpp. Declared + functions are internal to the library and not included in GEOS + shared library exports. Fixes #831 + +2017-04-18 Mateusz Åoskot + + * nmake.opt: Add NMAKE_VER from VS 2017 Version 15.1 + +2017-04-12 Kurt Schwehr + + * src/io/WKTReader.cpp, tests/unit/io/WKTReaderTest.cpp: Fix leaks + in WKT parser Cleanup if failing to parse the WKT MultiLineString, MultiPolygon, + and GeometryCollection string. Wrap parsing in try blocks. Catch any exception, cleanup, and + rethrow. Closes #830 Includes testcase Signed-off-by: Sandro Santilli + +2017-04-12 Sandro Santilli + + * README.md: Update drone build badge url [ci skip] + +2017-04-11 Kurt Schwehr + + * include/geos/io/StringTokenizer.h, src/io/StringTokenizer.cpp: Add + explicit to StringTokenizer ctor and move more to the initializer + list in ctor. Signed-off-by: Sandro Santilli + +2017-04-11 Sandro Santilli + + * tests/xmltester/XMLTester.cpp: Fixed compile error in Microsoft + VS2010 Patch by sunxunfeng See #801 + +2017-04-10 Mateusz Loskot + + * tests/unit/capi/GEOSSTRtreeTest.cpp: Add explicit cast of sqrt + arguments to double Fixes parts of #801 + +2017-04-10 Mateusz Loskot + + * tools/CMakeLists.txt: [CMake] Fix geos-config is not installed on + MinGW/MSYS builds Closes #706 + +2017-04-08 Sandro Santilli + + * TODO: Triangulation API was ported + +2017-04-08 Sandro Santilli + + * HOWTO_RELEASE: Update release howto for SVN -> GIT move See #825 + +2017-04-08 Sandro Santilli + + * tests/unit/Makefile.am: Distribute all of the new TUT Should fix #824 + +2017-04-08 Mateusz Loskot + + * tests/CMakeLists.txt, tests/unit2/CMakeLists.txt, + tests/unit2/geom/PointTest.cpp, + tests/unit2/geos_include_all_headers.cpp: Drop pilot of Catch-based + tests + +2017-04-07 Mateusz Loskot + + * tests/unit/CMakeLists.txt, tests/unit/algorithm/AngleTest.cpp, + tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, + tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, + tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp, + tests/unit/algorithm/ConvexHullTest.cpp, + tests/unit/algorithm/InteriorPointAreaTest.cpp, + tests/unit/algorithm/MinimumDiameterTest.cpp, + tests/unit/algorithm/PointLocatorTest.cpp, + tests/unit/algorithm/RobustLineIntersectionTest.cpp, + tests/unit/algorithm/RobustLineIntersectorTest.cpp, + tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, + tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSBufferTest.cpp, + tests/unit/capi/GEOSClipByRectTest.cpp, + tests/unit/capi/GEOSContainsTest.cpp, + tests/unit/capi/GEOSConvexHullTest.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp, + tests/unit/capi/GEOSDelaunayTriangulationTest.cpp, + tests/unit/capi/GEOSDistanceTest.cpp, + tests/unit/capi/GEOSEqualsTest.cpp, + tests/unit/capi/GEOSFrechetDistanceTest.cpp, + tests/unit/capi/GEOSGeomFromWKBTest.cpp, + tests/unit/capi/GEOSGeomToWKTTest.cpp, + tests/unit/capi/GEOSGeom_create.cpp, + tests/unit/capi/GEOSGeom_createCollection.cpp, + tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, + tests/unit/capi/GEOSGeom_setPrecisionTest.cpp, + tests/unit/capi/GEOSGetCentroidTest.cpp, + tests/unit/capi/GEOSHausdorffDistanceTest.cpp, + tests/unit/capi/GEOSInterruptTest.cpp, + tests/unit/capi/GEOSIntersectionTest.cpp, + tests/unit/capi/GEOSIntersectsTest.cpp, + tests/unit/capi/GEOSLineString_PointTest.cpp, + tests/unit/capi/GEOSMinimumClearanceTest.cpp, + tests/unit/capi/GEOSMinimumRectangleTest.cpp, + tests/unit/capi/GEOSMinimumWidthTest.cpp, + tests/unit/capi/GEOSNearestPointsTest.cpp, + tests/unit/capi/GEOSNodeTest.cpp, + tests/unit/capi/GEOSOffsetCurveTest.cpp, + tests/unit/capi/GEOSOrientationIndex.cpp, + tests/unit/capi/GEOSPointOnSurfaceTest.cpp, + tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp, + tests/unit/capi/GEOSPreparedGeometryTest.cpp, + tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp, + tests/unit/capi/GEOSRelatePatternMatchTest.cpp, + tests/unit/capi/GEOSSTRtreeTest.cpp, + tests/unit/capi/GEOSSharedPathsTest.cpp, + tests/unit/capi/GEOSSimplifyTest.cpp, + tests/unit/capi/GEOSSnapTest.cpp, + tests/unit/capi/GEOSUnaryUnionTest.cpp, + tests/unit/capi/GEOSUserDataTest.cpp, + tests/unit/capi/GEOSVoronoiDiagramTest.cpp, + tests/unit/capi/GEOSWithinTest.cpp, + tests/unit/capi/GEOSisClosedTest.cpp, + tests/unit/capi/GEOSisValidDetailTest.cpp, + tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, + tests/unit/geom/CoordinateArraySequenceTest.cpp, + tests/unit/geom/CoordinateListTest.cpp, + tests/unit/geom/CoordinateTest.cpp, + tests/unit/geom/DimensionTest.cpp, + tests/unit/geom/EnvelopeTest.cpp, + tests/unit/geom/Geometry/clone.cpp, + tests/unit/geom/Geometry/coversTest.cpp, + tests/unit/geom/Geometry/equalsTest.cpp, + tests/unit/geom/Geometry/isRectangleTest.cpp, + tests/unit/geom/Geometry/normalize.cpp, + tests/unit/geom/Geometry/touchesTest.cpp, + tests/unit/geom/GeometryComponentFilterTest.cpp, + tests/unit/geom/GeometryFactoryTest.cpp, + tests/unit/geom/GeometryFilterTest.cpp, + tests/unit/geom/IntersectionMatrixTest.cpp, + tests/unit/geom/LineSegmentTest.cpp, + tests/unit/geom/LineStringTest.cpp, + tests/unit/geom/LinearRingTest.cpp, + tests/unit/geom/LocationTest.cpp, + tests/unit/geom/MultiLineStringTest.cpp, + tests/unit/geom/MultiPointTest.cpp, + tests/unit/geom/MultiPolygonTest.cpp, + tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, + tests/unit/geom/PrecisionModelTest.cpp, + tests/unit/geom/TriangleTest.cpp, + tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp, + tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, + tests/unit/geom/util/GeometryExtracterTest.cpp, + tests/unit/geos_unit.cpp, + tests/unit/index/quadtree/DoubleBitsTest.cpp, + tests/unit/io/ByteOrderValuesTest.cpp, + tests/unit/io/WKBReaderTest.cpp, tests/unit/io/WKBWriterTest.cpp, + tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp, + tests/unit/io/WriterTest.cpp, + tests/unit/linearref/LengthIndexedLineTest.cpp, + tests/unit/noding/BasicSegmentStringTest.cpp, + tests/unit/noding/NodedSegmentStringTest.cpp, + tests/unit/noding/OrientedCoordinateArray.cpp, + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/noding/SegmentPointComparatorTest.cpp, + tests/unit/noding/snapround/HotPixelTest.cpp, + tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp, + tests/unit/operation/IsSimpleOpTest.cpp, + tests/unit/operation/buffer/BufferBuilderTest.cpp, + tests/unit/operation/buffer/BufferOpTest.cpp, + tests/unit/operation/buffer/BufferParametersTest.cpp, + tests/unit/operation/distance/DistanceOpTest.cpp, + tests/unit/operation/intersection/RectangleIntersectionTest.cpp, + tests/unit/operation/linemerge/LineMergerTest.cpp, + tests/unit/operation/linemerge/LineSequencerTest.cpp, + tests/unit/operation/overlay/OverlayOpUnionTest.cpp, + tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, + tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, + tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, + tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp + p, tests/unit/operation/polygonize/PolygonizeTest.cpp, + tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp, + tests/unit/operation/union/CascadedPolygonUnionTest.cpp, + tests/unit/operation/union/UnaryUnionOpTest.cpp, + tests/unit/operation/valid/IsValidTest.cpp, + tests/unit/operation/valid/ValidClosedRingTest.cpp, + tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp + , tests/unit/precision/GeometryPrecisionReducerTest.cpp, + tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp, + tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, + tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, + tests/unit/triangulate/DelaunayTest.cpp, + tests/unit/triangulate/VoronoiTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, + tests/unit/triangulate/quadedge/QuadEdgeTest.cpp, + tests/unit/triangulate/quadedge/VertexTest.cpp, + tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, + tests/unit/utility.h: Include buried TUT headers using + +2017-04-07 Sandro Santilli + + * : commit b797c4e172565283ba26a4a8528f320c1b2cf4f7 Author: Sandro + Santilli Date: Fri Apr 7 19:51:13 2017 +0200 + +2017-04-07 Sandro Santilli + + * doc/example.cpp, include/acconfig.h, include/geos.h, + include/geos/algorithm/Angle.h, + include/geos/algorithm/BoundaryNodeRule.h, + include/geos/algorithm/CGAlgorithms.h, + include/geos/algorithm/CentralEndpointIntersector.h, + include/geos/algorithm/Centroid.h, + include/geos/algorithm/CentroidArea.h, + include/geos/algorithm/CentroidLine.h, + include/geos/algorithm/CentroidPoint.h, + include/geos/algorithm/ConvexHull.h, + include/geos/algorithm/HCoordinate.h, + include/geos/algorithm/InteriorPointArea.h, + include/geos/algorithm/InteriorPointLine.h, + include/geos/algorithm/InteriorPointPoint.h, + include/geos/algorithm/LineIntersector.h, + include/geos/algorithm/MCPointInRing.h, + include/geos/algorithm/MinimumDiameter.h, + include/geos/algorithm/NotRepresentableException.h, + include/geos/algorithm/PointInRing.h, + include/geos/algorithm/PointLocator.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RobustDeterminant.h, + include/geos/algorithm/SIRtreePointInRing.h, + include/geos/algorithm/SimplePointInRing.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/distance/DistanceToPoint.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, + include/geos/algorithm/locate/PointOnGeometryLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/geom.h, include/geos/geom/BinaryOp.h, + include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateArraySequenceFactory.h, + include/geos/geom/CoordinateFilter.h, + include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/CoordinateSequenceFactory.h, + include/geos/geom/CoordinateSequenceFilter.h, + include/geos/geom/Dimension.h, include/geos/geom/Envelope.h, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryComponentFilter.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/GeometryFilter.h, + include/geos/geom/GeometryList.h, + include/geos/geom/IntersectionMatrix.h, + include/geos/geom/LineSegment.h, include/geos/geom/LineString.h, + include/geos/geom/Lineal.h, include/geos/geom/LinearRing.h, + include/geos/geom/Location.h, include/geos/geom/MultiLineString.h, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/Point.h, include/geos/geom/Polygon.h, + include/geos/geom/Polygonal.h, include/geos/geom/PrecisionModel.h, + include/geos/geom/Puntal.h, include/geos/geom/Triangle.h, + include/geos/geom/prep/AbstractPreparedPolygonContains.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/prep/PreparedGeometry.h, + include/geos/geom/prep/PreparedGeometryFactory.h, + include/geos/geom/prep/PreparedLineString.h, + include/geos/geom/prep/PreparedLineStringIntersects.h, + include/geos/geom/prep/PreparedPoint.h, + include/geos/geom/prep/PreparedPolygon.h, + include/geos/geom/prep/PreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonContainsProperly.h, + include/geos/geom/prep/PreparedPolygonCovers.h, + include/geos/geom/prep/PreparedPolygonIntersects.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/CoordinateOperation.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/geom/util/GeometryEditor.h, + include/geos/geom/util/GeometryEditorOperation.h, + include/geos/geom/util/GeometryExtracter.h, + include/geos/geom/util/LinearComponentExtracter.h, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/geom/util/ShortCircuitedGeometryVisitor.h, + include/geos/geom/util/SineStarFactory.h, include/geos/geomPrep.h, + include/geos/geomUtil.h, include/geos/geomgraph.h, + include/geos/geomgraph/Depth.h, + include/geos/geomgraph/DirectedEdge.h, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/Edge.h, include/geos/geomgraph/EdgeEnd.h, + include/geos/geomgraph/EdgeEndStar.h, + include/geos/geomgraph/EdgeIntersection.h, + include/geos/geomgraph/EdgeIntersectionList.h, + include/geos/geomgraph/EdgeList.h, + include/geos/geomgraph/EdgeNodingValidator.h, + include/geos/geomgraph/EdgeRing.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/GraphComponent.h, + include/geos/geomgraph/Label.h, include/geos/geomgraph/Node.h, + include/geos/geomgraph/NodeFactory.h, + include/geos/geomgraph/NodeMap.h, + include/geos/geomgraph/PlanarGraph.h, + include/geos/geomgraph/Position.h, + include/geos/geomgraph/Quadrant.h, + include/geos/geomgraph/TopologyLocation.h, + include/geos/geomgraph/index/EdgeSetIntersector.h, + include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/MonotoneChainEdge.h, + include/geos/geomgraph/index/MonotoneChainIndexer.h, + include/geos/geomgraph/index/SegmentIntersector.h, + include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SimpleSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/geomgraph/index/SweepLineEventObj.h, + include/geos/geomgraph/index/SweepLineSegment.h, + include/geos/geomgraphindex.h, include/geos/geosAlgorithm.h, + include/geos/index/ItemVisitor.h, + include/geos/index/SpatialIndex.h, + include/geos/index/bintree/Bintree.h, + include/geos/index/bintree/Interval.h, + include/geos/index/bintree/Key.h, + include/geos/index/bintree/Node.h, + include/geos/index/bintree/NodeBase.h, + include/geos/index/bintree/Root.h, + include/geos/index/chain/MonotoneChain.h, + include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/index/chain/MonotoneChainOverlapAction.h, + include/geos/index/chain/MonotoneChainSelectAction.h, + include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + include/geos/index/intervalrtree/IntervalRTreeNode.h, + include/geos/index/intervalrtree/SortedPackedIntervalRTree.h, + include/geos/index/quadtree/DoubleBits.h, + include/geos/index/quadtree/IntervalSize.h, + include/geos/index/quadtree/Key.h, + include/geos/index/quadtree/Node.h, + include/geos/index/quadtree/NodeBase.h, + include/geos/index/quadtree/Quadtree.h, + include/geos/index/quadtree/Root.h, + include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/Boundable.h, + include/geos/index/strtree/Interval.h, + include/geos/index/strtree/ItemBoundable.h, + include/geos/index/strtree/SIRtree.h, + include/geos/index/strtree/STRtree.h, include/geos/index/sweepline/SweepLineEvent.h, include/geos/index/sweepline/SweepLineIndex.h, include/geos/index/sweepline/SweepLineInterval.h, @@ -2720,19 +7978,18 @@ * CMakeLists.txt, autogen.bat, capi/CMakeLists.txt, tools/geos_revision_cmake.h.in: [CMake] Simplify generation of - geos_revision.h Remove tools/geos_revision_cmake.h.in as no longer - required - geos_revision.h is generated on-fly. Add geos_revision - target set as dependency of geos_c target. Fix autogen.bat to - generate string instead of integer constant. + geos_revision.h Remove tools/geos_revision_cmake.h.in as no longer required - geos_revision.h is generated on-fly. Add geos_revision target set + as dependency of geos_c target. Fix autogen.bat to generate string + instead of integer constant. 2017-04-07 Mateusz Loskot * .travis.yml: [travis] Build only svn-trunk and svn-3.{5|6} - branches [ci skip] + branches [ci skip] 2017-04-06 Mateusz Loskot - * README.md: [README] Fix branches vs URLs mix-up [ci skip] + * README.md: [README] Fix branches vs URLs mix-up [ci skip] 2017-04-06 Daniel Baston @@ -2742,7 +7999,7 @@ 2017-04-06 Mateusz Loskot * README.md: [README] Switch Travis CI and AppVeyor URLs to - /OSGeo/geos Add svn-trunk to CI build status table. [ci skip] + /OSGeo/geos Add svn-trunk to CI build status table. [ci skip] 2017-04-06 Mateusz Loskot @@ -2756,8 +8013,7 @@ tests/unit/tut/tut_restartable.hpp, tests/unit/tut/tut_result.hpp, tests/unit/tut/tut_runner.hpp, tests/unit/tut/tut_xml_reporter.hpp: Update TUT to latest release 2016-12-19. Source: - https://github.com/mrzechonek/tut-framework/releases/tag/2016-12-19 - Fixes #639 Fixes #804 + https://github.com/mrzechonek/tut-framework/releases/tag/2016-12-19 Fixes #639 Fixes #804 2017-04-05 Sandro Santilli @@ -2774,40 +8030,35 @@ 2017-04-05 Sandro Santilli * README.md: Quotes around otherwise ambiguous (underline - containing) name git-svn-id: http://svn.osgeo.org/geos/trunk@4397 + containing) name git-svn-id: http://svn.osgeo.org/geos/trunk@4397 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-04-02 Sandro Santilli - * capi/geos_c.cpp: Remove unused include git-svn-id: - http://svn.osgeo.org/geos/trunk@4395 + * capi/geos_c.cpp: Remove unused include git-svn-id: http://svn.osgeo.org/geos/trunk@4395 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-04-01 Sandro Santilli - * tools/geos_revision_cmake.h.in: Fix cmake build git-svn-id: - http://svn.osgeo.org/geos/trunk@4394 + * tools/geos_revision_cmake.h.in: Fix cmake build git-svn-id: http://svn.osgeo.org/geos/trunk@4394 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-04-01 Sandro Santilli * tools/repo_revision.sh: Use git describe as revision code if SVN - metadata is not available Fixes #794 git-svn-id: - http://svn.osgeo.org/geos/trunk@4393 + metadata is not available Fixes #794 git-svn-id: http://svn.osgeo.org/geos/trunk@4393 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-04-01 Sandro Santilli * capi/geos_ts_c.cpp, tools/repo_revision.sh: Turn GEOS_REVISION - value into a string Propedeutic to optionally use an hash in there, - or other non-SVN identifiers (see #794) git-svn-id: - http://svn.osgeo.org/geos/trunk@4392 + value into a string Propedeutic to optionally use an hash in there, or other non-SVN + identifiers (see #794) git-svn-id: http://svn.osgeo.org/geos/trunk@4392 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-04-01 Sandro Santilli - * tools/repo_revision.sh: Remove trailing blanks git-svn-id: - http://svn.osgeo.org/geos/trunk@4391 + * tools/repo_revision.sh: Remove trailing blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4391 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-31 Sandro Santilli @@ -2815,71 +8066,62 @@ * CMakeLists.txt, autogen.bat, capi/geos_ts_c.cpp, tools/geos_revision_cmake.h.in, tools/geos_svn_revision_cmake.h.in, tools/repo_revision.sh: Rename GEOS_SVN_REVISION macro and cmake - script to GEOS_REVISION ... even if it's still just the SVN - revision that it contains See #794 git-svn-id: - http://svn.osgeo.org/geos/trunk@4390 + script to GEOS_REVISION ... even if it's still just the SVN revision that it contains See + #794 git-svn-id: http://svn.osgeo.org/geos/trunk@4390 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-31 Sandro Santilli * CMakeLists.txt, Makefile.am, tools/Makefile.am, - tools/{svn_repo_revision.sh => repo_revision.sh}: Rename - svn_repo_revision.sh to repo_revision.sh .. even if it still only - extracts the *SVN* revision (also from git log). See #794 - git-svn-id: http://svn.osgeo.org/geos/trunk@4389 + tools/repo_revision.sh, tools/svn_repo_revision.sh: Rename + svn_repo_revision.sh to repo_revision.sh .. even if it still only extracts the *SVN* revision (also from git + log). See #794 git-svn-id: http://svn.osgeo.org/geos/trunk@4389 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-31 Sandro Santilli * .gitignore, CMakeLists.txt, Makefile.am, autogen.bat, capi/geos_ts_c.cpp, tools/svn_repo_revision.sh: Rename - geos_svn_revision.h to geos_revision.h See #794 git-svn-id: - http://svn.osgeo.org/geos/trunk@4388 + geos_svn_revision.h to geos_revision.h See #794 git-svn-id: http://svn.osgeo.org/geos/trunk@4388 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-30 Mateusz Loskot * tests/unit/.editorconfig: Remove tests/unit/.editorconfig as - useless. The tests use mixture of whitespaces and indentation - rules. git-svn-id: http://svn.osgeo.org/geos/trunk@4387 + useless. The tests use mixture of whitespaces and indentation rules. git-svn-id: http://svn.osgeo.org/geos/trunk@4387 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Sandro Santilli - * tests/unit/.editorconfig: Use spaces under tests/unit git-svn-id: - http://svn.osgeo.org/geos/trunk@4386 + * tests/unit/.editorconfig: Use spaces under tests/unit git-svn-id: http://svn.osgeo.org/geos/trunk@4386 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Mateusz Loskot - * CMakeLists.txt: CMake: Use CMAKE_CXX_STANDARD to require C++98 - git-svn-id: http://svn.osgeo.org/geos/trunk@4384 + * CMakeLists.txt: CMake: Use CMAKE_CXX_STANDARD to require C++98 git-svn-id: http://svn.osgeo.org/geos/trunk@4384 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Mateusz Loskot * .travis.yml: Travis CI: Add ppa:george-edison55/precise-backports - with CMake 3+ git-svn-id: http://svn.osgeo.org/geos/trunk@4383 + with CMake 3+ git-svn-id: http://svn.osgeo.org/geos/trunk@4383 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Mateusz Loskot - * .editorconfig: Add indent_size = 2 for .yml files [ci skip] - git-svn-id: http://svn.osgeo.org/geos/trunk@4382 + * .editorconfig: Add indent_size = 2 for .yml files [ci skip] git-svn-id: http://svn.osgeo.org/geos/trunk@4382 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Mateusz Loskot - * CMakeLists.txt: CMake: Bump cmake_minimum_required to 3.0.0 - Closes #817 git-svn-id: http://svn.osgeo.org/geos/trunk@4380 + * CMakeLists.txt: CMake: Bump cmake_minimum_required to 3.0.0 Closes #817 git-svn-id: http://svn.osgeo.org/geos/trunk@4380 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-28 Mateusz Loskot - * build.bat: Remove build.bat script There is no point in - maintaining such specific build script while there are better, more - flexible tools for CMake users who wish to build/test/develop GEOS. - git-svn-id: http://svn.osgeo.org/geos/trunk@4379 + * build.bat: Remove build.bat script There is no point in maintaining such specific build script while + there are better, more flexible tools for CMake users who wish to + build/test/develop GEOS. git-svn-id: http://svn.osgeo.org/geos/trunk@4379 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-27 Mateusz Loskot @@ -2887,51 +8129,43 @@ * CMakeLists.txt, tests/CMakeLists.txt, tests/unit2/CMakeLists.txt, tests/unit2/geom/PointTest.cpp, tests/unit2/geos_include_all_headers.cpp: First stab at tests/uni2 - with Catch-based tests Add Point test. Add CMake configuration. - Build unit2 tests only if GEOS_ENABLE_TESTS_UNIT2_ONLY=ON. Add - automatic download of Catch header. Require C++11 to build - Catch-based tests git-svn-id: http://svn.osgeo.org/geos/trunk@4378 + with Catch-based tests Add Point test. Add CMake configuration. Build unit2 tests only if + GEOS_ENABLE_TESTS_UNIT2_ONLY=ON. Add automatic download of Catch + header. Require C++11 to build Catch-based tests git-svn-id: http://svn.osgeo.org/geos/trunk@4378 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-27 Mateusz Loskot - * .editorconfig: Add CMake files editing config git-svn-id: - http://svn.osgeo.org/geos/trunk@4377 + * .editorconfig: Add CMake files editing config git-svn-id: http://svn.osgeo.org/geos/trunk@4377 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot - * tests/unit/geom/Geometry/touchesTest.cpp: Adjust test comment - git-svn-id: http://svn.osgeo.org/geos/trunk@4376 + * tests/unit/geom/Geometry/touchesTest.cpp: Adjust test comment git-svn-id: http://svn.osgeo.org/geos/trunk@4376 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot * tests/unit/geom/Geometry/touchesTest.cpp: Add disjoint and - intersects checks to 2-segment test added in r4371 git-svn-id: - http://svn.osgeo.org/geos/trunk@4375 + intersects checks to 2-segment test added in r4371 git-svn-id: http://svn.osgeo.org/geos/trunk@4375 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot * tests/unit/geom/Geometry/touchesTest.cpp: Add test of two almost - and touching segments git-svn-id: - http://svn.osgeo.org/geos/trunk@4371 + and touching segments git-svn-id: http://svn.osgeo.org/geos/trunk@4371 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot * CMakeLists.txt: Enable target debugging for CMake Tools in Visual - Studio Code CMake Tools at - https://github.com/vector-of-bool/vscode-cmake-tools git-svn-id: - http://svn.osgeo.org/geos/trunk@4370 + Studio Code CMake Tools at https://github.com/vector-of-bool/vscode-cmake-tools git-svn-id: http://svn.osgeo.org/geos/trunk@4370 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot * src/operation/distance/IndexedFacetDistance.cpp: Avoid anonymous - class types It is not C and compatibility with C is not required. - git-svn-id: http://svn.osgeo.org/geos/trunk@4369 + class types It is not C and compatibility with C is not required. git-svn-id: http://svn.osgeo.org/geos/trunk@4369 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-26 Mateusz Loskot @@ -2942,34 +8176,23 @@ 2017-03-26 Mateusz Loskot - * : Ignore CMake build and Visual Studio Code directories. - git-svn-id: http://svn.osgeo.org/geos/trunk@4367 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2017-03-24 Mateusz Loskot - - * src/algorithm/RobustDeterminant.cpp: Update URL to "Exact sign of - determinant computation" by Olivier Devillers et al. [ci skip] - git-svn-id: http://svn.osgeo.org/geos/trunk@4366 + * : Ignore CMake build and Visual Studio Code directories. git-svn-id: http://svn.osgeo.org/geos/trunk@4367 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-23 Mateusz Loskot - * appveyor.yml: AppVeyor: Add x86 build using NMake git-svn-id: - http://svn.osgeo.org/geos/trunk@4365 + * appveyor.yml: AppVeyor: Add x86 build using NMake git-svn-id: http://svn.osgeo.org/geos/trunk@4365 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-23 Mateusz Loskot * autogen.bat: Add step generating geos_svn_revision.h template with - revision 0 Simplifies CI build steps. [ci skip] git-svn-id: - http://svn.osgeo.org/geos/trunk@4364 + revision 0 Simplifies CI build steps. [ci skip] git-svn-id: http://svn.osgeo.org/geos/trunk@4364 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: bring back NMake x64 (really) git-svn-id: - http://svn.osgeo.org/geos/trunk@4362 + * appveyor.yml: AppVeyor: bring back NMake x64 (really) git-svn-id: http://svn.osgeo.org/geos/trunk@4362 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot @@ -2977,14 +8200,12 @@ * src/geom/util/GeometryEditor.cpp, src/geom/util/GeometryTransformer.cpp, src/geom/util/ShortCircuitedGeometryVisitor.cpp: Fix warning about - signed/unsigned int mismatch. git-svn-id: - http://svn.osgeo.org/geos/trunk@4361 + signed/unsigned int mismatch. git-svn-id: http://svn.osgeo.org/geos/trunk@4361 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: bring back NMake x64 git-svn-id: - http://svn.osgeo.org/geos/trunk@4360 + * appveyor.yml: AppVeyor: bring back NMake x64 git-svn-id: http://svn.osgeo.org/geos/trunk@4360 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot @@ -2995,52 +8216,44 @@ 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: disable x64 for NMake (temp) git-svn-id: - http://svn.osgeo.org/geos/trunk@4358 + * appveyor.yml: AppVeyor: disable x64 for NMake (temp) git-svn-id: http://svn.osgeo.org/geos/trunk@4358 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * README.md: Update AppVeyor URL [ci skip] git-svn-id: - http://svn.osgeo.org/geos/trunk@4357 + * README.md: Update AppVeyor URL [ci skip] git-svn-id: http://svn.osgeo.org/geos/trunk@4357 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot * src/algorithm/LineIntersector.cpp: Fix warnings about variables - aliasing within scope git-svn-id: - http://svn.osgeo.org/geos/trunk@4356 + aliasing within scope git-svn-id: http://svn.osgeo.org/geos/trunk@4356 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: Add platform x86 for NMake git-svn-id: - http://svn.osgeo.org/geos/trunk@4355 + * appveyor.yml: AppVeyor: Add platform x86 for NMake git-svn-id: http://svn.osgeo.org/geos/trunk@4355 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: Remove -DGEOS_ENABLE_TESTS=OFF - git-svn-id: http://svn.osgeo.org/geos/trunk@4354 + * appveyor.yml: AppVeyor: Remove -DGEOS_ENABLE_TESTS=OFF git-svn-id: http://svn.osgeo.org/geos/trunk@4354 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: Add NMake Makefiles-based build - git-svn-id: http://svn.osgeo.org/geos/trunk@4353 + * appveyor.yml: AppVeyor: Add NMake Makefiles-based build git-svn-id: http://svn.osgeo.org/geos/trunk@4353 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot - * appveyor.yml: AppVeyor: Add missing ps1 color git-svn-id: - http://svn.osgeo.org/geos/trunk@4352 + * appveyor.yml: AppVeyor: Add missing ps1 color git-svn-id: http://svn.osgeo.org/geos/trunk@4352 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-21 Mateusz Loskot * appveyor.yml: AppVeyor: Remove -DDGEOS_BUILD_SHARED=OFF as - currently tests link against shared git-svn-id: - http://svn.osgeo.org/geos/trunk@4351 + currently tests link against shared git-svn-id: http://svn.osgeo.org/geos/trunk@4351 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot @@ -3050,78 +8263,69 @@ Constructor of abstract class A ignores initializer for virtual base class B (Details at - https://connect.microsoft.com/VisualStudio/feedback/details/1581706/false-warning-c4589-constructor-of-abstract-class-class2-ignores-initializer-for-virtual-base-class-class1) git-svn-id: http://svn.osgeo.org/geos/trunk@4350 5242fede-7e19-0410-aef8-94bd7d2200fb + https://connect.microsoft.com/VisualStudio/feedback/details/1581706/false-warning-c4589-constructor-of-abstract-class-class2-ignores-initializer-for-virtual-base-class-class1)git-svn-id: http://svn.osgeo.org/geos/trunk@4350 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot - * appveyor.yml: AppVeyor: Replace build step with build_script - git-svn-id: http://svn.osgeo.org/geos/trunk@4349 + * appveyor.yml: AppVeyor: Replace build step with build_script git-svn-id: http://svn.osgeo.org/geos/trunk@4349 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot - * appveyor.yml: AppVeyor: Fix cmake command line git-svn-id: - http://svn.osgeo.org/geos/trunk@4348 + * appveyor.yml: AppVeyor: Fix cmake command line git-svn-id: http://svn.osgeo.org/geos/trunk@4348 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot - * appveyor.yml: AppVeyor: Fix platform names git-svn-id: - http://svn.osgeo.org/geos/trunk@4347 + * appveyor.yml: AppVeyor: Fix platform names git-svn-id: http://svn.osgeo.org/geos/trunk@4347 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot * include/geos/index/strtree/AbstractSTRtree.h, src/algorithm/CGAlgorithms.cpp, src/algorithm/LineIntersector.cpp: - Fix warnings about variables aliasing within scope git-svn-id: - http://svn.osgeo.org/geos/trunk@4346 + Fix warnings about variables aliasing within scope git-svn-id: http://svn.osgeo.org/geos/trunk@4346 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot * include/geos/util/GEOSException.h: Disable warning C4275: non-DLL-interface std::exception used as base for DLL-interface - GEOSException git-svn-id: http://svn.osgeo.org/geos/trunk@4345 + GEOSException git-svn-id: http://svn.osgeo.org/geos/trunk@4345 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot * src/geom/IntersectionMatrix.cpp: Fix warning: conversion from - size_t to int git-svn-id: http://svn.osgeo.org/geos/trunk@4344 + size_t to int git-svn-id: http://svn.osgeo.org/geos/trunk@4344 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-20 Mateusz Loskot - * appveyor.yml: AppVeyor: Fixing the current failures - Disable - running tests - Disable shared targets - Build all in Release - configuration git-svn-id: http://svn.osgeo.org/geos/trunk@4343 + * appveyor.yml: AppVeyor: Fixing the current failures - Disable running tests - Disable shared targets - Build all in Release configuration git-svn-id: http://svn.osgeo.org/geos/trunk@4343 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-17 Mateusz Loskot - * src/Makefile.vc: Add missing .cpp files git-svn-id: - http://svn.osgeo.org/geos/trunk@4342 + * src/Makefile.vc: Add missing .cpp files git-svn-id: http://svn.osgeo.org/geos/trunk@4342 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-03-17 Mateusz Loskot - * nmake.opt: Add NMAKE version from VS2017 RTM git-svn-id: - http://svn.osgeo.org/geos/trunk@4340 + * nmake.opt: Add NMAKE version from VS2017 RTM git-svn-id: http://svn.osgeo.org/geos/trunk@4340 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-16 Mateusz Loskot - * README.md: Remove CI builds on drone.io The hosted version of - Drone has closed down (https://archive.drone.io/). git-svn-id: - http://svn.osgeo.org/geos/trunk@4339 + * README.md: Remove CI builds on drone.io The hosted version of Drone has closed down + (https://archive.drone.io/). git-svn-id: http://svn.osgeo.org/geos/trunk@4339 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-15 Mateusz Loskot * tests/unit/geom/PolygonTest.cpp: Add basic test of convex - Polygon::buffer(0) result. git-svn-id: - http://svn.osgeo.org/geos/trunk@4338 + Polygon::buffer(0) result. git-svn-id: http://svn.osgeo.org/geos/trunk@4338 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-14 Sandro Santilli @@ -3129,29 +8333,24 @@ * include/geos/geomgraph/DirectedEdge.h, include/geos/geomgraph/DirectedEdgeStar.h, src/geomgraph/DirectedEdge.cpp, src/geomgraph/DirectedEdgeStar.cpp: - Fix overloaded virtual print in DirectedEdge*. - Make print() - method of child classes also const - Make getDepthDelta() const - - Add virtual. For C++11 and newer this eventually should be - overload. e.g. geos::geomgraph::DirectedEdge::print' hides - overloaded virtual function [-Woverloaded-virtual] Patch by Kurt - Schwehr Fixes #812 in trunk (3.7.0) - git-svn-id: http://svn.osgeo.org/geos/trunk@4336 + Fix overloaded virtual print in DirectedEdge*. - Make print() method of child classes also const - Make getDepthDelta() const - Add virtual. For C++11 and newer this eventually should be + overload. e.g. geos::geomgraph::DirectedEdge::print' hides overloaded virtual + function [-Woverloaded-virtual] Patch by Kurt Schwehr Fixes #812 in trunk + (3.7.0) git-svn-id: http://svn.osgeo.org/geos/trunk@4336 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-14 Sandro Santilli * src/algorithm/LineIntersector.cpp, src/operation/overlay/OverlayOp.cpp: Protect from computations - against NaN numbers Fixes an unhandled exception: 0xC0000090: - Floating-point invalid operation. Closes #811 - thanks sunxunfeng - git-svn-id: http://svn.osgeo.org/geos/trunk@4334 + against NaN numbers Fixes an unhandled exception: 0xC0000090: Floating-point invalid + operation. Closes #811 - thanks sunxunfeng git-svn-id: http://svn.osgeo.org/geos/trunk@4334 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-14 Sandro Santilli * src/algorithm/LineIntersector.cpp, - src/operation/overlay/OverlayOp.cpp: Remove trailing blanks - git-svn-id: http://svn.osgeo.org/geos/trunk@4333 + src/operation/overlay/OverlayOp.cpp: Remove trailing blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4333 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-02-01 Sandro Santilli @@ -3161,56 +8360,46 @@ src/linearref/ExtractLineByLocation.cpp, src/operation/union/CascadedPolygonUnion.cpp, src/operation/union/CascadedUnion.cpp: Add static_assert to - strings inside of assert calls Allows compiling with - -Wpointer-bool-conversion. Patch by Kurt Schwehr - Closes #638 git-svn-id: - http://svn.osgeo.org/geos/trunk@4331 + strings inside of assert calls Allows compiling with -Wpointer-bool-conversion. Patch by Kurt Schwehr Closes #638 git-svn-id: http://svn.osgeo.org/geos/trunk@4331 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-01-31 Sandro Santilli - * tests/unit/tut/README: Record upstream of tut library git-svn-id: - http://svn.osgeo.org/geos/trunk@4330 + * tests/unit/tut/README: Record upstream of tut library git-svn-id: http://svn.osgeo.org/geos/trunk@4330 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-01-31 Sandro Santilli - * .gitignore: Unignore README git-svn-id: - http://svn.osgeo.org/geos/trunk@4329 + * .gitignore: Unignore README git-svn-id: http://svn.osgeo.org/geos/trunk@4329 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-01-18 Sandro Santilli - * NEWS: Add 3.6.1 section git-svn-id: - http://svn.osgeo.org/geos/trunk@4328 + * NEWS: Add 3.6.1 section git-svn-id: http://svn.osgeo.org/geos/trunk@4328 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-01-12 Sandro Santilli * include/geos/operation/distance/FacetSequenceTreeBuilder.h, tests/unit/capi/GEOSDistanceTest.cpp: Missing GEOS_DLL and - USE_MATH_DEFINES for MSVC compilation Patch by Escande Adrien - via - https://github.com/libgeos/libgeos/pull/76 git-svn-id: - http://svn.osgeo.org/geos/trunk@4325 + USE_MATH_DEFINES for MSVC compilation Patch by Escande Adrien via + https://github.com/libgeos/libgeos/pull/76 git-svn-id: http://svn.osgeo.org/geos/trunk@4325 5242fede-7e19-0410-aef8-94bd7d2200fb 2017-01-05 Sandro Santilli - * macros/python.m4: Update python m4 macro, should fix #774 - git-svn-id: http://svn.osgeo.org/geos/trunk@4320 + * macros/python.m4: Update python m4 macro, should fix #774 git-svn-id: http://svn.osgeo.org/geos/trunk@4320 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-29 Sandro Santilli * src/algorithm/MinimumDiameter.cpp: Include for fabs use, - see #799 git-svn-id: http://svn.osgeo.org/geos/trunk@4319 + see #799 git-svn-id: http://svn.osgeo.org/geos/trunk@4319 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-29 Sandro Santilli - * src/algorithm/MinimumDiameter.cpp: Drop trailing blanks - git-svn-id: http://svn.osgeo.org/geos/trunk@4318 + * src/algorithm/MinimumDiameter.cpp: Drop trailing blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4318 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-05 Sandro Santilli @@ -3226,9 +8415,7 @@ tests/unit/algorithm/distance/DiscreteFrechetDistanceTest.cpp, tests/unit/capi/GEOSFrechetDistanceTest.cpp, tests/unit/capi/GEOSHausdorffDistanceTest.cpp: Add - DiscreteFrechetDistance Patch by Shinichi SUGIYAMA - Closes #797 git-svn-id: - http://svn.osgeo.org/geos/trunk@4314 + DiscreteFrechetDistance Patch by Shinichi SUGIYAMA Closes #797 git-svn-id: http://svn.osgeo.org/geos/trunk@4314 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-02 Sandro Santilli @@ -3237,8 +8424,7 @@ src/geom/util/GeometryTransformer.cpp, src/simplify/DouglasPeuckerSimplifier.cpp, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Fix empty - GEOSSimplify return on inner ring collapse Patch by Even Rouault - See #741 git-svn-id: http://svn.osgeo.org/geos/trunk@4311 + GEOSSimplify return on inner ring collapse Patch by Even Rouault See #741 git-svn-id: http://svn.osgeo.org/geos/trunk@4311 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-02 Sandro Santilli @@ -3247,23 +8433,19 @@ src/geom/util/GeometryTransformer.cpp, src/simplify/DouglasPeuckerSimplifier.cpp, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Style only - change, trim trailing blanks and fix indents git-svn-id: - http://svn.osgeo.org/geos/trunk@4310 + change, trim trailing blanks and fix indents git-svn-id: http://svn.osgeo.org/geos/trunk@4310 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-12-01 Sandro Santilli * src/io/WKBWriter.cpp, tests/unit/io/WKBWriterTest.cpp: Fixed WKB - representation of empty polygon. Patch by Sergey Fedoseev Closes - #680. git-svn-id: http://svn.osgeo.org/geos/trunk@4308 + representation of empty polygon. Patch by Sergey Fedoseev Closes #680. git-svn-id: http://svn.osgeo.org/geos/trunk@4308 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-11-22 Sandro Santilli * tools/geos-config.in: Fix --static-clibs and --static-cclibs - returns from geos-config Patch by Edzer Pebesma - git-svn-id: - http://svn.osgeo.org/geos/trunk@4307 + returns from geos-config Patch by Edzer Pebesma git-svn-id: http://svn.osgeo.org/geos/trunk@4307 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-11-10 Sandro Santilli @@ -3412,38 +8594,32 @@ tests/xmltester/BufferResultMatcher.h, tests/xmltester/SingleSidedBufferResultMatcher.cpp, tests/xmltester/SingleSidedBufferResultMatcher.h, - tests/xmltester/safe_to_xml.sh: Update my email address git-svn-id: - http://svn.osgeo.org/geos/trunk@4305 + tests/xmltester/safe_to_xml.sh: Update my email address git-svn-id: http://svn.osgeo.org/geos/trunk@4305 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-11-10 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Fix - GEOSSTRtree_nearest_r signature and add missing implementation See - #796 git-svn-id: http://svn.osgeo.org/geos/trunk@4303 + GEOSSTRtree_nearest_r signature and add missing implementation See #796 git-svn-id: http://svn.osgeo.org/geos/trunk@4303 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-11-08 Sandro Santilli * include/geos/geom/Geometry.h: Made equalsExact description more specific. Patch by Sergey Fedoseev via - https://github.com/libgeos/libgeos/pull/72 git-svn-id: - http://svn.osgeo.org/geos/trunk@4301 + https://github.com/libgeos/libgeos/pull/72 git-svn-id: http://svn.osgeo.org/geos/trunk@4301 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-31 Sandro Santilli * include/geos/operation/distance/IndexedFacetDistance.h, src/operation/distance/IndexedFacetDistance.cpp: Fix memory leak in - IndexedFacetDistance Patch by Dan Baston (see #795) git-svn-id: - http://svn.osgeo.org/geos/trunk@4300 + IndexedFacetDistance Patch by Dan Baston (see #795) git-svn-id: http://svn.osgeo.org/geos/trunk@4300 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-28 Sandro Santilli - * .drone.yml: Update drone yml to 0.5 version See - https://git.osgeo.org/gogs/sac/gogs-service/issues/14 git-svn-id: - http://svn.osgeo.org/geos/trunk@4296 + * .drone.yml: Update drone yml to 0.5 version See https://git.osgeo.org/gogs/sac/gogs-service/issues/14 git-svn-id: http://svn.osgeo.org/geos/trunk@4296 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-28 Sandro Santilli @@ -3462,135 +8638,110 @@ src/operation/distance/Makefile.am, src/precision/MinimumClearance.cpp, tests/unit/capi/GEOSDistanceTest.cpp: Port IndexedFacetDistance from - JTS Contributed by Dan Baston Closes #795 git-svn-id: - http://svn.osgeo.org/geos/trunk@4295 + JTS Contributed by Dan Baston Closes #795 git-svn-id: http://svn.osgeo.org/geos/trunk@4295 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-27 Sandro Santilli - * .gitlab-ci.yml: Install a fake git2cl in gitlab-ci This fixes - "distcheck" step git-svn-id: http://svn.osgeo.org/geos/trunk@4291 + * .gitlab-ci.yml: Install a fake git2cl in gitlab-ci This fixes "distcheck" step git-svn-id: http://svn.osgeo.org/geos/trunk@4291 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-27 Sandro Santilli * HOWTO_RELEASE: Update release procedure to drop manual ChangeLog - generation git-svn-id: http://svn.osgeo.org/geos/trunk@4288 + generation git-svn-id: http://svn.osgeo.org/geos/trunk@4288 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-27 Sandro Santilli - * autogen.sh: Stop symlinking README.md as README ... now that our - Makefile.am is setting the "foreign" option we don't need that - anymore git-svn-id: http://svn.osgeo.org/geos/trunk@4281 + * autogen.sh: Stop symlinking README.md as README ... now that our Makefile.am is setting the "foreign" option we + don't need that anymore git-svn-id: http://svn.osgeo.org/geos/trunk@4281 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-27 Sandro Santilli - * ChangeLog, Makefile.am: Remove ChangeLog from repository. The - file will be created by "make dist" from either git (if .git exists) - or svn (if .svn exists). Tested with builds from package, from - source dir and from external build dir. Only automake. See #788 - git-svn-id: http://svn.osgeo.org/geos/trunk@4280 + * ChangeLog, Makefile.am: Remove ChangeLog from repository. The file will be created by "make dist" from either git (if .git + exists) or svn (if .svn exists). Tested with builds from package, from source dir and from external + build dir. Only automake. See #788 git-svn-id: http://svn.osgeo.org/geos/trunk@4280 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli - * NEWS: Fix release date for 3.6.0, start 3.7.0 section git-svn-id: - http://svn.osgeo.org/geos/trunk@4275 + * NEWS: Fix release date for 3.6.0, start 3.7.0 section git-svn-id: http://svn.osgeo.org/geos/trunk@4275 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli - * .editorconfig: Keep carriage-returns in *.vc files git-svn-id: - http://svn.osgeo.org/geos/trunk@4273 + * .editorconfig: Keep carriage-returns in *.vc files git-svn-id: http://svn.osgeo.org/geos/trunk@4273 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli * CMakeLists.txt, HOWTO_RELEASE, capi/geos_c.h.in, configure.ac, - include/geos/version.h.vc: Increment version to 3.7.0dev - git-svn-id: http://svn.osgeo.org/geos/trunk@4272 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2016-10-25 Sandro Santilli - - * : Drop web subdir git-svn-id: - http://svn.osgeo.org/geos/trunk@4270 + include/geos/version.h.vc: Increment version to 3.7.0dev git-svn-id: http://svn.osgeo.org/geos/trunk@4272 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli - * : Drop php subdir git-svn-id: - http://svn.osgeo.org/geos/trunk@4269 + * : Drop web subdir git-svn-id: http://svn.osgeo.org/geos/trunk@4270 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli * CMakeLists.txt, configure.ac: Fix version to 3.6.0 (drop "dev" - suffix) git-svn-id: http://svn.osgeo.org/geos/trunk@4264 + suffix) git-svn-id: http://svn.osgeo.org/geos/trunk@4264 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli - * ChangeLog: Update ChangeLog for 3.6.0 release git-svn-id: - http://svn.osgeo.org/geos/trunk@4263 + * ChangeLog: Update ChangeLog for 3.6.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@4263 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-25 Sandro Santilli - * NEWS: Tweak NEWS, in preparation for 3.6.0 release git-svn-id: - http://svn.osgeo.org/geos/trunk@4262 + * NEWS: Tweak NEWS, in preparation for 3.6.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@4262 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-04 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp: And more - trailing spaces git-svn-id: http://svn.osgeo.org/geos/trunk@4261 + trailing spaces git-svn-id: http://svn.osgeo.org/geos/trunk@4261 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-04 Sandro Santilli * include/geos/operation/overlay/snap/LineStringSnapper.h: Remove - more trailing blanks git-svn-id: - http://svn.osgeo.org/geos/trunk@4260 + more trailing blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4260 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-10-04 Sandro Santilli * src/operation/overlay/snap/GeometrySnapper.cpp: Drop trailing - blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4259 + blanks git-svn-id: http://svn.osgeo.org/geos/trunk@4259 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-27 Sandro Santilli - * capi/geos_c.h.in: wrong GEOS_DLL position Should not be type* - GEOS_DLL function(), but type GEOS_DLL *function(). Doesn't build on - windows before the modif Patch by @bartoli Closes - https://github.com/libgeos/libgeos/pull/70 git-svn-id: - http://svn.osgeo.org/geos/trunk@4258 + * capi/geos_c.h.in: wrong GEOS_DLL position Should not be type* GEOS_DLL function(), but type GEOS_DLL + *function(). Doesn't build on windows before the modif Patch by @bartoli Closes https://github.com/libgeos/libgeos/pull/70 git-svn-id: http://svn.osgeo.org/geos/trunk@4258 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-07 Sandro Santilli * include/geos/geom/Geometry.h, include/geos/geom/LineString.h: Fix - documentation typos. Courtesy of Todd Trimble - git-svn-id: - http://svn.osgeo.org/geos/trunk@4257 + documentation typos. Courtesy of Todd Trimble git-svn-id: http://svn.osgeo.org/geos/trunk@4257 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-07 Sandro Santilli * tests/unit/capi/GEOSGeom_createCollection.cpp: Fix initialization - order warning git-svn-id: http://svn.osgeo.org/geos/trunk@4256 + order warning git-svn-id: http://svn.osgeo.org/geos/trunk@4256 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-07 Sandro Santilli * CMakeLists.txt: CMake: generate geos_svn_revision.h in binary - directory if not exists Patch by Rashad Kanavath - git-svn-id: - http://svn.osgeo.org/geos/trunk@4255 + directory if not exists Patch by Rashad Kanavath git-svn-id: http://svn.osgeo.org/geos/trunk@4255 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-07 Sandro Santilli @@ -3598,29 +8749,24 @@ * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, include/geos/geom/Geometry.h, tests/unit/Makefile.am, tests/unit/capi/GEOSUserDataTest.cpp: Add GEOSGeom_setUserData and - GEOSGeom_getUserData Patch by Rashad Kanavath - git-svn-id: - http://svn.osgeo.org/geos/trunk@4254 + GEOSGeom_getUserData Patch by Rashad Kanavath git-svn-id: http://svn.osgeo.org/geos/trunk@4254 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-02 Sandro Santilli * CMakeLists.txt, src/CMakeLists.txt: Add option to build static and - shared. (default is build both) Fixes #788 Patch by Rashad Kanavath - git-svn-id: - http://svn.osgeo.org/geos/trunk@4253 + shared. (default is build both) Fixes #788 Patch by Rashad Kanavath git-svn-id: http://svn.osgeo.org/geos/trunk@4253 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-09-02 Sandro Santilli - * authors.svn: Fix my email address git-svn-id: - http://svn.osgeo.org/geos/trunk@4252 + * authors.svn: Fix my email address git-svn-id: http://svn.osgeo.org/geos/trunk@4252 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-08-24 Mateusz Loskot * CMakeLists.txt: CMake now sets GEOS_BUILD_PACKAGED to FALSE on CI - services git-svn-id: http://svn.osgeo.org/geos/trunk@4251 + services git-svn-id: http://svn.osgeo.org/geos/trunk@4251 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-08-24 Mateusz Loskot @@ -3629,69 +8775,58 @@ directories for geos_ts.cpp which does #include "../geos_svn_revision.h", whereas CMake generates geos_svn_revision.h in build directory, to not to pollute source - tree. git-svn-id: http://svn.osgeo.org/geos/trunk@4250 + tree. git-svn-id: http://svn.osgeo.org/geos/trunk@4250 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-08-24 Mateusz Loskot * build.bat: Add convenient build.bat for Visual Studio and CMake - users: * Runs CMake to configure 32-bit or 64-bit build with the - latest release of Visual Studio. * Runs MSBuild to build the - generated solution. git-svn-id: - http://svn.osgeo.org/geos/trunk@4249 + users: * Runs CMake to configure 32-bit or 64-bit build with the latest + release of Visual Studio. * Runs MSBuild to build the generated solution. git-svn-id: http://svn.osgeo.org/geos/trunk@4249 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-08-03 Mateusz Loskot - * src/Makefile.vc: Add missing .cpp files added in r4203 - git-svn-id: http://svn.osgeo.org/geos/trunk@4245 + * src/Makefile.vc: Add missing .cpp files added in r4203 git-svn-id: http://svn.osgeo.org/geos/trunk@4245 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-08-03 Mateusz Loskot - * nmake.opt: Add NMAKE version from VS2015 Update 3 git-svn-id: - http://svn.osgeo.org/geos/trunk@4244 + * nmake.opt: Add NMAKE version from VS2015 Update 3 git-svn-id: http://svn.osgeo.org/geos/trunk@4244 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-21 Sandro Santilli - * .drone.yml: Only run "make check", not "make distcheck" ... - distcheck can be run manually just before a release git-svn-id: - http://svn.osgeo.org/geos/trunk@4243 + * .drone.yml: Only run "make check", not "make distcheck" ... distcheck can be run manually just before a release git-svn-id: http://svn.osgeo.org/geos/trunk@4243 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-21 Sandro Santilli * .drone.yml, docker/README, docker/build-test/Dockerfile, - docker/build-test/Makefile: Remove docker config Docker - configurations are not hosted on - https://git.osgeo.org/gogs/geos/geos-docker/ git-svn-id: - http://svn.osgeo.org/geos/trunk@4242 + docker/build-test/Makefile: Remove docker config Docker configurations are not hosted on + https://git.osgeo.org/gogs/geos/geos-docker/ git-svn-id: http://svn.osgeo.org/geos/trunk@4242 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-21 Sandro Santilli - * src/operation/buffer/BufferOp.cpp: Do not define unused function - git-svn-id: http://svn.osgeo.org/geos/trunk@4241 + * src/operation/buffer/BufferOp.cpp: Do not define unused function git-svn-id: http://svn.osgeo.org/geos/trunk@4241 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-21 Sandro Santilli - * .drone.yml: Fix test-image variable use git-svn-id: - http://svn.osgeo.org/geos/trunk@4240 + * .drone.yml: Fix test-image variable use git-svn-id: http://svn.osgeo.org/geos/trunk@4240 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-21 Sandro Santilli * .drone.yml: Turn off optimization while building, reduce clone - depth git-svn-id: http://svn.osgeo.org/geos/trunk@4239 + depth git-svn-id: http://svn.osgeo.org/geos/trunk@4239 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-19 Sandro Santilli - * web/index.html, web/style.css: Remove website content Moved to - https://git.osgeo.org/gogs/geos/website (was obsoleted and unused - anyway) git-svn-id: http://svn.osgeo.org/geos/trunk@4238 + * web/index.html, web/style.css: Remove website content Moved to https://git.osgeo.org/gogs/geos/website (was obsoleted and + unused anyway) git-svn-id: http://svn.osgeo.org/geos/trunk@4238 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-19 Sandro Santilli @@ -3699,125 +8834,106 @@ * .gitignore, Makefile.am, NEWS, README.md, configure.ac, php/Makefile.am, php/README, php/TODO, php/geos.c, php/php_geos.h, php/test/Makefile.am, php/test/crashme.php, php/test/test.php: - Remove PHP bindings, leave refs to separate repository Closes #765 - git-svn-id: http://svn.osgeo.org/geos/trunk@4237 + Remove PHP bindings, leave refs to separate repository Closes #765 git-svn-id: http://svn.osgeo.org/geos/trunk@4237 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-19 Sandro Santilli - * docker/build-test/Dockerfile: Reduce size of build-test image - git-svn-id: http://svn.osgeo.org/geos/trunk@4236 + * docker/build-test/Dockerfile: Reduce size of build-test image git-svn-id: http://svn.osgeo.org/geos/trunk@4236 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-16 Sandro Santilli - * README.md: Add link to build status table on trac git-svn-id: - http://svn.osgeo.org/geos/trunk@4235 + * README.md: Add link to build status table on trac git-svn-id: http://svn.osgeo.org/geos/trunk@4235 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-16 Sandro Santilli * .gitignore, docker/README, docker/build-test/Dockerfile, docker/build-test/Makefile: Add configuration to make dockers for - build-testing GEOS git-svn-id: http://svn.osgeo.org/geos/trunk@4234 + build-testing GEOS git-svn-id: http://svn.osgeo.org/geos/trunk@4234 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-15 Sandro Santilli - * README.md: Add OSGeo/Drone badge git-svn-id: - http://svn.osgeo.org/geos/trunk@4233 + * README.md: Add OSGeo/Drone badge git-svn-id: http://svn.osgeo.org/geos/trunk@4233 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-15 Sandro Santilli - * .drone.yml: Add a "make check" step to the drone config - git-svn-id: http://svn.osgeo.org/geos/trunk@4231 + * .drone.yml: Add a "make check" step to the drone config git-svn-id: http://svn.osgeo.org/geos/trunk@4231 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-15 Sandro Santilli - * README.md: Adds all the currently supported Visual Studio versions - Patch by gmasetti@ccom.unh.edu git-svn-id: - http://svn.osgeo.org/geos/trunk@4230 + * README.md: Adds all the currently supported Visual Studio versions Patch by gmasetti@ccom.unh.edu git-svn-id: http://svn.osgeo.org/geos/trunk@4230 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-14 Sandro Santilli * include/geos/platform.h.in: Fully qualify isnan call when - HAVE_ISNAN is defined Fixes build with GCC-5.3.0 and higher. Closes - #784 git-svn-id: http://svn.osgeo.org/geos/trunk@4224 + HAVE_ISNAN is defined Fixes build with GCC-5.3.0 and higher. Closes #784 git-svn-id: http://svn.osgeo.org/geos/trunk@4224 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-12 Sandro Santilli - * .drone.yml: Add .drone.yml git-svn-id: - http://svn.osgeo.org/geos/trunk@4221 + * .drone.yml: Add .drone.yml git-svn-id: http://svn.osgeo.org/geos/trunk@4221 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-07-09 Sandro Santilli - * tests/perf/Makefile.am: Add missing LIBS Thanks Andrew Watkins - for spotting this git-svn-id: http://svn.osgeo.org/geos/trunk@4220 + * tests/perf/Makefile.am: Add missing LIBS Thanks Andrew Watkins for spotting this git-svn-id: http://svn.osgeo.org/geos/trunk@4220 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-29 Mateusz Loskot * tests/unit/capi/GEOSMinimumClearanceTest.cpp: Compare inf == inf - instead of ensure_equals(inf, inf). The latter compares the - difference, but inf minus inf result is indeterminate. git-svn-id: - http://svn.osgeo.org/geos/trunk@4219 + instead of ensure_equals(inf, inf). The latter compares the difference, but inf minus inf result is + indeterminate. git-svn-id: http://svn.osgeo.org/geos/trunk@4219 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-09 Mateusz Loskot - * CMakeLists.txt: Fix CMake syntax. git-svn-id: - http://svn.osgeo.org/geos/trunk@4218 + * CMakeLists.txt: Fix CMake syntax. git-svn-id: http://svn.osgeo.org/geos/trunk@4218 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-09 Mateusz Loskot * CMakeLists.txt: CI builds (Travis CI, AppVeyor, etc.) perform git - clone, not svn checkout. So, CI environment needs a dummy revision - (e.g. 999999) to generate the required header. git-svn-id: - http://svn.osgeo.org/geos/trunk@4217 + clone, not svn checkout. So, CI environment needs a dummy revision + (e.g. 999999) to generate the required header. git-svn-id: http://svn.osgeo.org/geos/trunk@4217 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-08 Mateusz Loskot - * README.md: Fix Markdown syntax for build status table. - git-svn-id: http://svn.osgeo.org/geos/trunk@4216 + * README.md: Fix Markdown syntax for build status table. git-svn-id: http://svn.osgeo.org/geos/trunk@4216 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-08 Mateusz Loskot - * appveyor.yml: AppVeyor: add some colours git-svn-id: - http://svn.osgeo.org/geos/trunk@4215 + * appveyor.yml: AppVeyor: add some colours git-svn-id: http://svn.osgeo.org/geos/trunk@4215 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-07 Mateusz Loskot - * README.md: Add AppVeyor and Drone.io badge status. Reformat build - status into table by service X branch. git-svn-id: - http://svn.osgeo.org/geos/trunk@4214 + * README.md: Add AppVeyor and Drone.io badge status. Reformat build + status into table by service X branch. git-svn-id: http://svn.osgeo.org/geos/trunk@4214 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-07 Mateusz Loskot - * appveyor.yml: AppVeyor: Fix CMake build folder location - git-svn-id: http://svn.osgeo.org/geos/trunk@4213 + * appveyor.yml: AppVeyor: Fix CMake build folder location git-svn-id: http://svn.osgeo.org/geos/trunk@4213 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-07 Mateusz Loskot - * appveyor.yml: First stab at AppVeyor configuration git-svn-id: - http://svn.osgeo.org/geos/trunk@4212 + * appveyor.yml: First stab at AppVeyor configuration git-svn-id: http://svn.osgeo.org/geos/trunk@4212 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-07 Mateusz Loskot * CMakeLists.txt: Merged revision(s) 4210 from branches/3.5: Update - CMake configuration based on trunk/CMakeLists.txt git-svn-id: - http://svn.osgeo.org/geos/trunk@4211 + CMake configuration based on trunk/CMakeLists.txt git-svn-id: http://svn.osgeo.org/geos/trunk@4211 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-06-07 Mateusz Loskot @@ -3825,29 +8941,23 @@ * capi/geos_c.h.in, include/geos/index/strtree/GeometryItemDistance.h, include/geos/precision/MinimumClearance.h, src/Makefile.vc: Fix - Visual C++ builds with NMAKE and CMake (Ticket #777): * Correct - __declspec specifier placement in C API function prototypes. * Add - GEOS_DLL missing from new classes added recently. * Update - makefile.vc with implementation files added recently. git-svn-id: - http://svn.osgeo.org/geos/trunk@4209 + Visual C++ builds with NMAKE and CMake (Ticket #777): * Correct __declspec specifier placement in C API function + prototypes. * Add GEOS_DLL missing from new classes added recently. * Update makefile.vc with implementation files added recently. git-svn-id: http://svn.osgeo.org/geos/trunk@4209 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-05-12 Sandro Santilli - * README.md: Revert "Cips" This reverts commit - c816b6747129a59f82c6ebc9a952bc11b32a48f6. Sorry, was a debug commit - pushed in error git-svn-id: http://svn.osgeo.org/geos/trunk@4208 + * README.md: Revert "Cips" This reverts commit c816b6747129a59f82c6ebc9a952bc11b32a48f6. Sorry, was a debug commit pushed in error git-svn-id: http://svn.osgeo.org/geos/trunk@4208 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-05-12 Sandro Santilli - * README.md: Use https for debbie links git-svn-id: - http://svn.osgeo.org/geos/trunk@4207 + * README.md: Use https for debbie links git-svn-id: http://svn.osgeo.org/geos/trunk@4207 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-05-12 Sandro Santilli - * README.md: Cips git-svn-id: http://svn.osgeo.org/geos/trunk@4205 + * README.md: Cips git-svn-id: http://svn.osgeo.org/geos/trunk@4205 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-25 Sandro Santilli @@ -3858,8 +8968,7 @@ src/operation/distance/FacetSequence.cpp, src/operation/distance/FacetSequenceTreeBuilder.cpp, src/precision/MinimumClearance.cpp: Include hash in Last Port for - MinimumClearance classes git-svn-id: - http://svn.osgeo.org/geos/trunk@4204 + MinimumClearance classes git-svn-id: http://svn.osgeo.org/geos/trunk@4204 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-25 Sandro Santilli @@ -3878,106 +8987,87 @@ src/operation/distance/Makefile.am, src/precision/Makefile.am, src/precision/MinimumClearance.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSMinimumClearanceTest.cpp: Implement - GEOSMinimumClearance and GEOSMinimumClearanceLine Includes tests - and C-API exposure. Patch by Daniel Baston - via https://github.com/libgeos/libgeos/pull/65 Closes #776 - git-svn-id: http://svn.osgeo.org/geos/trunk@4203 + GEOSMinimumClearance and GEOSMinimumClearanceLine Includes tests and C-API exposure. Patch by Daniel Baston via + https://github.com/libgeos/libgeos/pull/65 Closes #776 git-svn-id: http://svn.osgeo.org/geos/trunk@4203 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-24 Sandro Santilli * .gitignore, Makefile.am, autogen.sh: Symlink README to README.md - at autogen.sh time Should fix distcheck git-svn-id: - http://svn.osgeo.org/geos/trunk@4202 + at autogen.sh time Should fix distcheck git-svn-id: http://svn.osgeo.org/geos/trunk@4202 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-23 Sandro Santilli - * Makefile.am: Add rule to make README from README.md README is a - standard GNU file that ends up in the distribution git-svn-id: - http://svn.osgeo.org/geos/trunk@4201 + * Makefile.am: Add rule to make README from README.md README is a standard GNU file that ends up in the distribution git-svn-id: http://svn.osgeo.org/geos/trunk@4201 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-23 Sandro Santilli - * README.md: Drop drone.io badge The service times out before our - tests complete, not a good one. git-svn-id: - http://svn.osgeo.org/geos/trunk@4200 + * README.md: Drop drone.io badge The service times out before our tests complete, not a good one. git-svn-id: http://svn.osgeo.org/geos/trunk@4200 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-23 Sandro Santilli - * README, README.md: Merge README into README.md Thanks Mike Toews - for the kickstart on this git-svn-id: - http://svn.osgeo.org/geos/trunk@4199 + * README, README.md: Merge README into README.md Thanks Mike Toews for the kickstart on this git-svn-id: http://svn.osgeo.org/geos/trunk@4199 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-23 Sandro Santilli * tests/unit/capi/GEOSSTRtreeTest.cpp: Correctly initialize strtree - in test Patch by dbaston git-svn-id: - http://svn.osgeo.org/geos/trunk@4198 + in test Patch by dbaston git-svn-id: http://svn.osgeo.org/geos/trunk@4198 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * include/geos/index/strtree/Makefile.am: Fix distcheck (#768) - Patch by Daniel Baston git-svn-id: - http://svn.osgeo.org/geos/trunk@4197 + * include/geos/index/strtree/Makefile.am: Fix distcheck (#768) Patch by Daniel Baston git-svn-id: http://svn.osgeo.org/geos/trunk@4197 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * README.md: Add drone.io badge git-svn-id: - http://svn.osgeo.org/geos/trunk@4196 + * README.md: Add drone.io badge git-svn-id: http://svn.osgeo.org/geos/trunk@4196 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * README.md: Add Debbie badge git-svn-id: - http://svn.osgeo.org/geos/trunk@4195 + * README.md: Add Debbie badge git-svn-id: http://svn.osgeo.org/geos/trunk@4195 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * README.md: Add project homepage url git-svn-id: - http://svn.osgeo.org/geos/trunk@4191 + * README.md: Add project homepage url git-svn-id: http://svn.osgeo.org/geos/trunk@4191 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * .travis.yml: Fix typo git-svn-id: - http://svn.osgeo.org/geos/trunk@4190 + * .travis.yml: Fix typo git-svn-id: http://svn.osgeo.org/geos/trunk@4190 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * README.md: Put build badges on the same line git-svn-id: - http://svn.osgeo.org/geos/trunk@4189 + * README.md: Put build badges on the same line git-svn-id: http://svn.osgeo.org/geos/trunk@4189 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * README.md: Add gitlab-ci badge git-svn-id: - http://svn.osgeo.org/geos/trunk@4188 + * README.md: Add gitlab-ci badge git-svn-id: http://svn.osgeo.org/geos/trunk@4188 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-22 Sandro Santilli - * .gitlab-ci.yml: Add gitlab-ci configuration git-svn-id: - http://svn.osgeo.org/geos/trunk@4187 + * .gitlab-ci.yml: Add gitlab-ci configuration git-svn-id: http://svn.osgeo.org/geos/trunk@4187 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-19 Sandro Santilli * capi/geos_ts_c.cpp: Move CustomItemDistance defn some contexts - higher git-svn-id: http://svn.osgeo.org/geos/trunk@4186 + higher git-svn-id: http://svn.osgeo.org/geos/trunk@4186 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-19 Sandro Santilli * capi/geos_ts_c.cpp: Trim trailing whitespaces (as per - .editorconfig) git-svn-id: http://svn.osgeo.org/geos/trunk@4185 + .editorconfig) git-svn-id: http://svn.osgeo.org/geos/trunk@4185 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-19 Sandro Santilli @@ -3992,106 +9082,87 @@ src/index/strtree/GeometryItemDistance.cpp, src/index/strtree/Makefile.am, src/index/strtree/STRtree.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSSTRtreeTest.cpp: Add - GEOSSTRtree_nearest API Includes tests for the new API and - pre-existing STRtree API Closes #768 Patch by Daniel Baston - via https://github.com/libgeos/libgeos/pull/61 - git-svn-id: http://svn.osgeo.org/geos/trunk@4184 + GEOSSTRtree_nearest API Includes tests for the new API and pre-existing STRtree API Closes + #768 Patch by Daniel Baston via + https://github.com/libgeos/libgeos/pull/61 git-svn-id: http://svn.osgeo.org/geos/trunk@4184 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-12 Sandro Santilli - * include/geos/geom/LineSegment.h: Fix 'Segemnt' typo. Patch by - Todd Trimble Closes - https://github.com/libgeos/libgeos/pull/63 git-svn-id: - http://svn.osgeo.org/geos/trunk@4183 + * include/geos/geom/LineSegment.h: Fix 'Segemnt' typo. Patch by Todd Trimble Closes https://github.com/libgeos/libgeos/pull/63 git-svn-id: http://svn.osgeo.org/geos/trunk@4183 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-12 Sandro Santilli * include/geos/geom/LineSegment.h: Match .h declaration parameter - name with .cpp definitiion. Patch by Todd Trimble - See - https://github.com/libgeos/libgeos/pull/63 git-svn-id: - http://svn.osgeo.org/geos/trunk@4182 + name with .cpp definitiion. Patch by Todd Trimble See https://github.com/libgeos/libgeos/pull/63 git-svn-id: http://svn.osgeo.org/geos/trunk@4182 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-06 Sandro Santilli - * .editorconfig: Stub an EditorConfig file See - http://editorconfig.org git-svn-id: - http://svn.osgeo.org/geos/trunk@4181 + * .editorconfig: Stub an EditorConfig file See http://editorconfig.org git-svn-id: http://svn.osgeo.org/geos/trunk@4181 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-04-05 Sandro Santilli - * nmake.opt: Handle nmake builds with the latest MSVC Patch by Jeff - McKenna Closes #775 git-svn-id: - http://svn.osgeo.org/geos/trunk@4180 + * nmake.opt: Handle nmake builds with the latest MSVC Patch by Jeff McKenna Closes #775 git-svn-id: http://svn.osgeo.org/geos/trunk@4180 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-12 Mateusz Loskot * tests/unit/geom/prep/PreparedGeometry/touchesTest.cpp: Add test - for PreparedGeometry::touches git-svn-id: - http://svn.osgeo.org/geos/trunk@4179 + for PreparedGeometry::touches git-svn-id: http://svn.osgeo.org/geos/trunk@4179 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-12 Mateusz Loskot - * tests/unit/geom/Geometry/touchesTest.cpp: Remove unused header - git-svn-id: http://svn.osgeo.org/geos/trunk@4178 + * tests/unit/geom/Geometry/touchesTest.cpp: Remove unused header git-svn-id: http://svn.osgeo.org/geos/trunk@4178 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-12 Mateusz Loskot * tests/unit/geom/Geometry/touchesTest.cpp: Add test for - Geometry::touches git-svn-id: http://svn.osgeo.org/geos/trunk@4177 + Geometry::touches git-svn-id: http://svn.osgeo.org/geos/trunk@4177 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-12 Mateusz Loskot - * tests/unit/geom/Geometry/coversTest.cpp: Revert r4175 (wrong file) - git-svn-id: http://svn.osgeo.org/geos/trunk@4176 + * tests/unit/geom/Geometry/coversTest.cpp: Revert r4175 (wrong file) git-svn-id: http://svn.osgeo.org/geos/trunk@4176 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-12 Mateusz Loskot * tests/unit/geom/Geometry/coversTest.cpp: Add test for - Geometry::touches git-svn-id: http://svn.osgeo.org/geos/trunk@4175 + Geometry::touches git-svn-id: http://svn.osgeo.org/geos/trunk@4175 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-07 Mateusz Loskot * tests/xmltester/CMakeLists.txt: Update CMakeLists.txt after - bugXXX.xml moved into tickets subfolder git-svn-id: - http://svn.osgeo.org/geos/trunk@4174 + bugXXX.xml moved into tickets subfolder git-svn-id: http://svn.osgeo.org/geos/trunk@4174 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-07 Sandro Santilli - * Makefile.am: Add "valgrindcheck" Makefile rule, currently fails - git-svn-id: http://svn.osgeo.org/geos/trunk@4173 + * Makefile.am: Add "valgrindcheck" Makefile rule, currently fails git-svn-id: http://svn.osgeo.org/geos/trunk@4173 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-07 Sandro Santilli * .travis.yml: Report build activity in #postgis-activity (not - #postgis) Also do not use notices git-svn-id: - http://svn.osgeo.org/geos/trunk@4170 + #postgis) Also do not use notices git-svn-id: http://svn.osgeo.org/geos/trunk@4170 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-07 Sandro Santilli - * configure.ac: Look for isnan in std:: namespace Tested with gcc - 4.8.4 git-svn-id: http://svn.osgeo.org/geos/trunk@4169 + * configure.ac: Look for isnan in std:: namespace Tested with gcc 4.8.4 git-svn-id: http://svn.osgeo.org/geos/trunk@4169 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-06 Mateusz Loskot * include/geos/geom/Coordinate.h, include/geos/geom/Geometry.h, src/geom/Coordinate.cpp, src/geom/Geometry.cpp: Rename class private - members according to _x naming convention. git-svn-id: - http://svn.osgeo.org/geos/trunk@4168 + members according to _x naming convention. git-svn-id: http://svn.osgeo.org/geos/trunk@4168 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-06 Mateusz Loskot @@ -4099,13 +9170,12 @@ * src/algorithm/Centroid.cpp, src/geomgraph/EdgeEndStar.cpp, src/operation/buffer/BufferBuilder.cpp: Clean up a bunch of MSVC++ 14.0 warning C4456: declaration of 'x' hides previous local - declaration git-svn-id: http://svn.osgeo.org/geos/trunk@4167 + declaration git-svn-id: http://svn.osgeo.org/geos/trunk@4167 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-06 Mateusz Loskot - * .travis.yml: Change Travis CI webhook notifications to 'always' - git-svn-id: http://svn.osgeo.org/geos/trunk@4166 + * .travis.yml: Change Travis CI webhook notifications to 'always' git-svn-id: http://svn.osgeo.org/geos/trunk@4166 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-06 Mateusz Loskot @@ -4113,75 +9183,67 @@ * src/operation/buffer/BufferBuilder.cpp, tests/unit/geom/GeometryFactoryTest.cpp: Clean up some compiler warnings on truncating conversions between size_t and double or - unsigned in git-svn-id: http://svn.osgeo.org/geos/trunk@4165 + unsigned in git-svn-id: http://svn.osgeo.org/geos/trunk@4165 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-06 Mateusz Loskot * .travis.yml: Clean up to address some issues reported by - lint.travis-ci.org. Enable mailing list notification. Add Gitter - notification. git-svn-id: http://svn.osgeo.org/geos/trunk@4164 + lint.travis-ci.org. Enable mailing list notification. Add Gitter + notification. git-svn-id: http://svn.osgeo.org/geos/trunk@4164 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-05 Mateusz Loskot * tests/unit/geom/GeometryComponentFilterTest.cpp, tests/unit/geom/GeometryFilterTest.cpp: Fix repeated test groups - definitions (introduced in r4162). git-svn-id: - http://svn.osgeo.org/geos/trunk@4163 + definitions (introduced in r4162). git-svn-id: http://svn.osgeo.org/geos/trunk@4163 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-05 Mateusz Loskot * tests/unit/geom/GeometryComponentFilterTest.cpp, tests/unit/geom/GeometryFilterTest.cpp: Add test for GeometryFilter - class. Add test for GeometryComponentFilter class. Both tests are - based on common filter with intention to compare behaviour both - GeometryFilter vs GeometryComponentFilter, with related discussion - at - http://lists.osgeo.org/pipermail/geos-devel/2016-March/007441.html - git-svn-id: http://svn.osgeo.org/geos/trunk@4162 + class. Add test for GeometryComponentFilter class. Both tests are based on common filter with intention to compare + behaviour both GeometryFilter vs GeometryComponentFilter, with + related discussion at + http://lists.osgeo.org/pipermail/geos-devel/2016-March/007441.html git-svn-id: http://svn.osgeo.org/geos/trunk@4162 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-02 Mateusz Loskot * tests/unit/operation/linemerge/LineMergerTest.cpp: Describe test - cases git-svn-id: http://svn.osgeo.org/geos/trunk@4161 + cases git-svn-id: http://svn.osgeo.org/geos/trunk@4161 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-02 Mateusz Loskot * tests/unit/operation/linemerge/LineMergerTest.cpp, tests/unit/operation/overlay/OverlayOpUnionTest.cpp: Test merging - MultiLineString result of union. Remove unnecessary FIXED precision - model from the triangle test in OverlayOpUnionTest.cpp. Add comment - to link corresponding tests in OverlayOpUnionTest.cpp and - LineMergerTest.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@4160 + MultiLineString result of union. Remove unnecessary FIXED precision model from the triangle test in + OverlayOpUnionTest.cpp. Add comment to link corresponding tests in + OverlayOpUnionTest.cpp and LineMergerTest.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@4160 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-01 Mateusz Loskot * tests/unit/operation/overlay/OverlayOpUnionTest.cpp: Add comment - explaining the expected test result Since the union operation makes - no effort to simplify and drop nodes of degree 2 from the built - topology, do not expect GEOS_LINESTRING. - https://lists.osgeo.org/pipermail/geos-devel/2016-March/007429.html - git-svn-id: http://svn.osgeo.org/geos/trunk@4159 + explaining the expected test result Since the union operation makes no effort to simplify and drop nodes + of degree 2 from the built topology, do not expect GEOS_LINESTRING. + https://lists.osgeo.org/pipermail/geos-devel/2016-March/007429.html git-svn-id: http://svn.osgeo.org/geos/trunk@4159 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-01 Mateusz Loskot * tests/unit/capi/GEOSContainsTest.cpp: Unify GEOSContains test cases added in r4156 with corresponding tests in - GEOSPreparedGeometryTest git-svn-id: - http://svn.osgeo.org/geos/trunk@4158 + GEOSPreparedGeometryTest git-svn-id: http://svn.osgeo.org/geos/trunk@4158 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-01 Mateusz Loskot * tests/unit/capi/GEOSContainsTest.cpp: Test check refinement - missing from r4156 git-svn-id: http://svn.osgeo.org/geos/trunk@4157 + missing from r4156 git-svn-id: http://svn.osgeo.org/geos/trunk@4157 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-03-01 Mateusz Loskot @@ -4189,30 +9251,24 @@ * tests/unit/capi/GEOSContainsTest.cpp, tests/unit/capi/GEOSPreparedGeometryTest.cpp: Add test for polygon containment where two polygons share some of vertices or vertices of - inner polygon lay on boundary of outer polygon. Tests also compare - results depending on used precision model. git-svn-id: - http://svn.osgeo.org/geos/trunk@4156 + inner polygon lay on boundary of outer polygon. Tests also compare results depending on used precision model. git-svn-id: http://svn.osgeo.org/geos/trunk@4156 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-29 Mateusz Loskot - * tests/unit/Makefile.am: Add OverlayOpUnionTest.cpp to Makefile.am - git-svn-id: http://svn.osgeo.org/geos/trunk@4155 + * tests/unit/Makefile.am: Add OverlayOpUnionTest.cpp to Makefile.am git-svn-id: http://svn.osgeo.org/geos/trunk@4155 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-29 Mateusz Loskot * tests/unit/operation/overlay/OverlayOpUnionTest.cpp: Add clean-up - missing from r4153. It should fix the failing build on Travis SI. - git-svn-id: http://svn.osgeo.org/geos/trunk@4154 + missing from r4153. It should fix the failing build on Travis SI. git-svn-id: http://svn.osgeo.org/geos/trunk@4154 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-29 Mateusz Loskot * tests/unit/operation/overlay/OverlayOpUnionTest.cpp: Add basic - test for geos::operation::OverlayOp with UNION. Test union of four - segments (linestrings) of a suqare. git-svn-id: - http://svn.osgeo.org/geos/trunk@4153 + test for geos::operation::OverlayOp with UNION. Test union of four segments (linestrings) of a suqare. git-svn-id: http://svn.osgeo.org/geos/trunk@4153 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-29 Mateusz Loskot @@ -4220,8 +9276,7 @@ * capi/geos_ts_c.cpp, src/operation/intersection/RectangleIntersectionBuilder.cpp, src/operation/overlay/PolygonBuilder.cpp: Fix build with - preprocessor symbol GEOS_DEBUG defined. git-svn-id: - http://svn.osgeo.org/geos/trunk@4152 + preprocessor symbol GEOS_DEBUG defined. git-svn-id: http://svn.osgeo.org/geos/trunk@4152 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-24 Sandro Santilli @@ -4229,44 +9284,37 @@ * include/geos/algorithm/PointLocator.h, src/algorithm/PointLocator.cpp, src/geom/prep/PreparedPoint.cpp, tests/unit/algorithm/PointLocatorTest.cpp: Fix incorrect return from - PreparedPoint::intersects Includes unit test Patch by Daniel - Baston via https://github.com/libgeos/libgeos/pull/60 See #764 - Reverts r4081 git-svn-id: http://svn.osgeo.org/geos/trunk@4149 + PreparedPoint::intersects Includes unit test Patch by Daniel Baston via + https://github.com/libgeos/libgeos/pull/60 See #764 Reverts r4081 git-svn-id: http://svn.osgeo.org/geos/trunk@4149 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-22 Sandro Santilli * src/algorithm/RobustDeterminant.cpp: ! FINITE already includes - NAN, duplicate test unneeded git-svn-id: - http://svn.osgeo.org/geos/trunk@4147 + NAN, duplicate test unneeded git-svn-id: http://svn.osgeo.org/geos/trunk@4147 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-17 Mateusz Loskot * tests/unit/capi/GEOSGeom_createCollection.cpp: #include - only if C++0x is available (refines r4145) git-svn-id: - http://svn.osgeo.org/geos/trunk@4146 + only if C++0x is available (refines r4145) git-svn-id: http://svn.osgeo.org/geos/trunk@4146 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-17 Mateusz Loskot * tests/unit/capi/GEOSGeom_createCollection.cpp: Enable test case - using std::array only if C++0x is available. git-svn-id: - http://svn.osgeo.org/geos/trunk@4145 + using std::array only if C++0x is available. git-svn-id: http://svn.osgeo.org/geos/trunk@4145 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-17 Mateusz Loskot * tests/unit/capi/GEOSGeom_createCollection.cpp: Add test for - GEOSGeom_createCollection function git-svn-id: - http://svn.osgeo.org/geos/trunk@4144 + GEOSGeom_createCollection function git-svn-id: http://svn.osgeo.org/geos/trunk@4144 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-02-05 Sandro Santilli - * src/io/StringTokenizer.cpp: Include in StringTokenizer - Patch by Jeff Mckenna See #766 git-svn-id: - http://svn.osgeo.org/geos/trunk@4142 + * src/io/StringTokenizer.cpp: Include in StringTokenizer Patch by Jeff Mckenna See #766 git-svn-id: http://svn.osgeo.org/geos/trunk@4142 5242fede-7e19-0410-aef8-94bd7d2200fb 2016-01-20 Paul Ramsey @@ -4279,71 +9327,63 @@ src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, src/operation/valid/ConsistentAreaTester.cpp, src/operation/valid/IsValidOp.cpp: #757, fix memory exhaustion case - in isvalid git-svn-id: http://svn.osgeo.org/geos/trunk@4141 + in isvalid git-svn-id: http://svn.osgeo.org/geos/trunk@4141 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-31 Sandro Santilli - * NEWS: Add missing 3.3.9 section git-svn-id: - http://svn.osgeo.org/geos/trunk@4138 + * NEWS: Add missing 3.3.9 section git-svn-id: http://svn.osgeo.org/geos/trunk@4138 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-18 Sandro Santilli * tests/xmltester/XMLTester.cpp: Add support for "relatestring" test - operation git-svn-id: http://svn.osgeo.org/geos/trunk@4136 + operation git-svn-id: http://svn.osgeo.org/geos/trunk@4136 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-17 Sandro Santilli - * CMakeLists.txt: Fix cmake build with Visual Studio 2015 Patch by - Stefan Hacker Closes - https://github.com/libgeos/libgeos/pull/49 git-svn-id: - http://svn.osgeo.org/geos/trunk@4135 + * CMakeLists.txt: Fix cmake build with Visual Studio 2015 Patch by Stefan Hacker Closes + https://github.com/libgeos/libgeos/pull/49 git-svn-id: http://svn.osgeo.org/geos/trunk@4135 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-14 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp, tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: Fix - snapping of last segment in a closed linestring See #758 - git-svn-id: http://svn.osgeo.org/geos/trunk@4129 + snapping of last segment in a closed linestring See #758 git-svn-id: http://svn.osgeo.org/geos/trunk@4129 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-14 Sandro Santilli * tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: - Enable a commented-out test (works) git-svn-id: - http://svn.osgeo.org/geos/trunk@4128 + Enable a commented-out test (works) git-svn-id: http://svn.osgeo.org/geos/trunk@4128 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-14 Sandro Santilli * tests/unit/io/WKBWriterTest.cpp: Tweak WKB output test to do - what's really said in the comments git-svn-id: - http://svn.osgeo.org/geos/trunk@4127 + what's really said in the comments git-svn-id: http://svn.osgeo.org/geos/trunk@4127 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-12-14 Sandro Santilli - * tests/unit/io/WKBReaderTest.cpp: Add test for parsing EWKB - git-svn-id: http://svn.osgeo.org/geos/trunk@4126 + * tests/unit/io/WKBReaderTest.cpp: Add test for parsing EWKB git-svn-id: http://svn.osgeo.org/geos/trunk@4126 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-30 Sandro Santilli * tests/unit/capi/GEOSMinimumWidthTest.cpp: Add another test for - GEOSMinimumWidth git-svn-id: http://svn.osgeo.org/geos/trunk@4125 + GEOSMinimumWidth git-svn-id: http://svn.osgeo.org/geos/trunk@4125 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-30 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, - tests/unit/capi/{GEOSMinimumDiameterTest.cpp => - GEOSMinimumWidthTest.cpp}: Rename GEOSMinimumDiameter to - GEOSMinimumWidth, add docs Patch by Nyall Dawson git-svn-id: - http://svn.osgeo.org/geos/trunk@4124 + tests/unit/capi/GEOSMinimumDiameterTest.cpp, + tests/unit/capi/GEOSMinimumWidthTest.cpp: Rename GEOSMinimumDiameter + to GEOSMinimumWidth, add docs Patch by Nyall Dawson git-svn-id: http://svn.osgeo.org/geos/trunk@4124 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-30 Sandro Santilli @@ -4354,46 +9394,38 @@ tests/unit/algorithm/MinimumDiameterTest.cpp, tests/unit/capi/GEOSMinimumDiameterTest.cpp, tests/unit/capi/GEOSMinimumRectangleTest.cpp: Port - MinimumDiameter::getMinimumRectangle algorithm from JTS Also add - GEOSMinimumRotatedRectangle and GEOSMinimumDiameter to C API, and - re-sync MinimumDiameter with JTS r966. Includes testcases. Fixes - #729. Patch by: Nyall Dawson - Signed-off-by: Sandro Santilli git-svn-id: - http://svn.osgeo.org/geos/trunk@4123 + MinimumDiameter::getMinimumRectangle algorithm from JTS Also add GEOSMinimumRotatedRectangle and GEOSMinimumDiameter to C + API, and re-sync MinimumDiameter with JTS r966. Includes testcases. Fixes #729. Patch by: Nyall Dawson Signed-off-by: + Sandro Santilli git-svn-id: http://svn.osgeo.org/geos/trunk@4123 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-30 Sandro Santilli * capi/geos_ts_c.cpp, include/geos/algorithm/SIRtreePointInRing.h, src/algorithm/SIRtreePointInRing.cpp: Fix some leaks identified by - Coverity Patch by Nyall Dawson - git-svn-id: http://svn.osgeo.org/geos/trunk@4122 + Coverity Patch by Nyall Dawson git-svn-id: http://svn.osgeo.org/geos/trunk@4122 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-30 Sandro Santilli * include/geos/triangulate/quadedge/Vertex.h, src/triangulate/quadedge/Vertex.cpp: Fix incorrect logic in - Vertex::classify, sync to r705 Patch by Nyall Dawson - git-svn-id: - http://svn.osgeo.org/geos/trunk@4121 + Vertex::classify, sync to r705 Patch by Nyall Dawson git-svn-id: http://svn.osgeo.org/geos/trunk@4121 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-21 Sandro Santilli * include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, src/triangulate/quadedge/QuadEdgeSubdivision.cpp: use std::vector - instead of std::list to avoid size() bottleneck Patch by Daniel - Baston via https://github.com/libgeos/libgeos/pull/55 git-svn-id: - http://svn.osgeo.org/geos/trunk@4119 + instead of std::list to avoid size() bottleneck Patch by Daniel Baston via + https://github.com/libgeos/libgeos/pull/55 git-svn-id: http://svn.osgeo.org/geos/trunk@4119 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-16 Sandro Santilli * include/geos/geomgraph/EdgeEnd.h, include/geos/geomgraph/EdgeEndStar.h, src/geomgraph/EdgeEnd.cpp, - src/geomgraph/EdgeEndStar.cpp: Fix output operator for EdgeEndStar - git-svn-id: http://svn.osgeo.org/geos/trunk@4118 + src/geomgraph/EdgeEndStar.cpp: Fix output operator for EdgeEndStar git-svn-id: http://svn.osgeo.org/geos/trunk@4118 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-13 Sandro Santilli @@ -4401,34 +9433,32 @@ * include/geos/geomgraph/EdgeEndStar.h, src/geomgraph/EdgeEndStar.cpp, src/operation/relate/RelateComputer.cpp: Add output operator for - EdgeEndStar git-svn-id: http://svn.osgeo.org/geos/trunk@4117 + EdgeEndStar git-svn-id: http://svn.osgeo.org/geos/trunk@4117 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-04 Mateusz Loskot - * include/geos/platform.h.cmake: Add #define NOMINMAX for Visual C++ - git-svn-id: http://svn.osgeo.org/geos/trunk@4114 + * include/geos/platform.h.cmake: Add #define NOMINMAX for Visual C++ git-svn-id: http://svn.osgeo.org/geos/trunk@4114 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-03 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSEqualsTest.cpp: Add - test for GEOSEquals Includes disabled test for #752 git-svn-id: - http://svn.osgeo.org/geos/trunk@4113 + test for GEOSEquals Includes disabled test for #752 git-svn-id: http://svn.osgeo.org/geos/trunk@4113 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-11-02 Mateusz Loskot * CMakeLists.txt: CMake should not try to generate - geos_svn_revision.h if GEOS is built from packaged sources. Fixes - #753 git-svn-id: http://svn.osgeo.org/geos/trunk@4112 + geos_svn_revision.h if GEOS is built from packaged sources. Fixes + #753 git-svn-id: http://svn.osgeo.org/geos/trunk@4112 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-31 Sandro Santilli * include/geos/geom/GeometryFactory.h, src/geom/Geometry.cpp, src/geom/GeometryFactory.cpp: Make GeometryFactory refcount - geometry-agnostic git-svn-id: http://svn.osgeo.org/geos/trunk@4111 + geometry-agnostic git-svn-id: http://svn.osgeo.org/geos/trunk@4111 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-13 Sandro Santilli @@ -4436,47 +9466,41 @@ * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, php/geos.c, php/test/test.php, src/geom/util/GeometryEditor.cpp, tests/unit/capi/GEOSGeom_setPrecisionTest.cpp: Add a - GEOSGeom_setPrecision funciton in C-API and PHP Also fixes a bug in - GeometryEditor that failed to update GeometryFactory for empty - polygons (#749) git-svn-id: http://svn.osgeo.org/geos/trunk@4109 + GEOSGeom_setPrecision funciton in C-API and PHP Also fixes a bug in GeometryEditor that failed to update + GeometryFactory for empty polygons (#749) git-svn-id: http://svn.osgeo.org/geos/trunk@4109 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-07 Sandro Santilli * CMakeLists.txt, capi/geos_c.h.in, configure.ac: Fix CAPI - versioning (broke in r4085, after release) git-svn-id: - http://svn.osgeo.org/geos/trunk@4108 + versioning (broke in r4085, after release) git-svn-id: http://svn.osgeo.org/geos/trunk@4108 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-05 Mateusz Loskot * src/geomgraph/PlanarGraph.cpp: Use std::auto_ptr to simplify r4100 - fix of a memory leak potential git-svn-id: - http://svn.osgeo.org/geos/trunk@4104 + fix of a memory leak potential git-svn-id: http://svn.osgeo.org/geos/trunk@4104 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-04 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp: Fix a few potential (one - confirmed) leak in single sided buffer See #747 git-svn-id: - http://svn.osgeo.org/geos/trunk@4103 + confirmed) leak in single sided buffer See #747 git-svn-id: http://svn.osgeo.org/geos/trunk@4103 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-04 Mateusz Loskot * src/geomgraph/PlanarGraph.cpp: Make adding edges a bit more exception safe and helps to avoid memory leaks when - PlanarGraph::add(de1) throws, leaving de2 behind. This also fixes + PlanarGraph::add(de1) throws, leaving de2 behind. This also fixes memory leak in case of self-union with NaN coordinates, revealed by - GEOSUnaryUnionTest/test<9>. git-svn-id: - http://svn.osgeo.org/geos/trunk@4100 + GEOSUnaryUnionTest/test<9>. git-svn-id: http://svn.osgeo.org/geos/trunk@4100 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot * tests/unit/triangulate/DelaunayTest.cpp: Fix memory leaks (two) - due to misuse of CoordinateArraySequence git-svn-id: - http://svn.osgeo.org/geos/trunk@4099 + due to misuse of CoordinateArraySequence git-svn-id: http://svn.osgeo.org/geos/trunk@4099 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot @@ -4492,50 +9516,36 @@ src/operation/overlay/validate/OverlayResultValidator.cpp: Clean up Windows-specific extra parenthesis around std::min/std::max which worked around min/max macros causing syntax error. The workaround is - no loner necessary since NOMINMAX placement has been corrected. - git-svn-id: http://svn.osgeo.org/geos/trunk@4098 + no loner necessary since NOMINMAX placement has been corrected. git-svn-id: http://svn.osgeo.org/geos/trunk@4098 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot * CMakeLists.txt, include/geos/timeval.h: Move Windows-specific - NOMINMAX preprocessor definition from CMake to timeval.h. Assume + NOMINMAX preprocessor definition from CMake to timeval.h. Assume timeval.h is the only place where Windows-specific headers are included. git-svn-id: http://svn.osgeo.org/geos/trunk@4097 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot - * CMakeLists.txt: Clean up CMake variables mismatch git-svn-id: - http://svn.osgeo.org/geos/trunk@4096 + * CMakeLists.txt: Clean up CMake variables mismatch git-svn-id: http://svn.osgeo.org/geos/trunk@4096 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot - * CMakeLists.txt: Tell CMake to use GEOS instead geos. git-svn-id: - http://svn.osgeo.org/geos/trunk@4095 + * CMakeLists.txt: Tell CMake to use GEOS instead geos. git-svn-id: http://svn.osgeo.org/geos/trunk@4095 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot * CMakeLists.txt: Remove CDash configuration which generates - unnecessary targets (Experimental, Nightly, Continuous) git-svn-id: - http://svn.osgeo.org/geos/trunk@4094 + unnecessary targets (Experimental, Nightly, Continuous) git-svn-id: http://svn.osgeo.org/geos/trunk@4094 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-03 Mateusz Loskot - * : Ignore .obj and some other patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@4093 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2015-10-02 Sandro Santilli - - * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - php/geos.c, php/test/test.php, tests/unit/Makefile.am, - tests/unit/capi/GEOSGeom_setPrecisionTest.cpp: Add - GEOSGeom_setPrecision function to C-API (#713) Include unit tests - and PHP bindings git-svn-id: http://svn.osgeo.org/geos/trunk@4092 + * : Ignore .obj and some other patterns git-svn-id: http://svn.osgeo.org/geos/trunk@4093 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-02 Sandro Santilli @@ -4601,112 +9611,93 @@ tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Prevent stack allocation of - GeometryFactory Geometry factory objects can be created by static - methods returning a smart pointer with automatic ownership transfer - semantic. The so-created GeometryFactory will be kept alive as long - as Geometry objects referencing it will be alive. git-svn-id: - http://svn.osgeo.org/geos/trunk@4091 + GeometryFactory Geometry factory objects can be created by static methods returning + a smart pointer with automatic ownership transfer semantic. The + so-created GeometryFactory will be kept alive as long as Geometry + objects referencing it will be alive. git-svn-id: http://svn.osgeo.org/geos/trunk@4091 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-10-01 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp: Fix a memory leak in - bufferLineSingleSided The leak was exposed by an existing unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@4090 + bufferLineSingleSided The leak was exposed by an existing unit test git-svn-id: http://svn.osgeo.org/geos/trunk@4090 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-09-10 Sandro Santilli - * .travis.yml: 64bit builds do not fail anymore on travis - git-svn-id: http://svn.osgeo.org/geos/trunk@4089 + * .travis.yml: 64bit builds do not fail anymore on travis git-svn-id: http://svn.osgeo.org/geos/trunk@4089 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-16 Paul Ramsey * CMakeLists.txt, HOWTO_RELEASE, NEWS, capi/geos_c.h.in, - configure.ac, include/geos/version.h.vc: Bump trunk versions to 3.6 - git-svn-id: http://svn.osgeo.org/geos/trunk@4085 + configure.ac, include/geos/version.h.vc: Bump trunk versions to 3.6 git-svn-id: http://svn.osgeo.org/geos/trunk@4085 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-14 Paul Ramsey - * : Ignore build artefacts git-svn-id: - http://svn.osgeo.org/geos/trunk@4082 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2015-08-12 Paul Ramsey - - * src/geom/prep/PreparedPoint.cpp: Fix corner case of comparing - preparedpoint to point git-svn-id: - http://svn.osgeo.org/geos/trunk@4081 + * : Ignore build artefacts git-svn-id: http://svn.osgeo.org/geos/trunk@4082 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-12 Paul Ramsey - * src/algorithm/ConvexHull.cpp: Include interrupt header, dummy - git-svn-id: http://svn.osgeo.org/geos/trunk@4080 + * src/algorithm/ConvexHull.cpp: Include interrupt header, dummy git-svn-id: http://svn.osgeo.org/geos/trunk@4080 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-12 Paul Ramsey * src/algorithm/ConvexHull.cpp: Add some interrupt checks to - ConvexHull git-svn-id: http://svn.osgeo.org/geos/trunk@4079 + ConvexHull git-svn-id: http://svn.osgeo.org/geos/trunk@4079 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-12 Paul Ramsey * include/geos/geom/prep/PreparedPoint.h, src/geom/prep/PreparedPoint.cpp: Quiet clang warning and match const - signatures on PreparedPolygon git-svn-id: - http://svn.osgeo.org/geos/trunk@4078 + signatures on PreparedPolygon git-svn-id: http://svn.osgeo.org/geos/trunk@4078 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-12 Paul Ramsey * configure.ac: Quiet 64-bit errors in OSX build by preferring - longlongint defn of 64bit to longint git-svn-id: - http://svn.osgeo.org/geos/trunk@4077 + longlongint defn of 64bit to longint git-svn-id: http://svn.osgeo.org/geos/trunk@4077 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-12 Regina Obe * src/inlines.cpp: #736 3.5.0-dev compilation errors on MinGW - okay committed too fast. This one works but may screw up real mingw - people git-svn-id: http://svn.osgeo.org/geos/trunk@4076 + people git-svn-id: http://svn.osgeo.org/geos/trunk@4076 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-11 Regina Obe - * src/inlines.cpp: #736 3.5.0-dev compilation errors on MinGW - git-svn-id: http://svn.osgeo.org/geos/trunk@4075 + * src/inlines.cpp: #736 3.5.0-dev compilation errors on MinGW git-svn-id: http://svn.osgeo.org/geos/trunk@4075 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-06 Mateusz Loskot - * .travis.yml: Allow failure for CMake x64 build on Travis CI. This - should eliminate unimportant signal and keep the core GEOS builds - green. git-svn-id: http://svn.osgeo.org/geos/trunk@4072 + * .travis.yml: Allow failure for CMake x64 build on Travis CI. This should eliminate unimportant signal and keep the core GEOS + builds green. git-svn-id: http://svn.osgeo.org/geos/trunk@4072 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-05 Mateusz Loskot * tools/ci/before_install.sh, tools/ci/before_install_autotools.sh, tools/ci/before_install_cmake.sh: Delete scripts no longer used in - container-based Travis CI git-svn-id: - http://svn.osgeo.org/geos/trunk@4069 + container-based Travis CI git-svn-id: http://svn.osgeo.org/geos/trunk@4069 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-05 Mateusz Loskot * .travis.yml: First stab at migrating travis builds to container - architecture (#739) git-svn-id: - http://svn.osgeo.org/geos/trunk@4068 + architecture (#739) git-svn-id: http://svn.osgeo.org/geos/trunk@4068 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-08-04 Sandro Santilli * NEWS, php/geos.c, php/test/test.php: Expose clipByRect to PHP - bindings (#734) git-svn-id: http://svn.osgeo.org/geos/trunk@4067 + bindings (#734) git-svn-id: http://svn.osgeo.org/geos/trunk@4067 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-28 Mateusz Loskot @@ -4714,42 +9705,38 @@ * src/algorithm/LineIntersector.cpp, src/io/WKTWriter.cpp, src/operation/buffer/BufferOp.cpp, src/operation/buffer/OffsetCurveSetBuilder.cpp: Include - which defines NOMINMAX on Windows/VC++. Closes + which defines NOMINMAX on Windows/VC++. Closes ticket #701. git-svn-id: http://svn.osgeo.org/geos/trunk@4064 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-28 Mateusz Loskot * src/Makefile.vc, src/dirlist.mk: Add operation/intersection/*.cpp - to NMAKE makefiles git-svn-id: http://svn.osgeo.org/geos/trunk@4063 + to NMAKE makefiles git-svn-id: http://svn.osgeo.org/geos/trunk@4063 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-28 Mateusz Loskot - * nmake.opt: Add NMAKE version from released Visual Studio 2015 - git-svn-id: http://svn.osgeo.org/geos/trunk@4062 + * nmake.opt: Add NMAKE version from released Visual Studio 2015 git-svn-id: http://svn.osgeo.org/geos/trunk@4062 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-20 Sandro Santilli * capi/geos_ts_c.cpp: Initialize all members of GEOSContextHandle_HS - on construction git-svn-id: http://svn.osgeo.org/geos/trunk@4061 + on construction git-svn-id: http://svn.osgeo.org/geos/trunk@4061 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-20 Sandro Santilli * NEWS, capi/geos_c.h.in, capi/geos_ts_c.cpp: Extend error and - notice notification with threadsafe variants (#663) Patch by Pepijn - Van Eeckhoudt Tested by Alessandro Furieri - Signed-off-by: Sandro Santilli - git-svn-id: http://svn.osgeo.org/geos/trunk@4060 + notice notification with threadsafe variants (#663) Patch by Pepijn Van Eeckhoudt Tested by + Alessandro Furieri Signed-off-by: Sandro Santilli git-svn-id: http://svn.osgeo.org/geos/trunk@4060 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-19 Sandro Santilli * src/operation/intersection/RectangleIntersectionBuilder.cpp: Add - missing include (thanks Alessandro Furieri) git-svn-id: - http://svn.osgeo.org/geos/trunk@4059 + missing include (thanks Alessandro Furieri) git-svn-id: http://svn.osgeo.org/geos/trunk@4059 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-07-07 Mateusz Loskot @@ -4761,20 +9748,18 @@ 2015-05-18 Mateusz Loskot * nmake.opt: Merged revision(s) 4056 from branches/3.4: Fixed build - configuration for NMAKE with Visual Leak Detector enabled (#715) - git-svn-id: http://svn.osgeo.org/geos/trunk@4057 + configuration for NMAKE with Visual Leak Detector enabled (#715) git-svn-id: http://svn.osgeo.org/geos/trunk@4057 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-30 Mateusz Loskot - * nmake.opt: Add NMAKE version from Visual Studio 2015 RC - git-svn-id: http://svn.osgeo.org/geos/trunk@4054 + * nmake.opt: Add NMAKE version from Visual Studio 2015 RC git-svn-id: http://svn.osgeo.org/geos/trunk@4054 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-20 Sandro Santilli * tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Fix unused - variables warnings git-svn-id: http://svn.osgeo.org/geos/trunk@4053 + variables warnings git-svn-id: http://svn.osgeo.org/geos/trunk@4053 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-20 Sandro Santilli @@ -4788,58 +9773,49 @@ src/operation/linemerge/EdgeString.cpp, src/operation/polygonize/EdgeRing.cpp, tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp: Cleanup - CoordinateSequenceFactory interface Adds method for creating empty - sequence. Syncronizes CoordinateArraySequenceFactory methods. Patch - by Sandro Mani, see https://github.com/libgeos/libgeos/pull/46 - git-svn-id: http://svn.osgeo.org/geos/trunk@4052 + CoordinateSequenceFactory interface Adds method for creating empty sequence. Syncronizes + CoordinateArraySequenceFactory methods. Patch by Sandro Mani, see https://github.com/libgeos/libgeos/pull/46 git-svn-id: http://svn.osgeo.org/geos/trunk@4052 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-16 Mateusz Loskot * tests/unit/capi/GEOSPreparedGeometryTest.cpp: Replace geos.h with - specific headers from C++ API. Replace WKBReader with - GEOSGeomFromHEX_buf where the former is unnecessary. This addresses - Sandro's review comment from + specific headers from C++ API. Replace WKBReader with + GEOSGeomFromHEX_buf where the former is unnecessary. This addresses Sandro's review comment from - https://github.com/libgeos/libgeos/commit/7196b9a2e5a3ebc393a1810f6c7d841a00b50844#commitcomment-10731724 git-svn-id: http://svn.osgeo.org/geos/trunk@4051 5242fede-7e19-0410-aef8-94bd7d2200fb + https://github.com/libgeos/libgeos/commit/7196b9a2e5a3ebc393a1810f6c7d841a00b50844#commitcomment-10731724git-svn-id: http://svn.osgeo.org/geos/trunk@4051 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-10 Sandro Santilli - * tests/unit/Makefile.am: Enable GEOSisClosed test git-svn-id: - http://svn.osgeo.org/geos/trunk@4050 + * tests/unit/Makefile.am: Enable GEOSisClosed test git-svn-id: http://svn.osgeo.org/geos/trunk@4050 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-04-10 Sandro Santilli * NEWS, capi/geos_ts_c.cpp, tests/unit/capi/GEOSisClosedTest.cpp: - Support for MultiLineString->isClosed() in C API Includes tests for - GEOSisClosed() in C API Patch by Benjamin Morel - git-svn-id: - http://svn.osgeo.org/geos/trunk@4049 + Support for MultiLineString->isClosed() in C API Includes tests for GEOSisClosed() in C API Patch by Benjamin Morel git-svn-id: http://svn.osgeo.org/geos/trunk@4049 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-03-02 Sandro Santilli * src/operation/overlay/OverlayOp.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSIntersectionTest.cpp: Fix memory leak in - extent-limited overlay operations The leak was introduced by recent - enhancement of the class to support extent-limited operation. It was - spotted by Mick Orridge who also provided the testcase, thanks ! - Fixes #719 git-svn-id: http://svn.osgeo.org/geos/trunk@4048 + extent-limited overlay operations The leak was introduced by recent enhancement of the class to + support extent-limited operation. It was spotted by Mick Orridge who + also provided the testcase, thanks ! Fixes #719 git-svn-id: http://svn.osgeo.org/geos/trunk@4048 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-02-03 Sandro Santilli - * README.md: Add github-friendly README.md file contains travis - build status and reference to actual README git-svn-id: - http://svn.osgeo.org/geos/trunk@4047 + * README.md: Add github-friendly README.md file contains travis build status and reference to actual README git-svn-id: http://svn.osgeo.org/geos/trunk@4047 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-01-23 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug569.xml: Add (succeeding) test for - reported bug #569 git-svn-id: http://svn.osgeo.org/geos/trunk@4046 + reported bug #569 git-svn-id: http://svn.osgeo.org/geos/trunk@4046 5242fede-7e19-0410-aef8-94bd7d2200fb 2015-01-19 Sandro Santilli @@ -4848,25 +9824,21 @@ src/algorithm/CGAlgorithms.cpp, src/algorithm/RayCrossingCounter.cpp, tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug716.xml: Improve robustness of - intersection testing (#716) RayCrossingCounter uses - orientationIndex to handle floating point precision errors the same - way as LineIntersector. Includes testcase for ticket #716 with CW - and CCW polygons Patch by Asmund Tokheim - git-svn-id: http://svn.osgeo.org/geos/trunk@4040 + intersection testing (#716) RayCrossingCounter uses orientationIndex to handle floating point + precision errors the same way as LineIntersector. Includes testcase for ticket #716 with CW and CCW polygons Patch by Asmund Tokheim git-svn-id: http://svn.osgeo.org/geos/trunk@4040 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-12-05 Mateusz Loskot * tests/unit/algorithm/RobustLineIntersectorTest.cpp, tests/unit/capi/GEOSPreparedGeometryTest.cpp: Add two test cases, - point-on-segment and point-on-vertex. Curious detail of the tests - is that points of interest have nearly exact X of tested points, the - values differ after 14th decimal place. The tests provided test - geometries for intersection with and without coordinates trimming - after the 14th place (as per Martin Davis suggestion). It has been - extensively discussed in Ticket #591 and - https://github.com/libgeos/libgeos/pull/40 with Martin Davis' input. - git-svn-id: http://svn.osgeo.org/geos/trunk@4038 + point-on-segment and point-on-vertex. Curious detail of the tests is that points of interest have nearly + exact X of tested points, the values differ after 14th decimal + place. The tests provided test geometries for intersection with and + without coordinates trimming after the 14th place (as per Martin + Davis suggestion). It has been extensively discussed in Ticket #591 + and https://github.com/libgeos/libgeos/pull/40 with Martin Davis' + input. git-svn-id: http://svn.osgeo.org/geos/trunk@4038 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-26 Mateusz Loskot @@ -4875,101 +9847,85 @@ Paul Kohut for the patch submitted as part of https://github.com/libgeos/libgeos/pull/31/) Apparently, it solves the long running INF/NAN parsing issues on Windows and enables - GEOSisValidDetail test pass again. It should also solve problems - reported as part of ticket #509. git-svn-id: - http://svn.osgeo.org/geos/trunk@4037 + GEOSisValidDetail test pass again. It should also solve problems + reported as part of ticket #509. git-svn-id: http://svn.osgeo.org/geos/trunk@4037 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-26 Mateusz Loskot * CMakeLists.txt, cmake/modules/GenerateSourceGroups.cmake, include/CMakeLists.txt, src/CMakeLists.txt, tests/CMakeLists.txt, - tests/unit/CMakeLists.txt: Add GenerateSourceGroups macro. Attempt - to generate source_group for IDEs reflecting folders structure. No - functional changes to build configuration included. git-svn-id: - http://svn.osgeo.org/geos/trunk@4036 + tests/unit/CMakeLists.txt: Add GenerateSourceGroups macro. Attempt + to generate source_group for IDEs reflecting folders structure. No + functional changes to build configuration included. git-svn-id: http://svn.osgeo.org/geos/trunk@4036 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-12 Sandro Santilli * tools/svn_repo_revision.sh: Fix revision extracter for calls from - external build dir git-svn-id: http://svn.osgeo.org/geos/trunk@4035 + external build dir git-svn-id: http://svn.osgeo.org/geos/trunk@4035 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-12 Sandro Santilli * tests/xmltester/XMLTester.cpp: Add interruptability support to - XMLTester (trigger with SIGTERM) git-svn-id: - http://svn.osgeo.org/geos/trunk@4034 + XMLTester (trigger with SIGTERM) git-svn-id: http://svn.osgeo.org/geos/trunk@4034 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-12 Sandro Santilli - * .gitignore: Ignore more generated files git-svn-id: - http://svn.osgeo.org/geos/trunk@4033 + * .gitignore: Ignore more generated files git-svn-id: http://svn.osgeo.org/geos/trunk@4033 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-11 Sandro Santilli * src/geomgraph/GeometryGraph.cpp, src/geomgraph/PlanarGraph.cpp, src/operation/relate/RelateComputer.cpp: Further enhance RelateOp - interruptibility (#711) Adds interruptibility calls in - GeometryGraph and RelateComputer Funded by CartoDB git-svn-id: - http://svn.osgeo.org/geos/trunk@4031 + interruptibility (#711) Adds interruptibility calls in GeometryGraph and RelateComputer Funded by CartoDB git-svn-id: http://svn.osgeo.org/geos/trunk@4031 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-10 Sandro Santilli * src/geomgraph/index/SimpleMCSweepLineIntersector.cpp: Make - RelateComputer interruptible (#711) Injects interruptibility calls - in SimpleMCSweepLineIntersector Funded by CartoDB git-svn-id: - http://svn.osgeo.org/geos/trunk@4030 + RelateComputer interruptible (#711) Injects interruptibility calls in SimpleMCSweepLineIntersector Funded by CartoDB git-svn-id: http://svn.osgeo.org/geos/trunk@4030 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-11-04 Sandro Santilli * php/geos.c, php/test/test.php: Fix build of PHP bindings with PHP - < 5.3.99 (#709) Tested with php 5.3.2 Thanks KayMadejski for the - report git-svn-id: http://svn.osgeo.org/geos/trunk@4027 + < 5.3.99 (#709) Tested with php 5.3.2 Thanks KayMadejski for the report git-svn-id: http://svn.osgeo.org/geos/trunk@4027 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli * tests/unit/operation/intersection/RectangleIntersectionTest.cpp: - Reduce max number of tests to 255, in case it makes clang happier - See https://travis-ci.org/libgeos/libgeos/jobs/36269669 git-svn-id: - http://svn.osgeo.org/geos/trunk@4026 + Reduce max number of tests to 255, in case it makes clang happier See https://travis-ci.org/libgeos/libgeos/jobs/36269669 git-svn-id: http://svn.osgeo.org/geos/trunk@4026 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli * src/operation/intersection/RectangleIntersection.cpp, tests/unit/operation/intersection/RectangleIntersectionTest.cpp: Fix - another boundary bug in RectangleIntersection git-svn-id: - http://svn.osgeo.org/geos/trunk@4025 + another boundary bug in RectangleIntersection git-svn-id: http://svn.osgeo.org/geos/trunk@4025 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli * src/operation/intersection/RectangleIntersection.cpp: Fix bug in - RectangleIntersection on finding rect fully contained git-svn-id: - http://svn.osgeo.org/geos/trunk@4024 + RectangleIntersection on finding rect fully contained git-svn-id: http://svn.osgeo.org/geos/trunk@4024 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli * src/operation/intersection/RectangleIntersection.cpp: Fix bug in - RectangleIntersection (was cought by testsuite too!) git-svn-id: - http://svn.osgeo.org/geos/trunk@4023 + RectangleIntersection (was cought by testsuite too!) git-svn-id: http://svn.osgeo.org/geos/trunk@4023 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli * src/geomgraph/GeometryGraph.cpp, src/operation/overlay/OverlayOp.cpp: Remove debugging lines, reduce - cost of envelope filter ... when the filter envelope fully convers - the geometry envelope git-svn-id: - http://svn.osgeo.org/geos/trunk@4022 + cost of envelope filter ... when the filter envelope fully convers the geometry envelope git-svn-id: http://svn.osgeo.org/geos/trunk@4022 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-25 Sandro Santilli @@ -4987,28 +9943,22 @@ src/operation/intersection/RectangleIntersectionBuilder.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSClipByRectTest.cpp, tests/unit/operation/intersection/RectangleIntersectionTest.cpp: Add - optimized RectangleIntersection functionality Includes: C++ API, - with tests C-API GEOSClipByRect, with tests Initial C++ code - provided by Mika Heiskanen. Modified by me to work with arbitrarily - ordered polygon ring vertices. See #699 for background git-svn-id: - http://svn.osgeo.org/geos/trunk@4021 + optimized RectangleIntersection functionality Includes: C++ API, with tests C-API GEOSClipByRect, with tests Initial C++ code provided by Mika Heiskanen. Modified by me to work + with arbitrarily ordered polygon ring vertices. See #699 for background git-svn-id: http://svn.osgeo.org/geos/trunk@4021 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-24 Sandro Santilli - * php/geos.c: Fixed compilation against thread-safe PHP (ZTS) - Closes #541 Patch-by: Benjamin Morel - Signed-off-by: Sandro Santilli git-svn-id: - http://svn.osgeo.org/geos/trunk@4019 + * php/geos.c: Fixed compilation against thread-safe PHP (ZTS) Closes #541 Patch-by: Benjamin Morel + Signed-off-by: Sandro Santilli git-svn-id: http://svn.osgeo.org/geos/trunk@4019 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-23 Sandro Santilli * include/geos/operation/overlay/OverlayOp.h, src/operation/overlay/OverlayOp.cpp: Further speedup - difference/intersection at the validating phase This avoids to - insert to the output graph edges which do not intersect the target - envelope. git-svn-id: http://svn.osgeo.org/geos/trunk@4018 + difference/intersection at the validating phase This avoids to insert to the output graph edges which do not + intersect the target envelope. git-svn-id: http://svn.osgeo.org/geos/trunk@4018 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-23 Sandro Santilli @@ -5018,118 +9968,100 @@ include/geos/operation/overlay/OverlayOp.h, src/geomgraph/GeometryGraph.cpp, src/operation/overlay/OverlayOp.cpp: OverlayOp: restrict - intersection computations to the target extent Speeds up - INTERSECTION and DIFFERENCE operations between geometries with small - bounding box overlap. git-svn-id: - http://svn.osgeo.org/geos/trunk@4017 + intersection computations to the target extent Speeds up INTERSECTION and DIFFERENCE operations between geometries + with small bounding box overlap. git-svn-id: http://svn.osgeo.org/geos/trunk@4017 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-22 Sandro Santilli - * php/test/test.php: Refactored PHP bindings tests Patch by - Benjamin Morel git-svn-id: - http://svn.osgeo.org/geos/trunk@4016 + * php/test/test.php: Refactored PHP bindings tests Patch by Benjamin Morel git-svn-id: http://svn.osgeo.org/geos/trunk@4016 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-22 Sandro Santilli * NEWS, php/geos.c, php/test/test.php: Add WKBReader::read() & - WKBWriter::write() PHP bindings Includes tests. Patch by Benjamin - Morel Signed-off-by: Sandro Santilli - git-svn-id: http://svn.osgeo.org/geos/trunk@4015 + WKBWriter::write() PHP bindings Includes tests. Patch by Benjamin Morel Signed-off-by: Sandro Santilli git-svn-id: http://svn.osgeo.org/geos/trunk@4015 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-19 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Report - time it took to run each test git-svn-id: - http://svn.osgeo.org/geos/trunk@4014 + time it took to run each test git-svn-id: http://svn.osgeo.org/geos/trunk@4014 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-19 Sandro Santilli * php/test/test.php: Normalize voronoi diagram results for comparing - to expected output git-svn-id: http://svn.osgeo.org/geos/trunk@4013 + to expected output git-svn-id: http://svn.osgeo.org/geos/trunk@4013 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-19 Sandro Santilli * src/operation/overlay/Makefile.am, src/planargraph/Makefile.am, tests/unit/Makefile.am, tests/xmltester/Makefile.am: Add - AUTOMAKE_OPTIONS = subdir-objects, to please automake 1.14.1 - git-svn-id: http://svn.osgeo.org/geos/trunk@4012 + AUTOMAKE_OPTIONS = subdir-objects, to please automake 1.14.1 git-svn-id: http://svn.osgeo.org/geos/trunk@4012 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-17 Sandro Santilli * php/test/test.php: Accept differently-structured but point-set - equivalent intersection result git-svn-id: - http://svn.osgeo.org/geos/trunk@4011 + equivalent intersection result git-svn-id: http://svn.osgeo.org/geos/trunk@4011 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-17 Sandro Santilli * tests/xmltester/tests/testLeaksBig.xml: Remove more duplicated - tests Tests were found in TestFunctionAA.xml, TestFunctionLA.xml + tests Tests were found in TestFunctionAA.xml, TestFunctionLA.xml TestFunctionPA.xml TestFunctionPL.xml TestFunctionPP.xml - TestFunctionLLPrec.xml, TestRelatePP.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@4010 + TestFunctionLLPrec.xml, TestRelatePP.xml git-svn-id: http://svn.osgeo.org/geos/trunk@4010 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-16 Sandro Santilli - * tests/xmltester/tests/testLeaksBig.xml: Remove duplicated tests - The removed tests are already present in other xml files under - general/ There's more to drop here too... git-svn-id: - http://svn.osgeo.org/geos/trunk@4009 + * tests/xmltester/tests/testLeaksBig.xml: Remove duplicated tests The removed tests are already present in other xml files under + general/ There's more to drop here too... git-svn-id: http://svn.osgeo.org/geos/trunk@4009 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-16 Sandro Santilli * tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Add some tolerance to - VoronoiDiagram tester git-svn-id: - http://svn.osgeo.org/geos/trunk@4008 + VoronoiDiagram tester git-svn-id: http://svn.osgeo.org/geos/trunk@4008 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-16 Sandro Santilli * src/triangulate/quadedge/QuadEdgeSubdivision.cpp, tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Do not - output duplicated vertices from QuadEdgeSubdivision class (#705) - Includes testcase git-svn-id: http://svn.osgeo.org/geos/trunk@4007 + output duplicated vertices from QuadEdgeSubdivision class (#705) Includes testcase git-svn-id: http://svn.osgeo.org/geos/trunk@4007 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-16 Sandro Santilli * tests/unit/Makefile.am, tests/unit/geom/Geometry/normalize.cpp: - Add tests for Geometry->normalize() git-svn-id: - http://svn.osgeo.org/geos/trunk@4006 + Add tests for Geometry->normalize() git-svn-id: http://svn.osgeo.org/geos/trunk@4006 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-16 Sandro Santilli * tests/unit/triangulate/VoronoiTest.cpp: Have VoronoiTest print - expected/obtained on failure git-svn-id: - http://svn.osgeo.org/geos/trunk@4005 + expected/obtained on failure git-svn-id: http://svn.osgeo.org/geos/trunk@4005 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-15 Sandro Santilli * NEWS, php/geos.c, php/test/test.php: Expose Geometry->normalize() - method in PHP binding git-svn-id: - http://svn.osgeo.org/geos/trunk@4004 + method in PHP binding git-svn-id: http://svn.osgeo.org/geos/trunk@4004 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-15 Sandro Santilli * tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Normalize result - before comparing git-svn-id: http://svn.osgeo.org/geos/trunk@4003 + before comparing git-svn-id: http://svn.osgeo.org/geos/trunk@4003 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-12 Sandro Santilli - * .gitignore: More ignores... git-svn-id: - http://svn.osgeo.org/geos/trunk@4002 + * .gitignore: More ignores... git-svn-id: http://svn.osgeo.org/geos/trunk@4002 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-09-09 Sandro Santilli @@ -5138,81 +10070,68 @@ tests/unit/Makefile.am, tests/unit/geom/EnvelopeTest.cpp, tests/unit/geom/Geometry/equalsTest.cpp, tests/unit/geom/PointTest.cpp: Fix Empty to Empty equals response - (#703) git-svn-id: http://svn.osgeo.org/geos/trunk@4001 + (#703) git-svn-id: http://svn.osgeo.org/geos/trunk@4001 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-08-25 Sandro Santilli - * include/geos/platform.h.in: Fix OpenBSD build (#700) git-svn-id: - http://svn.osgeo.org/geos/trunk@3996 + * include/geos/platform.h.in: Fix OpenBSD build (#700) git-svn-id: http://svn.osgeo.org/geos/trunk@3996 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-08-09 Regina Obe - * CMakeLists.txt: #698 patch to support MSVC12 and MSVC13 - git-svn-id: http://svn.osgeo.org/geos/trunk@3995 + * CMakeLists.txt: #698 patch to support MSVC12 and MSVC13 git-svn-id: http://svn.osgeo.org/geos/trunk@3995 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-30 Sandro Santilli * tests/xmltester/tests/general/MISSING: TestUnaryUnion.xml was - ported git-svn-id: http://svn.osgeo.org/geos/trunk@3992 + ported git-svn-id: http://svn.osgeo.org/geos/trunk@3992 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-30 Sandro Santilli * NEWS, capi/geos_c.h.in: Allow C-API users to hide non-reentrant - section Define GEOS_USE_ONLY_R_API to obtain a compile-time error - when trying to use non-reentrant functions. Patch by Even Rouault - (#695) git-svn-id: http://svn.osgeo.org/geos/trunk@3991 + section Define GEOS_USE_ONLY_R_API to obtain a compile-time error when + trying to use non-reentrant functions. Patch by Even Rouault (#695) git-svn-id: http://svn.osgeo.org/geos/trunk@3991 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-29 Sandro Santilli * include/geos/util/IllegalArgumentException.h, include/geos/util/UnsupportedOperationException.h: Typoes fixed in - comments Patches by Jochen Topf: - https://github.com/libgeos/libgeos/pull/34 - https://github.com/libgeos/libgeos/pull/35 git-svn-id: - http://svn.osgeo.org/geos/trunk@3990 + comments Patches by Jochen Topf: https://github.com/libgeos/libgeos/pull/34 https://github.com/libgeos/libgeos/pull/35 git-svn-id: http://svn.osgeo.org/geos/trunk@3990 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-20 Sandro Santilli * include/geos/geom/prep/PreparedPoint.h, src/geom/prep/PreparedPoint.cpp: Revert "Fix - PreparedPoint::intersects signature to match the upper virtual" - This reverts commit r3988 The non-broken signature introduces a + PreparedPoint::intersects signature to match the upper virtual" This reverts commit r3988 The non-broken signature introduces a discrepancy between PreparedPoint::intersects and Point::intersects - See http://trac.osgeo.org/geos/ticket/694 git-svn-id: - http://svn.osgeo.org/geos/trunk@3989 + See http://trac.osgeo.org/geos/ticket/694 git-svn-id: http://svn.osgeo.org/geos/trunk@3989 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-20 Sandro Santilli * include/geos/geom/prep/PreparedPoint.h, src/geom/prep/PreparedPoint.cpp: Fix PreparedPoint::intersects - signature to match the upper virtual Thanks Mikhail Veltishchev for - pointing out See https://github.com/libgeos/libgeos/pull/33 - git-svn-id: http://svn.osgeo.org/geos/trunk@3988 + signature to match the upper virtual Thanks Mikhail Veltishchev for pointing out See + https://github.com/libgeos/libgeos/pull/33 git-svn-id: http://svn.osgeo.org/geos/trunk@3988 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-20 Sandro Santilli * macros/ruby.m4, swig/ruby/Makefile.am, swig/ruby/geos_wrap.cxx: - Update ruby binding build scripts Build succeeds with - ruby1.9.1-dev. Swig wrapper updated. See - https://github.com/libgeos/libgeos/pull/22 git-svn-id: - http://svn.osgeo.org/geos/trunk@3987 + Update ruby binding build scripts Build succeeds with ruby1.9.1-dev. Swig wrapper updated. See + https://github.com/libgeos/libgeos/pull/22 git-svn-id: http://svn.osgeo.org/geos/trunk@3987 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-06-20 Sandro Santilli * include/geos/index/strtree/Interval.h, src/index/strtree/Interval.cpp, src/index/strtree/SIRtree.cpp: Clean - up strtree::Interval interface Set const-correctness, drop useless - copy-ctor-like method git-svn-id: - http://svn.osgeo.org/geos/trunk@3986 + up strtree::Interval interface Set const-correctness, drop useless copy-ctor-like method git-svn-id: http://svn.osgeo.org/geos/trunk@3986 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-05-21 Sandro Santilli @@ -5221,15 +10140,13 @@ capi/geos_ts_c.cpp, php/geos.c, php/test/test.php, swig/python/geos.py, swig/python/geos_wrap.cxx, tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Change - GEOSVoronoiDiagram signature to accept optional clip extent With - this change I'll consider voronoi API final git-svn-id: - http://svn.osgeo.org/geos/trunk@3985 + GEOSVoronoiDiagram signature to accept optional clip extent With this change I'll consider voronoi API final git-svn-id: http://svn.osgeo.org/geos/trunk@3985 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-05-21 Sandro Santilli * php/geos.c, php/test/test.php: Expose Geometry.voronoiDiagram in - PHP interface git-svn-id: http://svn.osgeo.org/geos/trunk@3984 + PHP interface git-svn-id: http://svn.osgeo.org/geos/trunk@3984 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-05-21 Sandro Santilli @@ -5240,10 +10157,9 @@ src/triangulate/VoronoiDiagramBuilder.cpp, src/triangulate/quadedge/QuadEdgeSubdivision.cpp, tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Fix GEOSVoronoiDiagram - on requesting edges only Before this fix asking for edges would - return the edges of the triangle used as abase for the Voronoi - diagram. After, we return the actual voronoi cell edges. - git-svn-id: http://svn.osgeo.org/geos/trunk@3983 + on requesting edges only Before this fix asking for edges would return the edges of the + triangle used as abase for the Voronoi diagram. After, we return + the actual voronoi cell edges. git-svn-id: http://svn.osgeo.org/geos/trunk@3983 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-05-07 Mateusz Loskot @@ -5251,43 +10167,37 @@ * nmake.opt, src/algorithm/LineIntersector.cpp, src/geom/LineSegment.cpp, src/io/WKTWriter.cpp, src/operation/buffer/OffsetCurveSetBuilder.cpp: Apply minimal - changes to enable building with Visual Studio 2013 (Ticket #691) - git-svn-id: http://svn.osgeo.org/geos/trunk@3981 + changes to enable building with Visual Studio 2013 (Ticket #691) git-svn-id: http://svn.osgeo.org/geos/trunk@3981 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-03-29 Sandro Santilli * src/operation/polygonize/EdgeRing.cpp: Polygonizer: do not pretend - all exceptions are due to edge invalidity git-svn-id: - http://svn.osgeo.org/geos/trunk@3978 + all exceptions are due to edge invalidity git-svn-id: http://svn.osgeo.org/geos/trunk@3978 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-03-28 Sandro Santilli * src/operation/polygonize/Polygonizer.cpp: Make polygonize - operation interruptable git-svn-id: - http://svn.osgeo.org/geos/trunk@3977 + operation interruptable git-svn-id: http://svn.osgeo.org/geos/trunk@3977 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-03-17 Sandro Santilli - * src/Makefile.vc: Fix nmake build (#689) git-svn-id: - http://svn.osgeo.org/geos/trunk@3976 + * src/Makefile.vc: Fix nmake build (#689) git-svn-id: http://svn.osgeo.org/geos/trunk@3976 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-03-16 Sandro Santilli * tests/unit/geom/CoordinateArraySequenceTest.cpp, tests/unit/io/WKBWriterTest.cpp: Include from unit tests - (#686) git-svn-id: http://svn.osgeo.org/geos/trunk@3975 + (#686) git-svn-id: http://svn.osgeo.org/geos/trunk@3975 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-02-11 Sandro Santilli - * capi/Makefile.am: Include AM_CPPFLAGS in target-specific CPPFLAGS - Attempt to fix build on travis (with automake 1.11.3) See - http://travis-ci.org/libgeos/libgeos/jobs/18602776#L2519 - git-svn-id: http://svn.osgeo.org/geos/trunk@3974 + * capi/Makefile.am: Include AM_CPPFLAGS in target-specific CPPFLAGS Attempt to fix build on travis (with automake 1.11.3) See + http://travis-ci.org/libgeos/libgeos/jobs/18602776#L2519 git-svn-id: http://svn.osgeo.org/geos/trunk@3974 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-02-10 Sandro Santilli @@ -5321,60 +10231,51 @@ tests/perf/operation/buffer/Makefile.am, tests/perf/operation/predicate/Makefile.am, tests/thread/Makefile.am, tests/unit/Makefile.am, - tests/xmltester/Makefile.am: Rename INCLUDES to AM_CPPFLAGS Fixes - aclocal 1.13.3 warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' - (or '*_CPPFLAGS') Also tested with aclocal 1.11.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@3973 + tests/xmltester/Makefile.am: Rename INCLUDES to AM_CPPFLAGS Fixes aclocal 1.13.3 warning: 'INCLUDES' is the old name for + 'AM_CPPFLAGS' (or '*_CPPFLAGS') Also tested with aclocal 1.11.1 git-svn-id: http://svn.osgeo.org/geos/trunk@3973 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-02-10 Sandro Santilli - * configure.in => configure.ac: Renamed configure.in to configure.ac - (#683) Tested with GNU automake 1.13.3 and 1.11.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@3972 + * configure.ac, configure.in: Renamed configure.in to configure.ac + (#683) Tested with GNU automake 1.13.3 and 1.11.1 git-svn-id: http://svn.osgeo.org/geos/trunk@3972 5242fede-7e19-0410-aef8-94bd7d2200fb 2014-02-10 Mateusz Loskot * src/inlines.cpp: Replace use of non-existent DLL_EXPORT with - GEOS_DLL_EXPORT (Ticket #681) git-svn-id: - http://svn.osgeo.org/geos/trunk@3971 + GEOS_DLL_EXPORT (Ticket #681) git-svn-id: http://svn.osgeo.org/geos/trunk@3971 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-12-10 Sandro Santilli - * swig/ruby/Makefile.am: Fix Ruby automake There is a typo or error - in the automake file that prevents the Ruby library from being found - or properly linked in. Patch by "J. Ryan Earl" - See https://github.com/libgeos/libgeos/pull/32 git-svn-id: - http://svn.osgeo.org/geos/trunk@3966 + * swig/ruby/Makefile.am: Fix Ruby automake There is a typo or error in the automake file that prevents the Ruby + library from being found or properly linked in. Patch by "J. Ryan Earl" See + https://github.com/libgeos/libgeos/pull/32 git-svn-id: http://svn.osgeo.org/geos/trunk@3966 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-12-10 Sandro Santilli * src/io/WKBReader.cpp, tests/unit/io/WKBReaderTest.cpp: Throw a - ParseException on missing chars from HEXWKB string (#675) Includes - testcase. git-svn-id: http://svn.osgeo.org/geos/trunk@3964 + ParseException on missing chars from HEXWKB string (#675) Includes testcase. git-svn-id: http://svn.osgeo.org/geos/trunk@3964 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-11-19 Mateusz Loskot - * nmake.opt: Add NMAKE version from VS2012 Update 4 git-svn-id: - http://svn.osgeo.org/geos/trunk@3963 + * nmake.opt: Add NMAKE version from VS2012 Update 4 git-svn-id: http://svn.osgeo.org/geos/trunk@3963 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-11-19 Sandro Santilli * src/triangulate/VoronoiDiagramBuilder.cpp, tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Prefer - std::max over fmax (#674) Should fix MSVC11 builds. Patches by - Twiddeldidu. git-svn-id: http://svn.osgeo.org/geos/trunk@3962 + std::max over fmax (#674) Should fix MSVC11 builds. Patches by Twiddeldidu. git-svn-id: http://svn.osgeo.org/geos/trunk@3962 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-11-19 Sandro Santilli * configure.in: Do not try to build python and ruby bindings without - swig (#673) git-svn-id: http://svn.osgeo.org/geos/trunk@3961 + swig (#673) git-svn-id: http://svn.osgeo.org/geos/trunk@3961 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-11-19 Sandro Santilli @@ -5388,32 +10289,27 @@ src/geom/util/LinearComponentExtracter.cpp, src/geom/util/Makefile.am, src/geom/util/PointExtracter.cpp, src/geom/util/PolygonExtracter.cpp: Define - ComponentCoordinateExtracter classes in .cpp file (#535) This is a - workaround for a bug in GCC 4.4 failing to properly encode + ComponentCoordinateExtracter classes in .cpp file (#535) This is a workaround for a bug in GCC 4.4 failing to properly encode inheritance info in the shared library when the class is fully - inlined. Patch by Daniel Komisar git-svn-id: - http://svn.osgeo.org/geos/trunk@3960 + inlined. Patch by Daniel Komisar git-svn-id: http://svn.osgeo.org/geos/trunk@3960 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Added onlyEdges - parameter to GEOSVoronoiDiagram (#627) Contributed by Vishal Tiwari - git-svn-id: http://svn.osgeo.org/geos/trunk@3959 + parameter to GEOSVoronoiDiagram (#627) Contributed by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3959 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli * include/geos/platform.h.in: Temptative fix for ISFINITE imple with - UP-UX 11.23 build (#664) git-svn-id: - http://svn.osgeo.org/geos/trunk@3957 + UP-UX 11.23 build (#664) git-svn-id: http://svn.osgeo.org/geos/trunk@3957 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli - * .gitignore: ignore generated svn revision header git-svn-id: - http://svn.osgeo.org/geos/trunk@3956 + * .gitignore: ignore generated svn revision header git-svn-id: http://svn.osgeo.org/geos/trunk@3956 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli @@ -5421,20 +10317,18 @@ * NEWS, include/geos/triangulate/VoronoiDiagramBuilder.h, src/triangulate/VoronoiDiagramBuilder.cpp, tests/unit/triangulate/VoronoiTest.cpp: Cleanup - VoronoiDiagramBuilder interface, add NEWS item (#627) Cleanups - involved removing all explicit "delete" calls trough auto_ptr uses, - moving some allocations from heap to stack and reducing object - copies. git-svn-id: http://svn.osgeo.org/geos/trunk@3955 + VoronoiDiagramBuilder interface, add NEWS item (#627) Cleanups involved removing all explicit "delete" calls trough + auto_ptr uses, moving some allocations from heap to stack and + reducing object copies. git-svn-id: http://svn.osgeo.org/geos/trunk@3955 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, - tests/unit/capi/{GEOSVoronoiDiagramBuilderTest.cpp => - GEOSVoronoiDiagramTest.cpp}: Rename CAPI method - GEOSVoronoiDiagramBuilder to GEOSVoronoiDiagram See #627 - git-svn-id: http://svn.osgeo.org/geos/trunk@3954 + tests/unit/capi/GEOSVoronoiDiagramBuilderTest.cpp, + tests/unit/capi/GEOSVoronoiDiagramTest.cpp: Rename CAPI method + GEOSVoronoiDiagramBuilder to GEOSVoronoiDiagram See #627 git-svn-id: http://svn.osgeo.org/geos/trunk@3954 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-13 Sandro Santilli @@ -5442,14 +10336,12 @@ * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSVoronoiDiagramBuilderTest.cpp: capi Voronoi - Diagram Builder + tests git-svn-id: - http://svn.osgeo.org/geos/trunk@3953 + Diagram Builder + tests git-svn-id: http://svn.osgeo.org/geos/trunk@3953 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-10 Sandro Santilli - * src/triangulate/VoronoiDiagramBuilder.cpp: Remove unneeded include - git-svn-id: http://svn.osgeo.org/geos/trunk@3952 + * src/triangulate/VoronoiDiagramBuilder.cpp: Remove unneeded include git-svn-id: http://svn.osgeo.org/geos/trunk@3952 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-10 Sandro Santilli @@ -5459,22 +10351,18 @@ src/triangulate/Makefile.am, src/triangulate/VoronoiDiagramBuilder.cpp, tests/unit/Makefile.am, tests/unit/triangulate/VoronoiTest.cpp: VoronoiDigramBuilder class + - test Contributed by Vishal Tiwari See - https://github.com/libgeos/libgeos/pull/25 git-svn-id: - http://svn.osgeo.org/geos/trunk@3951 + test Contributed by Vishal Tiwari See https://github.com/libgeos/libgeos/pull/25 git-svn-id: http://svn.osgeo.org/geos/trunk@3951 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-10 Sandro Santilli - * COPYING: Fix FSF address in license file (#662) git-svn-id: - http://svn.osgeo.org/geos/trunk@3946 + * COPYING: Fix FSF address in license file (#662) git-svn-id: http://svn.osgeo.org/geos/trunk@3946 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-07 Sandro Santilli * tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Hush - still-reachable valgrind report by avoiding singletons git-svn-id: - http://svn.osgeo.org/geos/trunk@3945 + still-reachable valgrind report by avoiding singletons git-svn-id: http://svn.osgeo.org/geos/trunk@3945 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-07 Sandro Santilli @@ -5482,68 +10370,47 @@ * include/geos/triangulate/quadedge/QuadEdgeSubdivision.h, src/triangulate/quadedge/QuadEdgeSubdivision.cpp, tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp: Voronoi - APIs added to QuadEdgeSubdivision class, with test added - Contributed by Vishal Tiwari git-svn-id: - http://svn.osgeo.org/geos/trunk@3944 + APIs added to QuadEdgeSubdivision class, with test added Contributed by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3944 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-04 Mateusz Loskot - * .travis.yml: Remove myself from travis-ci notification targets - git-svn-id: http://svn.osgeo.org/geos/trunk@3942 + * .travis.yml: Remove myself from travis-ci notification targets git-svn-id: http://svn.osgeo.org/geos/trunk@3942 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-09-02 Sandro Santilli * .gitignore, .travis.yml, tools/ci/before_install.sh, - tools/ci/script.sh: Add 32-bit build in travis-ci config (#658) - - Add 32-bit builds to Travis CI matrix - Install gcc-multilib on - Travis CI for -m32 - Add IRC use_notice to Travis CI notifications - - Set on_success and on_failure separately for IRC and email - Ignore - _build - convenient for CMake builds Patch by Mateusz Loskot - git-svn-id: http://svn.osgeo.org/geos/trunk@3934 + tools/ci/script.sh: Add 32-bit build in travis-ci config (#658) - Add 32-bit builds to Travis CI matrix - Install gcc-multilib on Travis CI for -m32 - Add IRC use_notice to Travis CI notifications - Set on_success and on_failure separately for IRC and email - Ignore _build - convenient for CMake builds Patch by Mateusz Loskot git-svn-id: http://svn.osgeo.org/geos/trunk@3934 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-31 Mateusz Loskot - * : Ignore geos_svn_revision.h, compile and test-driver files - git-svn-id: http://svn.osgeo.org/geos/trunk@3933 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2013-08-28 Mateusz Loskot - - * include/geos/triangulate/quadedge/QuadEdge.h, - include/geos/triangulate/quadedge/QuadEdgeSubdivision.h: Declare - QuadEdge and QuadEdgeSubdivision constructors as virtual to correct - deleting object of polymorphic type. git-svn-id: - http://svn.osgeo.org/geos/trunk@3932 + * : Ignore geos_svn_revision.h, compile and test-driver files git-svn-id: http://svn.osgeo.org/geos/trunk@3933 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot - * tests/xmltester/XMLTester.cpp: Untabify git-svn-id: - http://svn.osgeo.org/geos/trunk@3931 + * tests/xmltester/XMLTester.cpp: Untabify git-svn-id: http://svn.osgeo.org/geos/trunk@3931 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot * src/operation/polygonize/EdgeRing.cpp, src/triangulate/IncrementalDelaunayTriangulator.cpp, - src/triangulate/quadedge/QuadEdgeSubdivision.cpp: * Replace while(true) with canonical for(;;) * Warnings clean-up * - Untabify git-svn-id: http://svn.osgeo.org/geos/trunk@3930 + src/triangulate/quadedge/QuadEdgeSubdivision.cpp: * Replace while(true) with canonical for(;;) * Warnings clean-up * Untabify git-svn-id: http://svn.osgeo.org/geos/trunk@3930 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot * include/geos/geom/BinaryOp.h: Add explicit cast from double to - long unsigned int git-svn-id: http://svn.osgeo.org/geos/trunk@3929 + long unsigned int git-svn-id: http://svn.osgeo.org/geos/trunk@3929 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot * tests/xmltester/XMLTester.cpp: Clean unsafe mix of type 'int' and - type 'bool' in operation git-svn-id: - http://svn.osgeo.org/geos/trunk@3928 + type 'bool' in operation git-svn-id: http://svn.osgeo.org/geos/trunk@3928 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot @@ -5556,20 +10423,17 @@ 2013-08-28 Mateusz Loskot * tests/unit/capi/GEOSNodeTest.cpp: Replace implicit boolean - conversion with explicit nullptr test git-svn-id: - http://svn.osgeo.org/geos/trunk@3926 + conversion with explicit nullptr test git-svn-id: http://svn.osgeo.org/geos/trunk@3926 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-28 Mateusz Loskot - * include/geos/geom/BinaryOp.h: Ignore unused label git-svn-id: - http://svn.osgeo.org/geos/trunk@3925 + * include/geos/geom/BinaryOp.h: Ignore unused label git-svn-id: http://svn.osgeo.org/geos/trunk@3925 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-26 Regina Obe - * NEWS: copy over 3.4 branch news items git-svn-id: - http://svn.osgeo.org/geos/trunk@3924 + * NEWS: copy over 3.4 branch news items git-svn-id: http://svn.osgeo.org/geos/trunk@3924 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-22 Sandro Santilli @@ -5578,68 +10442,56 @@ tools/ci/before_install_autotools.sh, tools/ci/before_install_cmake.sh, tools/ci/common.sh, tools/ci/script.sh, tools/ci/script_autotools.sh, - tools/ci/script_cmake.sh: Configure Travis CI for GEOS (#657) - Configurations for GCC and clang with both Autotools and CMake. - Enable IRC notifications Contributed by Mateusz Loskot - git-svn-id: - http://svn.osgeo.org/geos/trunk@3914 + tools/ci/script_cmake.sh: Configure Travis CI for GEOS (#657) Configurations for GCC and clang with both Autotools and CMake. + Enable IRC notifications Contributed by Mateusz Loskot git-svn-id: http://svn.osgeo.org/geos/trunk@3914 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-22 Sandro Santilli - * NEWS: Stub 3.5.0 section git-svn-id: - http://svn.osgeo.org/geos/trunk@3913 + * NEWS: Stub 3.5.0 section git-svn-id: http://svn.osgeo.org/geos/trunk@3913 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-22 Sandro Santilli * include/geos/geom/Triangle.h, src/geom/Triangle.cpp, tests/unit/geom/TriangleTest.cpp: circumcentre() and det() methods - added to class Triangle Includes test for circumcentre() - Contributed by Vishal Tiwari git-svn-id: - http://svn.osgeo.org/geos/trunk@3912 + added to class Triangle Includes test for circumcentre() Contributed by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3912 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-22 Sandro Santilli * tests/unit/capi/GEOSisValidDetailTest.cpp: Accept multiple NaN - representations (#656) git-svn-id: - http://svn.osgeo.org/geos/trunk@3910 + representations (#656) git-svn-id: http://svn.osgeo.org/geos/trunk@3910 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-21 Sandro Santilli - * CMakeLists.txt: Set JTS_PORT for CMake in sync with others .. we - should really reduce the number of places version is set - git-svn-id: http://svn.osgeo.org/geos/trunk@3908 + * CMakeLists.txt: Set JTS_PORT for CMake in sync with others .. we should really reduce the number of places version is set git-svn-id: http://svn.osgeo.org/geos/trunk@3908 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-21 Sandro Santilli * include/geos/geom/BinaryOp.h: Use a double for PrecisionModel - scale, avoiding overflows Fixes #652 git-svn-id: - http://svn.osgeo.org/geos/trunk@3907 + scale, avoiding overflows Fixes #652 git-svn-id: http://svn.osgeo.org/geos/trunk@3907 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-21 Regina Obe * include/geos/platform.h.in: #650 isnan workaround OS detection - missing NetBSD, DragonFly, Sun nuance git-svn-id: - http://svn.osgeo.org/geos/trunk@3902 + missing NetBSD, DragonFly, Sun nuance git-svn-id: http://svn.osgeo.org/geos/trunk@3902 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-20 Sandro Santilli * include/geos/triangulate/quadedge/Vertex.h, src/triangulate/quadedge/Vertex.cpp: Change operator< for Vertex to - be inlined and use Coordinate operator< git-svn-id: - http://svn.osgeo.org/geos/trunk@3901 + be inlined and use Coordinate operator< git-svn-id: http://svn.osgeo.org/geos/trunk@3901 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-20 Sandro Santilli * tests/unit/triangulate/quadedge/VertexTest.cpp: Simplify Vertext - test git-svn-id: http://svn.osgeo.org/geos/trunk@3900 + test git-svn-id: http://svn.osgeo.org/geos/trunk@3900 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-20 Sandro Santilli @@ -5647,96 +10499,79 @@ * include/geos/triangulate/quadedge/Vertex.h, src/triangulate/quadedge/Vertex.cpp, tests/unit/Makefile.am, tests/unit/triangulate/quadedge/VertexTest.cpp: operator< for Vertex - added Includes test Path by Vishal Tiwari git-svn-id: - http://svn.osgeo.org/geos/trunk@3899 + added Includes test Path by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3899 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-19 Sandro Santilli * include/geos/Makefile.am: Install but do not distribute generated - headers These are platform.h and version.h Fixes bug #601 and the - lack of C++ headers install in releases 3.4.0 and 3.4.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@3896 + headers These are platform.h and version.h Fixes bug #601 and the lack of + C++ headers install in releases 3.4.0 and 3.4.1 git-svn-id: http://svn.osgeo.org/geos/trunk@3896 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-17 Regina Obe * CMakeLists.txt: #644 Can't build using cmake with tar ball only do svn check if there is a .svn file in source folder to ensure it - works with tar ball git-svn-id: - http://svn.osgeo.org/geos/trunk@3889 + works with tar ball git-svn-id: http://svn.osgeo.org/geos/trunk@3889 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-16 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp, tests/unit/capi/GEOSSnapTest.cpp: Fix assertion failure in snapping - code (#649) The bug affected attempts to snapping lines to the - points of a rectangle with a side smaller than the tolerance. - git-svn-id: http://svn.osgeo.org/geos/trunk@3885 + code (#649) The bug affected attempts to snapping lines to the points of a + rectangle with a side smaller than the tolerance. git-svn-id: http://svn.osgeo.org/geos/trunk@3885 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-14 Regina Obe * CMakeLists.txt, HOWTO_RELEASE: update HOWTO_RELEASE to include - bumping revision numbrs in CMake and also bump numbers in CMake. - git-svn-id: http://svn.osgeo.org/geos/trunk@3883 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2013-08-11 Sandro Santilli - - * : Set correct eol-style for geos-config and testrunner (#645) - git-svn-id: http://svn.osgeo.org/geos/trunk@3879 + bumping revision numbrs in CMake and also bump numbers in CMake. git-svn-id: http://svn.osgeo.org/geos/trunk@3883 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Sandro Santilli - * : Set LF eol-style property for platform.h.in (#645) git-svn-id: - http://svn.osgeo.org/geos/trunk@3878 + * : Set correct eol-style for geos-config and testrunner (#645) git-svn-id: http://svn.osgeo.org/geos/trunk@3879 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe - * capi/geos_c.h.in: bump to 3.5.0 and capi to next git-svn-id: - http://svn.osgeo.org/geos/trunk@3877 + * capi/geos_c.h.in: bump to 3.5.0 and capi to next git-svn-id: http://svn.osgeo.org/geos/trunk@3877 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe - * NEWS: update date on news git-svn-id: - http://svn.osgeo.org/geos/trunk@3876 + * NEWS: update date on news git-svn-id: http://svn.osgeo.org/geos/trunk@3876 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe * configure.in, include/geos/version.h.vc: bump all revisions with plan we will have Voronoi ported over (strk change if I did this - wrong) git-svn-id: http://svn.osgeo.org/geos/trunk@3873 + wrong) git-svn-id: http://svn.osgeo.org/geos/trunk@3873 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe * include/geos/version.h.vc: update version numbers to agree with - configure.in - huh why are the version numbers all old in this file? - git-svn-id: http://svn.osgeo.org/geos/trunk@3870 + configure.in - huh why are the version numbers all old in this file? git-svn-id: http://svn.osgeo.org/geos/trunk@3870 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe - * configure.in: get rid of dev in version# in prep for 3.4.0 release - git-svn-id: http://svn.osgeo.org/geos/trunk@3869 + * configure.in: get rid of dev in version# in prep for 3.4.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@3869 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-11 Regina Obe - * ChangeLog: update change log in prep for 3.4.0 release - git-svn-id: http://svn.osgeo.org/geos/trunk@3868 + * ChangeLog: update change log in prep for 3.4.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@3868 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-08 Regina Obe * ChangeLog, NEWS: update news and change log in prep for Aug 10 - release of 3.4.0 git-svn-id: http://svn.osgeo.org/geos/trunk@3867 + release of 3.4.0 git-svn-id: http://svn.osgeo.org/geos/trunk@3867 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-04 Regina Obe @@ -5748,15 +10583,13 @@ 2013-08-04 Sandro Santilli * src/triangulate/DelaunayTriangulationBuilder.cpp: Avoid Coordinate - copies in DelaunayTriangulationBuilder::envelope git-svn-id: - http://svn.osgeo.org/geos/trunk@3864 + copies in DelaunayTriangulationBuilder::envelope git-svn-id: http://svn.osgeo.org/geos/trunk@3864 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-04 Sandro Santilli * tests/unit/triangulate/DelaunayTest.cpp: Simplify testcase for - DelaunayTriangulationBuilder::envelope git-svn-id: - http://svn.osgeo.org/geos/trunk@3863 + DelaunayTriangulationBuilder::envelope git-svn-id: http://svn.osgeo.org/geos/trunk@3863 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-04 Sandro Santilli @@ -5764,42 +10597,36 @@ * include/geos/triangulate/DelaunayTriangulationBuilder.h, src/triangulate/DelaunayTriangulationBuilder.cpp, tests/unit/triangulate/DelaunayTest.cpp: envelope() method added to - DelaunayTriangulationBuilder class Includes testcase. Patch by - Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3862 + DelaunayTriangulationBuilder class Includes testcase. Patch by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3862 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-03 Mateusz Loskot * CMakeLists.txt, tools/geos_svn_revision_cmake.h.in: Add - geos_svn_revision.h generator to CMake config Patch from David - Burken attached to #643 git-svn-id: - http://svn.osgeo.org/geos/trunk@3861 + geos_svn_revision.h generator to CMake config Patch from David Burken attached to #643 git-svn-id: http://svn.osgeo.org/geos/trunk@3861 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-02 Regina Obe - * src/Makefile.vc: #607 Makefile.vc 'clean' step leaks obj files - git-svn-id: http://svn.osgeo.org/geos/trunk@3860 + * src/Makefile.vc: #607 Makefile.vc 'clean' step leaks obj files git-svn-id: http://svn.osgeo.org/geos/trunk@3860 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-08-01 Regina Obe * NEWS: updates add some missing ticket items and add ticket - numbers where missing git-svn-id: - http://svn.osgeo.org/geos/trunk@3858 + numbers where missing git-svn-id: http://svn.osgeo.org/geos/trunk@3858 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Sean Gillies * src/operation/polygonize/EdgeRing.cpp: Print to stderr only in - debug mode git-svn-id: http://svn.osgeo.org/geos/trunk@3857 + debug mode git-svn-id: http://svn.osgeo.org/geos/trunk@3857 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Regina Obe * AUTHORS: #641 - distinguish between active and inactive group and - add Regina Obe to list. git-svn-id: - http://svn.osgeo.org/geos/trunk@3856 + add Regina Obe to list. git-svn-id: http://svn.osgeo.org/geos/trunk@3856 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Regina Obe @@ -5809,8 +10636,7 @@ 2013-07-31 Regina Obe - * authors.svn: add myself to author list git-svn-id: - http://svn.osgeo.org/geos/trunk@3854 + * authors.svn: add myself to author list git-svn-id: http://svn.osgeo.org/geos/trunk@3854 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Sandro Santilli @@ -5822,65 +10648,49 @@ tests/xmltester/tests/ticket/bug459.xml, tests/xmltester/tests/ticket/bug527.xml, tests/xmltester/tests/ticket/bug586.xml, - tests/xmltester/tests/ticket/bug599.xml: Improve overlay robustness - - Validate CBR results before accepting them - Enable overlay node - validator even for FIXED precision - Enable geometry-reduction - policy - Bail out on exception from overlay if any input is invalid - Fixes bug #459 git-svn-id: http://svn.osgeo.org/geos/trunk@3853 + tests/xmltester/tests/ticket/bug599.xml: Improve overlay robustness - Validate CBR results before accepting them - Enable overlay node validator even for FIXED precision - Enable geometry-reduction policy - Bail out on exception from overlay if any input is invalid Fixes bug #459 git-svn-id: http://svn.osgeo.org/geos/trunk@3853 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Sandro Santilli * tests/xmltester/tests/buffer.xml: Do not expect invalid output - from buffer The test verification code is tollerant, but better fix - this git-svn-id: http://svn.osgeo.org/geos/trunk@3852 + from buffer The test verification code is tollerant, but better fix this git-svn-id: http://svn.osgeo.org/geos/trunk@3852 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-31 Sandro Santilli * tests/xmltester/tests/ticket/bug275.xml: Turn test for ticket 275 - into an "area test". Area test checks that the area of the Union - between two geometries is about the same as the sum of area of - symdifference + area of intersection. git-svn-id: - http://svn.osgeo.org/geos/trunk@3851 + into an "area test". Area test checks that the area of the Union between two geometries + is about the same as the sum of area of symdifference + area of + intersection. git-svn-id: http://svn.osgeo.org/geos/trunk@3851 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-25 Sandro Santilli * include/geos/geom/CoordinateList.h: Fix CoordinateList.closeRing() - use of past-the-end operator git-svn-id: - http://svn.osgeo.org/geos/trunk@3850 + use of past-the-end operator git-svn-id: http://svn.osgeo.org/geos/trunk@3850 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-25 Sandro Santilli * include/geos/geom/CoordinateList.h, tests/unit/geom/CoordinateListTest.cpp: closeRing() method added in - CoordinateList class Patch by Vishal Tiwari - git-svn-id: - http://svn.osgeo.org/geos/trunk@3849 + CoordinateList class Patch by Vishal Tiwari git-svn-id: http://svn.osgeo.org/geos/trunk@3849 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-23 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in: Cosmetic changes into the CAPI - code, by Mike Toews - Replace "reader" with "writer" in prototypes - - describe "_r" functions - Function arguments with only one - geometry changed from g1 to g - Rename nf -> ef for - GEOSContext_setErrorHandler_rsetErrorHandler_r - Move GEOSBuffer* - declaration to top of buffer related function section - Change - char* mat to char *mat - Fix typos in comments - Clip trailing - white space, and other white space consistencies - Other minor - rearrangements for consistency git-svn-id: - http://svn.osgeo.org/geos/trunk@3848 + code, by Mike Toews - Replace "reader" with "writer" in prototypes - describe "_r" functions - Function arguments with only one geometry changed from g1 to g - Rename nf -> ef for + GEOSContext_setErrorHandler_rsetErrorHandler_r - Move GEOSBuffer* declaration to top of buffer related function + section - Change char* mat to char *mat - Fix typos in comments - Clip trailing white space, and other white space consistencies - Other minor rearrangements for consistency git-svn-id: http://svn.osgeo.org/geos/trunk@3848 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-17 Sandro Santilli * src/operation/buffer/OffsetCurveBuilder.cpp, tests/unit/capi/GEOSOffsetCurveTest.cpp: Make GEOSOffsetCurve - survive single-point input (with an exception) git-svn-id: - http://svn.osgeo.org/geos/trunk@3846 + survive single-point input (with an exception) git-svn-id: http://svn.osgeo.org/geos/trunk@3846 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-17 Sandro Santilli @@ -5888,39 +10698,36 @@ * src/operation/buffer/BufferInputLineSimplifier.cpp, src/operation/buffer/OffsetSegmentGenerator.cpp, tests/unit/capi/GEOSOffsetCurveTest.cpp: Fix OffsetCurve op in - presence of duplicated vertices (#602) git-svn-id: - http://svn.osgeo.org/geos/trunk@3845 + presence of duplicated vertices (#602) git-svn-id: http://svn.osgeo.org/geos/trunk@3845 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-17 Sandro Santilli * src/simplify/LineSegmentIndex.cpp: Fix LineSegmentVisitor copy - ctor (#636) git-svn-id: http://svn.osgeo.org/geos/trunk@3844 + ctor (#636) git-svn-id: http://svn.osgeo.org/geos/trunk@3844 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-15 Sandro Santilli * src/geom/GeometryCollection.cpp, tests/unit/io/WKBWriterTest.cpp: - Drop SRID from geometrycollection elements (#583) git-svn-id: - http://svn.osgeo.org/geos/trunk@3840 + Drop SRID from geometrycollection elements (#583) git-svn-id: http://svn.osgeo.org/geos/trunk@3840 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-12 Sandro Santilli * tests/unit/geom/Geometry/coversTest.cpp: Add test for #580 - (successful) git-svn-id: http://svn.osgeo.org/geos/trunk@3839 + (successful) git-svn-id: http://svn.osgeo.org/geos/trunk@3839 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli * tests/unit/capi/GEOSOffsetCurveTest.cpp: Fix memory leak in - testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3837 + testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3837 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli - * tests/unit/capi/GEOSOffsetCurveTest.cpp: Drop carriage returns - git-svn-id: http://svn.osgeo.org/geos/trunk@3836 + * tests/unit/capi/GEOSOffsetCurveTest.cpp: Drop carriage returns git-svn-id: http://svn.osgeo.org/geos/trunk@3836 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli @@ -5930,66 +10737,57 @@ include/geos/triangulate/quadedge/Vertex.h, src/triangulate/quadedge/QuadEdgeSubdivision.cpp, tests/unit/triangulate/DelaunayTest.cpp: Fix memory in - QuadEdgeSubdivision (#604) git-svn-id: - http://svn.osgeo.org/geos/trunk@3835 + QuadEdgeSubdivision (#604) git-svn-id: http://svn.osgeo.org/geos/trunk@3835 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli * NEWS, php/geos.c, php/test/test.php: Expose Delaunay triangulation - to PHP API (#567) git-svn-id: http://svn.osgeo.org/geos/trunk@3834 + to PHP API (#567) git-svn-id: http://svn.osgeo.org/geos/trunk@3834 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli - * php/test/test.php: Fix test after changes in PointOnSurface - git-svn-id: http://svn.osgeo.org/geos/trunk@3833 + * php/test/test.php: Fix test after changes in PointOnSurface git-svn-id: http://svn.osgeo.org/geos/trunk@3833 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli * NEWS, tools/geos-config.in: Add --cclibs, --static-clibs and - --static-cclibs to geos-config (#497) git-svn-id: - http://svn.osgeo.org/geos/trunk@3832 + --static-cclibs to geos-config (#497) git-svn-id: http://svn.osgeo.org/geos/trunk@3832 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli - * NEWS: Add 3.3.1 to 3.3.8 section git-svn-id: - http://svn.osgeo.org/geos/trunk@3831 + * NEWS: Add 3.3.1 to 3.3.8 section git-svn-id: http://svn.osgeo.org/geos/trunk@3831 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-11 Sandro Santilli - * NEWS: Cleanup NEWS file confused in r3816 git-svn-id: - http://svn.osgeo.org/geos/trunk@3830 + * NEWS: Cleanup NEWS file confused in r3816 git-svn-id: http://svn.osgeo.org/geos/trunk@3830 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-07-05 Sandro Santilli * include/geos/linearref/Makefile.am: Fix install location of - linearref headers (#624) git-svn-id: - http://svn.osgeo.org/geos/trunk@3829 + linearref headers (#624) git-svn-id: http://svn.osgeo.org/geos/trunk@3829 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-28 Mateusz Loskot - * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 3 RTM - git-svn-id: http://svn.osgeo.org/geos/trunk@3827 + * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 3 RTM git-svn-id: http://svn.osgeo.org/geos/trunk@3827 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-26 Sandro Santilli * src/noding/snapround/HotPixel.cpp, tests/unit/noding/snapround/HotPixelTest.cpp: Fix typo in HotPixel - corners initializer Patch by Mickael BORNE - git-svn-id: http://svn.osgeo.org/geos/trunk@3826 + corners initializer Patch by Mickael BORNE git-svn-id: http://svn.osgeo.org/geos/trunk@3826 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-26 Mateusz Loskot - * nmake.opt: Add another NMAKE version from Visual Studio 2012 - git-svn-id: http://svn.osgeo.org/geos/trunk@3824 + * nmake.opt: Add another NMAKE version from Visual Studio 2012 git-svn-id: http://svn.osgeo.org/geos/trunk@3824 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-12 Mateusz Loskot @@ -5998,11 +10796,9 @@ src/operation/buffer/BufferBuilder.cpp, tests/unit/operation/buffer/BufferBuilderTest.cpp: Final clarification of BufferBuilder::bufferLineSingleSided behaviour - (ticket #633) * Ignore BufferParameters::setSingleSided() parameter - as it is specific to areal geometries. * Document semantic of input - parameters. * Document order of coordinates in generated output - (conforms to PostGIS behaviour). * Add test for coordinates order - assumptions. git-svn-id: http://svn.osgeo.org/geos/trunk@3823 + (ticket #633) * Ignore BufferParameters::setSingleSided() parameter as it is + specific to areal geometries. * Document semantic of input parameters. * Document order of coordinates in generated output (conforms to + PostGIS behaviour). * Add test for coordinates order assumptions. git-svn-id: http://svn.osgeo.org/geos/trunk@3823 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-12 Mateusz Loskot @@ -6011,16 +10807,14 @@ side offset curve tests to check uniform coordinates order in output (ticket #633). We need to decide if BufferBuilder::bufferLineSingleSided should take care of reversing - coordinates if necessary. git-svn-id: - http://svn.osgeo.org/geos/trunk@3822 + coordinates if necessary. git-svn-id: http://svn.osgeo.org/geos/trunk@3822 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-12 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/operation/buffer/BufferBuilderTest.cpp: Add updated C++ - API test case for the left/right offset curve (ticket #633) - git-svn-id: http://svn.osgeo.org/geos/trunk@3821 + API test case for the left/right offset curve (ticket #633) git-svn-id: http://svn.osgeo.org/geos/trunk@3821 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-12 Mateusz Loskot @@ -6035,8 +10829,7 @@ based on GEOSOffsetCurve from C-API. Passing negative distance for right-sided offset curve generates correct/expected output. Interestingly, equivalent test using BufferBuilder directly, from - C++ API, does not pass. git-svn-id: - http://svn.osgeo.org/geos/trunk@3819 + C++ API, does not pass. git-svn-id: http://svn.osgeo.org/geos/trunk@3819 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-11 Mateusz Loskot @@ -6044,8 +10837,7 @@ * src/operation/buffer/OffsetCurveBuilder.cpp, tests/unit/Makefile.am, tests/unit/operation/buffer/BufferBuilderTest.cpp: Revert r3817 as - partial or incorrect fix. See ticket #633 for details. git-svn-id: - http://svn.osgeo.org/geos/trunk@3818 + partial or incorrect fix. See ticket #633 for details. git-svn-id: http://svn.osgeo.org/geos/trunk@3818 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-11 Mateusz Loskot @@ -6053,22 +10845,19 @@ * src/operation/buffer/OffsetCurveBuilder.cpp, tests/unit/Makefile.am, tests/unit/operation/buffer/BufferBuilderTest.cpp: * Fix bug in OffsetCurveBuilder case for right-side offset curve - used left-side flag to initialise the side segments. * Corresponding - test case attached. git-svn-id: - http://svn.osgeo.org/geos/trunk@3817 + used left-side flag to initialise the side segments. * Corresponding test case attached. git-svn-id: http://svn.osgeo.org/geos/trunk@3817 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-11 Sandro Santilli * NEWS, include/geos/profiler.h: Fix for mingw64 compile, by Regina - Obe (#630) git-svn-id: http://svn.osgeo.org/geos/trunk@3816 + Obe (#630) git-svn-id: http://svn.osgeo.org/geos/trunk@3816 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-07 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp: Simplify code - looking for closer vertex snap git-svn-id: - http://svn.osgeo.org/geos/trunk@3814 + looking for closer vertex snap git-svn-id: http://svn.osgeo.org/geos/trunk@3814 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-07 Mateusz Loskot @@ -6086,15 +10875,12 @@ src/operation/buffer/BufferInputLineSimplifier.cpp, src/operation/linemerge/LineSequencer.cpp, src/operation/polygonize/PolygonizeGraph.cpp: Correct int and - std::size_t mismatch for 64-bit target. git-svn-id: - http://svn.osgeo.org/geos/trunk@3812 + std::size_t mismatch for 64-bit target. git-svn-id: http://svn.osgeo.org/geos/trunk@3812 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-07 Mateusz Loskot - * src/algorithm/InteriorPointArea.cpp: * Disable copy constructor and assignment operator. * Correct int - and std::size_t mismatch for 64-bit target. git-svn-id: - http://svn.osgeo.org/geos/trunk@3811 + * src/algorithm/InteriorPointArea.cpp: * Disable copy constructor and assignment operator. * Correct int and std::size_t mismatch for 64-bit target. git-svn-id: http://svn.osgeo.org/geos/trunk@3811 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-07 Mateusz Loskot @@ -6103,15 +10889,13 @@ include/geos/precision/GeometryPrecisionReducer.h, include/geos/precision/PrecisionReducerCoordinateOperation.h, src/noding/GeometryNoder.cpp: Disable copy constructor and - assignment operator git-svn-id: - http://svn.osgeo.org/geos/trunk@3810 + assignment operator git-svn-id: http://svn.osgeo.org/geos/trunk@3810 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-07 Mateusz Loskot * include/geos/operation/buffer/OffsetSegmentString.h: Correct - return type of OffsetSegmentString::size() to be size_t git-svn-id: - http://svn.osgeo.org/geos/trunk@3809 + return type of OffsetSegmentString::size() to be size_t git-svn-id: http://svn.osgeo.org/geos/trunk@3809 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-06 Sandro Santilli @@ -6121,15 +10905,13 @@ examples/CustomCoordinateSequenceExample.cpp, examples/CustomCoordinateSequenceExample.h, examples/CustomPointCoordinateSequence.cpp, examples/Makefile.am: - Drop obsoleted files git-svn-id: - http://svn.osgeo.org/geos/trunk@3808 + Drop obsoleted files git-svn-id: http://svn.osgeo.org/geos/trunk@3808 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-06 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp: Drop commented - out / disabled code git-svn-id: - http://svn.osgeo.org/geos/trunk@3807 + out / disabled code git-svn-id: http://svn.osgeo.org/geos/trunk@3807 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-05 Mateusz Loskot @@ -6141,15 +10923,13 @@ 2013-06-05 Mateusz Loskot * CMakeLists.txt: Make Visual C++ 11.0 recognised by CMake - configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3805 + configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3805 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-06-03 Sandro Santilli * src/geom/prep/PreparedPolygonIntersects.cpp: Short-circuit - prepared polygon/point intersection Reduces memory fragmentation - for area-puntal ops git-svn-id: - http://svn.osgeo.org/geos/trunk@3803 + prepared polygon/point intersection Reduces memory fragmentation for area-puntal ops git-svn-id: http://svn.osgeo.org/geos/trunk@3803 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-05-30 Sandro Santilli @@ -6157,52 +10937,42 @@ * include/geos/operation/overlay/snap/LineStringSnapper.h, src/operation/overlay/snap/LineStringSnapper.cpp, tests/unit/capi/GEOSSnapTest.cpp: Improve snap algorithm reducing - likelyhood of invalid output - Snap input vertices to closest snap - point (#629) - Do not snap segments to external points (#501) - - Never snap multiple vertices to the same snap point Work funded by - Tuscany Region - SITA. Contract "Support to the use of GFOSS - (Geographic Free and Open Source Software) Desktop tools" (CIG - Z3B06FA6D7). git-svn-id: http://svn.osgeo.org/geos/trunk@3800 + likelyhood of invalid output - Snap input vertices to closest snap point (#629) - Do not snap segments to external points (#501) - Never snap multiple vertices to the same snap point Work funded by Tuscany Region - SITA. Contract "Support to the use + of GFOSS (Geographic Free and Open Source Software) Desktop tools" + (CIG Z3B06FA6D7). git-svn-id: http://svn.osgeo.org/geos/trunk@3800 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-05-23 Sandro Santilli * Makefile.am, tools/svn_repo_revision.sh: Create - geos_svn_revision.h in the source tree It's a generated source, - should always be in the tarball anyway git-svn-id: - http://svn.osgeo.org/geos/trunk@3799 + geos_svn_revision.h in the source tree It's a generated source, should always be in the tarball anyway git-svn-id: http://svn.osgeo.org/geos/trunk@3799 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-05-23 Sandro Santilli - * tools/Makefile.am: Distribute svn_repo_revision.sh git-svn-id: - http://svn.osgeo.org/geos/trunk@3798 + * tools/Makefile.am: Distribute svn_repo_revision.sh git-svn-id: http://svn.osgeo.org/geos/trunk@3798 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-05-10 Mateusz Loskot * nmake.opt: Add NMAKE option WIN64 to simplify x64 build - configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3797 + configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3797 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-05-09 Mateusz Loskot - * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 3 - git-svn-id: http://svn.osgeo.org/geos/trunk@3796 + * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 3 git-svn-id: http://svn.osgeo.org/geos/trunk@3796 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-04-02 Mateusz Loskot - * src/dirlist.mk: Add missing directories git-svn-id: - http://svn.osgeo.org/geos/trunk@3795 + * src/dirlist.mk: Add missing directories git-svn-id: http://svn.osgeo.org/geos/trunk@3795 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-04-02 Mateusz Loskot * nmake.opt, src/Makefile.vc, src/geom/Geometry.cpp: Add Visual Leak - Detector (VLD) support to GEOS core * Add MSVC_VLD_DIR option to - nmake.opt to enable/disable VLD * Add optional #include to - Geometry.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@3794 + Detector (VLD) support to GEOS core * Add MSVC_VLD_DIR option to nmake.opt to enable/disable VLD * Add optional #include to Geometry.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@3794 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-15 Sandro Santilli @@ -6210,35 +10980,30 @@ * tests/unit/algorithm/RobustLineIntersectionTest.cpp, tests/unit/capi/GEOSConvexHullTest.cpp, tests/unit/capi/GEOSUnaryUnionTest.cpp: Fix memory leaks in unit - tests git-svn-id: http://svn.osgeo.org/geos/trunk@3793 + tests git-svn-id: http://svn.osgeo.org/geos/trunk@3793 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-15 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSNearestPointsTest.cpp: - Add GEOSNearestPoints CAPI function Contributed by Richard - Frith-Macdonald git-svn-id: - http://svn.osgeo.org/geos/trunk@3792 + Add GEOSNearestPoints CAPI function Contributed by Richard Frith-Macdonald git-svn-id: http://svn.osgeo.org/geos/trunk@3792 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-15 Mateusz Loskot - * nmake.opt: Add x64 NMAKE version from Visual Studio 2012 Update 1 - git-svn-id: http://svn.osgeo.org/geos/trunk@3791 + * nmake.opt: Add x64 NMAKE version from Visual Studio 2012 Update 1 git-svn-id: http://svn.osgeo.org/geos/trunk@3791 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-12 Sandro Santilli - * macros/ruby.m4: Fix "puts puts" typo in ruby macro (#625) - git-svn-id: http://svn.osgeo.org/geos/trunk@3790 + * macros/ruby.m4: Fix "puts puts" typo in ruby macro (#625) git-svn-id: http://svn.osgeo.org/geos/trunk@3790 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-11 Sandro Santilli * tests/unit/algorithm/RobustLineIntersectionTest.cpp: Port new - RobustLineIntersection test from JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@3789 + RobustLineIntersection test from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3789 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-08 Sandro Santilli @@ -6246,29 +11011,24 @@ * include/geos/algorithm/LineIntersector.h, src/algorithm/LineIntersector.cpp, tests/unit/algorithm/RobustLineIntersectionTest.cpp: Fix - RobustLineIntersector handling of invalid intersection points (#622) - Adds new testcases. Many of them fail, probably due to the lack of + RobustLineIntersector handling of invalid intersection points (#622) Adds new testcases. Many of them fail, probably due to the lack of double double use, but one of them only fails with the old - RobustLineIntersector heuristic handling invalid intersection points - git-svn-id: http://svn.osgeo.org/geos/trunk@3787 + RobustLineIntersector heuristic handling invalid intersection points git-svn-id: http://svn.osgeo.org/geos/trunk@3787 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-08 Mateusz Loskot - * src/Makefile.vc: Add algorithm/Centroid.obj git-svn-id: - http://svn.osgeo.org/geos/trunk@3786 + * src/Makefile.vc: Add algorithm/Centroid.obj git-svn-id: http://svn.osgeo.org/geos/trunk@3786 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-08 Mateusz Loskot - * include/geos/algorithm/Centroid.h: Untabify git-svn-id: - http://svn.osgeo.org/geos/trunk@3785 + * include/geos/algorithm/Centroid.h: Untabify git-svn-id: http://svn.osgeo.org/geos/trunk@3785 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-08 Mateusz Loskot - * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 1 - git-svn-id: http://svn.osgeo.org/geos/trunk@3784 + * nmake.opt: Add NMAKE version from Visual Studio 2012 Update 1 git-svn-id: http://svn.osgeo.org/geos/trunk@3784 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-08 Sandro Santilli @@ -6277,125 +11037,100 @@ src/algorithm/Centroid.cpp, src/algorithm/InteriorPointArea.cpp, tests/unit/capi/GEOSPointOnSurfaceTest.cpp, tests/xmltester/tests/general/TestInteriorPoint.xml: Fix - GEOSPointOnSurface returning point on boundary (#623) Ports - SafeBisector for InteriorPointArea from JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@3781 + GEOSPointOnSurface returning point on boundary (#623) Ports SafeBisector for InteriorPointArea from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3781 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-05 Sandro Santilli - * capi/geos_ts_c.cpp: Speedup GEOSWKBWriter_read_r (#621) Patch by - Daniel Zeitlin git-svn-id: http://svn.osgeo.org/geos/trunk@3779 + * capi/geos_ts_c.cpp: Speedup GEOSWKBWriter_read_r (#621) Patch by Daniel Zeitlin git-svn-id: http://svn.osgeo.org/geos/trunk@3779 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-03-01 Sandro Santilli - * HOWTO_RELEASE: Add wiki update and announce steps git-svn-id: - http://svn.osgeo.org/geos/trunk@3778 + * HOWTO_RELEASE: Add wiki update and announce steps git-svn-id: http://svn.osgeo.org/geos/trunk@3778 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-28 Sandro Santilli * src/algorithm/CentroidArea.cpp, tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug582.xml: Fix centroid computation - for collections with empty components Fixes bug #582 git-svn-id: - http://svn.osgeo.org/geos/trunk@3773 + for collections with empty components Fixes bug #582 git-svn-id: http://svn.osgeo.org/geos/trunk@3773 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-25 Sandro Santilli * macros/ruby.m4, swig/ruby/geos_wrap.cxx: Update macros/ruby.m4 for - ruby 1.9.x Used RbConfig instead of obsolete and deprecated Config. - Updated SWIG generated files. Patch by Kashif Rasul - git-svn-id: - http://svn.osgeo.org/geos/trunk@3772 + ruby 1.9.x Used RbConfig instead of obsolete and deprecated Config. Updated + SWIG generated files. Patch by Kashif Rasul git-svn-id: http://svn.osgeo.org/geos/trunk@3772 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-25 Sandro Santilli - * include/geos/platform.h.in: Fix build under cygwin (#595) Thanks - Jason Huntley git-svn-id: http://svn.osgeo.org/geos/trunk@3771 + * include/geos/platform.h.in: Fix build under cygwin (#595) Thanks Jason Huntley git-svn-id: http://svn.osgeo.org/geos/trunk@3771 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-25 Sandro Santilli * include/geos/io/WKTReader.h, include/geos/io/WKTReader.inl: - Deprecate WKTReader constructor taking GeometryFactory by pointer - Add constructor taking it by reference, for consistency with - WKBReader Closes #310 git-svn-id: - http://svn.osgeo.org/geos/trunk@3770 + Deprecate WKTReader constructor taking GeometryFactory by pointer Add constructor taking it by reference, for consistency with + WKBReader Closes #310 git-svn-id: http://svn.osgeo.org/geos/trunk@3770 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-25 Sandro Santilli * NEWS, include/geos/io/Writer.h, src/io/Writer.cpp, tests/unit/io/WriterTest.cpp: New ::reserve(size_t) method for - io::Writer class git-svn-id: http://svn.osgeo.org/geos/trunk@3769 + io::Writer class git-svn-id: http://svn.osgeo.org/geos/trunk@3769 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-25 Sandro Santilli * NEWS, include/geos/io/Writer.h, src/io/Writer.cpp, tests/unit/Makefile.am, tests/unit/io/WriterTest.cpp: io::Writer: - take and give strings by const ref, use .append, testcase - git-svn-id: http://svn.osgeo.org/geos/trunk@3768 + take and give strings by const ref, use .append, testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3768 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-21 Sandro Santilli - * src/io/WKTWriter.cpp: WKTWriter::appendCoordinate optimisation - Modified the WKTWriter::appendCoordinate method to not create an + * src/io/WKTWriter.cpp: WKTWriter::appendCoordinate optimisation Modified the WKTWriter::appendCoordinate method to not create an intermediate std::string, but instead write directly into the Writer - object. The result is a small performance improvement. Patch by - Mats Taraldsvik git-svn-id: - http://svn.osgeo.org/geos/trunk@3767 + object. The result is a small performance improvement. Patch by Mats Taraldsvik git-svn-id: http://svn.osgeo.org/geos/trunk@3767 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-15 Mateusz Loskot - * : Update svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@3765 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2013-02-01 Sandro Santilli - - * include/geos/io/CLocalizer.h: Add header guard to CLocalizer - (#619) git-svn-id: http://svn.osgeo.org/geos/trunk@3762 + * : Update svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@3765 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-01 Sandro Santilli * include/geos/linearref/LocationIndexOfLine.h, src/linearref/LocationIndexOfLine.cpp: Fix header guard and port - info in LocatioNIndexOfLine (#618) git-svn-id: - http://svn.osgeo.org/geos/trunk@3760 + info in LocatioNIndexOfLine (#618) git-svn-id: http://svn.osgeo.org/geos/trunk@3760 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-02-01 Sandro Santilli * include/geos/geom/util/GeometryExtracter.h: Fix header guard in - GeometryExtracter (#617) git-svn-id: - http://svn.osgeo.org/geos/trunk@3758 + GeometryExtracter (#617) git-svn-id: http://svn.osgeo.org/geos/trunk@3758 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-25 Sandro Santilli * src/operation/valid/IsValidOp.cpp: IsValidOp: throw proper error - on nested shells (#608) Thanks geomworx git-svn-id: - http://svn.osgeo.org/geos/trunk@3755 + on nested shells (#608) Thanks geomworx git-svn-id: http://svn.osgeo.org/geos/trunk@3755 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-17 Sandro Santilli * include/geos/geom/BinaryOp.h, tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug615.xml: Only attempt to fix - self-intersection between multiple components Doing this reduces - the likelyhood of entering an infinite recursion whereas UnaryUnion - (meant to fix that) would enter the self-intersection attempt again. - Fixes #615 for which a test is added. This also gives us back an - exception with the input of ticket #488, which is the same behavior - JTS exposes. The (bogus) test for it is disabled by this commit. - git-svn-id: http://svn.osgeo.org/geos/trunk@3751 + self-intersection between multiple components Doing this reduces the likelyhood of entering an infinite recursion + whereas UnaryUnion (meant to fix that) would enter the + self-intersection attempt again. Fixes #615 for which a test is + added. This also gives us back an exception with the input of ticket #488, + which is the same behavior JTS exposes. The (bogus) test for it is + disabled by this commit. git-svn-id: http://svn.osgeo.org/geos/trunk@3751 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-14 Sandro Santilli @@ -6408,9 +11143,7 @@ src/algorithm/Makefile.am, src/geom/Geometry.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/tests/general/TestCentroid.xml: Fix EMPTY return - from single-point lines and zero-length polygons This commit ports - new Centroid class from JTS (#612) git-svn-id: - http://svn.osgeo.org/geos/trunk@3749 + from single-point lines and zero-length polygons This commit ports new Centroid class from JTS (#612) git-svn-id: http://svn.osgeo.org/geos/trunk@3749 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-14 Sandro Santilli @@ -6418,188 +11151,162 @@ * include/geos/algorithm/InteriorPointArea.h, src/algorithm/InteriorPointArea.cpp, tests/xmltester/tests/general/TestInteriorPoint.xml: Fix EMPTY - return from zero-area polygon (#613) git-svn-id: - http://svn.osgeo.org/geos/trunk@3748 + return from zero-area polygon (#613) git-svn-id: http://svn.osgeo.org/geos/trunk@3748 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-14 Sandro Santilli * tests/xmltester/XMLTester.cpp: Have XMLTester use POINT EMPTY for - a null return from getInteriorPoint git-svn-id: - http://svn.osgeo.org/geos/trunk@3747 + a null return from getInteriorPoint git-svn-id: http://svn.osgeo.org/geos/trunk@3747 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-14 Sandro Santilli * include/geos/util/Interrupt.h, src/util/Interrupt.cpp: Move static - class members of Interrupt out of header (#611) Patch by Mateusz - Loskot git-svn-id: http://svn.osgeo.org/geos/trunk@3744 + class members of Interrupt out of header (#611) Patch by Mateusz Loskot git-svn-id: http://svn.osgeo.org/geos/trunk@3744 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-11 Mateusz Loskot * tests/unit/triangulate/DelaunayTest.cpp: Missing QuadEdge.h - causing incomplete types. git-svn-id: - http://svn.osgeo.org/geos/trunk@3743 + causing incomplete types. git-svn-id: http://svn.osgeo.org/geos/trunk@3743 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-11 Mateusz Loskot - * nmake.opt: Report general and custom flags separately git-svn-id: - http://svn.osgeo.org/geos/trunk@3742 + * nmake.opt: Report general and custom flags separately git-svn-id: http://svn.osgeo.org/geos/trunk@3742 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-11 Sandro Santilli * src/algorithm/InteriorPointLine.cpp, tests/unit/capi/GEOSPointOnSurfaceTest.cpp: Fix GEOSPointOnSurface - with zero-length linestring (#609) git-svn-id: - http://svn.osgeo.org/geos/trunk@3741 + with zero-length linestring (#609) git-svn-id: http://svn.osgeo.org/geos/trunk@3741 5242fede-7e19-0410-aef8-94bd7d2200fb 2013-01-11 Mateusz Loskot * tests/unit/io/WKTReaderTest.cpp: Added test<7>() for the poorly - reported bug ticket #610 - bug not reproducible. git-svn-id: - http://svn.osgeo.org/geos/trunk@3740 + reported bug ticket #610 - bug not reproducible. git-svn-id: http://svn.osgeo.org/geos/trunk@3740 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-06 Sandro Santilli - * configure.in: See if AC_CONFIG_HEADERS makes winnie happier ... - and also how many other builds it breaks, if any git-svn-id: - http://svn.osgeo.org/geos/trunk@3737 + * configure.in: See if AC_CONFIG_HEADERS makes winnie happier ... and also how many other builds it breaks, if any git-svn-id: http://svn.osgeo.org/geos/trunk@3737 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-06 Sandro Santilli * src/Makefile.vc: Add missing classes to build script for evil - compiler Curtesy of Geoff Evans git-svn-id: - http://svn.osgeo.org/geos/trunk@3736 + compiler Curtesy of Geoff Evans git-svn-id: http://svn.osgeo.org/geos/trunk@3736 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-05 Sandro Santilli * src/operation/buffer/BufferOp.cpp: Add note about rounding in - fixed precision buffer op (#605) git-svn-id: - http://svn.osgeo.org/geos/trunk@3734 + fixed precision buffer op (#605) git-svn-id: http://svn.osgeo.org/geos/trunk@3734 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-05 Sandro Santilli * src/operation/buffer/BufferOp.cpp: Do not reduce precision below 6 - significant digits. Avoids gross results (preferring an exception) - See http://trac.osgeo.org/geos/ticket/605 git-svn-id: - http://svn.osgeo.org/geos/trunk@3733 + significant digits. Avoids gross results (preferring an exception) See + http://trac.osgeo.org/geos/ticket/605 git-svn-id: http://svn.osgeo.org/geos/trunk@3733 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-04 Sandro Santilli - * NEWS: Add note about BufferOp robustness improvement git-svn-id: - http://svn.osgeo.org/geos/trunk@3731 + * NEWS: Add note about BufferOp robustness improvement git-svn-id: http://svn.osgeo.org/geos/trunk@3731 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-04 Sandro Santilli * src/operation/buffer/BufferOp.cpp, tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug605.xml: Reduce coordinates - precision on robustness issues in BufferOp Fixes #605, adds test - for it git-svn-id: http://svn.osgeo.org/geos/trunk@3728 + precision on robustness issues in BufferOp Fixes #605, adds test for it git-svn-id: http://svn.osgeo.org/geos/trunk@3728 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-04 Sandro Santilli * src/operation/buffer/RightmostEdgeFinder.cpp: Fix an abort in - Buffer op (RightmostEdgeFinder) Rather than abort we throw a - TopologyException, because the problem seems to occur when noding - isn't correct. See http://trac.osgeo.org/geos/ticket/605 - git-svn-id: http://svn.osgeo.org/geos/trunk@3727 + Buffer op (RightmostEdgeFinder) Rather than abort we throw a TopologyException, because the problem + seems to occur when noding isn't correct. See + http://trac.osgeo.org/geos/ticket/605 git-svn-id: http://svn.osgeo.org/geos/trunk@3727 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-12-04 Sandro Santilli * tests/unit/Makefile.am, tests/unit/noding/OrientedCoordinateArray.cpp: Add unit test for - OrientedCoordinateArray git-svn-id: - http://svn.osgeo.org/geos/trunk@3726 + OrientedCoordinateArray git-svn-id: http://svn.osgeo.org/geos/trunk@3726 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-11-15 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug599.xml: Add automated test for #599 - (succeeds) git-svn-id: http://svn.osgeo.org/geos/trunk@3720 + (succeeds) git-svn-id: http://svn.osgeo.org/geos/trunk@3720 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-10-26 Sandro Santilli - * Makefile.am: Fix building outside the source tree git-svn-id: - http://svn.osgeo.org/geos/trunk@3719 + * Makefile.am: Fix building outside the source tree git-svn-id: http://svn.osgeo.org/geos/trunk@3719 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-10 Sandro Santilli * NEWS, src/triangulate/quadedge/QuadEdgeSubdivision.cpp, tests/unit/triangulate/DelaunayTest.cpp: Add Z support in delaunay - triangulation (#570) Thanks Benjamin Campbell git-svn-id: - http://svn.osgeo.org/geos/trunk@3716 + triangulation (#570) Thanks Benjamin Campbell git-svn-id: http://svn.osgeo.org/geos/trunk@3716 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-10 Sandro Santilli * tests/xmltester/tests/ticket/bug586.xml: Tweak the test for bug - 586 to succeed while still being small git-svn-id: - http://svn.osgeo.org/geos/trunk@3715 + 586 to succeed while still being small git-svn-id: http://svn.osgeo.org/geos/trunk@3715 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-10 Sandro Santilli * tests/xmltester/Makefile.am, - tests/xmltester/tests/ticket/bug586.xml: Add test for bug #586 - git-svn-id: http://svn.osgeo.org/geos/trunk@3712 + tests/xmltester/tests/ticket/bug586.xml: Add test for bug #586 git-svn-id: http://svn.osgeo.org/geos/trunk@3712 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-10 Sandro Santilli * include/geos/geom/BinaryOp.h: Do not try to fix valid geometries - (#586) git-svn-id: http://svn.osgeo.org/geos/trunk@3711 + (#586) git-svn-id: http://svn.osgeo.org/geos/trunk@3711 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-07 Sandro Santilli * swig/python/geos.py, swig/python/geos_wrap.cxx: Regenerate swig - files with swig 2.0.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@3710 + files with swig 2.0.4 git-svn-id: http://svn.osgeo.org/geos/trunk@3710 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-09-06 Sandro Santilli * php/README, php/test/test.php: Add support for phpunit 3.6 (not - loosing support for 3.4) I don't have phpunit-3.4 anymore so if - anyone does please see if "make check" still works (with php - enabled) NOTE: Ubuntu 10.04 ships phpunit 3.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@3708 + loosing support for 3.4) I don't have phpunit-3.4 anymore so if anyone does please see if + "make check" still works (with php enabled) NOTE: Ubuntu 10.04 ships phpunit 3.4 git-svn-id: http://svn.osgeo.org/geos/trunk@3708 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-07-27 Mateusz Loskot * src/Makefile.vc: Updated NMAKE makefile with recently added source - files (Ticket #574) git-svn-id: - http://svn.osgeo.org/geos/trunk@3705 + files (Ticket #574) git-svn-id: http://svn.osgeo.org/geos/trunk@3705 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-07-26 Sandro Santilli * include/geos/Makefile.am: Don't live triangulate includes out of - build (#573) Thanks Sandro Furieri git-svn-id: - http://svn.osgeo.org/geos/trunk@3704 + build (#573) Thanks Sandro Furieri git-svn-id: http://svn.osgeo.org/geos/trunk@3704 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-27 Sandro Santilli * tests/unit/capi/GEOSDelaunayTriangulationTest.cpp: Add test for - Delaunay triangulation with a tolerance git-svn-id: - http://svn.osgeo.org/geos/trunk@3703 + Delaunay triangulation with a tolerance git-svn-id: http://svn.osgeo.org/geos/trunk@3703 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-27 Sandro Santilli @@ -6607,22 +11314,19 @@ * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSDelaunayTriangulationTest.cpp: Expose Delaunay - triangulation to C-API (#565) git-svn-id: - http://svn.osgeo.org/geos/trunk@3702 + triangulation to C-API (#565) git-svn-id: http://svn.osgeo.org/geos/trunk@3702 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-27 Sandro Santilli * include/geos/triangulate/DelaunayTriangulationBuilder.h, src/triangulate/DelaunayTriangulationBuilder.cpp: Const-correct - getTriangles / getEdges and move to proper namespace git-svn-id: - http://svn.osgeo.org/geos/trunk@3701 + getTriangles / getEdges and move to proper namespace git-svn-id: http://svn.osgeo.org/geos/trunk@3701 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-27 Sandro Santilli - * include/geos/triangulate/IncrementalDelaunayTriangulator.h: indent - git-svn-id: http://svn.osgeo.org/geos/trunk@3700 + * include/geos/triangulate/IncrementalDelaunayTriangulator.h: indent git-svn-id: http://svn.osgeo.org/geos/trunk@3700 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-27 Sandro Santilli @@ -6644,33 +11348,23 @@ src/triangulate/quadedge/QuadEdgeSubdivision.cpp, src/triangulate/quadedge/TrianglePredicate.cpp, src/triangulate/quadedge/TriangleVisitor.cpp, - src/triangulate/quadedge/Vertex.cpp: Indent and port info style - git-svn-id: http://svn.osgeo.org/geos/trunk@3699 + src/triangulate/quadedge/Vertex.cpp: Indent and port info style git-svn-id: http://svn.osgeo.org/geos/trunk@3699 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-26 Mateusz Loskot * CMakeLists.txt: [CMake] Corrected description of default value for - GEOS_ENABLE_MACOSX_FRAMEWORK option git-svn-id: - http://svn.osgeo.org/geos/trunk@3697 + GEOS_ENABLE_MACOSX_FRAMEWORK option git-svn-id: http://svn.osgeo.org/geos/trunk@3697 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-26 Mateusz Loskot - * NEWS: Updated NEWS file with changes related to ticket #446 - git-svn-id: http://svn.osgeo.org/geos/trunk@3696 + * NEWS: Updated NEWS file with changes related to ticket #446 git-svn-id: http://svn.osgeo.org/geos/trunk@3696 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-26 Mateusz Loskot - * : Updated svn:ignore for tests/perf git-svn-id: - http://svn.osgeo.org/geos/trunk@3695 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2012-06-26 Sandro Santilli - - * include/geos/triangulate/DelaunayTriangulationBuilder.h: typo - git-svn-id: http://svn.osgeo.org/geos/trunk@3694 + * : Updated svn:ignore for tests/perf git-svn-id: http://svn.osgeo.org/geos/trunk@3695 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-26 Sandro Santilli @@ -6703,51 +11397,45 @@ tests/unit/triangulate/DelaunayTest.cpp, tests/unit/triangulate/quadedge/QuadEdgeSubdivisionTest.cpp, tests/unit/triangulate/quadedge/QuadEdgeTest.cpp: Port Delaunay - Triangulation API from JTS (#487) Work contributed by Benjamin - Campbell git-svn-id: http://svn.osgeo.org/geos/trunk@3693 + Triangulation API from JTS (#487) Work contributed by Benjamin Campbell git-svn-id: http://svn.osgeo.org/geos/trunk@3693 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-25 Mateusz Loskot * CMakeLists.txt: [CMake] Fixed incorrect SOVERSION value. The SOVERSION is now set with CAPI_VERSION_CURRENT - CAPI_VERSION_AGE - (Ticket #446) git-svn-id: http://svn.osgeo.org/geos/trunk@3692 + (Ticket #446) git-svn-id: http://svn.osgeo.org/geos/trunk@3692 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-25 Sandro Santilli - * HOWTO_RELEASE: Add tarball verification step git-svn-id: - http://svn.osgeo.org/geos/trunk@3691 + * HOWTO_RELEASE: Add tarball verification step git-svn-id: http://svn.osgeo.org/geos/trunk@3691 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-25 Sandro Santilli * capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSPointOnSurfaceTest.cpp: Always return POINT from - GEOSPointOnSurface, even for EMPTY (#561) git-svn-id: - http://svn.osgeo.org/geos/trunk@3684 + GEOSPointOnSurface, even for EMPTY (#561) git-svn-id: http://svn.osgeo.org/geos/trunk@3684 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-24 Mateusz Loskot * CMakeLists.txt, capi/CMakeLists.txt, src/CMakeLists.txt: [CMake] Set SOVERSION property on C API shared library using - CAPI_INTERFACE_* values (Ticket #446). git-svn-id: - http://svn.osgeo.org/geos/trunk@3683 + CAPI_INTERFACE_* values (Ticket #446). git-svn-id: http://svn.osgeo.org/geos/trunk@3683 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-22 Sandro Santilli * include/geos/algorithm/CentroidArea.h: Add note about handling of - degenerate polygons git-svn-id: - http://svn.osgeo.org/geos/trunk@3680 + degenerate polygons git-svn-id: http://svn.osgeo.org/geos/trunk@3680 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-22 Sandro Santilli * capi/geos_ts_c.cpp, tests/unit/capi/GEOSGetCentroidTest.cpp: - Always return POINT from GEOSGetCentroid, even for EMPTY (#560) - git-svn-id: http://svn.osgeo.org/geos/trunk@3679 + Always return POINT from GEOSGetCentroid, even for EMPTY (#560) git-svn-id: http://svn.osgeo.org/geos/trunk@3679 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-22 Sandro Santilli @@ -6755,57 +11443,50 @@ * include/geos/algorithm/CentroidArea.h, src/algorithm/CentroidArea.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSGetCentroidTest.cpp: Port robustness fix to - CentroidArea (#559) git-svn-id: - http://svn.osgeo.org/geos/trunk@3677 + CentroidArea (#559) git-svn-id: http://svn.osgeo.org/geos/trunk@3677 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-11 Sandro Santilli * tests/xmltester/Makefile.am: Retain GEOS_INLINE define while - building XMLTester (#319, #472) git-svn-id: - http://svn.osgeo.org/geos/trunk@3673 + building XMLTester (#319, #472) git-svn-id: http://svn.osgeo.org/geos/trunk@3673 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, include/geos/util/Interrupt.h, src/util/Interrupt.cpp, tests/unit/capi/GEOSInterruptTest.cpp: Allow - chaining interrupt callbacks, drop arg parameter git-svn-id: - http://svn.osgeo.org/geos/trunk@3672 + chaining interrupt callbacks, drop arg parameter git-svn-id: http://svn.osgeo.org/geos/trunk@3672 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli * capi/geos_ts_c.cpp, tests/unit/capi/GEOSInterruptTest.cpp: Revert - the interrupt request callback reset on initGEOS Once you set a - callback why would you want it unregistered on initGEOS ? You will - not want that.... git-svn-id: http://svn.osgeo.org/geos/trunk@3671 + the interrupt request callback reset on initGEOS Once you set a callback why would you want it unregistered on + initGEOS ? You will not want that.... git-svn-id: http://svn.osgeo.org/geos/trunk@3671 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli * src/util/Interrupt.cpp: Clear interruption request flag just - before interrupting git-svn-id: - http://svn.osgeo.org/geos/trunk@3670 + before interrupting git-svn-id: http://svn.osgeo.org/geos/trunk@3670 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli * capi/geos_c.h.in: Drop orphaned custom allocation signatures from - C-API header git-svn-id: http://svn.osgeo.org/geos/trunk@3669 + C-API header git-svn-id: http://svn.osgeo.org/geos/trunk@3669 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli * tests/unit/capi/GEOSInterruptTest.cpp: Test that initGEOS clears - the interrupt callback Also explicitly cleanup the callback after - each test. git-svn-id: http://svn.osgeo.org/geos/trunk@3668 + the interrupt callback Also explicitly cleanup the callback after each test. git-svn-id: http://svn.osgeo.org/geos/trunk@3668 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli - * capi/geos_ts_c.cpp: Unregister the interrupt request on initGEOS - git-svn-id: http://svn.osgeo.org/geos/trunk@3667 + * capi/geos_ts_c.cpp: Unregister the interrupt request on initGEOS git-svn-id: http://svn.osgeo.org/geos/trunk@3667 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-07 Sandro Santilli @@ -6813,67 +11494,58 @@ * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, include/geos/util/Interrupt.h, src/util/Interrupt.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSInterruptTest.cpp: Add - support for registering interruption-checking callback. This is to - enhance flexibility of the interruption request model. git-svn-id: - http://svn.osgeo.org/geos/trunk@3666 + support for registering interruption-checking callback. This is to enhance flexibility of the interruption request model. git-svn-id: http://svn.osgeo.org/geos/trunk@3666 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-06 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSConvexHullTest.cpp: - Enable capi::GEOSConvexHull test, and fix it (#555) git-svn-id: - http://svn.osgeo.org/geos/trunk@3665 + Enable capi::GEOSConvexHull test, and fix it (#555) git-svn-id: http://svn.osgeo.org/geos/trunk@3665 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-06-06 Sandro Santilli * README, src/Makefile.am: Clarify problems with linking against C++ - api (#553) Path by Greg Troxel. git-svn-id: - http://svn.osgeo.org/geos/trunk@3663 + api (#553) Path by Greg Troxel. git-svn-id: http://svn.osgeo.org/geos/trunk@3663 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli * include/geos/algorithm/distance/PointPairDistance.h: No need to - forward declare Coordinate (full definition included) git-svn-id: - http://svn.osgeo.org/geos/trunk@3657 + forward declare Coordinate (full definition included) git-svn-id: http://svn.osgeo.org/geos/trunk@3657 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli * include/geos/geom/Coordinate.h, include/geos/geom/Coordinate.inl: - Do not define an empty destructor for Coordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@3656 + Do not define an empty destructor for Coordinate git-svn-id: http://svn.osgeo.org/geos/trunk@3656 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli - * Makefile.am: Make sure to build geos_svn_config.h git-svn-id: - http://svn.osgeo.org/geos/trunk@3655 + * Makefile.am: Make sure to build geos_svn_config.h git-svn-id: http://svn.osgeo.org/geos/trunk@3655 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli * Makefile.am, capi/geos_ts_c.cpp: Include SVN revision in - GEOSversion output git-svn-id: http://svn.osgeo.org/geos/trunk@3654 + GEOSversion output git-svn-id: http://svn.osgeo.org/geos/trunk@3654 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli - * tools/svn_repo_revision.sh: Fix revision file path git-svn-id: - http://svn.osgeo.org/geos/trunk@3653 + * tools/svn_repo_revision.sh: Fix revision file path git-svn-id: http://svn.osgeo.org/geos/trunk@3653 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli - * tools/svn_repo_revision.sh: Fix test for directory existance - git-svn-id: http://svn.osgeo.org/geos/trunk@3652 + * tools/svn_repo_revision.sh: Fix test for directory existance git-svn-id: http://svn.osgeo.org/geos/trunk@3652 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli * tools/svn_repo_revision.sh: Add script to fetch SVN revision from - git or SVN git-svn-id: http://svn.osgeo.org/geos/trunk@3651 + git or SVN git-svn-id: http://svn.osgeo.org/geos/trunk@3651 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-29 Sandro Santilli @@ -7264,28 +11936,25 @@ src/util/Profiler.cpp, tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h, tests/xmltester/CTS.cpp, tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/Stackwalker.h: Drop embedded RCS logs git-svn-id: - http://svn.osgeo.org/geos/trunk@3650 + tests/xmltester/Stackwalker.h: Drop embedded RCS logs git-svn-id: http://svn.osgeo.org/geos/trunk@3650 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-28 Sandro Santilli - * NEWS, {src => - include/geos}/operation/buffer/BufferInputLineSimplifier.h, + * NEWS, include/geos/operation/buffer/BufferInputLineSimplifier.h, include/geos/operation/buffer/Makefile.am, src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/BufferInputLineSimplifier.h, src/operation/buffer/Makefile.am, src/operation/buffer/OffsetCurveBuilder.cpp, src/operation/buffer/OffsetSegmentGenerator.cpp: Install - BufferInputLineSimplifier.h header (#548) Thanks ylan for the patch - git-svn-id: http://svn.osgeo.org/geos/trunk@3649 + BufferInputLineSimplifier.h header (#548) Thanks ylan for the patch git-svn-id: http://svn.osgeo.org/geos/trunk@3649 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-28 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Rename - interrupt request/cancel methods, cancel interrupt in init - git-svn-id: http://svn.osgeo.org/geos/trunk@3648 + interrupt request/cancel methods, cancel interrupt in init git-svn-id: http://svn.osgeo.org/geos/trunk@3648 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli @@ -7294,40 +11963,35 @@ include/geos/util/Makefile.am, src/util/CustomAllocators.cpp, src/util/Makefile.am, tests/unit/Makefile.am, tests/unit/capi/GEOSCustomAllocatorTest.cpp: Revert the whole custom - memory allocation work (#540) It wasn't well done. Pity. - git-svn-id: http://svn.osgeo.org/geos/trunk@3647 + memory allocation work (#540) It wasn't well done. Pity. git-svn-id: http://svn.osgeo.org/geos/trunk@3647 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in: Expose interrupt request cancel - to the C-API git-svn-id: http://svn.osgeo.org/geos/trunk@3646 + to the C-API git-svn-id: http://svn.osgeo.org/geos/trunk@3646 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli * include/geos/util/Interrupt.h: Add method to cancel an - interruption request in util::Interrupt git-svn-id: - http://svn.osgeo.org/geos/trunk@3645 + interruption request in util::Interrupt git-svn-id: http://svn.osgeo.org/geos/trunk@3645 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli * src/noding/MCIndexNoder.cpp: Add strategic check for interrupt in - MCIndexNoder loop Greatly increases interruptability of buffer - operations in presence of many polygons. git-svn-id: - http://svn.osgeo.org/geos/trunk@3644 + MCIndexNoder loop Greatly increases interruptability of buffer operations in presence + of many polygons. git-svn-id: http://svn.osgeo.org/geos/trunk@3644 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp, src/operation/overlay/OverlayOp.cpp: Check for interruption in - OverlayOp and BufferBuilder These are just two operations known to - take a lot of time. It'll take a better analisys to find appropriate - check point. The checks could as well be put within graph operation - loops or Coordinate constructors... git-svn-id: - http://svn.osgeo.org/geos/trunk@3643 + OverlayOp and BufferBuilder These are just two operations known to take a lot of time. It'll + take a better analisys to find appropriate check point. The checks could as well be put within graph operation loops or + Coordinate constructors... git-svn-id: http://svn.osgeo.org/geos/trunk@3643 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-25 Sandro Santilli @@ -7335,18 +11999,15 @@ * capi/geos_c.cpp, capi/geos_c.h.in, include/geos/util/Interrupt.h, include/geos/util/Makefile.am, src/util/Interrupt.cpp, src/util/Makefile.am: Initial support for an explicit mechanism to - request interruption This commit provides a - GEOS_CHECK_FOR_INTERRUPTS macro for internal use but adds no users. - Early tests shows that registering a SIGINT handler is an effective - way to request interruption of running GEOS operations. git-svn-id: - http://svn.osgeo.org/geos/trunk@3642 + request interruption This commit provides a GEOS_CHECK_FOR_INTERRUPTS macro for internal + use but adds no users. Early tests shows that registering a SIGINT handler is an effective + way to request interruption of running GEOS operations. git-svn-id: http://svn.osgeo.org/geos/trunk@3642 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-24 Sandro Santilli * include/geos/geom/Geometry.h, src/geom/Geometry.cpp: Don't call - GeometryFactory::getDefaultInstance() at startup (#540) git-svn-id: - http://svn.osgeo.org/geos/trunk@3641 + GeometryFactory::getDefaultInstance() at startup (#540) git-svn-id: http://svn.osgeo.org/geos/trunk@3641 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-24 Mateusz Loskot @@ -7373,46 +12034,32 @@ * include/geos/noding/GeometryNoder.h, include/geos/util/CustomAllocators.h: Added missing GEOS_DLL - directive to GeometryNoder and custom allocators. git-svn-id: - http://svn.osgeo.org/geos/trunk@3638 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2012-05-23 Mateusz Loskot - - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@3637 + directive to GeometryNoder and custom allocators. git-svn-id: http://svn.osgeo.org/geos/trunk@3638 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-23 Mateusz Loskot - * capi/geos_c.h.in, capi/geos_ts_c.cpp, - include/geos/util/CustomAllocators.h, - src/util/CustomAllocators.cpp, - tests/unit/capi/GEOSCustomAllocatorTest.cpp: Renamed Freer to - Deallocator git-svn-id: http://svn.osgeo.org/geos/trunk@3636 + * : Updated svn:ignore patterns git-svn-id: http://svn.osgeo.org/geos/trunk@3637 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-23 Mateusz Loskot * capi/geos_ts_c.cpp: Missing namespace prevented Visual C++ - compiler to find GEOSAllocator and GEOSFreer git-svn-id: - http://svn.osgeo.org/geos/trunk@3635 + compiler to find GEOSAllocator and GEOSFreer git-svn-id: http://svn.osgeo.org/geos/trunk@3635 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-16 Sandro Santilli * src/util/CustomAllocators.cpp, tests/unit/capi/GEOSCustomAllocatorTest.cpp: Fix CustomAllocators to - really use the custom allocators Improve the unit test for it - git-svn-id: http://svn.osgeo.org/geos/trunk@3633 + really use the custom allocators Improve the unit test for it git-svn-id: http://svn.osgeo.org/geos/trunk@3633 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-16 Sandro Santilli * src/geom/GeometryFactory.cpp: Lazily create default - GeometryFactory instance (#540) Seems to fix a problem with - mismatch of allocator and deallocator for the static object - git-svn-id: http://svn.osgeo.org/geos/trunk@3632 + GeometryFactory instance (#540) Seems to fix a problem with mismatch of allocator and deallocator + for the static object git-svn-id: http://svn.osgeo.org/geos/trunk@3632 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-16 Sandro Santilli @@ -7422,9 +12069,7 @@ include/geos/util/Makefile.am, src/util/CustomAllocators.cpp, src/util/Makefile.am, tests/unit/Makefile.am, tests/unit/capi/GEOSCustomAllocatorTest.cpp: Allow passing custom - memory managment functions (#540) This is both in the C++ library - _and_ the C library. git-svn-id: - http://svn.osgeo.org/geos/trunk@3631 + memory managment functions (#540) This is both in the C++ library _and_ the C library. git-svn-id: http://svn.osgeo.org/geos/trunk@3631 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-16 Mateusz Loskot @@ -7436,8 +12081,7 @@ 2012-05-14 Sandro Santilli * src/operation/polygonize/EdgeRing.cpp: Reduce calls to - ptNotInList, greatly speeding up Polygonizer (#545) git-svn-id: - http://svn.osgeo.org/geos/trunk@3629 + ptNotInList, greatly speeding up Polygonizer (#545) git-svn-id: http://svn.osgeo.org/geos/trunk@3629 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-09 Sandro Santilli @@ -7447,91 +12091,78 @@ src/simplify/TaggedLineStringSimplifier.cpp, src/simplify/TopologyPreservingSimplifier.cpp, tests/unit/simplify/TopologyPreservingSimplifierTest.cpp: Fix - TopologyPreservingSimplifier invalid output on closed line (#508) - git-svn-id: http://svn.osgeo.org/geos/trunk@3627 + TopologyPreservingSimplifier invalid output on closed line (#508) git-svn-id: http://svn.osgeo.org/geos/trunk@3627 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-09 Sandro Santilli - * php/geos.c: Add support for PHP 5.4 (#513) -- thanks voxik - git-svn-id: http://svn.osgeo.org/geos/trunk@3625 + * php/geos.c: Add support for PHP 5.4 (#513) -- thanks voxik git-svn-id: http://svn.osgeo.org/geos/trunk@3625 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-08 Sandro Santilli * src/geom/Geometry.cpp: Envelope-based short-circuit for - Geometry->symDifference (#543) git-svn-id: - http://svn.osgeo.org/geos/trunk@3623 + Geometry->symDifference (#543) git-svn-id: http://svn.osgeo.org/geos/trunk@3623 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-08 Sandro Santilli * capi/geos_ts_c.cpp, tests/xmltester/XMLTester.cpp: Geometry - methods do use BinaryOp internally + shortcuts (#542) This commit - changes both XMLTester and C-API to not use BinaryOp directly but - rather rely on geometry methods to do that. git-svn-id: - http://svn.osgeo.org/geos/trunk@3621 + methods do use BinaryOp internally + shortcuts (#542) This commit changes both XMLTester and C-API to not use BinaryOp + directly but rather rely on geometry methods to do that. git-svn-id: http://svn.osgeo.org/geos/trunk@3621 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-04 Sandro Santilli * include/geos/noding/GeometryNoder.h, src/noding/GeometryNoder.cpp: - Correct include directives for GeometryNoder (#538) git-svn-id: - http://svn.osgeo.org/geos/trunk@3619 + Correct include directives for GeometryNoder (#538) git-svn-id: http://svn.osgeo.org/geos/trunk@3619 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-04 Sandro Santilli * acsite.m4: Update PGAC_TYPE_64BIT_INT for better cross-compiler - support (#534) git-svn-id: http://svn.osgeo.org/geos/trunk@3618 + support (#534) git-svn-id: http://svn.osgeo.org/geos/trunk@3618 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-05-03 Sandro Santilli - * tests/perf/ClassSizes.cpp: Check size of "intt64" git-svn-id: - http://svn.osgeo.org/geos/trunk@3616 + * tests/perf/ClassSizes.cpp: Check size of "intt64" git-svn-id: http://svn.osgeo.org/geos/trunk@3616 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-27 Sandro Santilli - * NEWS, php/geos.c, php/test/test.php: Expose GEOSNode to PHP api - git-svn-id: http://svn.osgeo.org/geos/trunk@3615 + * NEWS, php/geos.c, php/test/test.php: Expose GEOSNode to PHP api git-svn-id: http://svn.osgeo.org/geos/trunk@3615 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-12 Sandro Santilli * src/geomgraph/Node.cpp, tests/unit/capi/GEOSUnaryUnionTest.cpp: - Throw an exception rather than aborting on NaN overlay input (#530) - git-svn-id: http://svn.osgeo.org/geos/trunk@3614 + Throw an exception rather than aborting on NaN overlay input (#530) git-svn-id: http://svn.osgeo.org/geos/trunk@3614 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-10 Sandro Santilli * src/noding/snapround/HotPixel.cpp: Abort if HotPixel is - constructed with zero scale (#529) git-svn-id: - http://svn.osgeo.org/geos/trunk@3612 + constructed with zero scale (#529) git-svn-id: http://svn.osgeo.org/geos/trunk@3612 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-10 Sandro Santilli * tests/xmltester/Makefile.am, - tests/xmltester/tests/ticket/bug527.xml: Add test for bug #527 - git-svn-id: http://svn.osgeo.org/geos/trunk@3611 + tests/xmltester/tests/ticket/bug527.xml: Add test for bug #527 git-svn-id: http://svn.osgeo.org/geos/trunk@3611 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-10 Sandro Santilli * include/geos/operation/union/UnaryUnionOp.h: Have UnaryUnion use - BinaryOp for the simple case See ticket #527 -- there's no infinite - loop triggered by our testsuite... git-svn-id: - http://svn.osgeo.org/geos/trunk@3609 + BinaryOp for the simple case See ticket #527 -- there's no infinite loop triggered by our + testsuite... git-svn-id: http://svn.osgeo.org/geos/trunk@3609 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-10 Sandro Santilli * include/geos/geom/BinaryOp.h: Reduce CommonBitsRemover harmful - effects during overlay op (#527) git-svn-id: - http://svn.osgeo.org/geos/trunk@3607 + effects during overlay op (#527) git-svn-id: http://svn.osgeo.org/geos/trunk@3607 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-10 Sandro Santilli @@ -7545,15 +12176,13 @@ src/precision/SimpleGeometryPrecisionReducer.cpp, tests/unit/Makefile.am, tests/unit/precision/GeometryPrecisionReducerTest.cpp: Port - GeometryPrecisionReducer, include testcase git-svn-id: - http://svn.osgeo.org/geos/trunk@3605 + GeometryPrecisionReducer, include testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3605 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-06 Sandro Santilli * src/geom/GeometryFactory.cpp: Deep copy Geometry with - GeometryFactory.createGeometry() Uses the CoordinateSequenceFactory - of the factory git-svn-id: http://svn.osgeo.org/geos/trunk@3604 + GeometryFactory.createGeometry() Uses the CoordinateSequenceFactory of the factory git-svn-id: http://svn.osgeo.org/geos/trunk@3604 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-06 Sandro Santilli @@ -7565,63 +12194,54 @@ src/geom/CoordinateArraySequence.cpp, src/geom/CoordinateArraySequenceFactory.cpp, src/geom/CoordinateSequenceFactory.cpp: Add CoordinateSequence deep - copy trhough CoordinateSequenceFactory git-svn-id: - http://svn.osgeo.org/geos/trunk@3603 + copy trhough CoordinateSequenceFactory git-svn-id: http://svn.osgeo.org/geos/trunk@3603 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * tests/unit/capi/GEOSNodeTest.cpp: Normalize noded geometry before - comparing with expected value In this way we can change the noding - implementation w/out breaking the tests. git-svn-id: - http://svn.osgeo.org/geos/trunk@3602 + comparing with expected value In this way we can change the noding implementation w/out breaking + the tests. git-svn-id: http://svn.osgeo.org/geos/trunk@3602 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * swig/python/geos_wrap.cxx: Regnerate geos wrapper with correct - version for this branch git-svn-id: - http://svn.osgeo.org/geos/trunk@3601 + version for this branch git-svn-id: http://svn.osgeo.org/geos/trunk@3601 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * swig/python/geos.py, swig/python/geos_wrap.cxx: Regenerate swig - wrappers with SWIG 1.3.40 git-svn-id: - http://svn.osgeo.org/geos/trunk@3599 + wrappers with SWIG 1.3.40 git-svn-id: http://svn.osgeo.org/geos/trunk@3599 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * src/noding/snapround/SimpleSnapRounder.cpp: Fix - SimpleSnapRounder::getNodedSubstrings, fix leak on exception - git-svn-id: http://svn.osgeo.org/geos/trunk@3598 + SimpleSnapRounder::getNodedSubstrings, fix leak on exception git-svn-id: http://svn.osgeo.org/geos/trunk@3598 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli - * src/noding/GeometryNoder.cpp: Clean memory on exception - git-svn-id: http://svn.osgeo.org/geos/trunk@3597 + * src/noding/GeometryNoder.cpp: Clean memory on exception git-svn-id: http://svn.osgeo.org/geos/trunk@3597 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * include/geos/noding/NodedSegmentString.h: Generalize - NodedSegmentString::getNodedSubstrings git-svn-id: - http://svn.osgeo.org/geos/trunk@3596 + NodedSegmentString::getNodedSubstrings git-svn-id: http://svn.osgeo.org/geos/trunk@3596 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * tests/unit/capi/GEOSNodeTest.cpp: Ensure GEOSNode doesn't throw an - exception with current tests git-svn-id: - http://svn.osgeo.org/geos/trunk@3595 + exception with current tests git-svn-id: http://svn.osgeo.org/geos/trunk@3595 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli - * NEWS: Add note about GEOSNode git-svn-id: - http://svn.osgeo.org/geos/trunk@3594 + * NEWS: Add note about GEOSNode git-svn-id: http://svn.osgeo.org/geos/trunk@3594 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli @@ -7631,69 +12251,60 @@ include/geos/noding/Makefile.am, src/noding/GeometryNoder.cpp, src/noding/IteratedNoder.cpp, src/noding/Makefile.am, tests/unit/Makefile.am, tests/unit/capi/GEOSNodeTest.cpp: Add - GEOSNode C-API interface (#496) Includes a new GeometryNoder C++ - class and regression testing. git-svn-id: - http://svn.osgeo.org/geos/trunk@3593 + GEOSNode C-API interface (#496) Includes a new GeometryNoder C++ class and regression testing. git-svn-id: http://svn.osgeo.org/geos/trunk@3593 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli - * src/noding/IteratedNoder.cpp: Fix memory leak with IteratedNoder - git-svn-id: http://svn.osgeo.org/geos/trunk@3592 + * src/noding/IteratedNoder.cpp: Fix memory leak with IteratedNoder git-svn-id: http://svn.osgeo.org/geos/trunk@3592 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * include/geos/noding/IteratedNoder.h, src/noding/IteratedNoder.cpp: - Update port info and cleanup IteratedNoder git-svn-id: - http://svn.osgeo.org/geos/trunk@3591 + Update port info and cleanup IteratedNoder git-svn-id: http://svn.osgeo.org/geos/trunk@3591 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * include/geos/geomgraph/EdgeList.h, include/geos/noding/OrientedCoordinateArray.h: Make - OrientedCoordinateArray comparable git-svn-id: - http://svn.osgeo.org/geos/trunk@3590 + OrientedCoordinateArray comparable git-svn-id: http://svn.osgeo.org/geos/trunk@3590 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-05 Sandro Santilli * include/geos/noding/OrientedCoordinateArray.h, src/noding/OrientedCoordinateArray.cpp: Make OrientedCoordinateArray - assignable git-svn-id: http://svn.osgeo.org/geos/trunk@3589 + assignable git-svn-id: http://svn.osgeo.org/geos/trunk@3589 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-03 Sandro Santilli * include/geos/noding/OrientedCoordinateArray.h: Make - OrientedCoordinateArray copyable git-svn-id: - http://svn.osgeo.org/geos/trunk@3588 + OrientedCoordinateArray copyable git-svn-id: http://svn.osgeo.org/geos/trunk@3588 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-03 Sandro Santilli * include/geos/noding/snapround/MCIndexSnapRounder.h: Const-correct - PrecisionModel use in MCIndexSnapRounder git-svn-id: - http://svn.osgeo.org/geos/trunk@3587 + PrecisionModel use in MCIndexSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@3587 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-01 Paul Ramsey - * HOWTO_RELEASE: Update howto release git-svn-id: - http://svn.osgeo.org/geos/trunk@3585 + * HOWTO_RELEASE: Update howto release git-svn-id: http://svn.osgeo.org/geos/trunk@3585 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-04-01 Paul Ramsey * capi/geos_c.h.in: Sync up versions advertised in capi to those in - configure.in git-svn-id: http://svn.osgeo.org/geos/trunk@3583 + configure.in git-svn-id: http://svn.osgeo.org/geos/trunk@3583 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-03-27 Sandro Santilli - * src/operation/overlay/snap/LineStringSnapper.cpp: Indent.. - git-svn-id: http://svn.osgeo.org/geos/trunk@3576 + * src/operation/overlay/snap/LineStringSnapper.cpp: Indent.. git-svn-id: http://svn.osgeo.org/geos/trunk@3576 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-03-22 Sandro Santilli @@ -7701,32 +12312,28 @@ * src/simplify/TaggedLineString.cpp, src/simplify/TaggedLineStringSimplifier.cpp, tests/unit/simplify/TopologyPreservingSimplifierTest.cpp: Fix - simplification of collections with empty items (#519) git-svn-id: - http://svn.osgeo.org/geos/trunk@3575 + simplification of collections with empty items (#519) git-svn-id: http://svn.osgeo.org/geos/trunk@3575 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-02-20 Paul Ramsey - * CMakeLists.txt: Synch patch level version with autoconf number - git-svn-id: http://svn.osgeo.org/geos/trunk@3573 + * CMakeLists.txt: Synch patch level version with autoconf number git-svn-id: http://svn.osgeo.org/geos/trunk@3573 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-02-16 Paul Ramsey * src/algorithm/RobustDeterminant.cpp: Update provenance for Olivier - Devillers. git-svn-id: http://svn.osgeo.org/geos/trunk@3568 + Devillers. git-svn-id: http://svn.osgeo.org/geos/trunk@3568 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-16 Paul Ramsey - * src/algorithm/RobustDeterminant.cpp: More info on provenance. - git-svn-id: http://svn.osgeo.org/geos/trunk@3567 + * src/algorithm/RobustDeterminant.cpp: More info on provenance. git-svn-id: http://svn.osgeo.org/geos/trunk@3567 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-16 Paul Ramsey - * include/geos/timeval.h: Update provenenance git-svn-id: - http://svn.osgeo.org/geos/trunk@3566 + * include/geos/timeval.h: Update provenenance git-svn-id: http://svn.osgeo.org/geos/trunk@3566 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-16 Paul Ramsey @@ -8289,76 +12896,67 @@ tests/xmltester/XMLTester.h, tests/xmltester/safe_to_xml.sh, tests/xmltester/tests/robustness.xml: Complete Note#1 in the http://wiki.osgeo.org/wiki/GEOS_Provenance_Review to get out of - incubation. git-svn-id: http://svn.osgeo.org/geos/trunk@3565 + incubation. git-svn-id: http://svn.osgeo.org/geos/trunk@3565 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-07 Mateusz Loskot * CMakeLists.txt: Fixed (hopefully) CMake issues with std:: - namespace detection (Ticket #493) git-svn-id: - http://svn.osgeo.org/geos/trunk@3563 + namespace detection (Ticket #493) git-svn-id: http://svn.osgeo.org/geos/trunk@3563 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-07 Mateusz Loskot * tests/unit/capi/GEOSisValidDetailTest.cpp: Missing header - for toupper. Fixed Visual C++ warning. git-svn-id: - http://svn.osgeo.org/geos/trunk@3562 + for toupper. Fixed Visual C++ warning. git-svn-id: http://svn.osgeo.org/geos/trunk@3562 5242fede-7e19-0410-aef8-94bd7d2200fb 2012-01-06 Sandro Santilli * src/operation/buffer/BufferOp.cpp: Forward port: Fix MSVC - compilation of ambiguous log() call #506 git-svn-id: - http://svn.osgeo.org/geos/trunk@3561 + compilation of ambiguous log() call #506 git-svn-id: http://svn.osgeo.org/geos/trunk@3561 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-16 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp: Make debugging - output of LineStringSnapper more readable git-svn-id: - http://svn.osgeo.org/geos/trunk@3555 + output of LineStringSnapper more readable git-svn-id: http://svn.osgeo.org/geos/trunk@3555 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-15 Sandro Santilli * include/geos/geom/BinaryOp.h, tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug488.xml: Check validity after - snapping in BinaryOp. Fixes bug #488 Adds regression test. This is - a GEOS-only approach. git-svn-id: - http://svn.osgeo.org/geos/trunk@3553 + snapping in BinaryOp. Fixes bug #488 Adds regression test. This is a GEOS-only approach. git-svn-id: http://svn.osgeo.org/geos/trunk@3553 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-15 Sandro Santilli - * include/geos/operation/overlay/OverlayOp.h: indent git-svn-id: - http://svn.osgeo.org/geos/trunk@3550 + * include/geos/operation/overlay/OverlayOp.h: indent git-svn-id: http://svn.osgeo.org/geos/trunk@3550 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-15 Sandro Santilli * include/geos/geom/BinaryOp.h: Fix build with CBR_BEFORE_SNAPPING - undefined git-svn-id: http://svn.osgeo.org/geos/trunk@3548 + undefined git-svn-id: http://svn.osgeo.org/geos/trunk@3548 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-12 Howard Butler * src/operation/overlay/OverlayNodeFactory.cpp: apply patch for #500 - to fix clang's complaint about a missing default initialization - git-svn-id: http://svn.osgeo.org/geos/trunk@3546 + to fix clang's complaint about a missing default initialization git-svn-id: http://svn.osgeo.org/geos/trunk@3546 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-12 Sandro Santilli * src/algorithm/CGAlgorithms.cpp: Apply Shoelace formula for area - calculation (#485) git-svn-id: http://svn.osgeo.org/geos/trunk@3544 + calculation (#485) git-svn-id: http://svn.osgeo.org/geos/trunk@3544 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-12 Sandro Santilli * macros/geos.m4, tools/geos-config.in: Add --clibs to geos-config - and GEOS_C_LIBS to geos.m4 (#497) git-svn-id: - http://svn.osgeo.org/geos/trunk@3542 + and GEOS_C_LIBS to geos.m4 (#497) git-svn-id: http://svn.osgeo.org/geos/trunk@3542 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-09 Sandro Santilli @@ -8368,14 +12966,12 @@ include/geos/operation/overlay/snap/SnapOverlayOp.h, src/operation/overlay/snap/GeometrySnapper.cpp, src/operation/overlay/snap/SnapOverlayOp.cpp: Fix C++11 build by - avoiding std::pair (#491) git-svn-id: - http://svn.osgeo.org/geos/trunk@3540 + avoiding std::pair (#491) git-svn-id: http://svn.osgeo.org/geos/trunk@3540 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-09 Sandro Santilli - * .gitignore: Ignore built performance tests git-svn-id: - http://svn.osgeo.org/geos/trunk@3536 + * .gitignore: Ignore built performance tests git-svn-id: http://svn.osgeo.org/geos/trunk@3536 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-09 Sandro Santilli @@ -8385,10 +12981,9 @@ tests/xmltester/Makefile.am, tests/xmltester/tests/safe/TestBufferJagged.xml, tests/xmltester/tests/safe/buffer-1.01.xml: Improve buffer - robustness by reverting to non snaprounding noder This commit fixes - all cases reported in + robustness by reverting to non snaprounding noder This commit fixes all cases reported in http://trac.osgeo.org/geos/wiki/BufferRobustness They include #495 - and #494 git-svn-id: http://svn.osgeo.org/geos/trunk@3535 + and #494 git-svn-id: http://svn.osgeo.org/geos/trunk@3535 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-09 Sandro Santilli @@ -8399,9 +12994,8 @@ tests/xmltester/tests/general/TestUnaryUnion.xml, tests/xmltester/tests/general/TestUnaryUnionFloating.xml: Fix CascadedPolygonUnion to discard non-polygonal components created - during unioning This is to avoid failures and provide more - desirable behaviour. Includes automated testing. Closes ticket #499. - git-svn-id: http://svn.osgeo.org/geos/trunk@3534 + during unioning This is to avoid failures and provide more desirable behaviour. + Includes automated testing. Closes ticket #499. git-svn-id: http://svn.osgeo.org/geos/trunk@3534 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-07 Sandro Santilli @@ -8410,16 +13004,14 @@ include/geos/noding/snapround/MCIndexSnapRounder.h, src/noding/snapround/MCIndexPointSnapper.cpp, src/noding/snapround/MCIndexSnapRounder.cpp: Update port info for - MCIndexPointSnapper and MCIndexSnapRounder git-svn-id: - http://svn.osgeo.org/geos/trunk@3530 + MCIndexPointSnapper and MCIndexSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@3530 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-07 Sandro Santilli * tests/unit/Makefile.am, tests/unit/noding/snapround/MCIndexSnapRounderTest.cpp: Add a simple - test for MCIndexSnapRounderTest The test would fail before the fix - in r3528 git-svn-id: http://svn.osgeo.org/geos/trunk@3529 + test for MCIndexSnapRounderTest The test would fail before the fix in r3528 git-svn-id: http://svn.osgeo.org/geos/trunk@3529 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-06 Sandro Santilli @@ -8427,15 +13019,13 @@ * include/geos/noding/snapround/HotPixel.h, src/noding/snapround/HotPixel.cpp, tests/unit/Makefile.am, tests/unit/noding/snapround/HotPixelTest.cpp: HotPixel: do not - invalidate reference to original point. Fixes #498. git-svn-id: - http://svn.osgeo.org/geos/trunk@3528 + invalidate reference to original point. Fixes #498. git-svn-id: http://svn.osgeo.org/geos/trunk@3528 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-12-02 Sandro Santilli * tests/xmltester/tests/safe/buffer-1.01.xml: Add - tag to make the test runnable with JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@3525 + tag to make the test runnable with JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3525 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-30 Sandro Santilli @@ -8443,16 +13033,14 @@ * include/geos/noding/snapround/MCIndexSnapRounder.h, src/noding/snapround/MCIndexSnapRounder.cpp, tests/unit/operation/buffer/BufferOpTest.cpp: Fix MCIndexSnapRounder - use of provided precision model. Fixes bug #473 - (RightmostEdgeFinder assertion failure). Includes regression test. - git-svn-id: http://svn.osgeo.org/geos/trunk@3523 + use of provided precision model. Fixes bug #473 (RightmostEdgeFinder assertion failure). Includes + regression test. git-svn-id: http://svn.osgeo.org/geos/trunk@3523 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-29 Sandro Santilli * src/geom/Coordinate.cpp: Use 18 significant digits for - TopologyException point coordinates git-svn-id: - http://svn.osgeo.org/geos/trunk@3522 + TopologyException point coordinates git-svn-id: http://svn.osgeo.org/geos/trunk@3522 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-28 Sandro Santilli @@ -8460,30 +13048,25 @@ * src/operation/buffer/BufferBuilder.cpp, tests/xmltester/Makefile.am, tests/xmltester/tests/safe/buffer-1.01.xml: BufferBuilder: fix - handling of collapsed edges skipping. Fixes #494. Includes - regression test, provided by SAFE. git-svn-id: - http://svn.osgeo.org/geos/trunk@3520 + handling of collapsed edges skipping. Fixes #494. Includes regression test, provided by SAFE. git-svn-id: http://svn.osgeo.org/geos/trunk@3520 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-24 Sandro Santilli * macros/ruby.m4, swig/ruby/Makefile.am, swig/ruby/geos_wrap.cxx, - swig/ruby/ruby.i: Fix to get swig/ruby compiling for ruby 1.9 Patch - by Kashif Rasul git-svn-id: http://svn.osgeo.org/geos/trunk@3518 + swig/ruby/ruby.i: Fix to get swig/ruby compiling for ruby 1.9 Patch by Kashif Rasul git-svn-id: http://svn.osgeo.org/geos/trunk@3518 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-06 Mateusz Loskot * nmake.opt: * GEOS builds with Visual C++ from Visual Studio 11(Developer - Preview). * Added related _NMAKE_VER case to nmake.opt. git-svn-id: - http://svn.osgeo.org/geos/trunk@3517 + Preview). * Added related _NMAKE_VER case to nmake.opt. git-svn-id: http://svn.osgeo.org/geos/trunk@3517 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-04 Sandro Santilli * tests/unit/capi/GEOSisValidDetailTest.cpp: Allow any case in NaN - for testcase purposes (#486) git-svn-id: - http://svn.osgeo.org/geos/trunk@3515 + for testcase purposes (#486) git-svn-id: http://svn.osgeo.org/geos/trunk@3515 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-11-04 Sandro Santilli @@ -8491,36 +13074,25 @@ * src/operation/union/UnaryUnionOp.cpp, tests/unit/operation/union/UnaryUnionOpTest.cpp, tests/xmltester/tests/general/TestUnaryUnion.xml: Fix noding of - self-intersecting lines through UnaryUnion (#482) Includes updated - tests from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3514 + self-intersecting lines through UnaryUnion (#482) Includes updated tests from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3514 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-28 Mateusz Loskot - * : Updated svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@3511 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2011-10-27 Sandro Santilli - - * TODO: Add JTS triangulation api item git-svn-id: - http://svn.osgeo.org/geos/trunk@3510 + * : Updated svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@3511 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-26 Mateusz Loskot - * tests/unit/operation/buffer/BufferOpTest.cpp: * Test of two ways of executing buffer operation. * Test problems - with BufferOp when using BufferParameters reported by Markus Meyer. - * TODO: if possible, replace sample WKT with WKT from Markus. - git-svn-id: http://svn.osgeo.org/geos/trunk@3509 + * tests/unit/operation/buffer/BufferOpTest.cpp: * Test of two ways of executing buffer operation. * Test problems with BufferOp when using BufferParameters reported + by Markus Meyer. * TODO: if possible, replace sample WKT with WKT from Markus. git-svn-id: http://svn.osgeo.org/geos/trunk@3509 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-26 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/buffer/BufferParametersTest.cpp: Add test for - BufferParameters class git-svn-id: - http://svn.osgeo.org/geos/trunk@3508 + BufferParameters class git-svn-id: http://svn.osgeo.org/geos/trunk@3508 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-26 Sandro Santilli @@ -8531,33 +13103,30 @@ 2011-10-26 Sandro Santilli - * NEWS: Add missing CAPI additions of 3.3.0 to NEWS file - git-svn-id: http://svn.osgeo.org/geos/trunk@3504 + * NEWS: Add missing CAPI additions of 3.3.0 to NEWS file git-svn-id: http://svn.osgeo.org/geos/trunk@3504 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-19 Mateusz Loskot * CMakeLists.txt: Fixed CMAKE_CXX_FLAGS overridind -std=gnu++0x - (#489) git-svn-id: http://svn.osgeo.org/geos/trunk@3502 + (#489) git-svn-id: http://svn.osgeo.org/geos/trunk@3502 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-18 Mateusz Loskot * CMakeLists.txt: Missing 3.4.0 versions update in CMake - configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3501 + configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3501 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-05 Mateusz Loskot - * capi/geos_ts_c.cpp: Removed redundant casts between integer types - git-svn-id: http://svn.osgeo.org/geos/trunk@3499 + * capi/geos_ts_c.cpp: Removed redundant casts between integer types git-svn-id: http://svn.osgeo.org/geos/trunk@3499 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-05 Howard Butler * tests/unit/tut/tut_assert.hpp: declare these functions static - inline to silence unused-function warning git-svn-id: - http://svn.osgeo.org/geos/trunk@3498 + inline to silence unused-function warning git-svn-id: http://svn.osgeo.org/geos/trunk@3498 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-04 Howard Butler @@ -8586,39 +13155,29 @@ include/geos/util/IllegalStateException.h, include/geos/util/UnsupportedOperationException.h, src/precision/CommonBitsRemover.cpp: remove extra ;'s to satisfy - pedantic warning git-svn-id: http://svn.osgeo.org/geos/trunk@3497 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2011-10-04 Howard Butler - - * CMakeLists.txt: turn off framework building by default on APPLE - git-svn-id: http://svn.osgeo.org/geos/trunk@3495 + pedantic warning git-svn-id: http://svn.osgeo.org/geos/trunk@3497 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-04 Howard Butler - * : propsets to svn:ignore CMake build junk git-svn-id: - http://svn.osgeo.org/geos/trunk@3494 + * CMakeLists.txt: turn off framework building by default on APPLE git-svn-id: http://svn.osgeo.org/geos/trunk@3495 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-04 Howard Butler - * capi/CMakeLists.txt, src/CMakeLists.txt: fix up non-framework - CMake builds on APPLE git-svn-id: - http://svn.osgeo.org/geos/trunk@3493 + * : propsets to svn:ignore CMake build junk git-svn-id: http://svn.osgeo.org/geos/trunk@3494 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-10-04 Howard Butler * src/index/sweepline/SweepLineIndex.cpp: fix up order - initialization git-svn-id: http://svn.osgeo.org/geos/trunk@3492 + initialization git-svn-id: http://svn.osgeo.org/geos/trunk@3492 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-28 Mateusz Loskot - * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: * Added interesting test<11> case to Douglas-Peucker unit * Visual - C++ build on Windows x86-32 is all green and happy throwing ok:737 - git-svn-id: http://svn.osgeo.org/geos/trunk@3491 + * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: * Added interesting test<11> case to Douglas-Peucker unit * Visual C++ build on Windows x86-32 is all green and happy throwing + ok:737 git-svn-id: http://svn.osgeo.org/geos/trunk@3491 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-23 Sandro Santilli @@ -8635,17 +13194,13 @@ src/linearref/LinearIterator.cpp, src/linearref/LinearLocation.cpp, src/linearref/LocationIndexOfPoint.cpp: Fixed handling of Linear Referencing over MultiLineStrings to always return lowest index, and - to trim zero-length result components (#323) Includes test. This is - a port of JTS changesets 463, 464 and 465 git-svn-id: - http://svn.osgeo.org/geos/trunk@3484 + to trim zero-length result components (#323) Includes test. This is a port of JTS changesets 463, 464 and 465 git-svn-id: http://svn.osgeo.org/geos/trunk@3484 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-23 Sandro Santilli * tests/unit/linearref/LengthIndexedLineTest.cpp: Port updates to - the LenghtIndexedLineTest testcase (see #323) Note that the test - fails if the library isn't also fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@3483 + the LenghtIndexedLineTest testcase (see #323) Note that the test fails if the library isn't also fixed git-svn-id: http://svn.osgeo.org/geos/trunk@3483 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-23 Mateusz Loskot @@ -9300,7 +13855,7 @@ tests/xmltester/Stackwalker.h, tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, tools/CMakeLists.txt, tools/Makefile.am: Removed Subversion Id keyword from all text files - (#480) git-svn-id: http://svn.osgeo.org/geos/trunk@3482 + (#480) git-svn-id: http://svn.osgeo.org/geos/trunk@3482 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-23 Mateusz Loskot @@ -9914,15 +14469,13 @@ tests/xmltester/SingleSidedBufferResultMatcher.h, tests/xmltester/Stackwalker.h, tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, tools/CMakeLists.txt, - tools/Makefile.am: Removed Subversion svn:keywords property (#480) - git-svn-id: http://svn.osgeo.org/geos/trunk@3481 + tools/Makefile.am: Removed Subversion svn:keywords property (#480) git-svn-id: http://svn.osgeo.org/geos/trunk@3481 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-21 Sandro Santilli * swig/geos.i.in, swig/python/Makefile.am: Fix out-of-place build - for python binding (#332) git-svn-id: - http://svn.osgeo.org/geos/trunk@3475 + for python binding (#332) git-svn-id: http://svn.osgeo.org/geos/trunk@3475 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-20 Howard Butler @@ -9930,35 +14483,31 @@ * include/geos/geom/GeometryCollection.h: mark concrete implementations as non-virtual for GeometryCollection::computeEnvelopInternal and - GeometryCollection::compareToSameClass #478 git-svn-id: - http://svn.osgeo.org/geos/trunk@3472 + GeometryCollection::compareToSameClass #478 git-svn-id: http://svn.osgeo.org/geos/trunk@3472 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-20 Howard Butler - * include/geos/geom/GeometryFactory.h: apply clang fix for #463 - git-svn-id: http://svn.osgeo.org/geos/trunk@3470 + * include/geos/geom/GeometryFactory.h: apply clang fix for #463 git-svn-id: http://svn.osgeo.org/geos/trunk@3470 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-19 Mateusz Loskot * tests/unit/capi/GEOSisValidDetailTest.cpp: Disable unit test - relying on C99 feature if GEOS built using Visual C++ git-svn-id: - http://svn.osgeo.org/geos/trunk@3469 + relying on C99 feature if GEOS built using Visual C++ git-svn-id: http://svn.osgeo.org/geos/trunk@3469 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-17 Sandro Santilli * include/geos/platform.h.in: Use the global isnan from math.h for - Solaris (#461) git-svn-id: http://svn.osgeo.org/geos/trunk@3468 + Solaris (#461) git-svn-id: http://svn.osgeo.org/geos/trunk@3468 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-09-12 Sandro Santilli * src/algorithm/InteriorPointArea.cpp, tests/unit/Makefile.am, tests/unit/algorithm/InteriorPointAreaTest.cpp: Fix memory leak on - invalid geometry in InteriorPointArea (#475) git-svn-id: - http://svn.osgeo.org/geos/trunk@3465 + invalid geometry in InteriorPointArea (#475) git-svn-id: http://svn.osgeo.org/geos/trunk@3465 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-08-24 Sandro Santilli @@ -9967,7 +14516,7 @@ include/geos/operation/relate/RelateComputer.h, src/geom/util/SineStarFactory.cpp, src/operation/relate/RelateComputer.cpp: Fix warnings on MSVC 2008 - 64 Bit (#470) git-svn-id: http://svn.osgeo.org/geos/trunk@3463 + 64 Bit (#470) git-svn-id: http://svn.osgeo.org/geos/trunk@3463 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-08-20 Sandro Santilli @@ -9975,43 +14524,37 @@ * src/geom/GeometryCollection.cpp, src/geom/LineString.cpp, src/geom/Point.cpp, src/geom/Polygon.cpp, tests/unit/Makefile.am, tests/unit/geom/Geometry/clone.cpp: Forward port fix for #464 - (Geometry.clone SRID copy) git-svn-id: - http://svn.osgeo.org/geos/trunk@3461 + (Geometry.clone SRID copy) git-svn-id: http://svn.osgeo.org/geos/trunk@3461 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-08-19 Sandro Santilli * src/planargraph/DirectedEdge.cpp: Fix missing return from - DirectedEdge output operator git-svn-id: - http://svn.osgeo.org/geos/trunk@3458 + DirectedEdge output operator git-svn-id: http://svn.osgeo.org/geos/trunk@3458 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-08-19 Sandro Santilli * tests/perf/Makefile.am, tests/perf/capi/Makefile.am: Fix - out-of-source builds git-svn-id: - http://svn.osgeo.org/geos/trunk@3457 + out-of-source builds git-svn-id: http://svn.osgeo.org/geos/trunk@3457 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-08-06 Sandro Santilli * include/geos/noding/BasicSegmentString.h, src/inlines.cpp: Drop - dangling references to SegmentString.inl (ticket #467) git-svn-id: - http://svn.osgeo.org/geos/trunk@3456 + dangling references to SegmentString.inl (ticket #467) git-svn-id: http://svn.osgeo.org/geos/trunk@3456 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-27 Sandro Santilli * tests/perf/ClassSizes.cpp, tests/perf/Makefile.am: Add test file - printing sizes of some classes git-svn-id: - http://svn.osgeo.org/geos/trunk@3455 + printing sizes of some classes git-svn-id: http://svn.osgeo.org/geos/trunk@3455 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-27 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp: Earlier release of input - segment strings, earlier release of buffer subgraphs. git-svn-id: - http://svn.osgeo.org/geos/trunk@3454 + segment strings, earlier release of buffer subgraphs. git-svn-id: http://svn.osgeo.org/geos/trunk@3454 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-27 Sandro Santilli @@ -10021,8 +14564,7 @@ src/noding/SegmentNodeList.cpp, src/operation/buffer/BufferBuilder.cpp: Change Noder interface to transfer ownership of noded segment strings to caller. Delete them - as soon as converted to Edges in BufferOp. git-svn-id: - http://svn.osgeo.org/geos/trunk@3453 + as soon as converted to Edges in BufferOp. git-svn-id: http://svn.osgeo.org/geos/trunk@3453 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-26 Sandro Santilli @@ -10030,8 +14572,7 @@ * include/geos/noding/Makefile.am, include/geos/noding/SegmentString.h, include/geos/noding/SegmentString.inl, src/noding/SegmentString.cpp: - Update class documentation and port info. Drop empty .inl file. - git-svn-id: http://svn.osgeo.org/geos/trunk@3452 + Update class documentation and port info. Drop empty .inl file. git-svn-id: http://svn.osgeo.org/geos/trunk@3452 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-26 Sandro Santilli @@ -10050,8 +14591,7 @@ src/operation/buffer/OffsetCurveSetBuilder.cpp, tests/unit/noding/NodedSegmentStringTest.cpp, tests/unit/noding/SegmentNodeTest.cpp: Have NodedSegmentString take - ownership of CoordinateSequence git-svn-id: - http://svn.osgeo.org/geos/trunk@3451 + ownership of CoordinateSequence git-svn-id: http://svn.osgeo.org/geos/trunk@3451 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-26 Sandro Santilli @@ -10093,111 +14633,94 @@ src/operation/relate/RelateNode.cpp, src/operation/relate/RelateNodeGraph.cpp, src/operation/valid/ConnectedInteriorTester.cpp: Use - geomgraph::Label by value (less extra-heap), cleanups and port sync. - git-svn-id: http://svn.osgeo.org/geos/trunk@3450 + geomgraph::Label by value (less extra-heap), cleanups and port sync. git-svn-id: http://svn.osgeo.org/geos/trunk@3450 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-21 Sandro Santilli * include/geos/geomgraph/Label.h, src/geomgraph/Label.cpp: Make geomgraph::Label non virtual, implement assignment operator, drop - old logs, sync port info. git-svn-id: - http://svn.osgeo.org/geos/trunk@3449 + old logs, sync port info. git-svn-id: http://svn.osgeo.org/geos/trunk@3449 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-21 Sandro Santilli * include/geos/geomgraph/TopologyLocation.h, src/geomgraph/TopologyLocation.cpp: Add assignment operator to - TopologyLocation, drop old logs, sync port info git-svn-id: - http://svn.osgeo.org/geos/trunk@3448 + TopologyLocation, drop old logs, sync port info git-svn-id: http://svn.osgeo.org/geos/trunk@3448 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * include/geos/algorithm/ConvexHull.h, include/geos/algorithm/ConvexHull.inl, src/algorithm/ConvexHull.cpp: - Port JTS robustness fix for ConvexHull (ticket #457) git-svn-id: - http://svn.osgeo.org/geos/trunk@3444 + Port JTS robustness fix for ConvexHull (ticket #457) git-svn-id: http://svn.osgeo.org/geos/trunk@3444 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * tests/xmltester/XMLTester.cpp: Allow XML tests not to specify a - precision model, defaulting to floating This allows running some - JTS tests w/out touching them git-svn-id: - http://svn.osgeo.org/geos/trunk@3443 + precision model, defaulting to floating This allows running some JTS tests w/out touching them git-svn-id: http://svn.osgeo.org/geos/trunk@3443 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSDistanceTest.cpp: Add - unit test for bug #337. git-svn-id: - http://svn.osgeo.org/geos/trunk@3442 + unit test for bug #337. git-svn-id: http://svn.osgeo.org/geos/trunk@3442 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * tests/xmltester/Makefile.am: Reset CXXFLAGS for building - XMLTester, should fix bug #319 (non-c++98 tinyxml) git-svn-id: - http://svn.osgeo.org/geos/trunk@3441 + XMLTester, should fix bug #319 (non-c++98 tinyxml) git-svn-id: http://svn.osgeo.org/geos/trunk@3441 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp, tests/unit/capi/GEOSOffsetCurveTest.cpp: Have GEOSOffsetCurve with - distance 0 return the input (fixes bug #454) git-svn-id: - http://svn.osgeo.org/geos/trunk@3439 + distance 0 return the input (fixes bug #454) git-svn-id: http://svn.osgeo.org/geos/trunk@3439 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli - * NEWS: Add note about new BufferOp interface git-svn-id: - http://svn.osgeo.org/geos/trunk@3438 + * NEWS: Add note about new BufferOp interface git-svn-id: http://svn.osgeo.org/geos/trunk@3438 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * include/geos/operation/buffer/BufferOp.h: Add setSingleSided - interface to BufferOp-accessible BufferParam setters Patch by Tai - Meng git-svn-id: - http://svn.osgeo.org/geos/trunk@3437 + interface to BufferOp-accessible BufferParam setters Patch by Tai Meng git-svn-id: http://svn.osgeo.org/geos/trunk@3437 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * include/geos/planargraph/DirectedEdge.h, src/planargraph/DirectedEdge.cpp: Add output operator for - planargraph::DirectedEdge class git-svn-id: - http://svn.osgeo.org/geos/trunk@3436 + planargraph::DirectedEdge class git-svn-id: http://svn.osgeo.org/geos/trunk@3436 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli - * src/algorithm/RobustDeterminant.cpp: Drop unused variable - git-svn-id: http://svn.osgeo.org/geos/trunk@3435 + * src/algorithm/RobustDeterminant.cpp: Drop unused variable git-svn-id: http://svn.osgeo.org/geos/trunk@3435 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli - * tests/unit/operation/polygonize/PolygonizeTest.cpp: Add port info - git-svn-id: http://svn.osgeo.org/geos/trunk@3434 + * tests/unit/operation/polygonize/PolygonizeTest.cpp: Add port info git-svn-id: http://svn.osgeo.org/geos/trunk@3434 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-20 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/polygonize/PolygonizeTest.cpp: Port JTS unit - test for Polygonizer class (very light..) git-svn-id: - http://svn.osgeo.org/geos/trunk@3433 + test for Polygonizer class (very light..) git-svn-id: http://svn.osgeo.org/geos/trunk@3433 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-07 Sandro Santilli * src/operation/buffer/BufferParameters.cpp: Include platform.h, - fixing SOLARIS build. Patch by Tai Meng . - git-svn-id: http://svn.osgeo.org/geos/trunk@3432 + fixing SOLARIS build. Patch by Tai Meng . git-svn-id: http://svn.osgeo.org/geos/trunk@3432 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-06 Sandro Santilli @@ -10205,43 +14728,37 @@ * include/geos/geomgraph/GeometryGraph.h, include/geos/geomgraph/GeometryGraph.inl, src/geomgraph/GeometryGraph.cpp: Nodes always have labels (ported - JTS fix to GeometryGraph::insertBoundaryPoint). Update port info. - git-svn-id: http://svn.osgeo.org/geos/trunk@3429 + JTS fix to GeometryGraph::insertBoundaryPoint). Update port info. git-svn-id: http://svn.osgeo.org/geos/trunk@3429 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-06 Sandro Santilli * include/geos/geomgraph/Node.h, src/geomgraph/Node.cpp: Update port - info for geomgraph::Node after GEOS fix was ported to JTS - git-svn-id: http://svn.osgeo.org/geos/trunk@3428 + info for geomgraph::Node after GEOS fix was ported to JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3428 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli - * Makefile.am: svn update before running svn2cl git-svn-id: - http://svn.osgeo.org/geos/trunk@3427 + * Makefile.am: svn update before running svn2cl git-svn-id: http://svn.osgeo.org/geos/trunk@3427 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/operation/valid/IndexedNestedRingTester.cpp, src/operation/valid/IndexedNestedRingTester.h: Update port info for - IndexedNestedRingTester class git-svn-id: - http://svn.osgeo.org/geos/trunk@3425 + IndexedNestedRingTester class git-svn-id: http://svn.osgeo.org/geos/trunk@3425 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli - * NEWS: Changes of 3.3.1 do not belong in trunk (aimed at 3.4.0) - git-svn-id: http://svn.osgeo.org/geos/trunk@3424 + * NEWS: Changes of 3.3.1 do not belong in trunk (aimed at 3.4.0) git-svn-id: http://svn.osgeo.org/geos/trunk@3424 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/operation/valid/IndexedNestedRingTester.cpp, tests/xmltester/tests/general/TestValid.xml: Fix #449 (Assertion - fails checking validity of polygon) the JTS way. git-svn-id: - http://svn.osgeo.org/geos/trunk@3423 + fails checking validity of polygon) the JTS way. git-svn-id: http://svn.osgeo.org/geos/trunk@3423 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli @@ -10251,47 +14768,40 @@ tests/xmltester/tests/ticket/bug449.xml: Revert "When checking for validity, do not abort if every vertex of an hole is also a vertex of another one. Fixes bug #449, including regress testing." (will - redo the JTS way) This reverts commit - 7d2306c8dca2f0f1c5722640758578c1d59c7295. git-svn-id: - http://svn.osgeo.org/geos/trunk@3422 + redo the JTS way) This reverts commit 7d2306c8dca2f0f1c5722640758578c1d59c7295. git-svn-id: http://svn.osgeo.org/geos/trunk@3422 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/algorithm/MinimumDiameter.cpp: Initialize MinimumDiamiter::minPtIndex in the constructor, to make static - analisys tools happier git-svn-id: - http://svn.osgeo.org/geos/trunk@3417 + analisys tools happier git-svn-id: http://svn.osgeo.org/geos/trunk@3417 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/index/sweepline/SweepLineIndex.cpp: Initialize - SweepLineIndex::indexBuilt in ctor git-svn-id: - http://svn.osgeo.org/geos/trunk@3416 + SweepLineIndex::indexBuilt in ctor git-svn-id: http://svn.osgeo.org/geos/trunk@3416 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * include/geos/algorithm/LineIntersector.h: Initialize LineIntersector::isProperVar in constructor (not really needed but - makes less noise under static analisys tools) git-svn-id: - http://svn.osgeo.org/geos/trunk@3415 + makes less noise under static analisys tools) git-svn-id: http://svn.osgeo.org/geos/trunk@3415 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * include/geos/geom/prep/PreparedPoint.h, src/geom/prep/PreparedPoint.cpp: Fix bogus override of - PreparedGeometry::intersect by PreparedPoint git-svn-id: - http://svn.osgeo.org/geos/trunk@3414 + PreparedGeometry::intersect by PreparedPoint git-svn-id: http://svn.osgeo.org/geos/trunk@3414 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/index/quadtree/Node.cpp: Assert that the variable used as - array index is not negative before using it (quadtree) git-svn-id: - http://svn.osgeo.org/geos/trunk@3413 + array index is not negative before using it (quadtree) git-svn-id: http://svn.osgeo.org/geos/trunk@3413 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli @@ -10299,46 +14809,45 @@ * src/geomgraph/GeometryGraph.cpp: Avoid segfalting when an added node has no label in GeometryGraph::insertBoundaryPoint. See - https://sourceforge.net/tracker/?func=detail&aid=3353879&group_id=128875&atid=713120 git-svn-id: http://svn.osgeo.org/geos/trunk@3412 5242fede-7e19-0410-aef8-94bd7d2200fb + https://sourceforge.net/tracker/?func=detail&aid=3353879&group_id=128875&atid=713120git-svn-id: http://svn.osgeo.org/geos/trunk@3412 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/geomgraph/Node.cpp: Avoid segfaulting when Node.setLabelBoundary is called against a node with null label. See - https://sourceforge.net/tracker/?func=detail&aid=3353871&group_id=128875&atid=713120 git-svn-id: http://svn.osgeo.org/geos/trunk@3411 5242fede-7e19-0410-aef8-94bd7d2200fb + https://sourceforge.net/tracker/?func=detail&aid=3353871&group_id=128875&atid=713120git-svn-id: http://svn.osgeo.org/geos/trunk@3411 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/index/bintree/Node.cpp: Assert that the variable used as array - index is not negative before using it. git-svn-id: - http://svn.osgeo.org/geos/trunk@3410 + index is not negative before using it. git-svn-id: http://svn.osgeo.org/geos/trunk@3410 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-05 Sandro Santilli * src/util/Profiler.cpp: Do not dereference past-the-end iterator on - invalid call git-svn-id: http://svn.osgeo.org/geos/trunk@3409 + invalid call git-svn-id: http://svn.osgeo.org/geos/trunk@3409 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-01 Sandro Santilli * tests/unit/capi/GEOSBufferTest.cpp: Add test for ticket #455 (bad result from the deprecated GEOSSingleSidedBuffer). It passes here in - trunk, good! git-svn-id: http://svn.osgeo.org/geos/trunk@3398 + trunk, good! git-svn-id: http://svn.osgeo.org/geos/trunk@3398 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-07-01 Sandro Santilli - * NEWS: NEWS item about #449 git-svn-id: - http://svn.osgeo.org/geos/trunk@3397 + * NEWS: NEWS item about #449 git-svn-id: http://svn.osgeo.org/geos/trunk@3397 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-06-27 Sandro Santilli * configure.in: Bump versions up assuming a new minor release will - come out from trunk. Closes #453 git-svn-id: - http://svn.osgeo.org/geos/trunk@3394 + come out from trunk. Closes #453 git-svn-id: http://svn.osgeo.org/geos/trunk@3394 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-06-09 Sandro Santilli @@ -10347,108 +14856,93 @@ tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug449.xml: When checking for validity, do not abort if every vertex of an hole is also a vertex of another - one. Fixes bug #449, including regress testing. git-svn-id: - http://svn.osgeo.org/geos/trunk@3392 + one. Fixes bug #449, including regress testing. git-svn-id: http://svn.osgeo.org/geos/trunk@3392 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-06-02 Sandro Santilli - * php/test/test.php: Refine test for #448 git-svn-id: - http://svn.osgeo.org/geos/trunk@3390 + * php/test/test.php: Refine test for #448 git-svn-id: http://svn.osgeo.org/geos/trunk@3390 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-06-02 Sandro Santilli - * php/test/test.php: Add test for bug #448 git-svn-id: - http://svn.osgeo.org/geos/trunk@3389 + * php/test/test.php: Add test for bug #448 git-svn-id: http://svn.osgeo.org/geos/trunk@3389 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Sandro Santilli - * ChangeLog: Update for release git-svn-id: - http://svn.osgeo.org/geos/trunk@3387 + * ChangeLog: Update for release git-svn-id: http://svn.osgeo.org/geos/trunk@3387 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Sandro Santilli * NEWS, configure.in: Set version to 3.3.0 (final) - Set release - date to 2011-05-30 git-svn-id: http://svn.osgeo.org/geos/trunk@3386 + date to 2011-05-30 git-svn-id: http://svn.osgeo.org/geos/trunk@3386 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Mateusz Loskot * capi/CMakeLists.txt: Applied William\'s patch - capi_CMakeLists.txt.patch for OSX framework (Ticket #385) - git-svn-id: http://svn.osgeo.org/geos/trunk@3385 + capi_CMakeLists.txt.patch for OSX framework (Ticket #385) git-svn-id: http://svn.osgeo.org/geos/trunk@3385 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Mateusz Loskot * src/CMakeLists.txt: Applied William\'s patch * - src_CMakeLists.txt.patch Download added OSX framework (Ticket #385) - git-svn-id: http://svn.osgeo.org/geos/trunk@3384 + src_CMakeLists.txt.patch Download added OSX framework (Ticket #385) git-svn-id: http://svn.osgeo.org/geos/trunk@3384 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Mateusz Loskot * src/CMakeLists.txt: Applied William\'s patch with missing library - versions for OSX framework (Ticket #385) git-svn-id: - http://svn.osgeo.org/geos/trunk@3383 + versions for OSX framework (Ticket #385) git-svn-id: http://svn.osgeo.org/geos/trunk@3383 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-30 Mateusz Loskot * tests/bigtest/CMakeLists.txt, tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: Applied supplementary tests.patch - for 85 from William git-svn-id: - http://svn.osgeo.org/geos/trunk@3382 + for 85 from William git-svn-id: http://svn.osgeo.org/geos/trunk@3382 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-27 Sandro Santilli * src/Makefile.am: The mac framework info.plist.in from r3376 didn't - make it into the rc2 tarball. git-svn-id: - http://svn.osgeo.org/geos/trunk@3381 + make it into the rc2 tarball. git-svn-id: http://svn.osgeo.org/geos/trunk@3381 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-23 Sandro Santilli - * ChangeLog: updated for 3.3.0rc2 release git-svn-id: - http://svn.osgeo.org/geos/trunk@3378 + * ChangeLog: updated for 3.3.0rc2 release git-svn-id: http://svn.osgeo.org/geos/trunk@3378 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-23 Sandro Santilli - * configure.in: Set version to 3.3.0rc2 git-svn-id: - http://svn.osgeo.org/geos/trunk@3377 + * configure.in: Set version to 3.3.0rc2 git-svn-id: http://svn.osgeo.org/geos/trunk@3377 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-23 Mateusz Loskot * src/info.plist.in: Added src/info.plist.in file for OS X framework - build option in CMake configuration (Ticket #385) git-svn-id: - http://svn.osgeo.org/geos/trunk@3376 + build option in CMake configuration (Ticket #385) git-svn-id: http://svn.osgeo.org/geos/trunk@3376 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-22 Mateusz Loskot * CMakeLists.txt, capi/CMakeLists.txt, include/CMakeLists.txt, src/CMakeLists.txt, tools/CMakeLists.txt: Added OS X framework build - option to CMake configuration (Ticket #385) git-svn-id: - http://svn.osgeo.org/geos/trunk@3375 + option to CMake configuration (Ticket #385) git-svn-id: http://svn.osgeo.org/geos/trunk@3375 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-20 Sandro Santilli - * tests/perf/capi/memleak_mp_prep.c: add missing return from main - git-svn-id: http://svn.osgeo.org/geos/trunk@3374 + * tests/perf/capi/memleak_mp_prep.c: add missing return from main git-svn-id: http://svn.osgeo.org/geos/trunk@3374 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-19 Frank Warmerdam * src/operation/overlay/PolygonBuilder.cpp: shellCount checking - should not be DEBUG only now that we throw an exception (#398) - git-svn-id: http://svn.osgeo.org/geos/trunk@3373 + should not be DEBUG only now that we throw an exception (#398) git-svn-id: http://svn.osgeo.org/geos/trunk@3373 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-19 Frank Warmerdam @@ -10456,15 +14950,13 @@ * include/geos/noding/SegmentPointComparator.h, src/Makefile.vc, src/noding/snapround/MCIndexSnapRounder.cpp, src/operation/overlay/PolygonBuilder.cpp: Updates for Makefile.vc - builds and issues when building NDEBUG and no inlining git-svn-id: - http://svn.osgeo.org/geos/trunk@3372 + builds and issues when building NDEBUG and no inlining git-svn-id: http://svn.osgeo.org/geos/trunk@3372 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-19 Sandro Santilli * tests/perf/capi/Makefile.am: Fix build of prepared geoms memleak - tester on system w/out geos installed git-svn-id: - http://svn.osgeo.org/geos/trunk@3371 + tester on system w/out geos installed git-svn-id: http://svn.osgeo.org/geos/trunk@3371 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-18 Sandro Santilli @@ -10481,8 +14973,7 @@ include/geos/Makefile.am, src/Makefile.am, tests/Makefile.am, tests/bigtest/Makefile.am, tests/unit/Makefile.am, tests/xmltester/Makefile.am, tools/Makefile.am: Distribute cmake - build scripts. Fixes bug #441. git-svn-id: - http://svn.osgeo.org/geos/trunk@3369 + build scripts. Fixes bug #441. git-svn-id: http://svn.osgeo.org/geos/trunk@3369 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-17 Sandro Santilli @@ -10504,15 +14995,13 @@ 2011-05-16 Mateusz Loskot * include/geos/geom/util/SineStarFactory.h: Fixed buggy - self-assignment in SineStarFactory::setNumArms git-svn-id: - http://svn.osgeo.org/geos/trunk@3366 + self-assignment in SineStarFactory::setNumArms git-svn-id: http://svn.osgeo.org/geos/trunk@3366 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-16 Sandro Santilli * include/geos/platform.h.in: Quality ::finite and ::isfinite - symbols, when available, into the std:: namespace. Fixes bug #442. - git-svn-id: http://svn.osgeo.org/geos/trunk@3365 + symbols, when available, into the std:: namespace. Fixes bug #442. git-svn-id: http://svn.osgeo.org/geos/trunk@3365 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-13 Mateusz Loskot @@ -10523,14 +15012,13 @@ properly against GEOS C++ interface as the declspec(dllexport) is specified for the GEOS C++ DLL where declspec(dllimport) is expected. This commit fixes the issue (temporarily) by linking GEOS - C DLL against GEOS C++ static library. git-svn-id: - http://svn.osgeo.org/geos/trunk@3364 + C DLL against GEOS C++ static library. git-svn-id: http://svn.osgeo.org/geos/trunk@3364 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-13 Mateusz Loskot * include/geos/algorithm/Angle.h: Added missing DLL decspec for - Angle class git-svn-id: http://svn.osgeo.org/geos/trunk@3363 + Angle class git-svn-id: http://svn.osgeo.org/geos/trunk@3363 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-13 Mateusz Loskot @@ -10542,8 +15030,7 @@ 2011-05-12 Sandro Santilli - * NEWS: Add note about #357 fix git-svn-id: - http://svn.osgeo.org/geos/trunk@3361 + * NEWS: Add note about #357 fix git-svn-id: http://svn.osgeo.org/geos/trunk@3361 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli @@ -10551,21 +15038,19 @@ * src/algorithm/RobustDeterminant.cpp, tests/unit/capi/GEOSIntersectsTest.cpp: Have RobustDeterminant throw an IllegalArgument if passed any infinite or nan value. Fixes bug - #357. Includes regress test. git-svn-id: - http://svn.osgeo.org/geos/trunk@3360 + #357. Includes regress test. git-svn-id: http://svn.osgeo.org/geos/trunk@3360 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli * NEWS: Add note about the memory usage reduction in prepared geoms - (#342) git-svn-id: http://svn.osgeo.org/geos/trunk@3359 + (#342) git-svn-id: http://svn.osgeo.org/geos/trunk@3359 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli * src/noding/MCIndexSegmentSetMutualIntersector.cpp: Reserve vector - space, use ::size_type for vector indices. git-svn-id: - http://svn.osgeo.org/geos/trunk@3358 + space, use ::size_type for vector indices. git-svn-id: http://svn.osgeo.org/geos/trunk@3358 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli @@ -10573,29 +15058,25 @@ * include/geos/noding/MCIndexSegmentSetMutualIntersector.h, src/noding/MCIndexSegmentSetMutualIntersector.cpp: Don't let MCIndexSegmentSetMutualIntersector grow in memory on every new - ::process call. Fixes bug #342. git-svn-id: - http://svn.osgeo.org/geos/trunk@3357 + ::process call. Fixes bug #342. git-svn-id: http://svn.osgeo.org/geos/trunk@3357 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli * include/geos/index/chain/MonotoneChainBuilder.h, src/index/chain/MonotoneChainBuilder.cpp: Port info for - MonotoneChainBuilder git-svn-id: - http://svn.osgeo.org/geos/trunk@3356 + MonotoneChainBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@3356 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli * src/geom/prep/PreparedLineStringIntersects.cpp: Fix a memory leak - in PreparedLineStringIntersects::isAnyPointInRing git-svn-id: - http://svn.osgeo.org/geos/trunk@3355 + in PreparedLineStringIntersects::isAnyPointInRing git-svn-id: http://svn.osgeo.org/geos/trunk@3355 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli - * src/geom/prep/PreparedLineString.cpp: Drop commented out code - git-svn-id: http://svn.osgeo.org/geos/trunk@3354 + * src/geom/prep/PreparedLineString.cpp: Drop commented out code git-svn-id: http://svn.osgeo.org/geos/trunk@3354 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli @@ -10603,31 +15084,28 @@ * include/geos/geom/prep/PreparedLineStringIntersects.h, src/geom/prep/PreparedLineStringIntersects.cpp: Port info for PreparedLineStringIntersects, and avoid polluting the global - namespace git-svn-id: http://svn.osgeo.org/geos/trunk@3353 + namespace git-svn-id: http://svn.osgeo.org/geos/trunk@3353 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-12 Sandro Santilli * include/geos/geom/prep/AbstractPreparedPolygonContains.h, src/geom/prep/AbstractPreparedPolygonContains.cpp: Reduce heap - allocations in AbstractPreparedPolygonContains git-svn-id: - http://svn.osgeo.org/geos/trunk@3352 + allocations in AbstractPreparedPolygonContains git-svn-id: http://svn.osgeo.org/geos/trunk@3352 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli * include/geos/noding/FastSegmentSetIntersectionFinder.h, src/noding/FastSegmentSetIntersectionFinder.cpp: Port info for - FastSegmentSetIntersectionFinder git-svn-id: - http://svn.osgeo.org/geos/trunk@3351 + FastSegmentSetIntersectionFinder git-svn-id: http://svn.osgeo.org/geos/trunk@3351 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli * include/geos/noding/MCIndexSegmentSetMutualIntersector.h, src/noding/MCIndexSegmentSetMutualIntersector.cpp: Port info for - MCIndexSegmentSetMutualIntersector git-svn-id: - http://svn.osgeo.org/geos/trunk@3350 + MCIndexSegmentSetMutualIntersector git-svn-id: http://svn.osgeo.org/geos/trunk@3350 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli @@ -10635,38 +15113,34 @@ * configure.in, tests/perf/Makefile.am, tests/perf/capi/Makefile.am, tests/perf/capi/memleak_mp_prep.c, tests/perf/capi/memleak_mp_prep.sh: Import test for bug #342. It is - not automated as it's not general (requires bash) git-svn-id: - http://svn.osgeo.org/geos/trunk@3349 + not automated as it's not general (requires bash) git-svn-id: http://svn.osgeo.org/geos/trunk@3349 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli - * HOWTO_RELEASE: Producing a bzip2 tarball is easier than described - git-svn-id: http://svn.osgeo.org/geos/trunk@3348 + * HOWTO_RELEASE: Producing a bzip2 tarball is easier than described git-svn-id: http://svn.osgeo.org/geos/trunk@3348 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli - * ChangeLog, NEWS: Updated for 3.0.0rc1 release git-svn-id: - http://svn.osgeo.org/geos/trunk@3346 + * ChangeLog, NEWS: Updated for 3.0.0rc1 release git-svn-id: http://svn.osgeo.org/geos/trunk@3346 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli * php/geos.c, php/test/test.php: Add Geometry.offsetCurve to PHP - binding git-svn-id: http://svn.osgeo.org/geos/trunk@3345 + binding git-svn-id: http://svn.osgeo.org/geos/trunk@3345 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli * php/geos.c, php/test/test.php: Add single-sided buffering support - in PHP binding git-svn-id: http://svn.osgeo.org/geos/trunk@3344 + in PHP binding git-svn-id: http://svn.osgeo.org/geos/trunk@3344 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-11 Sandro Santilli - * configure.in: Set version to 3.0.0rc1 git-svn-id: - http://svn.osgeo.org/geos/trunk@3343 + * configure.in: Set version to 3.0.0rc1 git-svn-id: http://svn.osgeo.org/geos/trunk@3343 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli @@ -10675,15 +15149,13 @@ tests/unit/capi/GEOSOffsetCurveTest.cpp: Have GEOSOffsetCurve return LINESTRING EMPTY for collapsing lines (right offset on right-turning curve can do that). Regress test one such case, taken from - http://trac.osgeo.org/postgis/ticket/413. git-svn-id: - http://svn.osgeo.org/geos/trunk@3342 + http://trac.osgeo.org/postgis/ticket/413. git-svn-id: http://svn.osgeo.org/geos/trunk@3342 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSIntersectsTest.cpp: - Add test for 357 (doesn't succeed at failing) git-svn-id: - http://svn.osgeo.org/geos/trunk@3341 + Add test for 357 (doesn't succeed at failing) git-svn-id: http://svn.osgeo.org/geos/trunk@3341 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli @@ -10704,30 +15176,27 @@ non-unrolled computation, that is all paranoia aimed at making floats stored to match java IEEE. Since we get no failures in testsuite (our and postgis') I think it makes sense to have the code - as close as possible to the JTS one. git-svn-id: - http://svn.osgeo.org/geos/trunk@3339 + as close as possible to the JTS one. git-svn-id: http://svn.osgeo.org/geos/trunk@3339 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli * include/geos/algorithm/HCoordinate.h, - src/algorithm/HCoordinate.cpp: Update port info git-svn-id: - http://svn.osgeo.org/geos/trunk@3338 + src/algorithm/HCoordinate.cpp: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@3338 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli * tests/xmltester/tests/ticket/bug350.xml, tests/xmltester/tests/ticket/bug398.xml: Expect the same results - given by JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3337 + given by JTS git-svn-id: http://svn.osgeo.org/geos/trunk@3337 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-10 Sandro Santilli * include/geos/algorithm/HCoordinate.h, src/algorithm/HCoordinate.cpp: Bring hcoordinate back to double - precision (from long double) git-svn-id: - http://svn.osgeo.org/geos/trunk@3336 + precision (from long double) git-svn-id: http://svn.osgeo.org/geos/trunk@3336 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-09 Sandro Santilli @@ -10737,8 +15206,7 @@ change the expected result to match the one obtained by GEOS. It is not _exactly_ the same output obtained with JTS but close enough. Unfortunately both GEOS and JTS use an exact match for comparison so - we won't be able to share this test. git-svn-id: - http://svn.osgeo.org/geos/trunk@3335 + we won't be able to share this test. git-svn-id: http://svn.osgeo.org/geos/trunk@3335 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-09 Sandro Santilli @@ -10748,22 +15216,20 @@ include/geos/geomgraph/EdgeIntersectionList.h, src/algorithm/LineIntersector.cpp, src/geomgraph/Edge.cpp, src/geomgraph/EdgeIntersectionList.cpp: Use long double to compute - edge distance. Makes noding more robust, fixes bug #350. - git-svn-id: http://svn.osgeo.org/geos/trunk@3334 + edge distance. Makes noding more robust, fixes bug #350. git-svn-id: http://svn.osgeo.org/geos/trunk@3334 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli * include/geos/geomgraph/EdgeIntersection.h, src/geomgraph/EdgeIntersection.cpp, src/geomgraph/Makefile.am: Turn - EdgeIntersection into a concrete, fully-inlined, C++ class. - git-svn-id: http://svn.osgeo.org/geos/trunk@3333 + EdgeIntersection into a concrete, fully-inlined, C++ class. git-svn-id: http://svn.osgeo.org/geos/trunk@3333 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli * include/geos/geomgraph/index/MonotoneChain.h: Describe - MonotoneChain git-svn-id: http://svn.osgeo.org/geos/trunk@3332 + MonotoneChain git-svn-id: http://svn.osgeo.org/geos/trunk@3332 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli @@ -10771,7 +15237,7 @@ * src/geomgraph/Edge.cpp, src/geomgraph/EdgeIntersection.cpp, src/geomgraph/EdgeIntersectionList.cpp: Make output operators for Edge, EdgeIntersection and EdgeIntersectionList closer to JTS, for - easier comparison git-svn-id: http://svn.osgeo.org/geos/trunk@3331 + easier comparison git-svn-id: http://svn.osgeo.org/geos/trunk@3331 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli @@ -10780,30 +15246,26 @@ include/geos/geomgraph/EdgeIntersectionList.h, src/geomgraph/EdgeIntersection.cpp, src/geomgraph/EdgeIntersectionList.cpp: Output operator for - EdgeIntersection and EdgeIntersectionList git-svn-id: - http://svn.osgeo.org/geos/trunk@3330 + EdgeIntersection and EdgeIntersectionList git-svn-id: http://svn.osgeo.org/geos/trunk@3330 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli * include/geos/geomgraph/GeometryGraph.h, src/geomgraph/GeometryGraph.cpp: Drop book keeping of segment - intersectors, as we're transferring their ownership to caller anyway - git-svn-id: http://svn.osgeo.org/geos/trunk@3329 + intersectors, as we're transferring their ownership to caller anyway git-svn-id: http://svn.osgeo.org/geos/trunk@3329 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli * tests/xmltester/tests/ticket/bug350.xml: Re-add also the original - data in test for bug350, so nothing gets lost. git-svn-id: - http://svn.osgeo.org/geos/trunk@3328 + data in test for bug350, so nothing gets lost. git-svn-id: http://svn.osgeo.org/geos/trunk@3328 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli * src/geomgraph/GeometryGraph.cpp: Use logical (not bitwise) AND, - use dynamic_cast to map JTS's instanceof operator git-svn-id: - http://svn.osgeo.org/geos/trunk@3327 + use dynamic_cast to map JTS's instanceof operator git-svn-id: http://svn.osgeo.org/geos/trunk@3327 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-06 Sandro Santilli @@ -10811,7 +15273,7 @@ * tests/xmltester/tests/ticket/bug350.xml: Modify test for bug350 so to use pre-snapped geometries. Shows that the problem is not in snapping code, but after that (ie: JTS succeeds at fist shot on this - new input) git-svn-id: http://svn.osgeo.org/geos/trunk@3326 + new input) git-svn-id: http://svn.osgeo.org/geos/trunk@3326 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-04 Sandro Santilli @@ -10819,22 +15281,19 @@ * src/geom/prep/AbstractPreparedPolygonContains.cpp, tests/unit/capi/GEOSPreparedGeometryTest.cpp: Fix regression accidentally introduced by commit r3322 (Sean's). Add automated test - for it (was found trough PostGIS regression test) git-svn-id: - http://svn.osgeo.org/geos/trunk@3325 + for it (was found trough PostGIS regression test) git-svn-id: http://svn.osgeo.org/geos/trunk@3325 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-04 Sandro Santilli * src/operation/buffer/OffsetCurveBuilder.cpp: Drop useless and - unavailable include git-svn-id: - http://svn.osgeo.org/geos/trunk@3324 + unavailable include git-svn-id: http://svn.osgeo.org/geos/trunk@3324 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-03 Sean Gillies * src/geom/prep/AbstractPreparedPolygonContains.cpp, - src/geom/prep/PreparedPolygon.cpp: Damn these tabs git-svn-id: - http://svn.osgeo.org/geos/trunk@3323 + src/geom/prep/PreparedPolygon.cpp: Damn these tabs git-svn-id: http://svn.osgeo.org/geos/trunk@3323 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-05-03 Sean Gillies @@ -10842,8 +15301,7 @@ * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, src/geom/prep/AbstractPreparedPolygonContains.cpp, src/geom/prep/PreparedPolygon.cpp: Add missing prepared geometry - predicates to C API (#436) git-svn-id: - http://svn.osgeo.org/geos/trunk@3322 + predicates to C API (#436) git-svn-id: http://svn.osgeo.org/geos/trunk@3322 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli @@ -10853,37 +15311,32 @@ include/geos/operation/predicate/SegmentIntersectionTester.h, src/operation/predicate/RectangleIntersects.cpp, src/operation/predicate/SegmentIntersectionTester.cpp: Improve - performance of RectangleIntersects (of one order of magnitude). - git-svn-id: http://svn.osgeo.org/geos/trunk@3321 + performance of RectangleIntersects (of one order of magnitude). git-svn-id: http://svn.osgeo.org/geos/trunk@3321 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp: - More concise output from performance tester git-svn-id: - http://svn.osgeo.org/geos/trunk@3320 + More concise output from performance tester git-svn-id: http://svn.osgeo.org/geos/trunk@3320 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * src/noding/ScaledNoder.cpp, src/operation/buffer/BufferOp.cpp: - Hush uncontrolled debugging prints git-svn-id: - http://svn.osgeo.org/geos/trunk@3319 + Hush uncontrolled debugging prints git-svn-id: http://svn.osgeo.org/geos/trunk@3319 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * include/geos/operation/relate/RelateComputer.h, src/operation/relate/RelateComputer.cpp: Plug leak on exception in - RelateComputer (exposed by running doc/example) git-svn-id: - http://svn.osgeo.org/geos/trunk@3318 + RelateComputer (exposed by running doc/example) git-svn-id: http://svn.osgeo.org/geos/trunk@3318 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * src/geom/Geometry.cpp: Do not leak on exception during relational - geometry predicates git-svn-id: - http://svn.osgeo.org/geos/trunk@3317 + geometry predicates git-svn-id: http://svn.osgeo.org/geos/trunk@3317 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli @@ -10891,21 +15344,18 @@ * configure.in, tests/perf/operation/Makefile.am, tests/perf/operation/predicate/Makefile.am, tests/perf/operation/predicate/RectangleIntersectsPerfTest.cpp: Port - RectangleIntersects performance test from JTS-1.12 git-svn-id: - http://svn.osgeo.org/geos/trunk@3316 + RectangleIntersects performance test from JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3316 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * src/operation/predicate/RectangleIntersects.cpp: Do not leak - memory during rectangle intersects predicate git-svn-id: - http://svn.osgeo.org/geos/trunk@3315 + memory during rectangle intersects predicate git-svn-id: http://svn.osgeo.org/geos/trunk@3315 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli - * src/operation/overlay/OverlayOp.cpp: Drop unneeded include - git-svn-id: http://svn.osgeo.org/geos/trunk@3314 + * src/operation/overlay/OverlayOp.cpp: Drop unneeded include git-svn-id: http://svn.osgeo.org/geos/trunk@3314 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli @@ -10916,16 +15366,14 @@ src/geom/util/Makefile.am, src/geom/util/SineStarFactory.cpp, src/util/GeometricShapeFactory.cpp: Port geos::geom::util::SineStarFactory from JTS-1.12, useful for - profile-test RectangleIntersects. git-svn-id: - http://svn.osgeo.org/geos/trunk@3313 + profile-test RectangleIntersects. git-svn-id: http://svn.osgeo.org/geos/trunk@3313 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-28 Sandro Santilli * src/geomgraph/EdgeIntersectionList.cpp, src/geomgraph/NodeMap.cpp, src/operation/valid/IsValidOp.cpp: Trim - old embedded history log (from CVS times) git-svn-id: - http://svn.osgeo.org/geos/trunk@3312 + old embedded history log (from CVS times) git-svn-id: http://svn.osgeo.org/geos/trunk@3312 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli @@ -10933,15 +15381,13 @@ * include/geos/algorithm/CGAlgorithms.h, src/algorithm/CGAlgorithms.cpp, tests/unit/Makefile.am, tests/unit/algorithm/CGAlgorithms/signedAreaTest.cpp: Improve speed - of Geometry.getArea, unit-test it. git-svn-id: - http://svn.osgeo.org/geos/trunk@3311 + of Geometry.getArea, unit-test it. git-svn-id: http://svn.osgeo.org/geos/trunk@3311 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * tools/findclassfiles: Match full class names, not partial. Allow - specifying a package name. git-svn-id: - http://svn.osgeo.org/geos/trunk@3310 + specifying a package name. git-svn-id: http://svn.osgeo.org/geos/trunk@3310 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli @@ -10958,22 +15404,20 @@ src/operation/linemerge/LineMergeGraph.cpp, src/operation/linemerge/LineMerger.cpp, src/operation/linemerge/LineSequencer.cpp: Sync linemerge package to - JTS-1.12 (nothing changed) git-svn-id: - http://svn.osgeo.org/geos/trunk@3309 + JTS-1.12 (nothing changed) git-svn-id: http://svn.osgeo.org/geos/trunk@3309 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * tools/findclassfiles: Utility script to help with editing all - files of a class git-svn-id: http://svn.osgeo.org/geos/trunk@3308 + files of a class git-svn-id: http://svn.osgeo.org/geos/trunk@3308 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * include/geos/algorithm/Angle.h, src/algorithm/Angle.cpp, tests/unit/Makefile.am, tests/unit/algorithm/AngleTest.cpp: Sync - Angle class to JTS-1.12, port unit testing for it. git-svn-id: - http://svn.osgeo.org/geos/trunk@3307 + Angle class to JTS-1.12, port unit testing for it. git-svn-id: http://svn.osgeo.org/geos/trunk@3307 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli @@ -10981,8 +15425,7 @@ * include/geos/operation/buffer/OffsetCurveSetBuilder.h, src/operation/buffer/OffsetCurveSetBuilder.cpp, tests/unit/capi/GEOSBufferTest.cpp: Add test for singlesided buffer - (areal). Fix premature exit from OffsetCurveSetBuilder. git-svn-id: - http://svn.osgeo.org/geos/trunk@3306 + (areal). Fix premature exit from OffsetCurveSetBuilder. git-svn-id: http://svn.osgeo.org/geos/trunk@3306 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli @@ -10990,30 +15433,27 @@ * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/GEOSOffsetCurveTest.cpp: Drop one argument from GEOSOffsetCurve. Tell right/left from width/distance sign (<0 for - right side) git-svn-id: http://svn.osgeo.org/geos/trunk@3305 + right side) git-svn-id: http://svn.osgeo.org/geos/trunk@3305 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSBufferTest.cpp, tests/unit/capi/GEOSOffsetCurveTest.cpp: Put OffsetCurveTest in its - own file (old singleside test + a couple more tests) git-svn-id: - http://svn.osgeo.org/geos/trunk@3304 + own file (old singleside test + a couple more tests) git-svn-id: http://svn.osgeo.org/geos/trunk@3304 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Add GEOSBufferParams type and GEOSBufferWithParams function to have an - extensible buffer operation. Allows areal single sided buffer. - git-svn-id: http://svn.osgeo.org/geos/trunk@3303 + extensible buffer operation. Allows areal single sided buffer. git-svn-id: http://svn.osgeo.org/geos/trunk@3303 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Add - GEOSOffsetCurve C-API interface deprecating GEOSSingleSidedBuffer - git-svn-id: http://svn.osgeo.org/geos/trunk@3302 + GEOSOffsetCurve C-API interface deprecating GEOSSingleSidedBuffer git-svn-id: http://svn.osgeo.org/geos/trunk@3302 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli @@ -11022,45 +15462,41 @@ include/geos/operation/buffer/BufferSubgraph.h, include/geos/operation/buffer/Makefile.am, include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveVertexList.h, include/geos/operation/buffer/OffsetSegmentGenerator.h, - include/geos/operation/buffer/{OffsetCurveVertexList.h => - OffsetSegmentString.h}, src/operation/buffer/BufferBuilder.cpp, + include/geos/operation/buffer/OffsetSegmentString.h, + src/operation/buffer/BufferBuilder.cpp, src/operation/buffer/BufferSubgraph.cpp, src/operation/buffer/Makefile.am, src/operation/buffer/OffsetCurveBuilder.cpp, src/operation/buffer/OffsetSegmentGenerator.cpp: Refactored offset - curve generation (from JTS-1.12) git-svn-id: - http://svn.osgeo.org/geos/trunk@3301 + curve generation (from JTS-1.12) git-svn-id: http://svn.osgeo.org/geos/trunk@3301 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * include/geos/operation/buffer/BufferParameters.h, src/operation/buffer/BufferParameters.cpp: Sync BufferParameters - class to JTS r378 (isSingleSided property) git-svn-id: - http://svn.osgeo.org/geos/trunk@3300 + class to JTS r378 (isSingleSided property) git-svn-id: http://svn.osgeo.org/geos/trunk@3300 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-27 Sandro Santilli * include/geos/operation/buffer/BufferOp.h, src/operation/buffer/BufferOp.cpp: Sync BufferOp class to JTS r378. - Do not port the unused isSingleSided property. git-svn-id: - http://svn.osgeo.org/geos/trunk@3299 + Do not port the unused isSingleSided property. git-svn-id: http://svn.osgeo.org/geos/trunk@3299 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-23 Sandro Santilli - * NEWS: Add note about GEOSCascadedUnion deprecation git-svn-id: - http://svn.osgeo.org/geos/trunk@3298 + * NEWS: Add note about GEOSCascadedUnion deprecation git-svn-id: http://svn.osgeo.org/geos/trunk@3298 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-23 Sandro Santilli * capi/geos_c.h.in: Mark GEOSUnionCascaded as deprecated, GEOSUnaryUnion does the same thing w/out refusin to deal with lines, - points, collections git-svn-id: - http://svn.osgeo.org/geos/trunk@3297 + points, collections git-svn-id: http://svn.osgeo.org/geos/trunk@3297 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-23 Sandro Santilli @@ -11083,8 +15519,7 @@ * tests/xmltester/XMLTester.cpp: Use equals() to compare expected/obtained results of "Union" operation. This matches JTS and - prevents being too strict about equality. git-svn-id: - http://svn.osgeo.org/geos/trunk@3295 + prevents being too strict about equality. git-svn-id: http://svn.osgeo.org/geos/trunk@3295 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-22 Sandro Santilli @@ -11092,16 +15527,14 @@ * include/geos/operation/union/CascadedPolygonUnion.h, include/geos/operation/union/GeometryListHolder.h, include/geos/operation/union/Makefile.am: Put GeometryListHolder in - its own header file. git-svn-id: - http://svn.osgeo.org/geos/trunk@3294 + its own header file. git-svn-id: http://svn.osgeo.org/geos/trunk@3294 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-22 Sandro Santilli * include/geos/io/WKTWriter.h, src/io/WKTWriter.cpp, tests/unit/io/WKTWriterTest.cpp: Use stringstream to format strings - rather than printf-like statements. Simplifies things a lot. - git-svn-id: http://svn.osgeo.org/geos/trunk@3293 + rather than printf-like statements. Simplifies things a lot. git-svn-id: http://svn.osgeo.org/geos/trunk@3293 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-22 Sandro Santilli @@ -11111,8 +15544,7 @@ tests/unit/Makefile.am, tests/unit/geom/PrecisionModelTest.cpp, tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp: Sync PrecisionModel to JTS-1.12, add unit testing, fix - getMaximumPrecisionDigit to behave as documented (JTS doesn't). - git-svn-id: http://svn.osgeo.org/geos/trunk@3292 + getMaximumPrecisionDigit to behave as documented (JTS doesn't). git-svn-id: http://svn.osgeo.org/geos/trunk@3292 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-20 Sandro Santilli @@ -11122,30 +15554,34 @@ tests/xmltester/Makefile.am, tests/xmltester/tests/ticket/bug434.xml: Sync OffsetCurveSetBuilder::isErodedCompletely implementation to JTS, - fixing bug #434 git-svn-id: http://svn.osgeo.org/geos/trunk@3291 + fixing bug #434 git-svn-id: http://svn.osgeo.org/geos/trunk@3291 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-20 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/tests/{ => - ticket}/bug176.xml, tests/xmltester/tests/{ => ticket}/bug188.xml, - tests/xmltester/tests/{ => ticket}/bug244.xml, - tests/xmltester/tests/{ => ticket}/bug275.xml, - tests/xmltester/tests/{ => ticket}/bug344.xml, - tests/xmltester/tests/{ => ticket}/bug350.xml, - tests/xmltester/tests/{ => ticket}/bug356.xml, - tests/xmltester/tests/{ => ticket}/bug358.xml, - tests/xmltester/tests/{ => ticket}/bug360.xml, - tests/xmltester/tests/{ => ticket}/bug366.xml, - tests/xmltester/tests/{ => ticket}/bug398.xml: Move per-ticket - testcases under their own directory git-svn-id: - http://svn.osgeo.org/geos/trunk@3290 + * tests/xmltester/Makefile.am, tests/xmltester/tests/bug176.xml, + tests/xmltester/tests/bug188.xml, tests/xmltester/tests/bug244.xml, + tests/xmltester/tests/bug275.xml, tests/xmltester/tests/bug344.xml, + tests/xmltester/tests/bug350.xml, tests/xmltester/tests/bug356.xml, + tests/xmltester/tests/bug358.xml, tests/xmltester/tests/bug360.xml, + tests/xmltester/tests/bug366.xml, tests/xmltester/tests/bug398.xml, + tests/xmltester/tests/ticket/bug176.xml, + tests/xmltester/tests/ticket/bug188.xml, + tests/xmltester/tests/ticket/bug244.xml, + tests/xmltester/tests/ticket/bug275.xml, + tests/xmltester/tests/ticket/bug344.xml, + tests/xmltester/tests/ticket/bug350.xml, + tests/xmltester/tests/ticket/bug356.xml, + tests/xmltester/tests/ticket/bug358.xml, + tests/xmltester/tests/ticket/bug360.xml, + tests/xmltester/tests/ticket/bug366.xml, + tests/xmltester/tests/ticket/bug398.xml: Move per-ticket testcases + under their own directory git-svn-id: http://svn.osgeo.org/geos/trunk@3290 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-20 Sandro Santilli - * configure.in: Set JTS port version to 1.12 git-svn-id: - http://svn.osgeo.org/geos/trunk@3289 + * configure.in: Set JTS port version to 1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3289 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-19 Sandro Santilli @@ -11154,15 +15590,13 @@ IsCCW against the two almost-collapsed rings resulting by GEOS or JTS during execution of the union described in ticket #398. This is done after confirmation of same results in JTS (1 bit makes the - difference between CCW and CW orientation). git-svn-id: - http://svn.osgeo.org/geos/trunk@3288 + difference between CCW and CW orientation). git-svn-id: http://svn.osgeo.org/geos/trunk@3288 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli * tests/unit/operation/distance/DistanceOpTest.cpp: Add the actual - ->distance() call to the test for bug #367 git-svn-id: - http://svn.osgeo.org/geos/trunk@3287 + ->distance() call to the test for bug #367 git-svn-id: http://svn.osgeo.org/geos/trunk@3287 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli @@ -11171,23 +15605,20 @@ tests/xmltester/Makefile.am: Throw a TopologyException, rather than aborting, when finding more than a shell in MinimalEdgeRing list. Fixes bug #398. Enables automated test for it. Note that JTS fails - the test now, triggering the failed assertion. git-svn-id: - http://svn.osgeo.org/geos/trunk@3286 + the test now, triggering the failed assertion. git-svn-id: http://svn.osgeo.org/geos/trunk@3286 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli * tests/xmltester/tests/bug398.xml: Expect a result with/out the collapsed ring in the test for bug 398. Funny enough, this makes JTS - react by failing the assertion I was tracking... git-svn-id: - http://svn.osgeo.org/geos/trunk@3285 + react by failing the assertion I was tracking... git-svn-id: http://svn.osgeo.org/geos/trunk@3285 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli * src/operation/overlay/PolygonBuilder.cpp: Avoid more heap - allocations in PolygonBuilder git-svn-id: - http://svn.osgeo.org/geos/trunk@3284 + allocations in PolygonBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@3284 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli @@ -11195,55 +15626,48 @@ * include/geos/operation/overlay/PolygonBuilder.h, src/operation/overlay/PolygonBuilder.cpp: Reduce heap allocations in PolygonBuilder, rewrite some private interfaces to deal with refs - rather than pointers git-svn-id: - http://svn.osgeo.org/geos/trunk@3283 + rather than pointers git-svn-id: http://svn.osgeo.org/geos/trunk@3283 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli * src/operation/overlay/PolygonBuilder.cpp: Use - PlanarGraph::linkResultDirectedEdges rather than rewriting it inline - git-svn-id: http://svn.osgeo.org/geos/trunk@3282 + PlanarGraph::linkResultDirectedEdges rather than rewriting it inline git-svn-id: http://svn.osgeo.org/geos/trunk@3282 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-18 Sandro Santilli * include/geos/geomgraph/PlanarGraph.h, src/geomgraph/PlanarGraph.cpp: Turn - PlanarGraph::linkResultDirectedEdges into a templated method - git-svn-id: http://svn.osgeo.org/geos/trunk@3281 + PlanarGraph::linkResultDirectedEdges into a templated method git-svn-id: http://svn.osgeo.org/geos/trunk@3281 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-13 Sandro Santilli * tests/unit/geom/CoordinateArraySequenceTest.cpp: Add test for bug - #435 git-svn-id: http://svn.osgeo.org/geos/trunk@3280 + #435 git-svn-id: http://svn.osgeo.org/geos/trunk@3280 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-13 Sandro Santilli - * php/Makefile.am: Fix path to CAPI includes for PHP binding - git-svn-id: http://svn.osgeo.org/geos/trunk@3279 + * php/Makefile.am: Fix path to CAPI includes for PHP binding git-svn-id: http://svn.osgeo.org/geos/trunk@3279 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-13 Sandro Santilli * src/geom/CoordinateArraySequence.cpp: Drop coordinate dimension - cache after read-write filtering. Fixes ticket #435. git-svn-id: - http://svn.osgeo.org/geos/trunk@3278 + cache after read-write filtering. Fixes ticket #435. git-svn-id: http://svn.osgeo.org/geos/trunk@3278 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-13 Sandro Santilli * .gitignore, Makefile.am, author.sh: Drop author.sh, add a rule to - create authors.git instead git-svn-id: - http://svn.osgeo.org/geos/trunk@3277 + create authors.git instead git-svn-id: http://svn.osgeo.org/geos/trunk@3277 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-04-13 Sandro Santilli - * author.sh: Add script to be used with git-svn --authors-prog - git-svn-id: http://svn.osgeo.org/geos/trunk@3276 + * author.sh: Add script to be used with git-svn --authors-prog git-svn-id: http://svn.osgeo.org/geos/trunk@3276 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-26 Sandro Santilli @@ -11253,7 +15677,7 @@ src/simplify/DouglasPeuckerLineSimplifier.cpp, src/simplify/TaggedLineString.cpp, src/simplify/TaggedLineStringSimplifier.cpp: fix missing size_t with - gcc 4.6 git-svn-id: http://svn.osgeo.org/geos/trunk@3275 + gcc 4.6 git-svn-id: http://svn.osgeo.org/geos/trunk@3275 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-26 Sandro Santilli @@ -11262,22 +15686,20 @@ include/geos/operation/valid/SimpleNestedRingTester.h, src/index/bintree/Bintree.cpp, src/index/bintree/Node.cpp, src/index/bintree/Root.cpp, src/index/strtree/AbstractNode.cpp: - fixed missing NULL with gcc 4.6 git-svn-id: - http://svn.osgeo.org/geos/trunk@3274 + fixed missing NULL with gcc 4.6 git-svn-id: http://svn.osgeo.org/geos/trunk@3274 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-26 Sandro Santilli * include/geos/operation/overlay/OverlayNodeFactory.h: fix - uninitialized const caused by missing constructor git-svn-id: - http://svn.osgeo.org/geos/trunk@3273 + uninitialized const caused by missing constructor git-svn-id: http://svn.osgeo.org/geos/trunk@3273 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-24 Mateusz Loskot * capi/CMakeLists.txt, include/CMakeLists.txt, src/CMakeLists.txt: Added source_group properties to support source browsers in various - IDEs git-svn-id: http://svn.osgeo.org/geos/trunk@3272 + IDEs git-svn-id: http://svn.osgeo.org/geos/trunk@3272 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-16 Sandro Santilli @@ -11288,86 +15710,75 @@ 2011-03-11 Sandro Santilli - * tests/xmltester/tests/bug350.xml: Add XML test for bug #350 - git-svn-id: http://svn.osgeo.org/geos/trunk@3270 + * tests/xmltester/tests/bug350.xml: Add XML test for bug #350 git-svn-id: http://svn.osgeo.org/geos/trunk@3270 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-11 Sandro Santilli * tests/xmltester/tests/bug398.xml: Add XML test for bug398 (not - automatically run, as it fails) git-svn-id: - http://svn.osgeo.org/geos/trunk@3269 + automatically run, as it fails) git-svn-id: http://svn.osgeo.org/geos/trunk@3269 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-11 Sandro Santilli * tests/xmltester/XMLTester.cpp: Tell more about XML loading - failures git-svn-id: http://svn.osgeo.org/geos/trunk@3268 + failures git-svn-id: http://svn.osgeo.org/geos/trunk@3268 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-08 Sandro Santilli * tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp: Add test for - invalid boundary node rule value git-svn-id: - http://svn.osgeo.org/geos/trunk@3267 + invalid boundary node rule value git-svn-id: http://svn.osgeo.org/geos/trunk@3267 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-04 Sandro Santilli * php/geos.c, php/test/test.php: PHP: add relateBoundaryNodeRule - method to GEOSGeometry object git-svn-id: - http://svn.osgeo.org/geos/trunk@3266 + method to GEOSGeometry object git-svn-id: http://svn.osgeo.org/geos/trunk@3266 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-04 Sandro Santilli - * NEWS: Add note aboute GEOSRelateBoundaryNodeRule git-svn-id: - http://svn.osgeo.org/geos/trunk@3265 + * NEWS: Add note aboute GEOSRelateBoundaryNodeRule git-svn-id: http://svn.osgeo.org/geos/trunk@3265 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-04 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSRelateBoundaryNodeRuleTest.cpp: - GEOSRelateBoundaryNodeRule test, ticket #399 [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@3264 + GEOSRelateBoundaryNodeRule test, ticket #399 [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3264 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-04 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: - GEOSRelateBoundaryNodeRule, ticket #399 [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@3263 + GEOSRelateBoundaryNodeRule, ticket #399 [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3263 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-04 Sandro Santilli - * include/geos/algorithm/BoundaryNodeRule.h: Indenting.. - git-svn-id: http://svn.osgeo.org/geos/trunk@3262 + * include/geos/algorithm/BoundaryNodeRule.h: Indenting.. git-svn-id: http://svn.osgeo.org/geos/trunk@3262 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli * NEWS, tests/unit/operation/distance/DistanceOpTest.cpp: Tweak unit test to expect distance 0 between an empty an anything else. Report - the change in NEWS file. git-svn-id: - http://svn.osgeo.org/geos/trunk@3261 + the change in NEWS file. git-svn-id: http://svn.osgeo.org/geos/trunk@3261 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, tests/xmltester/tests/general/TestDistance.xml: Add support for - "distance" op in XMLTester, and import JTS TestDistance.xml - git-svn-id: http://svn.osgeo.org/geos/trunk@3260 + "distance" op in XMLTester, and import JTS TestDistance.xml git-svn-id: http://svn.osgeo.org/geos/trunk@3260 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli * include/geos/operation/distance/DistanceOp.h, src/operation/distance/DistanceOp.cpp: Fixed Geometry.distance() and - DistanceOp to return 0.0 for empty inputs (JTS-1.11) git-svn-id: - http://svn.osgeo.org/geos/trunk@3259 + DistanceOp to return 0.0 for empty inputs (JTS-1.11) git-svn-id: http://svn.osgeo.org/geos/trunk@3259 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli @@ -11375,8 +15786,7 @@ * include/geos/operation/valid/IsValidOp.h, src/operation/valid/IsValidOp.cpp, tests/xmltester/tests/general/TestValid.xml: Sync IsValidOp and - related XML testcase to JTS-1.12 git-svn-id: - http://svn.osgeo.org/geos/trunk@3258 + related XML testcase to JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3258 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli @@ -11385,14 +15795,12 @@ include/geos/geom/LineSegment.inl, include/geos/util/IllegalStateException.h, include/geos/util/Makefile.am, src/geom/LineSegment.cpp: Added check - for illegal state in offsetPoint method git-svn-id: - http://svn.osgeo.org/geos/trunk@3257 + for illegal state in offsetPoint method git-svn-id: http://svn.osgeo.org/geos/trunk@3257 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-02 Sandro Santilli - * src/geomgraph/Edge.cpp: Fix debug build git-svn-id: - http://svn.osgeo.org/geos/trunk@3256 + * src/geomgraph/Edge.cpp: Fix debug build git-svn-id: http://svn.osgeo.org/geos/trunk@3256 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-01 Mateusz Loskot @@ -11485,8 +15893,7 @@ 2011-03-01 Mateusz Loskot - * src/operation/valid/IsValidOp.cpp: Check geometry against nullptr - git-svn-id: http://svn.osgeo.org/geos/trunk@3254 + * src/operation/valid/IsValidOp.cpp: Check geometry against nullptr git-svn-id: http://svn.osgeo.org/geos/trunk@3254 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-03-01 Mateusz Loskot @@ -11494,8 +15901,7 @@ * include/geos/io/ByteOrderValues.h, src/io/ByteOrderValues.cpp: Redefined ENDIAN_BIG and ENDIAN_LITTLE as enumerators instead of static non-const members - Visual C++ linker has mysterious problems - with exporting them from DLL. git-svn-id: - http://svn.osgeo.org/geos/trunk@3253 + with exporting them from DLL. git-svn-id: http://svn.osgeo.org/geos/trunk@3253 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-28 Sandro Santilli @@ -11508,41 +15914,37 @@ 2011-02-28 Sandro Santilli * src/operation/buffer/BufferBuilder.cpp: Cleanup debugging output. - Previous version didn't really print the _noded_ output at all. - git-svn-id: http://svn.osgeo.org/geos/trunk@3251 + Previous version didn't really print the _noded_ output at all. git-svn-id: http://svn.osgeo.org/geos/trunk@3251 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-28 Sandro Santilli * NEWS, php/geos.c, php/test/test.php: Expose and test - covers/coveredBy to PHP binding git-svn-id: - http://svn.osgeo.org/geos/trunk@3250 + covers/coveredBy to PHP binding git-svn-id: http://svn.osgeo.org/geos/trunk@3250 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-28 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: GEOSCovers - and GEOSCoveredBy (ticket #396) by Alessandro Furieri git-svn-id: - http://svn.osgeo.org/geos/trunk@3249 + and GEOSCoveredBy (ticket #396) by Alessandro Furieri git-svn-id: http://svn.osgeo.org/geos/trunk@3249 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-25 Sandro Santilli * tests/xmltester/tests/bug356.xml: be explicit about quadrant - segments git-svn-id: http://svn.osgeo.org/geos/trunk@3248 + segments git-svn-id: http://svn.osgeo.org/geos/trunk@3248 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-25 Sandro Santilli * tests/xmltester/tests/bug356.xml: Add test for ticket #356 (not - run, as it fails) git-svn-id: http://svn.osgeo.org/geos/trunk@3247 + run, as it fails) git-svn-id: http://svn.osgeo.org/geos/trunk@3247 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * src/operation/buffer/BufferInputLineSimplifier.cpp, - src/operation/buffer/BufferInputLineSimplifier.h: JTS-1.12 sync - git-svn-id: http://svn.osgeo.org/geos/trunk@3246 + src/operation/buffer/BufferInputLineSimplifier.h: JTS-1.12 sync git-svn-id: http://svn.osgeo.org/geos/trunk@3246 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11560,8 +15962,7 @@ src/operation/buffer/BufferParameters.cpp, src/operation/buffer/BufferSubgraph.cpp, src/operation/buffer/RightmostEdgeFinder.cpp, - src/operation/buffer/SubgraphDepthLocater.cpp: Update port info - git-svn-id: http://svn.osgeo.org/geos/trunk@3245 + src/operation/buffer/SubgraphDepthLocater.cpp: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@3245 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11569,47 +15970,42 @@ * include/geos/operation/buffer/OffsetCurveBuilder.h, include/geos/operation/buffer/OffsetCurveSetBuilder.h, src/operation/buffer/OffsetCurveBuilder.cpp, - src/operation/buffer/OffsetCurveSetBuilder.cpp: Update port info - git-svn-id: http://svn.osgeo.org/geos/trunk@3244 + src/operation/buffer/OffsetCurveSetBuilder.cpp: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@3244 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * NEWS, src/operation/buffer/OffsetCurveSetBuilder.cpp, tests/xmltester/tests/general/TestBuffer.xml: Fixed buffer - OffsetCurveSetBuilder to handle "flat" rings correctly git-svn-id: - http://svn.osgeo.org/geos/trunk@3243 + OffsetCurveSetBuilder to handle "flat" rings correctly git-svn-id: http://svn.osgeo.org/geos/trunk@3243 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * include/geos/operation/buffer/OffsetCurveSetBuilder.h, src/operation/buffer/OffsetCurveSetBuilder.cpp: Don't bother adding - ring if it is "flat" and will disappear in the output (from TS r261) - git-svn-id: http://svn.osgeo.org/geos/trunk@3242 + ring if it is "flat" and will disappear in the output (from TS r261) git-svn-id: http://svn.osgeo.org/geos/trunk@3242 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * NEWS, include/geos/geom/LinearRing.h, src/geom/LinearRing.cpp, tests/unit/geom/LinearRingTest.cpp: Sync LinearRing to JTS-1.12: - empty LinearRing are closed by definition now git-svn-id: - http://svn.osgeo.org/geos/trunk@3241 + empty LinearRing are closed by definition now git-svn-id: http://svn.osgeo.org/geos/trunk@3241 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * include/geos/noding/snapround/MCIndexPointSnapper.h, src/noding/snapround/MCIndexPointSnapper.cpp: Update port info for - MCIndexPointSnapper git-svn-id: - http://svn.osgeo.org/geos/trunk@3240 + MCIndexPointSnapper git-svn-id: http://svn.osgeo.org/geos/trunk@3240 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * include/geos/noding/snapround/SimpleSnapRounder.h, src/noding/snapround/SimpleSnapRounder.cpp: Update port info for - SimpleSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@3239 + SimpleSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@3239 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11617,8 +16013,7 @@ * include/geos/noding/snapround/MCIndexSnapRounder.h, include/geos/noding/snapround/MCIndexSnapRounder.inl, src/noding/snapround/MCIndexSnapRounder.cpp: Update port info for - MCIndexSnapRounder (and remove testing-only check) git-svn-id: - http://svn.osgeo.org/geos/trunk@3238 + MCIndexSnapRounder (and remove testing-only check) git-svn-id: http://svn.osgeo.org/geos/trunk@3238 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11626,22 +16021,19 @@ * include/geos/noding/snapround/HotPixel.h, include/geos/noding/snapround/HotPixel.inl, src/noding/snapround/HotPixel.cpp: Sync HotPixel to JTS-1.12 - (doxygen + privatization of a method..) git-svn-id: - http://svn.osgeo.org/geos/trunk@3237 + (doxygen + privatization of a method..) git-svn-id: http://svn.osgeo.org/geos/trunk@3237 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug366.xml: Run - test for bug366 (succeeds) git-svn-id: - http://svn.osgeo.org/geos/trunk@3236 + test for bug366 (succeeds) git-svn-id: http://svn.osgeo.org/geos/trunk@3236 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli * tests/unit/noding/SegmentPointComparatorTest.cpp: Port JTS unit - tests for SegmentPointComparator git-svn-id: - http://svn.osgeo.org/geos/trunk@3235 + tests for SegmentPointComparator git-svn-id: http://svn.osgeo.org/geos/trunk@3235 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11649,8 +16041,7 @@ * include/geos/noding/Makefile.am, include/geos/noding/SegmentPointComparator.h, src/noding/SegmentNode.cpp: Take SegmentPointComparator out of - implelmentation file, to allow for unit-testing. git-svn-id: - http://svn.osgeo.org/geos/trunk@3234 + implelmentation file, to allow for unit-testing. git-svn-id: http://svn.osgeo.org/geos/trunk@3234 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-23 Sandro Santilli @@ -11658,22 +16049,20 @@ * NEWS, include/geos/noding/NodedSegmentString.h, src/noding/NodedSegmentString.cpp, tests/unit/noding/NodedSegmentStringTest.cpp: Fix NodedSegmentString - to handle zero-length line segments correctly (via safeOctant) - git-svn-id: http://svn.osgeo.org/geos/trunk@3233 + to handle zero-length line segments correctly (via safeOctant) git-svn-id: http://svn.osgeo.org/geos/trunk@3233 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-22 Sandro Santilli * include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, include/geos/geom/Puntal.h: Export Puntal, Lineal and Polygonal - symbols git-svn-id: http://svn.osgeo.org/geos/trunk@3232 + symbols git-svn-id: http://svn.osgeo.org/geos/trunk@3232 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-22 Sandro Santilli * tests/unit/operation/linemerge/LineMergerTest.cpp: Fix linemerge - test (wrong initial copy) git-svn-id: - http://svn.osgeo.org/geos/trunk@3231 + test (wrong initial copy) git-svn-id: http://svn.osgeo.org/geos/trunk@3231 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli @@ -11681,15 +16070,13 @@ * include/geos/operation/linemerge/LineSequencer.h, src/operation/linemerge/LineSequencer.cpp, tests/unit/Makefile.am, tests/unit/operation/linemerge/LineSequencerTest.cpp: Add - LineSequencer unit test, fix memory leaks in the class. git-svn-id: - http://svn.osgeo.org/geos/trunk@3230 + LineSequencer unit test, fix memory leaks in the class. git-svn-id: http://svn.osgeo.org/geos/trunk@3230 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli * include/geos/operation/linemerge/LineSequencer.h: Add templated - geometry adder to LineSequencer class git-svn-id: - http://svn.osgeo.org/geos/trunk@3229 + geometry adder to LineSequencer class git-svn-id: http://svn.osgeo.org/geos/trunk@3229 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli @@ -11705,22 +16092,19 @@ tests/unit/operation/linemerge/LineMergerTest.cpp: Sync linemerge namespace to JTS-1.12 fixing LineMerger to skip lines with only a single unique coordinate; reduce some heap allocations; add unit - testing for Linemerger git-svn-id: - http://svn.osgeo.org/geos/trunk@3228 + testing for Linemerger git-svn-id: http://svn.osgeo.org/geos/trunk@3228 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli * include/geos/operation/linemerge/LineSequencer.h, src/operation/linemerge/LineSequencer.cpp: Sync - linemerge::LineSequencer to JTS-1.12 git-svn-id: - http://svn.osgeo.org/geos/trunk@3227 + linemerge::LineSequencer to JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3227 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli - * NEWS: Add note about SnapIfNeededOverlayOp change git-svn-id: - http://svn.osgeo.org/geos/trunk@3226 + * NEWS: Add note about SnapIfNeededOverlayOp change git-svn-id: http://svn.osgeo.org/geos/trunk@3226 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli @@ -11730,8 +16114,7 @@ include/geos/operation/overlay/snap/SnapOverlayOp.h, src/operation/overlay/snap/GeometrySnapper.cpp, src/operation/overlay/snap/LineStringSnapper.cpp, - src/operation/overlay/snap/SnapOverlayOp.cpp: Update port info - git-svn-id: http://svn.osgeo.org/geos/trunk@3225 + src/operation/overlay/snap/SnapOverlayOp.cpp: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@3225 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-21 Sandro Santilli @@ -11739,95 +16122,83 @@ * include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, src/operation/overlay/snap/SnapIfNeededOverlayOp.cpp: Fix SnapIfNeededOverlayOp to throw the originating exception, which - contains meaningful coordinates, and update port info. git-svn-id: - http://svn.osgeo.org/geos/trunk@3224 + contains meaningful coordinates, and update port info. git-svn-id: http://svn.osgeo.org/geos/trunk@3224 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-18 Mateusz Loskot * capi/CMakeLists.txt, src/CMakeLists.txt: Updated CMake configuration to use libgeos.lib for static library and geos.lib for - import library. Define GEOS_DLL_EXPORT for GEOS DLL target. - git-svn-id: http://svn.osgeo.org/geos/trunk@3223 + import library. Define GEOS_DLL_EXPORT for GEOS DLL target. git-svn-id: http://svn.osgeo.org/geos/trunk@3223 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-15 Mateusz Loskot * capi/geos_ts_c.cpp: gstrdup may throw since r3088 thus should no - longer be declared as C function git-svn-id: - http://svn.osgeo.org/geos/trunk@3222 + longer be declared as C function git-svn-id: http://svn.osgeo.org/geos/trunk@3222 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-15 Sandro Santilli * capi/geos_ts_c.cpp, tests/unit/capi/GEOSisValidDetailTest.cpp: Allow passing NULL for "reason" and "location" arguments of - GEOSisValidDetail [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@3221 + GEOSisValidDetail [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3221 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-15 Sandro Santilli * php/geos.c, php/test/test.php: Adapt PHP binding to the new - GEOSisValidDetail interface git-svn-id: - http://svn.osgeo.org/geos/trunk@3220 + GEOSisValidDetail interface git-svn-id: http://svn.osgeo.org/geos/trunk@3220 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-15 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSisValidDetailTest.cpp: - Add a 'flags' parameter to GEOSisValidDetail. git-svn-id: - http://svn.osgeo.org/geos/trunk@3219 + Add a 'flags' parameter to GEOSisValidDetail. git-svn-id: http://svn.osgeo.org/geos/trunk@3219 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-15 Sandro Santilli * php/Makefile.am: Make sure php binding are built _before_ the - corresponding test is run git-svn-id: - http://svn.osgeo.org/geos/trunk@3218 + corresponding test is run git-svn-id: http://svn.osgeo.org/geos/trunk@3218 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Sandro Santilli * src/operation/overlay/snap/LineStringSnapper.cpp: Guard againts - empty vectors before decrementing .end() git-svn-id: - http://svn.osgeo.org/geos/trunk@3217 + empty vectors before decrementing .end() git-svn-id: http://svn.osgeo.org/geos/trunk@3217 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Sandro Santilli * include/geos/geom/CoordinateList.h: Add an .empty() interface to - CoordinateList git-svn-id: http://svn.osgeo.org/geos/trunk@3216 + CoordinateList git-svn-id: http://svn.osgeo.org/geos/trunk@3216 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot * configure.in: Added new ./configure option: --enable-glibcxx-debug which to enable libstdc++ debug mode (see Ticket #395). Added - AC_MSG_CHECKING and AC_MSG_RESULT to existing options. git-svn-id: - http://svn.osgeo.org/geos/trunk@3215 + AC_MSG_CHECKING and AC_MSG_RESULT to existing options. git-svn-id: http://svn.osgeo.org/geos/trunk@3215 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot - * tests/unit/operation/distance/DistanceOpTest.cpp: CRLF to LF - git-svn-id: http://svn.osgeo.org/geos/trunk@3214 + * tests/unit/operation/distance/DistanceOpTest.cpp: CRLF to LF git-svn-id: http://svn.osgeo.org/geos/trunk@3214 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot * tests/unit/operation/distance/DistanceOpTest.cpp: Added test case submitted with Ticket #367. No segmentation fault in distance() - method observed under Visual C++ 10.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@3213 + method observed under Visual C++ 10.0 git-svn-id: http://svn.osgeo.org/geos/trunk@3213 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Sandro Santilli * src/geom/Geometry.cpp: Always use BinaryOp for overlay operations - accessible from Geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@3212 + accessible from Geometry git-svn-id: http://svn.osgeo.org/geos/trunk@3212 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot @@ -11838,22 +16209,19 @@ 'class2::member' via dominance) - it is still unclear if caused by Visual C++ bug https://connect.microsoft.com/VisualStudio/feedback/details/101259/ - - safe to disable anyway. git-svn-id: - http://svn.osgeo.org/geos/trunk@3211 + - safe to disable anyway. git-svn-id: http://svn.osgeo.org/geos/trunk@3211 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot * include/geos/geom/GeometryFactory.h: Return unset std::auto_otr - from GeometryFactory, otherwise error condition causes no return - git-svn-id: http://svn.osgeo.org/geos/trunk@3210 + from GeometryFactory, otherwise error condition causes no return git-svn-id: http://svn.osgeo.org/geos/trunk@3210 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot * include/geos/operation/union/PointGeometryUnion.h: Declare - PointGeometryUnion type as non-copyable git-svn-id: - http://svn.osgeo.org/geos/trunk@3209 + PointGeometryUnion type as non-copyable git-svn-id: http://svn.osgeo.org/geos/trunk@3209 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot @@ -11861,15 +16229,13 @@ * include/geos/geom/util/GeometryExtracter.h: Renamed template parameters to more readable CamelCase and self-descriptive form. Declare Extracter type as non-copyable. Do not use names starting - with underscore - they are reserved for C++ implementations. - git-svn-id: http://svn.osgeo.org/geos/trunk@3208 + with underscore - they are reserved for C++ implementations. git-svn-id: http://svn.osgeo.org/geos/trunk@3208 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-13 Mateusz Loskot * include/geos/geom/BinaryOp.h: Fixed missing or ambiguous - declarations of TopologyException (Ticket #394) git-svn-id: - http://svn.osgeo.org/geos/trunk@3207 + declarations of TopologyException (Ticket #394) git-svn-id: http://svn.osgeo.org/geos/trunk@3207 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-12 Sandro Santilli @@ -11877,70 +16243,60 @@ * src/geom/Geometry.cpp, tests/xmltester/Makefile.am, tests/xmltester/tests/bug360.xml: Have Geometry::Union use BinaryOp rather than SnapIfNeededOverlayOp. Improves robustness (fixes bug - #360, test for which is enabled with this commit) git-svn-id: - http://svn.osgeo.org/geos/trunk@3206 + #360, test for which is enabled with this commit) git-svn-id: http://svn.osgeo.org/geos/trunk@3206 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-11 Sandro Santilli - * tests/xmltester/tests/bug344.xml: Add description git-svn-id: - http://svn.osgeo.org/geos/trunk@3205 + * tests/xmltester/tests/bug344.xml: Add description git-svn-id: http://svn.osgeo.org/geos/trunk@3205 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-11 Sandro Santilli - * tests/xmltester/tests/bug360.xml: XML version of test for bug #360 - git-svn-id: http://svn.osgeo.org/geos/trunk@3204 + * tests/xmltester/tests/bug360.xml: XML version of test for bug #360 git-svn-id: http://svn.osgeo.org/geos/trunk@3204 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-11 Sandro Santilli * src/operation/union/PointGeometryUnion.cpp: Optimize - container->container copy, on Mat's suggestion git-svn-id: - http://svn.osgeo.org/geos/trunk@3203 + container->container copy, on Mat's suggestion git-svn-id: http://svn.osgeo.org/geos/trunk@3203 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-11 Sandro Santilli - * php/geos.c, php/test/test.php: PHP support or UnaryUnion - git-svn-id: http://svn.osgeo.org/geos/trunk@3202 + * php/geos.c, php/test/test.php: PHP support or UnaryUnion git-svn-id: http://svn.osgeo.org/geos/trunk@3202 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-11 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSUnaryUnionTest.cpp: - GEOSUnaryUnion C-API interface (and test) git-svn-id: - http://svn.osgeo.org/geos/trunk@3201 + GEOSUnaryUnion C-API interface (and test) git-svn-id: http://svn.osgeo.org/geos/trunk@3201 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, tests/xmltester/tests/general/TestUnaryUnion.xml: Add support for - UnaryUnion testing in XML format, import the JTS xml test for it - git-svn-id: http://svn.osgeo.org/geos/trunk@3200 + UnaryUnion testing in XML format, import the JTS xml test for it git-svn-id: http://svn.osgeo.org/geos/trunk@3200 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * tests/unit/operation/union/UnaryUnionOpTest.cpp: Add test exposing - the std::copy bug of two commits ago git-svn-id: - http://svn.osgeo.org/geos/trunk@3199 + the std::copy bug of two commits ago git-svn-id: http://svn.osgeo.org/geos/trunk@3199 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * include/geos/geom/Geometry.h, src/geom/Geometry.cpp: Expose unary - union trought Geometry.Union() git-svn-id: - http://svn.osgeo.org/geos/trunk@3198 + union trought Geometry.Union() git-svn-id: http://svn.osgeo.org/geos/trunk@3198 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * src/operation/union/PointGeometryUnion.cpp: Can't just std::copy - over an empty container. Need a back_inserter ! git-svn-id: - http://svn.osgeo.org/geos/trunk@3197 + over an empty container. Need a back_inserter ! git-svn-id: http://svn.osgeo.org/geos/trunk@3197 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli @@ -11949,8 +16305,7 @@ tests/unit/Makefile.am, tests/unit/operation/union/CascadedPolygonUnionTest.cpp, tests/unit/operation/union/UnaryUnionOpTest.cpp: Add unit test for - UnaryUnionOp (and fix interface bug) git-svn-id: - http://svn.osgeo.org/geos/trunk@3196 + UnaryUnionOp (and fix interface bug) git-svn-id: http://svn.osgeo.org/geos/trunk@3196 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli @@ -11959,20 +16314,19 @@ include/geos/operation/union/UnaryUnionOp.h, src/operation/union/Makefile.am, src/operation/union/UnaryUnionOp.cpp: UnaryUnionOp port from - JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3195 + JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3195 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Oops, - didn't want to commit this one. git-svn-id: - http://svn.osgeo.org/geos/trunk@3194 + didn't want to commit this one. git-svn-id: http://svn.osgeo.org/geos/trunk@3194 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * include/geos/operation/union/CascadedPolygonUnion.h: Fix dynamic - cast git-svn-id: http://svn.osgeo.org/geos/trunk@3193 + cast git-svn-id: http://svn.osgeo.org/geos/trunk@3193 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli @@ -11981,7 +16335,7 @@ src/operation/union/CascadedPolygonUnion.cpp, tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Add a template interface to CascadedPolygonUnion to relax requirements on - used container git-svn-id: http://svn.osgeo.org/geos/trunk@3192 + used container git-svn-id: http://svn.osgeo.org/geos/trunk@3192 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli @@ -11990,15 +16344,13 @@ include/geos/geom/GeometryFactory.h, include/geos/geom/Makefile.am, src/geom/Geometry.cpp, src/inlines.cpp, tests/unit/geom/GeometryFactoryTest.cpp: Introduce a templated - version of GeometryFactory::buildGeometry, and test it. git-svn-id: - http://svn.osgeo.org/geos/trunk@3191 + version of GeometryFactory::buildGeometry, and test it. git-svn-id: http://svn.osgeo.org/geos/trunk@3191 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-10 Sandro Santilli * src/operation/sharedpaths/SharedPathsOp.cpp: Include required - GeometryFactory header (it's used) git-svn-id: - http://svn.osgeo.org/geos/trunk@3190 + GeometryFactory header (it's used) git-svn-id: http://svn.osgeo.org/geos/trunk@3190 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-07 Sandro Santilli @@ -12006,14 +16358,12 @@ * include/geos/geom/util/GeometryExtracter.h, include/geos/geom/util/Makefile.am, tests/unit/Makefile.am, tests/unit/geom/util/GeometryExtracterTest.cpp: Port - GeometryExtracter from JTS-1.12 git-svn-id: - http://svn.osgeo.org/geos/trunk@3189 + GeometryExtracter from JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3189 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-07 Sandro Santilli - * src/operation/union/PointGeometryUnion.cpp: Fix casts git-svn-id: - http://svn.osgeo.org/geos/trunk@3188 + * src/operation/union/PointGeometryUnion.cpp: Fix casts git-svn-id: http://svn.osgeo.org/geos/trunk@3188 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-07 Sandro Santilli @@ -12021,15 +16371,13 @@ * include/geos/operation/union/Makefile.am, include/geos/operation/union/PointGeometryUnion.h, src/operation/union/Makefile.am, - src/operation/union/PointGeometryUnion.cpp: PointGeometryUnion port - git-svn-id: http://svn.osgeo.org/geos/trunk@3187 + src/operation/union/PointGeometryUnion.cpp: PointGeometryUnion port git-svn-id: http://svn.osgeo.org/geos/trunk@3187 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-07 Sandro Santilli * include/geos/geom/Lineal.h, include/geos/geom/Polygonal.h, - include/geos/geom/Puntal.h: Include definition of base class - git-svn-id: http://svn.osgeo.org/geos/trunk@3186 + include/geos/geom/Puntal.h: Include definition of base class git-svn-id: http://svn.osgeo.org/geos/trunk@3186 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-07 Sandro Santilli @@ -12043,8 +16391,7 @@ src/geom/LinearRing.cpp, src/geom/MultiLineString.cpp, src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp: Turn Puntal, Lineal and Polygonal into Geometry derivates. This commit introduces - virtual inheritance and 3 diamonds. git-svn-id: - http://svn.osgeo.org/geos/trunk@3185 + virtual inheritance and 3 diamonds. git-svn-id: http://svn.osgeo.org/geos/trunk@3185 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-04 Sandro Santilli @@ -12058,7 +16405,7 @@ 2011-02-04 Sandro Santilli * include/geos/index/strtree/AbstractSTRtree.h: Avoid useless - reinterpret_cast git-svn-id: http://svn.osgeo.org/geos/trunk@3183 + reinterpret_cast git-svn-id: http://svn.osgeo.org/geos/trunk@3183 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-04 Sandro Santilli @@ -12073,7 +16420,7 @@ src/operation/valid/ConnectedInteriorTester.cpp, src/operation/valid/IsValidOp.cpp, tests/unit/geom/PolygonTest.cpp, tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Even more - static casts drops git-svn-id: http://svn.osgeo.org/geos/trunk@3182 + static casts drops git-svn-id: http://svn.osgeo.org/geos/trunk@3182 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-04 Sandro Santilli @@ -12085,15 +16432,13 @@ tests/unit/geom/GeometryFactoryTest.cpp, tests/unit/geom/LineStringTest.cpp, tests/unit/geom/LinearRingTest.cpp, tests/unit/geom/PolygonTest.cpp: - Drop more static casts git-svn-id: - http://svn.osgeo.org/geos/trunk@3181 + Drop more static casts git-svn-id: http://svn.osgeo.org/geos/trunk@3181 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli * tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp: - Don't downcast with static_cast git-svn-id: - http://svn.osgeo.org/geos/trunk@3180 + Don't downcast with static_cast git-svn-id: http://svn.osgeo.org/geos/trunk@3180 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli @@ -12107,58 +16452,52 @@ src/geomgraph/GeometryGraph.cpp, src/io/WKBWriter.cpp, src/io/WKTWriter.cpp, src/operation/IsSimpleOp.cpp, src/operation/valid/IsValidOp.cpp, - src/operation/valid/RepeatedPointTester.cpp: reduce static casts - git-svn-id: http://svn.osgeo.org/geos/trunk@3179 + src/operation/valid/RepeatedPointTester.cpp: reduce static casts git-svn-id: http://svn.osgeo.org/geos/trunk@3179 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli * include/geos/geom/Coordinate.h: provide standard strict weak - ordering operator for Coordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@3178 + ordering operator for Coordinate git-svn-id: http://svn.osgeo.org/geos/trunk@3178 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli * include/geos/geom/util/GeometryCombiner.h, src/geom/util/GeometryCombiner.cpp: A step toward better - const-correctness in GeometryCombiner interface git-svn-id: - http://svn.osgeo.org/geos/trunk@3177 + const-correctness in GeometryCombiner interface git-svn-id: http://svn.osgeo.org/geos/trunk@3177 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli * include/geos/geom/util/GeometryCombiner.h: Document ownerhips of - GeometryCombiner inputs git-svn-id: - http://svn.osgeo.org/geos/trunk@3176 + GeometryCombiner inputs git-svn-id: http://svn.osgeo.org/geos/trunk@3176 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-03 Sandro Santilli * src/geom/GeometryFactory.cpp: Oops.. fix the newly added interface - to create MultiPoint from a vector of coordinates git-svn-id: - http://svn.osgeo.org/geos/trunk@3175 + to create MultiPoint from a vector of coordinates git-svn-id: http://svn.osgeo.org/geos/trunk@3175 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-02 Sandro Santilli * include/geos/algorithm/PointLocator.h, src/algorithm/PointLocator.cpp: Check PointLocator sync with - JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3174 + JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3174 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-02 Sandro Santilli * include/geos/geom/GeometryFactory.h, src/geom/GeometryFactory.cpp: - Add interface to create MultiPoint from Coordinate vector - git-svn-id: http://svn.osgeo.org/geos/trunk@3173 + Add interface to create MultiPoint from Coordinate vector git-svn-id: http://svn.osgeo.org/geos/trunk@3173 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-02 Sandro Santilli * include/geos/geom/util/GeometryCombiner.h, src/geom/util/GeometryCombiner.cpp: Check GeometryCombiner against - JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3172 + JTS-1.12 git-svn-id: http://svn.osgeo.org/geos/trunk@3172 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-02-02 Sandro Santilli @@ -12172,55 +16511,50 @@ src/geom/LineString.cpp, src/geom/MultiLineString.cpp, src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp, src/geom/Point.cpp, src/geom/Polygon.cpp: Add Puntal, Lineal and - Polygonal "interfaces" git-svn-id: - http://svn.osgeo.org/geos/trunk@3171 + Polygonal "interfaces" git-svn-id: http://svn.osgeo.org/geos/trunk@3171 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-01-27 Sandro Santilli - * NEWS: Add release date of 3.2.0 (more than an year ago..) - git-svn-id: http://svn.osgeo.org/geos/trunk@3170 + * NEWS: Add release date of 3.2.0 (more than an year ago..) git-svn-id: http://svn.osgeo.org/geos/trunk@3170 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-01-27 Sandro Santilli * php/test/test.php: Don't use is_null on unexistant array elements - [#393] git-svn-id: http://svn.osgeo.org/geos/trunk@3169 + [#393] git-svn-id: http://svn.osgeo.org/geos/trunk@3169 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-01-25 Mateusz Loskot * tests/CMakeLists.txt, tests/bigtest/CMakeLists.txt: Added - tests/bigtest programs to CMake configuration git-svn-id: - http://svn.osgeo.org/geos/trunk@3168 + tests/bigtest programs to CMake configuration git-svn-id: http://svn.osgeo.org/geos/trunk@3168 5242fede-7e19-0410-aef8-94bd7d2200fb 2011-01-25 Mateusz Loskot * tests/xmltester/CMakeLists.txt: Updated CMake configuration to - call xmltester from runtime output directory. git-svn-id: - http://svn.osgeo.org/geos/trunk@3167 + call xmltester from runtime output directory. git-svn-id: http://svn.osgeo.org/geos/trunk@3167 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-26 Sandro Santilli * tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: remove - warning in testcase git-svn-id: - http://svn.osgeo.org/geos/trunk@3166 + warning in testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3166 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-26 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h: Declare SharedPathsOp class as noncopyable. Hopefully fixes VC2008 warning. - [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3165 + [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3165 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-24 Sandro Santilli * include/geos/algorithm/InteriorPointLine.h, src/algorithm/InteriorPointLine.cpp: Record port info for - InteriorPointLine git-svn-id: http://svn.osgeo.org/geos/trunk@3164 + InteriorPointLine git-svn-id: http://svn.osgeo.org/geos/trunk@3164 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-22 Sandro Santilli @@ -12243,39 +16577,28 @@ * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSRelatePatternMatchTest.cpp: Add - GEOSRelatePatternMatch C-API interface [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@3161 + GEOSRelatePatternMatch C-API interface [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3161 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-20 Sandro Santilli - * include/geos/platform.h.in: MinGW32 fixes by Sandro Furieri - git-svn-id: http://svn.osgeo.org/geos/trunk@3160 + * include/geos/platform.h.in: MinGW32 fixes by Sandro Furieri git-svn-id: http://svn.osgeo.org/geos/trunk@3160 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-20 Mateusz Loskot - * : Updated svn:ignore properties. git-svn-id: - http://svn.osgeo.org/geos/trunk@3159 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-12-06 Sandro Santilli - - * include/geos/operation/overlay/snap/GeometrySnapper.h: typo - git-svn-id: http://svn.osgeo.org/geos/trunk@3158 + * : Updated svn:ignore properties. git-svn-id: http://svn.osgeo.org/geos/trunk@3159 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli * tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: Add - test for src-vertex snapping allowance git-svn-id: - http://svn.osgeo.org/geos/trunk@3157 + test for src-vertex snapping allowance git-svn-id: http://svn.osgeo.org/geos/trunk@3157 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli - * include/geos/geom/CoordinateList.h: Update copyright git-svn-id: - http://svn.osgeo.org/geos/trunk@3156 + * include/geos/geom/CoordinateList.h: Update copyright git-svn-id: http://svn.osgeo.org/geos/trunk@3156 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli @@ -12283,86 +16606,76 @@ * include/geos/geom/CoordinateList.h, tests/unit/geom/CoordinateListTest.cpp: Add method to insert coordinats into a CoordinateList w/out allowing duplicates (fixes - issue #387) git-svn-id: http://svn.osgeo.org/geos/trunk@3155 + issue #387) git-svn-id: http://svn.osgeo.org/geos/trunk@3155 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli * tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: - Another test for snapping (empty sequence vs. non-empty snaps) - git-svn-id: http://svn.osgeo.org/geos/trunk@3154 + Another test for snapping (empty sequence vs. non-empty snaps) git-svn-id: http://svn.osgeo.org/geos/trunk@3154 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli - * src/operation/overlay/snap/LineStringSnapper.cpp: update dox - git-svn-id: http://svn.osgeo.org/geos/trunk@3153 + * src/operation/overlay/snap/LineStringSnapper.cpp: update dox git-svn-id: http://svn.osgeo.org/geos/trunk@3153 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli * include/geos/operation/overlay/snap/LineStringSnapper.h, src/operation/overlay/snap/LineStringSnapper.cpp: Take the - allowSnappingToSourceVertices support in git-svn-id: - http://svn.osgeo.org/geos/trunk@3152 + allowSnappingToSourceVertices support in git-svn-id: http://svn.osgeo.org/geos/trunk@3152 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-03 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSSharedPathsTest.cpp: - Add test for GEOSSharedPaths C-API interface git-svn-id: - http://svn.osgeo.org/geos/trunk@3151 + Add test for GEOSSharedPaths C-API interface git-svn-id: http://svn.osgeo.org/geos/trunk@3151 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * tests/unit/capi/GEOSSnapTest.cpp: Another test, and a leak plug - (in the test) git-svn-id: http://svn.osgeo.org/geos/trunk@3150 + (in the test) git-svn-id: http://svn.osgeo.org/geos/trunk@3150 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli - * NEWS: Add GEOSSnap item git-svn-id: - http://svn.osgeo.org/geos/trunk@3149 + * NEWS: Add GEOSSnap item git-svn-id: http://svn.osgeo.org/geos/trunk@3149 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli - * php/geos.c, php/test/test.php: Expose GEOSSnap to PHP interface - git-svn-id: http://svn.osgeo.org/geos/trunk@3148 + * php/geos.c, php/test/test.php: Expose GEOSSnap to PHP interface git-svn-id: http://svn.osgeo.org/geos/trunk@3148 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSSnapTest.cpp: Add test - for C-API GEOSSnap interface git-svn-id: - http://svn.osgeo.org/geos/trunk@3147 + for C-API GEOSSnap interface git-svn-id: http://svn.osgeo.org/geos/trunk@3147 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli - * capi/geos_c.cpp, capi/geos_ts_c.cpp: OOps.. this one build - git-svn-id: http://svn.osgeo.org/geos/trunk@3146 + * capi/geos_c.cpp, capi/geos_ts_c.cpp: OOps.. this one build git-svn-id: http://svn.osgeo.org/geos/trunk@3146 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Expose - snapping to the C-API git-svn-id: - http://svn.osgeo.org/geos/trunk@3145 + snapping to the C-API git-svn-id: http://svn.osgeo.org/geos/trunk@3145 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp: Allow - testing snapping something different from a single polygon.. - git-svn-id: http://svn.osgeo.org/geos/trunk@3144 + testing snapping something different from a single polygon.. git-svn-id: http://svn.osgeo.org/geos/trunk@3144 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp: tab to - 8 spaces git-svn-id: http://svn.osgeo.org/geos/trunk@3143 + 8 spaces git-svn-id: http://svn.osgeo.org/geos/trunk@3143 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli @@ -12371,71 +16684,57 @@ src/operation/overlay/snap/LineStringSnapper.cpp, tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: Bring LineStringSnapper forward to r309 (JTS-1.11+): avoid snapping final - point of closed rings. git-svn-id: - http://svn.osgeo.org/geos/trunk@3142 + point of closed rings. git-svn-id: http://svn.osgeo.org/geos/trunk@3142 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * include/geos/operation/overlay/snap/GeometrySnapper.h, src/operation/overlay/snap/GeometrySnapper.cpp: update copyright - date git-svn-id: http://svn.osgeo.org/geos/trunk@3141 + date git-svn-id: http://svn.osgeo.org/geos/trunk@3141 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-12-02 Sandro Santilli * include/geos/operation/overlay/snap/GeometrySnapper.h, src/operation/overlay/snap/GeometrySnapper.cpp: Take GeometrySnapper - forward to r309 (JTS-1.11+): add self-snapping git-svn-id: - http://svn.osgeo.org/geos/trunk@3140 + forward to r309 (JTS-1.11+): add self-snapping git-svn-id: http://svn.osgeo.org/geos/trunk@3140 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-30 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/sharedpaths/SharedPathsOp.cpp: Hope this is the last - one... (RT credit tweaks) git-svn-id: - http://svn.osgeo.org/geos/trunk@3139 + one... (RT credit tweaks) git-svn-id: http://svn.osgeo.org/geos/trunk@3139 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/sharedpaths/SharedPathsOp.cpp: Full credit line - [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3138 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-11-29 Sandro Santilli - - * NEWS: SharedPaths in NEWS [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@3137 + [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3138 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - php/geos.c, php/test/test.php: Merge branch 'rt' git-svn-id: - http://svn.osgeo.org/geos/trunk@3136 + * NEWS: SharedPaths in NEWS [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@3137 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * NEWS, include/geos/operation/sharedpaths/SharedPathsOp.h, - src/operation/sharedpaths/SharedPathsOp.cpp: Write RT credit and - NEWS itam git-svn-id: http://svn.osgeo.org/geos/trunk@3135 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * : 9 0 capi/geos_c.cpp 16 0 capi/geos_c.h.in 74 0 + capi/geos_ts_c.cpp 28 0 php/geos.c 16 0 php/test/test.php 2010-11-29 Sandro Santilli - * src/operation/sharedpaths/SharedPathsOp.cpp: drop unused include - git-svn-id: http://svn.osgeo.org/geos/trunk@3134 + * src/operation/sharedpaths/SharedPathsOp.cpp: drop unused include git-svn-id: http://svn.osgeo.org/geos/trunk@3134 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * src/operation/sharedpaths/SharedPathsOp.cpp, tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Test equal - lines git-svn-id: http://svn.osgeo.org/geos/trunk@3133 + lines git-svn-id: http://svn.osgeo.org/geos/trunk@3133 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli @@ -12443,64 +16742,57 @@ * include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/sharedpaths/SharedPathsOp.cpp, tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Have - SharedPathsOp throw an exception on illegal (non-lineal) arg - git-svn-id: http://svn.osgeo.org/geos/trunk@3132 + SharedPathsOp throw an exception on illegal (non-lineal) arg git-svn-id: http://svn.osgeo.org/geos/trunk@3132 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Add tests - for multiline-multiline both single dir and mixed dirs git-svn-id: - http://svn.osgeo.org/geos/trunk@3131 + for multiline-multiline both single dir and mixed dirs git-svn-id: http://svn.osgeo.org/geos/trunk@3131 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Add two - tests of mixed direction shared paths git-svn-id: - http://svn.osgeo.org/geos/trunk@3130 + tests of mixed direction shared paths git-svn-id: http://svn.osgeo.org/geos/trunk@3130 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h: Document that the direction of the returned paths is the one these paths have on - the first geometry given git-svn-id: - http://svn.osgeo.org/geos/trunk@3129 + the first geometry given git-svn-id: http://svn.osgeo.org/geos/trunk@3129 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/sharedpaths/SharedPathsOpTest.cpp: Initial - tests for SharedPathsOp git-svn-id: - http://svn.osgeo.org/geos/trunk@3128 + tests for SharedPathsOp git-svn-id: http://svn.osgeo.org/geos/trunk@3128 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/sharedpaths/SharedPathsOp.cpp: Paths are always - LINESTRING types git-svn-id: http://svn.osgeo.org/geos/trunk@3127 + LINESTRING types git-svn-id: http://svn.osgeo.org/geos/trunk@3127 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * .gitignore: forgot aclocal.m4 git-svn-id: - http://svn.osgeo.org/geos/trunk@3126 + * .gitignore: forgot aclocal.m4 git-svn-id: http://svn.osgeo.org/geos/trunk@3126 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * .vimrc, include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/sharedpaths/SharedPathsOp.cpp: Complete implementation - of SharedPathsOp git-svn-id: http://svn.osgeo.org/geos/trunk@3125 + of SharedPathsOp git-svn-id: http://svn.osgeo.org/geos/trunk@3125 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * .gitignore: more ignores git-svn-id: - http://svn.osgeo.org/geos/trunk@3124 + * .gitignore: more ignores git-svn-id: http://svn.osgeo.org/geos/trunk@3124 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli @@ -12510,73 +16802,65 @@ include/geos/operation/sharedpaths/SharedPathsOp.h, src/operation/Makefile.am, src/operation/sharedpaths/Makefile.am, src/operation/sharedpaths/SharedPathsOp.cpp: Build sharedpaths - lib/namespace git-svn-id: http://svn.osgeo.org/geos/trunk@3123 + lib/namespace git-svn-id: http://svn.osgeo.org/geos/trunk@3123 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * configure.in: Add support for 'maintainer mode' git-svn-id: - http://svn.osgeo.org/geos/trunk@3122 + * configure.in: Add support for 'maintainer mode' git-svn-id: http://svn.osgeo.org/geos/trunk@3122 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli - * .gitignore: ignores git-svn-id: - http://svn.osgeo.org/geos/trunk@3121 + * .gitignore: ignores git-svn-id: http://svn.osgeo.org/geos/trunk@3121 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * include/geos/operation/sharedpaths/SharedPathsOp.h, - src/operation/sharedpaths/SharedPathsOp.cpp: Stub SharedPathsOp - git-svn-id: http://svn.osgeo.org/geos/trunk@3120 + src/operation/sharedpaths/SharedPathsOp.cpp: Stub SharedPathsOp git-svn-id: http://svn.osgeo.org/geos/trunk@3120 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-29 Sandro Santilli * tests/xmltester/tests/rt/TestSameDirection.xml: stub tet for - SameDirection predicate git-svn-id: - http://svn.osgeo.org/geos/trunk@3119 + SameDirection predicate git-svn-id: http://svn.osgeo.org/geos/trunk@3119 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-11-24 Sandro Santilli - * TODO: typo git-svn-id: http://svn.osgeo.org/geos/trunk@3118 + * TODO: typo git-svn-id: http://svn.osgeo.org/geos/trunk@3118 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-25 Sandro Santilli * configure.in: Don't try to configure missing files (fixes bug - #382) git-svn-id: http://svn.osgeo.org/geos/trunk@3117 + #382) git-svn-id: http://svn.osgeo.org/geos/trunk@3117 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-15 Mateusz Loskot * CMakeLists.txt, tests/unit/CMakeLists.txt: Unified CMAKE_*_OUTPUT_DIRECTOR locations to simplify tests running and - finding all binaries. git-svn-id: - http://svn.osgeo.org/geos/trunk@3116 + finding all binaries. git-svn-id: http://svn.osgeo.org/geos/trunk@3116 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-15 Mateusz Loskot * tests/unit/capi/GEOSGeom_create.cpp, tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, - tests/unit/io/WKTReaderTest.cpp: Visual C++ warnings cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@3115 + tests/unit/io/WKTReaderTest.cpp: Visual C++ warnings cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@3115 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-15 Mateusz Loskot * capi/geos_c.h.in: Missing DLL storage-class attributes for - GEOSOrientationIndex git-svn-id: - http://svn.osgeo.org/geos/trunk@3114 + GEOSOrientationIndex git-svn-id: http://svn.osgeo.org/geos/trunk@3114 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-15 Mateusz Loskot - * src/io/WKTReader.cpp: Cast toupper() result to char git-svn-id: - http://svn.osgeo.org/geos/trunk@3113 + * src/io/WKTReader.cpp: Cast toupper() result to char git-svn-id: http://svn.osgeo.org/geos/trunk@3113 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-15 Mateusz Loskot @@ -12623,49 +16907,42 @@ build/msvc90/geos_unit/geos_unit.vcproj, build/msvc90/geos_xmltester/Makefile.am, build/msvc90/geos_xmltester/geos_xmltester.vcproj: Deprecate Visual - Studio projects in trunk/build (#381). Long live the CMake. - git-svn-id: http://svn.osgeo.org/geos/trunk@3112 + Studio projects in trunk/build (#381). Long live the CMake. git-svn-id: http://svn.osgeo.org/geos/trunk@3112 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot - * include/geos/geom/BinaryOp.h: Cleaned compiler warnings - git-svn-id: http://svn.osgeo.org/geos/trunk@3111 + * include/geos/geom/BinaryOp.h: Cleaned compiler warnings git-svn-id: http://svn.osgeo.org/geos/trunk@3111 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot - * capi/geos_ts_c.cpp: Cleaned compiler warnings git-svn-id: - http://svn.osgeo.org/geos/trunk@3110 + * capi/geos_ts_c.cpp: Cleaned compiler warnings git-svn-id: http://svn.osgeo.org/geos/trunk@3110 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot * src/inlines.cpp: Disable inline.obj if GEOS_INLINE defined while - building with Visual C++ git-svn-id: - http://svn.osgeo.org/geos/trunk@3109 + building with Visual C++ git-svn-id: http://svn.osgeo.org/geos/trunk@3109 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot * src/operation/buffer/BufferBuilder.cpp: Disable argument dependant lookup (Koenig) for min/max functions to make sure GEOS compiles in - the presence of the min and max macros. git-svn-id: - http://svn.osgeo.org/geos/trunk@3108 + the presence of the min and max macros. git-svn-id: http://svn.osgeo.org/geos/trunk@3108 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot - * CMakeLists.txt: Added NOMINMAX define for Visual C++ git-svn-id: - http://svn.osgeo.org/geos/trunk@3107 + * CMakeLists.txt: Added NOMINMAX define for Visual C++ git-svn-id: http://svn.osgeo.org/geos/trunk@3107 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot * CMakeLists.txt: Do not set CMAKE_BUILD_TYPE for Visual Studio IDE generators - CMAKE_BUILD_TYPE is dedicated to single-configuration - generators like Make or NMAKE. git-svn-id: - http://svn.osgeo.org/geos/trunk@3106 + generators like Make or NMAKE. git-svn-id: http://svn.osgeo.org/geos/trunk@3106 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-10-10 Mateusz Loskot @@ -12677,14 +16954,12 @@ 2010-08-27 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug358.xml: Add - test for 358 in the loop (now fixed). git-svn-id: - http://svn.osgeo.org/geos/trunk@3104 + test for 358 in the loop (now fixed). git-svn-id: http://svn.osgeo.org/geos/trunk@3104 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli - * tests/xmltester/tests/bug375.xml: Drop duplicated testcase - git-svn-id: http://svn.osgeo.org/geos/trunk@3103 + * tests/xmltester/tests/bug375.xml: Drop duplicated testcase git-svn-id: http://svn.osgeo.org/geos/trunk@3103 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli @@ -12692,25 +16967,24 @@ * include/geos/geom/BinaryOp.h, tests/xmltester/Makefile.am: Check validity of CommonBitsOp return, as JTS does. Check output validity for all tests, do not run the now-throwing tests also known to be - bogus in JTS. git-svn-id: http://svn.osgeo.org/geos/trunk@3102 + bogus in JTS. git-svn-id: http://svn.osgeo.org/geos/trunk@3102 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug358.xml, - tests/xmltester/tests/{robustness-invalid-output.xml => - failure/TestOverlay.xml}: Found bug375.xml - (==robustness-invalid-output.xml) to be the same of JTS's + tests/xmltester/tests/failure/TestOverlay.xml, + tests/xmltester/tests/robustness-invalid-output.xml: Found + bug375.xml (==robustness-invalid-output.xml) to be the same of JTS's failure/TestOverlay.xml, so dropped the previous 2 and copied over the latter. Won't run that test for now, so to get in sync with JTS - as next step. git-svn-id: http://svn.osgeo.org/geos/trunk@3101 + as next step. git-svn-id: http://svn.osgeo.org/geos/trunk@3101 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli * tests/xmltester/tests/bug375.xml: Add proper arg1 and arg2 - attributes (for JTS support) git-svn-id: - http://svn.osgeo.org/geos/trunk@3100 + attributes (for JTS support) git-svn-id: http://svn.osgeo.org/geos/trunk@3100 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli @@ -12721,8 +16995,7 @@ off to avoid breaking a previously-almost-working test (robustness-invalid-output.xml). It'll need some discussion before going on with this as to whether we can accept to return invalid - geometries or not.. git-svn-id: - http://svn.osgeo.org/geos/trunk@3099 + geometries or not.. git-svn-id: http://svn.osgeo.org/geos/trunk@3099 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli @@ -12733,78 +17006,72 @@ tests/xmltester/tests/robustness.xml, tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml , tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml: Split tests - that trigger invalid outputs from the rest. Test the sane ones with + that trigger invalid outputs from the rest. Test the sane ones with --test-invalid-output and the other ones with less strictness. Add (but dont run) tests for bugs 375 and 358 (to review for correct - expected otuput) git-svn-id: http://svn.osgeo.org/geos/trunk@3098 + expected otuput) git-svn-id: http://svn.osgeo.org/geos/trunk@3098 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Have - --test-valid-output influence test results git-svn-id: - http://svn.osgeo.org/geos/trunk@3097 + --test-valid-output influence test results git-svn-id: http://svn.osgeo.org/geos/trunk@3097 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli - * README: Add note about configuring for php support git-svn-id: - http://svn.osgeo.org/geos/trunk@3096 + * README: Add note about configuring for php support git-svn-id: http://svn.osgeo.org/geos/trunk@3096 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: - const-correctness git-svn-id: http://svn.osgeo.org/geos/trunk@3095 + const-correctness git-svn-id: http://svn.osgeo.org/geos/trunk@3095 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-27 Sandro Santilli * tests/xmltester/XMLTester.cpp: Have --test-valid-output test - actual result, not the expected one (more useful) git-svn-id: - http://svn.osgeo.org/geos/trunk@3094 + actual result, not the expected one (more useful) git-svn-id: http://svn.osgeo.org/geos/trunk@3094 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-26 Sandro Santilli - * tests/xmltester/tests/{bug334.xml => bug344.xml}: Fix name of the - test to match ticket number git-svn-id: - http://svn.osgeo.org/geos/trunk@3093 + * tests/xmltester/tests/bug334.xml, + tests/xmltester/tests/bug344.xml: Fix name of the test to match + ticket number git-svn-id: http://svn.osgeo.org/geos/trunk@3093 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-23 Stephen Wong * src/operation/buffer/BufferBuilder.cpp: Fixed a filtering distance - problem in bufferLineSingleSided. (#372) git-svn-id: - http://svn.osgeo.org/geos/trunk@3092 + problem in bufferLineSingleSided. (#372) git-svn-id: http://svn.osgeo.org/geos/trunk@3092 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-23 Sandro Santilli * include/geos/geom/BinaryOp.h: Add more debugging calls (for bug - #358) git-svn-id: http://svn.osgeo.org/geos/trunk@3091 + #358) git-svn-id: http://svn.osgeo.org/geos/trunk@3091 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-23 Sandro Santilli * include/geos/geom/BinaryOp.h: Snapping heuristic was never really - dropping common bits. Now it does. This is just to have code match + dropping common bits. Now it does. This is just to have code match documentation, and still passes 'make check' for GEOS. Wasn't tried - against postgis, would be useful to do. git-svn-id: - http://svn.osgeo.org/geos/trunk@3090 + against postgis, would be useful to do. git-svn-id: http://svn.osgeo.org/geos/trunk@3090 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-17 Sean Gillies * capi/geos_ts_c.cpp: Use fully qualified std::runtime_error (#371) - and fix indentation git-svn-id: - http://svn.osgeo.org/geos/trunk@3089 + and fix indentation git-svn-id: http://svn.osgeo.org/geos/trunk@3089 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-08-17 Sean Gillies * capi/geos_ts_c.cpp: Throw runtime_error if allocation fails in - gstrdup_s git-svn-id: http://svn.osgeo.org/geos/trunk@3088 + gstrdup_s git-svn-id: http://svn.osgeo.org/geos/trunk@3088 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-26 Stephen Wong @@ -12814,59 +17081,52 @@ src/operation/valid/IsValidOp.cpp, tests/xmltester/tests/general/TestValid2.xml: Fixed a bufferLineSingleSided crash and fixed OGC validation on rare cases. - (#364) git-svn-id: http://svn.osgeo.org/geos/trunk@3087 + (#364) git-svn-id: http://svn.osgeo.org/geos/trunk@3087 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-15 Sandro Santilli - * php/TODO: Updated git-svn-id: - http://svn.osgeo.org/geos/trunk@3086 + * php/TODO: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@3086 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-15 Sandro Santilli - * NEWS: Add item about the new PHP5 binding git-svn-id: - http://svn.osgeo.org/geos/trunk@3085 + * NEWS: Add item about the new PHP5 binding git-svn-id: http://svn.osgeo.org/geos/trunk@3085 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-15 Sandro Santilli * php/geos.c, php/test/test.php: PHP: Drop debug lines from - serialization code, add test for serialization git-svn-id: - http://svn.osgeo.org/geos/trunk@3084 + serialization code, add test for serialization git-svn-id: http://svn.osgeo.org/geos/trunk@3084 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-15 Sandro Santilli - * configure.in: Fix logic bug in phpunit check git-svn-id: - http://svn.osgeo.org/geos/trunk@3083 + * configure.in: Fix logic bug in phpunit check git-svn-id: http://svn.osgeo.org/geos/trunk@3083 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-14 Sandro Santilli * php/TODO, php/geos.c: Serialization/deserialization support for - GEOSGeometry type git-svn-id: http://svn.osgeo.org/geos/trunk@3082 + GEOSGeometry type git-svn-id: http://svn.osgeo.org/geos/trunk@3082 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-13 Sandro Santilli * configure.in, php/test/Makefile.am: Cleanup PHP-specific - dependency handling and reporting git-svn-id: - http://svn.osgeo.org/geos/trunk@3081 + dependency handling and reporting git-svn-id: http://svn.osgeo.org/geos/trunk@3081 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-08 Sandro Santilli * src/geom/Polygon.cpp, tests/unit/io/WKTReaderTest.cpp: Object passed for ownership transfer in the constructor shouldn't be - deleted when construction fails. Fixes bug #361 git-svn-id: - http://svn.osgeo.org/geos/trunk@3080 + deleted when construction fails. Fixes bug #361 git-svn-id: http://svn.osgeo.org/geos/trunk@3080 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-01 Sandro Santilli - * NEWS: Note the bugfix in news file git-svn-id: - http://svn.osgeo.org/geos/trunk@3079 + * NEWS: Note the bugfix in news file git-svn-id: http://svn.osgeo.org/geos/trunk@3079 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-01 Sandro Santilli @@ -12879,71 +17139,64 @@ src/planargraph/PlanarGraph.cpp: Fix PolygonizeGraph::deleteDangles so it doesn't return duplicated LineStrings, as per JTS design. Fixes the Polygonizer Bug reported in list. This commit also takes - the chance to reduce some heap allocations. git-svn-id: - http://svn.osgeo.org/geos/trunk@3078 + the chance to reduce some heap allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@3078 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-01 Sandro Santilli * include/geos/operation/polygonize/EdgeRing.h, src/operation/polygonize/EdgeRing.cpp: Minor optimizations / - strictnesses git-svn-id: http://svn.osgeo.org/geos/trunk@3077 + strictnesses git-svn-id: http://svn.osgeo.org/geos/trunk@3077 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-07-01 Sandro Santilli * include/geos/operation/polygonize/EdgeRing.h, src/operation/polygonize/EdgeRing.cpp: Drop useless heap-allocation - in Polygonize op git-svn-id: http://svn.osgeo.org/geos/trunk@3076 + in Polygonize op git-svn-id: http://svn.osgeo.org/geos/trunk@3076 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Frank Warmerdam * tests/unit/capi/GEOSGeomToWKTTest.cpp, tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp, - tests/unit/geom/PointTest.cpp: fix memory leaks git-svn-id: - http://svn.osgeo.org/geos/trunk@3075 + tests/unit/geom/PointTest.cpp: fix memory leaks git-svn-id: http://svn.osgeo.org/geos/trunk@3075 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * php/geos.c, php/test/test.php: PHP: - GEOSWKTWriter::getOutputDimension and test git-svn-id: - http://svn.osgeo.org/geos/trunk@3074 + GEOSWKTWriter::getOutputDimension and test git-svn-id: http://svn.osgeo.org/geos/trunk@3074 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Frank Warmerdam * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/GEOSGeomToWKTTest.cpp: added - GEOSWKTWriter_getOutputDimension and test (#354) git-svn-id: - http://svn.osgeo.org/geos/trunk@3073 + GEOSWKTWriter_getOutputDimension and test (#354) git-svn-id: http://svn.osgeo.org/geos/trunk@3073 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli - * php/TODO: Update git-svn-id: - http://svn.osgeo.org/geos/trunk@3072 + * php/TODO: Update git-svn-id: http://svn.osgeo.org/geos/trunk@3072 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * php/geos.c, php/test/test.php: WKBReader: construct and readHEX; - improve WKTReader test to include 'Z' label git-svn-id: - http://svn.osgeo.org/geos/trunk@3071 + improve WKTReader test to include 'Z' label git-svn-id: http://svn.osgeo.org/geos/trunk@3071 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * php/geos.c, php/test/test.php: WKBWriter::{set,get}IncludeSRID - (and test) git-svn-id: http://svn.osgeo.org/geos/trunk@3070 + (and test) git-svn-id: http://svn.osgeo.org/geos/trunk@3070 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * php/geos.c, php/test/test.php: WKBWriter::{get,set}ByteOrder, - improve tests for writeHEX git-svn-id: - http://svn.osgeo.org/geos/trunk@3069 + improve tests for writeHEX git-svn-id: http://svn.osgeo.org/geos/trunk@3069 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli @@ -12951,22 +17204,19 @@ * capi/geos_ts_c.cpp, include/geos/io/WKBWriter.h, src/io/WKBWriter.cpp: Make WKBWriter::setByteOrder check for argument and throw IllegalArgumentException when appropriate. Make - sure C-API wrapper catches those. git-svn-id: - http://svn.osgeo.org/geos/trunk@3068 + sure C-API wrapper catches those. git-svn-id: http://svn.osgeo.org/geos/trunk@3068 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * php/geos.c, php/test/test.php: PHP: WKBWriter: ctor, - getOutputDimension, setOutputDimension, writeHEX and tests - git-svn-id: http://svn.osgeo.org/geos/trunk@3067 + getOutputDimension, setOutputDimension, writeHEX and tests git-svn-id: http://svn.osgeo.org/geos/trunk@3067 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli * capi/geos_ts_c.cpp: Properly catch exceptions from - WKTWriter::setOutputDimension and WKBWriter::setOutputDimension - git-svn-id: http://svn.osgeo.org/geos/trunk@3066 + WKTWriter::setOutputDimension and WKBWriter::setOutputDimension git-svn-id: http://svn.osgeo.org/geos/trunk@3066 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-24 Sandro Santilli @@ -12978,27 +17228,25 @@ constructor; make WKBWriter::setOutputDimensions perform the check as well (like the constructor); Drop virtual methods from WKTWriter class, which wasn't meant to be a virtual class (no virtual dtor - anyway) git-svn-id: http://svn.osgeo.org/geos/trunk@3065 + anyway) git-svn-id: http://svn.osgeo.org/geos/trunk@3065 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-23 Sandro Santilli - * NEWS: Log ABI change git-svn-id: - http://svn.osgeo.org/geos/trunk@3064 + * NEWS: Log ABI change git-svn-id: http://svn.osgeo.org/geos/trunk@3064 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-23 Sandro Santilli * include/geos/geom/Geometry.h, src/geom/Geometry.cpp: Const-correct - Geometry::isWithinDistance. Thanks to Yabo, see ticket #349 - git-svn-id: http://svn.osgeo.org/geos/trunk@3063 + Geometry::isWithinDistance. Thanks to Yabo, see ticket #349 git-svn-id: http://svn.osgeo.org/geos/trunk@3063 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-23 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, php/geos.c: There's no point for GEOSisValidDetail to take output parameter as - const pointer git-svn-id: http://svn.osgeo.org/geos/trunk@3062 + const pointer git-svn-id: http://svn.osgeo.org/geos/trunk@3062 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-23 Sandro Santilli @@ -13006,7 +17254,7 @@ * include/geos/operation/buffer/OffsetCurveVertexList.h, src/geom/CoordinateArraySequence.cpp, src/geom/GeometryFactory.cpp, src/io/WKTWriter.cpp: Fix for 4.4.3 builds, patch by Yabo (see - ticket #351) git-svn-id: http://svn.osgeo.org/geos/trunk@3061 + ticket #351) git-svn-id: http://svn.osgeo.org/geos/trunk@3061 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli @@ -13014,163 +17262,138 @@ * php/TODO, php/geos.c, src/geom/GeometryCollection.cpp, src/geom/LineString.cpp, src/geom/Polygon.cpp: Switch back to unchecked getGeometryN, getPointN and getInteriorRingN, check them - at the PHP level, for performance sake in C-land. git-svn-id: - http://svn.osgeo.org/geos/trunk@3060 + at the PHP level, for performance sake in C-land. git-svn-id: http://svn.osgeo.org/geos/trunk@3060 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli * php/TODO, php/geos.c, php/test/test.php: Rename getGeometryN to - geometryN, for interface consistency git-svn-id: - http://svn.osgeo.org/geos/trunk@3059 + geometryN, for interface consistency git-svn-id: http://svn.osgeo.org/geos/trunk@3059 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli * php/TODO, php/geos.c, php/test/test.php: area, length, distance, - hausdorffDistance; fix leaks in pointN, startPoint and endPoint - git-svn-id: http://svn.osgeo.org/geos/trunk@3058 + hausdorffDistance; fix leaks in pointN, startPoint and endPoint git-svn-id: http://svn.osgeo.org/geos/trunk@3058 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: startPoint, endPoint git-svn-id: - http://svn.osgeo.org/geos/trunk@3057 + * php/geos.c, php/test/test.php: startPoint, endPoint git-svn-id: http://svn.osgeo.org/geos/trunk@3057 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: pointN git-svn-id: - http://svn.osgeo.org/geos/trunk@3056 + * php/geos.c, php/test/test.php: pointN git-svn-id: http://svn.osgeo.org/geos/trunk@3056 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli * src/geom/LineString.cpp: LineString::getPointN is part of the API, - check before segfaulting.. git-svn-id: - http://svn.osgeo.org/geos/trunk@3055 + check before segfaulting.. git-svn-id: http://svn.osgeo.org/geos/trunk@3055 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: coordinateDimension() git-svn-id: - http://svn.osgeo.org/geos/trunk@3054 + * php/geos.c, php/test/test.php: coordinateDimension() git-svn-id: http://svn.osgeo.org/geos/trunk@3054 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/TODO, php/geos.c, php/test/test.php: dimension() [ spatial ] - git-svn-id: http://svn.osgeo.org/geos/trunk@3053 + * php/TODO, php/geos.c, php/test/test.php: dimension() [ spatial ] git-svn-id: http://svn.osgeo.org/geos/trunk@3053 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: numCoordinates git-svn-id: - http://svn.osgeo.org/geos/trunk@3052 + * php/geos.c, php/test/test.php: numCoordinates git-svn-id: http://svn.osgeo.org/geos/trunk@3052 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: exteriorRing git-svn-id: - http://svn.osgeo.org/geos/trunk@3051 + * php/geos.c, php/test/test.php: exteriorRing git-svn-id: http://svn.osgeo.org/geos/trunk@3051 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli * php/TODO, php/geos.c, php/test/test.php: numPoints, getX, getY, - interiorRingN git-svn-id: http://svn.osgeo.org/geos/trunk@3050 + interiorRingN git-svn-id: http://svn.osgeo.org/geos/trunk@3050 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * src/geom/Polygon.cpp: Make getInteriorRingN checked (API) - git-svn-id: http://svn.osgeo.org/geos/trunk@3049 + * src/geom/Polygon.cpp: Make getInteriorRingN checked (API) git-svn-id: http://svn.osgeo.org/geos/trunk@3049 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: numInteriorRings git-svn-id: - http://svn.osgeo.org/geos/trunk@3048 + * php/geos.c, php/test/test.php: numInteriorRings git-svn-id: http://svn.osgeo.org/geos/trunk@3048 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/test/test.php: Test null-return from unexistent offset - git-svn-id: http://svn.osgeo.org/geos/trunk@3047 + * php/test/test.php: Test null-return from unexistent offset git-svn-id: http://svn.osgeo.org/geos/trunk@3047 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli * src/geom/GeometryCollection.cpp: Geometry::getGeometryN is an API - function, so make it safe/checked git-svn-id: - http://svn.osgeo.org/geos/trunk@3046 + function, so make it safe/checked git-svn-id: http://svn.osgeo.org/geos/trunk@3046 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: getGeometryN git-svn-id: - http://svn.osgeo.org/geos/trunk@3045 + * php/geos.c, php/test/test.php: getGeometryN git-svn-id: http://svn.osgeo.org/geos/trunk@3045 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/test/test.php: Test numGeometries git-svn-id: - http://svn.osgeo.org/geos/trunk@3044 + * php/test/test.php: Test numGeometries git-svn-id: http://svn.osgeo.org/geos/trunk@3044 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-21 Sandro Santilli - * php/geos.c, php/test/test.php: getSRID, setSRID git-svn-id: - http://svn.osgeo.org/geos/trunk@3043 + * php/geos.c, php/test/test.php: getSRID, setSRID git-svn-id: http://svn.osgeo.org/geos/trunk@3043 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/test.php: typeName, typeId git-svn-id: - http://svn.osgeo.org/geos/trunk@3042 + * php/geos.c, php/test/test.php: typeName, typeId git-svn-id: http://svn.osgeo.org/geos/trunk@3042 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/test.php: Geometry type constants - git-svn-id: http://svn.osgeo.org/geos/trunk@3041 + * php/geos.c, php/test/test.php: Geometry type constants git-svn-id: http://svn.osgeo.org/geos/trunk@3041 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/test.php: isSimple, isRing, hasZ, isClosed - git-svn-id: http://svn.osgeo.org/geos/trunk@3040 + * php/geos.c, php/test/test.php: isSimple, isRing, hasZ, isClosed git-svn-id: http://svn.osgeo.org/geos/trunk@3040 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/test.php: checkValidity (isValid in disguise) - git-svn-id: http://svn.osgeo.org/geos/trunk@3039 + * php/geos.c, php/test/test.php: checkValidity (isValid in disguise) git-svn-id: http://svn.osgeo.org/geos/trunk@3039 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/TODO, php/geos.c, php/test/test.php: isEmpty git-svn-id: - http://svn.osgeo.org/geos/trunk@3038 + * php/TODO, php/geos.c, php/test/test.php: isEmpty git-svn-id: http://svn.osgeo.org/geos/trunk@3038 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/test.php: Relational operators + equalsExact - git-svn-id: http://svn.osgeo.org/geos/trunk@3037 + * php/geos.c, php/test/test.php: Relational operators + equalsExact git-svn-id: http://svn.osgeo.org/geos/trunk@3037 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli * php/geos.c, php/test/test.php: Simplify (also - topology-preserving), ExtractUniquePoints git-svn-id: - http://svn.osgeo.org/geos/trunk@3036 + topology-preserving), ExtractUniquePoints git-svn-id: http://svn.osgeo.org/geos/trunk@3036 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/geos.c, php/test/Makefile.am, php/test/test.php: GEOSLineMerge - git-svn-id: http://svn.osgeo.org/geos/trunk@3035 + * php/geos.c, php/test/Makefile.am, php/test/test.php: GEOSLineMerge git-svn-id: http://svn.osgeo.org/geos/trunk@3035 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli @@ -13178,129 +17401,111 @@ * php/geos.c, php/test/test.php: Make GEOSPolygonize a free function rather than a method on GEOSGeometry. This is to allow extending it to accept differnet kind of args, like arrays of GEOSGeometry for - example.. git-svn-id: http://svn.osgeo.org/geos/trunk@3034 + example.. git-svn-id: http://svn.osgeo.org/geos/trunk@3034 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/TODO: Add serialize/unserialize TODO item git-svn-id: - http://svn.osgeo.org/geos/trunk@3033 + * php/TODO: Add serialize/unserialize TODO item git-svn-id: http://svn.osgeo.org/geos/trunk@3033 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli - * php/TODO, php/geos.c: Geometry.__toString for easier debuggin - git-svn-id: http://svn.osgeo.org/geos/trunk@3032 + * php/TODO, php/geos.c: Geometry.__toString for easier debuggin git-svn-id: http://svn.osgeo.org/geos/trunk@3032 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-20 Sandro Santilli * php/TODO, php/geos.c, php/test/test.php: Polygonize (testing need - further review for a possible bug in core lib) git-svn-id: - http://svn.osgeo.org/geos/trunk@3031 + further review for a possible bug in core lib) git-svn-id: http://svn.osgeo.org/geos/trunk@3031 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * php/test/test.php: Use the "T" char for IM9 pattern sometime (for - fun and proof) git-svn-id: http://svn.osgeo.org/geos/trunk@3030 + fun and proof) git-svn-id: http://svn.osgeo.org/geos/trunk@3030 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/geos.c, php/test/test.php: relate, relatePattern git-svn-id: - http://svn.osgeo.org/geos/trunk@3029 + * php/geos.c, php/test/test.php: relate, relatePattern git-svn-id: http://svn.osgeo.org/geos/trunk@3029 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/geos.c, php/test/test.php: Geometry->{pointOnSurface,centroid} - git-svn-id: http://svn.osgeo.org/geos/trunk@3028 + * php/geos.c, php/test/test.php: Geometry->{pointOnSurface,centroid} git-svn-id: http://svn.osgeo.org/geos/trunk@3028 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * php/geos.c, php/test/test.php: More Geometry methods: envelope, intersection, convexHull, difference, symDifference, boundary, union - (including cascaded) git-svn-id: - http://svn.osgeo.org/geos/trunk@3027 + (including cascaded) git-svn-id: http://svn.osgeo.org/geos/trunk@3027 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/geos.c, php/test/test.php: Export buffer costants and method - git-svn-id: http://svn.osgeo.org/geos/trunk@3026 + * php/geos.c, php/test/test.php: Export buffer costants and method git-svn-id: http://svn.osgeo.org/geos/trunk@3026 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/test/test.php: Test typed empty geoms too for IO git-svn-id: - http://svn.osgeo.org/geos/trunk@3025 + * php/test/test.php: Test typed empty geoms too for IO git-svn-id: http://svn.osgeo.org/geos/trunk@3025 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * php/geos.c, php/test/test.php: Add second optional argument to - Geometry->project and Geometry->interpolate to request normalization - git-svn-id: http://svn.osgeo.org/geos/trunk@3024 + Geometry->project and Geometry->interpolate to request normalization git-svn-id: http://svn.osgeo.org/geos/trunk@3024 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * capi/geos_c.h.in: Document GEOSInterpolate git-svn-id: - http://svn.osgeo.org/geos/trunk@3023 + * capi/geos_c.h.in: Document GEOSInterpolate git-svn-id: http://svn.osgeo.org/geos/trunk@3023 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/geos.c, php/test/test.php: Add GEOSGeometry->interpolate() - git-svn-id: http://svn.osgeo.org/geos/trunk@3022 + * php/geos.c, php/test/test.php: Add GEOSGeometry->interpolate() git-svn-id: http://svn.osgeo.org/geos/trunk@3022 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * capi/geos_ts_c.cpp: Handle exceptions in GEOSInterpolate - git-svn-id: http://svn.osgeo.org/geos/trunk@3021 + * capi/geos_ts_c.cpp: Handle exceptions in GEOSInterpolate git-svn-id: http://svn.osgeo.org/geos/trunk@3021 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * php/test/Makefile.am: Better automake integration of unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@3020 + * php/test/Makefile.am: Better automake integration of unit test git-svn-id: http://svn.osgeo.org/geos/trunk@3020 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * src/linearref/LinearLocation.cpp: Handle illegal argument to - LinearLocation::getCoordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@3019 + LinearLocation::getCoordinate git-svn-id: http://svn.osgeo.org/geos/trunk@3019 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * capi/geos_c.h.in: document GEOSProject git-svn-id: - http://svn.osgeo.org/geos/trunk@3018 + * capi/geos_c.h.in: document GEOSProject git-svn-id: http://svn.osgeo.org/geos/trunk@3018 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * php/TODO, php/geos.c, php/test/Makefile.am, php/test/test.php: Complete implementation of WKTWriter interfaces, add phpunit-based - testing, add .project interface to Geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@3017 + testing, add .project interface to Geometry git-svn-id: http://svn.osgeo.org/geos/trunk@3017 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli - * configure.in: Check for PHP and PHPUNIT (for testing php bindings) - git-svn-id: http://svn.osgeo.org/geos/trunk@3016 + * configure.in: Check for PHP and PHPUNIT (for testing php bindings) git-svn-id: http://svn.osgeo.org/geos/trunk@3016 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * capi/geos_ts_c.cpp: Handle exceptions from - LenghtIndexedLine::project git-svn-id: - http://svn.osgeo.org/geos/trunk@3015 + LenghtIndexedLine::project git-svn-id: http://svn.osgeo.org/geos/trunk@3015 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli @@ -13313,42 +17518,35 @@ * src/linearref/LinearIterator.cpp: Throw an exception on first non-linestring component, rather than segfaulting la ter... (might - be better to refuse non-lineal even earlier, but this way we *migh * - be supporting collections with only linestrings) git-svn-id: - http://svn.osgeo.org/geos/trunk@3013 + be better to refuse non-lineal even earlier, but this way we *migh * be supporting collections with only linestrings) git-svn-id: http://svn.osgeo.org/geos/trunk@3013 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-19 Sandro Santilli * include/geos/linearref/LengthIndexOfPoint.h, - include/geos/linearref/LinearIterator.h: Dox cleanup git-svn-id: - http://svn.osgeo.org/geos/trunk@3012 + include/geos/linearref/LinearIterator.h: Dox cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@3012 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli - * php/geos.c, php/test/test.php: WKTWriter::setTrim git-svn-id: - http://svn.osgeo.org/geos/trunk@3011 + * php/geos.c, php/test/test.php: WKTWriter::setTrim git-svn-id: http://svn.osgeo.org/geos/trunk@3011 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli * php/Makefile.am: Ubuntu 8.10 version of gcc needs -std=gnu99 to - digest Zend headers :( git-svn-id: - http://svn.osgeo.org/geos/trunk@3010 + digest Zend headers :( git-svn-id: http://svn.osgeo.org/geos/trunk@3010 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli * Makefile.am, doc/Makefile.am: Add 'doxygen' rule (and 'apidoc' - alias) to top-level Makefile.am git-svn-id: - http://svn.osgeo.org/geos/trunk@3009 + alias) to top-level Makefile.am git-svn-id: http://svn.osgeo.org/geos/trunk@3009 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli - * php/TODO: tip for test git-svn-id: - http://svn.osgeo.org/geos/trunk@3008 + * php/TODO: tip for test git-svn-id: http://svn.osgeo.org/geos/trunk@3008 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli @@ -13356,59 +17554,53 @@ * Makefile.am, configure.in, php/Makefile.am, php/README, php/TODO, php/geos.c, php/php_geos.h, php/test/Makefile.am, php/test/crashme.php, php/test/test.php: Initial go at PHP5 - bindings. Can only read and write WKT so far. git-svn-id: - http://svn.osgeo.org/geos/trunk@3007 + bindings. Can only read and write WKT so far. git-svn-id: http://svn.osgeo.org/geos/trunk@3007 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli - * configure.in: Do not set user FLAGS, se project flags instead. For - the whole story, see: + * configure.in: Do not set user FLAGS, se project flags instead. + For the whole story, see: - http://www.gnu.org/software/hello/manual/automake/Flag-Variables-Ordering.html git-svn-id: http://svn.osgeo.org/geos/trunk@3006 5242fede-7e19-0410-aef8-94bd7d2200fb + http://www.gnu.org/software/hello/manual/automake/Flag-Variables-Ordering.htmlgit-svn-id: http://svn.osgeo.org/geos/trunk@3006 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli - * doc/Makefile.am: Fix automake override git-svn-id: - http://svn.osgeo.org/geos/trunk@3005 + * doc/Makefile.am: Fix automake override git-svn-id: http://svn.osgeo.org/geos/trunk@3005 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-18 Sandro Santilli * autogen.sh: Add -Woverride option to automake invocation, to catch - Makefile.am errors (there's one) git-svn-id: - http://svn.osgeo.org/geos/trunk@3004 + Makefile.am errors (there's one) git-svn-id: http://svn.osgeo.org/geos/trunk@3004 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-16 Sandro Santilli - * swig/geos.i.in: Drop carriage returns git-svn-id: - http://svn.osgeo.org/geos/trunk@3003 + * swig/geos.i.in: Drop carriage returns git-svn-id: http://svn.osgeo.org/geos/trunk@3003 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-16 Sandro Santilli - * swig/Makefile.am: OOps, tabs instead of spaces confuse automake - git-svn-id: http://svn.osgeo.org/geos/trunk@3002 + * swig/Makefile.am: OOps, tabs instead of spaces confuse automake git-svn-id: http://svn.osgeo.org/geos/trunk@3002 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-16 Sandro Santilli - * swig/Makefile.am: Always distribute swig bindings, closes bug #352 - git-svn-id: http://svn.osgeo.org/geos/trunk@3001 + * swig/Makefile.am: Always distribute swig bindings, closes bug #352 git-svn-id: http://svn.osgeo.org/geos/trunk@3001 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-16 Sandro Santilli * macros/ac_pkg_swig.m4: Fix swig macro so it doesn't think version - 2.0.0 is < 1.3.37 git-svn-id: http://svn.osgeo.org/geos/trunk@3000 + 2.0.0 is < 1.3.37 git-svn-id: http://svn.osgeo.org/geos/trunk@3000 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-06-01 Frank Warmerdam * src/io/WKTReader.cpp, tests/unit/io/WKTReaderTest.cpp: make - WKTReader keywords case insensitive git-svn-id: - http://svn.osgeo.org/geos/trunk@2999 + WKTReader keywords case insensitive git-svn-id: http://svn.osgeo.org/geos/trunk@2999 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-31 Frank Warmerdam @@ -13419,27 +17611,25 @@ src/geom/CoordinateArraySequence.cpp, src/geom/GeometryFactory.cpp, src/io/WKTWriter.cpp, tests/unit/geom/CoordinateArraySequenceTest.cpp: Attempt to make - geometry dimension perform more smoothly. Modified + geometry dimension perform more smoothly. Modified CoordinateArraySequence to default to unknown dimension (0), which is determined at the point getDimension() is called by examination of the first coordinate Z (ISNAN test). The WKTWriter has also been altered to write 0.0 instead of nan, and to avoid writing "Z" for - EMPTY geometries.(#348) git-svn-id: - http://svn.osgeo.org/geos/trunk@2998 + EMPTY geometries.(#348) git-svn-id: http://svn.osgeo.org/geos/trunk@2998 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-31 Frank Warmerdam * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Addition of getCoordinateDimension() on GEOSGeom (#311) Addition of - setOutputDimension, setOld3D on WKTWriter (#292) git-svn-id: - http://svn.osgeo.org/geos/trunk@2997 + setOutputDimension, setOld3D on WKTWriter (#292) git-svn-id: http://svn.osgeo.org/geos/trunk@2997 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-28 Frank Warmerdam * tests/unit/io/WKBWriterTest.cpp: added missing test that should - have been in r2995 git-svn-id: http://svn.osgeo.org/geos/trunk@2996 + have been in r2995 git-svn-id: http://svn.osgeo.org/geos/trunk@2996 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-28 Frank Warmerdam @@ -13455,15 +17645,13 @@ tests/unit/io/WKTWriterTest.cpp: Implement getCoordinateDimension() for geometries (#331) WKTWriter now has setOutputDimension() method, and writes 3D geometries (#292) WKBWriter has fixes for writing 2D - geometries from 3D geometry (#346) Minimal unit tests for the above. - git-svn-id: http://svn.osgeo.org/geos/trunk@2995 + geometries from 3D geometry (#346) Minimal unit tests for the above. git-svn-id: http://svn.osgeo.org/geos/trunk@2995 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-28 Frank Warmerdam * src/io/WKTReader.cpp, tests/unit/io/WKTReaderTest.cpp: add support - for reading SF1.2 Z/M/ZM geometries (#347) git-svn-id: - http://svn.osgeo.org/geos/trunk@2994 + for reading SF1.2 Z/M/ZM geometries (#347) git-svn-id: http://svn.osgeo.org/geos/trunk@2994 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-19 Frank Warmerdam @@ -13472,8 +17660,7 @@ include/geos/io/WKTWriter.h, src/io/WKTWriter.cpp, tests/unit/Makefile.am, tests/unit/io/WKTReaderTest.cpp, tests/unit/io/WKTWriterTest.cpp: added setPrecision, setTrim support - on WKTWriter and provided tests (#341) git-svn-id: - http://svn.osgeo.org/geos/trunk@2993 + on WKTWriter and provided tests (#341) git-svn-id: http://svn.osgeo.org/geos/trunk@2993 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-18 Frank Warmerdam @@ -13481,14 +17668,13 @@ * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSLineString_PointTest.cpp: expose several new - accessor functions on geometries (#345) git-svn-id: - http://svn.osgeo.org/geos/trunk@2992 + accessor functions on geometries (#345) git-svn-id: http://svn.osgeo.org/geos/trunk@2992 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-18 Frank Warmerdam * tests/unit/noding/SegmentNodeTest.cpp: disamiguate create args - (#345) git-svn-id: http://svn.osgeo.org/geos/trunk@2991 + (#345) git-svn-id: http://svn.osgeo.org/geos/trunk@2991 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-18 Frank Warmerdam @@ -13500,48 +17686,44 @@ src/geom/GeometryFactory.cpp, src/io/WKTReader.cpp, tests/unit/noding/BasicSegmentStringTest.cpp, tests/unit/noding/NodedSegmentStringTest.cpp: preserve dimension as - part of CoordinateArraySequence and while reading WKT (#345) - git-svn-id: http://svn.osgeo.org/geos/trunk@2990 + part of CoordinateArraySequence and while reading WKT (#345) git-svn-id: http://svn.osgeo.org/geos/trunk@2990 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-15 Sandro Santilli - * src/operation/buffer/OffsetCurveBuilder.cpp: Minor tweaks - git-svn-id: http://svn.osgeo.org/geos/trunk@2989 + * src/operation/buffer/OffsetCurveBuilder.cpp: Minor tweaks git-svn-id: http://svn.osgeo.org/geos/trunk@2989 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-15 Sandro Santilli * include/geos/operation/buffer/Makefile.am, - include/geos/operation/buffer/OffsetCurveBuilder.h, {src => - include/geos}/operation/buffer/OffsetCurveVertexList.h, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveVertexList.h, src/operation/buffer/Makefile.am, src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/buffer/OffsetCurveVertexList.h, tests/xmltester/tests/bug334.xml: Move OffsetCurveVertexList.h to headers dir, add a .reset() method to reduce memory allocations, use - the new interface. git-svn-id: - http://svn.osgeo.org/geos/trunk@2988 + the new interface. git-svn-id: http://svn.osgeo.org/geos/trunk@2988 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-15 Sandro Santilli * include/geos/geom/CoordinateArraySequence.h, src/geom/CoordinateArraySequence.cpp: Add clear() method to - CoordinateArraySequence, inline empty() git-svn-id: - http://svn.osgeo.org/geos/trunk@2987 + CoordinateArraySequence, inline empty() git-svn-id: http://svn.osgeo.org/geos/trunk@2987 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-04 Sandro Santilli * README: Add 'ldconfig' step, seems to be a recurring issue with - builders... git-svn-id: http://svn.osgeo.org/geos/trunk@2986 + builders... git-svn-id: http://svn.osgeo.org/geos/trunk@2986 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-05-02 Sandro Santilli * capi/geos_c.h.in: Add a note about 2d nature of - extractUniquePoints git-svn-id: - http://svn.osgeo.org/geos/trunk@2985 + extractUniquePoints git-svn-id: http://svn.osgeo.org/geos/trunk@2985 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-04-21 Mateusz Loskot @@ -13553,43 +17735,37 @@ 2010-04-17 Sandro Santilli * HOWTO_RELEASE, capi/geos_c.h.in: Also set version for the systems - not using autoconf, and update paths in HOWTO_RELEASE file - git-svn-id: http://svn.osgeo.org/geos/trunk@2977 + not using autoconf, and update paths in HOWTO_RELEASE file git-svn-id: http://svn.osgeo.org/geos/trunk@2977 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-04-17 Sandro Santilli * configure.in: As we're still maintaining 3.2 branch, and since new CAPI interface were added, bump CAPI lib interface version up. We'll - be 1.7.0 there from now on. git-svn-id: - http://svn.osgeo.org/geos/trunk@2976 + be 1.7.0 there from now on. git-svn-id: http://svn.osgeo.org/geos/trunk@2976 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-04-17 Sandro Santilli * NEWS, capi/geos_c.cpp: Have initGEOS(..) return a singleton, as - used to be up to 3.0.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@2974 + used to be up to 3.0.0 git-svn-id: http://svn.osgeo.org/geos/trunk@2974 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-04-07 Mateusz Loskot * nmake.opt: Added ENABLE_INLINE=YES|NO option to nmake.opt for Visual C++ builds using NMake. The ENABLE_INLINE=YES does not link - for me - to be fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@2968 + for me - to be fixed git-svn-id: http://svn.osgeo.org/geos/trunk@2968 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-04-07 Mateusz Loskot - * src/dirlist.mk: Updated src/dirlist.mk (Ticket 337) git-svn-id: - http://svn.osgeo.org/geos/trunk@2967 + * src/dirlist.mk: Updated src/dirlist.mk (Ticket 337) git-svn-id: http://svn.osgeo.org/geos/trunk@2967 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-29 Mateusz Loskot - * nmake.opt: Added NMake 10.x version to be recognized by nmake.opt - git-svn-id: http://svn.osgeo.org/geos/trunk@2965 + * nmake.opt: Added NMake 10.x version to be recognized by nmake.opt git-svn-id: http://svn.osgeo.org/geos/trunk@2965 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-29 Mateusz Loskot @@ -13624,25 +17800,12 @@ include/geos/planargraph/PlanarGraph.h, include/geos/simplify/DouglasPeuckerLineSimplifier.h, include/geos/simplify/TaggedLineString.h: Qualify size_t with std - namespace in headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@2961 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-03-29 Mateusz Loskot - - * : Updated svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@2960 + namespace in headers. git-svn-id: http://svn.osgeo.org/geos/trunk@2961 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-29 Mateusz Loskot - * build/msvc10/geos_lib/geos_lib.vcxproj, - build/msvc10/geos_lib/geos_lib.vcxproj.filters, - build/msvc90/geos_c_dll/geos_c_dll.vcproj, - build/msvc90/geos_unit/geos_unit.vcproj, - build/msvc90/geos_xmltester/geos_xmltester.vcproj: Updated projects - for Visual Studio 2008 and 2010 git-svn-id: - http://svn.osgeo.org/geos/trunk@2959 + * : Updated svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@2960 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-29 Mateusz Loskot @@ -13673,8 +17836,7 @@ include/geos/util/GeometricShapeFactory.h, include/geos/util/UniqueCoordinateArrayFilter.h: Added pragma to disable Visual C++ warning C4251 - safe to ignore - (http://support.microsoft.com/kb/813810/) git-svn-id: - http://svn.osgeo.org/geos/trunk@2958 + (http://support.microsoft.com/kb/813810/) git-svn-id: http://svn.osgeo.org/geos/trunk@2958 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-29 Mateusz Loskot @@ -13686,85 +17848,77 @@ 2010-03-26 Mateusz Loskot * include/geos/platform.h.vc: platform.h.vc: disable min/max macros - substitution git-svn-id: http://svn.osgeo.org/geos/trunk@2955 + substitution git-svn-id: http://svn.osgeo.org/geos/trunk@2955 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-26 Mateusz Loskot * include/geos/operation/union/CascadedPolygonUnion.h: Added GEOS_DLL with Microsoft-specific __declspec attribute missing from - CascadedPolygonUnion class (ported from branches/3.2) git-svn-id: - http://svn.osgeo.org/geos/trunk@2954 + CascadedPolygonUnion class (ported from branches/3.2) git-svn-id: http://svn.osgeo.org/geos/trunk@2954 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-26 Mateusz Loskot * src/geom/GeometryList.cpp: geom\GeoemtryList.cpp: missing implementation of GeometryList::size() function (ported from - branches/3.2) git-svn-id: http://svn.osgeo.org/geos/trunk@2952 + branches/3.2) git-svn-id: http://svn.osgeo.org/geos/trunk@2952 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-26 Mateusz Loskot * src/Makefile.vc: src\Makefile.vc: added missing - geom\GeometryList.cpp (ported from branches/3.2) git-svn-id: - http://svn.osgeo.org/geos/trunk@2950 + geom\GeometryList.cpp (ported from branches/3.2) git-svn-id: http://svn.osgeo.org/geos/trunk@2950 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-26 Mateusz Loskot * nmake.opt: nmake.opt: Added missing GEOS_DLL_EXPORT to CPPFLAGS - (ported from branches/3.2) git-svn-id: - http://svn.osgeo.org/geos/trunk@2948 + (ported from branches/3.2) git-svn-id: http://svn.osgeo.org/geos/trunk@2948 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-19 Sandro Santilli * NEWS, capi/geos_ts_c.cpp: Improve formatting for - GEOSisValidReason_r (#329) git-svn-id: - http://svn.osgeo.org/geos/trunk@2946 + GEOSisValidReason_r (#329) git-svn-id: http://svn.osgeo.org/geos/trunk@2946 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-18 Sandro Santilli * include/geos/operation/valid/IsValidOp.h, src/operation/valid/IsValidOp.cpp: Forw-port a better fix for #333 - (false positive valid geoms) git-svn-id: - http://svn.osgeo.org/geos/trunk@2944 + (false positive valid geoms) git-svn-id: http://svn.osgeo.org/geos/trunk@2944 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-16 Sandro Santilli - * capi/geos_ts_c.cpp: Fix ST_IsValidDetail (broke by last commit) - git-svn-id: http://svn.osgeo.org/geos/trunk@2941 + * capi/geos_ts_c.cpp: Fix ST_IsValidDetail (broke by last commit) git-svn-id: http://svn.osgeo.org/geos/trunk@2941 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-16 Sandro Santilli * capi/geos_ts_c.cpp: Now that IsValidOp doesn't cache the 'checked' status it is better to trigger a single check rather than two (also - fix leaks) git-svn-id: http://svn.osgeo.org/geos/trunk@2940 + fix leaks) git-svn-id: http://svn.osgeo.org/geos/trunk@2940 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-14 Sandro Santilli - * include/geos/util/Makefile.am: Install Machine.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2939 + * include/geos/util/Makefile.am: Install Machine.h git-svn-id: http://svn.osgeo.org/geos/trunk@2939 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-13 Sandro Santilli * capi/geos_ts_c.cpp, tests/unit/capi/GEOSOrientationIndex.cpp: Fix GEOSOrientationIndex implementation and testcase. Closes ticket - #335. git-svn-id: http://svn.osgeo.org/geos/trunk@2938 + #335. git-svn-id: http://svn.osgeo.org/geos/trunk@2938 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-12 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSOrientationIndex.cpp: - Expose GEOSOrientationIndex to C-API git-svn-id: - http://svn.osgeo.org/geos/trunk@2937 + Expose GEOSOrientationIndex to C-API git-svn-id: http://svn.osgeo.org/geos/trunk@2937 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-10 Sandro Santilli @@ -13772,28 +17926,24 @@ * include/geos/operation/valid/IsValidOp.h, src/operation/valid/IsValidOp.cpp, tests/xmltester/tests/general/TestValid.xml: Sync TestValid xml from - JTS, review IsValidOp to be in sync with current JTS trunk. - git-svn-id: http://svn.osgeo.org/geos/trunk@2936 + JTS, review IsValidOp to be in sync with current JTS trunk. git-svn-id: http://svn.osgeo.org/geos/trunk@2936 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-07 Sandro Santilli - * README: Apply slightly modified patch by mwtoews (#344) - git-svn-id: http://svn.osgeo.org/geos/trunk@2935 + * README: Apply slightly modified patch by mwtoews (#344) git-svn-id: http://svn.osgeo.org/geos/trunk@2935 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-06 Mateusz Loskot * CMakeLists.txt, cmake/cmake_uninstall.cmake.in: Added cmake/cmake_uninstall.cmake.in script and configured make uninstall - target for CMake configuration (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2934 + target for CMake configuration (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2934 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-03 Sandro Santilli - * capi/geos_c.h.in: Improve documentation for GEOSPOlygonize_full - git-svn-id: http://svn.osgeo.org/geos/trunk@2933 + * capi/geos_c.h.in: Improve documentation for GEOSPOlygonize_full git-svn-id: http://svn.osgeo.org/geos/trunk@2933 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-03-02 Sandro Santilli @@ -13801,71 +17951,62 @@ * NEWS, include/geos/operation/valid/IsValidOp.h, src/operation/valid/IsValidOp.cpp, tests/xmltester/tests/general/TestValid.xml: Fix false positive - return from IsValidOp (#333) git-svn-id: - http://svn.osgeo.org/geos/trunk@2932 + return from IsValidOp (#333) git-svn-id: http://svn.osgeo.org/geos/trunk@2932 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-28 Sandro Santilli - * src/geom/LineString.cpp: Minor tweak git-svn-id: - http://svn.osgeo.org/geos/trunk@2931 + * src/geom/LineString.cpp: Minor tweak git-svn-id: http://svn.osgeo.org/geos/trunk@2931 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-28 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in: Provide non-rehentrant - version of empty geometries constructors git-svn-id: - http://svn.osgeo.org/geos/trunk@2930 + version of empty geometries constructors git-svn-id: http://svn.osgeo.org/geos/trunk@2930 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-28 Sandro Santilli - * NEWS: extractUniquePoints comes in non-reentrant version too - git-svn-id: http://svn.osgeo.org/geos/trunk@2929 + * NEWS: extractUniquePoints comes in non-reentrant version too git-svn-id: http://svn.osgeo.org/geos/trunk@2929 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-25 Sandro Santilli - * NEWS: Update with GEOSPolygonize_full item git-svn-id: - http://svn.osgeo.org/geos/trunk@2928 + * NEWS: Update with GEOSPolygonize_full item git-svn-id: http://svn.osgeo.org/geos/trunk@2928 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-23 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: - GEOSPolygonize_full [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@2927 + GEOSPolygonize_full [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@2927 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli * include/geos/operation/polygonize/Polygonizer.h, src/operation/polygonize/Polygonizer.cpp: LineStringAdder - heap-allocation removal git-svn-id: - http://svn.osgeo.org/geos/trunk@2926 + heap-allocation removal git-svn-id: http://svn.osgeo.org/geos/trunk@2926 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli * NEWS, include/geos/operation/polygonize/Polygonizer.h, src/operation/polygonize/Polygonizer.cpp: Drop heap allocation of - invalidRingLines vector git-svn-id: - http://svn.osgeo.org/geos/trunk@2925 + invalidRingLines vector git-svn-id: http://svn.osgeo.org/geos/trunk@2925 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli * include/geos/operation/polygonize/Polygonizer.h, src/operation/polygonize/Polygonizer.cpp: More heap allocations bite - the dust... git-svn-id: http://svn.osgeo.org/geos/trunk@2924 + the dust... git-svn-id: http://svn.osgeo.org/geos/trunk@2924 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli * NEWS, include/geos/operation/polygonize/Polygonizer.h, src/operation/polygonize/Polygonizer.cpp: Drop HEAP allocation for - dangles vector too, and document all these API changes git-svn-id: - http://svn.osgeo.org/geos/trunk@2923 + dangles vector too, and document all these API changes git-svn-id: http://svn.osgeo.org/geos/trunk@2923 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli @@ -13874,37 +18015,32 @@ include/geos/operation/polygonize/PolygonizeEdge.h, include/geos/operation/polygonize/Polygonizer.h, src/operation/polygonize/Polygonizer.cpp: Avoid heap allocation of a - vector for cut edges, bits of additional documentation git-svn-id: - http://svn.osgeo.org/geos/trunk@2922 + vector for cut edges, bits of additional documentation git-svn-id: http://svn.osgeo.org/geos/trunk@2922 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-22 Sandro Santilli * include/geos/operation/polygonize/Polygonizer.h: Try to document - current behaviour (very bad behaviour indeed...) git-svn-id: - http://svn.osgeo.org/geos/trunk@2921 + current behaviour (very bad behaviour indeed...) git-svn-id: http://svn.osgeo.org/geos/trunk@2921 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-21 Mateusz Loskot * CMakeLists.txt: Another patch from Gavin Heavyside to enable GEOS - as a dependency of a project with CMake git-svn-id: - http://svn.osgeo.org/geos/trunk@2920 + as a dependency of a project with CMake git-svn-id: http://svn.osgeo.org/geos/trunk@2920 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-21 Sandro Santilli * NEWS, capi/geos_c.h.in, capi/geos_ts_c.cpp: Allow GEOSGetGeometryN - calls against single geometries git-svn-id: - http://svn.osgeo.org/geos/trunk@2919 + calls against single geometries git-svn-id: http://svn.osgeo.org/geos/trunk@2919 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-21 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in: Expose the non-reentrant version too (I know, I was against, but it's too much work on the - postgis side for that right now) git-svn-id: - http://svn.osgeo.org/geos/trunk@2918 + postgis side for that right now) git-svn-id: http://svn.osgeo.org/geos/trunk@2918 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-21 Sandro Santilli @@ -13912,55 +18048,49 @@ * NEWS, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSGeom_extractUniquePointsTest.cpp: - GEOSGeom_extractUniquePoints [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@2917 + GEOSGeom_extractUniquePoints [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@2917 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-21 Mateusz Loskot * CMakeLists.txt: Patch from Gavin Heavyside that enables CMake to - build GEOS as a dependency of user-defined project git-svn-id: - http://svn.osgeo.org/geos/trunk@2916 + build GEOS as a dependency of user-defined project git-svn-id: http://svn.osgeo.org/geos/trunk@2916 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-17 Sandro Santilli * src/geom/CoordinateArraySequence.cpp: Throw an IllegalArgumentException when setOrdinate is called with unknown - ordinate index git-svn-id: http://svn.osgeo.org/geos/trunk@2915 + ordinate index git-svn-id: http://svn.osgeo.org/geos/trunk@2915 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-14 Sandro Santilli - * NEWS: Add GEOSPolygonizer_getCutEdges NEWS item where it belongs - git-svn-id: http://svn.osgeo.org/geos/trunk@2913 + * NEWS: Add GEOSPolygonizer_getCutEdges NEWS item where it belongs git-svn-id: http://svn.osgeo.org/geos/trunk@2913 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-12 Mateusz Loskot * capi/CMakeLists.txt: Fixed but in CMake configuration which - installed geos_c.h in incorrect location (#330) git-svn-id: - http://svn.osgeo.org/geos/trunk@2912 + installed geos_c.h in incorrect location (#330) git-svn-id: http://svn.osgeo.org/geos/trunk@2912 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-11 Sandro Santilli - * NEWS: Update git-svn-id: http://svn.osgeo.org/geos/trunk@2911 + * NEWS: Update git-svn-id: http://svn.osgeo.org/geos/trunk@2911 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-11 Sandro Santilli * capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/GEOSGeom_create.cpp: Complete set of typed-empty - constructors and tests for them [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@2910 + constructors and tests for them [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@2910 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-11 Sandro Santilli * capi/geos_c.h.in, capi/geos_ts_c.cpp: Go for consistency with - reentrant interfaces [RT-SIGTA] git-svn-id: - http://svn.osgeo.org/geos/trunk@2909 + reentrant interfaces [RT-SIGTA] git-svn-id: http://svn.osgeo.org/geos/trunk@2909 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-11 Sandro Santilli @@ -13968,101 +18098,84 @@ * NEWS, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/Makefile.am, tests/unit/capi/GEOSGeom_create.cpp: GEOSContext_setNoticeHandler, GEOSContext_setErrorHandler, - GEOSGeom_createEmptyPolygon_r (and test) git-svn-id: - http://svn.osgeo.org/geos/trunk@2908 + GEOSGeom_createEmptyPolygon_r (and test) git-svn-id: http://svn.osgeo.org/geos/trunk@2908 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-09 Sandro Santilli - * doc/Doxyfile.in: Fix to match new layout git-svn-id: - http://svn.osgeo.org/geos/trunk@2907 + * doc/Doxyfile.in: Fix to match new layout git-svn-id: http://svn.osgeo.org/geos/trunk@2907 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-06 Mateusz Loskot * tests/xmltester/CMakeLists.txt: Ported list of SAVE_XMLTESTS to CMake configuration of XMLTester (#317) All tests pass on Ubuntu - 9.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2906 + 9.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2906 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-05 Mateusz Loskot * CMakeLists.txt: Fixed CMake version comparison to disable - platform.h (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2905 + platform.h (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2905 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-05 Sandro Santilli - * capi/geos_c.h.in: Document ownership of created types - git-svn-id: http://svn.osgeo.org/geos/trunk@2904 + * capi/geos_c.h.in: Document ownership of created types git-svn-id: http://svn.osgeo.org/geos/trunk@2904 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-05 Sandro Santilli * NEWS, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: New CAPI interface: GEOSisValidDetail ( tell state, reason & location - apart ) git-svn-id: http://svn.osgeo.org/geos/trunk@2903 + apart ) git-svn-id: http://svn.osgeo.org/geos/trunk@2903 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-04 Mateusz Loskot * CMakeLists.txt, tools/CMakeLists.txt: Fixed missing substitution - of @libdir@ in geos-config generated by CMake #(317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2902 + of @libdir@ in geos-config generated by CMake #(317) git-svn-id: http://svn.osgeo.org/geos/trunk@2902 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-02-02 Mateusz Loskot * CMakeLists.txt: Fixed problem with use of new command with file() - macro for older CMake versions (#327) git-svn-id: - http://svn.osgeo.org/geos/trunk@2901 + macro for older CMake versions (#327) git-svn-id: http://svn.osgeo.org/geos/trunk@2901 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-31 Mateusz Loskot * tests/unit/CMakeLists.txt, tests/xmltester/CMakeLists.txt: Added - XMLTester to CTest configuration - work in progress (#317) - git-svn-id: http://svn.osgeo.org/geos/trunk@2900 + XMLTester to CTest configuration - work in progress (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2900 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-31 Mateusz Loskot * CMakeLists.txt: Added GEOS_ENABLE_FLOATSTORE option to CMake to - control GCC flag -ffloat-store (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2899 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-31 Mateusz Loskot - - * : Added platform.h.disabled to svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@2898 + control GCC flag -ffloat-store (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2899 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-31 Mateusz Loskot - * CMakeLists.txt: A minor fix to order of enable_testing() and - add_subdirectories(tests) - it is important to include the former - macro first so the tests are caught in git-svn-id: - http://svn.osgeo.org/geos/trunk@2897 + * : Added platform.h.disabled to svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@2898 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-30 Mateusz Loskot * CMakeLists.txt: Updated configuration of GEOS_ENABLE_TESTS option - for CMake (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2896 + for CMake (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2896 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-30 Mateusz Loskot * CMakeLists.txt: Configured 'make check' target for CMake as alias - to 'make test' to mimic GNU Autotools manner of running tests (#317) - git-svn-id: http://svn.osgeo.org/geos/trunk@2895 + to 'make test' to mimic GNU Autotools manner of running tests (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2895 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-29 Paul Ramsey * include/geos/platform.h.in: Extend support of Apple ISNAN case to - newer? compilers git-svn-id: http://svn.osgeo.org/geos/trunk@2894 + newer? compilers git-svn-id: http://svn.osgeo.org/geos/trunk@2894 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-29 Mateusz Loskot @@ -14073,29 +18186,25 @@ directory and deactivate it renaming to platform.h.disable, before generating CMake-specific platform.h. Tested on Windows with Visual C++ but with -DGEOS_ENABLE_INLINE=OFF otherwise DLL linking fails - with many redefined symbols - to be checked. git-svn-id: - http://svn.osgeo.org/geos/trunk@2893 + with many redefined symbols - to be checked. git-svn-id: http://svn.osgeo.org/geos/trunk@2893 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-29 Mateusz Loskot * CMakeLists.txt, tests/unit/CMakeLists.txt: Configured 'make test' - target for CMake build (#317). Now only geos_unit is executed - git-svn-id: http://svn.osgeo.org/geos/trunk@2892 + target for CMake build (#317). Now only geos_unit is executed git-svn-id: http://svn.osgeo.org/geos/trunk@2892 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-28 Mateusz Loskot * src/planargraph/algorithm/ConnectedSubgraphFinder.cpp: Missing - includes of platform.h and git-svn-id: - http://svn.osgeo.org/geos/trunk@2891 + includes of platform.h and git-svn-id: http://svn.osgeo.org/geos/trunk@2891 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-27 Mateusz Loskot * tests/unit/linearref/LengthIndexedLineTest.cpp: Tidy up messy code - in tests/unit/linearref git-svn-id: - http://svn.osgeo.org/geos/trunk@2890 + in tests/unit/linearref git-svn-id: http://svn.osgeo.org/geos/trunk@2890 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-27 Mateusz Loskot @@ -14104,15 +18213,13 @@ Fixed CMake configuration for the problem about unavailable C99 features if -std=c99 is not specified for GCC 4.3.3 on Ubuntu 9.04. This is inconsistent behaviour with GCC 4.4.1 - (https://bugs.launchpad.net/ubuntu/+source/gcc-4.3/+bug/512741). - git-svn-id: http://svn.osgeo.org/geos/trunk@2889 + (https://bugs.launchpad.net/ubuntu/+source/gcc-4.3/+bug/512741). git-svn-id: http://svn.osgeo.org/geos/trunk@2889 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-23 Mateusz Loskot * src/CMakeLists.txt: GEOS C++ static library was missing from - installation targets (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2888 + installation targets (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2888 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-23 Mateusz Loskot @@ -14125,36 +18232,31 @@ 2010-01-23 Mateusz Loskot - * CMakeLists.txt: Small fix to latest commit (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2886 + * CMakeLists.txt: Small fix to latest commit (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2886 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-23 Mateusz Loskot * CMakeLists.txt: Disabled GEOS_ENABLE_ASSERT option for Visual - Studio builds - not supported, no sense (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2885 + Studio builds - not supported, no sense (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2885 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-23 Mateusz Loskot * CMakeLists.txt: Tweaked detection isfinite and isnan declared as - functions in C++ (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2884 + functions in C++ (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2884 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-22 Mateusz Loskot * cmake/modules/CheckPrototypeExists.cmake: Added - CheckPrototypeExists.cmake module - imported from KDE/kdelibs tree - git-svn-id: http://svn.osgeo.org/geos/trunk@2883 + CheckPrototypeExists.cmake module - imported from KDE/kdelibs tree git-svn-id: http://svn.osgeo.org/geos/trunk@2883 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-22 Mateusz Loskot * cmake/modules/COPYING-CMAKE-SCRIPTS: Added trunk/cmake directory - for custom CMake modules git-svn-id: - http://svn.osgeo.org/geos/trunk@2882 + for custom CMake modules git-svn-id: http://svn.osgeo.org/geos/trunk@2882 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-21 Mateusz Loskot @@ -14162,60 +18264,45 @@ * CMakeLists.txt: CMake configuration update (#317): * Set default CMAKE_BUILD_TYPE to Debug * Added GEOS_ENABLE_ASSERT and GEOS_ENABLE_INLINE options. * Renamed option ENABLE_MSVC_MP to - GEOS_MSVC_ENABLE_MP. git-svn-id: - http://svn.osgeo.org/geos/trunk@2881 + GEOS_MSVC_ENABLE_MP. git-svn-id: http://svn.osgeo.org/geos/trunk@2881 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-20 Mateusz Loskot * CMakeLists.txt: Fix for addd extra test for STL classes in std - namespace to CMake configuration (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2880 + namespace to CMake configuration (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2880 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-20 Mateusz Loskot * CMakeLists.txt: Addd extra test for STL classes in std namespace - to CMake configuration (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2879 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-20 Mateusz Loskot - - * : Updated svn:keyword with Id for CMake files git-svn-id: - http://svn.osgeo.org/geos/trunk@2878 + to CMake configuration (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2879 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-20 Mateusz Loskot - * tools/CMakeLists.txt: Fixed bug with not setting proper - permissions to geos-config while installing with CMake build - configuration (#318). git-svn-id: - http://svn.osgeo.org/geos/trunk@2877 + * : Updated svn:keyword with Id for CMake files git-svn-id: http://svn.osgeo.org/geos/trunk@2878 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-19 Mateusz Loskot * CMakeLists.txt: #317: compiler flags can not be handled using CMake list type, reverted last change that sneaked in with Visual - Studio related commit. git-svn-id: - http://svn.osgeo.org/geos/trunk@2876 + Studio related commit. git-svn-id: http://svn.osgeo.org/geos/trunk@2876 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-19 Mateusz Loskot * CMakeLists.txt: #317: Added CXX flags specific to Visual C++ compiler. Added ENABLE_MSVC_MP option to allow setting Visual C++ - /MP flag that enables multi-process compilation. git-svn-id: - http://svn.osgeo.org/geos/trunk@2875 + /MP flag that enables multi-process compilation. git-svn-id: http://svn.osgeo.org/geos/trunk@2875 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-18 Mateusz Loskot * capi/geos_ts_c.cpp: Load elements of std namespace to scope of geos_ts_c.cpp file, so C99 functions are loaded even if hidden in - std (non-standard extension in GCC). git-svn-id: - http://svn.osgeo.org/geos/trunk@2874 + std (non-standard extension in GCC). git-svn-id: http://svn.osgeo.org/geos/trunk@2874 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-18 Mateusz Loskot @@ -14231,40 +18318,17 @@ tests/unit/geom/TriangleTest.cpp, tests/unit/linearref/LengthIndexedLineTest.cpp, tests/unit/operation/valid/IsValidTest.cpp: Added missing headers - platform.h and where ISNAN or FINITE macros are expanded - git-svn-id: http://svn.osgeo.org/geos/trunk@2873 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-18 Mateusz Loskot - - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@2872 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-18 Mateusz Loskot - - * include/geos/platform.h.cmake: Cleaned redundant include for cmath - and math.h from platform.h.cmake (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2871 + platform.h and where ISNAN or FINITE macros are expanded git-svn-id: http://svn.osgeo.org/geos/trunk@2873 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-18 Mateusz Loskot - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@2870 + * : Updated svn:ignore patterns git-svn-id: http://svn.osgeo.org/geos/trunk@2872 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-18 Mateusz Loskot - * capi/CMakeLists.txt: Updated Windows elements of build - configuration for CMake system (#317): * Added missing symbol - GEOS_DLL_EXPORT to request generation of import library for GEOS C - API DLL * All targets configured for CMake build system have been - successfully built and tested using CMake. * CMake-based install - target successfully tested on Windows 7 ** Default prefix for 32-bit - build is "c:\Program Files (x86)\geos\" where bin, lib and include - directories are created. git-svn-id: - http://svn.osgeo.org/geos/trunk@2869 + * : Updated svn:ignore patterns git-svn-id: http://svn.osgeo.org/geos/trunk@2870 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-18 Mateusz Loskot @@ -14275,11 +18339,9 @@ src/operation/buffer/BufferOp.cpp, src/operation/overlay/snap/GeometrySnapper.cpp, src/operation/overlay/validate/OverlayResultValidator.cpp: * Successfully tested CMake configuration with Visual Studio 2010 - (#317). * Disable argument dependant lookup (Koenig) for min/max - functions to make sure GEOS compiles in the presence of the min/max - macros. * Some platform headers define min() and max() macros which - cause some common C++ constructs to fail to compile. git-svn-id: - http://svn.osgeo.org/geos/trunk@2868 + (#317). * Disable argument dependant lookup (Koenig) for min/max functions + to make sure GEOS compiles in the presence of the min/max macros. * Some platform headers define min() and max() macros which cause + some common C++ constructs to fail to compile. git-svn-id: http://svn.osgeo.org/geos/trunk@2868 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot @@ -14287,8 +18349,7 @@ * CMakeLists.txt, tools/CMakeLists.txt: Configured 'make install' for tools to install geos-config program on Unix platforms (#317). Fixed missing prefix nad exec_prefix variables substitution during - geos-config generation. git-svn-id: - http://svn.osgeo.org/geos/trunk@2867 + geos-config generation. git-svn-id: http://svn.osgeo.org/geos/trunk@2867 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot @@ -14297,15 +18358,14 @@ Configured 'make install' target for GEOS C shared library and headers (#317). Install platform.h and version.h from build directory where they are installed, not from source tree. Added GEOS - C API header location to include directories. git-svn-id: - http://svn.osgeo.org/geos/trunk@2866 + C API header location to include directories. git-svn-id: http://svn.osgeo.org/geos/trunk@2866 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot * CMakeLists.txt, include/CMakeLists.txt, src/CMakeLists.txt: Configured 'make install' target for GEOS C++ static library archive - and headers (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2865 + and headers (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2865 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot @@ -14313,15 +18373,13 @@ * build/bjam/Jamroot, build/bjam/README, build/bjam/geos/Jamfile, build/bjam/geos_c/Jamfile, build/bjam/geos_unit/Jamfile: Removed build/bjam directory with old and no longer maintained build - configuration based on Boost.Build git-svn-id: - http://svn.osgeo.org/geos/trunk@2864 + configuration based on Boost.Build git-svn-id: http://svn.osgeo.org/geos/trunk@2864 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot * tests/CMakeLists.txt, tests/xmltester/CMakeLists.txt: Added - simplewkttester and xmltester tests to CMake configuration (#317) - git-svn-id: http://svn.osgeo.org/geos/trunk@2863 + simplewkttester and xmltester tests to CMake configuration (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2863 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot @@ -14333,8 +18391,7 @@ CMake generates config headers in build tree. Added generation of geos-config script. Refined include directories settings. Added unit tests package to the configuration. Status: GEOS core + GEOS C - library + unit tests build and run successfully. git-svn-id: - http://svn.osgeo.org/geos/trunk@2862 + library + unit tests build and run successfully. git-svn-id: http://svn.osgeo.org/geos/trunk@2862 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-17 Mateusz Loskot @@ -14348,50 +18405,43 @@ 2010-01-17 Mateusz Loskot * CMakeLists.txt, include/geos/platform.h.cmake: Refined detection - of isnan and isfinite features (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2860 + of isnan and isfinite features (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2860 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * CMakeLists.txt, include/geos/platform.h.cmake: Added checks of - C/C++ headers and library features like 64-bit integer type (#317) - git-svn-id: http://svn.osgeo.org/geos/trunk@2859 + C/C++ headers and library features like 64-bit integer type (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2859 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * CMakeLists.txt: Added generation of build-specific platform.h file - from platform.h.cmake (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2858 + from platform.h.cmake (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2858 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * CMakeLists.txt, include/geos/version.h.cmake: Set version numbers - and generate version.h for CMake build (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2857 + and generate version.h for CMake build (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2857 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * include/geos/platform.h.cmake: Added platform.h.cmake file used by - build configuration for CMake build system (#317) git-svn-id: - http://svn.osgeo.org/geos/trunk@2856 + build configuration for CMake build system (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2856 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * include/geos/platform.h.vc: Removed definition of - INT64_CONST_IS_I64 - it is not checked or used anywhere git-svn-id: - http://svn.osgeo.org/geos/trunk@2855 + INT64_CONST_IS_I64 - it is not checked or used anywhere git-svn-id: http://svn.osgeo.org/geos/trunk@2855 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * include/geos/platform.h.in, include/geos/util/math.h: Unified - detection of math features to define FINITE and ISNAN macros - git-svn-id: http://svn.osgeo.org/geos/trunk@2854 + detection of math features to define FINITE and ISNAN macros git-svn-id: http://svn.osgeo.org/geos/trunk@2854 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot @@ -14401,32 +18451,18 @@ include/geos/platform.h.vc, include/geos/util/Machine.h: Moved getMachineByteOrder from include/geos/platform.h to include/geos/util/Machine.h. This function is universal for - non-Windows and Windows platforms git-svn-id: - http://svn.osgeo.org/geos/trunk@2853 + non-Windows and Windows platforms git-svn-id: http://svn.osgeo.org/geos/trunk@2853 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot * CMakeLists.txt, capi/CMakeLists.txt, src/CMakeLists.txt: Added - first straps of configuration for CMake build system (#317) - git-svn-id: http://svn.osgeo.org/geos/trunk@2852 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-16 Mateusz Loskot - - * : Removed tests/geostest/.deps directory git-svn-id: - http://svn.osgeo.org/geos/trunk@2851 + first straps of configuration for CMake build system (#317) git-svn-id: http://svn.osgeo.org/geos/trunk@2852 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-16 Mateusz Loskot - * {src/examples => examples}/CPCLException.cpp, {src/examples => - examples}/CoordinateSequencesExample.cpp, {src/examples => - examples}/CustomCoordinateSequenceExample.cpp, {src/examples => - examples}/CustomCoordinateSequenceExample.h, {src/examples => - examples}/CustomPointCoordinateSequence.cpp, {src/examples => - examples}/Makefile.am: Moved src/examples out of src directory - (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2850 + * : Removed tests/geostest/.deps directory git-svn-id: http://svn.osgeo.org/geos/trunk@2851 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-14 Mateusz Loskot @@ -14438,17 +18474,16 @@ build/msvc10/geos_unit/geos_unit.vcxproj, build/msvc10/geos_xmltester/geos_xmltester.vcxproj: Updated Visual Studio 2010 projects in build/msvc10 with new location of include - and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2849 + and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2849 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot * include/geos/noding/NodedSegmentString.h: * Successfully compiled with Visual C++ 8.0 after restructuring - source tree. ** NodedSegmentString class; ** Use explicit + source tree. ** NodedSegmentString class; ** Use explicit self-describing two-step casts to indicate what's really happening - - C-cast is evil and hides serious interface issues. ** Added missing - and qualify size_t with std namespace. git-svn-id: - http://svn.osgeo.org/geos/trunk@2848 + C-cast is evil and hides serious interface issues. ** Added missing + and qualify size_t with std namespace. git-svn-id: http://svn.osgeo.org/geos/trunk@2848 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot @@ -14460,7 +18495,7 @@ build/msvc80/geos_unit/geos_unit.vcproj, build/msvc80/geos_xmltester/geos_xmltester.vcproj: Updated Visual Studio 2005 projects in build/msvc80 with new location of include - and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2847 + and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2847 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot @@ -14472,1012 +18507,1458 @@ build/msvc90/geos_unit/geos_unit.vcproj, build/msvc90/geos_xmltester/geos_xmltester.vcproj: Updated Visual Studio 2008 projects in build/msvc90 with new location of include - and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2846 + and src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2846 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot * makefile.vc, nmake.opt, src/Makefile.vc: Updated makefile.vc, nmake.opt, src/makefile.vc files with new location of include and - src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2845 + src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2845 + 5242fede-7e19-0410-aef8-94bd7d2200fb + +2010-01-13 Mateusz Loskot + + * Makefile.am, capi/Makefile.am, doc/Makefile.am, + include/geos/index/sweepline/Makefile.am, + include/geos/operation/Makefile.am, macros/Makefile.am, + src/operation/Makefile.am, swig/Makefile.am, + swig/python/Makefile.am, swig/python/tests/Makefile.am, + swig/ruby/Makefile.am, swig/ruby/test/Makefile.am, + tests/Makefile.am, tests/bigtest/Makefile.am, + tests/geostest/Makefile.am, tests/perf/Makefile.am, + tests/perf/operation/Makefile.am, + tests/perf/operation/buffer/Makefile.am, tests/thread/Makefile.am, + tests/unit/Makefile.am, tests/xmltester/Makefile.am, + tools/Makefile.am: Updated remaining directories doc, macros, tools, + tests, swig, capi with new src and include location (#315). Fixed + previous updates. Successfull build on Linux. git-svn-id: http://svn.osgeo.org/geos/trunk@2844 + 5242fede-7e19-0410-aef8-94bd7d2200fb + +2010-01-13 Mateusz Loskot + + * capi/Makefile.am: Updated Makefile.am files in capi subtree after + moved to new location (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2843 + 5242fede-7e19-0410-aef8-94bd7d2200fb + +2010-01-13 Mateusz Loskot + + * src/Makefile.am, src/algorithm/Makefile.am, + src/algorithm/distance/Makefile.am, + src/algorithm/locate/Makefile.am, src/examples/Makefile.am, + src/geom/Makefile.am, src/geom/prep/Makefile.am, + src/geom/util/Makefile.am, src/geomgraph/Makefile.am, + src/geomgraph/index/Makefile.am, src/index/Makefile.am, + src/index/bintree/Makefile.am, src/index/chain/Makefile.am, + src/index/intervalrtree/Makefile.am, + src/index/quadtree/Makefile.am, src/index/strtree/Makefile.am, + src/index/sweepline/Makefile.am, src/io/Makefile.am, + src/linearref/Makefile.am, src/noding/Makefile.am, + src/noding/snapround/Makefile.am, src/operation/Makefile.am, + src/operation/buffer/Makefile.am, + src/operation/distance/Makefile.am, + src/operation/linemerge/Makefile.am, + src/operation/overlay/Makefile.am, + src/operation/polygonize/Makefile.am, + src/operation/predicate/Makefile.am, + src/operation/relate/Makefile.am, src/operation/union/Makefile.am, + src/operation/valid/Makefile.am, src/planargraph/Makefile.am, + src/precision/Makefile.am, src/simplify/Makefile.am, + src/util/Makefile.am: Updated Makefile.am files in src subtree after + moved to new location (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2842 + 5242fede-7e19-0410-aef8-94bd7d2200fb + +2010-01-13 Mateusz Loskot + + * Makefile.am, configure.in: Updated new source structure in + configure.in and root Makefile.am - part 2 (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2841 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot - * Makefile.am, capi/Makefile.am, doc/Makefile.am, - include/geos/index/sweepline/Makefile.am, - include/geos/operation/Makefile.am, macros/Makefile.am, - src/operation/Makefile.am, swig/Makefile.am, - swig/python/Makefile.am, swig/python/tests/Makefile.am, - swig/ruby/Makefile.am, swig/ruby/test/Makefile.am, - tests/Makefile.am, tests/bigtest/Makefile.am, - tests/geostest/Makefile.am, tests/perf/Makefile.am, - tests/perf/operation/Makefile.am, - tests/perf/operation/buffer/Makefile.am, tests/thread/Makefile.am, - tests/unit/Makefile.am, tests/xmltester/Makefile.am, - tools/Makefile.am: Updated remaining directories doc, macros, tools, - tests, swig, capi with new src and include location (#315). Fixed - previous updates. Successfull build on Linux. git-svn-id: - http://svn.osgeo.org/geos/trunk@2844 + * Makefile.am, configure.in: Updated new source structure in + configure.in and root Makefile.am (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2840 5242fede-7e19-0410-aef8-94bd7d2200fb 2010-01-13 Mateusz Loskot - * capi/Makefile.am: Updated Makefile.am files in capi subtree after - moved to new location (#315) git-svn-id: - http://svn.osgeo.org/geos/trunk@2843 + * include/Makefile.am, include/geos/Makefile.am, + include/geos/algorithm/Makefile.am, + include/geos/algorithm/distance/Makefile.am, + include/geos/algorithm/locate/Makefile.am, + include/geos/geom/Makefile.am, include/geos/geom/prep/Makefile.am, + include/geos/geom/util/Makefile.am, + include/geos/geomgraph/Makefile.am, + include/geos/geomgraph/index/Makefile.am, + include/geos/index/Makefile.am, + include/geos/index/bintree/Makefile.am, + include/geos/index/chain/Makefile.am, + include/geos/index/intervalrtree/Makefile.am, + include/geos/index/quadtree/Makefile.am, + include/geos/index/strtree/Makefile.am, + include/geos/index/sweepline/Makefile.am, + include/geos/io/Makefile.am, include/geos/linearref/Makefile.am, + include/geos/noding/Makefile.am, + include/geos/noding/snapround/Makefile.am, + include/geos/operation/Makefile.am, + include/geos/operation/buffer/Makefile.am, + include/geos/operation/distance/Makefile.am, + include/geos/operation/linemerge/Makefile.am, + include/geos/operation/overlay/Makefile.am, + include/geos/operation/overlay/snap/Makefile.am, + include/geos/operation/polygonize/Makefile.am, + include/geos/operation/predicate/Makefile.am, + include/geos/operation/relate/Makefile.am, + include/geos/operation/union/Makefile.am, + include/geos/operation/valid/Makefile.am, + include/geos/planargraph/Makefile.am, + include/geos/planargraph/algorithm/Makefile.am, + include/geos/precision/Makefile.am, + include/geos/simplify/Makefile.am, include/geos/util/Makefile.am: + Updated Makefile.am files in headers subtree after moved to new + location in include (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2839 5242fede-7e19-0410-aef8-94bd7d2200fb -2010-01-13 Mateusz Loskot +2010-01-12 Mateusz Loskot - * src/Makefile.am, src/algorithm/Makefile.am, + * source/Makefile.am, source/Makefile.vc, + source/algorithm/Angle.cpp, source/algorithm/BoundaryNodeRule.cpp, + source/algorithm/CGAlgorithms.cpp, + source/algorithm/CentroidArea.cpp, + source/algorithm/CentroidLine.cpp, + source/algorithm/CentroidPoint.cpp, + source/algorithm/ConvexHull.cpp, source/algorithm/HCoordinate.cpp, + source/algorithm/InteriorPointArea.cpp, + source/algorithm/InteriorPointLine.cpp, + source/algorithm/InteriorPointPoint.cpp, + source/algorithm/LineIntersector.cpp, + source/algorithm/MCPointInRing.cpp, source/algorithm/Makefile.am, + source/algorithm/MinimumDiameter.cpp, + source/algorithm/NotRepresentableException.cpp, + source/algorithm/PointLocator.cpp, + source/algorithm/RayCrossingCounter.cpp, + source/algorithm/RobustDeterminant.cpp, + source/algorithm/SIRtreePointInRing.cpp, + source/algorithm/SimplePointInRing.cpp, + source/algorithm/distance/DiscreteHausdorffDistance.cpp, + source/algorithm/distance/DistanceToPoint.cpp, + source/algorithm/distance/Makefile.am, + source/algorithm/locate/IndexedPointInAreaLocator.cpp, + source/algorithm/locate/Makefile.am, + source/algorithm/locate/PointOnGeometryLocator.cpp, + source/algorithm/locate/SimplePointInAreaLocator.cpp, + source/dirlist.mk, source/examples/CPCLException.cpp, + source/examples/CoordinateSequencesExample.cpp, + source/examples/CustomCoordinateSequenceExample.cpp, + source/examples/CustomCoordinateSequenceExample.h, + source/examples/CustomPointCoordinateSequence.cpp, + source/examples/Makefile.am, source/geom/Coordinate.cpp, + source/geom/CoordinateArraySequence.cpp, + source/geom/CoordinateArraySequenceFactory.cpp, + source/geom/CoordinateSequence.cpp, + source/geom/CoordinateSequenceFactory.cpp, + source/geom/Dimension.cpp, source/geom/Envelope.cpp, + source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, + source/geom/GeometryComponentFilter.cpp, + source/geom/GeometryFactory.cpp, source/geom/GeometryList.cpp, + source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, + source/geom/LineString.cpp, source/geom/LinearRing.cpp, + source/geom/Location.cpp, source/geom/Makefile.am, + source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, + source/geom/MultiPolygon.cpp, source/geom/Point.cpp, + source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, + source/geom/Triangle.cpp, + source/geom/prep/AbstractPreparedPolygonContains.cpp, + source/geom/prep/BasicPreparedGeometry.cpp, + source/geom/prep/Makefile.am, + source/geom/prep/PreparedGeometry.cpp, + source/geom/prep/PreparedGeometryFactory.cpp, + source/geom/prep/PreparedLineString.cpp, + source/geom/prep/PreparedLineStringIntersects.cpp, + source/geom/prep/PreparedPoint.cpp, + source/geom/prep/PreparedPolygon.cpp, + source/geom/prep/PreparedPolygonContains.cpp, + source/geom/prep/PreparedPolygonContainsProperly.cpp, + source/geom/prep/PreparedPolygonCovers.cpp, + source/geom/prep/PreparedPolygonIntersects.cpp, + source/geom/prep/PreparedPolygonPredicate.cpp, + source/geom/util/ComponentCoordinateExtracter.cpp, + source/geom/util/CoordinateOperation.cpp, + source/geom/util/GeometryCombiner.cpp, + source/geom/util/GeometryEditor.cpp, + source/geom/util/GeometryTransformer.cpp, + source/geom/util/Makefile.am, + source/geom/util/ShortCircuitedGeometryVisitor.cpp, + source/geomgraph/Depth.cpp, source/geomgraph/DirectedEdge.cpp, + source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, + source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, + source/geomgraph/EdgeIntersection.cpp, + source/geomgraph/EdgeIntersectionList.cpp, + source/geomgraph/EdgeList.cpp, + source/geomgraph/EdgeNodingValidator.cpp, + source/geomgraph/EdgeRing.cpp, source/geomgraph/GeometryGraph.cpp, + source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, + source/geomgraph/Makefile.am, source/geomgraph/Node.cpp, + source/geomgraph/NodeFactory.cpp, source/geomgraph/NodeMap.cpp, + source/geomgraph/PlanarGraph.cpp, source/geomgraph/Position.cpp, + source/geomgraph/Quadrant.cpp, + source/geomgraph/TopologyLocation.cpp, + source/geomgraph/index/Makefile.am, + source/geomgraph/index/MonotoneChainEdge.cpp, + source/geomgraph/index/MonotoneChainIndexer.cpp, + source/geomgraph/index/SegmentIntersector.cpp, + source/geomgraph/index/SimpleEdgeSetIntersector.cpp, + source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + source/geomgraph/index/SimpleSweepLineIntersector.cpp, + source/geomgraph/index/SweepLineEvent.cpp, + source/geomgraph/index/SweepLineSegment.cpp, + source/index/Makefile.am, source/index/bintree/Bintree.cpp, + source/index/bintree/Interval.cpp, source/index/bintree/Key.cpp, + source/index/bintree/Makefile.am, source/index/bintree/Node.cpp, + source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, + source/index/chain/Makefile.am, + source/index/chain/MonotoneChain.cpp, + source/index/chain/MonotoneChainBuilder.cpp, + source/index/chain/MonotoneChainOverlapAction.cpp, + source/index/chain/MonotoneChainSelectAction.cpp, + source/index/intervalrtree/IntervalRTreeBranchNode.cpp, + source/index/intervalrtree/IntervalRTreeLeafNode.cpp, + source/index/intervalrtree/IntervalRTreeNode.cpp, + source/index/intervalrtree/Makefile.am, + source/index/intervalrtree/SortedPackedIntervalRTree.cpp, + source/index/quadtree/DoubleBits.cpp, + source/index/quadtree/IntervalSize.cpp, + source/index/quadtree/Key.cpp, source/index/quadtree/Makefile.am, + source/index/quadtree/Node.cpp, source/index/quadtree/NodeBase.cpp, + source/index/quadtree/Quadtree.cpp, source/index/quadtree/Root.cpp, + source/index/strtree/AbstractNode.cpp, + source/index/strtree/AbstractSTRtree.cpp, + source/index/strtree/Interval.cpp, + source/index/strtree/ItemBoundable.cpp, + source/index/strtree/Makefile.am, source/index/strtree/SIRtree.cpp, + source/index/strtree/STRtree.cpp, + source/index/sweepline/Makefile.am, + source/index/sweepline/SweepLineEvent.cpp, + source/index/sweepline/SweepLineIndex.cpp, + source/index/sweepline/SweepLineInterval.cpp, source/inlines.cpp, + source/io/ByteOrderDataInStream.cpp, source/io/ByteOrderValues.cpp, + source/io/CLocalizer.cpp, source/io/Makefile.am, + source/io/ParseException.cpp, source/io/StringTokenizer.cpp, + source/io/Unload.cpp, source/io/WKBReader.cpp, + source/io/WKBWriter.cpp, source/io/WKTReader.cpp, + source/io/WKTWriter.cpp, source/io/Writer.cpp, + source/linearref/ExtractLineByLocation.cpp, + source/linearref/LengthIndexOfPoint.cpp, + source/linearref/LengthIndexedLine.cpp, + source/linearref/LengthLocationMap.cpp, + source/linearref/LinearGeometryBuilder.cpp, + source/linearref/LinearIterator.cpp, + source/linearref/LinearLocation.cpp, + source/linearref/LocationIndexOfLine.cpp, + source/linearref/LocationIndexOfPoint.cpp, + source/linearref/Makefile.am, source/noding/BasicSegmentString.cpp, + source/noding/FastNodingValidator.cpp, + source/noding/FastSegmentSetIntersectionFinder.cpp, + source/noding/IntersectionAdder.cpp, + source/noding/IntersectionFinderAdder.cpp, + source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, + source/noding/MCIndexSegmentSetMutualIntersector.cpp, + source/noding/Makefile.am, source/noding/NodedSegmentString.cpp, + source/noding/NodingValidator.cpp, source/noding/Octant.cpp, + source/noding/OrientedCoordinateArray.cpp, + source/noding/ScaledNoder.cpp, + source/noding/SegmentIntersectionDetector.cpp, + source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, + source/noding/SegmentString.cpp, + source/noding/SegmentStringUtil.cpp, source/noding/SimpleNoder.cpp, + source/noding/SingleInteriorIntersectionFinder.cpp, + source/noding/snapround/HotPixel.cpp, + source/noding/snapround/MCIndexPointSnapper.cpp, + source/noding/snapround/MCIndexSnapRounder.cpp, + source/noding/snapround/Makefile.am, + source/noding/snapround/SimpleSnapRounder.cpp, + source/operation/GeometryGraphOperation.cpp, + source/operation/IsSimpleOp.cpp, source/operation/Makefile.am, + source/operation/buffer/BufferBuilder.cpp, + source/operation/buffer/BufferInputLineSimplifier.cpp, + source/operation/buffer/BufferInputLineSimplifier.h, + source/operation/buffer/BufferOp.cpp, + source/operation/buffer/BufferParameters.cpp, + source/operation/buffer/BufferSubgraph.cpp, + source/operation/buffer/Makefile.am, + source/operation/buffer/OffsetCurveBuilder.cpp, + source/operation/buffer/OffsetCurveSetBuilder.cpp, + source/operation/buffer/OffsetCurveVertexList.h, + source/operation/buffer/RightmostEdgeFinder.cpp, + source/operation/buffer/SubgraphDepthLocater.cpp, + source/operation/distance/ConnectedElementLocationFilter.cpp, + source/operation/distance/ConnectedElementPointFilter.cpp, + source/operation/distance/DistanceOp.cpp, + source/operation/distance/GeometryLocation.cpp, + source/operation/distance/Makefile.am, + source/operation/linemerge/EdgeString.cpp, + source/operation/linemerge/LineMergeDirectedEdge.cpp, + source/operation/linemerge/LineMergeEdge.cpp, + source/operation/linemerge/LineMergeGraph.cpp, + source/operation/linemerge/LineMerger.cpp, + source/operation/linemerge/LineSequencer.cpp, + source/operation/linemerge/Makefile.am, + source/operation/overlay/EdgeSetNoder.cpp, + source/operation/overlay/ElevationMatrix.cpp, + source/operation/overlay/ElevationMatrixCell.cpp, + source/operation/overlay/LineBuilder.cpp, + source/operation/overlay/Makefile.am, + source/operation/overlay/MaximalEdgeRing.cpp, + source/operation/overlay/MinimalEdgeRing.cpp, + source/operation/overlay/OverlayNodeFactory.cpp, + source/operation/overlay/OverlayOp.cpp, + source/operation/overlay/PointBuilder.cpp, + source/operation/overlay/PolygonBuilder.cpp, + source/operation/overlay/snap/GeometrySnapper.cpp, + source/operation/overlay/snap/LineStringSnapper.cpp, + source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, + source/operation/overlay/snap/SnapOverlayOp.cpp, + source/operation/overlay/validate/FuzzyPointLocator.cpp, + source/operation/overlay/validate/OffsetPointGenerator.cpp, + source/operation/overlay/validate/OverlayResultValidator.cpp, + source/operation/polygonize/EdgeRing.cpp, + source/operation/polygonize/Makefile.am, + source/operation/polygonize/PolygonizeDirectedEdge.cpp, + source/operation/polygonize/PolygonizeEdge.cpp, + source/operation/polygonize/PolygonizeGraph.cpp, + source/operation/polygonize/Polygonizer.cpp, + source/operation/predicate/Makefile.am, + source/operation/predicate/RectangleContains.cpp, + source/operation/predicate/RectangleIntersects.cpp, + source/operation/predicate/SegmentIntersectionTester.cpp, + source/operation/relate/EdgeEndBuilder.cpp, + source/operation/relate/EdgeEndBundle.cpp, + source/operation/relate/EdgeEndBundleStar.cpp, + source/operation/relate/Makefile.am, + source/operation/relate/RelateComputer.cpp, + source/operation/relate/RelateNode.cpp, + source/operation/relate/RelateNodeFactory.cpp, + source/operation/relate/RelateNodeGraph.cpp, + source/operation/relate/RelateOp.cpp, + source/operation/union/CascadedPolygonUnion.cpp, + source/operation/union/Makefile.am, + source/operation/valid/ConnectedInteriorTester.cpp, + source/operation/valid/ConsistentAreaTester.cpp, + source/operation/valid/IndexedNestedRingTester.cpp, + source/operation/valid/IndexedNestedRingTester.h, + source/operation/valid/IsValidOp.cpp, + source/operation/valid/Makefile.am, + source/operation/valid/QuadtreeNestedRingTester.cpp, + source/operation/valid/RepeatedPointTester.cpp, + source/operation/valid/SimpleNestedRingTester.cpp, + source/operation/valid/SweeplineNestedRingTester.cpp, + source/operation/valid/TopologyValidationError.cpp, + source/planargraph/DirectedEdge.cpp, + source/planargraph/DirectedEdgeStar.cpp, + source/planargraph/Edge.cpp, source/planargraph/Makefile.am, + source/planargraph/Node.cpp, source/planargraph/NodeMap.cpp, + source/planargraph/PlanarGraph.cpp, + source/planargraph/Subgraph.cpp, + source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, + source/precision/CommonBits.cpp, source/precision/CommonBitsOp.cpp, + source/precision/CommonBitsRemover.cpp, + source/precision/EnhancedPrecisionOp.cpp, + source/precision/Makefile.am, + source/precision/SimpleGeometryPrecisionReducer.cpp, + source/simplify/DouglasPeuckerLineSimplifier.cpp, + source/simplify/DouglasPeuckerSimplifier.cpp, + source/simplify/LineSegmentIndex.cpp, source/simplify/Makefile.am, + source/simplify/TaggedLineSegment.cpp, + source/simplify/TaggedLineString.cpp, + source/simplify/TaggedLineStringSimplifier.cpp, + source/simplify/TaggedLinesSimplifier.cpp, + source/simplify/TopologyPreservingSimplifier.cpp, + source/util/Assert.cpp, source/util/GeometricShapeFactory.cpp, + source/util/Makefile.am, source/util/Profiler.cpp, + source/util/math.cpp, src/Makefile.am, src/Makefile.vc, + src/algorithm/Angle.cpp, src/algorithm/BoundaryNodeRule.cpp, + src/algorithm/CGAlgorithms.cpp, src/algorithm/CentroidArea.cpp, + src/algorithm/CentroidLine.cpp, src/algorithm/CentroidPoint.cpp, + src/algorithm/ConvexHull.cpp, src/algorithm/HCoordinate.cpp, + src/algorithm/InteriorPointArea.cpp, + src/algorithm/InteriorPointLine.cpp, + src/algorithm/InteriorPointPoint.cpp, + src/algorithm/LineIntersector.cpp, src/algorithm/MCPointInRing.cpp, + src/algorithm/Makefile.am, src/algorithm/MinimumDiameter.cpp, + src/algorithm/NotRepresentableException.cpp, + src/algorithm/PointLocator.cpp, + src/algorithm/RayCrossingCounter.cpp, + src/algorithm/RobustDeterminant.cpp, + src/algorithm/SIRtreePointInRing.cpp, + src/algorithm/SimplePointInRing.cpp, + src/algorithm/distance/DiscreteHausdorffDistance.cpp, + src/algorithm/distance/DistanceToPoint.cpp, src/algorithm/distance/Makefile.am, - src/algorithm/locate/Makefile.am, src/examples/Makefile.am, - src/geom/Makefile.am, src/geom/prep/Makefile.am, - src/geom/util/Makefile.am, src/geomgraph/Makefile.am, - src/geomgraph/index/Makefile.am, src/index/Makefile.am, - src/index/bintree/Makefile.am, src/index/chain/Makefile.am, + src/algorithm/locate/IndexedPointInAreaLocator.cpp, + src/algorithm/locate/Makefile.am, + src/algorithm/locate/PointOnGeometryLocator.cpp, + src/algorithm/locate/SimplePointInAreaLocator.cpp, src/dirlist.mk, + src/examples/CPCLException.cpp, + src/examples/CoordinateSequencesExample.cpp, + src/examples/CustomCoordinateSequenceExample.cpp, + src/examples/CustomCoordinateSequenceExample.h, + src/examples/CustomPointCoordinateSequence.cpp, + src/examples/Makefile.am, src/geom/Coordinate.cpp, + src/geom/CoordinateArraySequence.cpp, + src/geom/CoordinateArraySequenceFactory.cpp, + src/geom/CoordinateSequence.cpp, + src/geom/CoordinateSequenceFactory.cpp, src/geom/Dimension.cpp, + src/geom/Envelope.cpp, src/geom/Geometry.cpp, + src/geom/GeometryCollection.cpp, + src/geom/GeometryComponentFilter.cpp, src/geom/GeometryFactory.cpp, + src/geom/GeometryList.cpp, src/geom/IntersectionMatrix.cpp, + src/geom/LineSegment.cpp, src/geom/LineString.cpp, + src/geom/LinearRing.cpp, src/geom/Location.cpp, + src/geom/Makefile.am, src/geom/MultiLineString.cpp, + src/geom/MultiPoint.cpp, src/geom/MultiPolygon.cpp, + src/geom/Point.cpp, src/geom/Polygon.cpp, + src/geom/PrecisionModel.cpp, src/geom/Triangle.cpp, + src/geom/prep/AbstractPreparedPolygonContains.cpp, + src/geom/prep/BasicPreparedGeometry.cpp, src/geom/prep/Makefile.am, + src/geom/prep/PreparedGeometry.cpp, + src/geom/prep/PreparedGeometryFactory.cpp, + src/geom/prep/PreparedLineString.cpp, + src/geom/prep/PreparedLineStringIntersects.cpp, + src/geom/prep/PreparedPoint.cpp, src/geom/prep/PreparedPolygon.cpp, + src/geom/prep/PreparedPolygonContains.cpp, + src/geom/prep/PreparedPolygonContainsProperly.cpp, + src/geom/prep/PreparedPolygonCovers.cpp, + src/geom/prep/PreparedPolygonIntersects.cpp, + src/geom/prep/PreparedPolygonPredicate.cpp, + src/geom/util/ComponentCoordinateExtracter.cpp, + src/geom/util/CoordinateOperation.cpp, + src/geom/util/GeometryCombiner.cpp, + src/geom/util/GeometryEditor.cpp, + src/geom/util/GeometryTransformer.cpp, src/geom/util/Makefile.am, + src/geom/util/ShortCircuitedGeometryVisitor.cpp, + src/geomgraph/Depth.cpp, src/geomgraph/DirectedEdge.cpp, + src/geomgraph/DirectedEdgeStar.cpp, src/geomgraph/Edge.cpp, + src/geomgraph/EdgeEnd.cpp, src/geomgraph/EdgeEndStar.cpp, + src/geomgraph/EdgeIntersection.cpp, + src/geomgraph/EdgeIntersectionList.cpp, src/geomgraph/EdgeList.cpp, + src/geomgraph/EdgeNodingValidator.cpp, src/geomgraph/EdgeRing.cpp, + src/geomgraph/GeometryGraph.cpp, src/geomgraph/GraphComponent.cpp, + src/geomgraph/Label.cpp, src/geomgraph/Makefile.am, + src/geomgraph/Node.cpp, src/geomgraph/NodeFactory.cpp, + src/geomgraph/NodeMap.cpp, src/geomgraph/PlanarGraph.cpp, + src/geomgraph/Position.cpp, src/geomgraph/Quadrant.cpp, + src/geomgraph/TopologyLocation.cpp, + src/geomgraph/index/Makefile.am, + src/geomgraph/index/MonotoneChainEdge.cpp, + src/geomgraph/index/MonotoneChainIndexer.cpp, + src/geomgraph/index/SegmentIntersector.cpp, + src/geomgraph/index/SimpleEdgeSetIntersector.cpp, + src/geomgraph/index/SimpleMCSweepLineIntersector.cpp, + src/geomgraph/index/SimpleSweepLineIntersector.cpp, + src/geomgraph/index/SweepLineEvent.cpp, + src/geomgraph/index/SweepLineSegment.cpp, src/index/Makefile.am, + src/index/bintree/Bintree.cpp, src/index/bintree/Interval.cpp, + src/index/bintree/Key.cpp, src/index/bintree/Makefile.am, + src/index/bintree/Node.cpp, src/index/bintree/NodeBase.cpp, + src/index/bintree/Root.cpp, src/index/chain/Makefile.am, + src/index/chain/MonotoneChain.cpp, + src/index/chain/MonotoneChainBuilder.cpp, + src/index/chain/MonotoneChainOverlapAction.cpp, + src/index/chain/MonotoneChainSelectAction.cpp, + src/index/intervalrtree/IntervalRTreeBranchNode.cpp, + src/index/intervalrtree/IntervalRTreeLeafNode.cpp, + src/index/intervalrtree/IntervalRTreeNode.cpp, src/index/intervalrtree/Makefile.am, - src/index/quadtree/Makefile.am, src/index/strtree/Makefile.am, - src/index/sweepline/Makefile.am, src/io/Makefile.am, - src/linearref/Makefile.am, src/noding/Makefile.am, - src/noding/snapround/Makefile.am, src/operation/Makefile.am, + src/index/intervalrtree/SortedPackedIntervalRTree.cpp, + src/index/quadtree/DoubleBits.cpp, + src/index/quadtree/IntervalSize.cpp, src/index/quadtree/Key.cpp, + src/index/quadtree/Makefile.am, src/index/quadtree/Node.cpp, + src/index/quadtree/NodeBase.cpp, src/index/quadtree/Quadtree.cpp, + src/index/quadtree/Root.cpp, src/index/strtree/AbstractNode.cpp, + src/index/strtree/AbstractSTRtree.cpp, + src/index/strtree/Interval.cpp, + src/index/strtree/ItemBoundable.cpp, src/index/strtree/Makefile.am, + src/index/strtree/SIRtree.cpp, src/index/strtree/STRtree.cpp, + src/index/sweepline/Makefile.am, + src/index/sweepline/SweepLineEvent.cpp, + src/index/sweepline/SweepLineIndex.cpp, + src/index/sweepline/SweepLineInterval.cpp, src/inlines.cpp, + src/io/ByteOrderDataInStream.cpp, src/io/ByteOrderValues.cpp, + src/io/CLocalizer.cpp, src/io/Makefile.am, + src/io/ParseException.cpp, src/io/StringTokenizer.cpp, + src/io/Unload.cpp, src/io/WKBReader.cpp, src/io/WKBWriter.cpp, + src/io/WKTReader.cpp, src/io/WKTWriter.cpp, src/io/Writer.cpp, + src/linearref/ExtractLineByLocation.cpp, + src/linearref/LengthIndexOfPoint.cpp, + src/linearref/LengthIndexedLine.cpp, + src/linearref/LengthLocationMap.cpp, + src/linearref/LinearGeometryBuilder.cpp, + src/linearref/LinearIterator.cpp, src/linearref/LinearLocation.cpp, + src/linearref/LocationIndexOfLine.cpp, + src/linearref/LocationIndexOfPoint.cpp, src/linearref/Makefile.am, + src/noding/BasicSegmentString.cpp, + src/noding/FastNodingValidator.cpp, + src/noding/FastSegmentSetIntersectionFinder.cpp, + src/noding/IntersectionAdder.cpp, + src/noding/IntersectionFinderAdder.cpp, + src/noding/IteratedNoder.cpp, src/noding/MCIndexNoder.cpp, + src/noding/MCIndexSegmentSetMutualIntersector.cpp, + src/noding/Makefile.am, src/noding/NodedSegmentString.cpp, + src/noding/NodingValidator.cpp, src/noding/Octant.cpp, + src/noding/OrientedCoordinateArray.cpp, src/noding/ScaledNoder.cpp, + src/noding/SegmentIntersectionDetector.cpp, + src/noding/SegmentNode.cpp, src/noding/SegmentNodeList.cpp, + src/noding/SegmentString.cpp, src/noding/SegmentStringUtil.cpp, + src/noding/SimpleNoder.cpp, + src/noding/SingleInteriorIntersectionFinder.cpp, + src/noding/snapround/HotPixel.cpp, + src/noding/snapround/MCIndexPointSnapper.cpp, + src/noding/snapround/MCIndexSnapRounder.cpp, + src/noding/snapround/Makefile.am, + src/noding/snapround/SimpleSnapRounder.cpp, + src/operation/GeometryGraphOperation.cpp, + src/operation/IsSimpleOp.cpp, src/operation/Makefile.am, + src/operation/buffer/BufferBuilder.cpp, + src/operation/buffer/BufferInputLineSimplifier.cpp, + src/operation/buffer/BufferInputLineSimplifier.h, + src/operation/buffer/BufferOp.cpp, + src/operation/buffer/BufferParameters.cpp, + src/operation/buffer/BufferSubgraph.cpp, src/operation/buffer/Makefile.am, + src/operation/buffer/OffsetCurveBuilder.cpp, + src/operation/buffer/OffsetCurveSetBuilder.cpp, + src/operation/buffer/OffsetCurveVertexList.h, + src/operation/buffer/RightmostEdgeFinder.cpp, + src/operation/buffer/SubgraphDepthLocater.cpp, + src/operation/distance/ConnectedElementLocationFilter.cpp, + src/operation/distance/ConnectedElementPointFilter.cpp, + src/operation/distance/DistanceOp.cpp, + src/operation/distance/GeometryLocation.cpp, src/operation/distance/Makefile.am, + src/operation/linemerge/EdgeString.cpp, + src/operation/linemerge/LineMergeDirectedEdge.cpp, + src/operation/linemerge/LineMergeEdge.cpp, + src/operation/linemerge/LineMergeGraph.cpp, + src/operation/linemerge/LineMerger.cpp, + src/operation/linemerge/LineSequencer.cpp, src/operation/linemerge/Makefile.am, + src/operation/overlay/EdgeSetNoder.cpp, + src/operation/overlay/ElevationMatrix.cpp, + src/operation/overlay/ElevationMatrixCell.cpp, + src/operation/overlay/LineBuilder.cpp, src/operation/overlay/Makefile.am, + src/operation/overlay/MaximalEdgeRing.cpp, + src/operation/overlay/MinimalEdgeRing.cpp, + src/operation/overlay/OverlayNodeFactory.cpp, + src/operation/overlay/OverlayOp.cpp, + src/operation/overlay/PointBuilder.cpp, + src/operation/overlay/PolygonBuilder.cpp, + src/operation/overlay/snap/GeometrySnapper.cpp, + src/operation/overlay/snap/LineStringSnapper.cpp, + src/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, + src/operation/overlay/snap/SnapOverlayOp.cpp, + src/operation/overlay/validate/FuzzyPointLocator.cpp, + src/operation/overlay/validate/OffsetPointGenerator.cpp, + src/operation/overlay/validate/OverlayResultValidator.cpp, + src/operation/polygonize/EdgeRing.cpp, src/operation/polygonize/Makefile.am, + src/operation/polygonize/PolygonizeDirectedEdge.cpp, + src/operation/polygonize/PolygonizeEdge.cpp, + src/operation/polygonize/PolygonizeGraph.cpp, + src/operation/polygonize/Polygonizer.cpp, src/operation/predicate/Makefile.am, - src/operation/relate/Makefile.am, src/operation/union/Makefile.am, - src/operation/valid/Makefile.am, src/planargraph/Makefile.am, - src/precision/Makefile.am, src/simplify/Makefile.am, - src/util/Makefile.am: Updated Makefile.am files in src subtree after - moved to new location (#315) git-svn-id: - http://svn.osgeo.org/geos/trunk@2842 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-13 Mateusz Loskot - - * Makefile.am, configure.in: Updated new source structure in - configure.in and root Makefile.am - part 2 (#315) git-svn-id: - http://svn.osgeo.org/geos/trunk@2841 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-13 Mateusz Loskot - - * Makefile.am, configure.in: Updated new source structure in - configure.in and root Makefile.am (#315) git-svn-id: - http://svn.osgeo.org/geos/trunk@2840 + src/operation/predicate/RectangleContains.cpp, + src/operation/predicate/RectangleIntersects.cpp, + src/operation/predicate/SegmentIntersectionTester.cpp, + src/operation/relate/EdgeEndBuilder.cpp, + src/operation/relate/EdgeEndBundle.cpp, + src/operation/relate/EdgeEndBundleStar.cpp, + src/operation/relate/Makefile.am, + src/operation/relate/RelateComputer.cpp, + src/operation/relate/RelateNode.cpp, + src/operation/relate/RelateNodeFactory.cpp, + src/operation/relate/RelateNodeGraph.cpp, + src/operation/relate/RelateOp.cpp, + src/operation/union/CascadedPolygonUnion.cpp, + src/operation/union/Makefile.am, + src/operation/valid/ConnectedInteriorTester.cpp, + src/operation/valid/ConsistentAreaTester.cpp, + src/operation/valid/IndexedNestedRingTester.cpp, + src/operation/valid/IndexedNestedRingTester.h, + src/operation/valid/IsValidOp.cpp, src/operation/valid/Makefile.am, + src/operation/valid/QuadtreeNestedRingTester.cpp, + src/operation/valid/RepeatedPointTester.cpp, + src/operation/valid/SimpleNestedRingTester.cpp, + src/operation/valid/SweeplineNestedRingTester.cpp, + src/operation/valid/TopologyValidationError.cpp, + src/planargraph/DirectedEdge.cpp, + src/planargraph/DirectedEdgeStar.cpp, src/planargraph/Edge.cpp, + src/planargraph/Makefile.am, src/planargraph/Node.cpp, + src/planargraph/NodeMap.cpp, src/planargraph/PlanarGraph.cpp, + src/planargraph/Subgraph.cpp, + src/planargraph/algorithm/ConnectedSubgraphFinder.cpp, + src/precision/CommonBits.cpp, src/precision/CommonBitsOp.cpp, + src/precision/CommonBitsRemover.cpp, + src/precision/EnhancedPrecisionOp.cpp, src/precision/Makefile.am, + src/precision/SimpleGeometryPrecisionReducer.cpp, + src/simplify/DouglasPeuckerLineSimplifier.cpp, + src/simplify/DouglasPeuckerSimplifier.cpp, + src/simplify/LineSegmentIndex.cpp, src/simplify/Makefile.am, + src/simplify/TaggedLineSegment.cpp, + src/simplify/TaggedLineString.cpp, + src/simplify/TaggedLineStringSimplifier.cpp, + src/simplify/TaggedLinesSimplifier.cpp, + src/simplify/TopologyPreservingSimplifier.cpp, src/util/Assert.cpp, + src/util/GeometricShapeFactory.cpp, src/util/Makefile.am, + src/util/Profiler.cpp, src/util/math.cpp: Moved source directory to + src (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2838 5242fede-7e19-0410-aef8-94bd7d2200fb -2010-01-13 Mateusz Loskot +2010-01-12 Mateusz Loskot - * include/Makefile.am, include/geos/Makefile.am, + * include/Makefile.am, include/acconfig.h, include/geos.h, + include/geos/Makefile.am, include/geos/algorithm/Angle.h, + include/geos/algorithm/BoundaryNodeRule.h, + include/geos/algorithm/CGAlgorithms.h, + include/geos/algorithm/CentralEndpointIntersector.h, + include/geos/algorithm/CentroidArea.h, + include/geos/algorithm/CentroidLine.h, + include/geos/algorithm/CentroidPoint.h, + include/geos/algorithm/ConvexHull.h, + include/geos/algorithm/ConvexHull.inl, + include/geos/algorithm/HCoordinate.h, + include/geos/algorithm/InteriorPointArea.h, + include/geos/algorithm/InteriorPointLine.h, + include/geos/algorithm/InteriorPointPoint.h, + include/geos/algorithm/LineIntersector.h, + include/geos/algorithm/MCPointInRing.h, include/geos/algorithm/Makefile.am, + include/geos/algorithm/MinimumDiameter.h, + include/geos/algorithm/NotRepresentableException.h, + include/geos/algorithm/PointInRing.h, + include/geos/algorithm/PointLocator.h, + include/geos/algorithm/RayCrossingCounter.h, + include/geos/algorithm/RobustDeterminant.h, + include/geos/algorithm/SIRtreePointInRing.h, + include/geos/algorithm/SimplePointInRing.h, + include/geos/algorithm/distance/DiscreteHausdorffDistance.h, + include/geos/algorithm/distance/DistanceToPoint.h, include/geos/algorithm/distance/Makefile.am, + include/geos/algorithm/distance/PointPairDistance.h, + include/geos/algorithm/locate/IndexedPointInAreaLocator.h, include/geos/algorithm/locate/Makefile.am, - include/geos/geom/Makefile.am, include/geos/geom/prep/Makefile.am, + include/geos/algorithm/locate/PointOnGeometryLocator.h, + include/geos/algorithm/locate/SimplePointInAreaLocator.h, + include/geos/export.h, include/geos/geom.h, + include/geos/geom/BinaryOp.h, include/geos/geom/Coordinate.h, + include/geos/geom/Coordinate.inl, + include/geos/geom/CoordinateArraySequence.h, + include/geos/geom/CoordinateArraySequenceFactory.h, + include/geos/geom/CoordinateArraySequenceFactory.inl, + include/geos/geom/CoordinateFilter.h, + include/geos/geom/CoordinateList.h, + include/geos/geom/CoordinateSequence.h, + include/geos/geom/CoordinateSequenceFactory.h, + include/geos/geom/CoordinateSequenceFilter.h, + include/geos/geom/Dimension.h, include/geos/geom/Envelope.h, + include/geos/geom/Envelope.inl, include/geos/geom/Geometry.h, + include/geos/geom/Geometry.inl, + include/geos/geom/GeometryCollection.h, + include/geos/geom/GeometryCollection.inl, + include/geos/geom/GeometryComponentFilter.h, + include/geos/geom/GeometryFactory.h, + include/geos/geom/GeometryFactory.inl, + include/geos/geom/GeometryFilter.h, + include/geos/geom/GeometryList.h, + include/geos/geom/IntersectionMatrix.h, + include/geos/geom/LineSegment.h, include/geos/geom/LineSegment.inl, + include/geos/geom/LineString.h, include/geos/geom/LinearRing.h, + include/geos/geom/Location.h, include/geos/geom/Makefile.am, + include/geos/geom/MultiLineString.h, + include/geos/geom/MultiLineString.inl, + include/geos/geom/MultiPoint.h, include/geos/geom/MultiPolygon.h, + include/geos/geom/MultiPolygon.inl, include/geos/geom/Point.h, + include/geos/geom/Polygon.h, include/geos/geom/PrecisionModel.h, + include/geos/geom/PrecisionModel.inl, include/geos/geom/Triangle.h, + include/geos/geom/prep/AbstractPreparedPolygonContains.h, + include/geos/geom/prep/BasicPreparedGeometry.h, + include/geos/geom/prep/Makefile.am, + include/geos/geom/prep/PreparedGeometry.h, + include/geos/geom/prep/PreparedGeometryFactory.h, + include/geos/geom/prep/PreparedLineString.h, + include/geos/geom/prep/PreparedLineStringIntersects.h, + include/geos/geom/prep/PreparedPoint.h, + include/geos/geom/prep/PreparedPolygon.h, + include/geos/geom/prep/PreparedPolygonContains.h, + include/geos/geom/prep/PreparedPolygonContainsProperly.h, + include/geos/geom/prep/PreparedPolygonCovers.h, + include/geos/geom/prep/PreparedPolygonIntersects.h, + include/geos/geom/prep/PreparedPolygonPredicate.h, + include/geos/geom/util/ComponentCoordinateExtracter.h, + include/geos/geom/util/CoordinateOperation.h, + include/geos/geom/util/GeometryCombiner.h, + include/geos/geom/util/GeometryEditor.h, + include/geos/geom/util/GeometryEditorOperation.h, + include/geos/geom/util/GeometryTransformer.h, + include/geos/geom/util/LinearComponentExtracter.h, include/geos/geom/util/Makefile.am, - include/geos/geomgraph/Makefile.am, + include/geos/geom/util/PointExtracter.h, + include/geos/geom/util/PolygonExtracter.h, + include/geos/geom/util/ShortCircuitedGeometryVisitor.h, + include/geos/geomPrep.h, include/geos/geomUtil.h, + include/geos/geomgraph.h, include/geos/geomgraph/Depth.h, + include/geos/geomgraph/DirectedEdge.h, + include/geos/geomgraph/DirectedEdge.inl, + include/geos/geomgraph/DirectedEdgeStar.h, + include/geos/geomgraph/Edge.h, include/geos/geomgraph/EdgeEnd.h, + include/geos/geomgraph/EdgeEndStar.h, + include/geos/geomgraph/EdgeIntersection.h, + include/geos/geomgraph/EdgeIntersectionList.h, + include/geos/geomgraph/EdgeList.h, + include/geos/geomgraph/EdgeNodingValidator.h, + include/geos/geomgraph/EdgeRing.h, + include/geos/geomgraph/GeometryGraph.h, + include/geos/geomgraph/GeometryGraph.inl, + include/geos/geomgraph/GraphComponent.h, + include/geos/geomgraph/Label.h, include/geos/geomgraph/Makefile.am, + include/geos/geomgraph/Node.h, + include/geos/geomgraph/NodeFactory.h, + include/geos/geomgraph/NodeMap.h, + include/geos/geomgraph/PlanarGraph.h, + include/geos/geomgraph/Position.h, + include/geos/geomgraph/Quadrant.h, + include/geos/geomgraph/TopologyLocation.h, + include/geos/geomgraph/index/EdgeSetIntersector.h, include/geos/geomgraph/index/Makefile.am, - include/geos/index/Makefile.am, + include/geos/geomgraph/index/MonotoneChain.h, + include/geos/geomgraph/index/MonotoneChainEdge.h, + include/geos/geomgraph/index/MonotoneChainIndexer.h, + include/geos/geomgraph/index/SegmentIntersector.h, + include/geos/geomgraph/index/SimpleEdgeSetIntersector.h, + include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + include/geos/geomgraph/index/SimpleSweepLineIntersector.h, + include/geos/geomgraph/index/SweepLineEvent.h, + include/geos/geomgraph/index/SweepLineEventObj.h, + include/geos/geomgraph/index/SweepLineSegment.h, + include/geos/geomgraphindex.h, include/geos/geosAlgorithm.h, + include/geos/index/ItemVisitor.h, include/geos/index/Makefile.am, + include/geos/index/SpatialIndex.h, + include/geos/index/bintree/Bintree.h, + include/geos/index/bintree/Interval.h, + include/geos/index/bintree/Key.h, include/geos/index/bintree/Makefile.am, + include/geos/index/bintree/Node.h, + include/geos/index/bintree/NodeBase.h, + include/geos/index/bintree/Root.h, include/geos/index/chain/Makefile.am, + include/geos/index/chain/MonotoneChain.h, + include/geos/index/chain/MonotoneChainBuilder.h, + include/geos/index/chain/MonotoneChainOverlapAction.h, + include/geos/index/chain/MonotoneChainSelectAction.h, + include/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + include/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + include/geos/index/intervalrtree/IntervalRTreeNode.h, include/geos/index/intervalrtree/Makefile.am, + include/geos/index/intervalrtree/SortedPackedIntervalRTree.h, + include/geos/index/quadtree/DoubleBits.h, + include/geos/index/quadtree/IntervalSize.h, + include/geos/index/quadtree/Key.h, include/geos/index/quadtree/Makefile.am, + include/geos/index/quadtree/Node.h, + include/geos/index/quadtree/NodeBase.h, + include/geos/index/quadtree/Quadtree.h, + include/geos/index/quadtree/Root.h, + include/geos/index/strtree/AbstractNode.h, + include/geos/index/strtree/AbstractSTRtree.h, + include/geos/index/strtree/Boundable.h, + include/geos/index/strtree/Interval.h, + include/geos/index/strtree/ItemBoundable.h, include/geos/index/strtree/Makefile.am, + include/geos/index/strtree/SIRtree.h, + include/geos/index/strtree/STRtree.h, include/geos/index/sweepline/Makefile.am, - include/geos/io/Makefile.am, include/geos/linearref/Makefile.am, + include/geos/index/sweepline/SweepLineEvent.h, + include/geos/index/sweepline/SweepLineIndex.h, + include/geos/index/sweepline/SweepLineInterval.h, + include/geos/index/sweepline/SweepLineOverlapAction.h, + include/geos/indexBintree.h, include/geos/indexChain.h, + include/geos/indexIntervalRTree.h, include/geos/indexQuadtree.h, + include/geos/indexStrtree.h, include/geos/indexSweepline.h, + include/geos/inline.h, include/geos/io.h, + include/geos/io/ByteOrderDataInStream.h, + include/geos/io/ByteOrderDataInStream.inl, + include/geos/io/ByteOrderValues.h, include/geos/io/CLocalizer.h, + include/geos/io/Makefile.am, include/geos/io/ParseException.h, + include/geos/io/StringTokenizer.h, include/geos/io/WKBConstants.h, + include/geos/io/WKBReader.h, include/geos/io/WKBWriter.h, + include/geos/io/WKTReader.h, include/geos/io/WKTReader.inl, + include/geos/io/WKTWriter.h, include/geos/io/Writer.h, + include/geos/linearref/ExtractLineByLocation.h, + include/geos/linearref/LengthIndexOfPoint.h, + include/geos/linearref/LengthIndexedLine.h, + include/geos/linearref/LengthLocationMap.h, + include/geos/linearref/LinearGeometryBuilder.h, + include/geos/linearref/LinearIterator.h, + include/geos/linearref/LinearLocation.h, + include/geos/linearref/LocationIndexOfLine.h, + include/geos/linearref/LocationIndexOfPoint.h, + include/geos/linearref/Makefile.am, include/geos/noding.h, + include/geos/noding/BasicSegmentString.h, + include/geos/noding/FastNodingValidator.h, + include/geos/noding/FastSegmentSetIntersectionFinder.h, + include/geos/noding/IntersectionAdder.h, + include/geos/noding/IntersectionFinderAdder.h, + include/geos/noding/IteratedNoder.h, + include/geos/noding/MCIndexNoder.h, + include/geos/noding/MCIndexNoder.inl, + include/geos/noding/MCIndexSegmentSetMutualIntersector.h, include/geos/noding/Makefile.am, + include/geos/noding/NodableSegmentString.h, + include/geos/noding/NodedSegmentString.h, + include/geos/noding/Noder.h, include/geos/noding/NodingValidator.h, + include/geos/noding/Octant.h, + include/geos/noding/OrientedCoordinateArray.h, + include/geos/noding/ScaledNoder.h, + include/geos/noding/SegmentIntersectionDetector.h, + include/geos/noding/SegmentIntersector.h, + include/geos/noding/SegmentNode.h, + include/geos/noding/SegmentNodeList.h, + include/geos/noding/SegmentSetMutualIntersector.h, + include/geos/noding/SegmentString.h, + include/geos/noding/SegmentString.inl, + include/geos/noding/SegmentStringUtil.h, + include/geos/noding/SimpleNoder.h, + include/geos/noding/SingleInteriorIntersectionFinder.h, + include/geos/noding/SinglePassNoder.h, + include/geos/noding/snapround/HotPixel.h, + include/geos/noding/snapround/HotPixel.inl, + include/geos/noding/snapround/MCIndexPointSnapper.h, + include/geos/noding/snapround/MCIndexSnapRounder.h, + include/geos/noding/snapround/MCIndexSnapRounder.inl, include/geos/noding/snapround/Makefile.am, + include/geos/noding/snapround/SimpleSnapRounder.h, + include/geos/nodingSnapround.h, include/geos/opBuffer.h, + include/geos/opDistance.h, include/geos/opLinemerge.h, + include/geos/opOverlay.h, include/geos/opPolygonize.h, + include/geos/opPredicate.h, include/geos/opRelate.h, + include/geos/opValid.h, include/geos/operation.h, + include/geos/operation/GeometryGraphOperation.h, + include/geos/operation/IsSimpleOp.h, include/geos/operation/Makefile.am, + include/geos/operation/buffer/BufferBuilder.h, + include/geos/operation/buffer/BufferOp.h, + include/geos/operation/buffer/BufferParameters.h, + include/geos/operation/buffer/BufferSubgraph.h, include/geos/operation/buffer/Makefile.am, + include/geos/operation/buffer/OffsetCurveBuilder.h, + include/geos/operation/buffer/OffsetCurveSetBuilder.h, + include/geos/operation/buffer/RightmostEdgeFinder.h, + include/geos/operation/buffer/SubgraphDepthLocater.h, + include/geos/operation/distance/ConnectedElementLocationFilter.h, + include/geos/operation/distance/ConnectedElementPointFilter.h, + include/geos/operation/distance/DistanceOp.h, + include/geos/operation/distance/GeometryLocation.h, include/geos/operation/distance/Makefile.am, + include/geos/operation/linemerge/EdgeString.h, + include/geos/operation/linemerge/LineMergeDirectedEdge.h, + include/geos/operation/linemerge/LineMergeEdge.h, + include/geos/operation/linemerge/LineMergeGraph.h, + include/geos/operation/linemerge/LineMerger.h, + include/geos/operation/linemerge/LineSequencer.h, include/geos/operation/linemerge/Makefile.am, + include/geos/operation/overlay/EdgeSetNoder.h, + include/geos/operation/overlay/ElevationMatrix.h, + include/geos/operation/overlay/ElevationMatrixCell.h, + include/geos/operation/overlay/LineBuilder.h, include/geos/operation/overlay/Makefile.am, + include/geos/operation/overlay/MaximalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.h, + include/geos/operation/overlay/MinimalEdgeRing.inl, + include/geos/operation/overlay/OverlayNodeFactory.h, + include/geos/operation/overlay/OverlayOp.h, + include/geos/operation/overlay/PointBuilder.h, + include/geos/operation/overlay/PolygonBuilder.h, + include/geos/operation/overlay/snap/GeometrySnapper.h, + include/geos/operation/overlay/snap/LineStringSnapper.h, include/geos/operation/overlay/snap/Makefile.am, + include/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + include/geos/operation/overlay/snap/SnapOverlayOp.h, + include/geos/operation/overlay/validate/FuzzyPointLocator.h, + include/geos/operation/overlay/validate/OffsetPointGenerator.h, + include/geos/operation/overlay/validate/OverlayResultValidator.h, + include/geos/operation/polygonize/EdgeRing.h, include/geos/operation/polygonize/Makefile.am, + include/geos/operation/polygonize/PolygonizeDirectedEdge.h, + include/geos/operation/polygonize/PolygonizeEdge.h, + include/geos/operation/polygonize/PolygonizeGraph.h, + include/geos/operation/polygonize/Polygonizer.h, include/geos/operation/predicate/Makefile.am, + include/geos/operation/predicate/RectangleContains.h, + include/geos/operation/predicate/RectangleIntersects.h, + include/geos/operation/predicate/SegmentIntersectionTester.h, + include/geos/operation/relate/EdgeEndBuilder.h, + include/geos/operation/relate/EdgeEndBundle.h, + include/geos/operation/relate/EdgeEndBundleStar.h, include/geos/operation/relate/Makefile.am, + include/geos/operation/relate/RelateComputer.h, + include/geos/operation/relate/RelateNode.h, + include/geos/operation/relate/RelateNodeFactory.h, + include/geos/operation/relate/RelateNodeGraph.h, + include/geos/operation/relate/RelateOp.h, + include/geos/operation/union/CascadedPolygonUnion.h, include/geos/operation/union/Makefile.am, + include/geos/operation/valid/ConnectedInteriorTester.h, + include/geos/operation/valid/ConsistentAreaTester.h, + include/geos/operation/valid/IsValidOp.h, include/geos/operation/valid/Makefile.am, + include/geos/operation/valid/QuadtreeNestedRingTester.h, + include/geos/operation/valid/RepeatedPointTester.h, + include/geos/operation/valid/SimpleNestedRingTester.h, + include/geos/operation/valid/SweeplineNestedRingTester.h, + include/geos/operation/valid/TopologyValidationError.h, + include/geos/planargraph.h, + include/geos/planargraph/DirectedEdge.h, + include/geos/planargraph/DirectedEdgeStar.h, + include/geos/planargraph/Edge.h, + include/geos/planargraph/GraphComponent.h, include/geos/planargraph/Makefile.am, + include/geos/planargraph/Node.h, + include/geos/planargraph/NodeMap.h, + include/geos/planargraph/PlanarGraph.h, + include/geos/planargraph/Subgraph.h, + include/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, include/geos/planargraph/algorithm/Makefile.am, + include/geos/platform.h.in, include/geos/platform.h.vc, + include/geos/precision.h, include/geos/precision/CommonBits.h, + include/geos/precision/CommonBitsOp.h, + include/geos/precision/CommonBitsRemover.h, + include/geos/precision/EnhancedPrecisionOp.h, include/geos/precision/Makefile.am, - include/geos/simplify/Makefile.am, include/geos/util/Makefile.am: - Updated Makefile.am files in headers subtree after moved to new - location in include (#315) git-svn-id: - http://svn.osgeo.org/geos/trunk@2839 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-12 Mateusz Loskot - - * {source => src}/Makefile.am, {source => src}/Makefile.vc, {source - => src}/algorithm/Angle.cpp, {source => - src}/algorithm/BoundaryNodeRule.cpp, {source => - src}/algorithm/CGAlgorithms.cpp, {source => - src}/algorithm/CentroidArea.cpp, {source => - src}/algorithm/CentroidLine.cpp, {source => - src}/algorithm/CentroidPoint.cpp, {source => - src}/algorithm/ConvexHull.cpp, {source => - src}/algorithm/HCoordinate.cpp, {source => - src}/algorithm/InteriorPointArea.cpp, {source => - src}/algorithm/InteriorPointLine.cpp, {source => - src}/algorithm/InteriorPointPoint.cpp, {source => - src}/algorithm/LineIntersector.cpp, {source => - src}/algorithm/MCPointInRing.cpp, {source => - src}/algorithm/Makefile.am, {source => - src}/algorithm/MinimumDiameter.cpp, {source => - src}/algorithm/NotRepresentableException.cpp, {source => - src}/algorithm/PointLocator.cpp, {source => - src}/algorithm/RayCrossingCounter.cpp, {source => - src}/algorithm/RobustDeterminant.cpp, {source => - src}/algorithm/SIRtreePointInRing.cpp, {source => - src}/algorithm/SimplePointInRing.cpp, {source => - src}/algorithm/distance/DiscreteHausdorffDistance.cpp, {source => - src}/algorithm/distance/DistanceToPoint.cpp, {source => - src}/algorithm/distance/Makefile.am, {source => - src}/algorithm/locate/IndexedPointInAreaLocator.cpp, {source => - src}/algorithm/locate/Makefile.am, {source => - src}/algorithm/locate/PointOnGeometryLocator.cpp, {source => - src}/algorithm/locate/SimplePointInAreaLocator.cpp, {source => - src}/dirlist.mk, {source => src}/examples/CPCLException.cpp, - {source => src}/examples/CoordinateSequencesExample.cpp, {source => - src}/examples/CustomCoordinateSequenceExample.cpp, {source => - src}/examples/CustomCoordinateSequenceExample.h, {source => - src}/examples/CustomPointCoordinateSequence.cpp, {source => - src}/examples/Makefile.am, {source => src}/geom/Coordinate.cpp, - {source => src}/geom/CoordinateArraySequence.cpp, {source => - src}/geom/CoordinateArraySequenceFactory.cpp, {source => - src}/geom/CoordinateSequence.cpp, {source => - src}/geom/CoordinateSequenceFactory.cpp, {source => - src}/geom/Dimension.cpp, {source => src}/geom/Envelope.cpp, {source - => src}/geom/Geometry.cpp, {source => - src}/geom/GeometryCollection.cpp, {source => - src}/geom/GeometryComponentFilter.cpp, {source => - src}/geom/GeometryFactory.cpp, {source => - src}/geom/GeometryList.cpp, {source => - src}/geom/IntersectionMatrix.cpp, {source => - src}/geom/LineSegment.cpp, {source => src}/geom/LineString.cpp, - {source => src}/geom/LinearRing.cpp, {source => - src}/geom/Location.cpp, {source => src}/geom/Makefile.am, {source - => src}/geom/MultiLineString.cpp, {source => - src}/geom/MultiPoint.cpp, {source => src}/geom/MultiPolygon.cpp, - {source => src}/geom/Point.cpp, {source => src}/geom/Polygon.cpp, - {source => src}/geom/PrecisionModel.cpp, {source => - src}/geom/Triangle.cpp, {source => - src}/geom/prep/AbstractPreparedPolygonContains.cpp, {source => - src}/geom/prep/BasicPreparedGeometry.cpp, {source => - src}/geom/prep/Makefile.am, {source => - src}/geom/prep/PreparedGeometry.cpp, {source => - src}/geom/prep/PreparedGeometryFactory.cpp, {source => - src}/geom/prep/PreparedLineString.cpp, {source => - src}/geom/prep/PreparedLineStringIntersects.cpp, {source => - src}/geom/prep/PreparedPoint.cpp, {source => - src}/geom/prep/PreparedPolygon.cpp, {source => - src}/geom/prep/PreparedPolygonContains.cpp, {source => - src}/geom/prep/PreparedPolygonContainsProperly.cpp, {source => - src}/geom/prep/PreparedPolygonCovers.cpp, {source => - src}/geom/prep/PreparedPolygonIntersects.cpp, {source => - src}/geom/prep/PreparedPolygonPredicate.cpp, {source => - src}/geom/util/ComponentCoordinateExtracter.cpp, {source => - src}/geom/util/CoordinateOperation.cpp, {source => - src}/geom/util/GeometryCombiner.cpp, {source => - src}/geom/util/GeometryEditor.cpp, {source => - src}/geom/util/GeometryTransformer.cpp, {source => - src}/geom/util/Makefile.am, {source => - src}/geom/util/ShortCircuitedGeometryVisitor.cpp, {source => - src}/geomgraph/Depth.cpp, {source => - src}/geomgraph/DirectedEdge.cpp, {source => - src}/geomgraph/DirectedEdgeStar.cpp, {source => - src}/geomgraph/Edge.cpp, {source => src}/geomgraph/EdgeEnd.cpp, - {source => src}/geomgraph/EdgeEndStar.cpp, {source => - src}/geomgraph/EdgeIntersection.cpp, {source => - src}/geomgraph/EdgeIntersectionList.cpp, {source => - src}/geomgraph/EdgeList.cpp, {source => - src}/geomgraph/EdgeNodingValidator.cpp, {source => - src}/geomgraph/EdgeRing.cpp, {source => - src}/geomgraph/GeometryGraph.cpp, {source => - src}/geomgraph/GraphComponent.cpp, {source => - src}/geomgraph/Label.cpp, {source => src}/geomgraph/Makefile.am, - {source => src}/geomgraph/Node.cpp, {source => - src}/geomgraph/NodeFactory.cpp, {source => - src}/geomgraph/NodeMap.cpp, {source => - src}/geomgraph/PlanarGraph.cpp, {source => - src}/geomgraph/Position.cpp, {source => - src}/geomgraph/Quadrant.cpp, {source => - src}/geomgraph/TopologyLocation.cpp, {source => - src}/geomgraph/index/Makefile.am, {source => - src}/geomgraph/index/MonotoneChainEdge.cpp, {source => - src}/geomgraph/index/MonotoneChainIndexer.cpp, {source => - src}/geomgraph/index/SegmentIntersector.cpp, {source => - src}/geomgraph/index/SimpleEdgeSetIntersector.cpp, {source => - src}/geomgraph/index/SimpleMCSweepLineIntersector.cpp, {source => - src}/geomgraph/index/SimpleSweepLineIntersector.cpp, {source => - src}/geomgraph/index/SweepLineEvent.cpp, {source => - src}/geomgraph/index/SweepLineSegment.cpp, {source => - src}/index/Makefile.am, {source => src}/index/bintree/Bintree.cpp, - {source => src}/index/bintree/Interval.cpp, {source => - src}/index/bintree/Key.cpp, {source => - src}/index/bintree/Makefile.am, {source => - src}/index/bintree/Node.cpp, {source => - src}/index/bintree/NodeBase.cpp, {source => - src}/index/bintree/Root.cpp, {source => - src}/index/chain/Makefile.am, {source => - src}/index/chain/MonotoneChain.cpp, {source => - src}/index/chain/MonotoneChainBuilder.cpp, {source => - src}/index/chain/MonotoneChainOverlapAction.cpp, {source => - src}/index/chain/MonotoneChainSelectAction.cpp, {source => - src}/index/intervalrtree/IntervalRTreeBranchNode.cpp, {source => - src}/index/intervalrtree/IntervalRTreeLeafNode.cpp, {source => - src}/index/intervalrtree/IntervalRTreeNode.cpp, {source => - src}/index/intervalrtree/Makefile.am, {source => - src}/index/intervalrtree/SortedPackedIntervalRTree.cpp, {source => - src}/index/quadtree/DoubleBits.cpp, {source => - src}/index/quadtree/IntervalSize.cpp, {source => - src}/index/quadtree/Key.cpp, {source => - src}/index/quadtree/Makefile.am, {source => - src}/index/quadtree/Node.cpp, {source => - src}/index/quadtree/NodeBase.cpp, {source => - src}/index/quadtree/Quadtree.cpp, {source => - src}/index/quadtree/Root.cpp, {source => - src}/index/strtree/AbstractNode.cpp, {source => - src}/index/strtree/AbstractSTRtree.cpp, {source => - src}/index/strtree/Interval.cpp, {source => - src}/index/strtree/ItemBoundable.cpp, {source => - src}/index/strtree/Makefile.am, {source => - src}/index/strtree/SIRtree.cpp, {source => - src}/index/strtree/STRtree.cpp, {source => - src}/index/sweepline/Makefile.am, {source => - src}/index/sweepline/SweepLineEvent.cpp, {source => - src}/index/sweepline/SweepLineIndex.cpp, {source => - src}/index/sweepline/SweepLineInterval.cpp, {source => - src}/inlines.cpp, {source => src}/io/ByteOrderDataInStream.cpp, - {source => src}/io/ByteOrderValues.cpp, {source => - src}/io/CLocalizer.cpp, {source => src}/io/Makefile.am, {source => - src}/io/ParseException.cpp, {source => src}/io/StringTokenizer.cpp, - {source => src}/io/Unload.cpp, {source => src}/io/WKBReader.cpp, - {source => src}/io/WKBWriter.cpp, {source => src}/io/WKTReader.cpp, - {source => src}/io/WKTWriter.cpp, {source => src}/io/Writer.cpp, - {source => src}/linearref/ExtractLineByLocation.cpp, {source => - src}/linearref/LengthIndexOfPoint.cpp, {source => - src}/linearref/LengthIndexedLine.cpp, {source => - src}/linearref/LengthLocationMap.cpp, {source => - src}/linearref/LinearGeometryBuilder.cpp, {source => - src}/linearref/LinearIterator.cpp, {source => - src}/linearref/LinearLocation.cpp, {source => - src}/linearref/LocationIndexOfLine.cpp, {source => - src}/linearref/LocationIndexOfPoint.cpp, {source => - src}/linearref/Makefile.am, {source => - src}/noding/BasicSegmentString.cpp, {source => - src}/noding/FastNodingValidator.cpp, {source => - src}/noding/FastSegmentSetIntersectionFinder.cpp, {source => - src}/noding/IntersectionAdder.cpp, {source => - src}/noding/IntersectionFinderAdder.cpp, {source => - src}/noding/IteratedNoder.cpp, {source => - src}/noding/MCIndexNoder.cpp, {source => - src}/noding/MCIndexSegmentSetMutualIntersector.cpp, {source => - src}/noding/Makefile.am, {source => - src}/noding/NodedSegmentString.cpp, {source => - src}/noding/NodingValidator.cpp, {source => src}/noding/Octant.cpp, - {source => src}/noding/OrientedCoordinateArray.cpp, {source => - src}/noding/ScaledNoder.cpp, {source => - src}/noding/SegmentIntersectionDetector.cpp, {source => - src}/noding/SegmentNode.cpp, {source => - src}/noding/SegmentNodeList.cpp, {source => - src}/noding/SegmentString.cpp, {source => - src}/noding/SegmentStringUtil.cpp, {source => - src}/noding/SimpleNoder.cpp, {source => - src}/noding/SingleInteriorIntersectionFinder.cpp, {source => - src}/noding/snapround/HotPixel.cpp, {source => - src}/noding/snapround/MCIndexPointSnapper.cpp, {source => - src}/noding/snapround/MCIndexSnapRounder.cpp, {source => - src}/noding/snapround/Makefile.am, {source => - src}/noding/snapround/SimpleSnapRounder.cpp, {source => - src}/operation/GeometryGraphOperation.cpp, {source => - src}/operation/IsSimpleOp.cpp, {source => - src}/operation/Makefile.am, {source => - src}/operation/buffer/BufferBuilder.cpp, {source => - src}/operation/buffer/BufferInputLineSimplifier.cpp, {source => - src}/operation/buffer/BufferInputLineSimplifier.h, {source => - src}/operation/buffer/BufferOp.cpp, {source => - src}/operation/buffer/BufferParameters.cpp, {source => - src}/operation/buffer/BufferSubgraph.cpp, {source => - src}/operation/buffer/Makefile.am, {source => - src}/operation/buffer/OffsetCurveBuilder.cpp, {source => - src}/operation/buffer/OffsetCurveSetBuilder.cpp, {source => - src}/operation/buffer/OffsetCurveVertexList.h, {source => - src}/operation/buffer/RightmostEdgeFinder.cpp, {source => - src}/operation/buffer/SubgraphDepthLocater.cpp, {source => - src}/operation/distance/ConnectedElementLocationFilter.cpp, {source - => src}/operation/distance/ConnectedElementPointFilter.cpp, {source - => src}/operation/distance/DistanceOp.cpp, {source => - src}/operation/distance/GeometryLocation.cpp, {source => - src}/operation/distance/Makefile.am, {source => - src}/operation/linemerge/EdgeString.cpp, {source => - src}/operation/linemerge/LineMergeDirectedEdge.cpp, {source => - src}/operation/linemerge/LineMergeEdge.cpp, {source => - src}/operation/linemerge/LineMergeGraph.cpp, {source => - src}/operation/linemerge/LineMerger.cpp, {source => - src}/operation/linemerge/LineSequencer.cpp, {source => - src}/operation/linemerge/Makefile.am, {source => - src}/operation/overlay/EdgeSetNoder.cpp, {source => - src}/operation/overlay/ElevationMatrix.cpp, {source => - src}/operation/overlay/ElevationMatrixCell.cpp, {source => - src}/operation/overlay/LineBuilder.cpp, {source => - src}/operation/overlay/Makefile.am, {source => - src}/operation/overlay/MaximalEdgeRing.cpp, {source => - src}/operation/overlay/MinimalEdgeRing.cpp, {source => - src}/operation/overlay/OverlayNodeFactory.cpp, {source => - src}/operation/overlay/OverlayOp.cpp, {source => - src}/operation/overlay/PointBuilder.cpp, {source => - src}/operation/overlay/PolygonBuilder.cpp, {source => - src}/operation/overlay/snap/GeometrySnapper.cpp, {source => - src}/operation/overlay/snap/LineStringSnapper.cpp, {source => - src}/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, {source => - src}/operation/overlay/snap/SnapOverlayOp.cpp, {source => - src}/operation/overlay/validate/FuzzyPointLocator.cpp, {source => - src}/operation/overlay/validate/OffsetPointGenerator.cpp, {source - => src}/operation/overlay/validate/OverlayResultValidator.cpp, - {source => src}/operation/polygonize/EdgeRing.cpp, {source => - src}/operation/polygonize/Makefile.am, {source => - src}/operation/polygonize/PolygonizeDirectedEdge.cpp, {source => - src}/operation/polygonize/PolygonizeEdge.cpp, {source => - src}/operation/polygonize/PolygonizeGraph.cpp, {source => - src}/operation/polygonize/Polygonizer.cpp, {source => - src}/operation/predicate/Makefile.am, {source => - src}/operation/predicate/RectangleContains.cpp, {source => - src}/operation/predicate/RectangleIntersects.cpp, {source => - src}/operation/predicate/SegmentIntersectionTester.cpp, {source => - src}/operation/relate/EdgeEndBuilder.cpp, {source => - src}/operation/relate/EdgeEndBundle.cpp, {source => - src}/operation/relate/EdgeEndBundleStar.cpp, {source => - src}/operation/relate/Makefile.am, {source => - src}/operation/relate/RelateComputer.cpp, {source => - src}/operation/relate/RelateNode.cpp, {source => - src}/operation/relate/RelateNodeFactory.cpp, {source => - src}/operation/relate/RelateNodeGraph.cpp, {source => - src}/operation/relate/RelateOp.cpp, {source => - src}/operation/union/CascadedPolygonUnion.cpp, {source => - src}/operation/union/Makefile.am, {source => - src}/operation/valid/ConnectedInteriorTester.cpp, {source => - src}/operation/valid/ConsistentAreaTester.cpp, {source => - src}/operation/valid/IndexedNestedRingTester.cpp, {source => - src}/operation/valid/IndexedNestedRingTester.h, {source => - src}/operation/valid/IsValidOp.cpp, {source => - src}/operation/valid/Makefile.am, {source => - src}/operation/valid/QuadtreeNestedRingTester.cpp, {source => - src}/operation/valid/RepeatedPointTester.cpp, {source => - src}/operation/valid/SimpleNestedRingTester.cpp, {source => - src}/operation/valid/SweeplineNestedRingTester.cpp, {source => - src}/operation/valid/TopologyValidationError.cpp, {source => - src}/planargraph/DirectedEdge.cpp, {source => - src}/planargraph/DirectedEdgeStar.cpp, {source => - src}/planargraph/Edge.cpp, {source => src}/planargraph/Makefile.am, - {source => src}/planargraph/Node.cpp, {source => - src}/planargraph/NodeMap.cpp, {source => - src}/planargraph/PlanarGraph.cpp, {source => - src}/planargraph/Subgraph.cpp, {source => - src}/planargraph/algorithm/ConnectedSubgraphFinder.cpp, {source => - src}/precision/CommonBits.cpp, {source => - src}/precision/CommonBitsOp.cpp, {source => - src}/precision/CommonBitsRemover.cpp, {source => - src}/precision/EnhancedPrecisionOp.cpp, {source => - src}/precision/Makefile.am, {source => - src}/precision/SimpleGeometryPrecisionReducer.cpp, {source => - src}/simplify/DouglasPeuckerLineSimplifier.cpp, {source => - src}/simplify/DouglasPeuckerSimplifier.cpp, {source => - src}/simplify/LineSegmentIndex.cpp, {source => - src}/simplify/Makefile.am, {source => - src}/simplify/TaggedLineSegment.cpp, {source => - src}/simplify/TaggedLineString.cpp, {source => - src}/simplify/TaggedLineStringSimplifier.cpp, {source => - src}/simplify/TaggedLinesSimplifier.cpp, {source => - src}/simplify/TopologyPreservingSimplifier.cpp, {source => - src}/util/Assert.cpp, {source => - src}/util/GeometricShapeFactory.cpp, {source => - src}/util/Makefile.am, {source => src}/util/Profiler.cpp, {source - => src}/util/math.cpp: Moved source directory to src (#315) - git-svn-id: http://svn.osgeo.org/geos/trunk@2838 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2010-01-12 Mateusz Loskot - - * {source/headers => include}/Makefile.am, {source/headers => - include}/acconfig.h, {source/headers => include}/geos.h, - {source/headers => include}/geos/Makefile.am, {source/headers => - include}/geos/algorithm/Angle.h, {source/headers => - include}/geos/algorithm/BoundaryNodeRule.h, {source/headers => - include}/geos/algorithm/CGAlgorithms.h, {source/headers => - include}/geos/algorithm/CentralEndpointIntersector.h, - {source/headers => include}/geos/algorithm/CentroidArea.h, - {source/headers => include}/geos/algorithm/CentroidLine.h, - {source/headers => include}/geos/algorithm/CentroidPoint.h, - {source/headers => include}/geos/algorithm/ConvexHull.h, - {source/headers => include}/geos/algorithm/ConvexHull.inl, - {source/headers => include}/geos/algorithm/HCoordinate.h, - {source/headers => include}/geos/algorithm/InteriorPointArea.h, - {source/headers => include}/geos/algorithm/InteriorPointLine.h, - {source/headers => include}/geos/algorithm/InteriorPointPoint.h, - {source/headers => include}/geos/algorithm/LineIntersector.h, - {source/headers => include}/geos/algorithm/MCPointInRing.h, - {source/headers => include}/geos/algorithm/Makefile.am, - {source/headers => include}/geos/algorithm/MinimumDiameter.h, - {source/headers => - include}/geos/algorithm/NotRepresentableException.h, - {source/headers => include}/geos/algorithm/PointInRing.h, - {source/headers => include}/geos/algorithm/PointLocator.h, - {source/headers => include}/geos/algorithm/RayCrossingCounter.h, - {source/headers => include}/geos/algorithm/RobustDeterminant.h, - {source/headers => include}/geos/algorithm/SIRtreePointInRing.h, - {source/headers => include}/geos/algorithm/SimplePointInRing.h, - {source/headers => - include}/geos/algorithm/distance/DiscreteHausdorffDistance.h, - {source/headers => - include}/geos/algorithm/distance/DistanceToPoint.h, {source/headers - => include}/geos/algorithm/distance/Makefile.am, {source/headers => - include}/geos/algorithm/distance/PointPairDistance.h, - {source/headers => - include}/geos/algorithm/locate/IndexedPointInAreaLocator.h, - {source/headers => include}/geos/algorithm/locate/Makefile.am, - {source/headers => - include}/geos/algorithm/locate/PointOnGeometryLocator.h, - {source/headers => - include}/geos/algorithm/locate/SimplePointInAreaLocator.h, - {source/headers => include}/geos/export.h, {source/headers => - include}/geos/geom.h, {source/headers => - include}/geos/geom/BinaryOp.h, {source/headers => - include}/geos/geom/Coordinate.h, {source/headers => - include}/geos/geom/Coordinate.inl, {source/headers => - include}/geos/geom/CoordinateArraySequence.h, {source/headers => - include}/geos/geom/CoordinateArraySequenceFactory.h, - {source/headers => - include}/geos/geom/CoordinateArraySequenceFactory.inl, - {source/headers => include}/geos/geom/CoordinateFilter.h, - {source/headers => include}/geos/geom/CoordinateList.h, - {source/headers => include}/geos/geom/CoordinateSequence.h, - {source/headers => include}/geos/geom/CoordinateSequenceFactory.h, - {source/headers => include}/geos/geom/CoordinateSequenceFilter.h, - {source/headers => include}/geos/geom/Dimension.h, {source/headers - => include}/geos/geom/Envelope.h, {source/headers => - include}/geos/geom/Envelope.inl, {source/headers => - include}/geos/geom/Geometry.h, {source/headers => - include}/geos/geom/Geometry.inl, {source/headers => - include}/geos/geom/GeometryCollection.h, {source/headers => - include}/geos/geom/GeometryCollection.inl, {source/headers => - include}/geos/geom/GeometryComponentFilter.h, {source/headers => - include}/geos/geom/GeometryFactory.h, {source/headers => - include}/geos/geom/GeometryFactory.inl, {source/headers => - include}/geos/geom/GeometryFilter.h, {source/headers => - include}/geos/geom/GeometryList.h, {source/headers => - include}/geos/geom/IntersectionMatrix.h, {source/headers => - include}/geos/geom/LineSegment.h, {source/headers => - include}/geos/geom/LineSegment.inl, {source/headers => - include}/geos/geom/LineString.h, {source/headers => - include}/geos/geom/LinearRing.h, {source/headers => - include}/geos/geom/Location.h, {source/headers => - include}/geos/geom/Makefile.am, {source/headers => - include}/geos/geom/MultiLineString.h, {source/headers => - include}/geos/geom/MultiLineString.inl, {source/headers => - include}/geos/geom/MultiPoint.h, {source/headers => - include}/geos/geom/MultiPolygon.h, {source/headers => - include}/geos/geom/MultiPolygon.inl, {source/headers => - include}/geos/geom/Point.h, {source/headers => - include}/geos/geom/Polygon.h, {source/headers => - include}/geos/geom/PrecisionModel.h, {source/headers => - include}/geos/geom/PrecisionModel.inl, {source/headers => - include}/geos/geom/Triangle.h, {source/headers => - include}/geos/geom/prep/AbstractPreparedPolygonContains.h, - {source/headers => include}/geos/geom/prep/BasicPreparedGeometry.h, - {source/headers => include}/geos/geom/prep/Makefile.am, - {source/headers => include}/geos/geom/prep/PreparedGeometry.h, - {source/headers => - include}/geos/geom/prep/PreparedGeometryFactory.h, {source/headers - => include}/geos/geom/prep/PreparedLineString.h, {source/headers => - include}/geos/geom/prep/PreparedLineStringIntersects.h, - {source/headers => include}/geos/geom/prep/PreparedPoint.h, - {source/headers => include}/geos/geom/prep/PreparedPolygon.h, - {source/headers => - include}/geos/geom/prep/PreparedPolygonContains.h, {source/headers - => include}/geos/geom/prep/PreparedPolygonContainsProperly.h, - {source/headers => include}/geos/geom/prep/PreparedPolygonCovers.h, - {source/headers => - include}/geos/geom/prep/PreparedPolygonIntersects.h, - {source/headers => - include}/geos/geom/prep/PreparedPolygonPredicate.h, {source/headers - => include}/geos/geom/util/ComponentCoordinateExtracter.h, - {source/headers => include}/geos/geom/util/CoordinateOperation.h, - {source/headers => include}/geos/geom/util/GeometryCombiner.h, - {source/headers => include}/geos/geom/util/GeometryEditor.h, - {source/headers => - include}/geos/geom/util/GeometryEditorOperation.h, {source/headers - => include}/geos/geom/util/GeometryTransformer.h, {source/headers - => include}/geos/geom/util/LinearComponentExtracter.h, - {source/headers => include}/geos/geom/util/Makefile.am, - {source/headers => include}/geos/geom/util/PointExtracter.h, - {source/headers => include}/geos/geom/util/PolygonExtracter.h, - {source/headers => - include}/geos/geom/util/ShortCircuitedGeometryVisitor.h, - {source/headers => include}/geos/geomPrep.h, {source/headers => - include}/geos/geomUtil.h, {source/headers => - include}/geos/geomgraph.h, {source/headers => - include}/geos/geomgraph/Depth.h, {source/headers => - include}/geos/geomgraph/DirectedEdge.h, {source/headers => - include}/geos/geomgraph/DirectedEdge.inl, {source/headers => - include}/geos/geomgraph/DirectedEdgeStar.h, {source/headers => - include}/geos/geomgraph/Edge.h, {source/headers => - include}/geos/geomgraph/EdgeEnd.h, {source/headers => - include}/geos/geomgraph/EdgeEndStar.h, {source/headers => - include}/geos/geomgraph/EdgeIntersection.h, {source/headers => - include}/geos/geomgraph/EdgeIntersectionList.h, {source/headers => - include}/geos/geomgraph/EdgeList.h, {source/headers => - include}/geos/geomgraph/EdgeNodingValidator.h, {source/headers => - include}/geos/geomgraph/EdgeRing.h, {source/headers => - include}/geos/geomgraph/GeometryGraph.h, {source/headers => - include}/geos/geomgraph/GeometryGraph.inl, {source/headers => - include}/geos/geomgraph/GraphComponent.h, {source/headers => - include}/geos/geomgraph/Label.h, {source/headers => - include}/geos/geomgraph/Makefile.am, {source/headers => - include}/geos/geomgraph/Node.h, {source/headers => - include}/geos/geomgraph/NodeFactory.h, {source/headers => - include}/geos/geomgraph/NodeMap.h, {source/headers => - include}/geos/geomgraph/PlanarGraph.h, {source/headers => - include}/geos/geomgraph/Position.h, {source/headers => - include}/geos/geomgraph/Quadrant.h, {source/headers => - include}/geos/geomgraph/TopologyLocation.h, {source/headers => - include}/geos/geomgraph/index/EdgeSetIntersector.h, {source/headers - => include}/geos/geomgraph/index/Makefile.am, {source/headers => - include}/geos/geomgraph/index/MonotoneChain.h, {source/headers => - include}/geos/geomgraph/index/MonotoneChainEdge.h, {source/headers - => include}/geos/geomgraph/index/MonotoneChainIndexer.h, - {source/headers => - include}/geos/geomgraph/index/SegmentIntersector.h, {source/headers - => include}/geos/geomgraph/index/SimpleEdgeSetIntersector.h, - {source/headers => - include}/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, - {source/headers => - include}/geos/geomgraph/index/SimpleSweepLineIntersector.h, - {source/headers => include}/geos/geomgraph/index/SweepLineEvent.h, - {source/headers => - include}/geos/geomgraph/index/SweepLineEventObj.h, {source/headers - => include}/geos/geomgraph/index/SweepLineSegment.h, - {source/headers => include}/geos/geomgraphindex.h, {source/headers - => include}/geos/geosAlgorithm.h, {source/headers => - include}/geos/index/ItemVisitor.h, {source/headers => - include}/geos/index/Makefile.am, {source/headers => - include}/geos/index/SpatialIndex.h, {source/headers => - include}/geos/index/bintree/Bintree.h, {source/headers => - include}/geos/index/bintree/Interval.h, {source/headers => - include}/geos/index/bintree/Key.h, {source/headers => - include}/geos/index/bintree/Makefile.am, {source/headers => - include}/geos/index/bintree/Node.h, {source/headers => - include}/geos/index/bintree/NodeBase.h, {source/headers => - include}/geos/index/bintree/Root.h, {source/headers => - include}/geos/index/chain/Makefile.am, {source/headers => - include}/geos/index/chain/MonotoneChain.h, {source/headers => - include}/geos/index/chain/MonotoneChainBuilder.h, {source/headers - => include}/geos/index/chain/MonotoneChainOverlapAction.h, - {source/headers => - include}/geos/index/chain/MonotoneChainSelectAction.h, - {source/headers => - include}/geos/index/intervalrtree/IntervalRTreeBranchNode.h, - {source/headers => - include}/geos/index/intervalrtree/IntervalRTreeLeafNode.h, - {source/headers => - include}/geos/index/intervalrtree/IntervalRTreeNode.h, - {source/headers => include}/geos/index/intervalrtree/Makefile.am, - {source/headers => - include}/geos/index/intervalrtree/SortedPackedIntervalRTree.h, - {source/headers => include}/geos/index/quadtree/DoubleBits.h, - {source/headers => include}/geos/index/quadtree/IntervalSize.h, - {source/headers => include}/geos/index/quadtree/Key.h, - {source/headers => include}/geos/index/quadtree/Makefile.am, - {source/headers => include}/geos/index/quadtree/Node.h, - {source/headers => include}/geos/index/quadtree/NodeBase.h, - {source/headers => include}/geos/index/quadtree/Quadtree.h, - {source/headers => include}/geos/index/quadtree/Root.h, - {source/headers => include}/geos/index/strtree/AbstractNode.h, - {source/headers => include}/geos/index/strtree/AbstractSTRtree.h, - {source/headers => include}/geos/index/strtree/Boundable.h, - {source/headers => include}/geos/index/strtree/Interval.h, - {source/headers => include}/geos/index/strtree/ItemBoundable.h, - {source/headers => include}/geos/index/strtree/Makefile.am, - {source/headers => include}/geos/index/strtree/SIRtree.h, - {source/headers => include}/geos/index/strtree/STRtree.h, - {source/headers => include}/geos/index/sweepline/Makefile.am, - {source/headers => include}/geos/index/sweepline/SweepLineEvent.h, - {source/headers => include}/geos/index/sweepline/SweepLineIndex.h, - {source/headers => - include}/geos/index/sweepline/SweepLineInterval.h, {source/headers - => include}/geos/index/sweepline/SweepLineOverlapAction.h, - {source/headers => include}/geos/indexBintree.h, {source/headers => - include}/geos/indexChain.h, {source/headers => - include}/geos/indexIntervalRTree.h, {source/headers => - include}/geos/indexQuadtree.h, {source/headers => - include}/geos/indexStrtree.h, {source/headers => - include}/geos/indexSweepline.h, {source/headers => - include}/geos/inline.h, {source/headers => include}/geos/io.h, - {source/headers => include}/geos/io/ByteOrderDataInStream.h, - {source/headers => include}/geos/io/ByteOrderDataInStream.inl, - {source/headers => include}/geos/io/ByteOrderValues.h, - {source/headers => include}/geos/io/CLocalizer.h, {source/headers - => include}/geos/io/Makefile.am, {source/headers => - include}/geos/io/ParseException.h, {source/headers => - include}/geos/io/StringTokenizer.h, {source/headers => - include}/geos/io/WKBConstants.h, {source/headers => - include}/geos/io/WKBReader.h, {source/headers => - include}/geos/io/WKBWriter.h, {source/headers => - include}/geos/io/WKTReader.h, {source/headers => - include}/geos/io/WKTReader.inl, {source/headers => - include}/geos/io/WKTWriter.h, {source/headers => - include}/geos/io/Writer.h, {source/headers => - include}/geos/linearref/ExtractLineByLocation.h, {source/headers => - include}/geos/linearref/LengthIndexOfPoint.h, {source/headers => - include}/geos/linearref/LengthIndexedLine.h, {source/headers => - include}/geos/linearref/LengthLocationMap.h, {source/headers => - include}/geos/linearref/LinearGeometryBuilder.h, {source/headers => - include}/geos/linearref/LinearIterator.h, {source/headers => - include}/geos/linearref/LinearLocation.h, {source/headers => - include}/geos/linearref/LocationIndexOfLine.h, {source/headers => - include}/geos/linearref/LocationIndexOfPoint.h, {source/headers => - include}/geos/linearref/Makefile.am, {source/headers => - include}/geos/noding.h, {source/headers => - include}/geos/noding/BasicSegmentString.h, {source/headers => - include}/geos/noding/FastNodingValidator.h, {source/headers => - include}/geos/noding/FastSegmentSetIntersectionFinder.h, - {source/headers => include}/geos/noding/IntersectionAdder.h, - {source/headers => include}/geos/noding/IntersectionFinderAdder.h, - {source/headers => include}/geos/noding/IteratedNoder.h, - {source/headers => include}/geos/noding/MCIndexNoder.h, - {source/headers => include}/geos/noding/MCIndexNoder.inl, - {source/headers => - include}/geos/noding/MCIndexSegmentSetMutualIntersector.h, - {source/headers => include}/geos/noding/Makefile.am, - {source/headers => include}/geos/noding/NodableSegmentString.h, - {source/headers => include}/geos/noding/NodedSegmentString.h, - {source/headers => include}/geos/noding/Noder.h, {source/headers => - include}/geos/noding/NodingValidator.h, {source/headers => - include}/geos/noding/Octant.h, {source/headers => - include}/geos/noding/OrientedCoordinateArray.h, {source/headers => - include}/geos/noding/ScaledNoder.h, {source/headers => - include}/geos/noding/SegmentIntersectionDetector.h, {source/headers - => include}/geos/noding/SegmentIntersector.h, {source/headers => - include}/geos/noding/SegmentNode.h, {source/headers => - include}/geos/noding/SegmentNodeList.h, {source/headers => - include}/geos/noding/SegmentSetMutualIntersector.h, {source/headers - => include}/geos/noding/SegmentString.h, {source/headers => - include}/geos/noding/SegmentString.inl, {source/headers => - include}/geos/noding/SegmentStringUtil.h, {source/headers => - include}/geos/noding/SimpleNoder.h, {source/headers => - include}/geos/noding/SingleInteriorIntersectionFinder.h, - {source/headers => include}/geos/noding/SinglePassNoder.h, - {source/headers => include}/geos/noding/snapround/HotPixel.h, - {source/headers => include}/geos/noding/snapround/HotPixel.inl, - {source/headers => - include}/geos/noding/snapround/MCIndexPointSnapper.h, - {source/headers => - include}/geos/noding/snapround/MCIndexSnapRounder.h, - {source/headers => - include}/geos/noding/snapround/MCIndexSnapRounder.inl, - {source/headers => include}/geos/noding/snapround/Makefile.am, - {source/headers => - include}/geos/noding/snapround/SimpleSnapRounder.h, {source/headers - => include}/geos/nodingSnapround.h, {source/headers => - include}/geos/opBuffer.h, {source/headers => - include}/geos/opDistance.h, {source/headers => - include}/geos/opLinemerge.h, {source/headers => - include}/geos/opOverlay.h, {source/headers => - include}/geos/opPolygonize.h, {source/headers => - include}/geos/opPredicate.h, {source/headers => - include}/geos/opRelate.h, {source/headers => - include}/geos/opValid.h, {source/headers => - include}/geos/operation.h, {source/headers => - include}/geos/operation/GeometryGraphOperation.h, {source/headers - => include}/geos/operation/IsSimpleOp.h, {source/headers => - include}/geos/operation/Makefile.am, {source/headers => - include}/geos/operation/buffer/BufferBuilder.h, {source/headers => - include}/geos/operation/buffer/BufferOp.h, {source/headers => - include}/geos/operation/buffer/BufferParameters.h, {source/headers - => include}/geos/operation/buffer/BufferSubgraph.h, {source/headers - => include}/geos/operation/buffer/Makefile.am, {source/headers => - include}/geos/operation/buffer/OffsetCurveBuilder.h, - {source/headers => - include}/geos/operation/buffer/OffsetCurveSetBuilder.h, - {source/headers => - include}/geos/operation/buffer/RightmostEdgeFinder.h, - {source/headers => - include}/geos/operation/buffer/SubgraphDepthLocater.h, - {source/headers => - include}/geos/operation/distance/ConnectedElementLocationFilter.h, - {source/headers => - include}/geos/operation/distance/ConnectedElementPointFilter.h, - {source/headers => include}/geos/operation/distance/DistanceOp.h, - {source/headers => - include}/geos/operation/distance/GeometryLocation.h, - {source/headers => include}/geos/operation/distance/Makefile.am, - {source/headers => include}/geos/operation/linemerge/EdgeString.h, - {source/headers => - include}/geos/operation/linemerge/LineMergeDirectedEdge.h, - {source/headers => - include}/geos/operation/linemerge/LineMergeEdge.h, {source/headers - => include}/geos/operation/linemerge/LineMergeGraph.h, - {source/headers => include}/geos/operation/linemerge/LineMerger.h, - {source/headers => - include}/geos/operation/linemerge/LineSequencer.h, {source/headers - => include}/geos/operation/linemerge/Makefile.am, {source/headers - => include}/geos/operation/overlay/EdgeSetNoder.h, {source/headers - => include}/geos/operation/overlay/ElevationMatrix.h, - {source/headers => - include}/geos/operation/overlay/ElevationMatrixCell.h, - {source/headers => include}/geos/operation/overlay/LineBuilder.h, - {source/headers => include}/geos/operation/overlay/Makefile.am, - {source/headers => - include}/geos/operation/overlay/MaximalEdgeRing.h, {source/headers - => include}/geos/operation/overlay/MinimalEdgeRing.h, - {source/headers => - include}/geos/operation/overlay/MinimalEdgeRing.inl, - {source/headers => - include}/geos/operation/overlay/OverlayNodeFactory.h, - {source/headers => include}/geos/operation/overlay/OverlayOp.h, - {source/headers => include}/geos/operation/overlay/PointBuilder.h, - {source/headers => - include}/geos/operation/overlay/PolygonBuilder.h, {source/headers - => include}/geos/operation/overlay/snap/GeometrySnapper.h, - {source/headers => - include}/geos/operation/overlay/snap/LineStringSnapper.h, - {source/headers => - include}/geos/operation/overlay/snap/Makefile.am, {source/headers - => include}/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, - {source/headers => - include}/geos/operation/overlay/snap/SnapOverlayOp.h, - {source/headers => - include}/geos/operation/overlay/validate/FuzzyPointLocator.h, - {source/headers => - include}/geos/operation/overlay/validate/OffsetPointGenerator.h, - {source/headers => - include}/geos/operation/overlay/validate/OverlayResultValidator.h, - {source/headers => include}/geos/operation/polygonize/EdgeRing.h, - {source/headers => include}/geos/operation/polygonize/Makefile.am, - {source/headers => - include}/geos/operation/polygonize/PolygonizeDirectedEdge.h, - {source/headers => - include}/geos/operation/polygonize/PolygonizeEdge.h, - {source/headers => - include}/geos/operation/polygonize/PolygonizeGraph.h, - {source/headers => - include}/geos/operation/polygonize/Polygonizer.h, {source/headers - => include}/geos/operation/predicate/Makefile.am, {source/headers - => include}/geos/operation/predicate/RectangleContains.h, - {source/headers => - include}/geos/operation/predicate/RectangleIntersects.h, - {source/headers => - include}/geos/operation/predicate/SegmentIntersectionTester.h, - {source/headers => include}/geos/operation/relate/EdgeEndBuilder.h, - {source/headers => include}/geos/operation/relate/EdgeEndBundle.h, - {source/headers => - include}/geos/operation/relate/EdgeEndBundleStar.h, {source/headers - => include}/geos/operation/relate/Makefile.am, {source/headers => - include}/geos/operation/relate/RelateComputer.h, {source/headers => - include}/geos/operation/relate/RelateNode.h, {source/headers => - include}/geos/operation/relate/RelateNodeFactory.h, {source/headers - => include}/geos/operation/relate/RelateNodeGraph.h, - {source/headers => include}/geos/operation/relate/RelateOp.h, - {source/headers => - include}/geos/operation/union/CascadedPolygonUnion.h, - {source/headers => include}/geos/operation/union/Makefile.am, - {source/headers => - include}/geos/operation/valid/ConnectedInteriorTester.h, - {source/headers => - include}/geos/operation/valid/ConsistentAreaTester.h, - {source/headers => include}/geos/operation/valid/IsValidOp.h, - {source/headers => include}/geos/operation/valid/Makefile.am, - {source/headers => - include}/geos/operation/valid/QuadtreeNestedRingTester.h, - {source/headers => - include}/geos/operation/valid/RepeatedPointTester.h, - {source/headers => - include}/geos/operation/valid/SimpleNestedRingTester.h, - {source/headers => - include}/geos/operation/valid/SweeplineNestedRingTester.h, - {source/headers => - include}/geos/operation/valid/TopologyValidationError.h, - {source/headers => include}/geos/planargraph.h, {source/headers => - include}/geos/planargraph/DirectedEdge.h, {source/headers => - include}/geos/planargraph/DirectedEdgeStar.h, {source/headers => - include}/geos/planargraph/Edge.h, {source/headers => - include}/geos/planargraph/GraphComponent.h, {source/headers => - include}/geos/planargraph/Makefile.am, {source/headers => - include}/geos/planargraph/Node.h, {source/headers => - include}/geos/planargraph/NodeMap.h, {source/headers => - include}/geos/planargraph/PlanarGraph.h, {source/headers => - include}/geos/planargraph/Subgraph.h, {source/headers => - include}/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, - {source/headers => include}/geos/planargraph/algorithm/Makefile.am, - {source/headers => include}/geos/platform.h.in, {source/headers => - include}/geos/platform.h.vc, {source/headers => - include}/geos/precision.h, {source/headers => - include}/geos/precision/CommonBits.h, {source/headers => - include}/geos/precision/CommonBitsOp.h, {source/headers => - include}/geos/precision/CommonBitsRemover.h, {source/headers => - include}/geos/precision/EnhancedPrecisionOp.h, {source/headers => - include}/geos/precision/Makefile.am, {source/headers => - include}/geos/precision/SimpleGeometryPrecisionReducer.h, - {source/headers => include}/geos/profiler.h, {source/headers => - include}/geos/simplify/DouglasPeuckerLineSimplifier.h, - {source/headers => - include}/geos/simplify/DouglasPeuckerSimplifier.h, {source/headers - => include}/geos/simplify/LineSegmentIndex.h, {source/headers => - include}/geos/simplify/Makefile.am, {source/headers => - include}/geos/simplify/TaggedLineSegment.h, {source/headers => - include}/geos/simplify/TaggedLineString.h, {source/headers => - include}/geos/simplify/TaggedLineStringSimplifier.h, - {source/headers => include}/geos/simplify/TaggedLinesSimplifier.h, - {source/headers => - include}/geos/simplify/TopologyPreservingSimplifier.h, - {source/headers => include}/geos/spatialIndex.h, {source/headers => - include}/geos/timeval.h, {source/headers => include}/geos/unload.h, - {source/headers => include}/geos/util.h, {source/headers => - include}/geos/util/Assert.h, {source/headers => - include}/geos/util/AssertionFailedException.h, {source/headers => - include}/geos/util/CoordinateArrayFilter.h, {source/headers => - include}/geos/util/GEOSException.h, {source/headers => - include}/geos/util/GeometricShapeFactory.h, {source/headers => - include}/geos/util/IllegalArgumentException.h, {source/headers => - include}/geos/util/Makefile.am, {source/headers => - include}/geos/util/TopologyException.h, {source/headers => - include}/geos/util/UniqueCoordinateArrayFilter.h, {source/headers - => include}/geos/util/UnsupportedOperationException.h, - {source/headers => include}/geos/util/math.h, {source/headers => - include}/geos/version.h.in, {source/headers => - include}/geos/version.h.vc: Moved source/headers directory to - include (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2837 + include/geos/precision/SimpleGeometryPrecisionReducer.h, + include/geos/profiler.h, + include/geos/simplify/DouglasPeuckerLineSimplifier.h, + include/geos/simplify/DouglasPeuckerSimplifier.h, + include/geos/simplify/LineSegmentIndex.h, + include/geos/simplify/Makefile.am, + include/geos/simplify/TaggedLineSegment.h, + include/geos/simplify/TaggedLineString.h, + include/geos/simplify/TaggedLineStringSimplifier.h, + include/geos/simplify/TaggedLinesSimplifier.h, + include/geos/simplify/TopologyPreservingSimplifier.h, + include/geos/spatialIndex.h, include/geos/timeval.h, + include/geos/unload.h, include/geos/util.h, + include/geos/util/Assert.h, + include/geos/util/AssertionFailedException.h, + include/geos/util/CoordinateArrayFilter.h, + include/geos/util/GEOSException.h, + include/geos/util/GeometricShapeFactory.h, + include/geos/util/IllegalArgumentException.h, + include/geos/util/Makefile.am, + include/geos/util/TopologyException.h, + include/geos/util/UniqueCoordinateArrayFilter.h, + include/geos/util/UnsupportedOperationException.h, + include/geos/util/math.h, include/geos/version.h.in, + include/geos/version.h.vc, source/headers/Makefile.am, + source/headers/acconfig.h, source/headers/geos.h, + source/headers/geos/Makefile.am, + source/headers/geos/algorithm/Angle.h, + source/headers/geos/algorithm/BoundaryNodeRule.h, + source/headers/geos/algorithm/CGAlgorithms.h, + source/headers/geos/algorithm/CentralEndpointIntersector.h, + source/headers/geos/algorithm/CentroidArea.h, + source/headers/geos/algorithm/CentroidLine.h, + source/headers/geos/algorithm/CentroidPoint.h, + source/headers/geos/algorithm/ConvexHull.h, + source/headers/geos/algorithm/ConvexHull.inl, + source/headers/geos/algorithm/HCoordinate.h, + source/headers/geos/algorithm/InteriorPointArea.h, + source/headers/geos/algorithm/InteriorPointLine.h, + source/headers/geos/algorithm/InteriorPointPoint.h, + source/headers/geos/algorithm/LineIntersector.h, + source/headers/geos/algorithm/MCPointInRing.h, + source/headers/geos/algorithm/Makefile.am, + source/headers/geos/algorithm/MinimumDiameter.h, + source/headers/geos/algorithm/NotRepresentableException.h, + source/headers/geos/algorithm/PointInRing.h, + source/headers/geos/algorithm/PointLocator.h, + source/headers/geos/algorithm/RayCrossingCounter.h, + source/headers/geos/algorithm/RobustDeterminant.h, + source/headers/geos/algorithm/SIRtreePointInRing.h, + source/headers/geos/algorithm/SimplePointInRing.h, + source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h, + source/headers/geos/algorithm/distance/DistanceToPoint.h, + source/headers/geos/algorithm/distance/Makefile.am, + source/headers/geos/algorithm/distance/PointPairDistance.h, + source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h, + source/headers/geos/algorithm/locate/Makefile.am, + source/headers/geos/algorithm/locate/PointOnGeometryLocator.h, + source/headers/geos/algorithm/locate/SimplePointInAreaLocator.h, + source/headers/geos/export.h, source/headers/geos/geom.h, + source/headers/geos/geom/BinaryOp.h, + source/headers/geos/geom/Coordinate.h, + source/headers/geos/geom/Coordinate.inl, + source/headers/geos/geom/CoordinateArraySequence.h, + source/headers/geos/geom/CoordinateArraySequenceFactory.h, + source/headers/geos/geom/CoordinateArraySequenceFactory.inl, + source/headers/geos/geom/CoordinateFilter.h, + source/headers/geos/geom/CoordinateList.h, + source/headers/geos/geom/CoordinateSequence.h, + source/headers/geos/geom/CoordinateSequenceFactory.h, + source/headers/geos/geom/CoordinateSequenceFilter.h, + source/headers/geos/geom/Dimension.h, + source/headers/geos/geom/Envelope.h, + source/headers/geos/geom/Envelope.inl, + source/headers/geos/geom/Geometry.h, + source/headers/geos/geom/Geometry.inl, + source/headers/geos/geom/GeometryCollection.h, + source/headers/geos/geom/GeometryCollection.inl, + source/headers/geos/geom/GeometryComponentFilter.h, + source/headers/geos/geom/GeometryFactory.h, + source/headers/geos/geom/GeometryFactory.inl, + source/headers/geos/geom/GeometryFilter.h, + source/headers/geos/geom/GeometryList.h, + source/headers/geos/geom/IntersectionMatrix.h, + source/headers/geos/geom/LineSegment.h, + source/headers/geos/geom/LineSegment.inl, + source/headers/geos/geom/LineString.h, + source/headers/geos/geom/LinearRing.h, + source/headers/geos/geom/Location.h, + source/headers/geos/geom/Makefile.am, + source/headers/geos/geom/MultiLineString.h, + source/headers/geos/geom/MultiLineString.inl, + source/headers/geos/geom/MultiPoint.h, + source/headers/geos/geom/MultiPolygon.h, + source/headers/geos/geom/MultiPolygon.inl, + source/headers/geos/geom/Point.h, + source/headers/geos/geom/Polygon.h, + source/headers/geos/geom/PrecisionModel.h, + source/headers/geos/geom/PrecisionModel.inl, + source/headers/geos/geom/Triangle.h, + source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h, + source/headers/geos/geom/prep/BasicPreparedGeometry.h, + source/headers/geos/geom/prep/Makefile.am, + source/headers/geos/geom/prep/PreparedGeometry.h, + source/headers/geos/geom/prep/PreparedGeometryFactory.h, + source/headers/geos/geom/prep/PreparedLineString.h, + source/headers/geos/geom/prep/PreparedLineStringIntersects.h, + source/headers/geos/geom/prep/PreparedPoint.h, + source/headers/geos/geom/prep/PreparedPolygon.h, + source/headers/geos/geom/prep/PreparedPolygonContains.h, + source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h, + source/headers/geos/geom/prep/PreparedPolygonCovers.h, + source/headers/geos/geom/prep/PreparedPolygonIntersects.h, + source/headers/geos/geom/prep/PreparedPolygonPredicate.h, + source/headers/geos/geom/util/ComponentCoordinateExtracter.h, + source/headers/geos/geom/util/CoordinateOperation.h, + source/headers/geos/geom/util/GeometryCombiner.h, + source/headers/geos/geom/util/GeometryEditor.h, + source/headers/geos/geom/util/GeometryEditorOperation.h, + source/headers/geos/geom/util/GeometryTransformer.h, + source/headers/geos/geom/util/LinearComponentExtracter.h, + source/headers/geos/geom/util/Makefile.am, + source/headers/geos/geom/util/PointExtracter.h, + source/headers/geos/geom/util/PolygonExtracter.h, + source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h, + source/headers/geos/geomPrep.h, source/headers/geos/geomUtil.h, + source/headers/geos/geomgraph.h, + source/headers/geos/geomgraph/Depth.h, + source/headers/geos/geomgraph/DirectedEdge.h, + source/headers/geos/geomgraph/DirectedEdge.inl, + source/headers/geos/geomgraph/DirectedEdgeStar.h, + source/headers/geos/geomgraph/Edge.h, + source/headers/geos/geomgraph/EdgeEnd.h, + source/headers/geos/geomgraph/EdgeEndStar.h, + source/headers/geos/geomgraph/EdgeIntersection.h, + source/headers/geos/geomgraph/EdgeIntersectionList.h, + source/headers/geos/geomgraph/EdgeList.h, + source/headers/geos/geomgraph/EdgeNodingValidator.h, + source/headers/geos/geomgraph/EdgeRing.h, + source/headers/geos/geomgraph/GeometryGraph.h, + source/headers/geos/geomgraph/GeometryGraph.inl, + source/headers/geos/geomgraph/GraphComponent.h, + source/headers/geos/geomgraph/Label.h, + source/headers/geos/geomgraph/Makefile.am, + source/headers/geos/geomgraph/Node.h, + source/headers/geos/geomgraph/NodeFactory.h, + source/headers/geos/geomgraph/NodeMap.h, + source/headers/geos/geomgraph/PlanarGraph.h, + source/headers/geos/geomgraph/Position.h, + source/headers/geos/geomgraph/Quadrant.h, + source/headers/geos/geomgraph/TopologyLocation.h, + source/headers/geos/geomgraph/index/EdgeSetIntersector.h, + source/headers/geos/geomgraph/index/Makefile.am, + source/headers/geos/geomgraph/index/MonotoneChain.h, + source/headers/geos/geomgraph/index/MonotoneChainEdge.h, + source/headers/geos/geomgraph/index/MonotoneChainIndexer.h, + source/headers/geos/geomgraph/index/SegmentIntersector.h, + source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h, + source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, + source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h, + source/headers/geos/geomgraph/index/SweepLineEvent.h, + source/headers/geos/geomgraph/index/SweepLineEventObj.h, + source/headers/geos/geomgraph/index/SweepLineSegment.h, + source/headers/geos/geomgraphindex.h, + source/headers/geos/geosAlgorithm.h, + source/headers/geos/index/ItemVisitor.h, + source/headers/geos/index/Makefile.am, + source/headers/geos/index/SpatialIndex.h, + source/headers/geos/index/bintree/Bintree.h, + source/headers/geos/index/bintree/Interval.h, + source/headers/geos/index/bintree/Key.h, + source/headers/geos/index/bintree/Makefile.am, + source/headers/geos/index/bintree/Node.h, + source/headers/geos/index/bintree/NodeBase.h, + source/headers/geos/index/bintree/Root.h, + source/headers/geos/index/chain/Makefile.am, + source/headers/geos/index/chain/MonotoneChain.h, + source/headers/geos/index/chain/MonotoneChainBuilder.h, + source/headers/geos/index/chain/MonotoneChainOverlapAction.h, + source/headers/geos/index/chain/MonotoneChainSelectAction.h, + source/headers/geos/index/intervalrtree/IntervalRTreeBranchNode.h, + source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h, + source/headers/geos/index/intervalrtree/IntervalRTreeNode.h, + source/headers/geos/index/intervalrtree/Makefile.am, + source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h + , source/headers/geos/index/quadtree/DoubleBits.h, + source/headers/geos/index/quadtree/IntervalSize.h, + source/headers/geos/index/quadtree/Key.h, + source/headers/geos/index/quadtree/Makefile.am, + source/headers/geos/index/quadtree/Node.h, + source/headers/geos/index/quadtree/NodeBase.h, + source/headers/geos/index/quadtree/Quadtree.h, + source/headers/geos/index/quadtree/Root.h, + source/headers/geos/index/strtree/AbstractNode.h, + source/headers/geos/index/strtree/AbstractSTRtree.h, + source/headers/geos/index/strtree/Boundable.h, + source/headers/geos/index/strtree/Interval.h, + source/headers/geos/index/strtree/ItemBoundable.h, + source/headers/geos/index/strtree/Makefile.am, + source/headers/geos/index/strtree/SIRtree.h, + source/headers/geos/index/strtree/STRtree.h, + source/headers/geos/index/sweepline/Makefile.am, + source/headers/geos/index/sweepline/SweepLineEvent.h, + source/headers/geos/index/sweepline/SweepLineIndex.h, + source/headers/geos/index/sweepline/SweepLineInterval.h, + source/headers/geos/index/sweepline/SweepLineOverlapAction.h, + source/headers/geos/indexBintree.h, + source/headers/geos/indexChain.h, + source/headers/geos/indexIntervalRTree.h, + source/headers/geos/indexQuadtree.h, + source/headers/geos/indexStrtree.h, + source/headers/geos/indexSweepline.h, source/headers/geos/inline.h, + source/headers/geos/io.h, + source/headers/geos/io/ByteOrderDataInStream.h, + source/headers/geos/io/ByteOrderDataInStream.inl, + source/headers/geos/io/ByteOrderValues.h, + source/headers/geos/io/CLocalizer.h, + source/headers/geos/io/Makefile.am, + source/headers/geos/io/ParseException.h, + source/headers/geos/io/StringTokenizer.h, + source/headers/geos/io/WKBConstants.h, + source/headers/geos/io/WKBReader.h, + source/headers/geos/io/WKBWriter.h, + source/headers/geos/io/WKTReader.h, + source/headers/geos/io/WKTReader.inl, + source/headers/geos/io/WKTWriter.h, + source/headers/geos/io/Writer.h, + source/headers/geos/linearref/ExtractLineByLocation.h, + source/headers/geos/linearref/LengthIndexOfPoint.h, + source/headers/geos/linearref/LengthIndexedLine.h, + source/headers/geos/linearref/LengthLocationMap.h, + source/headers/geos/linearref/LinearGeometryBuilder.h, + source/headers/geos/linearref/LinearIterator.h, + source/headers/geos/linearref/LinearLocation.h, + source/headers/geos/linearref/LocationIndexOfLine.h, + source/headers/geos/linearref/LocationIndexOfPoint.h, + source/headers/geos/linearref/Makefile.am, + source/headers/geos/noding.h, + source/headers/geos/noding/BasicSegmentString.h, + source/headers/geos/noding/FastNodingValidator.h, + source/headers/geos/noding/FastSegmentSetIntersectionFinder.h, + source/headers/geos/noding/IntersectionAdder.h, + source/headers/geos/noding/IntersectionFinderAdder.h, + source/headers/geos/noding/IteratedNoder.h, + source/headers/geos/noding/MCIndexNoder.h, + source/headers/geos/noding/MCIndexNoder.inl, + source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, + source/headers/geos/noding/Makefile.am, + source/headers/geos/noding/NodableSegmentString.h, + source/headers/geos/noding/NodedSegmentString.h, + source/headers/geos/noding/Noder.h, + source/headers/geos/noding/NodingValidator.h, + source/headers/geos/noding/Octant.h, + source/headers/geos/noding/OrientedCoordinateArray.h, + source/headers/geos/noding/ScaledNoder.h, + source/headers/geos/noding/SegmentIntersectionDetector.h, + source/headers/geos/noding/SegmentIntersector.h, + source/headers/geos/noding/SegmentNode.h, + source/headers/geos/noding/SegmentNodeList.h, + source/headers/geos/noding/SegmentSetMutualIntersector.h, + source/headers/geos/noding/SegmentString.h, + source/headers/geos/noding/SegmentString.inl, + source/headers/geos/noding/SegmentStringUtil.h, + source/headers/geos/noding/SimpleNoder.h, + source/headers/geos/noding/SingleInteriorIntersectionFinder.h, + source/headers/geos/noding/SinglePassNoder.h, + source/headers/geos/noding/snapround/HotPixel.h, + source/headers/geos/noding/snapround/HotPixel.inl, + source/headers/geos/noding/snapround/MCIndexPointSnapper.h, + source/headers/geos/noding/snapround/MCIndexSnapRounder.h, + source/headers/geos/noding/snapround/MCIndexSnapRounder.inl, + source/headers/geos/noding/snapround/Makefile.am, + source/headers/geos/noding/snapround/SimpleSnapRounder.h, + source/headers/geos/nodingSnapround.h, + source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, + source/headers/geos/opLinemerge.h, source/headers/geos/opOverlay.h, + source/headers/geos/opPolygonize.h, + source/headers/geos/opPredicate.h, source/headers/geos/opRelate.h, + source/headers/geos/opValid.h, source/headers/geos/operation.h, + source/headers/geos/operation/GeometryGraphOperation.h, + source/headers/geos/operation/IsSimpleOp.h, + source/headers/geos/operation/Makefile.am, + source/headers/geos/operation/buffer/BufferBuilder.h, + source/headers/geos/operation/buffer/BufferOp.h, + source/headers/geos/operation/buffer/BufferParameters.h, + source/headers/geos/operation/buffer/BufferSubgraph.h, + source/headers/geos/operation/buffer/Makefile.am, + source/headers/geos/operation/buffer/OffsetCurveBuilder.h, + source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h, + source/headers/geos/operation/buffer/RightmostEdgeFinder.h, + source/headers/geos/operation/buffer/SubgraphDepthLocater.h, + source/headers/geos/operation/distance/ConnectedElementLocationFilt + er.h, + source/headers/geos/operation/distance/ConnectedElementPointFilter. + h, source/headers/geos/operation/distance/DistanceOp.h, + source/headers/geos/operation/distance/GeometryLocation.h, + source/headers/geos/operation/distance/Makefile.am, + source/headers/geos/operation/linemerge/EdgeString.h, + source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h, + source/headers/geos/operation/linemerge/LineMergeEdge.h, + source/headers/geos/operation/linemerge/LineMergeGraph.h, + source/headers/geos/operation/linemerge/LineMerger.h, + source/headers/geos/operation/linemerge/LineSequencer.h, + source/headers/geos/operation/linemerge/Makefile.am, + source/headers/geos/operation/overlay/EdgeSetNoder.h, + source/headers/geos/operation/overlay/ElevationMatrix.h, + source/headers/geos/operation/overlay/ElevationMatrixCell.h, + source/headers/geos/operation/overlay/LineBuilder.h, + source/headers/geos/operation/overlay/Makefile.am, + source/headers/geos/operation/overlay/MaximalEdgeRing.h, + source/headers/geos/operation/overlay/MinimalEdgeRing.h, + source/headers/geos/operation/overlay/MinimalEdgeRing.inl, + source/headers/geos/operation/overlay/OverlayNodeFactory.h, + source/headers/geos/operation/overlay/OverlayOp.h, + source/headers/geos/operation/overlay/PointBuilder.h, + source/headers/geos/operation/overlay/PolygonBuilder.h, + source/headers/geos/operation/overlay/snap/GeometrySnapper.h, + source/headers/geos/operation/overlay/snap/LineStringSnapper.h, + source/headers/geos/operation/overlay/snap/Makefile.am, + source/headers/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h, + source/headers/geos/operation/overlay/snap/SnapOverlayOp.h, + source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h, + source/headers/geos/operation/overlay/validate/OffsetPointGenerator + .h, + source/headers/geos/operation/overlay/validate/OverlayResultValidat + or.h, source/headers/geos/operation/polygonize/EdgeRing.h, + source/headers/geos/operation/polygonize/Makefile.am, + source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h, + source/headers/geos/operation/polygonize/PolygonizeEdge.h, + source/headers/geos/operation/polygonize/PolygonizeGraph.h, + source/headers/geos/operation/polygonize/Polygonizer.h, + source/headers/geos/operation/predicate/Makefile.am, + source/headers/geos/operation/predicate/RectangleContains.h, + source/headers/geos/operation/predicate/RectangleIntersects.h, + source/headers/geos/operation/predicate/SegmentIntersectionTester.h + , source/headers/geos/operation/relate/EdgeEndBuilder.h, + source/headers/geos/operation/relate/EdgeEndBundle.h, + source/headers/geos/operation/relate/EdgeEndBundleStar.h, + source/headers/geos/operation/relate/Makefile.am, + source/headers/geos/operation/relate/RelateComputer.h, + source/headers/geos/operation/relate/RelateNode.h, + source/headers/geos/operation/relate/RelateNodeFactory.h, + source/headers/geos/operation/relate/RelateNodeGraph.h, + source/headers/geos/operation/relate/RelateOp.h, + source/headers/geos/operation/union/CascadedPolygonUnion.h, + source/headers/geos/operation/union/Makefile.am, + source/headers/geos/operation/valid/ConnectedInteriorTester.h, + source/headers/geos/operation/valid/ConsistentAreaTester.h, + source/headers/geos/operation/valid/IsValidOp.h, + source/headers/geos/operation/valid/Makefile.am, + source/headers/geos/operation/valid/QuadtreeNestedRingTester.h, + source/headers/geos/operation/valid/RepeatedPointTester.h, + source/headers/geos/operation/valid/SimpleNestedRingTester.h, + source/headers/geos/operation/valid/SweeplineNestedRingTester.h, + source/headers/geos/operation/valid/TopologyValidationError.h, + source/headers/geos/planargraph.h, + source/headers/geos/planargraph/DirectedEdge.h, + source/headers/geos/planargraph/DirectedEdgeStar.h, + source/headers/geos/planargraph/Edge.h, + source/headers/geos/planargraph/GraphComponent.h, + source/headers/geos/planargraph/Makefile.am, + source/headers/geos/planargraph/Node.h, + source/headers/geos/planargraph/NodeMap.h, + source/headers/geos/planargraph/PlanarGraph.h, + source/headers/geos/planargraph/Subgraph.h, + source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h + , source/headers/geos/planargraph/algorithm/Makefile.am, + source/headers/geos/platform.h.in, + source/headers/geos/platform.h.vc, source/headers/geos/precision.h, + source/headers/geos/precision/CommonBits.h, + source/headers/geos/precision/CommonBitsOp.h, + source/headers/geos/precision/CommonBitsRemover.h, + source/headers/geos/precision/EnhancedPrecisionOp.h, + source/headers/geos/precision/Makefile.am, + source/headers/geos/precision/SimpleGeometryPrecisionReducer.h, + source/headers/geos/profiler.h, + source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h, + source/headers/geos/simplify/DouglasPeuckerSimplifier.h, + source/headers/geos/simplify/LineSegmentIndex.h, + source/headers/geos/simplify/Makefile.am, + source/headers/geos/simplify/TaggedLineSegment.h, + source/headers/geos/simplify/TaggedLineString.h, + source/headers/geos/simplify/TaggedLineStringSimplifier.h, + source/headers/geos/simplify/TaggedLinesSimplifier.h, + source/headers/geos/simplify/TopologyPreservingSimplifier.h, + source/headers/geos/spatialIndex.h, source/headers/geos/timeval.h, + source/headers/geos/unload.h, source/headers/geos/util.h, + source/headers/geos/util/Assert.h, + source/headers/geos/util/AssertionFailedException.h, + source/headers/geos/util/CoordinateArrayFilter.h, + source/headers/geos/util/GEOSException.h, + source/headers/geos/util/GeometricShapeFactory.h, + source/headers/geos/util/IllegalArgumentException.h, + source/headers/geos/util/Makefile.am, + source/headers/geos/util/TopologyException.h, + source/headers/geos/util/UniqueCoordinateArrayFilter.h, + source/headers/geos/util/UnsupportedOperationException.h, + source/headers/geos/util/math.h, source/headers/geos/version.h.in, + source/headers/geos/version.h.vc: Moved source/headers directory to + include (#315) git-svn-id: http://svn.osgeo.org/geos/trunk@2837 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-23 Mateusz Loskot * tests/xmltester/tinyxml/tinyxml.cpp: Removed GNU specific printf - formatter git-svn-id: http://svn.osgeo.org/geos/trunk@2835 + formatter git-svn-id: http://svn.osgeo.org/geos/trunk@2835 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-22 Mateusz Loskot * source/headers/geos/export.h: Fixed compiler warning about extra - tokens at end of #endif directive in export.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2834 + tokens at end of #endif directive in export.h git-svn-id: http://svn.osgeo.org/geos/trunk@2834 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-15 Mateusz Loskot * source/Makefile.vc: Fixed missing CoordinateSequenceFactory.cpp - from makefile.vc (Ticket #313) git-svn-id: - http://svn.osgeo.org/geos/trunk@2833 + from makefile.vc (Ticket #313) git-svn-id: http://svn.osgeo.org/geos/trunk@2833 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-15 Mateusz Loskot * source/geom/PrecisionModel.cpp, source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/PrecisionModel.inl: * Assert precision model scale must never be negative * Replaced use - of operator== against float-point number with operator<= * Typos - git-svn-id: http://svn.osgeo.org/geos/trunk@2832 + source/headers/geos/geom/PrecisionModel.inl: * Assert precision model scale must never be negative * Replaced use of operator== against float-point number with + operator<= * Typos git-svn-id: http://svn.osgeo.org/geos/trunk@2832 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-15 Mateusz Loskot * source/io/WKTWriter.cpp: In WKTWriter, initialise formatting - buffer and avoid unnecessary calls to string constructor. - git-svn-id: http://svn.osgeo.org/geos/trunk@2831 + buffer and avoid unnecessary calls to string constructor. git-svn-id: http://svn.osgeo.org/geos/trunk@2831 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-14 Paul Ramsey * capi/geos_c.h.in, configure.in, source/headers/geos/version.h.vc: - Update version numbers on trunk to 3.3 series git-svn-id: - http://svn.osgeo.org/geos/trunk@2828 + Update version numbers on trunk to 3.3 series git-svn-id: http://svn.osgeo.org/geos/trunk@2828 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-14 Sandro Santilli - * ChangeLog: Updated git-svn-id: - http://svn.osgeo.org/geos/trunk@2826 + * ChangeLog: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@2826 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-14 Sandro Santilli * source/headers/geos/geom.h: Don't mention 'troubles' in - documentation (some like it not) git-svn-id: - http://svn.osgeo.org/geos/trunk@2825 + documentation (some like it not) git-svn-id: http://svn.osgeo.org/geos/trunk@2825 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-14 Mateusz Loskot * source/headers/geos/util/TopologyException.h, source/io/WKTWriter.cpp: * Fixed bug in WKTWriter that was dropping geometry tag in string - representation of geometry * Improved message carried by - TopologyException git-svn-id: http://svn.osgeo.org/geos/trunk@2824 + representation of geometry * Improved message carried by TopologyException git-svn-id: http://svn.osgeo.org/geos/trunk@2824 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-11 Sandro Santilli - * ChangeLog: Updated git-svn-id: - http://svn.osgeo.org/geos/trunk@2823 + * ChangeLog: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@2823 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-11 Sandro Santilli * source/geom/prep/BasicPreparedGeometry.cpp: Fix memory leak in BasicPreparedGeometry::isAnyTargetComponentInTest (issue #308) and - drop Coordinate copies from it. git-svn-id: - http://svn.osgeo.org/geos/trunk@2822 + drop Coordinate copies from it. git-svn-id: http://svn.osgeo.org/geos/trunk@2822 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-09 Mateusz Loskot * build/msvc10/geos_lib/geos_lib.vcxproj: Fixed generation of - platform.h as pre-build step of GEOS lib project for Visual C++ - git-svn-id: http://svn.osgeo.org/geos/trunk@2821 + platform.h as pre-build step of GEOS lib project for Visual C++ git-svn-id: http://svn.osgeo.org/geos/trunk@2821 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-09 Mateusz Loskot * build/msvc80/geos_lib/geos_lib.vcproj, build/msvc90/geos_lib/geos_lib.vcproj: * Fixed generation of platform.h as pre-build step of GEOS lib - project for Visual C++ 2005 and 2008 * Added missing headers. - git-svn-id: http://svn.osgeo.org/geos/trunk@2820 + project for Visual C++ 2005 and 2008 * Added missing headers. git-svn-id: http://svn.osgeo.org/geos/trunk@2820 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Paul Ramsey - * ChangeLog, INSTALL, configure.in: Prepare for RC4 release. - git-svn-id: http://svn.osgeo.org/geos/trunk@2817 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-12-08 Mateusz Loskot - - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@2816 + * ChangeLog, INSTALL, configure.in: Prepare for RC4 release. git-svn-id: http://svn.osgeo.org/geos/trunk@2817 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Mateusz Loskot - * build/msvc10/Makefile.am: build/msvc10: fixed list of EXTRA_DIST - files git-svn-id: http://svn.osgeo.org/geos/trunk@2815 + * : Updated svn:ignore patterns git-svn-id: http://svn.osgeo.org/geos/trunk@2816 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Sandro Santilli * tests/geostest/.deps/geostest.Po: This shouldn't be in the - repository ! git-svn-id: http://svn.osgeo.org/geos/trunk@2814 + repository ! git-svn-id: http://svn.osgeo.org/geos/trunk@2814 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Sandro Santilli * source/algorithm/NonRobustLineIntersector.cpp, source/algorithm/RobustLineIntersector.cpp: Remove deprecated/unused - files git-svn-id: http://svn.osgeo.org/geos/trunk@2813 + files git-svn-id: http://svn.osgeo.org/geos/trunk@2813 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Sandro Santilli * source/headers/geos/geom/prep/PreparedLineStringIntersects.h: Drop useless (and leaking) heap allocation exposed by the new prepared - linestring intersection test git-svn-id: - http://svn.osgeo.org/geos/trunk@2812 + linestring intersection test git-svn-id: http://svn.osgeo.org/geos/trunk@2812 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Sandro Santilli * source/geom/prep/PreparedLineString.cpp, source/headers/geos/geom/prep/PreparedLineString.h: Add missing - destructor of PreparedLineString (closes ticket #305) git-svn-id: - http://svn.osgeo.org/geos/trunk@2811 + destructor of PreparedLineString (closes ticket #305) git-svn-id: http://svn.osgeo.org/geos/trunk@2811 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-08 Sandro Santilli * tests/unit/capi/GEOSPreparedGeometryTest.cpp: Add test with Prepared linestrings, for the sake of testing the leak reported in - ticket #305 git-svn-id: http://svn.osgeo.org/geos/trunk@2810 + ticket #305 git-svn-id: http://svn.osgeo.org/geos/trunk@2810 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-06 Mateusz Loskot @@ -15504,48 +19985,39 @@ source/linearref/LocationIndexOfPoint.cpp, tests/geostest/geostest.c, tests/thread/badthreadtest.c, tests/thread/threadtest.c, tests/unit/capi/GEOSBufferTest.cpp: - Updated source code files with svn:keywords property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2809 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-12-06 Mateusz Loskot - - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@2808 + Updated source code files with svn:keywords property. git-svn-id: http://svn.osgeo.org/geos/trunk@2809 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-06 Mateusz Loskot - * : Updated svn:ignore patterns git-svn-id: - http://svn.osgeo.org/geos/trunk@2807 + * : Updated svn:ignore patterns git-svn-id: http://svn.osgeo.org/geos/trunk@2808 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-06 Mateusz Loskot * configure.in: Updated configure.in after moved non-unit tests - programs out of tests/unit (Tickets #240). git-svn-id: - http://svn.osgeo.org/geos/trunk@2806 + programs out of tests/unit (Tickets #240). git-svn-id: http://svn.osgeo.org/geos/trunk@2806 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-06 Mateusz Loskot * tests/Makefile.am, tests/geostest/.deps/geostest.Po, - tests/geostest/Makefile.am, tests/{unit/capi => - geostest}/brokengrammar, tests/{unit/capi => geostest}/geostest.c, - tests/{unit/capi => geostest}/test.expected, tests/{unit/capi => - geostest}/test.wkt, tests/{unit/capi => geostest}/testrunner.sh, - tests/thread/Makefile.am, tests/{unit/capi => - thread}/badthreadtest.c, tests/{unit/capi => thread}/threadtest.c, - tests/unit/Makefile.am: Moved non-unit tests programs out of + tests/geostest/Makefile.am, tests/geostest/brokengrammar, + tests/geostest/geostest.c, tests/geostest/test.expected, + tests/geostest/test.wkt, tests/geostest/testrunner.sh, + tests/thread/Makefile.am, tests/thread/badthreadtest.c, + tests/thread/threadtest.c, tests/unit/Makefile.am, + tests/unit/capi/badthreadtest.c, tests/unit/capi/brokengrammar, + tests/unit/capi/geostest.c, tests/unit/capi/test.expected, + tests/unit/capi/test.wkt, tests/unit/capi/testrunner.sh, + tests/unit/capi/threadtest.c: Moved non-unit tests programs out of tests/unit: geostest -> tests/geostest, threadtest -> tests/thread, - badthreadtest -> tests/thread (Ticket #240). git-svn-id: - http://svn.osgeo.org/geos/trunk@2805 + badthreadtest -> tests/thread (Ticket #240). git-svn-id: http://svn.osgeo.org/geos/trunk@2805 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot - * configure.in: Added build/msvc80/geos_xmltester to configure.in - git-svn-id: http://svn.osgeo.org/geos/trunk@2804 + * configure.in: Added build/msvc80/geos_xmltester to configure.in git-svn-id: http://svn.osgeo.org/geos/trunk@2804 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot @@ -15553,22 +20025,19 @@ * build/msvc80/Makefile.am, build/msvc80/geos.sln, build/msvc80/geos_xmltester/Makefile.am, build/msvc80/geos_xmltester/geos_xmltester.vcproj: Added - geos_xmltester.vcproj project to build/msvc80 git-svn-id: - http://svn.osgeo.org/geos/trunk@2803 + geos_xmltester.vcproj project to build/msvc80 git-svn-id: http://svn.osgeo.org/geos/trunk@2803 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot * build/msvc80/geos_c_dll/geos_c_dll.vcproj: Added GEOS_DLL_EXPORT to preprocessor definitions in - build/msvc80/geos_c_dll/geos_c_dll.vcproj git-svn-id: - http://svn.osgeo.org/geos/trunk@2802 + build/msvc80/geos_c_dll/geos_c_dll.vcproj git-svn-id: http://svn.osgeo.org/geos/trunk@2802 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot - * source/linearref/ExtractLineByLocation.cpp: small cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@2801 + * source/linearref/ExtractLineByLocation.cpp: small cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@2801 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot @@ -15576,20 +20045,18 @@ * build/msvc80/geos.sln, build/msvc80/geos_c_dll/geos_c_dll.vcproj, build/msvc80/geos_lib/geos_lib.vcproj, build/msvc80/geos_unit/geos_unit.vcproj: Updated solution for Visual - C++ 8.0 (Visual Studio 2005) (Ticket #303) git-svn-id: - http://svn.osgeo.org/geos/trunk@2800 + C++ 8.0 (Visual Studio 2005) (Ticket #303) git-svn-id: http://svn.osgeo.org/geos/trunk@2800 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-05 Mateusz Loskot * build/README: Updated information in README about build/msvcXY - solutions git-svn-id: http://svn.osgeo.org/geos/trunk@2799 + solutions git-svn-id: http://svn.osgeo.org/geos/trunk@2799 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot - * configure.in: Updated configure.in with msvc10 git-svn-id: - http://svn.osgeo.org/geos/trunk@2798 + * configure.in: Updated configure.in with msvc10 git-svn-id: http://svn.osgeo.org/geos/trunk@2798 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot @@ -15608,83 +20075,71 @@ build/msvc10/geos_xmltester/geos_xmltester.vcxproj, build/msvc10/geos_xmltester/geos_xmltester.vcxproj.filters: Added solution and projects for Visual Studio 2010 (note msvc90 denotes - 9.0 however msvc10 is 10 not 1.0) git-svn-id: - http://svn.osgeo.org/geos/trunk@2797 + 9.0 however msvc10 is 10 not 1.0) git-svn-id: http://svn.osgeo.org/geos/trunk@2797 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot - * tests/unit/geos_unit.cpp: Missing svn keywords git-svn-id: - http://svn.osgeo.org/geos/trunk@2796 + * tests/unit/geos_unit.cpp: Missing svn keywords git-svn-id: http://svn.osgeo.org/geos/trunk@2796 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot - * tests/unit/tut/tut_exception.hpp: Small fixes to TUT. git-svn-id: - http://svn.osgeo.org/geos/trunk@2795 + * tests/unit/tut/tut_exception.hpp: Small fixes to TUT. git-svn-id: http://svn.osgeo.org/geos/trunk@2795 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot - * source/io/WKBReader.cpp: Replaced long with std::streampos - git-svn-id: http://svn.osgeo.org/geos/trunk@2794 + * source/io/WKBReader.cpp: Replaced long with std::streampos git-svn-id: http://svn.osgeo.org/geos/trunk@2794 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot * source/geom/CoordinateSequence.cpp: std::back_inserter requires - in geom/CoordinateSequence.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@2793 + in geom/CoordinateSequence.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@2793 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-04 Mateusz Loskot * build/msvc90/geos_lib/geos_lib.vcproj: Updated Visual C++ 9.0 - project git-svn-id: http://svn.osgeo.org/geos/trunk@2792 + project git-svn-id: http://svn.osgeo.org/geos/trunk@2792 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/export.h: Yet another try to fix EOL in - geos/export.h git-svn-id: http://svn.osgeo.org/geos/trunk@2791 + geos/export.h git-svn-id: http://svn.osgeo.org/geos/trunk@2791 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/export.h: Removed mysterious extra tokens - (blanks) from geos/export.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2790 + (blanks) from geos/export.h git-svn-id: http://svn.osgeo.org/geos/trunk@2790 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/export.h: Removed mysterious extra tokens - (blanks) from geos/export.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2789 + (blanks) from geos/export.h git-svn-id: http://svn.osgeo.org/geos/trunk@2789 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * build/msvc90/geos_unit/geos_unit.vcproj: Updated Visual C++ - project geos_unit.vcproj git-svn-id: - http://svn.osgeo.org/geos/trunk@2788 + project geos_unit.vcproj git-svn-id: http://svn.osgeo.org/geos/trunk@2788 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/platform.h.vc, source/headers/geos/timeval.h: - Part 26 of larger changeset - source/headers: * Refine FINITE macro - - pseudo-POSIX layer in Visual C++ does not offer long double - version of finite() * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2787 + Part 26 of larger changeset - source/headers: * Refine FINITE macro - pseudo-POSIX layer in Visual C++ does not + offer long double version of finite() * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2787 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/util/UniqueCoordinateArrayFilter.h: Part 25 of - larger changeset - source/headers/geos/util: * Declare noncopyable - types as such explicitly (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2786 + larger changeset - source/headers/geos/util: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2786 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15697,17 +20152,13 @@ source/headers/geos/simplify/TaggedLineStringSimplifier.h, source/headers/geos/simplify/TaggedLinesSimplifier.h, source/headers/geos/simplify/TopologyPreservingSimplifier.h: Part 24 - of larger changeset - source/headers/geos/simplify: * Declare - noncopyable types as such explicitly (Ticket #304). * Tidy up. - git-svn-id: http://svn.osgeo.org/geos/trunk@2785 + of larger changeset - source/headers/geos/simplify: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2785 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/planargraph/Subgraph.h: Part 23 of larger - changeset - source/headers/geos/planargraph * Declare noncopyable - types as such explicitly (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2784 + changeset - source/headers/geos/planargraph * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2784 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15715,27 +20166,20 @@ * source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h: Part 22 of larger changeset - - source/headers/geos/planargraph/algorithm: * Declare noncopyable - types as such explicitly (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2783 + source/headers/geos/planargraph/algorithm: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2783 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/operation/valid/ConnectedInteriorTester.h: - Part 21 of larger changeset - source/headers/geos/operation/valid: * - Declare noncopyable types as such explicitly (Ticket #304). * Tidy - up. git-svn-id: http://svn.osgeo.org/geos/trunk@2782 + Part 21 of larger changeset - source/headers/geos/operation/valid: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2782 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/operation/predicate/RectangleContains.h, source/headers/geos/operation/predicate/RectangleIntersects.h: Part - 20 of larger changeset - source/headers/geos/operation/overlay: * - Declare noncopyable types as such explicitly (Ticket #304). * - Unified EOL and style. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2781 + 20 of larger changeset - source/headers/geos/operation/overlay: * Declare noncopyable types as such explicitly (Ticket #304). * Unified EOL and style. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2781 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15750,9 +20194,7 @@ .h, source/headers/geos/operation/overlay/validate/OverlayResultValidat or.h: Part 19 of larger changeset - - source/headers/geos/operation/overlay: * Declare noncopyable types - as such explicitly (Ticket #304). * Tidy up. * Unified EOL and - style. git-svn-id: http://svn.osgeo.org/geos/trunk@2780 + source/headers/geos/operation/overlay: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. * Unified EOL and style. git-svn-id: http://svn.osgeo.org/geos/trunk@2780 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15760,10 +20202,7 @@ * source/headers/geos/operation/buffer/BufferBuilder.h, source/headers/geos/operation/buffer/OffsetCurveBuilder.h, source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h: Part - 18of larger changeset - source/headers/geos/operation/buffer: * - Declare noncopyable types as such explicitly (Ticket #304). * Tidy - up. * Unified EOL and style. git-svn-id: - http://svn.osgeo.org/geos/trunk@2779 + 18of larger changeset - source/headers/geos/operation/buffer: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. * Unified EOL and style. git-svn-id: http://svn.osgeo.org/geos/trunk@2779 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15781,10 +20220,7 @@ source/headers/geos/noding/SegmentNodeList.h, source/headers/geos/noding/SegmentString.h, source/headers/geos/noding/SingleInteriorIntersectionFinder.h: Part - 17 of larger changeset - source/headers/geos/noding/snapround: * - Declare noncopyable types as such explicitly (Ticket #304). * Added - Visual C++ pragmas. * Tidy up. * Unified EOL and style. git-svn-id: - http://svn.osgeo.org/geos/trunk@2778 + 17 of larger changeset - source/headers/geos/noding/snapround: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. * Unified EOL and style. git-svn-id: http://svn.osgeo.org/geos/trunk@2778 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15793,44 +20229,33 @@ source/headers/geos/noding/snapround/MCIndexPointSnapper.h, source/headers/geos/noding/snapround/MCIndexSnapRounder.h, source/headers/geos/noding/snapround/SimpleSnapRounder.h: Part 16 of - larger changeset - source/headers/geos/noding/snapround: * Declare - noncopyable types as such explicitly (Ticket #304). * Added Visual - C++ pragmas. * Tidy up. * Unified EOL and style. git-svn-id: - http://svn.osgeo.org/geos/trunk@2777 + larger changeset - source/headers/geos/noding/snapround: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. * Unified EOL and style. git-svn-id: http://svn.osgeo.org/geos/trunk@2777 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/linearref/LinearIterator.h: Part 15 of larger - changeset - source/headers/geos/linearref: * Declare noncopyable - types as such explicitly (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2776 + changeset - source/headers/geos/linearref: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2776 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/io/StringTokenizer.h, source/headers/geos/io/WKBReader.h: Part 14 of larger changeset - - source/headers/geos/io: * Declare noncopyable types as such - explicitly (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2775 + source/headers/geos/io: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2775 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/index/chain/MonotoneChain.h: Part 13 of larger - changeset - source/headers/geos/index/chain: * Declare noncopyable - types as such explicitly (Ticket #304). * Added Visual C++ pragmas. - * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2774 + changeset - source/headers/geos/index/chain: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2774 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/geomgraph/GeometryGraph.h, source/headers/geos/geomgraph/NodeMap.h: Part 12 of larger changeset - - source/headers/geos/geomgraph: * Declare noncopyable types as such - explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. - git-svn-id: http://svn.osgeo.org/geos/trunk@2773 + - source/headers/geos/geomgraph: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2773 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15841,19 +20266,14 @@ source/headers/geos/geom/util/LinearComponentExtracter.h, source/headers/geos/geom/util/PointExtracter.h, source/headers/geos/geom/util/PolygonExtracter.h: Part 11 of larger - changeset - source/headers/geos/geom/util: * Declare noncopyable - types as such explicitly (Ticket #304). * Added Visual C++ pragmas. - * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2772 + changeset - source/headers/geos/geom/util: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2772 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/headers/geos/geom/prep/PreparedLineStringIntersects.h, source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Part 10of - larger changeset - source/headers/geos/geom/prep: * Declare - noncopyable types as such explicitly (Ticket #304). * Added Visual - C++ pragmas. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2771 + larger changeset - source/headers/geos/geom/prep: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2771 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15861,58 +20281,44 @@ * source/headers/geos/algorithm/RayCrossingCounter.h, source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h, source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h: - Part 9 of larger changeset - source/headers/geos/algorithm: * - Declare noncopyable types as such explicitly (Ticket #304). * Added - Visual C++ pragmas. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2770 + Part 9 of larger changeset - source/headers/geos/algorithm: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2770 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/geomgraph/PlanarGraph.cpp: Part 7 of larger changeset - - source/geomgraph: * Fixed incorrect int to string conversion. - git-svn-id: http://svn.osgeo.org/geos/trunk@2769 + source/geomgraph: * Fixed incorrect int to string conversion. git-svn-id: http://svn.osgeo.org/geos/trunk@2769 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/index/intervalrtree/SortedPackedIntervalRTree.cpp: Part 7 - of larger changeset - source/index/intervalrtree: * Declare - noncopyable types as such explicitly (Ticket #304). * Added Visual - C++ pragmas. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2768 + of larger changeset - source/index/intervalrtree: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2768 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/noding/ScaledNoder.cpp: Refined changeset r2766 - fix for - nested classes required by GCC. git-svn-id: - http://svn.osgeo.org/geos/trunk@2767 + nested classes required by GCC. git-svn-id: http://svn.osgeo.org/geos/trunk@2767 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/noding/OrientedCoordinateArray.cpp, source/noding/ScaledNoder.cpp: Part 6 of larger changeset - - source/noding: * Declare noncopyable types as such explicitly - (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2766 + source/noding: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2766 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/noding/snapround/MCIndexPointSnapper.cpp: Part 5 of larger - changeset - source/noding/snapround: * Declare noncopyable types as - such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy - up. git-svn-id: http://svn.osgeo.org/geos/trunk@2765 + changeset - source/noding/snapround: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2765 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/algorithm/RobustDeterminant.cpp: Part 4 of larger changeset - - source/algorithm: * Declare noncopyable types as such explicitly - (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2764 + - source/algorithm: * Declare noncopyable types as such explicitly (Ticket #304). * Added Visual C++ pragmas. * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2764 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15924,17 +20330,13 @@ source/operation/overlay/PolygonBuilder.cpp, source/operation/predicate/RectangleIntersects.cpp, source/operation/valid/IsValidOp.cpp: Part 3 of larger changeset - - source/operation: * Declare noncopyable types as such explicitly - (Ticket #304). * Tidy up. git-svn-id: - http://svn.osgeo.org/geos/trunk@2763 + source/operation: * Declare noncopyable types as such explicitly (Ticket #304). * Tidy up. git-svn-id: http://svn.osgeo.org/geos/trunk@2763 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * source/simplify/TopologyPreservingSimplifier.cpp: Part 2 of larger - changeset - source/simplify: * Declare noncopyable types as such - explicitly (Ticket #304). * Cleanup. * Unified EOL to LF. - git-svn-id: http://svn.osgeo.org/geos/trunk@2762 + changeset - source/simplify: * Declare noncopyable types as such explicitly (Ticket #304). * Cleanup. * Unified EOL to LF. git-svn-id: http://svn.osgeo.org/geos/trunk@2762 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot @@ -15953,25 +20355,21 @@ tests/unit/linearref/LengthIndexedLineTest.cpp, tests/unit/noding/BasicSegmentStringTest.cpp, tests/unit/noding/NodedSegmentStringTest.cpp: Part 1 of larger - changeset - tests/unit: * Declare noncopyable types as such - explicitly (Ticket #304). * Cleanup. * Unified EOL to LF. - git-svn-id: http://svn.osgeo.org/geos/trunk@2761 + changeset - tests/unit: * Declare noncopyable types as such explicitly (Ticket #304). * Cleanup. * Unified EOL to LF. git-svn-id: http://svn.osgeo.org/geos/trunk@2761 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * tests/unit/operation/valid/IsValidTest.cpp, tests/unit/operation/valid/ValidClosedRingTest.cpp, - tests/xmltester/XMLTester.cpp: * Added Visual C++ pragmas. * Fixed implicit pointer tests for 0 - (save typing is a myth, be explicit is bless). git-svn-id: - http://svn.osgeo.org/geos/trunk@2760 + tests/xmltester/XMLTester.cpp: * Added Visual C++ pragmas. * Fixed implicit pointer tests for 0 (save typing is a myth, be + explicit is bless). git-svn-id: http://svn.osgeo.org/geos/trunk@2760 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-03 Mateusz Loskot * tests/unit/geos_unit.cpp, tests/unit/tut/tut_restartable.hpp, - tests/xmltester/XMLTester.h: Updated C++ TUT framework. git-svn-id: - http://svn.osgeo.org/geos/trunk@2759 + tests/xmltester/XMLTester.h: Updated C++ TUT framework. git-svn-id: http://svn.osgeo.org/geos/trunk@2759 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-01 Mateusz Loskot @@ -15981,8 +20379,7 @@ source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp, tests/unit/geos_unit.cpp: Improved WKBReader::readHEX to read WKB encoded with lower-case hex digits, useful if combined with SQL - encode(geometry, 'hex') git-svn-id: - http://svn.osgeo.org/geos/trunk@2758 + encode(geometry, 'hex') git-svn-id: http://svn.osgeo.org/geos/trunk@2758 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-01 Mateusz Loskot @@ -16010,9 +20407,8 @@ tests/unit/geom/DimensionTest.cpp, tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/operation/buffer/BufferOpTest.cpp: * More fixes for incompleteness of types required by std::auto_ptr * - Replaced utility macros with disappearing ignorance template trick. - git-svn-id: http://svn.osgeo.org/geos/trunk@2757 + tests/unit/operation/buffer/BufferOpTest.cpp: * More fixes for incompleteness of types required by std::auto_ptr * Replaced utility macros with disappearing ignorance template + trick. git-svn-id: http://svn.osgeo.org/geos/trunk@2757 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-12-01 Mateusz Loskot @@ -16021,8 +20417,7 @@ build/msvc90/geos_lib/geos_lib.vcproj, build/msvc90/geos_unit/geos_unit.vcproj, build/msvc90/geos_xmltester/geos_xmltester.vcproj: Tweaked projects - for Visual Studio 2008 git-svn-id: - http://svn.osgeo.org/geos/trunk@2756 + for Visual Studio 2008 git-svn-id: http://svn.osgeo.org/geos/trunk@2756 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-30 Mateusz Loskot @@ -16030,8 +20425,7 @@ * capi/geos_ts_c.cpp, source/geomgraph/EdgeEnd.cpp, source/headers/geos/geom/CoordinateSequenceFilter.h, source/precision/EnhancedPrecisionOp.cpp: * GEOSFree_r should check context handle even if its not used - - nullptr may indicate logic error. git-svn-id: - http://svn.osgeo.org/geos/trunk@2755 + nullptr may indicate logic error. git-svn-id: http://svn.osgeo.org/geos/trunk@2755 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-30 Mateusz Loskot @@ -16043,35 +20437,29 @@ source/geom/GeometryCollection.cpp, source/headers/geos/simplify/TopologyPreservingSimplifier.h, source/io/WKTReader.cpp, source/linearref/ExtractLineByLocation.cpp: * Fixed incomplete types Geometry and TaggedLinesSimplifier in - TopologyPreservingSimplifier.h - required by std::auto_ptr * Removed - unreachable code. * Removed /Wp64 option from Visual Studio 2008 - projects. git-svn-id: http://svn.osgeo.org/geos/trunk@2754 + TopologyPreservingSimplifier.h - required by std::auto_ptr * Removed unreachable code. * Removed /Wp64 option from Visual Studio 2008 projects. git-svn-id: http://svn.osgeo.org/geos/trunk@2754 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-30 Mateusz Loskot - * ChangeLog: Missing log. git-svn-id: - http://svn.osgeo.org/geos/trunk@2753 + * ChangeLog: Missing log. git-svn-id: http://svn.osgeo.org/geos/trunk@2753 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-30 Mateusz Loskot * build/msvc90/geos_unit/geos_unit.vcproj, - tests/unit/linearref/LengthIndexedLineTest.cpp: * Added missing tests to Visual Studio 2008 project * Replaced call - to isnan() missing in Visual C++ with ISNAN macro git-svn-id: - http://svn.osgeo.org/geos/trunk@2752 + tests/unit/linearref/LengthIndexedLineTest.cpp: * Added missing tests to Visual Studio 2008 project * Replaced call to isnan() missing in Visual C++ with ISNAN macro git-svn-id: http://svn.osgeo.org/geos/trunk@2752 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-29 Sandro Santilli - * ChangeLog: updated git-svn-id: - http://svn.osgeo.org/geos/trunk@2749 + * ChangeLog: updated git-svn-id: http://svn.osgeo.org/geos/trunk@2749 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Sandro Santilli * source/headers/geos/platform.h.in: Add ISNAN support in - platform.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@2748 + platform.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@2748 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Sandro Santilli @@ -16082,15 +20470,13 @@ source/util/AssertionFailedException.cpp, source/util/IllegalArgumentException.cpp, source/util/Makefile.am, source/util/UnsupportedOperationException.cpp: Remove unreferenced - files from the repository git-svn-id: - http://svn.osgeo.org/geos/trunk@2747 + files from the repository git-svn-id: http://svn.osgeo.org/geos/trunk@2747 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Sandro Santilli * build/msvc90/geos_lib/geos_lib.vcproj: Remove reference to files - not needing to go in the dll git-svn-id: - http://svn.osgeo.org/geos/trunk@2746 + not needing to go in the dll git-svn-id: http://svn.osgeo.org/geos/trunk@2746 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Sandro Santilli @@ -16099,53 +20485,47 @@ source/geom/Makefile.am, source/headers/geos/geom/CoordinateSequenceFactory.h: Put destructor of the CoordinateSequenceFactory in an implementation file, - hopefully reducing linker confusion about RTTI (see ticket #299) - git-svn-id: http://svn.osgeo.org/geos/trunk@2745 + hopefully reducing linker confusion about RTTI (see ticket #299) git-svn-id: http://svn.osgeo.org/geos/trunk@2745 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Paul Ramsey - * configure.in: Add magic flags for OS/X Snow Leopard only. (#299) - git-svn-id: http://svn.osgeo.org/geos/trunk@2744 + * configure.in: Add magic flags for OS/X Snow Leopard only. (#299) git-svn-id: http://svn.osgeo.org/geos/trunk@2744 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Paul Ramsey - * configure.in: Add vc90 xmltester target to Makefile build - git-svn-id: http://svn.osgeo.org/geos/trunk@2743 + * configure.in: Add vc90 xmltester target to Makefile build git-svn-id: http://svn.osgeo.org/geos/trunk@2743 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Frank Warmerdam * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: clarify - ownership of returned buffer from wkbwriter git-svn-id: - http://svn.osgeo.org/geos/trunk@2742 + ownership of returned buffer from wkbwriter git-svn-id: http://svn.osgeo.org/geos/trunk@2742 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-26 Paul Ramsey * Makefile.am, build/msvc90/Makefile.am, build/msvc90/geos_xmltester/Makefile.am: Fix missing components in - tarball (#300) git-svn-id: http://svn.osgeo.org/geos/trunk@2741 + tarball (#300) git-svn-id: http://svn.osgeo.org/geos/trunk@2741 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-24 Sandro Santilli - * ChangeLog: updated git-svn-id: - http://svn.osgeo.org/geos/trunk@2736 + * ChangeLog: updated git-svn-id: http://svn.osgeo.org/geos/trunk@2736 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-23 Sandro Santilli * tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp: - Coordiante->Coordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@2735 + Coordiante->Coordinate git-svn-id: http://svn.osgeo.org/geos/trunk@2735 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-23 Sandro Santilli * source/geom/Geometry.cpp: Avoid reallocations in Union - short-circuit git-svn-id: http://svn.osgeo.org/geos/trunk@2734 + short-circuit git-svn-id: http://svn.osgeo.org/geos/trunk@2734 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-20 Sandro Santilli @@ -16155,16 +20535,14 @@ source/operation/linemerge/LineMerger.cpp, source/operation/polygonize/PolygonizeGraph.cpp, source/planargraph/NodeMap.cpp: Don't force heap allocation of - vectors for getting nodes of a NodeMap git-svn-id: - http://svn.osgeo.org/geos/trunk@2733 + vectors for getting nodes of a NodeMap git-svn-id: http://svn.osgeo.org/geos/trunk@2733 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli * source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, source/noding/MCIndexSegmentSetMutualIntersector.cpp: Don't - heap-allocate std::vector in MCIndexSegmentSetMutualIntersector - git-svn-id: http://svn.osgeo.org/geos/trunk@2732 + heap-allocate std::vector in MCIndexSegmentSetMutualIntersector git-svn-id: http://svn.osgeo.org/geos/trunk@2732 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli @@ -16173,8 +20551,7 @@ source/headers/geos/operation/valid/ConnectedInteriorTester.h, source/operation/overlay/MaximalEdgeRing.cpp, source/operation/valid/ConnectedInteriorTester.cpp: Don't force heap - allocation when building edge rings for isValidOp git-svn-id: - http://svn.osgeo.org/geos/trunk@2731 + allocation when building edge rings for isValidOp git-svn-id: http://svn.osgeo.org/geos/trunk@2731 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli @@ -16183,16 +20560,14 @@ source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp: Don't force heap allocation of std::vector in PolygonizeGraph when deleting dangles - (moved allocation higher, in Polygonizer, so needs a second pass) - git-svn-id: http://svn.osgeo.org/geos/trunk@2730 + (moved allocation higher, in Polygonizer, so needs a second pass) git-svn-id: http://svn.osgeo.org/geos/trunk@2730 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli * source/headers/geos/operation/polygonize/PolygonizeGraph.h, source/operation/polygonize/PolygonizeGraph.cpp: don't heap-allocate - vectors in findLabeledEdgeRings git-svn-id: - http://svn.osgeo.org/geos/trunk@2729 + vectors in findLabeledEdgeRings git-svn-id: http://svn.osgeo.org/geos/trunk@2729 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli @@ -16202,15 +20577,14 @@ source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp: Move heap-allocation of vector used for 'cut-lines' containment out of PolygonizeGraph (but - into Polygonizer) git-svn-id: http://svn.osgeo.org/geos/trunk@2728 + into Polygonizer) git-svn-id: http://svn.osgeo.org/geos/trunk@2728 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli * source/headers/geos/operation/polygonize/PolygonizeGraph.h, source/operation/polygonize/PolygonizeGraph.cpp: Don't force - heap-allocation of vectors for finding/labeling edge rings - git-svn-id: http://svn.osgeo.org/geos/trunk@2727 + heap-allocation of vectors for finding/labeling edge rings git-svn-id: http://svn.osgeo.org/geos/trunk@2727 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli @@ -16220,117 +20594,102 @@ source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp: Change PolygonizeGraph::getEdgeRings signature so not to force heap - allocation of std::vector, update Polygonizer accordingly - git-svn-id: http://svn.osgeo.org/geos/trunk@2726 + allocation of std::vector, update Polygonizer accordingly git-svn-id: http://svn.osgeo.org/geos/trunk@2726 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli * source/headers/geos/operation/polygonize/PolygonizeGraph.h, source/operation/polygonize/PolygonizeGraph.cpp: Do not - heap-allocate vector of Node when finding intersections - git-svn-id: http://svn.osgeo.org/geos/trunk@2725 + heap-allocate vector of Node when finding intersections git-svn-id: http://svn.osgeo.org/geos/trunk@2725 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Sandro Santilli * source/headers/geos/index/strtree/AbstractNode.h, source/index/strtree/AbstractNode.cpp: Don not allocate the - container of STRtree node childs on the heap git-svn-id: - http://svn.osgeo.org/geos/trunk@2724 + container of STRtree node childs on the heap git-svn-id: http://svn.osgeo.org/geos/trunk@2724 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-19 Paul Ramsey * source/geomgraph/index/SegmentIntersector.cpp, tests/xmltester/XMLTester.cpp: Apply patch for --disable-cassert - compilation (#291) git-svn-id: - http://svn.osgeo.org/geos/trunk@2723 + compilation (#291) git-svn-id: http://svn.osgeo.org/geos/trunk@2723 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-18 Paul Ramsey * HOWTO_RELEASE: Reverse the upgrade process a bit, bump up revision numbers *after* release so that the repo version is always one - higher than the release version. (#287) git-svn-id: - http://svn.osgeo.org/geos/trunk@2720 + higher than the release version. (#287) git-svn-id: http://svn.osgeo.org/geos/trunk@2720 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-18 Mateusz Loskot * ChangeLog, capi/geos_c.cpp, capi/geos_ts_c.cpp: Silent warning - thrown by Visual C++ about mixed class and struct keyword (#269) - git-svn-id: http://svn.osgeo.org/geos/trunk@2717 + thrown by Visual C++ about mixed class and struct keyword (#269) git-svn-id: http://svn.osgeo.org/geos/trunk@2717 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-17 Sandro Santilli * tests/unit/Makefile.am: Include capi::GEOSGeomFromWKB test in - geos_unit build (should also distribute as side-effect) - git-svn-id: http://svn.osgeo.org/geos/trunk@2716 + geos_unit build (should also distribute as side-effect) git-svn-id: http://svn.osgeo.org/geos/trunk@2716 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-11 Sandro Santilli * HOWTO_RELEASE, Makefile.am: Change ChangeLog generation rule so it - doesn't mess with make dist. Reflect in HOW_TO_RELEASE git-svn-id: - http://svn.osgeo.org/geos/trunk@2713 + doesn't mess with make dist. Reflect in HOW_TO_RELEASE git-svn-id: http://svn.osgeo.org/geos/trunk@2713 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-10 Sandro Santilli * HOWTO_RELEASE, Makefile.am: Make ChangeLog target non-phony to - keep 'distcheck' happy. Reorganize HOW_TO_RELEASE steps. - git-svn-id: http://svn.osgeo.org/geos/trunk@2712 + keep 'distcheck' happy. Reorganize HOW_TO_RELEASE steps. git-svn-id: http://svn.osgeo.org/geos/trunk@2712 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-11-10 Sandro Santilli - * ChangeLog, HOWTO_RELEASE, NEWS: Package stuff for release - git-svn-id: http://svn.osgeo.org/geos/trunk@2711 + * ChangeLog, HOWTO_RELEASE, NEWS: Package stuff for release git-svn-id: http://svn.osgeo.org/geos/trunk@2711 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * tests/unit/operation/buffer/BufferOpTest.cpp: Testing linker - problem with DEFAULT_QUADRANT_SEGMENT constant git-svn-id: - http://svn.osgeo.org/geos/trunk@2710 + problem with DEFAULT_QUADRANT_SEGMENT constant git-svn-id: http://svn.osgeo.org/geos/trunk@2710 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * tests/unit/operation/buffer/BufferOpTest.cpp: Testing linker - problem with DEFAULT_QUADRANT_SEGMENT constant git-svn-id: - http://svn.osgeo.org/geos/trunk@2709 + problem with DEFAULT_QUADRANT_SEGMENT constant git-svn-id: http://svn.osgeo.org/geos/trunk@2709 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * tests/unit/operation/buffer/BufferOpTest.cpp: Fixed CRLF to LF in - BufferOpTest.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@2708 + BufferOpTest.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@2708 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * ChangeLog, tests/unit/operation/buffer/BufferOpTest.cpp: Missing - include of BufferParameters.h header in BufferOpTest.cpp unit suite - git-svn-id: http://svn.osgeo.org/geos/trunk@2707 + include of BufferParameters.h header in BufferOpTest.cpp unit suite git-svn-id: http://svn.osgeo.org/geos/trunk@2707 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * ChangeLog, tests/unit/operation/buffer/BufferOpTest.cpp: Added more test cases for buffer calculation based on A (input) geometries - from XMLTester's buffer.xml and TestBufferExternal2.xml tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@2706 + from XMLTester's buffer.xml and TestBufferExternal2.xml tests. git-svn-id: http://svn.osgeo.org/geos/trunk@2706 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot * ChangeLog, tests/unit/operation/buffer/BufferOpTest.cpp: Added test case for buffer of multipolygon from XMLTester's buffer.xml, - case #25 but with custom quadrant segments git-svn-id: - http://svn.osgeo.org/geos/trunk@2705 + case #25 but with custom quadrant segments git-svn-id: http://svn.osgeo.org/geos/trunk@2705 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-29 Mateusz Loskot @@ -16344,25 +20703,21 @@ * ChangeLog, build/msvc90/geos_unit/geos_unit.vcproj, tests/unit/Makefile.am, - tests/unit/operation/buffer/BufferOpTest.cpp: * tests/unit/operation/buffer: added unit test case for BufferOp, * - tests/unit/Makefile.am: added new test case source to Makefile, * - build/msvc90/geos_unit/geos_unit.vcproj: updated Visual C++ project. - git-svn-id: http://svn.osgeo.org/geos/trunk@2703 + tests/unit/operation/buffer/BufferOpTest.cpp: * tests/unit/operation/buffer: added unit test case for BufferOp, * tests/unit/Makefile.am: added new test case source to Makefile, * build/msvc90/geos_unit/geos_unit.vcproj: updated Visual C++ + project. git-svn-id: http://svn.osgeo.org/geos/trunk@2703 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-28 Mateusz Loskot * ChangeLog, build/msvc90/geos.sln, tests/xmltester/XMLTester.cpp: tests/xmltester/XMLTester.cpp: declare checkBufferSuccess function - to take geometries by refernece to const git-svn-id: - http://svn.osgeo.org/geos/trunk@2702 + to take geometries by refernece to const git-svn-id: http://svn.osgeo.org/geos/trunk@2702 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-25 Mateusz Loskot * ChangeLog, source/headers/geos/geom/Geometry.h: Fixed typo in - getCentroid function comment in Geometry.h. git-svn-id: - http://svn.osgeo.org/geos/trunk@2701 + getCentroid function comment in Geometry.h. git-svn-id: http://svn.osgeo.org/geos/trunk@2701 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli @@ -16370,36 +20725,34 @@ * source/headers/geos/linearref/LinearLocation.h, source/linearref/LinearLocation.cpp: Have LinearLocation::getSegment return by auto_ptr to encode ownership transfer. Fixes leak reported - in #296. git-svn-id: http://svn.osgeo.org/geos/trunk@2700 + in #296. git-svn-id: http://svn.osgeo.org/geos/trunk@2700 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * source/headers/geos/linearref/LinearLocation.h, source/linearref/LinearLocation.cpp: Fix port info, add standard - protection notes git-svn-id: http://svn.osgeo.org/geos/trunk@2699 + protection notes git-svn-id: http://svn.osgeo.org/geos/trunk@2699 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * source/headers/geos/linearref/LinearGeometryBuilder.h, source/linearref/LinearGeometryBuilder.cpp: Add destructor to - LinearGeometryBuilder fixing memory leaks there. git-svn-id: - http://svn.osgeo.org/geos/trunk@2698 + LinearGeometryBuilder fixing memory leaks there. git-svn-id: http://svn.osgeo.org/geos/trunk@2698 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * source/linearref/LinearGeometryBuilder.cpp: Fix memory access - error (#283) git-svn-id: http://svn.osgeo.org/geos/trunk@2697 + error (#283) git-svn-id: http://svn.osgeo.org/geos/trunk@2697 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * source/headers/geos/linearref/LinearGeometryBuilder.h, source/linearref/LinearGeometryBuilder.cpp: Fix port info for - LinearGeometryBuilder git-svn-id: - http://svn.osgeo.org/geos/trunk@2696 + LinearGeometryBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@2696 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli @@ -16408,8 +20761,7 @@ source/linearref/LinearGeometryBuilder.cpp: Cleanup LinearGeometrybuilder defs and impl to match common code style, add note about suspicious things (not written but noted that the class - seems to lack a destructor..) git-svn-id: - http://svn.osgeo.org/geos/trunk@2695 + seems to lack a destructor..) git-svn-id: http://svn.osgeo.org/geos/trunk@2695 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli @@ -16419,49 +20771,44 @@ source/linearref/LocationIndexOfLine.cpp, tests/unit/linearref/LengthIndexedLineTest.cpp: Document ownership of return from LocationIndexOfLine::indicesOf, fix mismatch - delete/delete[] in core and unit test git-svn-id: - http://svn.osgeo.org/geos/trunk@2694 + delete/delete[] in core and unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2694 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * source/headers/geos/algorithm/BoundaryNodeRule.h: Add virtual dtor - to virtual class git-svn-id: http://svn.osgeo.org/geos/trunk@2693 + to virtual class git-svn-id: http://svn.osgeo.org/geos/trunk@2693 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * tests/xmltester/tinyxml/tinyxmlparser.cpp: add some parens to hush - gcc warning git-svn-id: http://svn.osgeo.org/geos/trunk@2692 + gcc warning git-svn-id: http://svn.osgeo.org/geos/trunk@2692 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli - * tests/unit/Makefile.am: Fix static building of C-api demo/tests - git-svn-id: http://svn.osgeo.org/geos/trunk@2691 + * tests/unit/Makefile.am: Fix static building of C-api demo/tests git-svn-id: http://svn.osgeo.org/geos/trunk@2691 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-23 Sandro Santilli * tests/xmltester/Makefile.am: Run the last - available-but-no-automatically-run test: test.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@2690 + available-but-no-automatically-run test: test.xml git-svn-id: http://svn.osgeo.org/geos/trunk@2690 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-22 Sandro Santilli * tests/xmltester/tests/buffer.xml, tests/xmltester/tests/buffer_snapround.xml: Merge - buffer_snapround.xml into buffer.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@2689 + buffer_snapround.xml into buffer.xml git-svn-id: http://svn.osgeo.org/geos/trunk@2689 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-22 Sandro Santilli * tests/xmltester/Makefile.am: A quick check reveals that the tests in buffer.xml are not really duplicated elsewhere so we run that - test too now as part of make check git-svn-id: - http://svn.osgeo.org/geos/trunk@2688 + test too now as part of make check git-svn-id: http://svn.osgeo.org/geos/trunk@2688 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-22 Sandro Santilli @@ -16469,22 +20816,20 @@ * tests/xmltester/tests/buffer.xml: Give buffer.xml cases a somewhat more helpful description, fix 4 expected results after eye-checking. This is still not automatically run case it might contain duplicated - tests from elsewhere (to be checked). git-svn-id: - http://svn.osgeo.org/geos/trunk@2687 + tests from elsewhere (to be checked). git-svn-id: http://svn.osgeo.org/geos/trunk@2687 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-22 Sandro Santilli * tests/xmltester/XMLTester.cpp: Don't segfault on EOF inside - tag git-svn-id: http://svn.osgeo.org/geos/trunk@2686 + tag git-svn-id: http://svn.osgeo.org/geos/trunk@2686 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-20 Sandro Santilli * source/headers/geos/index/strtree/AbstractSTRtree.h, source/index/strtree/STRtree.cpp: Commit MingW bug workaround - provided by sanak in ticket #293 git-svn-id: - http://svn.osgeo.org/geos/trunk@2685 + provided by sanak in ticket #293 git-svn-id: http://svn.osgeo.org/geos/trunk@2685 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-19 Mateusz Loskot @@ -16492,41 +20837,36 @@ * ChangeLog, build/msvc90/geos_xmltester/geos_xmltester.vcproj, tests/xmltester/tests/buffer_snapround.xml: tests/xmltester/tests/buffer_snapround.xml: not well-formed XML, - fixed missing attribute. git-svn-id: - http://svn.osgeo.org/geos/trunk@2684 + fixed missing attribute. git-svn-id: http://svn.osgeo.org/geos/trunk@2684 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli - * ChangeLog: updated git-svn-id: - http://svn.osgeo.org/geos/trunk@2683 + * ChangeLog: updated git-svn-id: http://svn.osgeo.org/geos/trunk@2683 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@2682 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@2682 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli * source/algorithm/distance/DistanceToPoint.cpp: Half the calls to - the virtual CoordinateSequence::getAt when computing line distances - git-svn-id: http://svn.osgeo.org/geos/trunk@2681 + the virtual CoordinateSequence::getAt when computing line distances git-svn-id: http://svn.osgeo.org/geos/trunk@2681 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli * source/geom/CoordinateArraySequence.cpp: Drop pointless asserts. We'd abort anyway if vector is null. For the out-of-range case the - GNU c++ lib helps debugging with an environment variable - git-svn-id: http://svn.osgeo.org/geos/trunk@2680 + GNU c++ lib helps debugging with an environment variable git-svn-id: http://svn.osgeo.org/geos/trunk@2680 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli * source/noding/OrientedCoordinateArray.cpp: Add note of - private/static nature of implemented methods git-svn-id: - http://svn.osgeo.org/geos/trunk@2679 + private/static nature of implemented methods git-svn-id: http://svn.osgeo.org/geos/trunk@2679 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli @@ -16535,157 +20875,135 @@ source/headers/geos/geom/CoordinateArraySequence.h, source/headers/geos/geom/CoordinateSequence.h: Expose a usable toVector method for CoordinateSequence (ie: no memory management - issues). Use it from Polygon::getCoordinates. git-svn-id: - http://svn.osgeo.org/geos/trunk@2678 + issues). Use it from Polygon::getCoordinates. git-svn-id: http://svn.osgeo.org/geos/trunk@2678 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-17 Sandro Santilli * source/geom/Polygon.cpp: Don't allocate too much space for polygon - points vector. Fixes bug #294. git-svn-id: - http://svn.osgeo.org/geos/trunk@2677 + points vector. Fixes bug #294. git-svn-id: http://svn.osgeo.org/geos/trunk@2677 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-16 Mateusz Loskot * tests/xmltester/tests/fme.xml: xmltester/tests: missing double - quotes around XML attribute value in fme.xml. git-svn-id: - http://svn.osgeo.org/geos/trunk@2676 + quotes around XML attribute value in fme.xml. git-svn-id: http://svn.osgeo.org/geos/trunk@2676 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-14 Sandro Santilli - * ChangeLog: regenerate ChangeLog git-svn-id: - http://svn.osgeo.org/geos/trunk@2675 + * ChangeLog: regenerate ChangeLog git-svn-id: http://svn.osgeo.org/geos/trunk@2675 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-14 Mateusz Loskot * build/msvc90/geos_unit/geos_unit.vcproj, build/msvc90/geos_xmltester/geos_xmltester.vcproj, - tests/xmltester/XMLTester.cpp, tests/xmltester/makefile.vc: * Optional use of GEOS_DEBUG_MSVC_USE_VLD in XMLTester.cpp * Added - xmltester/makefile.vc as port of testrunner.sh for Windows to be - able to run all tests in batch: ** nmake /f makefile.vc - XMLTESTER=C:\path\to\xmltester.exe git-svn-id: - http://svn.osgeo.org/geos/trunk@2674 + tests/xmltester/XMLTester.cpp, tests/xmltester/makefile.vc: * Optional use of GEOS_DEBUG_MSVC_USE_VLD in XMLTester.cpp * Added xmltester/makefile.vc as port of testrunner.sh for Windows + to be able to run all tests in batch: ** nmake /f makefile.vc + XMLTESTER=C:\path\to\xmltester.exe git-svn-id: http://svn.osgeo.org/geos/trunk@2674 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-14 Mateusz Loskot * build/msvc90/geos.sln, build/msvc90/geos_xmltester/geos_xmltester.vcproj: Added - msvc90/geos_xmltester to solution for Visual Studio 2008. - git-svn-id: http://svn.osgeo.org/geos/trunk@2673 + msvc90/geos_xmltester to solution for Visual Studio 2008. git-svn-id: http://svn.osgeo.org/geos/trunk@2673 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-14 Mateusz Loskot * tests/xmltester/XMLTester.cpp: Enable use of Stalkwalker only if - building with Visual C++ and GEOS_TEST_USE_STACKWALKER is defined. - git-svn-id: http://svn.osgeo.org/geos/trunk@2672 + building with Visual C++ and GEOS_TEST_USE_STACKWALKER is defined. git-svn-id: http://svn.osgeo.org/geos/trunk@2672 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-13 Mateusz Loskot * build/msvc90/geos_lib/geos_lib.vcproj: build/msvc90: added missing sources of linearref package. Builds with Visual C++ 9.0 (using both - project and makefiles). git-svn-id: - http://svn.osgeo.org/geos/trunk@2671 + project and makefiles). git-svn-id: http://svn.osgeo.org/geos/trunk@2671 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-13 Frank Warmerdam * ChangeLog, capi/geos_c.h.in, nmake.opt, source/Makefile.vc: fix - nmake dll export, and link test programs (#288) git-svn-id: - http://svn.osgeo.org/geos/trunk@2670 + nmake dll export, and link test programs (#288) git-svn-id: http://svn.osgeo.org/geos/trunk@2670 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Frank Warmerdam * source/Makefile.vc, source/dirlist.mk: add new directories and - source (#288) git-svn-id: http://svn.osgeo.org/geos/trunk@2669 + source (#288) git-svn-id: http://svn.osgeo.org/geos/trunk@2669 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli - * ChangeLog: regenerate ChangeLog now that we have all names in - git-svn-id: http://svn.osgeo.org/geos/trunk@2668 + * ChangeLog: regenerate ChangeLog now that we have all names in git-svn-id: http://svn.osgeo.org/geos/trunk@2668 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli - * authors.svn: Add other missing names/addresses git-svn-id: - http://svn.osgeo.org/geos/trunk@2667 + * authors.svn: Add other missing names/addresses git-svn-id: http://svn.osgeo.org/geos/trunk@2667 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli * ChangeLog, ChangeLog.svn, Makefile.am: Automatically generate the - ChangeLog file, forget ChangeLog.svn. git-svn-id: - http://svn.osgeo.org/geos/trunk@2666 + ChangeLog file, forget ChangeLog.svn. git-svn-id: http://svn.osgeo.org/geos/trunk@2666 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli * source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp: Don't - signal topology exception when it triggers snapping git-svn-id: - http://svn.osgeo.org/geos/trunk@2665 + signal topology exception when it triggers snapping git-svn-id: http://svn.osgeo.org/geos/trunk@2665 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli - * authors.svn: Add yury, fernando and sean git-svn-id: - http://svn.osgeo.org/geos/trunk@2664 + * authors.svn: Add yury, fernando and sean git-svn-id: http://svn.osgeo.org/geos/trunk@2664 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli - * tests/unit/Makefile.am: Distribute all of TUT git-svn-id: - http://svn.osgeo.org/geos/trunk@2663 + * tests/unit/Makefile.am: Distribute all of TUT git-svn-id: http://svn.osgeo.org/geos/trunk@2663 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-08 Sandro Santilli * capi/geos_c.h.in, source/headers/geos/version.h.vc: Properly set - version for win target git-svn-id: - http://svn.osgeo.org/geos/trunk@2662 + version for win target git-svn-id: http://svn.osgeo.org/geos/trunk@2662 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-07 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/GEOSBufferTest.cpp: Expose single-sided buffering in - C-API (see ticket #258) git-svn-id: - http://svn.osgeo.org/geos/trunk@2661 + C-API (see ticket #258) git-svn-id: http://svn.osgeo.org/geos/trunk@2661 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/algorithm/distance/DistanceToPoint.cpp, source/headers/geos/algorithm/distance/DistanceToPoint.h: Drop use - of static data in DistanceToPoint class (for thread-safety) - git-svn-id: http://svn.osgeo.org/geos/trunk@2659 + of static data in DistanceToPoint class (for thread-safety) git-svn-id: http://svn.osgeo.org/geos/trunk@2659 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: release memory earlier, - and closer to allocation git-svn-id: - http://svn.osgeo.org/geos/trunk@2658 + and closer to allocation git-svn-id: http://svn.osgeo.org/geos/trunk@2658 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Finish plugging leaks. - Make check runs with no leaks. git-svn-id: - http://svn.osgeo.org/geos/trunk@2657 + Make check runs with no leaks. git-svn-id: http://svn.osgeo.org/geos/trunk@2657 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/headers/geos/operation/buffer/OffsetCurveBuilder.h: another - memory management doc git-svn-id: - http://svn.osgeo.org/geos/trunk@2656 + memory management doc git-svn-id: http://svn.osgeo.org/geos/trunk@2656 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli @@ -16693,44 +21011,39 @@ * source/headers/geos/operation/buffer/OffsetCurveBuilder.h, source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h, source/operation/buffer/OffsetCurveSetBuilder.cpp: Document more - memory management issues git-svn-id: - http://svn.osgeo.org/geos/trunk@2655 + memory management issues git-svn-id: http://svn.osgeo.org/geos/trunk@2655 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveBuilder.cpp: More memory leak - fixes in single-sided buffering implementation git-svn-id: - http://svn.osgeo.org/geos/trunk@2654 + fixes in single-sided buffering implementation git-svn-id: http://svn.osgeo.org/geos/trunk@2654 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Plug some memory leaks - in single sided buffering implementation git-svn-id: - http://svn.osgeo.org/geos/trunk@2653 + in single sided buffering implementation git-svn-id: http://svn.osgeo.org/geos/trunk@2653 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * source/headers/geos/operation/linemerge/LineMerger.h: Document - ownership of return from LineMerger::getMergedLineStrings - git-svn-id: http://svn.osgeo.org/geos/trunk@2652 + ownership of return from LineMerger::getMergedLineStrings git-svn-id: http://svn.osgeo.org/geos/trunk@2652 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-05 Sandro Santilli * .vimrc: Alright, there's no standard style yet so this file is - made empty, but good to have for reference git-svn-id: - http://svn.osgeo.org/geos/trunk@2651 + made empty, but good to have for reference git-svn-id: http://svn.osgeo.org/geos/trunk@2651 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Throw an exception rather than returning NULL if input to single-sided buffer code is - invalid git-svn-id: http://svn.osgeo.org/geos/trunk@2650 + invalid git-svn-id: http://svn.osgeo.org/geos/trunk@2650 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli @@ -16740,104 +21053,91 @@ tests/xmltester/tests/safe/16596.xml, tests/xmltester/tests/singlesidedbuffer.xml: Have single-sided buffer constructor return a simple LINESTRING when appropriate - rather than forcing a MULTI; import 2 tests from the SAFE testsuite - git-svn-id: http://svn.osgeo.org/geos/trunk@2649 + rather than forcing a MULTI; import 2 tests from the SAFE testsuite git-svn-id: http://svn.osgeo.org/geos/trunk@2649 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli - * tests/xmltester/safe_to_xml.sh: Better parse style parameter - git-svn-id: http://svn.osgeo.org/geos/trunk@2648 + * tests/xmltester/safe_to_xml.sh: Better parse style parameter git-svn-id: http://svn.osgeo.org/geos/trunk@2648 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * tests/xmltester/safe_to_xml.sh: Add utility script to import tests - from SAFE software git-svn-id: - http://svn.osgeo.org/geos/trunk@2647 + from SAFE software git-svn-id: http://svn.osgeo.org/geos/trunk@2647 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * tests/xmltester/XMLTester.cpp: Don't segfault on xml tests missing - precision model specification git-svn-id: - http://svn.osgeo.org/geos/trunk@2646 + precision model specification git-svn-id: http://svn.osgeo.org/geos/trunk@2646 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * tests/xmltester/tests/singlesidedbuffer.xml: Re-enable the now - succeeding test for sharp edges line single sided buffering - git-svn-id: http://svn.osgeo.org/geos/trunk@2645 + succeeding test for sharp edges line single sided buffering git-svn-id: http://svn.osgeo.org/geos/trunk@2645 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Use FLAT/BUTT endcaps - when doing single sided buffering git-svn-id: - http://svn.osgeo.org/geos/trunk@2644 + when doing single sided buffering git-svn-id: http://svn.osgeo.org/geos/trunk@2644 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * source/operation/buffer/OffsetCurveBuilder.cpp: Fix trimming of - left/right curves (ie: don't include the endcap) git-svn-id: - http://svn.osgeo.org/geos/trunk@2643 + left/right curves (ie: don't include the endcap) git-svn-id: http://svn.osgeo.org/geos/trunk@2643 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-10-01 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Use snapped intersection between full buffer boundary and single-sided offset - curves git-svn-id: http://svn.osgeo.org/geos/trunk@2642 + curves git-svn-id: http://svn.osgeo.org/geos/trunk@2642 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli * tests/xmltester/SingleSidedBufferResultMatcher.cpp: Check hausdorff distance in both directions, or an expected output line - longer than the obtained one would be found as correct git-svn-id: - http://svn.osgeo.org/geos/trunk@2641 + longer than the obtained one would be found as correct git-svn-id: http://svn.osgeo.org/geos/trunk@2641 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Some debugging for - single sided buffers git-svn-id: - http://svn.osgeo.org/geos/trunk@2640 + single sided buffers git-svn-id: http://svn.osgeo.org/geos/trunk@2640 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli * tests/xmltester/tests/singlesidedbuffer.xml: Another simple test - for single-sided buffer (horizontal line, both directions) - git-svn-id: http://svn.osgeo.org/geos/trunk@2639 + for single-sided buffer (horizontal line, both directions) git-svn-id: http://svn.osgeo.org/geos/trunk@2639 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli * tests/xmltester/tests/singlesidedbuffer.xml: Another simple test - for a vertical line, opposite direction from previous git-svn-id: - http://svn.osgeo.org/geos/trunk@2638 + for a vertical line, opposite direction from previous git-svn-id: http://svn.osgeo.org/geos/trunk@2638 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli * tests/xmltester/tests/singlesidedbuffer.xml: Add test for single sided buffer on simple, vertical, line (this one succeeds both left - and right) git-svn-id: http://svn.osgeo.org/geos/trunk@2637 + and right) git-svn-id: http://svn.osgeo.org/geos/trunk@2637 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli - * .vimrc: VIM setting for GEOS source code style (3-spaces tabs) - git-svn-id: http://svn.osgeo.org/geos/trunk@2636 + * .vimrc: VIM setting for GEOS source code style (3-spaces tabs) git-svn-id: http://svn.osgeo.org/geos/trunk@2636 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-30 Sandro Santilli - * autogen.sh: Don't use non-standard escape sequences with 'echo' - git-svn-id: http://svn.osgeo.org/geos/trunk@2635 + * autogen.sh: Don't use non-standard escape sequences with 'echo' git-svn-id: http://svn.osgeo.org/geos/trunk@2635 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli @@ -16851,35 +21151,31 @@ tests/xmltester/tinyxml/tinyxml.h, tests/xmltester/tinyxml/tinyxmlerror.cpp, tests/xmltester/tinyxml/tinyxmlparser.cpp: Replace no-commercial-use - licenced MarkupSTL with tinyXML git-svn-id: - http://svn.osgeo.org/geos/trunk@2634 + licenced MarkupSTL with tinyXML git-svn-id: http://svn.osgeo.org/geos/trunk@2634 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli * tests/xmltester/tests/singlesidedbuffer.xml: Temporarly disable - failing single sided buffer test git-svn-id: - http://svn.osgeo.org/geos/trunk@2633 + failing single sided buffer test git-svn-id: http://svn.osgeo.org/geos/trunk@2633 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli * tests/xmltester/SingleSidedBufferResultMatcher.cpp: Oops, it seems - I just don't want a test to fail ;) git-svn-id: - http://svn.osgeo.org/geos/trunk@2632 + I just don't want a test to fail ;) git-svn-id: http://svn.osgeo.org/geos/trunk@2632 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli * tests/xmltester/SingleSidedBufferResultMatcher.cpp: Don't give a - false success if one of the expected/obtained geometry is empty - git-svn-id: http://svn.osgeo.org/geos/trunk@2631 + false success if one of the expected/obtained geometry is empty git-svn-id: http://svn.osgeo.org/geos/trunk@2631 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli * source/geom/PrecisionModel.cpp: Add offsets to PrecisionModel text - output git-svn-id: http://svn.osgeo.org/geos/trunk@2630 + output git-svn-id: http://svn.osgeo.org/geos/trunk@2630 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-28 Sandro Santilli @@ -16891,8 +21187,7 @@ tests/xmltester/tests/singlesidedbuffer.xml: Add an hausdorff distance based result matcher for single-sided buffer tests. Enable the single sided buffer test provided by swong in ticket #215 with - minor tweak (expect multilinestring). git-svn-id: - http://svn.osgeo.org/geos/trunk@2629 + minor tweak (expect multilinestring). git-svn-id: http://svn.osgeo.org/geos/trunk@2629 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-27 Sandro Santilli @@ -16903,37 +21198,24 @@ source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveVertexList.h, tests/xmltester/XMLTester.cpp: Re-introduce the singlesided buffer - patch. Tests still need to be worked on. git-svn-id: - http://svn.osgeo.org/geos/trunk@2628 + patch. Tests still need to be worked on. git-svn-id: http://svn.osgeo.org/geos/trunk@2628 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-21 Paul Ramsey * source/geom/Polygon.cpp: Polygon with empty ring causes a crash in - WKBReader (from Tamas Szekeres) (#290) git-svn-id: - http://svn.osgeo.org/geos/trunk@2626 + WKBReader (from Tamas Szekeres) (#290) git-svn-id: http://svn.osgeo.org/geos/trunk@2626 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-09-11 Paul Ramsey * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Patch for - #285, C api for project and interpolate, from David Turner (novalis) - git-svn-id: http://svn.osgeo.org/geos/trunk@2624 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-08-21 Mateusz Loskot - - * : Updated svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@2623 + #285, C api for project and interpolate, from David Turner (novalis) git-svn-id: http://svn.osgeo.org/geos/trunk@2624 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-08-21 Mateusz Loskot - * source/headers/geos/export.h, - tests/unit/algorithm/RobustLineIntersectionTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geos_unit.cpp: Cleaned compilation warnings in unit - tests. git-svn-id: http://svn.osgeo.org/geos/trunk@2622 + * : Updated svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@2623 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-08-21 Mateusz Loskot @@ -16944,8 +21226,7 @@ tests/unit/tut/tut_reporter.hpp, tests/unit/tut/tut_restartable.hpp, tests/unit/tut/tut_result.hpp, tests/unit/tut/tut_runner.hpp: Updated C++ TUT Framework to latest - revision (147) of its SVN trunk git-svn-id: - http://svn.osgeo.org/geos/trunk@2621 + revision (147) of its SVN trunk git-svn-id: http://svn.osgeo.org/geos/trunk@2621 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-08-15 Sandro Santilli @@ -16966,8 +21247,7 @@ source/linearref/LinearLocation.cpp, source/linearref/LocationIndexOfLine.cpp, source/linearref/LocationIndexOfPoint.cpp: Const correctness of - LenghtIndexedLine port, by novalis (issue #284) git-svn-id: - http://svn.osgeo.org/geos/trunk@2620 + LenghtIndexedLine port, by novalis (issue #284) git-svn-id: http://svn.osgeo.org/geos/trunk@2620 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-08-12 Paul Ramsey @@ -16996,8 +21276,7 @@ source/linearref/LocationIndexOfPoint.cpp, source/linearref/Makefile.am, tests/unit/Makefile.am, tests/unit/linearref/LengthIndexedLineTest.cpp: Port of JTS linear - referencing (from David Turner) (#283) git-svn-id: - http://svn.osgeo.org/geos/trunk@2619 + referencing (from David Turner) (#283) git-svn-id: http://svn.osgeo.org/geos/trunk@2619 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-08-02 Mateusz Loskot @@ -17016,37 +21295,32 @@ 2009-07-17 Paul Ramsey * source/headers/geos/io/WKBReader.h, source/io/WKBReader.cpp: - Remove static string in WKB reader (#232) git-svn-id: - http://svn.osgeo.org/geos/trunk@2616 + Remove static string in WKB reader (#232) git-svn-id: http://svn.osgeo.org/geos/trunk@2616 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-15 Paul Ramsey * swig/geos.i.in, swig/ruby/ruby.i: Add PreparedGeometry and STRtree - support to SWIG (#279) Schuyler Erle git-svn-id: - http://svn.osgeo.org/geos/trunk@2613 + support to SWIG (#279) Schuyler Erle git-svn-id: http://svn.osgeo.org/geos/trunk@2613 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-15 Paul Ramsey * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Add STRtree - support to the C API (#278) Schuyler Erle git-svn-id: - http://svn.osgeo.org/geos/trunk@2612 + support to the C API (#278) Schuyler Erle git-svn-id: http://svn.osgeo.org/geos/trunk@2612 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-15 Paul Ramsey * source/headers/geos/index/strtree/AbstractSTRtree.h, source/index/strtree/AbstractSTRtree.cpp: Add - geos::index::strtree::AbstractSTRtree::iterate (#277) Schuyler Erle - git-svn-id: http://svn.osgeo.org/geos/trunk@2611 + geos::index::strtree::AbstractSTRtree::iterate (#277) Schuyler Erle git-svn-id: http://svn.osgeo.org/geos/trunk@2611 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-06 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug275.xml: Add - automated XML test for issue #275. Succeeds here. git-svn-id: - http://svn.osgeo.org/geos/trunk@2610 + automated XML test for issue #275. Succeeds here. git-svn-id: http://svn.osgeo.org/geos/trunk@2610 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-05 Sandro Santilli @@ -17054,125 +21328,111 @@ * build/msvc90/geos_c_dll/geos_c_dll.vcproj, build/msvc90/geos_lib/geos_lib.vcproj, build/msvc90/geos_unit/geos_unit.vcproj: Apply - fix-msvc90-only2.patch by Sanak from issue #273 git-svn-id: - http://svn.osgeo.org/geos/trunk@2609 + fix-msvc90-only2.patch by Sanak from issue #273 git-svn-id: http://svn.osgeo.org/geos/trunk@2609 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-07-04 Sandro Santilli * source/headers/geos/export.h, source/headers/geos/platform.h.in: - Apply fix-mingw.patch by Sanak (issue #273) git-svn-id: - http://svn.osgeo.org/geos/trunk@2608 + Apply fix-mingw.patch by Sanak (issue #273) git-svn-id: http://svn.osgeo.org/geos/trunk@2608 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-29 Paul Ramsey - * Makefile.am: Include nmake.opt in 'dist' target (#274) - git-svn-id: http://svn.osgeo.org/geos/trunk@2607 + * Makefile.am: Include nmake.opt in 'dist' target (#274) git-svn-id: http://svn.osgeo.org/geos/trunk@2607 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-26 Sandro Santilli * source/headers/geos/operation/buffer/BufferOp.h: Fix typo reported - in ticket #272 git-svn-id: http://svn.osgeo.org/geos/trunk@2605 + in ticket #272 git-svn-id: http://svn.osgeo.org/geos/trunk@2605 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-24 Paul Ramsey * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, tests/unit/capi/geostest.c, tests/unit/capi/test.expected: Expose - Hausdorf distance to CAPI (#264) from Vincent Picavet git-svn-id: - http://svn.osgeo.org/geos/trunk@2604 + Hausdorf distance to CAPI (#264) from Vincent Picavet git-svn-id: http://svn.osgeo.org/geos/trunk@2604 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-24 Paul Ramsey - * source/headers/geos/platform.h.in: Fix stoopid syntax error. - git-svn-id: http://svn.osgeo.org/geos/trunk@2603 + * source/headers/geos/platform.h.in: Fix stoopid syntax error. git-svn-id: http://svn.osgeo.org/geos/trunk@2603 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-24 Paul Ramsey - * configure.in: Remove old logging noise. git-svn-id: - http://svn.osgeo.org/geos/trunk@2602 + * configure.in: Remove old logging noise. git-svn-id: http://svn.osgeo.org/geos/trunk@2602 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-24 Paul Ramsey * configure.in, source/headers/geos/platform.h.in: Fix for #270, bad definition of isnan() in OS/X . This needs to be tested on - other operating systems to make sure it doesn't break them instead. - git-svn-id: http://svn.osgeo.org/geos/trunk@2601 + other operating systems to make sure it doesn't break them instead. git-svn-id: http://svn.osgeo.org/geos/trunk@2601 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-23 Paul Ramsey * source/Makefile.vc, source/dirlist.mk: Fix clean target for VC - build (#267) git-svn-id: http://svn.osgeo.org/geos/trunk@2599 + build (#267) git-svn-id: http://svn.osgeo.org/geos/trunk@2599 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-23 Howard Butler * source/Makefile.vc: fix up syntax of the makefile related to the - patch for #257 git-svn-id: http://svn.osgeo.org/geos/trunk@2598 + patch for #257 git-svn-id: http://svn.osgeo.org/geos/trunk@2598 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-22 Sandro Santilli * tests/unit/capi/GEOSBufferTest.cpp: Add tests for limited mitre - join (now working) git-svn-id: - http://svn.osgeo.org/geos/trunk@2597 + join (now working) git-svn-id: http://svn.osgeo.org/geos/trunk@2597 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-22 Sandro Santilli * source/headers/geos/operation/buffer/BufferParameters.h: Fix bug - in BufferParameters::setMitreLimit git-svn-id: - http://svn.osgeo.org/geos/trunk@2596 + in BufferParameters::setMitreLimit git-svn-id: http://svn.osgeo.org/geos/trunk@2596 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-20 Sandro Santilli - * configure.in: Bump versions (core 3.2.0, capi 1.6.0, port 1.10.0) - git-svn-id: http://svn.osgeo.org/geos/trunk@2595 + * configure.in: Bump versions (core 3.2.0, capi 1.6.0, port 1.10.0) git-svn-id: http://svn.osgeo.org/geos/trunk@2595 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-20 Sandro Santilli * tests/unit/Makefile.am, tests/unit/capi/GEOSBufferTest.cpp: Add - tests for GEOSBufferWithStyle git-svn-id: - http://svn.osgeo.org/geos/trunk@2594 + tests for GEOSBufferWithStyle git-svn-id: http://svn.osgeo.org/geos/trunk@2594 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-19 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Extend the C-API interface to expose a GEOSBufferWithStyle (and corresponding - thread-safe version) and related enums. git-svn-id: - http://svn.osgeo.org/geos/trunk@2593 + thread-safe version) and related enums. git-svn-id: http://svn.osgeo.org/geos/trunk@2593 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-16 Sandro Santilli * source/algorithm/RobustDeterminant.cpp, source/headers/geos/algorithm/RobustDeterminant.h: Sync - RobustDeterminant to JTS-1.10 (r1.15 was just commented-out code) - git-svn-id: http://svn.osgeo.org/geos/trunk@2592 + RobustDeterminant to JTS-1.10 (r1.15 was just commented-out code) git-svn-id: http://svn.osgeo.org/geos/trunk@2592 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-16 Sandro Santilli * source/algorithm/RobustDeterminant.cpp, source/headers/geos/algorithm/RobustDeterminant.h: Sync - RobustDeterminant to revision 1.14 git-svn-id: - http://svn.osgeo.org/geos/trunk@2591 + RobustDeterminant to revision 1.14 git-svn-id: http://svn.osgeo.org/geos/trunk@2591 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-16 Sandro Santilli * source/algorithm/RobustDeterminant.cpp, source/headers/geos/algorithm/RobustDeterminant.h: Port info for - RobustDeterminant git-svn-id: http://svn.osgeo.org/geos/trunk@2590 + RobustDeterminant git-svn-id: http://svn.osgeo.org/geos/trunk@2590 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-16 Sandro Santilli @@ -17183,20 +21443,18 @@ source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveVertexList.h, tests/xmltester/XMLTester.cpp: Revert single-sided patch. Martin - Davis is workin on it from the JTS side git-svn-id: - http://svn.osgeo.org/geos/trunk@2589 + Davis is workin on it from the JTS side git-svn-id: http://svn.osgeo.org/geos/trunk@2589 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-16 Paul Ramsey - * HOWTO_RELEASE: add reminders on bump versions in various places - git-svn-id: http://svn.osgeo.org/geos/trunk@2581 + * HOWTO_RELEASE: add reminders on bump versions in various places git-svn-id: http://svn.osgeo.org/geos/trunk@2581 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Paul Ramsey * source/headers/geos/Makefile.am: operation.h in Makefile.am twice. - (#261) git-svn-id: http://svn.osgeo.org/geos/trunk@2580 + (#261) git-svn-id: http://svn.osgeo.org/geos/trunk@2580 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Sandro Santilli @@ -17219,15 +21477,13 @@ source/io/StringTokenizer.cpp, source/io/WKBReader.cpp, source/io/WKBWriter.cpp, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/io/Writer.cpp: Port info in the - geos::io namespace git-svn-id: - http://svn.osgeo.org/geos/trunk@2579 + geos::io namespace git-svn-id: http://svn.osgeo.org/geos/trunk@2579 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Sandro Santilli * source/io/WKTWriter.cpp: Put CLocalizer in the correct function. - Fixes #260 for the writing part. git-svn-id: - http://svn.osgeo.org/geos/trunk@2578 + Fixes #260 for the writing part. git-svn-id: http://svn.osgeo.org/geos/trunk@2578 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Sandro Santilli @@ -17235,22 +21491,19 @@ * capi/geos_ts_c.cpp: Stop explicitly using the CLocalizer now that it is done within WKTReader and WKTWriter (see bug #260). Some deep testing about this would be good. Make check worked for me with - comma-using locale. git-svn-id: - http://svn.osgeo.org/geos/trunk@2577 + comma-using locale. git-svn-id: http://svn.osgeo.org/geos/trunk@2577 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Sandro Santilli * source/io/WKTReader.cpp, source/io/WKTWriter.cpp: Use C locale - while reading/writing WKT. Fixes bug #260. git-svn-id: - http://svn.osgeo.org/geos/trunk@2576 + while reading/writing WKT. Fixes bug #260. git-svn-id: http://svn.osgeo.org/geos/trunk@2576 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-15 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug176.xml: Add - XML version of the testcase provided for bug #176 git-svn-id: - http://svn.osgeo.org/geos/trunk@2575 + XML version of the testcase provided for bug #176 git-svn-id: http://svn.osgeo.org/geos/trunk@2575 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17271,15 +21524,14 @@ source/operation/valid/SimpleNestedRingTester.cpp, source/operation/valid/SweeplineNestedRingTester.cpp, source/operation/valid/TopologyValidationError.cpp: JTS-1.10 port - sync. The whole 'operation' namespace is complete on this. - git-svn-id: http://svn.osgeo.org/geos/trunk@2572 + sync. The whole 'operation' namespace is complete on this. git-svn-id: http://svn.osgeo.org/geos/trunk@2572 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * source/headers/geos/operation/union/CascadedPolygonUnion.h, source/operation/union/CascadedPolygonUnion.cpp: Port info for - operation::union git-svn-id: http://svn.osgeo.org/geos/trunk@2571 + operation::union git-svn-id: http://svn.osgeo.org/geos/trunk@2571 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17288,16 +21540,14 @@ source/headers/geos/operation/predicate/SegmentIntersectionTester.h , source/operation/predicate/RectangleIntersects.cpp, source/operation/predicate/SegmentIntersectionTester.cpp: Sync to - JTS-1.10 (port info in SegmentIntersectionTester was wrong, btw) - git-svn-id: http://svn.osgeo.org/geos/trunk@2570 + JTS-1.10 (port info in SegmentIntersectionTester was wrong, btw) git-svn-id: http://svn.osgeo.org/geos/trunk@2570 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * source/headers/geos/operation/predicate/RectangleContains.h, source/operation/predicate/RectangleContains.cpp: Sync - RectangleContains to JTS-1.10 git-svn-id: - http://svn.osgeo.org/geos/trunk@2569 + RectangleContains to JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2569 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17306,8 +21556,7 @@ source/headers/geos/operation/predicate/RectangleIntersects.h, source/headers/geos/operation/predicate/SegmentIntersectionTester.h , source/operation/predicate/SegmentIntersectionTester.cpp: Port - info for operation::predicate (we're at JTS-1.7 here) git-svn-id: - http://svn.osgeo.org/geos/trunk@2568 + info for operation::predicate (we're at JTS-1.7 here) git-svn-id: http://svn.osgeo.org/geos/trunk@2568 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17322,8 +21571,7 @@ source/operation/polygonize/PolygonizeEdge.cpp, source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp: Port info for - polygonize operation git-svn-id: - http://svn.osgeo.org/geos/trunk@2567 + polygonize operation git-svn-id: http://svn.osgeo.org/geos/trunk@2567 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17336,16 +21584,14 @@ or.h, source/operation/overlay/validate/FuzzyPointLocator.cpp, source/operation/overlay/validate/OffsetPointGenerator.cpp, source/operation/overlay/validate/OverlayResultValidator.cpp: Port - info and sync for operation::overlay::validate git-svn-id: - http://svn.osgeo.org/geos/trunk@2566 + info and sync for operation::overlay::validate git-svn-id: http://svn.osgeo.org/geos/trunk@2566 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * source/headers/geos/operation/overlay/LineBuilder.h, source/operation/overlay/LineBuilder.cpp: sync LineBuilder to - JTS-1.10, completing overlay port git-svn-id: - http://svn.osgeo.org/geos/trunk@2565 + JTS-1.10, completing overlay port git-svn-id: http://svn.osgeo.org/geos/trunk@2565 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17365,7 +21611,7 @@ source/operation/overlay/MinimalEdgeRing.cpp, source/operation/overlay/OverlayNodeFactory.cpp, source/operation/overlay/PointBuilder.cpp: Complete port info in - overlay package git-svn-id: http://svn.osgeo.org/geos/trunk@2564 + overlay package git-svn-id: http://svn.osgeo.org/geos/trunk@2564 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17374,8 +21620,7 @@ source/headers/geos/planargraph/GraphComponent.h, source/operation/linemerge/LineMerger.cpp: Add missing setMarked static methods in GraphComponent and make use of them in LineMerger - making it able to be called incrementally (JTS-1.10) git-svn-id: - http://svn.osgeo.org/geos/trunk@2563 + making it able to be called incrementally (JTS-1.10) git-svn-id: http://svn.osgeo.org/geos/trunk@2563 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17393,24 +21638,21 @@ source/operation/linemerge/LineMerger.cpp, source/operation/linemerge/LineSequencer.cpp: Port info in operation::linemerge (a single class is still at JTS-1.7, needs - changes in GeometryGraphComponent.h to go up) git-svn-id: - http://svn.osgeo.org/geos/trunk@2562 + changes in GeometryGraphComponent.h to go up) git-svn-id: http://svn.osgeo.org/geos/trunk@2562 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * source/headers/geos/operation/distance/GeometryLocation.h, source/operation/distance/GeometryLocation.cpp: GeometryLocation - sync to JTS-1.10 (docs) git-svn-id: - http://svn.osgeo.org/geos/trunk@2561 + sync to JTS-1.10 (docs) git-svn-id: http://svn.osgeo.org/geos/trunk@2561 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h, source/operation/distance/DistanceOp.cpp: DistanceOp sync to - JTS-1.10 (renames, docs...) git-svn-id: - http://svn.osgeo.org/geos/trunk@2560 + JTS-1.10 (renames, docs...) git-svn-id: http://svn.osgeo.org/geos/trunk@2560 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17434,15 +21676,13 @@ source/operation/buffer/OffsetCurveVertexList.h, source/operation/buffer/RightmostEdgeFinder.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: Update port info - for buffer package (it's really JTS-1.10) git-svn-id: - http://svn.osgeo.org/geos/trunk@2559 + for buffer package (it's really JTS-1.10) git-svn-id: http://svn.osgeo.org/geos/trunk@2559 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli * configure.in: Warn at configure time if 64bit integer type isn't - found. See bug #202. git-svn-id: - http://svn.osgeo.org/geos/trunk@2558 + found. See bug #202. git-svn-id: http://svn.osgeo.org/geos/trunk@2558 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-08 Sandro Santilli @@ -17521,8 +21761,7 @@ source/headers/geos/util/Makefile.am, tests/unit/Makefile.am: Install all C++ headers to reduce maintainance costs. C++ API is documented as being unstable after all so let's give users the power - to hurt themselves :) git-svn-id: - http://svn.osgeo.org/geos/trunk@2557 + to hurt themselves :) git-svn-id: http://svn.osgeo.org/geos/trunk@2557 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-06 Sandro Santilli @@ -17770,14 +22009,13 @@ source/headers/geos/util/UnsupportedOperationException.h, source/index/intervalrtree/SortedPackedIntervalRTree.cpp: Windows C++ exports by Ragi Y. Burhum. See - http://lists.osgeo.org/pipermail/geos-devel/2009-June/004190.html - git-svn-id: http://svn.osgeo.org/geos/trunk@2556 + http://lists.osgeo.org/pipermail/geos-devel/2009-June/004190.html git-svn-id: http://svn.osgeo.org/geos/trunk@2556 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-06 Sandro Santilli * tests/xmltester/SimpleWKTTester.cpp: fix headers inclusion - warnings git-svn-id: http://svn.osgeo.org/geos/trunk@2555 + warnings git-svn-id: http://svn.osgeo.org/geos/trunk@2555 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-06 Sandro Santilli @@ -17801,8 +22039,7 @@ tests/unit/operation/distance/DistanceOpTest.cpp: Use real NaNs rather than fake them. Applies patch in ticket #259. Adds autoconf checks for finite() and isfinite() and makes use of them for unix - systems (platform.h) git-svn-id: - http://svn.osgeo.org/geos/trunk@2554 + systems (platform.h) git-svn-id: http://svn.osgeo.org/geos/trunk@2554 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-06 Sandro Santilli @@ -17816,28 +22053,25 @@ source/operation/distance/ConnectedElementLocationFilter.cpp, source/operation/distance/ConnectedElementPointFilter.cpp, source/operation/distance/GeometryLocation.cpp: Complete port info - and headers exposion for operation::distance package git-svn-id: - http://svn.osgeo.org/geos/trunk@2553 + and headers exposion for operation::distance package git-svn-id: http://svn.osgeo.org/geos/trunk@2553 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli * source/headers/geos/operation/overlay/OverlayOp.h, - source/operation/overlay/OverlayOp.cpp: JTS-1.10 OverlayOp - git-svn-id: http://svn.osgeo.org/geos/trunk@2552 + source/operation/overlay/OverlayOp.cpp: JTS-1.10 OverlayOp git-svn-id: http://svn.osgeo.org/geos/trunk@2552 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli * source/headers/geos/geomgraph/EdgeNodingValidator.h: Add missing - static function git-svn-id: http://svn.osgeo.org/geos/trunk@2551 + static function git-svn-id: http://svn.osgeo.org/geos/trunk@2551 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli * source/headers/geos/operation/overlay/MaximalEdgeRing.h, - source/operation/overlay/MaximalEdgeRing.cpp: JTS-1.10 sync - git-svn-id: http://svn.osgeo.org/geos/trunk@2550 + source/operation/overlay/MaximalEdgeRing.cpp: JTS-1.10 sync git-svn-id: http://svn.osgeo.org/geos/trunk@2550 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17846,16 +22080,14 @@ source/headers/geos/operation/relate/RelateOp.h, source/operation/GeometryGraphOperation.cpp, source/operation/relate/RelateOp.cpp: Boundary Node Rule support in - relateOp. JTS-1.10. git-svn-id: - http://svn.osgeo.org/geos/trunk@2549 + relateOp. JTS-1.10. git-svn-id: http://svn.osgeo.org/geos/trunk@2549 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli * source/geomgraph/EdgeList.cpp, source/geomgraph/Node.cpp, source/headers/geos/geomgraph/Node.h: geomgraph package fully - sync'ed to JTS-1.10 now git-svn-id: - http://svn.osgeo.org/geos/trunk@2548 + sync'ed to JTS-1.10 now git-svn-id: http://svn.osgeo.org/geos/trunk@2548 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17867,8 +22099,7 @@ source/headers/geos/operation/valid/ConsistentAreaTester.h, source/operation/relate/EdgeEndBundle.cpp, source/operation/valid/ConsistentAreaTester.cpp: added - BoundaryNodeRule capability to EdgeEnds git-svn-id: - http://svn.osgeo.org/geos/trunk@2547 + BoundaryNodeRule capability to EdgeEnds git-svn-id: http://svn.osgeo.org/geos/trunk@2547 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17876,8 +22107,7 @@ * source/geomgraph/GeometryGraph.cpp, source/headers/geos/geomgraph/GeometryGraph.h, source/headers/geos/geomgraph/GeometryGraph.inl: Add support for - custom BoundaryNodeRule bringing GeometryGraph to JTS-1.10 - git-svn-id: http://svn.osgeo.org/geos/trunk@2546 + custom BoundaryNodeRule bringing GeometryGraph to JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2546 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17900,8 +22130,7 @@ source/headers/geos/geomgraph/Position.h, source/headers/geos/geomgraph/Quadrant.h, source/headers/geos/geomgraph/TopologyLocation.h: Complete port info - in geomgraph package git-svn-id: - http://svn.osgeo.org/geos/trunk@2545 + in geomgraph package git-svn-id: http://svn.osgeo.org/geos/trunk@2545 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17920,8 +22149,7 @@ source/headers/geos/geomgraph/NodeMap.h, source/headers/geos/geomgraph/PlanarGraph.h: Port info in the geomgraph package (unfinished); fix compiler warning in - GeometryGraph and make code more readable; git-svn-id: - http://svn.osgeo.org/geos/trunk@2544 + GeometryGraph and make code more readable; git-svn-id: http://svn.osgeo.org/geos/trunk@2544 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17942,20 +22170,17 @@ source/operation/relate/RelateNodeFactory.cpp, source/operation/relate/RelateNodeGraph.cpp, source/operation/relate/RelateOp.cpp: Add port info and introduce - header exposion info. Relate op results partially in JTS-1.7 still. - git-svn-id: http://svn.osgeo.org/geos/trunk@2543 + header exposion info. Relate op results partially in JTS-1.7 still. git-svn-id: http://svn.osgeo.org/geos/trunk@2543 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli - * source/headers/geos/geom.h: typo in doxygen index page - git-svn-id: http://svn.osgeo.org/geos/trunk@2542 + * source/headers/geos/geom.h: typo in doxygen index page git-svn-id: http://svn.osgeo.org/geos/trunk@2542 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli - * source/headers/geos/geom.h: Fix doxygen link git-svn-id: - http://svn.osgeo.org/geos/trunk@2541 + * source/headers/geos/geom.h: Fix doxygen link git-svn-id: http://svn.osgeo.org/geos/trunk@2541 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli @@ -17966,14 +22191,13 @@ source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h: Fix deletion of void pointer in IntervalRTreeLeafNode, document ownership, fix callers tracking allocations to avoid leaks. Fixes - bug #227. git-svn-id: http://svn.osgeo.org/geos/trunk@2540 + bug #227. git-svn-id: http://svn.osgeo.org/geos/trunk@2540 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-05 Sandro Santilli * ChangeLog.svn, Makefile.am: Allow generating ChangeLog from - external build tree git-svn-id: - http://svn.osgeo.org/geos/trunk@2539 + external build tree git-svn-id: http://svn.osgeo.org/geos/trunk@2539 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-04 Mateusz Loskot @@ -17984,10 +22208,10 @@ source/geom/LinearRing.cpp, source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h, source/index/chain/MonotoneChainBuilder.cpp, - tests/unit/operation/valid/IsValidTest.cpp: * Applied patch for ticket #257. * Noticed that unit tests fail: - 1>geos::util::UniqueCoordinateArrayFilter: . 1>---> group: + tests/unit/operation/valid/IsValidTest.cpp: * Applied patch for ticket #257. * Noticed that unit tests fail: + 1>geos::util::UniqueCoordinateArrayFilter: . 1>---> group: geos::operation::valid::IsValidOp, test: test<1> 1> problem: - assertion failed git-svn-id: http://svn.osgeo.org/geos/trunk@2538 + assertion failed git-svn-id: http://svn.osgeo.org/geos/trunk@2538 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-04 Mateusz Loskot @@ -18000,13 +22224,13 @@ 2009-06-04 Sandro Santilli * tests/xmltester/XMLTester.cpp: Add support for testing single - sided buffers git-svn-id: http://svn.osgeo.org/geos/trunk@2536 + sided buffers git-svn-id: http://svn.osgeo.org/geos/trunk@2536 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-06-01 Howard Butler * capi/geos_c.cpp: #256 finishGEOS called multiple times will - segfault git-svn-id: http://svn.osgeo.org/geos/trunk@2534 + segfault git-svn-id: http://svn.osgeo.org/geos/trunk@2534 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-28 Mateusz Loskot @@ -18017,21 +22241,18 @@ 2009-05-27 Paul Ramsey - * NEWS: remove error git-svn-id: - http://svn.osgeo.org/geos/trunk@2516 + * NEWS: remove error git-svn-id: http://svn.osgeo.org/geos/trunk@2516 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-27 Paul Ramsey - * NEWS: Add single-sided item git-svn-id: - http://svn.osgeo.org/geos/trunk@2515 + * NEWS: Add single-sided item git-svn-id: http://svn.osgeo.org/geos/trunk@2515 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-21 Sandro Santilli * ChangeLog.svn, Makefile.am, authors.svn: Add Mat's and Paul's - entries, make ChangeLog.svn rule phony git-svn-id: - http://svn.osgeo.org/geos/trunk@2514 + entries, make ChangeLog.svn rule phony git-svn-id: http://svn.osgeo.org/geos/trunk@2514 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-21 Sandro Santilli @@ -18041,41 +22262,35 @@ usernames and full names: please expand your own nick. The generated ChangeLog is added to repository to show you how it looks. If everybody agree we could rename this to ChangeLog and stop requiring - manual edits (+1 from me:) git-svn-id: - http://svn.osgeo.org/geos/trunk@2513 + manual edits (+1 from me:) git-svn-id: http://svn.osgeo.org/geos/trunk@2513 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-13 Frank Warmerdam - * capi/geos_c.h.in: refer to GEOSFree() instead of free() - git-svn-id: http://svn.osgeo.org/geos/trunk@2508 + * capi/geos_c.h.in: refer to GEOSFree() instead of free() git-svn-id: http://svn.osgeo.org/geos/trunk@2508 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-13 Frank Warmerdam * capi/geos_c.cpp, capi/geos_ts_c.cpp: forward GEOSFree to - GEOSFree_r, use std:: prefix on free() (#249) git-svn-id: - http://svn.osgeo.org/geos/trunk@2507 + GEOSFree_r, use std:: prefix on free() (#249) git-svn-id: http://svn.osgeo.org/geos/trunk@2507 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-13 Frank Warmerdam * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: - Added GEOSFree() and GEOSFree_r() (#249) git-svn-id: - http://svn.osgeo.org/geos/trunk@2506 + Added GEOSFree() and GEOSFree_r() (#249) git-svn-id: http://svn.osgeo.org/geos/trunk@2506 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-12 Sandro Santilli - * NEWS: Add note about single-sided buffer git-svn-id: - http://svn.osgeo.org/geos/trunk@2505 + * NEWS: Add note about single-sided buffer git-svn-id: http://svn.osgeo.org/geos/trunk@2505 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-12 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug244.xml: - Never fail bug #244 again (regression testcase added) git-svn-id: - http://svn.osgeo.org/geos/trunk@2504 + Never fail bug #244 again (regression testcase added) git-svn-id: http://svn.osgeo.org/geos/trunk@2504 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-12 Sandro Santilli @@ -18083,57 +22298,49 @@ * source/operation/buffer/SubgraphDepthLocater.cpp: Have DepthSegment hold a real LineSegment, not a reference. SubgraphDepthLocater was passing the same LineSegment reference to - multiple DepthSegments, messing everything up. This fixes bug #244. - git-svn-id: http://svn.osgeo.org/geos/trunk@2503 + multiple DepthSegments, messing everything up. This fixes bug #244. git-svn-id: http://svn.osgeo.org/geos/trunk@2503 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-12 Sandro Santilli * source/geomgraph/DirectedEdge.cpp, source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/DirectedEdge.inl: Port info - git-svn-id: http://svn.osgeo.org/geos/trunk@2502 + source/headers/geos/geomgraph/DirectedEdge.inl: Port info git-svn-id: http://svn.osgeo.org/geos/trunk@2502 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * source/headers/geos/operation/overlay/PolygonBuilder.h, - source/operation/overlay/PolygonBuilder.cpp: Update port info - git-svn-id: http://svn.osgeo.org/geos/trunk@2501 + source/operation/overlay/PolygonBuilder.cpp: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@2501 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * capi/geos_c.h.in: When included in a C++ environment, include - and use std::size_t. Patch by Mateusz Loskot, ticket #252. - git-svn-id: http://svn.osgeo.org/geos/trunk@2500 + and use std::size_t. Patch by Mateusz Loskot, ticket #252. git-svn-id: http://svn.osgeo.org/geos/trunk@2500 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * source/operation/distance/DistanceOp.cpp: Oops, forgot to update - the static closedPoints signature.. git-svn-id: - http://svn.osgeo.org/geos/trunk@2499 + the static closedPoints signature.. git-svn-id: http://svn.osgeo.org/geos/trunk@2499 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli - * NEWS: Note the withinDistance addition to DistanceOp git-svn-id: - http://svn.osgeo.org/geos/trunk@2498 + * NEWS: Note the withinDistance addition to DistanceOp git-svn-id: http://svn.osgeo.org/geos/trunk@2498 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * tests/unit/operation/distance/DistanceOpTest.cpp: Add the complete - set of tests for closedPoints git-svn-id: - http://svn.osgeo.org/geos/trunk@2497 + set of tests for closedPoints git-svn-id: http://svn.osgeo.org/geos/trunk@2497 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h: Document - semantic of a null return from closestPoints git-svn-id: - http://svn.osgeo.org/geos/trunk@2496 + semantic of a null return from closestPoints git-svn-id: http://svn.osgeo.org/geos/trunk@2496 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli @@ -18144,42 +22351,36 @@ chance to make the GeometryLocation retrival function private as we don't install GeometryLocation.h header anyway (for future cleanups), and to rename a function to follow current JTS naming - (more renames to come for proper sync) git-svn-id: - http://svn.osgeo.org/geos/trunk@2495 + (more renames to come for proper sync) git-svn-id: http://svn.osgeo.org/geos/trunk@2495 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h, source/operation/distance/DistanceOp.cpp: Add isWithinDistance() to - DistanceOp, reaching rev 1.17 of JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@2494 + DistanceOp, reaching rev 1.17 of JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2494 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h, - source/operation/distance/DistanceOp.cpp: Port info for DistanceOp - git-svn-id: http://svn.osgeo.org/geos/trunk@2493 + source/operation/distance/DistanceOp.cpp: Port info for DistanceOp git-svn-id: http://svn.osgeo.org/geos/trunk@2493 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-08 Sandro Santilli - * capi/geos_c.h.in: Always include stddef.h. Closes bug #213 - git-svn-id: http://svn.osgeo.org/geos/trunk@2492 + * capi/geos_c.h.in: Always include stddef.h. Closes bug #213 git-svn-id: http://svn.osgeo.org/geos/trunk@2492 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Add - "thread-safe" version of GEOSGeom_setSRID. Closes bug #242. - git-svn-id: http://svn.osgeo.org/geos/trunk@2491 + "thread-safe" version of GEOSGeom_setSRID. Closes bug #242. git-svn-id: http://svn.osgeo.org/geos/trunk@2491 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli - * tests/bigtest/bug234.cpp: minor debug output improvement - git-svn-id: http://svn.osgeo.org/geos/trunk@2490 + * tests/bigtest/bug234.cpp: minor debug output improvement git-svn-id: http://svn.osgeo.org/geos/trunk@2490 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli @@ -18188,34 +22389,32 @@ tests/bigtest/README, tests/bigtest/bug234.cpp: Skip empty components when building GeometryGraph. Fixes bug #234. Add non-automated test for it, and README file in the directory - containing it... git-svn-id: http://svn.osgeo.org/geos/trunk@2489 + containing it... git-svn-id: http://svn.osgeo.org/geos/trunk@2489 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/bug188.xml: Add - XML testcase for bug 188 git-svn-id: - http://svn.osgeo.org/geos/trunk@2488 + XML testcase for bug 188 git-svn-id: http://svn.osgeo.org/geos/trunk@2488 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli * tests/xmltester/XMLTester.cpp: remove code duplication on buffer - result validation git-svn-id: http://svn.osgeo.org/geos/trunk@2487 + result validation git-svn-id: http://svn.osgeo.org/geos/trunk@2487 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli * source/geom/CoordinateSequenceFactory.cpp, source/headers/geos/geom/CoordinateSequenceFactory.h: Port info, - doxygen cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@2486 + doxygen cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@2486 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-07 Sandro Santilli * tests/unit/capi/GEOSCoordSeqTest.cpp: Add test for creating a - CoordinateSequence with at least 2 dimension git-svn-id: - http://svn.osgeo.org/geos/trunk@2485 + CoordinateSequence with at least 2 dimension git-svn-id: http://svn.osgeo.org/geos/trunk@2485 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli @@ -18223,35 +22422,23 @@ * capi/geos_c.h.in, capi/geos_ts_c.cpp: Fix bug #135, give an hint about GEOSGeom_getDimensions being related to GEOSCoordSeq_getDimensions, fix signed vs. unsigned compiler - warning. git-svn-id: http://svn.osgeo.org/geos/trunk@2484 + warning. git-svn-id: http://svn.osgeo.org/geos/trunk@2484 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * tests/xmltester/markup/MarkupSTL.cpp: Fix compilation warnings - thrown by GCC 4.3.x. Patch by Mateus, closes bug #92. git-svn-id: - http://svn.osgeo.org/geos/trunk@2483 + thrown by GCC 4.3.x. Patch by Mateus, closes bug #92. git-svn-id: http://svn.osgeo.org/geos/trunk@2483 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Mateusz Loskot - * : Updated svn:ignore property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2482 + * : Updated svn:ignore property. git-svn-id: http://svn.osgeo.org/geos/trunk@2482 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli - * source/headers/geos/noding/SegmentNodeList.h, - source/noding/SegmentNodeList.cpp: - findCollapsesFromExistingVertices: don't choke on sets of < 2 - points. Fixes bug #219. git-svn-id: - http://svn.osgeo.org/geos/trunk@2481 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-05-06 Sandro Santilli - - * source/operation/buffer/BufferBuilder.cpp: minor indentation thing - git-svn-id: http://svn.osgeo.org/geos/trunk@2480 + * source/operation/buffer/BufferBuilder.cpp: minor indentation thing git-svn-id: http://svn.osgeo.org/geos/trunk@2480 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli @@ -18266,15 +22453,14 @@ source/noding/MCIndexNoder.cpp, source/noding/MCIndexSegmentSetMutualIntersector.cpp: Cleanup MonotoneChainOverlapAction, reduce heap allocations. Cascade - changes. git-svn-id: http://svn.osgeo.org/geos/trunk@2479 + changes. git-svn-id: http://svn.osgeo.org/geos/trunk@2479 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * source/headers/geos/index/chain/MonotoneChainOverlapAction.h, source/index/chain/MonotoneChainOverlapAction.cpp: Port info (to be - worked on for heap allocations reduction) git-svn-id: - http://svn.osgeo.org/geos/trunk@2478 + worked on for heap allocations reduction) git-svn-id: http://svn.osgeo.org/geos/trunk@2478 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli @@ -18286,7 +22472,7 @@ source/index/chain/MonotoneChainSelectAction.cpp, source/noding/snapround/MCIndexPointSnapper.cpp: MonotoneChainSelectAction port review, heap allocation reduced, - const-corrected. git-svn-id: http://svn.osgeo.org/geos/trunk@2477 + const-corrected. git-svn-id: http://svn.osgeo.org/geos/trunk@2477 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli @@ -18305,22 +22491,21 @@ source/noding/MCIndexSegmentSetMutualIntersector.cpp: MonotoneChain const-correctness and interface cleanups, cascaded changes. Possibly discovered a leak in MCPointInRing algorithm, needs some unit - testing. git-svn-id: http://svn.osgeo.org/geos/trunk@2476 + testing. git-svn-id: http://svn.osgeo.org/geos/trunk@2476 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * source/headers/geos/index/bintree/Interval.h, source/index/bintree/Interval.cpp: Const-correctness for bintree - Interval git-svn-id: http://svn.osgeo.org/geos/trunk@2475 + Interval git-svn-id: http://svn.osgeo.org/geos/trunk@2475 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * source/headers/geos/index/chain/MonotoneChain.h, source/index/chain/MonotoneChain.cpp: Port MonotoneChain up to - JTS-1.10, plus minor dox improvement (memory-oriented) git-svn-id: - http://svn.osgeo.org/geos/trunk@2474 + JTS-1.10, plus minor dox improvement (memory-oriented) git-svn-id: http://svn.osgeo.org/geos/trunk@2474 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli @@ -18328,31 +22513,27 @@ * source/headers/geos/index/chain/MonotoneChainBuilder.h, source/index/chain/MonotoneChainBuilder.cpp: Port MonotoneChainBuilder up to JTS-1.10. Tweak some signatures to use - stricter signedness. git-svn-id: - http://svn.osgeo.org/geos/trunk@2473 + stricter signedness. git-svn-id: http://svn.osgeo.org/geos/trunk@2473 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * source/headers/geos/index/chain/MonotoneChainBuilder.h, source/index/chain/MonotoneChainBuilder.cpp: Port to 1.9, fixing an - out of boundary access in findEdgeEnd git-svn-id: - http://svn.osgeo.org/geos/trunk@2472 + out of boundary access in findEdgeEnd git-svn-id: http://svn.osgeo.org/geos/trunk@2472 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-06 Sandro Santilli * source/headers/geos/index/chain/MonotoneChainBuilder.h, source/index/chain/MonotoneChainBuilder.cpp: Add port info. We're 4 - revision old (catching up next) git-svn-id: - http://svn.osgeo.org/geos/trunk@2471 + revision old (catching up next) git-svn-id: http://svn.osgeo.org/geos/trunk@2471 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-05 Sandro Santilli * source/geom/Envelope.cpp, source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Envelope.inl: Sync Envelope to JTS-1.10 - git-svn-id: http://svn.osgeo.org/geos/trunk@2470 + source/headers/geos/geom/Envelope.inl: Sync Envelope to JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2470 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-05 Sandro Santilli @@ -18360,8 +22541,7 @@ * tests/xmltester/XMLTester.cpp: Add compile-time support to skip use of BinaryOp thus engaging SnapIfNeededOverlayOp used by Geometry methods. Shows that BinaryOp (GEOS-specific original work) gives - better numerical stability. git-svn-id: - http://svn.osgeo.org/geos/trunk@2469 + better numerical stability. git-svn-id: http://svn.osgeo.org/geos/trunk@2469 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-05 Sandro Santilli @@ -18380,33 +22560,30 @@ source/precision/GeometrySnapper.cpp, source/precision/LineStringSnapper.cpp, source/precision/Makefile.am, tests/unit/Makefile.am, - tests/unit/{precision => - operation/overlay/snap}/GeometrySnapperTest.cpp, - tests/unit/{precision => - operation/overlay/snap}/LineStringSnapperTest.cpp: Found old + tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp, + tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp, + tests/unit/precision/GeometrySnapperTest.cpp, + tests/unit/precision/LineStringSnapperTest.cpp: Found old GeometrySnapper/LineStringSnapper classes in an unexpected - directory. Move them where they belong, sync with JTS-1.10. - git-svn-id: http://svn.osgeo.org/geos/trunk@2468 + directory. Move them where they belong, sync with JTS-1.10. git-svn-id: http://svn.osgeo.org/geos/trunk@2468 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-05 Sandro Santilli * source/geom/util/GeometryTransformer.cpp: Fix memory leak on - exception git-svn-id: http://svn.osgeo.org/geos/trunk@2467 + exception git-svn-id: http://svn.osgeo.org/geos/trunk@2467 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli - * source/operation/IsSimpleOp.cpp: Fix memory bug git-svn-id: - http://svn.osgeo.org/geos/trunk@2466 + * source/operation/IsSimpleOp.cpp: Fix memory bug git-svn-id: http://svn.osgeo.org/geos/trunk@2466 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h, source/headers/geos/geom/Geometry.inl: Geometry up to 1.112 with a - minor bugfix and performance improvement in Geometry::covers - git-svn-id: http://svn.osgeo.org/geos/trunk@2465 + minor bugfix and performance improvement in Geometry::covers git-svn-id: http://svn.osgeo.org/geos/trunk@2465 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli @@ -18416,8 +22593,7 @@ revision by having it use SnapIfNeededOp for overlay operations. Note that currently this doesn't affect the C-API nor the XMLTester codes, both using the BinaryOp original class (not JTS-ported) doing - about the same thing as the SnapIfNeededOp class. git-svn-id: - http://svn.osgeo.org/geos/trunk@2464 + about the same thing as the SnapIfNeededOp class. git-svn-id: http://svn.osgeo.org/geos/trunk@2464 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli @@ -18427,31 +22603,35 @@ source/headers/geos/operation/overlay/snap/SnapOverlayOp.h, source/operation/overlay/Makefile.am, source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp: Port - SnapIfNeededOverlayOp git-svn-id: - http://svn.osgeo.org/geos/trunk@2463 + SnapIfNeededOverlayOp git-svn-id: http://svn.osgeo.org/geos/trunk@2463 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli - * source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/overlay/{ => - validate}/FuzzyPointLocator.h, - source/headers/geos/operation/overlay/{ => - validate}/OffsetPointGenerator.h, - source/headers/geos/operation/overlay/{ => - validate}/OverlayResultValidator.h, + * source/headers/geos/operation/overlay/FuzzyPointLocator.h, + source/headers/geos/operation/overlay/Makefile.am, + source/headers/geos/operation/overlay/OffsetPointGenerator.h, + source/headers/geos/operation/overlay/OverlayResultValidator.h, + source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h, + source/headers/geos/operation/overlay/validate/OffsetPointGenerator + .h, + source/headers/geos/operation/overlay/validate/OverlayResultValidat + or.h, source/operation/overlay/FuzzyPointLocator.cpp, source/operation/overlay/Makefile.am, - source/operation/overlay/OverlayOp.cpp, source/operation/overlay/{ - => validate}/FuzzyPointLocator.cpp, source/operation/overlay/{ => - validate}/OffsetPointGenerator.cpp, source/operation/overlay/{ => - validate}/OverlayResultValidator.cpp, tests/unit/Makefile.am, - tests/unit/operation/overlay/{ => - validate}/FuzzyPointLocatorTest.cpp, tests/unit/operation/overlay/{ - => validate}/OffsetPointGeneratorTest.cpp, - tests/unit/operation/overlay/{ => - validate}/OverlayResultValidatorTest.cpp: Move overlay.validate - package files where they belong git-svn-id: - http://svn.osgeo.org/geos/trunk@2462 + source/operation/overlay/OffsetPointGenerator.cpp, + source/operation/overlay/OverlayOp.cpp, + source/operation/overlay/OverlayResultValidator.cpp, + source/operation/overlay/validate/FuzzyPointLocator.cpp, + source/operation/overlay/validate/OffsetPointGenerator.cpp, + source/operation/overlay/validate/OverlayResultValidator.cpp, + tests/unit/Makefile.am, + tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp, + tests/unit/operation/overlay/OverlayResultValidatorTest.cpp, + tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp, + tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp, + tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cp + p: Move overlay.validate package files where they belong git-svn-id: http://svn.osgeo.org/geos/trunk@2462 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli @@ -18462,8 +22642,7 @@ source/operation/overlay/Makefile.am, source/operation/overlay/snap/GeometrySnapper.cpp, source/operation/overlay/snap/SnapOverlayOp.cpp: Port - overlay.snap.SnapOverlayOp, update GeometrySnapper to be more useful - git-svn-id: http://svn.osgeo.org/geos/trunk@2461 + overlay.snap.SnapOverlayOp, update GeometrySnapper to be more useful git-svn-id: http://svn.osgeo.org/geos/trunk@2461 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli @@ -18472,8 +22651,7 @@ source/headers/geos/operation/overlay/snap/GeometrySnapper.h, source/operation/overlay/Makefile.am, source/operation/overlay/snap/GeometrySnapper.cpp: Port - overlay.snap.GeometrySnapper git-svn-id: - http://svn.osgeo.org/geos/trunk@2460 + overlay.snap.GeometrySnapper git-svn-id: http://svn.osgeo.org/geos/trunk@2460 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-04 Sandro Santilli @@ -18482,7 +22660,7 @@ source/operation/overlay/snap/LineStringSnapper.cpp: Extend to accept a vector of const Coordinate pointers for snap pointers, fix typo making it clone snap points rather than source points on - snapping... git-svn-id: http://svn.osgeo.org/geos/trunk@2459 + snapping... git-svn-id: http://svn.osgeo.org/geos/trunk@2459 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18491,8 +22669,7 @@ source/headers/geos/operation/overlay/snap/LineStringSnapper.h, source/operation/overlay/Makefile.am, source/operation/overlay/snap/LineStringSnapper.cpp: Port - overlay.snap.LineStringSnapper from JTS-1.10 git-svn-id: - http://svn.osgeo.org/geos/trunk@2458 + overlay.snap.LineStringSnapper from JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2458 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18503,8 +22680,7 @@ tests/unit/geom/CoordinateArraySequenceTest.cpp: Add an insert-like virtual method to CoordinateSequence. This comes from CoordinateList of JTS, historically bound to CoordinateSequence in GEOS. Add test - for that interface. git-svn-id: - http://svn.osgeo.org/geos/trunk@2457 + for that interface. git-svn-id: http://svn.osgeo.org/geos/trunk@2457 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18512,22 +22688,20 @@ * tests/xmltester/Makefile.am, tests/xmltester/tests/general/MISSING, tests/xmltester/tests/general/TestRectanglePredicate.xml: Copy last - portable JTS general test, add a file with info about what's missing - git-svn-id: http://svn.osgeo.org/geos/trunk@2456 + portable JTS general test, add a file with info about what's missing git-svn-id: http://svn.osgeo.org/geos/trunk@2456 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli * tests/xmltester/tests/testLeaksBig.xml: Drop test also found in - TestFunctionPLPrec.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@2455 + TestFunctionPLPrec.xml git-svn-id: http://svn.osgeo.org/geos/trunk@2455 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli * tests/xmltester/XMLTester.cpp: Add support for testing within, covers and coveredby. Properly use 'arg1' and 'arg2' for these - tests. git-svn-id: http://svn.osgeo.org/geos/trunk@2454 + tests. git-svn-id: http://svn.osgeo.org/geos/trunk@2454 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18535,8 +22709,7 @@ * tests/xmltester/Makefile.am, tests/xmltester/tests/general/TestWithinDistance.xml, tests/xmltester/tests/testLeaksBig.xml: Copy TestWithinDistance.xml - test, drop duplicates from testLeaksBig.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@2453 + test, drop duplicates from testLeaksBig.xml git-svn-id: http://svn.osgeo.org/geos/trunk@2453 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18552,23 +22725,20 @@ tests/xmltester/tests/general/TestFunctionPL.xml, tests/xmltester/tests/general/TestFunctionPLPrec.xml, tests/xmltester/tests/general/TestFunctionPP.xml: More tests from - JTS (TestFunction*) git-svn-id: - http://svn.osgeo.org/geos/trunk@2452 + JTS (TestFunction*) git-svn-id: http://svn.osgeo.org/geos/trunk@2452 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli * tests/xmltester/Makefile.am, - tests/xmltester/tests/general/TestBoundary.xml: Boundary test - git-svn-id: http://svn.osgeo.org/geos/trunk@2451 + tests/xmltester/tests/general/TestBoundary.xml: Boundary test git-svn-id: http://svn.osgeo.org/geos/trunk@2451 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/tests/general/TestConvexHull-big.xml, - tests/xmltester/tests/general/TestConvexHull.xml: ConvexHull tests - git-svn-id: http://svn.osgeo.org/geos/trunk@2450 + tests/xmltester/tests/general/TestConvexHull.xml: ConvexHull tests git-svn-id: http://svn.osgeo.org/geos/trunk@2450 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli @@ -18582,86 +22752,89 @@ tests/xmltester/tests/general/TestRelatePA.xml, tests/xmltester/tests/general/TestRelatePL.xml, tests/xmltester/tests/general/TestRelatePP.xml: Add support for - testing 'contains' in XMLTester, add all Relate tests from JTS - git-svn-id: http://svn.osgeo.org/geos/trunk@2449 + testing 'contains' in XMLTester, add all Relate tests from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2449 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/tests/{ => - general}/TestBuffer.xml, tests/xmltester/tests/{ => - general}/TestBufferMitredJoin.xml, tests/xmltester/tests/{ => - general}/TestCentroid.xml, tests/xmltester/tests/{ => - general}/TestInteriorPoint.xml, tests/xmltester/tests/{ => - general}/TestSimple.xml, tests/xmltester/tests/{ => - general}/TestValid.xml, tests/xmltester/tests/{ => - general}/TestValid2-big.xml, tests/xmltester/tests/{ => - general}/TestValid2.xml: More organization of xml tests: 'general' - subdir following JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@2448 + * tests/xmltester/Makefile.am, + tests/xmltester/tests/TestBuffer.xml, + tests/xmltester/tests/TestBufferMitredJoin.xml, + tests/xmltester/tests/TestCentroid.xml, + tests/xmltester/tests/TestInteriorPoint.xml, + tests/xmltester/tests/TestSimple.xml, + tests/xmltester/tests/TestValid.xml, + tests/xmltester/tests/TestValid2-big.xml, + tests/xmltester/tests/TestValid2.xml, + tests/xmltester/tests/general/TestBuffer.xml, + tests/xmltester/tests/general/TestBufferMitredJoin.xml, + tests/xmltester/tests/general/TestCentroid.xml, + tests/xmltester/tests/general/TestInteriorPoint.xml, + tests/xmltester/tests/general/TestSimple.xml, + tests/xmltester/tests/general/TestValid.xml, + tests/xmltester/tests/general/TestValid2-big.xml, + tests/xmltester/tests/general/TestValid2.xml: More organization of + xml tests: 'general' subdir following JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2448 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/tests/{ => - stmlf}/stmlf-cases-20061020.xml, tests/xmltester/tests/{ => - stmlf}/stmlf-cases-20070119.xml: Put stml testcases under their own - dir (like in JTS) git-svn-id: http://svn.osgeo.org/geos/trunk@2447 + * tests/xmltester/Makefile.am, + tests/xmltester/tests/stmlf-cases-20061020.xml, + tests/xmltester/tests/stmlf-cases-20070119.xml, + tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml, + tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml: Put stml + testcases under their own dir (like in JTS) git-svn-id: http://svn.osgeo.org/geos/trunk@2447 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-05-02 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/tests/{ => - robust}/TestRobustOverlayFixed.xml, + * tests/xmltester/Makefile.am, + tests/xmltester/tests/TestRobustOverlayFixed.xml, + tests/xmltester/tests/robust/TestRobustOverlayFixed.xml, tests/xmltester/tests/robust/TestRobustRelate.xml, tests/xmltester/tests/split.xml: Add a 'split.xml' testcase to confirm 'difference' may be used to split linestrings; add TestRobustRelate.xml from JTS, organize robust-related tests as in - JTS repository. git-svn-id: http://svn.osgeo.org/geos/trunk@2446 + JTS repository. git-svn-id: http://svn.osgeo.org/geos/trunk@2446 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/headers/geos/noding/snapround/SimpleSnapRounder.h: drop - duplicated (and old) port info git-svn-id: - http://svn.osgeo.org/geos/trunk@2444 + duplicated (and old) port info git-svn-id: http://svn.osgeo.org/geos/trunk@2444 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * NEWS, source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/Geometry.inl: Update port info git-svn-id: - http://svn.osgeo.org/geos/trunk@2443 + source/headers/geos/geom/Geometry.inl: Update port info git-svn-id: http://svn.osgeo.org/geos/trunk@2443 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/Point.cpp, source/headers/geos/geom/Point.h: Point - full up to JTS-1.0 (rev 1.37) : adds reverse() git-svn-id: - http://svn.osgeo.org/geos/trunk@2442 + full up to JTS-1.0 (rev 1.37) : adds reverse() git-svn-id: http://svn.osgeo.org/geos/trunk@2442 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/LineString.cpp, source/headers/geos/geom/LineString.h: LineString to rev 1.46 : don't override isSimple, always return - MultiPoint as bondary git-svn-id: - http://svn.osgeo.org/geos/trunk@2441 + MultiPoint as bondary git-svn-id: http://svn.osgeo.org/geos/trunk@2441 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/Polygon.cpp, source/headers/geos/geom/Polygon.h: - Polygon to rev 1.50 (getBoundary always return MultiLineString) - git-svn-id: http://svn.osgeo.org/geos/trunk@2440 + Polygon to rev 1.50 (getBoundary always return MultiLineString) git-svn-id: http://svn.osgeo.org/geos/trunk@2440 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/MultiPoint.cpp, source/headers/geos/geom/MultiPoint.h: - MultiPoint up to rev 1.30 (drop isSimple override) git-svn-id: - http://svn.osgeo.org/geos/trunk@2439 + MultiPoint up to rev 1.30 (drop isSimple override) git-svn-id: http://svn.osgeo.org/geos/trunk@2439 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18669,8 +22842,7 @@ * source/geom/MultiLineString.cpp, source/headers/geos/geom/MultiLineString.h, source/headers/geos/geom/MultiLineString.inl: MultiLineString port - info and sync to 1.40 (don't override isSimple) git-svn-id: - http://svn.osgeo.org/geos/trunk@2438 + info and sync to 1.40 (don't override isSimple) git-svn-id: http://svn.osgeo.org/geos/trunk@2438 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18678,16 +22850,14 @@ * source/geom/MultiPolygon.cpp, source/headers/geos/geom/MultiPolygon.h, source/headers/geos/geom/MultiPolygon.inl: MultiPolygon up to rev - 1.34 (getBoundary always returns a MultiLineString now) - git-svn-id: http://svn.osgeo.org/geos/trunk@2437 + 1.34 (getBoundary always returns a MultiLineString now) git-svn-id: http://svn.osgeo.org/geos/trunk@2437 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/GeometryCollection.cpp, source/headers/geos/geom/GeometryCollection.h: Oops, *now* we're at - 1.14 (drop isSimple, rely on the one in base class) git-svn-id: - http://svn.osgeo.org/geos/trunk@2436 + 1.14 (drop isSimple, rely on the one in base class) git-svn-id: http://svn.osgeo.org/geos/trunk@2436 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18695,36 +22865,32 @@ * source/geom/GeometryCollection.cpp, source/headers/geos/geom/GeometryCollection.h, source/headers/geos/geom/GeometryCollection.inl: Port info. It's at - 1.41 now, JTS is at 1.42 git-svn-id: - http://svn.osgeo.org/geos/trunk@2435 + 1.41 now, JTS is at 1.42 git-svn-id: http://svn.osgeo.org/geos/trunk@2435 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h, source/headers/geos/geom/Geometry.inl: Geometry class up to JTS rev - 1.104 (need reach 1.127...) git-svn-id: - http://svn.osgeo.org/geos/trunk@2434 + 1.104 (need reach 1.127...) git-svn-id: http://svn.osgeo.org/geos/trunk@2434 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * NEWS: Add some info about things changed (might have missed - something) git-svn-id: http://svn.osgeo.org/geos/trunk@2433 + something) git-svn-id: http://svn.osgeo.org/geos/trunk@2433 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/headers/geos/operation/IsSimpleOp.h, - source/operation/IsSimpleOp.cpp: Sync to rev 1.22 (JTS-1.10) - git-svn-id: http://svn.osgeo.org/geos/trunk@2432 + source/operation/IsSimpleOp.cpp: Sync to rev 1.22 (JTS-1.10) git-svn-id: http://svn.osgeo.org/geos/trunk@2432 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/headers/geos/operation.h: EndpointInfo.h header is gone - (it's always been private in JTS) git-svn-id: - http://svn.osgeo.org/geos/trunk@2431 + (it's always been private in JTS) git-svn-id: http://svn.osgeo.org/geos/trunk@2431 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18733,23 +22899,21 @@ source/headers/geos/operation/IsSimpleOp.h, source/headers/geos/operation/Makefile.am, source/operation/IsSimpleOp.cpp: Port revision 1.9 of IsSimplOp : - allow inspecting non-simple location coordinate. git-svn-id: - http://svn.osgeo.org/geos/trunk@2430 + allow inspecting non-simple location coordinate. git-svn-id: http://svn.osgeo.org/geos/trunk@2430 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/geomgraph/EdgeIntersection.cpp, source/headers/geos/geomgraph/EdgeIntersection.h: Sync to revision - 1.5 (JTS-1.10) : add accessors git-svn-id: - http://svn.osgeo.org/geos/trunk@2429 + 1.5 (JTS-1.10) : add accessors git-svn-id: http://svn.osgeo.org/geos/trunk@2429 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/headers/geos/operation/IsSimpleOp.h, source/operation/IsSimpleOp.cpp: port to rev 1.8 (use of - BoundaryNodeRule) git-svn-id: http://svn.osgeo.org/geos/trunk@2428 + BoundaryNodeRule) git-svn-id: http://svn.osgeo.org/geos/trunk@2428 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18757,8 +22921,7 @@ * tests/xmltester/Makefile.am, tests/xmltester/tests/TestSimple.xml, tests/xmltester/tests/testLeaksBig.xml: Import TestSimple.xml from - JTS, drop duplicated tests from testLeaksBig.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@2427 + JTS, drop duplicated tests from testLeaksBig.xml git-svn-id: http://svn.osgeo.org/geos/trunk@2427 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli @@ -18768,15 +22931,14 @@ source/headers/geos/algorithm/BoundaryNodeRule.h, source/headers/geos/algorithm/Makefile.am: Port algorithm::BoundaryNodeRule from JTS-1.10 (needed for IsSimpleOp - sync) git-svn-id: http://svn.osgeo.org/geos/trunk@2426 + sync) git-svn-id: http://svn.osgeo.org/geos/trunk@2426 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-30 Sandro Santilli * source/headers/geos/operation/IsSimpleOp.h, source/operation/IsSimpleOp.cpp: Port info, and sync from 1.14 to - 1.17 (more to do, need more classes) git-svn-id: - http://svn.osgeo.org/geos/trunk@2425 + 1.17 (more to do, need more classes) git-svn-id: http://svn.osgeo.org/geos/trunk@2425 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Mateusz Loskot @@ -18789,8 +22951,7 @@ tests/unit/capi/GEOSPreparedGeometryTest.cpp, tests/unit/capi/GEOSSimplifyTest.cpp, tests/unit/capi/GEOSWithinTest.cpp: test/unit/capi: re-tab all .cpp - files to use spaces. git-svn-id: - http://svn.osgeo.org/geos/trunk@2424 + files to use spaces. git-svn-id: http://svn.osgeo.org/geos/trunk@2424 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Mateusz Loskot @@ -18807,16 +22968,14 @@ GEOSWithinTest and GEOSContainsTest. This is check and response for problems reporting in Ticket #250. Running the new tests does not reproduce the problem, so it likely has been fixed or the bug is - somewhere else (i.e. Django layers). git-svn-id: - http://svn.osgeo.org/geos/trunk@2422 + somewhere else (i.e. Django layers). git-svn-id: http://svn.osgeo.org/geos/trunk@2422 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Sandro Santilli * source/headers/geos/util/GeometricShapeFactory.h, source/util/GeometricShapeFactory.cpp: Sync GeometricShapeFactory to - JTS-1.10 (createArcPolygon added) git-svn-id: - http://svn.osgeo.org/geos/trunk@2421 + JTS-1.10 (createArcPolygon added) git-svn-id: http://svn.osgeo.org/geos/trunk@2421 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Sandro Santilli @@ -18831,8 +22990,7 @@ source/headers/geos/geom/prep/PreparedPolygonCovers.h, source/headers/geos/geom/prep/PreparedPolygonIntersects.h, source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Bring all - geom::prep package in sync with JTS-1.10 git-svn-id: - http://svn.osgeo.org/geos/trunk@2420 + geom::prep package in sync with JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2420 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Sandro Santilli @@ -18840,7 +22998,7 @@ * source/geom/prep/BasicPreparedGeometry.cpp, source/headers/geos/geom/prep/BasicPreparedGeometry.h: Sync BasicPreparedGeometry to JTS-1.10 (short-circuit in - containsProperly) git-svn-id: http://svn.osgeo.org/geos/trunk@2419 + containsProperly) git-svn-id: http://svn.osgeo.org/geos/trunk@2419 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-29 Sandro Santilli @@ -18871,21 +23029,19 @@ source/headers/geos/geom/prep/PreparedPolygonCovers.h, source/headers/geos/geom/prep/PreparedPolygonIntersects.h, source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Add port - information for geom::prep package. Next stop: sync to JTS-1.10. - git-svn-id: http://svn.osgeo.org/geos/trunk@2418 + information for geom::prep package. Next stop: sync to JTS-1.10. git-svn-id: http://svn.osgeo.org/geos/trunk@2418 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * tests/unit/capi/GEOSGeomToWKTTest.cpp: Plug last one. All heap - blocks were freed -- no leaks are possible. git-svn-id: - http://svn.osgeo.org/geos/trunk@2417 + blocks were freed -- no leaks are possible. git-svn-id: http://svn.osgeo.org/geos/trunk@2417 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * tests/unit/algorithm/RobustLineIntersectorTest.cpp: Fix leak in - testcase git-svn-id: http://svn.osgeo.org/geos/trunk@2416 + testcase git-svn-id: http://svn.osgeo.org/geos/trunk@2416 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli @@ -18894,52 +23050,46 @@ source/headers/geos/index/quadtree/Root.h, source/index/quadtree/Node.cpp, source/index/quadtree/Root.cpp: Refactor signatures to make ownership transfers more explicit. Fixed - another leak in Node::insertNode. git-svn-id: - http://svn.osgeo.org/geos/trunk@2415 + another leak in Node::insertNode. git-svn-id: http://svn.osgeo.org/geos/trunk@2415 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/index/quadtree/NodeBase.cpp: Fix memory leak in - NodeBase::remove, exposed by unit testing git-svn-id: - http://svn.osgeo.org/geos/trunk@2414 + NodeBase::remove, exposed by unit testing git-svn-id: http://svn.osgeo.org/geos/trunk@2414 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/headers/geos/index/quadtree/Root.h, - source/index/quadtree/Root.cpp: Port info for quadtree::root - git-svn-id: http://svn.osgeo.org/geos/trunk@2413 + source/index/quadtree/Root.cpp: Port info for quadtree::root git-svn-id: http://svn.osgeo.org/geos/trunk@2413 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/headers/geos/index/quadtree/Node.h, - source/index/quadtree/Node.cpp: Port info for quadtree::Node - git-svn-id: http://svn.osgeo.org/geos/trunk@2412 + source/index/quadtree/Node.cpp: Port info for quadtree::Node git-svn-id: http://svn.osgeo.org/geos/trunk@2412 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/headers/geos/index/quadtree/IntervalSize.h, source/index/quadtree/IntervalSize.cpp: Port info and check, - doxygen. git-svn-id: http://svn.osgeo.org/geos/trunk@2411 + doxygen. git-svn-id: http://svn.osgeo.org/geos/trunk@2411 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/headers/geos/index/quadtree/Quadtree.h, source/index/quadtree/Quadtree.cpp: Sync to JTS-1.10, reduce heap - allocations and pointers usage. Includes a bugfix in collectStats. - git-svn-id: http://svn.osgeo.org/geos/trunk@2410 + allocations and pointers usage. Includes a bugfix in collectStats. git-svn-id: http://svn.osgeo.org/geos/trunk@2410 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli * source/headers/geos/index/quadtree/DoubleBits.h, source/index/quadtree/DoubleBits.cpp: DoubleBits didn't change in - JTS, update port info accordingly git-svn-id: - http://svn.osgeo.org/geos/trunk@2409 + JTS, update port info accordingly git-svn-id: http://svn.osgeo.org/geos/trunk@2409 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-27 Sandro Santilli @@ -18950,8 +23100,7 @@ source/index/quadtree/NodeBase.cpp, source/index/quadtree/Quadtree.cpp: Quadtree's NodeBase: check port sync, add port info, drop unneeded pointers and virtuals, document - objects ownership. git-svn-id: - http://svn.osgeo.org/geos/trunk@2408 + objects ownership. git-svn-id: http://svn.osgeo.org/geos/trunk@2408 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-25 Sandro Santilli @@ -18962,14 +23111,13 @@ source/index/quadtree/Key.cpp, source/index/quadtree/Node.cpp, source/index/quadtree/Root.cpp: Const-correctness, reduced heap allocations and port info for quadtree::Key class, a few more - cleanups in user classes, to be continued. git-svn-id: - http://svn.osgeo.org/geos/trunk@2407 + cleanups in user classes, to be continued. git-svn-id: http://svn.osgeo.org/geos/trunk@2407 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-24 Sandro Santilli * source/index/quadtree/Quadtree.cpp: Fix memory leak in - Quadtree::remove git-svn-id: http://svn.osgeo.org/geos/trunk@2406 + Quadtree::remove git-svn-id: http://svn.osgeo.org/geos/trunk@2406 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-23 Sandro Santilli @@ -18979,31 +23127,27 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveVertexList.h: Apply Single-sided - buffer patch, issue #215. UNTESTED. git-svn-id: - http://svn.osgeo.org/geos/trunk@2405 + buffer patch, issue #215. UNTESTED. git-svn-id: http://svn.osgeo.org/geos/trunk@2405 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp: - Port ValidSelfTouchingRingFormingHoleTest git-svn-id: - http://svn.osgeo.org/geos/trunk@2404 + Port ValidSelfTouchingRingFormingHoleTest git-svn-id: http://svn.osgeo.org/geos/trunk@2404 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/valid/ValidClosedRingTest.cpp: Port - ValidClosedRingTest git-svn-id: - http://svn.osgeo.org/geos/trunk@2403 + ValidClosedRingTest git-svn-id: http://svn.osgeo.org/geos/trunk@2403 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli * source/geom/LineString.cpp, source/headers/geos/geom/LineString.h: - ::reverse returns a Geometry now (to be available up in base class) - git-svn-id: http://svn.osgeo.org/geos/trunk@2402 + ::reverse returns a Geometry now (to be available up in base class) git-svn-id: http://svn.osgeo.org/geos/trunk@2402 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli @@ -19011,22 +23155,19 @@ * source/geom/LinearRing.cpp, source/headers/geos/geom/LinearRing.h, tests/unit/geom/LinearRingTest.cpp: Sync LinearRing to JTS-1.10 - (fixing a bug in isClosed) git-svn-id: - http://svn.osgeo.org/geos/trunk@2401 + (fixing a bug in isClosed) git-svn-id: http://svn.osgeo.org/geos/trunk@2401 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli * tests/unit/Makefile.am, - tests/unit/operation/valid/IsValidTest.cpp: Port IsValidOp unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@2400 + tests/unit/operation/valid/IsValidTest.cpp: Port IsValidOp unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2400 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli * configure.in: Configure for CXX, not C. Should fix unknown tag and - link issues on telascience. git-svn-id: - http://svn.osgeo.org/geos/trunk@2399 + link issues on telascience. git-svn-id: http://svn.osgeo.org/geos/trunk@2399 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-21 Sandro Santilli @@ -19034,102 +23175,77 @@ * configure.in: Add an AC_LIBTOOL_LANG_C_CONFIG call right before the AC_LIBTOOL_COMPILER_OPTION calls. Seems to fix compiler selection on telascience (whereas AC_LANG and AC_LANG_PUSH didn't - work) git-svn-id: http://svn.osgeo.org/geos/trunk@2398 + work) git-svn-id: http://svn.osgeo.org/geos/trunk@2398 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-20 Sandro Santilli * tests/xmltester/BufferResultMatcher.cpp, tests/xmltester/BufferResultMatcher.h: Use JTS heuristic for - distance-0 buffer checking git-svn-id: - http://svn.osgeo.org/geos/trunk@2397 + distance-0 buffer checking git-svn-id: http://svn.osgeo.org/geos/trunk@2397 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-20 Mateusz Loskot - * : Updated svn:ignore patterns. git-svn-id: - http://svn.osgeo.org/geos/trunk@2396 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-04-20 Sandro Santilli - - * configure.in, tests/Makefile.am, tests/perf/Makefile.am, - tests/perf/operation/Makefile.am, - tests/perf/operation/buffer/IteratedBufferStressTest.cpp, - tests/perf/operation/buffer/Makefile.am: Port - IteratedBufferStessTest git-svn-id: - http://svn.osgeo.org/geos/trunk@2395 + * : Updated svn:ignore patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@2396 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-20 Sandro Santilli * source/geomgraph/Quadrant.cpp, source/headers/geos/geomgraph/Quadrant.h: Add named constants, sync - to JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2394 + to JTS-1.10 git-svn-id: http://svn.osgeo.org/geos/trunk@2394 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-20 Mateusz Loskot - * : Updated svn:ignore patterns. git-svn-id: - http://svn.osgeo.org/geos/trunk@2393 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-04-18 Sandro Santilli - - * tests/xmltester/XMLTester.cpp: Use BufferResultMatcher for buffer - operations. No failures. git-svn-id: - http://svn.osgeo.org/geos/trunk@2392 + * : Updated svn:ignore patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@2393 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-18 Sandro Santilli * tests/xmltester/tests/TestBigNastyBuffer.xml: Imported cleaned-up version of fme.xml -- this one fails (the one we have is actually - expecting a wrong result) git-svn-id: - http://svn.osgeo.org/geos/trunk@2391 + expecting a wrong result) git-svn-id: http://svn.osgeo.org/geos/trunk@2391 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-18 Sandro Santilli * tests/xmltester/BufferResultMatcher.cpp: Don't densify coordinates - if buffer distance is 0 git-svn-id: - http://svn.osgeo.org/geos/trunk@2390 + if buffer distance is 0 git-svn-id: http://svn.osgeo.org/geos/trunk@2390 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp: - comment out debugging lines git-svn-id: - http://svn.osgeo.org/geos/trunk@2389 + comment out debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@2389 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * tests/unit/Makefile.am, tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp: - Port DiscreteHausdorffDistance unit test git-svn-id: - http://svn.osgeo.org/geos/trunk@2388 + Port DiscreteHausdorffDistance unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2388 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * source/algorithm/distance/DiscreteHausdorffDistance.cpp, source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h: - Offline some more git-svn-id: http://svn.osgeo.org/geos/trunk@2387 + Offline some more git-svn-id: http://svn.osgeo.org/geos/trunk@2387 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * source/headers/geos/algorithm/distance/PointPairDistance.h: Fix - typo git-svn-id: http://svn.osgeo.org/geos/trunk@2386 + typo git-svn-id: http://svn.osgeo.org/geos/trunk@2386 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * source/algorithm/distance/DiscreteHausdorffDistance.cpp, source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h: - Add missing implementation bits git-svn-id: - http://svn.osgeo.org/geos/trunk@2385 + Add missing implementation bits git-svn-id: http://svn.osgeo.org/geos/trunk@2385 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli @@ -19137,21 +23253,19 @@ * tests/xmltester/BufferResultMatcher.cpp, tests/xmltester/BufferResultMatcher.h, tests/xmltester/XMLTester.cpp: Port BufferResultMatcher. Gives 31 - new failures !! git-svn-id: http://svn.osgeo.org/geos/trunk@2384 + new failures !! git-svn-id: http://svn.osgeo.org/geos/trunk@2384 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * source/headers/geos/geom/BinaryOp.h, tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp: proper inline check_valid - source/headers/geos/geom/BinaryOp.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2383 + source/headers/geos/geom/BinaryOp.h git-svn-id: http://svn.osgeo.org/geos/trunk@2383 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli - * source/headers/geos/geom/BinaryOp.h: Header guard git-svn-id: - http://svn.osgeo.org/geos/trunk@2382 + * source/headers/geos/geom/BinaryOp.h: Header guard git-svn-id: http://svn.osgeo.org/geos/trunk@2382 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli @@ -19159,52 +23273,45 @@ * source/algorithm/LineIntersector.cpp, source/headers/geos/algorithm/LineIntersector.h, tests/unit/algorithm/RobustLineIntersectorTest.cpp: renamed - intersection constants git-svn-id: - http://svn.osgeo.org/geos/trunk@2381 + intersection constants git-svn-id: http://svn.osgeo.org/geos/trunk@2381 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * configure.in: Add debugging output of variables used by AC_LIBTOOL_COMPILER_OPTION. Surprisingly, the buildbots try to use a - fortran compiler there git-svn-id: - http://svn.osgeo.org/geos/trunk@2380 + fortran compiler there git-svn-id: http://svn.osgeo.org/geos/trunk@2380 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-17 Sandro Santilli * configure.in: Differentiate variable used in - AC_LIBTOOL_COMPILE_OPTION for proper use of configuration cache - git-svn-id: http://svn.osgeo.org/geos/trunk@2379 + AC_LIBTOOL_COMPILE_OPTION for proper use of configuration cache git-svn-id: http://svn.osgeo.org/geos/trunk@2379 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-16 Sandro Santilli * configure.in: Use -ffloat-store flag when available. See - http://lists.osgeo.org/pipermail/geos-devel/2009-April/004089.html - git-svn-id: http://svn.osgeo.org/geos/trunk@2378 + http://lists.osgeo.org/pipermail/geos-devel/2009-April/004089.html git-svn-id: http://svn.osgeo.org/geos/trunk@2378 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-16 Sandro Santilli * source/headers/geos/algorithm/LineIntersector.h: Make enum values - explicit, as JTS tests rely on those.. git-svn-id: - http://svn.osgeo.org/geos/trunk@2377 + explicit, as JTS tests rely on those.. git-svn-id: http://svn.osgeo.org/geos/trunk@2377 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-16 Sandro Santilli * tests/unit/Makefile.am, tests/unit/algorithm/RobustLineIntersectorTest.cpp: Port - RobustLineIntersectorTest from JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@2376 + RobustLineIntersectorTest from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2376 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-16 Sandro Santilli * tests/unit/algorithm/RobustLineIntersectionTest.cpp: better - isolation of test-specific functions git-svn-id: - http://svn.osgeo.org/geos/trunk@2375 + isolation of test-specific functions git-svn-id: http://svn.osgeo.org/geos/trunk@2375 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-16 Sandro Santilli @@ -19212,27 +23319,25 @@ * tests/unit/Makefile.am, tests/unit/algorithm/RobustLineIntersectionTest.cpp: Port RobustLineIntersectionTest (mostly failing, but reported by Martin - Davis to be expected) git-svn-id: - http://svn.osgeo.org/geos/trunk@2374 + Davis to be expected) git-svn-id: http://svn.osgeo.org/geos/trunk@2374 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/algorithm/distance/DiscreteHausdorffDistance.cpp, - source/algorithm/distance/{EuclideanDistanceToPoint.cpp => - DistanceToPoint.cpp}, source/algorithm/distance/Makefile.am, + source/algorithm/distance/DistanceToPoint.cpp, + source/algorithm/distance/EuclideanDistanceToPoint.cpp, + source/algorithm/distance/Makefile.am, source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h, - source/headers/geos/algorithm/distance/{EuclideanDistanceToPoint.h - => DistanceToPoint.h}, + source/headers/geos/algorithm/distance/DistanceToPoint.h, + source/headers/geos/algorithm/distance/EuclideanDistanceToPoint.h, source/headers/geos/algorithm/distance/Makefile.am: New class - rename, following JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@2373 + rename, following JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2373 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli - * source/algorithm/HCoordinate.cpp: typo in disabled section - git-svn-id: http://svn.osgeo.org/geos/trunk@2372 + * source/algorithm/HCoordinate.cpp: typo in disabled section git-svn-id: http://svn.osgeo.org/geos/trunk@2372 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli @@ -19240,21 +23345,19 @@ * source/headers/geos/index/quadtree/Key.h, source/headers/geos/index/quadtree/Node.h, source/index/quadtree/Key.cpp: Few more docs about memory management - in quadtree indexing; fix a potential leak in quadtree::Key - git-svn-id: http://svn.osgeo.org/geos/trunk@2371 + in quadtree indexing; fix a potential leak in quadtree::Key git-svn-id: http://svn.osgeo.org/geos/trunk@2371 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/headers/geos/index/quadtree/NodeBase.h: Document ownership - of quadtree::NodeBase subnodes git-svn-id: - http://svn.osgeo.org/geos/trunk@2370 + of quadtree::NodeBase subnodes git-svn-id: http://svn.osgeo.org/geos/trunk@2370 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Fix memory - leak in unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2369 + leak in unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2369 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli @@ -19263,15 +23366,14 @@ source/headers/geos/geom/util/CoordinateOperation.h, source/precision/SimpleGeometryPrecisionReducer.cpp: Fix leak in SimpleGeometryPrecisionReducer, improve memory management docs where - topic. git-svn-id: http://svn.osgeo.org/geos/trunk@2368 + topic. git-svn-id: http://svn.osgeo.org/geos/trunk@2368 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h, tests/unit/operation/distance/DistanceOpTest.cpp: Document ownership - of DistanceOp::closestPoints return, fix leak in unit test. - git-svn-id: http://svn.osgeo.org/geos/trunk@2367 + of DistanceOp::closestPoints return, fix leak in unit test. git-svn-id: http://svn.osgeo.org/geos/trunk@2367 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli @@ -19284,29 +23386,25 @@ source/operation/overlay/PolygonBuilder.cpp: Fix leak in PolygonBuilder (overlay operation). The leak was exposed by the stmlf-cases-20061020.xml testcase. This commit also adds some - doc-only throw specs related to the bug. git-svn-id: - http://svn.osgeo.org/geos/trunk@2366 + doc-only throw specs related to the bug. git-svn-id: http://svn.osgeo.org/geos/trunk@2366 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/operation/valid/IndexedNestedRingTester.cpp: Fix memory - leaks in IsValid operation git-svn-id: - http://svn.osgeo.org/geos/trunk@2365 + leaks in IsValid operation git-svn-id: http://svn.osgeo.org/geos/trunk@2365 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/algorithm/HCoordinate.cpp: Explain why unrolled computation - is turned off, and keep it off git-svn-id: - http://svn.osgeo.org/geos/trunk@2364 + is turned off, and keep it off git-svn-id: http://svn.osgeo.org/geos/trunk@2364 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-15 Sandro Santilli * source/operation/buffer/BufferInputLineSimplifier.cpp: Fix typo in - computing angleOrientation git-svn-id: - http://svn.osgeo.org/geos/trunk@2363 + computing angleOrientation git-svn-id: http://svn.osgeo.org/geos/trunk@2363 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19315,8 +23413,7 @@ tests/xmltester/tests/TestBufferMitredJoin.xml: Temporarly revert the unrolled computation in HCoordinate::intersection. Added mitred join buffer test from JTS (failed with the unrolled comp, to be - further inspected). git-svn-id: - http://svn.osgeo.org/geos/trunk@2362 + further inspected). git-svn-id: http://svn.osgeo.org/geos/trunk@2362 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19331,8 +23428,7 @@ source/headers/geos/algorithm/distance/Makefile.am, source/headers/geos/algorithm/distance/PointPairDistance.h, source/headers/geos/geom/CoordinateSequenceFilter.h: Port the - algorithm::distance package from JTS 1.9 git-svn-id: - http://svn.osgeo.org/geos/trunk@2361 + algorithm::distance package from JTS 1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2361 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19349,23 +23445,21 @@ source/headers/geos/geom/Point.h, source/headers/geos/geom/Polygon.h: Add CoordinateSequenceFilter support, fix default GeometryComponentFilter moving the logic to the - correct place (a Geometry private class). git-svn-id: - http://svn.osgeo.org/geos/trunk@2360 + correct place (a Geometry private class). git-svn-id: http://svn.osgeo.org/geos/trunk@2360 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/algorithm/LineIntersector.cpp, source/headers/geos/algorithm/LineIntersector.h: Sync - (Robust)LineIntersector to JTS-1.9 git-svn-id: - http://svn.osgeo.org/geos/trunk@2359 + (Robust)LineIntersector to JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2359 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/algorithm/CGAlgorithms.cpp, source/headers/geos/algorithm/CGAlgorithms.h: Sync CGAlgorithms with - JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2358 + JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2358 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19375,55 +23469,72 @@ source/headers/geos/algorithm/RayCrossingCounter.h: Fix memory leak in RayCrossingCounter; update signatures to avoid pointers when unneeded; add a locatePointInRing taking a vector of coordinate - pointers, for use by CGAlgorithms git-svn-id: - http://svn.osgeo.org/geos/trunk@2357 + pointers, for use by CGAlgorithms git-svn-id: http://svn.osgeo.org/geos/trunk@2357 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/algorithm/RayCrossingCounter.cpp, source/headers/geos/algorithm/RayCrossingCounter.h: Update port - info, checked against JTS-1.9 git-svn-id: - http://svn.osgeo.org/geos/trunk@2356 + info, checked against JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2356 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/{ => - tests}/TestBuffer.xml, tests/xmltester/{ => - tests}/TestBufferExternal.xml, tests/xmltester/{ => - tests}/TestBufferExternal2.xml, tests/xmltester/{ => - tests}/TestCentroid.xml, tests/xmltester/{ => - tests}/TestInteriorPoint.xml, tests/xmltester/{ => - tests}/TestIsValid.xml, tests/xmltester/{ => - tests}/TestRobustOverlayFixed.xml, tests/xmltester/{ => - tests}/TestValid.xml, tests/xmltester/{ => - tests}/TestValid2-big.xml, tests/xmltester/{ => - tests}/TestValid2.xml, tests/xmltester/{ => tests}/badguy3.xml, - tests/xmltester/{ => tests}/buffer.xml, tests/xmltester/{ => - tests}/buffer_snapround.xml, tests/xmltester/{ => tests}/fme.xml, - tests/xmltester/{ => tests}/heisenbugs.xml, tests/xmltester/{ => - tests}/hexwkb.xml, tests/xmltester/{ => tests}/hole_from_shell.xml, - tests/xmltester/{ => tests}/hole_red.xml, tests/xmltester/{ => - tests}/linemerge.xml, tests/xmltester/{ => tests}/robustness.xml, - tests/xmltester/{ => tests}/stmlf-cases-20061020.xml, - tests/xmltester/{ => tests}/stmlf-cases-20070119.xml, - tests/xmltester/{ => tests}/test.xml, tests/xmltester/{ => - tests}/testLeaksBig.xml: Move XML tests under their own directory - git-svn-id: http://svn.osgeo.org/geos/trunk@2355 + * tests/xmltester/Makefile.am, tests/xmltester/TestBuffer.xml, + tests/xmltester/TestBufferExternal.xml, + tests/xmltester/TestBufferExternal2.xml, + tests/xmltester/TestCentroid.xml, + tests/xmltester/TestInteriorPoint.xml, + tests/xmltester/TestIsValid.xml, + tests/xmltester/TestRobustOverlayFixed.xml, + tests/xmltester/TestValid.xml, tests/xmltester/TestValid2-big.xml, + tests/xmltester/TestValid2.xml, tests/xmltester/badguy3.xml, + tests/xmltester/buffer.xml, tests/xmltester/buffer_snapround.xml, + tests/xmltester/fme.xml, tests/xmltester/heisenbugs.xml, + tests/xmltester/hexwkb.xml, tests/xmltester/hole_from_shell.xml, + tests/xmltester/hole_red.xml, tests/xmltester/linemerge.xml, + tests/xmltester/robustness.xml, + tests/xmltester/stmlf-cases-20061020.xml, + tests/xmltester/stmlf-cases-20070119.xml, tests/xmltester/test.xml, + tests/xmltester/testLeaksBig.xml, + tests/xmltester/tests/TestBuffer.xml, + tests/xmltester/tests/TestBufferExternal.xml, + tests/xmltester/tests/TestBufferExternal2.xml, + tests/xmltester/tests/TestCentroid.xml, + tests/xmltester/tests/TestInteriorPoint.xml, + tests/xmltester/tests/TestIsValid.xml, + tests/xmltester/tests/TestRobustOverlayFixed.xml, + tests/xmltester/tests/TestValid.xml, + tests/xmltester/tests/TestValid2-big.xml, + tests/xmltester/tests/TestValid2.xml, + tests/xmltester/tests/badguy3.xml, + tests/xmltester/tests/buffer.xml, + tests/xmltester/tests/buffer_snapround.xml, + tests/xmltester/tests/fme.xml, + tests/xmltester/tests/heisenbugs.xml, + tests/xmltester/tests/hexwkb.xml, + tests/xmltester/tests/hole_from_shell.xml, + tests/xmltester/tests/hole_red.xml, + tests/xmltester/tests/linemerge.xml, + tests/xmltester/tests/robustness.xml, + tests/xmltester/tests/stmlf-cases-20061020.xml, + tests/xmltester/tests/stmlf-cases-20070119.xml, + tests/xmltester/tests/test.xml, + tests/xmltester/tests/testLeaksBig.xml: Move XML tests under their + own directory git-svn-id: http://svn.osgeo.org/geos/trunk@2355 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Fix memory leak in - BufferBuilder (due to just-ported short-circuit) git-svn-id: - http://svn.osgeo.org/geos/trunk@2354 + BufferBuilder (due to just-ported short-circuit) git-svn-id: http://svn.osgeo.org/geos/trunk@2354 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * tests/xmltester/XMLTester.cpp: Add support for bufferMitredJoin - tests git-svn-id: http://svn.osgeo.org/geos/trunk@2353 + tests git-svn-id: http://svn.osgeo.org/geos/trunk@2353 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19436,30 +23547,28 @@ tests/xmltester/fme.xml, tests/xmltester/testLeaksBig.xml: Fix XML for Buffer testing to match jts layout (arg2 for distance, arg3 for quadrant segments); copy buffer-related tests from jts: they succeed - w/out editing. git-svn-id: http://svn.osgeo.org/geos/trunk@2352 + w/out editing. git-svn-id: http://svn.osgeo.org/geos/trunk@2352 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/headers/geos/operation/buffer/SubgraphDepthLocater.h, source/operation/buffer/SubgraphDepthLocater.cpp: Update port info - of SubgraphDepthLocater git-svn-id: - http://svn.osgeo.org/geos/trunk@2351 + of SubgraphDepthLocater git-svn-id: http://svn.osgeo.org/geos/trunk@2351 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/headers/geos/operation/buffer/RightmostEdgeFinder.h, source/operation/buffer/RightmostEdgeFinder.cpp: Update port info - for RightmostEdgeFinder (checked) git-svn-id: - http://svn.osgeo.org/geos/trunk@2350 + for RightmostEdgeFinder (checked) git-svn-id: http://svn.osgeo.org/geos/trunk@2350 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli * source/headers/geos/operation/buffer/BufferSubgraph.h, source/operation/buffer/BufferSubgraph.cpp: Sync BufferSubgraph to - JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2349 + JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2349 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-14 Sandro Santilli @@ -19467,8 +23576,7 @@ * source/headers/geos/operation/buffer/OffsetCurveBuilder.h, source/operation/buffer/OffsetCurveBuilder.cpp: Port OffsetCurveBuilder from JTS-1.9. Twenty time faster completion of - fme.xml testcase ! git-svn-id: - http://svn.osgeo.org/geos/trunk@2348 + fme.xml testcase ! git-svn-id: http://svn.osgeo.org/geos/trunk@2348 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-10 Sandro Santilli @@ -19476,14 +23584,13 @@ * source/operation/buffer/BufferInputLineSimplifier.cpp, source/operation/buffer/BufferInputLineSimplifier.h, source/operation/buffer/Makefile.am: Port BufferInputLineSimplifier - from JTS 1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2347 + from JTS 1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2347 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-10 Mateusz Loskot * configure.in: Do not generate Makefile for tests/unit/tut. Fixed - bug reported as #247. git-svn-id: - http://svn.osgeo.org/geos/trunk@2346 + bug reported as #247. git-svn-id: http://svn.osgeo.org/geos/trunk@2346 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-10 Sandro Santilli @@ -19491,7 +23598,7 @@ * source/geom/LineSegment.cpp, source/headers/geos/geom/LineSegment.h, source/headers/geos/geom/LineSegment.inl: Sync LineSegment with - JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2345 + JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2345 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Mateusz Loskot @@ -19556,18 +23663,18 @@ tests/unit/tut/tut_runner.hpp, tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, tests/unit/utility.h: Updated tests/unit package with latest relase - of C++ TUT Framework from 2008-11-30. git-svn-id: - http://svn.osgeo.org/geos/trunk@2344 + of C++ TUT Framework from 2008-11-30. git-svn-id: http://svn.osgeo.org/geos/trunk@2344 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Mateusz Loskot - * configure.in, tests/Makefile.am, tests/unit/Makefile.am, tests/{ - => unit}/tut/Makefile.am, tests/{ => unit}/tut/tut.h, tests/{ => - unit}/tut/tut_reporter.h, tests/{ => unit}/tut/tut_restartable.h: + * configure.in, tests/Makefile.am, tests/tut/Makefile.am, + tests/tut/tut.h, tests/tut/tut_reporter.h, + tests/tut/tut_restartable.h, tests/unit/Makefile.am, + tests/unit/tut/Makefile.am, tests/unit/tut/tut.h, + tests/unit/tut/tut_reporter.h, tests/unit/tut/tut_restartable.h: Moved tests/tut to tests/unit/tut. Preparing for update to latest - version of C++ TUT Framework. git-svn-id: - http://svn.osgeo.org/geos/trunk@2343 + version of C++ TUT Framework. git-svn-id: http://svn.osgeo.org/geos/trunk@2343 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Sandro Santilli @@ -19575,7 +23682,7 @@ * source/algorithm/Angle.cpp, source/algorithm/Makefile.am, source/headers/geos/algorithm/Angle.h, source/headers/geos/algorithm/Makefile.am: Port algorithm.Angle from - JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2342 + JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2342 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Sandro Santilli @@ -19587,14 +23694,12 @@ source/operation/buffer/BufferOp.cpp, source/operation/buffer/OffsetCurveBuilder.cpp: Sync BufferBuilder and BufferOp classes to JTS-1.9. Adapt OffsetCurveBuilder to use of - BufferParameter (needs more work for JTS-sync). git-svn-id: - http://svn.osgeo.org/geos/trunk@2341 + BufferParameter (needs more work for JTS-sync). git-svn-id: http://svn.osgeo.org/geos/trunk@2341 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Sandro Santilli - * source/headers/geos/operation/buffer/BufferParameters.h: typo - git-svn-id: http://svn.osgeo.org/geos/trunk@2340 + * source/headers/geos/operation/buffer/BufferParameters.h: typo git-svn-id: http://svn.osgeo.org/geos/trunk@2340 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Sandro Santilli @@ -19603,7 +23708,7 @@ source/headers/geos/operation/buffer/Makefile.am, source/operation/buffer/BufferParameters.cpp, source/operation/buffer/Makefile.am: Port BufferParameters from - JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2339 + JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2339 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-09 Sandro Santilli @@ -19611,8 +23716,7 @@ * source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveVertexList.h: Sync port of OffsetCurveVertexList to JTS-1.9, improve memory management - documentation (would need some refactoring/love) git-svn-id: - http://svn.osgeo.org/geos/trunk@2338 + documentation (would need some refactoring/love) git-svn-id: http://svn.osgeo.org/geos/trunk@2338 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli @@ -19621,20 +23725,17 @@ source/headers/geos/geomgraph/EdgeList.h, source/headers/geos/noding/OrientedCoordinateArray.h: Improve duplicate edge detection performance (JTS-1.9 sync) - fme.xml runs 3 - times as fast now. git-svn-id: - http://svn.osgeo.org/geos/trunk@2337 + times as fast now. git-svn-id: http://svn.osgeo.org/geos/trunk@2337 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli - * source/noding/OrientedCoordinateArray.cpp: const correctness - git-svn-id: http://svn.osgeo.org/geos/trunk@2332 + * source/noding/OrientedCoordinateArray.cpp: const correctness git-svn-id: http://svn.osgeo.org/geos/trunk@2332 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli - * capi/geos_c.h.in: Fix documentation for GEOSPrepare, GEOSPrepare_r - git-svn-id: http://svn.osgeo.org/geos/trunk@2329 + * capi/geos_c.h.in: Fix documentation for GEOSPrepare, GEOSPrepare_r git-svn-id: http://svn.osgeo.org/geos/trunk@2329 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli @@ -19643,7 +23744,7 @@ source/headers/geos/noding/OrientedCoordinateArray.h, source/noding/Makefile.am, source/noding/OrientedCoordinateArray.cpp: OrientedCoordinateArray - ported from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2328 + ported from JTS git-svn-id: http://svn.osgeo.org/geos/trunk@2328 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli @@ -19651,23 +23752,20 @@ * source/geom/CoordinateSequence.cpp, source/headers/geos/geom/CoordinateSequence.h: Add increasingDirection static method, from JTS's CoordinateArray (GEOS - puts all of them in CoordinateSequence for historical reasons) - git-svn-id: http://svn.osgeo.org/geos/trunk@2327 + puts all of them in CoordinateSequence for historical reasons) git-svn-id: http://svn.osgeo.org/geos/trunk@2327 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli * source/headers/geos/noding/snapround/SimpleSnapRounder.h, source/noding/snapround/SimpleSnapRounder.cpp: Complete porting of - SimpleSnapRounder (refactoring for adding snapped nodes) - git-svn-id: http://svn.osgeo.org/geos/trunk@2326 + SimpleSnapRounder (refactoring for adding snapped nodes) git-svn-id: http://svn.osgeo.org/geos/trunk@2326 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli * source/headers/geos/noding/SegmentStringUtil.h: Improve - documentation about memory usage for SegmentStringUtil class - git-svn-id: http://svn.osgeo.org/geos/trunk@2325 + documentation about memory usage for SegmentStringUtil class git-svn-id: http://svn.osgeo.org/geos/trunk@2325 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli @@ -19675,28 +23773,24 @@ * tests/unit/Makefile.am, tests/unit/capi/GEOSPreparedGeometryTest.cpp: Stub initial unit tests for C-API's GEOSPreparedGeometry operations. Helped fixing - issue 147 of postgis git-svn-id: - http://svn.osgeo.org/geos/trunk@2324 + issue 147 of postgis git-svn-id: http://svn.osgeo.org/geos/trunk@2324 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli * source/geom/prep/PreparedPolygonContainsProperly.cpp: Don't access - deleted memory. Fixes issue 147. git-svn-id: - http://svn.osgeo.org/geos/trunk@2323 + deleted memory. Fixes issue 147. git-svn-id: http://svn.osgeo.org/geos/trunk@2323 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli - * source/noding/snapround/HotPixel.cpp: Fix typo git-svn-id: - http://svn.osgeo.org/geos/trunk@2322 + * source/noding/snapround/HotPixel.cpp: Fix typo git-svn-id: http://svn.osgeo.org/geos/trunk@2322 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli * tests/unit/noding/SegmentNodeTest.cpp: Add a couple more tests to - SegmentNode unit test git-svn-id: - http://svn.osgeo.org/geos/trunk@2321 + SegmentNode unit test git-svn-id: http://svn.osgeo.org/geos/trunk@2321 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-08 Sandro Santilli @@ -19708,7 +23802,7 @@ source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, tests/unit/noding/SegmentNodeTest.cpp, tests/unit/noding/SegmentPointComparatorTest.cpp: Port SegmentNode - to JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2320 + to JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2320 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli @@ -19744,19 +23838,19 @@ source/noding/snapround/MCIndexSnapRounder.cpp, source/noding/snapround/SimpleSnapRounder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, - tests/unit/Makefile.am, tests/unit/noding/{SegmentStringTest.cpp => - BasicSegmentStringTest.cpp}, + tests/unit/Makefile.am, + tests/unit/noding/BasicSegmentStringTest.cpp, tests/unit/noding/NodedSegmentStringTest.cpp, - tests/unit/noding/SegmentNodeTest.cpp: Refactor SegmentString to be - an abstract class, to be in sync with JTS-1.9. git-svn-id: - http://svn.osgeo.org/geos/trunk@2319 + tests/unit/noding/SegmentNodeTest.cpp, + tests/unit/noding/SegmentStringTest.cpp: Refactor SegmentString to + be an abstract class, to be in sync with JTS-1.9. git-svn-id: http://svn.osgeo.org/geos/trunk@2319 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli * source/operation/valid/IndexedNestedRingTester.cpp, source/operation/valid/IndexedNestedRingTester.h: update copyright - notice git-svn-id: http://svn.osgeo.org/geos/trunk@2318 + notice git-svn-id: http://svn.osgeo.org/geos/trunk@2318 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli @@ -19764,21 +23858,19 @@ * source/headers/geos/noding/snapround/HotPixel.h, source/headers/geos/noding/snapround/HotPixel.inl, source/noding/snapround/HotPixel.cpp: Sync HotPixel to JTS-1.9 (rev - 1.3); fix a few bugs and use standard algorithms for min/max - git-svn-id: http://svn.osgeo.org/geos/trunk@2317 + 1.3); fix a few bugs and use standard algorithms for min/max git-svn-id: http://svn.osgeo.org/geos/trunk@2317 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli * source/headers/geos/noding/NodedSegmentString.h: Fix signed vs. - unsigned compiler warning git-svn-id: - http://svn.osgeo.org/geos/trunk@2316 + unsigned compiler warning git-svn-id: http://svn.osgeo.org/geos/trunk@2316 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli * source/headers/geos/operation/valid/IsValidOp.h: Port info, - indenting git-svn-id: http://svn.osgeo.org/geos/trunk@2315 + indenting git-svn-id: http://svn.osgeo.org/geos/trunk@2315 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli @@ -19787,43 +23879,37 @@ source/operation/valid/IndexedNestedRingTester.h, source/operation/valid/IsValidOp.cpp, source/operation/valid/Makefile.am: Port IndexedNestedRingTester and - have IsValidOp use it, syncing the operation to JTS-1.9 - git-svn-id: http://svn.osgeo.org/geos/trunk@2314 + have IsValidOp use it, syncing the operation to JTS-1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2314 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli * source/headers/geos/noding/SegmentStringUtil.h: Update port info, - minor tweaks to doxygen comments git-svn-id: - http://svn.osgeo.org/geos/trunk@2313 + minor tweaks to doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@2313 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-07 Sandro Santilli * source/algorithm/HCoordinate.cpp, source/headers/geos/algorithm/HCoordinate.h: Sync HCoordinate class - to JTS-1.9 (rev 1.18) git-svn-id: - http://svn.osgeo.org/geos/trunk@2312 + to JTS-1.9 (rev 1.18) git-svn-id: http://svn.osgeo.org/geos/trunk@2312 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-04-03 Mateusz Loskot * nmake.opt: Added _NMAKE_VER 9.00.21022.08 to nmake.opt. Fixed bug - with using BUILD_DEBUG instead of BUILD_BATCH in nmake.opt. - git-svn-id: http://svn.osgeo.org/geos/trunk@2311 + with using BUILD_DEBUG instead of BUILD_BATCH in nmake.opt. git-svn-id: http://svn.osgeo.org/geos/trunk@2311 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-27 Mateusz Loskot * build/msvc80/geos.sln, build/msvc80/geos_lib/geos_lib.vcproj: - Updated build/msvc80. git-svn-id: - http://svn.osgeo.org/geos/trunk@2310 + Updated build/msvc80. git-svn-id: http://svn.osgeo.org/geos/trunk@2310 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-27 Mateusz Loskot - * nmake.opt, source/Makefile.vc: Forgotten nmake.opt in last commit. - git-svn-id: http://svn.osgeo.org/geos/trunk@2309 + * nmake.opt, source/Makefile.vc: Forgotten nmake.opt in last commit. git-svn-id: http://svn.osgeo.org/geos/trunk@2309 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-26 Mateusz Loskot @@ -19833,109 +23919,95 @@ makefiles. Added nmake.opt file - GDAL style. Added some auto-magic to determine version of Visual C++ compiler and set version specific compilation flags. No need to specify Visual C++ version in cmd - line, but just run: nmake -f makefile.vc in root dir of the tree. - git-svn-id: http://svn.osgeo.org/geos/trunk@2308 + line, but just run: nmake -f makefile.vc in root dir of the tree. git-svn-id: http://svn.osgeo.org/geos/trunk@2308 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-26 Mateusz Loskot * source/operation/union/CascadedPolygonUnion.cpp: - CascadedPolygonUnion.cpp: added missing std headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@2307 + CascadedPolygonUnion.cpp: added missing std headers. git-svn-id: http://svn.osgeo.org/geos/trunk@2307 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-26 Mateusz Loskot - * TODO: Dummy commit - testing buildbot resurection. git-svn-id: - http://svn.osgeo.org/geos/trunk@2306 + * TODO: Dummy commit - testing buildbot resurection. git-svn-id: http://svn.osgeo.org/geos/trunk@2306 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-24 Mateusz Loskot * capi/geos_ts_c.cpp: Fixed bug introduced in recent refactoring work (r2281). This is the reason of PostGIS regression test failing - (Issue 143) git-svn-id: http://svn.osgeo.org/geos/trunk@2304 + (Issue 143) git-svn-id: http://svn.osgeo.org/geos/trunk@2304 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-24 Paul Ramsey - * autogen.sh: Allow version test to work in glibtoolize - git-svn-id: http://svn.osgeo.org/geos/trunk@2303 + * autogen.sh: Allow version test to work in glibtoolize git-svn-id: http://svn.osgeo.org/geos/trunk@2303 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-24 Mateusz Loskot * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring, assert() to test against nullptr - where it is forbidden. git-svn-id: - http://svn.osgeo.org/geos/trunk@2302 + where it is forbidden. git-svn-id: http://svn.osgeo.org/geos/trunk@2302 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-24 Mateusz Loskot * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: REVERTED r2299: Fixed GEOSSetSRID_r missing, GEOSSetSRID duplicated (Ticket - #242). A little of refactoring. git-svn-id: - http://svn.osgeo.org/geos/trunk@2301 + #242). A little of refactoring. git-svn-id: http://svn.osgeo.org/geos/trunk@2301 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-24 Mateusz Loskot * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp: Fixed GEOSSetSRID_r missing, GEOSSetSRID duplicated (Ticket #242). A - little of refactoring. git-svn-id: - http://svn.osgeo.org/geos/trunk@2300 + little of refactoring. git-svn-id: http://svn.osgeo.org/geos/trunk@2300 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring, use single return expression per function, added assert() to test against - nullptr where it is forbidden. git-svn-id: - http://svn.osgeo.org/geos/trunk@2299 + nullptr where it is forbidden. git-svn-id: http://svn.osgeo.org/geos/trunk@2299 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring, use single return expression per function, added assert() to test against - nullptr where it is forbidden, addd some comments. git-svn-id: - http://svn.osgeo.org/geos/trunk@2298 + nullptr where it is forbidden, addd some comments. git-svn-id: http://svn.osgeo.org/geos/trunk@2298 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring, use single return expression per function, added assert() to test against - nullptr where it is forbidden, addd some comments. git-svn-id: - http://svn.osgeo.org/geos/trunk@2297 + nullptr where it is forbidden, addd some comments. git-svn-id: http://svn.osgeo.org/geos/trunk@2297 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring, replace manual strdup with gstrdup, use single return expression per - function, added some comments. git-svn-id: - http://svn.osgeo.org/geos/trunk@2296 + function, added some comments. git-svn-id: http://svn.osgeo.org/geos/trunk@2296 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot - * autogen.sh: dummy commit git-svn-id: - http://svn.osgeo.org/geos/trunk@2295 + * autogen.sh: dummy commit git-svn-id: http://svn.osgeo.org/geos/trunk@2295 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot - * autogen.sh: autogen.sh: Fixed typo in tab character. git-svn-id: - http://svn.osgeo.org/geos/trunk@2294 + * autogen.sh: autogen.sh: Fixed typo in tab character. git-svn-id: http://svn.osgeo.org/geos/trunk@2294 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot * autogen.sh: autogen.sh: be more verbose about versions, check for - autoconf, check if ./configure is really generated. git-svn-id: - http://svn.osgeo.org/geos/trunk@2293 + autoconf, check if ./configure is really generated. git-svn-id: http://svn.osgeo.org/geos/trunk@2293 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot @@ -19953,20 +24025,17 @@ 2009-03-23 Mateusz Loskot * autogen.sh: autogen.sh: Call libtool *before* aclocal and automake - (see Automake manual,8.3.9.1). git-svn-id: - http://svn.osgeo.org/geos/trunk@2290 + (see Automake manual,8.3.9.1). git-svn-id: http://svn.osgeo.org/geos/trunk@2290 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-23 Mateusz Loskot - * autogen.sh: autogen.sh: verbose check if autotools versions. - git-svn-id: http://svn.osgeo.org/geos/trunk@2289 + * autogen.sh: autogen.sh: verbose check if autotools versions. git-svn-id: http://svn.osgeo.org/geos/trunk@2289 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-22 Paul Ramsey - * autogen.sh: Show what versions of things we're running - git-svn-id: http://svn.osgeo.org/geos/trunk@2288 + * autogen.sh: Show what versions of things we're running git-svn-id: http://svn.osgeo.org/geos/trunk@2288 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot @@ -19974,43 +24043,32 @@ * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: refactoring - removed redundant return expressions, replaced bloated use of malloc + memcpy with single call to gstrdup, use of C++ cast operators, - removed unnecessary allocation of std::string objects. git-svn-id: - http://svn.osgeo.org/geos/trunk@2287 + removed unnecessary allocation of std::string objects. git-svn-id: http://svn.osgeo.org/geos/trunk@2287 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: added gstrdup and gstrdup_s helper functions to get rid of bloated code in future. - Started eliminating redundant return expressions. git-svn-id: - http://svn.osgeo.org/geos/trunk@2286 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-03-21 Mateusz Loskot - - * : macros: Updated svn:ignore property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2285 + Started eliminating redundant return expressions. git-svn-id: http://svn.osgeo.org/geos/trunk@2286 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot - * capi/geos_ts_c.cpp: capi/geos_ts_c.cpp: Use of spaces instead of - tabs applied. git-svn-id: http://svn.osgeo.org/geos/trunk@2284 + * : macros: Updated svn:ignore property. git-svn-id: http://svn.osgeo.org/geos/trunk@2285 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot * source/operation/polygonize/EdgeRing.cpp: source/operation/polygonize/edgering.cpp: cleaned compiler warnings - about mixed integral types. git-svn-id: - http://svn.osgeo.org/geos/trunk@2283 + about mixed integral types. git-svn-id: http://svn.osgeo.org/geos/trunk@2283 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot * capi/geos_ts_c.cpp: Fixed deprecated conversion from string - constant to char* in GEOSisValidReason_r. Small refactoring. - git-svn-id: http://svn.osgeo.org/geos/trunk@2282 + constant to char* in GEOSisValidReason_r. Small refactoring. git-svn-id: http://svn.osgeo.org/geos/trunk@2282 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-21 Mateusz Loskot @@ -20021,20 +24079,12 @@ 2009-03-20 Mateusz Loskot - * : Updated svn:ignore property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2280 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-03-20 Mateusz Loskot - - * build/msvc80/geos_unit/geos_unit.vcproj: Updated build/msvc80 - project. git-svn-id: http://svn.osgeo.org/geos/trunk@2279 + * : Updated svn:ignore property. git-svn-id: http://svn.osgeo.org/geos/trunk@2280 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-19 Paul Ramsey - * autogen.sh: Fix spellingn mistake. git-svn-id: - http://svn.osgeo.org/geos/trunk@2278 + * autogen.sh: Fix spellingn mistake. git-svn-id: http://svn.osgeo.org/geos/trunk@2278 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-19 Mateusz Loskot @@ -20043,75 +24093,60 @@ tests/unit/capi/GEOSGeomFromWKBTest.cpp, tests/unit/utility.h: * tests/unit/capi: added GEOSGeomFromWKBTest with test cases (see comment) reported as a bug (See - http://postgis.refractions.net/pipermail/postgis-devel/2009-March/005199.html). TODO: Reproduce and ask the reporter to submit a ticket if necessary. * test/unit/utility.h: Added helper class wkb_hex_decoder. * Updated build/msvc90 projects. git-svn-id: http://svn.osgeo.org/geos/trunk@2277 5242fede-7e19-0410-aef8-94bd7d2200fb + http://postgis.refractions.net/pipermail/postgis-devel/2009-March/005199.html). TODO: Reproduce and ask the reporter to submit a ticket if necessary.* test/unit/utility.h: Added helper class wkb_hex_decoder. * Updated build/msvc90 projects. git-svn-id: http://svn.osgeo.org/geos/trunk@2277 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-11 Mateusz Loskot * source/operation/distance/DistanceOp.cpp, - tests/unit/operation/distance/DistanceOpTest.cpp: BUG in DistanceOp: - * Test case and explanation of existing bug in - DistanceOp::closestPoints() recently reported by Aya (Ticket #236). - * Refactored closestPoints() method to clearly present where is the - bug. Again, chain calls are evil! Bless clear code! * - tests/unit/operation/distance/DistanceOpTest.cpp: see test case - test<17>, read FIXME comments. Uncomment closestPoints() to run and - reproduce the bug. * A dirty fix: if loc0 or loc1 are nullptr, - return nullptr CoordinatesSequence from closestPoints(). - git-svn-id: http://svn.osgeo.org/geos/trunk@2276 + tests/unit/operation/distance/DistanceOpTest.cpp: BUG in DistanceOp: * Test case and explanation of existing bug in + DistanceOp::closestPoints() recently reported by Aya (Ticket #236). * Refactored closestPoints() method to clearly present where is the + bug. Again, chain calls are evil! Bless clear code! * tests/unit/operation/distance/DistanceOpTest.cpp: see test case + test<17>, read FIXME comments. Uncomment closestPoints() to run and + reproduce the bug. * A dirty fix: if loc0 or loc1 are nullptr, return nullptr + CoordinatesSequence from closestPoints(). git-svn-id: http://svn.osgeo.org/geos/trunk@2276 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-11 Mateusz Loskot * source/geom/CoordinateArraySequence.cpp: Number of assertions in - CoordinateArraySequence class. git-svn-id: - http://svn.osgeo.org/geos/trunk@2275 + CoordinateArraySequence class. git-svn-id: http://svn.osgeo.org/geos/trunk@2275 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-10 Paul Ramsey - * : svn:ignore git-svn-id: http://svn.osgeo.org/geos/trunk@2274 + * : svn:ignore git-svn-id: http://svn.osgeo.org/geos/trunk@2274 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-10 Paul Ramsey - * : svn:ignore git-svn-id: http://svn.osgeo.org/geos/trunk@2273 + * NEWS: Update NEWS for 3.1.0 git-svn-id: http://svn.osgeo.org/geos/trunk@2272 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-03-10 Paul Ramsey - * NEWS: Update NEWS for 3.1.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@2272 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2009-03-10 Paul Ramsey - - * ChangeLog: Update ChangeLog for 3.1.0 release git-svn-id: - http://svn.osgeo.org/geos/trunk@2271 + * ChangeLog: Update ChangeLog for 3.1.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@2271 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-02-07 Paul Ramsey * source/headers/geos/precision/Makefile.am: Include - GeometrySnapper.h in distribution package. git-svn-id: - http://svn.osgeo.org/geos/trunk@2269 + GeometrySnapper.h in distribution package. git-svn-id: http://svn.osgeo.org/geos/trunk@2269 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-02-02 Sean Gillies - * swig/python/README.txt: Note lack of Python support since 3.0 - git-svn-id: http://svn.osgeo.org/geos/trunk@2268 + * swig/python/README.txt: Note lack of Python support since 3.0 git-svn-id: http://svn.osgeo.org/geos/trunk@2268 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-02-02 Sean Gillies - * README: Notes on state of scripting language bindings git-svn-id: - http://svn.osgeo.org/geos/trunk@2267 + * README: Notes on state of scripting language bindings git-svn-id: http://svn.osgeo.org/geos/trunk@2267 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-30 Paul Ramsey - * configure.in: Add new msvc targets to build git-svn-id: - http://svn.osgeo.org/geos/trunk@2266 + * configure.in: Add new msvc targets to build git-svn-id: http://svn.osgeo.org/geos/trunk@2266 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-29 Mateusz Loskot @@ -20129,14 +24164,12 @@ build/msvc90/geos_unit/Makefile.am, build/msvc90/geos_unit/geos_unit.vcproj: Added build/msvc90 with solution and project files for Microsoft Visual C++ 2009 (9.0). - Successfully built and tested GEOS with Visual C++ 9.0. git-svn-id: - http://svn.osgeo.org/geos/trunk@2265 + Successfully built and tested GEOS with Visual C++ 9.0. git-svn-id: http://svn.osgeo.org/geos/trunk@2265 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-29 Paul Ramsey - * README: update autogen.bat ref git-svn-id: - http://svn.osgeo.org/geos/trunk@2264 + * README: update autogen.bat ref git-svn-id: http://svn.osgeo.org/geos/trunk@2264 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-29 Mateusz Loskot @@ -20154,59 +24187,52 @@ source/headers/geos/noding/NodedSegmentString.h, source/headers/geos/noding/SegmentIntersectionDetector.h, source/headers/geos/noding/SegmentStringUtil.h: Fixed broken - svn:keyword Id git-svn-id: http://svn.osgeo.org/geos/trunk@2263 + svn:keyword Id git-svn-id: http://svn.osgeo.org/geos/trunk@2263 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-29 Mateusz Loskot - * bootstrap.bat => autogen.bat: Renamed bootstrap.bat to autogen.bat - for easier guass of the script purpose. Wiki updated. git-svn-id: - http://svn.osgeo.org/geos/trunk@2262 + * autogen.bat, bootstrap.bat: Renamed bootstrap.bat to autogen.bat + for easier guass of the script purpose. Wiki updated. git-svn-id: http://svn.osgeo.org/geos/trunk@2262 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-28 Paul Ramsey - * README: Add to win32 instructions git-svn-id: - http://svn.osgeo.org/geos/trunk@2261 + * README: Add to win32 instructions git-svn-id: http://svn.osgeo.org/geos/trunk@2261 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-27 Paul Ramsey * source/headers/geos/geom/util/Makefile.am: Add GeometryCombiner.h - to include dist git-svn-id: http://svn.osgeo.org/geos/trunk@2260 + to include dist git-svn-id: http://svn.osgeo.org/geos/trunk@2260 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-27 Paul Ramsey * build/msvc80/geos_c_dll/geos_c_dll.vcproj: Revert some junk from - an old commit, per issue #220 git-svn-id: - http://svn.osgeo.org/geos/trunk@2259 + an old commit, per issue #220 git-svn-id: http://svn.osgeo.org/geos/trunk@2259 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-26 Frank Warmerdam * source/Makefile.vc: added two new files related to cascaded - polygon union (#226) git-svn-id: - http://svn.osgeo.org/geos/trunk@2258 + polygon union (#226) git-svn-id: http://svn.osgeo.org/geos/trunk@2258 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-24 Paul Ramsey - * HOWTO_RELEASE: Update git-svn-id: - http://svn.osgeo.org/geos/trunk@2257 + * HOWTO_RELEASE: Update git-svn-id: http://svn.osgeo.org/geos/trunk@2257 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-24 Paul Ramsey - * ChangeLog: Update changelog git-svn-id: - http://svn.osgeo.org/geos/trunk@2256 + * ChangeLog: Update changelog git-svn-id: http://svn.osgeo.org/geos/trunk@2256 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-24 Mateusz Loskot * capi/geos_ts_c.cpp: Fixed mixed signed/unsigned integral types in - geos_ts_c.cpp, so no compilers should flood with warnings now. - git-svn-id: http://svn.osgeo.org/geos/trunk@2255 + geos_ts_c.cpp, so no compilers should flood with warnings now. git-svn-id: http://svn.osgeo.org/geos/trunk@2255 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-24 Mateusz Loskot @@ -20214,8 +24240,7 @@ * build/msvc80/geos_c_dll/geos_c_dll.vcproj, build/msvc80/geos_lib/geos_lib.vcproj, build/msvc80/geos_unit/geos_unit.vcproj: Updated projects for Visual - Studio 2005 adding new .h/.cpp files. git-svn-id: - http://svn.osgeo.org/geos/trunk@2254 + Studio 2005 adding new .h/.cpp files. git-svn-id: http://svn.osgeo.org/geos/trunk@2254 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-23 Mateusz Loskot @@ -20228,8 +24253,7 @@ 2009-01-21 Paul Ramsey * source/geom/Geometry.cpp: Remove geometryCollection protection - from Union/Relate/Intersection/Difference. git-svn-id: - http://svn.osgeo.org/geos/trunk@2252 + from Union/Relate/Intersection/Difference. git-svn-id: http://svn.osgeo.org/geos/trunk@2252 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-20 Paul Ramsey @@ -20238,46 +24262,41 @@ source/headers/geos/operation/union/CascadedPolygonUnion.h, source/operation/union/CascadedPolygonUnion.cpp: Add GEOSUnionCascaded(*GEOSGeometry) to CAPI in preparation for PostGIS - hook-up. git-svn-id: http://svn.osgeo.org/geos/trunk@2251 + hook-up. git-svn-id: http://svn.osgeo.org/geos/trunk@2251 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-19 Paul Ramsey * capi/geos_c.cpp, capi/geos_ts_c.cpp: Formatting changes to - function decls. git-svn-id: http://svn.osgeo.org/geos/trunk@2250 + function decls. git-svn-id: http://svn.osgeo.org/geos/trunk@2250 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-19 Howard Butler - * source/Makefile.vc: fixes to allow building in msvc 2003 - git-svn-id: http://svn.osgeo.org/geos/trunk@2249 + * source/Makefile.vc: fixes to allow building in msvc 2003 git-svn-id: http://svn.osgeo.org/geos/trunk@2249 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-19 Paul Ramsey * configure.in: Make warning flags conditional behind a compiler - test... fix to bug #192 ? git-svn-id: - http://svn.osgeo.org/geos/trunk@2248 + test... fix to bug #192 ? git-svn-id: http://svn.osgeo.org/geos/trunk@2248 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-19 Paul Ramsey * source/headers/geos/operation/union/CascadedPolygonUnion.h, source/operation/union/CascadedPolygonUnion.cpp: Added patch from - hkaiser to allow cascadedunion to be run directly on a multipolygon. - git-svn-id: http://svn.osgeo.org/geos/trunk@2247 + hkaiser to allow cascadedunion to be run directly on a multipolygon. git-svn-id: http://svn.osgeo.org/geos/trunk@2247 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-19 Paul Ramsey - * autogen.sh: Fix error left behind from testing. git-svn-id: - http://svn.osgeo.org/geos/trunk@2246 + * autogen.sh: Fix error left behind from testing. git-svn-id: http://svn.osgeo.org/geos/trunk@2246 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-18 Paul Ramsey - * autogen.sh: Add some more info on missing tools. git-svn-id: - http://svn.osgeo.org/geos/trunk@2245 + * autogen.sh: Add some more info on missing tools. git-svn-id: http://svn.osgeo.org/geos/trunk@2245 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-18 Paul Ramsey @@ -20290,21 +24309,18 @@ build/msvc80/geos_unit/Makefile.am, configure.in, source/Makefile.vc, source/headers/geos/Makefile.am: Add msvc files to distribution target, and update release notes to include updating - version in .vc headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@2244 + version in .vc headers. git-svn-id: http://svn.osgeo.org/geos/trunk@2244 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-18 Paul Ramsey - * configure.in: Add a couple extra program checks. git-svn-id: - http://svn.osgeo.org/geos/trunk@2243 + * configure.in: Add a couple extra program checks. git-svn-id: http://svn.osgeo.org/geos/trunk@2243 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-18 Paul Ramsey * autogen.sh: Add version test for aclocal and automake to allow - OpenSolaris to work. git-svn-id: - http://svn.osgeo.org/geos/trunk@2241 + OpenSolaris to work. git-svn-id: http://svn.osgeo.org/geos/trunk@2241 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-18 Paul Ramsey @@ -20323,65 +24339,58 @@ source/operation/union/CascadedPolygonUnion.cpp, source/operation/union/Makefile.am, tests/unit/Makefile.am, tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Apply - cascaded union patch, for issue #225 git-svn-id: - http://svn.osgeo.org/geos/trunk@2240 + cascaded union patch, for issue #225 git-svn-id: http://svn.osgeo.org/geos/trunk@2240 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-15 Paul Ramsey * tests/xmltester/Makefile.am: Remove XMLTester from list of - installed programs. git-svn-id: - http://svn.osgeo.org/geos/trunk@2239 + installed programs. git-svn-id: http://svn.osgeo.org/geos/trunk@2239 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-14 Paul Ramsey * capi/geos_ts_c.cpp: Remove strdup use from code for compilation in - mingw git-svn-id: http://svn.osgeo.org/geos/trunk@2238 + mingw git-svn-id: http://svn.osgeo.org/geos/trunk@2238 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey * configure.in: Add [macros] include to configure.in directly. Seems - to make more recent aclocals happy git-svn-id: - http://svn.osgeo.org/geos/trunk@2237 + to make more recent aclocals happy git-svn-id: http://svn.osgeo.org/geos/trunk@2237 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey * configure.in: Change AC_SUBST to one-per-line instead of - one-line-for-all. Seems to make more recent autoconf's happier. - git-svn-id: http://svn.osgeo.org/geos/trunk@2236 + one-line-for-all. Seems to make more recent autoconf's happier. git-svn-id: http://svn.osgeo.org/geos/trunk@2236 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey * capi/geos_ts_c.cpp: Change return values for - GEOSWKBWriter_getIncludeSRID_r to match function signature. - git-svn-id: http://svn.osgeo.org/geos/trunk@2235 + GEOSWKBWriter_getIncludeSRID_r to match function signature. git-svn-id: http://svn.osgeo.org/geos/trunk@2235 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey * tests/unit/capi/badthreadtest.c, tests/unit/capi/brokengrammar, - tests/unit/capi/threadtest.c: More files missing from commit. - git-svn-id: http://svn.osgeo.org/geos/trunk@2234 + tests/unit/capi/threadtest.c: More files missing from commit. git-svn-id: http://svn.osgeo.org/geos/trunk@2234 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey - * capi/geos_ts_c.cpp: Add missing file to SVN. git-svn-id: - http://svn.osgeo.org/geos/trunk@2233 + * capi/geos_ts_c.cpp: Add missing file to SVN. git-svn-id: http://svn.osgeo.org/geos/trunk@2233 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-13 Paul Ramsey * capi/Makefile.am, capi/geos_c.cpp, capi/geos_c.h.in, - tests/unit/Makefile.am, {capi => tests/unit/capi}/geostest.c, {capi - => tests/unit/capi}/test.expected, {capi => - tests/unit/capi}/test.wkt, {capi => tests/unit/capi}/testrunner.sh: - Apply patch for issue #210 (thread safe c-api) submitted by Chuck - Thibert. git-svn-id: http://svn.osgeo.org/geos/trunk@2232 + capi/geostest.c, capi/test.expected, capi/test.wkt, + capi/testrunner.sh, tests/unit/Makefile.am, + tests/unit/capi/geostest.c, tests/unit/capi/test.expected, + tests/unit/capi/test.wkt, tests/unit/capi/testrunner.sh: Apply patch + for issue #210 (thread safe c-api) submitted by Chuck Thibert. git-svn-id: http://svn.osgeo.org/geos/trunk@2232 5242fede-7e19-0410-aef8-94bd7d2200fb 2009-01-05 Stephen Wong @@ -20390,41 +24399,37 @@ source/operation/buffer/OffsetCurveVertexList.h, source/operation/linemerge/LineMerger.cpp: Fixed memory leak in BufferBuilder (#218); added read-only coordinates function in - OffsetCurveVertexList; explicity pass ownership in LineMerger. - git-svn-id: http://svn.osgeo.org/geos/trunk@2231 + OffsetCurveVertexList; explicity pass ownership in LineMerger. git-svn-id: http://svn.osgeo.org/geos/trunk@2231 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-26 Paul Ramsey * source/headers/geos/noding/Octant.h, tests/unit/noding/SegmentStringTest.cpp: Octant.h error (#185) from - Denise Macleod. git-svn-id: http://svn.osgeo.org/geos/trunk@2229 + Denise Macleod. git-svn-id: http://svn.osgeo.org/geos/trunk@2229 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-26 Paul Ramsey * source/io/WKBWriter.cpp: Allow proper writing out of z ordinates. - From Justin Bronn (#216) git-svn-id: - http://svn.osgeo.org/geos/trunk@2228 + From Justin Bronn (#216) git-svn-id: http://svn.osgeo.org/geos/trunk@2228 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-26 Paul Ramsey * source/io/WKBReader.cpp: Allow readpoint to look at input - dimension and fill higher ordinates. (#217) git-svn-id: - http://svn.osgeo.org/geos/trunk@2227 + dimension and fill higher ordinates. (#217) git-svn-id: http://svn.osgeo.org/geos/trunk@2227 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-26 Paul Ramsey * capi/geos_c.cpp, capi/geos_c.h.in: Expose GEOSIsValidReason to - CAPI git-svn-id: http://svn.osgeo.org/geos/trunk@2226 + CAPI git-svn-id: http://svn.osgeo.org/geos/trunk@2226 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-18 Paul Ramsey - * source/inlines.cpp: Cygwin build fix from MCA git-svn-id: - http://svn.osgeo.org/geos/trunk@2221 + * source/inlines.cpp: Cygwin build fix from MCA git-svn-id: http://svn.osgeo.org/geos/trunk@2221 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-11 Paul Ramsey @@ -20432,74 +24437,65 @@ * source/geomgraph/EdgeList.cpp, source/headers/geos/geomgraph/EdgeList.h, source/operation/overlay/OverlayOp.cpp: Memory leak on invalid - polygons in intersection(). (#170) from Denise MacLeod. - git-svn-id: http://svn.osgeo.org/geos/trunk@2220 + polygons in intersection(). (#170) from Denise MacLeod. git-svn-id: http://svn.osgeo.org/geos/trunk@2220 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-11-05 Paul Ramsey * source/geom/prep/PreparedLineStringIntersects.cpp: Another minor - memory leak removed. git-svn-id: - http://svn.osgeo.org/geos/trunk@2218 + memory leak removed. git-svn-id: http://svn.osgeo.org/geos/trunk@2218 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-28 Paul Ramsey - * source/inlines.cpp: Cygwin/Mingw patch from Mark Cave-Ayland - git-svn-id: http://svn.osgeo.org/geos/trunk@2217 + * source/inlines.cpp: Cygwin/Mingw patch from Mark Cave-Ayland git-svn-id: http://svn.osgeo.org/geos/trunk@2217 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-23 Frank Warmerdam * source/operation/valid/IsValidOp.cpp: set isChecked flag after - checking to fix memory leak (#169) git-svn-id: - http://svn.osgeo.org/geos/trunk@2210 + checking to fix memory leak (#169) git-svn-id: http://svn.osgeo.org/geos/trunk@2210 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-16 Paul Ramsey - * HOWTO_RELEASE: change info to point to osgeo.org git-svn-id: - http://svn.osgeo.org/geos/trunk@2203 + * HOWTO_RELEASE: change info to point to osgeo.org git-svn-id: http://svn.osgeo.org/geos/trunk@2203 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-14 Paul Ramsey * capi/geos_c.cpp, capi/geos_c.h.in: Consistent const declarations - in c-api ($#209) git-svn-id: http://svn.osgeo.org/geos/trunk@2200 + in c-api ($#209) git-svn-id: http://svn.osgeo.org/geos/trunk@2200 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-13 Paul Ramsey * source/headers/geos/io/Makefile.am: Add CLocalizer.h to build so - it gets packaged in make dist git-svn-id: - http://svn.osgeo.org/geos/trunk@2199 + it gets packaged in make dist git-svn-id: http://svn.osgeo.org/geos/trunk@2199 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-10 Paul Ramsey * source/geom/prep/PreparedPolygonContainsProperly.cpp: One last - memory leak fix. git-svn-id: http://svn.osgeo.org/geos/trunk@2198 + memory leak fix. git-svn-id: http://svn.osgeo.org/geos/trunk@2198 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-09 Paul Ramsey * source/geom/prep/PreparedPolygonIntersects.cpp: Memory leak fix - for for prepared intersects. (#207) git-svn-id: - http://svn.osgeo.org/geos/trunk@2197 + for for prepared intersects. (#207) git-svn-id: http://svn.osgeo.org/geos/trunk@2197 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-10-04 Paul Ramsey * source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, source/noding/MCIndexSegmentSetMutualIntersector.cpp: Memory leak - fix for prepared geometry, from Hartmut Kaiser. (#207) git-svn-id: - http://svn.osgeo.org/geos/trunk@2196 + fix for prepared geometry, from Hartmut Kaiser. (#207) git-svn-id: http://svn.osgeo.org/geos/trunk@2196 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-29 Paul Ramsey - * capi/geos_c.cpp: Put function sig on one line git-svn-id: - http://svn.osgeo.org/geos/trunk@2195 + * capi/geos_c.cpp: Put function sig on one line git-svn-id: http://svn.osgeo.org/geos/trunk@2195 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-23 Mateusz Loskot @@ -20520,8 +24516,7 @@ source/index/strtree/ItemBoundable.cpp: Moved some ctor/dctor bodies from headers to translation units. Improved source code readability. TODO: We need to run a beast like AStyle on all GEOS code because - many places are very hard to read. git-svn-id: - http://svn.osgeo.org/geos/trunk@2194 + many places are very hard to read. git-svn-id: http://svn.osgeo.org/geos/trunk@2194 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-23 Mateusz Loskot @@ -20530,30 +24525,27 @@ MCIndexSegmentSetMutualIntersector::addToIndex: Completed BWJ's comment on memory leaks with important observations about objects relation & lifetime. The note is a diagnosis of roots of the - problem. Improved source code readability. git-svn-id: - http://svn.osgeo.org/geos/trunk@2193 + problem. Improved source code readability. git-svn-id: http://svn.osgeo.org/geos/trunk@2193 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-22 Mateusz Loskot * source/headers/geos/io/WKBWriter.h: Use conditional operators - instead of cast bool to int. git-svn-id: - http://svn.osgeo.org/geos/trunk@2192 + instead of cast bool to int. git-svn-id: http://svn.osgeo.org/geos/trunk@2192 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-22 Mateusz Loskot * source/simplify/TopologyPreservingSimplifier.cpp: Removed unnecessary std::endl from debug messages in - TopologyPreservingSimplifier.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@2191 + TopologyPreservingSimplifier.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@2191 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-21 Mateusz Loskot * source/Makefile.vc: Patched NMAKE makefiles: replaced lib.exe with link.exe /lib command to enabled compilation using Microsoft Visual - C++ Toolkit 2003 git-svn-id: http://svn.osgeo.org/geos/trunk@2190 + C++ Toolkit 2003 git-svn-id: http://svn.osgeo.org/geos/trunk@2190 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-16 Mateusz Loskot @@ -20580,36 +24572,32 @@ 2008-09-16 Mateusz Loskot * build/msvc80/geos_unit/geos_unit.vcproj: Added - PreparedGeometryFactoryTest to geos_unit.vcproj. git-svn-id: - http://svn.osgeo.org/geos/trunk@2186 + PreparedGeometryFactoryTest to geos_unit.vcproj. git-svn-id: http://svn.osgeo.org/geos/trunk@2186 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-16 Mateusz Loskot * build/msvc80/geos_lib/geos_lib.vcproj: Added CLocalizer to - geos_lib.vcproj project for Visual C++ 2005/2008. git-svn-id: - http://svn.osgeo.org/geos/trunk@2185 + geos_lib.vcproj project for Visual C++ 2005/2008. git-svn-id: http://svn.osgeo.org/geos/trunk@2185 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-16 Mateusz Loskot * tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: Include - missing in isPointInRingTest.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@2184 + missing in isPointInRingTest.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@2184 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-09-16 Mateusz Loskot * source/Makefile.vc, source/io/CLocalizer.cpp: Fixed undeclared std::locale in CLocalizer when building using Visual C++ (Ticket - #201) git-svn-id: http://svn.osgeo.org/geos/trunk@2183 + #201) git-svn-id: http://svn.osgeo.org/geos/trunk@2183 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-31 Mateusz Loskot * tests/unit/geos_unit.cpp: Replaced incorrect with - in geos_unit.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@2182 + in geos_unit.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@2182 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-31 Mateusz Loskot @@ -20628,22 +24616,19 @@ 2008-08-29 Mateusz Loskot * capi/geos_c.cpp: Removed redundant return expressions from - geos_c.cpp. Testing changes notifications for buildbot. git-svn-id: - http://svn.osgeo.org/geos/trunk@2179 + geos_c.cpp. Testing changes notifications for buildbot. git-svn-id: http://svn.osgeo.org/geos/trunk@2179 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-29 Mateusz Loskot * capi/geos_c.cpp: Fixed execution paths and removed redundant - return expr in some C API calls. git-svn-id: - http://svn.osgeo.org/geos/trunk@2176 + return expr in some C API calls. git-svn-id: http://svn.osgeo.org/geos/trunk@2176 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-29 Mateusz Loskot * source/headers/geos/io/WKBWriter.h, source/io/WKBWriter.cpp: Added - missing virtual destructor to WKBWriter class. git-svn-id: - http://svn.osgeo.org/geos/trunk@2175 + missing virtual destructor to WKBWriter class. git-svn-id: http://svn.osgeo.org/geos/trunk@2175 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-28 Sean Gillies @@ -20652,34 +24637,30 @@ source/headers/geos/io/CLocalizer.h, source/io/CLocalizer.cpp, source/io/Makefile.am: Added CLocalizer class that switches to C locale and restores to the outer context's locale when deleted - (#201) git-svn-id: http://svn.osgeo.org/geos/trunk@2174 + (#201) git-svn-id: http://svn.osgeo.org/geos/trunk@2174 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-28 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/capi/GEOSGeomToWKTTest.cpp: - tests/unit: added GEOSGeomToWKTTest. git-svn-id: - http://svn.osgeo.org/geos/trunk@2173 + tests/unit: added GEOSGeomToWKTTest. git-svn-id: http://svn.osgeo.org/geos/trunk@2173 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-28 Sean Gillies * capi/geos_c.cpp: Switch to C locale while reading and writing WKT - and restore to the original context's locale afterward (#201) - git-svn-id: http://svn.osgeo.org/geos/trunk@2172 + and restore to the original context's locale afterward (#201) git-svn-id: http://svn.osgeo.org/geos/trunk@2172 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-22 Frank Warmerdam * source/operation/buffer/BufferOp.cpp: include cmath for std::pow() - and std:log() on MSVC7.1 (#199) git-svn-id: - http://svn.osgeo.org/geos/trunk@2171 + and std:log() on MSVC7.1 (#199) git-svn-id: http://svn.osgeo.org/geos/trunk@2171 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-22 Mateusz Loskot - * build/bjam/README: Added build/bjam/README with status note. - git-svn-id: http://svn.osgeo.org/geos/trunk@2170 + * build/bjam/README: Added build/bjam/README with status note. git-svn-id: http://svn.osgeo.org/geos/trunk@2170 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-19 Mateusz Loskot @@ -20693,29 +24674,25 @@ * source/geom/util/CoordinateOperation.cpp, source/geom/util/GeometryEditor.cpp: geos/geom/util: Prefer strict static_cast than C-style cast. Commented ownership transfer of - coordinates object. git-svn-id: - http://svn.osgeo.org/geos/trunk@2168 + coordinates object. git-svn-id: http://svn.osgeo.org/geos/trunk@2168 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-19 Mateusz Loskot * tests/unit/algorithm/ConvexHullTest.cpp: - tests/unit/algorithm/ConvexHullTest.cpp: Fixed memory leaks. - git-svn-id: http://svn.osgeo.org/geos/trunk@2167 + tests/unit/algorithm/ConvexHullTest.cpp: Fixed memory leaks. git-svn-id: http://svn.osgeo.org/geos/trunk@2167 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-19 Mateusz Loskot * tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: - tests/unit/algorithm/CGAlgorithms: Fixed memory leaks. git-svn-id: - http://svn.osgeo.org/geos/trunk@2166 + tests/unit/algorithm/CGAlgorithms: Fixed memory leaks. git-svn-id: http://svn.osgeo.org/geos/trunk@2166 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot * tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp: - tests/unit/algorithm/CGAlgorithms: Fixed number of memory leaks. - git-svn-id: http://svn.osgeo.org/geos/trunk@2165 + tests/unit/algorithm/CGAlgorithms: Fixed number of memory leaks. git-svn-id: http://svn.osgeo.org/geos/trunk@2165 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot @@ -20729,8 +24706,7 @@ * tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/TestSweepLineSpeed.cpp: tests/bigtest: Pointed out - number of memory leaks but not fixing them, waiting for comments. - git-svn-id: http://svn.osgeo.org/geos/trunk@2163 + number of memory leaks but not fixing them, waiting for comments. git-svn-id: http://svn.osgeo.org/geos/trunk@2163 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot @@ -20745,8 +24721,7 @@ tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, tests/unit/utility.h: tests/unit: added tests cases to PreparedGeometryFactoryTest, refactored casting utils and geometry - comparators, small cleanup. git-svn-id: - http://svn.osgeo.org/geos/trunk@2162 + comparators, small cleanup. git-svn-id: http://svn.osgeo.org/geos/trunk@2162 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot @@ -20763,14 +24738,12 @@ source/noding/MCIndexSegmentSetMutualIntersector.cpp, source/noding/NodedSegmentString.cpp, source/noding/SegmentIntersectionDetector.cpp, - source/noding/SegmentStringUtil.cpp: Fixed svn:keywords. - git-svn-id: http://svn.osgeo.org/geos/trunk@2161 + source/noding/SegmentStringUtil.cpp: Fixed svn:keywords. git-svn-id: http://svn.osgeo.org/geos/trunk@2161 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot - * source/headers/geos/util.h: Fixed UNREFERENCED_PARAMETER macro. - git-svn-id: http://svn.osgeo.org/geos/trunk@2160 + * source/headers/geos/util.h: Fixed UNREFERENCED_PARAMETER macro. git-svn-id: http://svn.osgeo.org/geos/trunk@2160 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-18 Mateusz Loskot @@ -20805,14 +24778,12 @@ source/geom/prep/PreparedPolygonCovers.cpp, source/geom/prep/PreparedPolygonIntersects.cpp, source/geom/prep/PreparedPolygonPredicate.cpp: geom/prep: Refactored - kamikaze casts to more readable form. Fixed svn:keywords. - git-svn-id: http://svn.osgeo.org/geos/trunk@2158 + kamikaze casts to more readable form. Fixed svn:keywords. git-svn-id: http://svn.osgeo.org/geos/trunk@2158 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-12 Mateusz Loskot - * source/headers/geos/geomPrep.h: Fixed Id keywords. git-svn-id: - http://svn.osgeo.org/geos/trunk@2157 + * source/headers/geos/geomPrep.h: Fixed Id keywords. git-svn-id: http://svn.osgeo.org/geos/trunk@2157 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-12 Mateusz Loskot @@ -20828,29 +24799,19 @@ 2008-08-12 Mateusz Loskot * source/headers/geos/geom/prep/PreparedGeometryFactory.h: Updated - svn:keywords property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2155 + svn:keywords property. git-svn-id: http://svn.osgeo.org/geos/trunk@2155 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-12 Mateusz Loskot - * : Updated svn:keywords property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2154 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2008-08-11 Mateusz Loskot - - * tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Refactored - tabs vs spaces in PreparedGeometryFactoryTest. git-svn-id: - http://svn.osgeo.org/geos/trunk@2153 + * : Updated svn:keywords property. git-svn-id: http://svn.osgeo.org/geos/trunk@2154 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-11 Mateusz Loskot * source/headers/geos/geom/prep/PreparedGeometryFactory.h: PreparedGeometry must be a complete type where it is destroyed by - the factory (Ticket #198). git-svn-id: - http://svn.osgeo.org/geos/trunk@2152 + the factory (Ticket #198). git-svn-id: http://svn.osgeo.org/geos/trunk@2152 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-11 Mateusz Loskot @@ -20858,54 +24819,47 @@ * source/headers/geos/geom/prep/PreparedGeometryFactory.h, tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Completed PreparedGeometryFactory class with missing named destructor for - PreparedGeometry (Ticket #198) git-svn-id: - http://svn.osgeo.org/geos/trunk@2151 + PreparedGeometry (Ticket #198) git-svn-id: http://svn.osgeo.org/geos/trunk@2151 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-11 Mateusz Loskot - * tests/unit/geom/prep/.PreparedGeometryFactoryTest.cpp.swp: Removed - .PreparedGeometryFactoryTest.cpp.swp that must sneaked accidentally. - git-svn-id: http://svn.osgeo.org/geos/trunk@2150 + * : Removed .PreparedGeometryFactoryTest.cpp.swp that must sneaked + accidentally. git-svn-id: http://svn.osgeo.org/geos/trunk@2150 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-11 Mateusz Loskot * tests/unit/Makefile.am, - tests/unit/geom/prep/.PreparedGeometryFactoryTest.cpp.swp, tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Added PreparedGeometryFactoryTest with first test cases included. FIXME: The test causes memory leak because we don't know how to destroy PreparedGeometry objects returned by the factory, discussing on the - geos-devel list now. git-svn-id: - http://svn.osgeo.org/geos/trunk@2149 + geos-devel list now. git-svn-id: http://svn.osgeo.org/geos/trunk@2149 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-07 Paul Ramsey * source/algorithm/RobustDeterminant.cpp: Added original author to - main copyright block. git-svn-id: - http://svn.osgeo.org/geos/trunk@2148 + main copyright block. git-svn-id: http://svn.osgeo.org/geos/trunk@2148 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-07 Paul Ramsey * source/headers/geos/timeval.h: Change to standard header, with (c) - credit to author. git-svn-id: http://svn.osgeo.org/geos/trunk@2147 + credit to author. git-svn-id: http://svn.osgeo.org/geos/trunk@2147 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-08-01 Mateusz Loskot * ChangeLog: Updated ChangeLog with latest submissions. Hmm, should - we stil maintain the ChangeLog file? git-svn-id: - http://svn.osgeo.org/geos/trunk@2146 + we stil maintain the ChangeLog file? git-svn-id: http://svn.osgeo.org/geos/trunk@2146 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-31 Mateusz Loskot * tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp: Fixed tabs, - hopefully. Updated svn:keywords property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2145 + hopefully. Updated svn:keywords property. git-svn-id: http://svn.osgeo.org/geos/trunk@2145 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-31 Mateusz Loskot @@ -20915,8 +24869,7 @@ completing C API interface with wrapper on Polygonizer::getCutEdges (Ticket #195). Unit test included in tests/unit/capi/GEOSPolygonizer_getCutEdgeTest.cpp. Thanks to Jurgen - E. Fischer for this patch. git-svn-id: - http://svn.osgeo.org/geos/trunk@2144 + E. Fischer for this patch. git-svn-id: http://svn.osgeo.org/geos/trunk@2144 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-26 Mateusz Loskot @@ -20933,35 +24886,25 @@ 2008-07-26 Mateusz Loskot * capi/geos_c.h.in: Guarded version macros with #ifndef conditions - to avoid redefinition errors (Ticket #167). git-svn-id: - http://svn.osgeo.org/geos/trunk@2142 + to avoid redefinition errors (Ticket #167). git-svn-id: http://svn.osgeo.org/geos/trunk@2142 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-26 Mateusz Loskot * source/headers/geos/version.h.in, source/headers/geos/version.h.vc: Guarded version macros with - #ifndef conditions to avoid redefinition errors (Ticket #167). - git-svn-id: http://svn.osgeo.org/geos/trunk@2141 + #ifndef conditions to avoid redefinition errors (Ticket #167). git-svn-id: http://svn.osgeo.org/geos/trunk@2141 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-26 Mateusz Loskot * macros/ac_python_devel.m4: Fixed problems with finding libpython - on Mac Darwin (Ticket #191). git-svn-id: - http://svn.osgeo.org/geos/trunk@2140 + on Mac Darwin (Ticket #191). git-svn-id: http://svn.osgeo.org/geos/trunk@2140 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-26 Mateusz Loskot - * : Updated svn:keywords property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2139 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2008-07-26 Mateusz Loskot - - * autogen.sh: Fixed autogen.sh for OpenSolaris (Ticket #192). - git-svn-id: http://svn.osgeo.org/geos/trunk@2138 + * : Updated svn:keywords property. git-svn-id: http://svn.osgeo.org/geos/trunk@2139 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-25 Mateusz Loskot @@ -20973,27 +24916,18 @@ source/noding/FastNodingValidator.cpp, source/noding/SingleInteriorIntersectionFinder.cpp, source/operation/buffer/OffsetCurveVertexList.h: Updated - svn:keywords property git-svn-id: - http://svn.osgeo.org/geos/trunk@2137 + svn:keywords property git-svn-id: http://svn.osgeo.org/geos/trunk@2137 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-25 Mateusz Loskot - * : Updated svn:keywords property git-svn-id: - http://svn.osgeo.org/geos/trunk@2136 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2008-07-19 Frank Warmerdam - - * source/Makefile.vc: added manifest handling for DLLs (#193) - git-svn-id: http://svn.osgeo.org/geos/trunk@2135 + * : Updated svn:keywords property git-svn-id: http://svn.osgeo.org/geos/trunk@2136 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-19 Frank Warmerdam * source/Makefile.vc: added rules to create platform.h, version.h - and geos_c.h from templates on win32 git-svn-id: - http://svn.osgeo.org/geos/trunk@2134 + and geos_c.h from templates on win32 git-svn-id: http://svn.osgeo.org/geos/trunk@2134 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-15 Mateusz Loskot @@ -21017,79 +24951,30 @@ source/util/math.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/markup/MarkupSTL.h: Fixed compilation on with Sun Studio compiler on Solaris x86 and Sparc (Ticket #189). Thanks to - Magne Mahre for the patch. git-svn-id: - http://svn.osgeo.org/geos/trunk@2131 + Magne Mahre for the patch. git-svn-id: http://svn.osgeo.org/geos/trunk@2131 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-07-15 Mateusz Loskot * source/Makefile.vc: For building with Visual C++, added new flag DEBUG=1 (see GEOS building instructions on GEOS Wiki). Added missing - flags for Visual C++ compiler, in release and debug configuration. - git-svn-id: http://svn.osgeo.org/geos/trunk@2130 + flags for Visual C++ compiler, in release and debug configuration. git-svn-id: http://svn.osgeo.org/geos/trunk@2130 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-05-20 Mateusz Loskot - * source/dirlist.mk: Added missing subdirs to source/dirlist.mk - git-svn-id: http://svn.osgeo.org/geos/trunk@2129 + * source/dirlist.mk: Added missing subdirs to source/dirlist.mk git-svn-id: http://svn.osgeo.org/geos/trunk@2129 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-05-20 Mateusz Loskot - * : Updated svn:ignore patterns. git-svn-id: - http://svn.osgeo.org/geos/trunk@2128 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2008-05-20 Mateusz Loskot - - * ChangeLog, build/msvc80/geos.sln, - build/msvc80/geos_lib/geos_lib.vcproj, - source/geom/GeometryComponentFilter.cpp, - source/geom/PrecisionModel.cpp, - source/geom/util/GeometryTransformer.cpp, - source/headers/geos/geom/BinaryOp.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/Octant.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/operation/overlay/PointBuilder.h, - source/headers/geos/util.h, source/index/quadtree/NodeBase.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentString.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/operation/overlay/FuzzyPointLocator.cpp, - source/operation/overlay/OverlayOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/GeometrySnapper.cpp, - source/simplify/DouglasPeuckerSimplifier.cpp, - tests/unit/geom/DimensionTest.cpp: * source\headers\geos\util.h: Add UNREFERENCED_PARAMETER macro. * - source\geom\PrecisionModel.cpp, - source\geom\GeometryComponentFilter.cpp, - source\geom\util\GeometryTransformer.cpp, - source\precision\GeometrySnapper.cpp, - source\precision\CommonBitsRemover.cpp, - source\simplify\DouglasPeuckerSimplifier.cpp, - source\operation\overlay\OverlayOp.cpp, - source\operation\overlay\FuzzyPointLocator.cpp, - source\index\quadtree\NodeBase.cpp, - source\headers\geos\geom\BinaryOp.h, - source\headers\geos\operation\overlay\PointBuilder.h, - source\headers\geos\noding\MCIndexNoder.h, - source\headers\geos\noding\ScaledNoder.h, - source\headers\geos\noding\Octant.h, - source\noding\ScaledNoder.cpp, - source\noding\snapround\MCIndexPointSnapper.cpp, - source\noding\SegmentString.cpp, tests\unit\geom\DimensionTest.cpp: - Use UNREFERENCED_PARAMETER macro to get rid of C4100 warning when - building with Visual C++. * build\msvc80\geos_lib\geos_lib.vcproj: - Remove non-existing source files. git-svn-id: - http://svn.osgeo.org/geos/trunk@2127 + * : Updated svn:ignore patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@2128 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-05-20 Mateusz Loskot * ChangeLog, source/Makefile.vc: source/makefile.vc: Removed - non-existing file entry: PreparedPolygonLineIntersects.obj. - git-svn-id: http://svn.osgeo.org/geos/trunk@2126 + non-existing file entry: PreparedPolygonLineIntersects.obj. git-svn-id: http://svn.osgeo.org/geos/trunk@2126 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-05-20 Mateusz Loskot @@ -21097,14 +24982,12 @@ * ChangeLog, bootstrap.bat, source/Makefile.vc: * bootstrap.bat: Added script generating headers for use with Visual C++ compiler. DO NOT include this script in GEOS source distribution. * source/makefile.vc: Do not make copies of 3 dynamic - headers but let users to use bootstrap.bat instead. git-svn-id: - http://svn.osgeo.org/geos/trunk@2125 + headers but let users to use bootstrap.bat instead. git-svn-id: http://svn.osgeo.org/geos/trunk@2125 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-02-07 Frank Warmerdam - * Makefile.am: make sure makefile.vc gets distributed git-svn-id: - http://svn.osgeo.org/geos/trunk@2123 + * Makefile.am: make sure makefile.vc gets distributed git-svn-id: http://svn.osgeo.org/geos/trunk@2123 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-02-06 Frank Warmerdam @@ -21112,7 +24995,7 @@ * source/Makefile.am, source/Makefile.vc, source/headers/geos/noding/Makefile.am: try to fix up the files include in distribution, and remove unused files from Makefile.vc - (#175) git-svn-id: http://svn.osgeo.org/geos/trunk@2122 + (#175) git-svn-id: http://svn.osgeo.org/geos/trunk@2122 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb @@ -21146,44 +25029,38 @@ source/headers/geos/noding/SegmentIntersectionDetector.h, source/headers/geos/noding/SegmentSetMutualIntersector.h, source/headers/geos/noding/SegmentStringUtil.h: Added documentation, - for benefit of doxygen. git-svn-id: - http://svn.osgeo.org/geos/trunk@2120 + for benefit of doxygen. git-svn-id: http://svn.osgeo.org/geos/trunk@2120 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb * source/geom/prep/PreparedPolygonIntersects.cpp: deleted - out-commented line. git-svn-id: - http://svn.osgeo.org/geos/trunk@2119 + out-commented line. git-svn-id: http://svn.osgeo.org/geos/trunk@2119 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb * source/geom/prep/PreparedPolygon.cpp: removed ref to - PreparedPolygonLineIntersection git-svn-id: - http://svn.osgeo.org/geos/trunk@2118 + PreparedPolygonLineIntersection git-svn-id: http://svn.osgeo.org/geos/trunk@2118 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb * source/geom/prep/Makefile.am, source/headers/geos/geom/prep/Makefile.am: Removed refs to - PreparedPolygonLineIntersection. git-svn-id: - http://svn.osgeo.org/geos/trunk@2117 + PreparedPolygonLineIntersection. git-svn-id: http://svn.osgeo.org/geos/trunk@2117 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb * source/geom/prep/PreparedPolygonLineIntersection.cpp, source/headers/geos/geom/prep/PreparedPolygonLineIntersection.h: - Deleted. not used, not needed. git-svn-id: - http://svn.osgeo.org/geos/trunk@2116 + Deleted. not used, not needed. git-svn-id: http://svn.osgeo.org/geos/trunk@2116 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-30 Ben Jubb - * source/headers/geos/geomPrep.h: Added for benefit of doxygen. - git-svn-id: http://svn.osgeo.org/geos/trunk@2115 + * source/headers/geos/geomPrep.h: Added for benefit of doxygen. git-svn-id: http://svn.osgeo.org/geos/trunk@2115 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-29 Ben Jubb @@ -21197,84 +25074,72 @@ source/noding/MCIndexSegmentSetMutualIntersector.cpp, source/noding/SegmentIntersectionDetector.cpp: Some small changes to improve the memory management. These changes plug a few leaks, but - not all. git-svn-id: http://svn.osgeo.org/geos/trunk@2114 + not all. git-svn-id: http://svn.osgeo.org/geos/trunk@2114 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-29 Ben Jubb * source/operation/predicate/RectangleContains.cpp: Fix a bug in the shortcut test for containment in a rectangle. This test wasn't - correctly testing for case of a point on the boundary. Was also a - bug in JTS (now fixed). git-svn-id: - http://svn.osgeo.org/geos/trunk@2113 + correctly testing for case of a point on the boundary. Was also a bug in JTS (now fixed). git-svn-id: http://svn.osgeo.org/geos/trunk@2113 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-29 Ben Jubb - * source/geom/Geometry.cpp: Patch to fix bug in ticket #171 - git-svn-id: http://svn.osgeo.org/geos/trunk@2112 + * source/geom/Geometry.cpp: Patch to fix bug in ticket #171 git-svn-id: http://svn.osgeo.org/geos/trunk@2112 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-22 Ben Jubb * capi/geos_c.h.in, source/headers/geos/version.h.vc: Updated for VC - to give correct version (3.1.0-CAPI-1.5.0). git-svn-id: - http://svn.osgeo.org/geos/trunk@2111 + to give correct version (3.1.0-CAPI-1.5.0). git-svn-id: http://svn.osgeo.org/geos/trunk@2111 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-18 Ben Jubb * configure.in: Added to CAPI interface, cleared CAPI_INTERFACE_REV, - bumped AGE & CURRENT git-svn-id: - http://svn.osgeo.org/geos/trunk@2110 + bumped AGE & CURRENT git-svn-id: http://svn.osgeo.org/geos/trunk@2110 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-18 Ben Jubb * source/index/chain/MonotoneChainBuilder.cpp: Fixed a bug in the - handling of line strings with repeated points. -This line, and - those below, will be ignored-- M MonotoneChainBuilder.cpp - git-svn-id: http://svn.osgeo.org/geos/trunk@2109 + handling of line strings with repeated points. -This line, and those below, will be ignored-- M MonotoneChainBuilder.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@2109 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-17 Ben Jubb * capi/geos_c.cpp: Fixed a misspelling, GEOSPreparedContainsProperty - => GEOSPreparedContainsProperly git-svn-id: - http://svn.osgeo.org/geos/trunk@2108 + => GEOSPreparedContainsProperly git-svn-id: http://svn.osgeo.org/geos/trunk@2108 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-16 Frank Warmerdam - * source/Makefile.vc: updated to include post 3.0 classes - git-svn-id: http://svn.osgeo.org/geos/trunk@2107 + * source/Makefile.vc: updated to include post 3.0 classes git-svn-id: http://svn.osgeo.org/geos/trunk@2107 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-09 Ben Jubb * capi/geos_c.cpp, capi/geos_c.h.in: Added support for prepared - geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2106 + geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2106 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-09 Ben Jubb * source/headers/geos/geom/prep/PreparedGeometryFactory.h: removed - extraneous 'using namespace' git-svn-id: - http://svn.osgeo.org/geos/trunk@2105 + extraneous 'using namespace' git-svn-id: http://svn.osgeo.org/geos/trunk@2105 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-03 Ben Jubb * source/noding/MCIndexSegmentSetMutualIntersector.cpp: commented out some delete's in MCIndexSegmentSetMutualIntersector::addToIndex, - to fix a bug in prepared contains() predicate. git-svn-id: - http://svn.osgeo.org/geos/trunk@2104 + to fix a bug in prepared contains() predicate. git-svn-id: http://svn.osgeo.org/geos/trunk@2104 5242fede-7e19-0410-aef8-94bd7d2200fb 2008-01-02 Sean Gillies - * swig/Makefile.am: Conditionally add swig/python,ruby to SUBDIRS - git-svn-id: http://svn.osgeo.org/geos/trunk@2102 + * swig/Makefile.am: Conditionally add swig/python,ruby to SUBDIRS git-svn-id: http://svn.osgeo.org/geos/trunk@2102 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-22 Mateusz Loskot @@ -21295,34 +25160,23 @@ * source/headers/geos/algorithm/Makefile.am: Removed SimplePointInAreaLocator.h from algorithm/Makefile.am (header - migrated to algorithm/locate). git-svn-id: - http://svn.osgeo.org/geos/trunk@2099 + migrated to algorithm/locate). git-svn-id: http://svn.osgeo.org/geos/trunk@2099 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot * source/algorithm/Makefile.am: Added comment about deprecated - translation units in source/algorithm. git-svn-id: - http://svn.osgeo.org/geos/trunk@2098 + translation units in source/algorithm. git-svn-id: http://svn.osgeo.org/geos/trunk@2098 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * source/geom/util/Makefile.am: remove trailing backslash - git-svn-id: http://svn.osgeo.org/geos/trunk@2097 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-12-21 Mateusz Loskot - - * : Updated svn:ignore property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2096 + * source/geom/util/Makefile.am: remove trailing backslash git-svn-id: http://svn.osgeo.org/geos/trunk@2097 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot - * source/geom/prep/PreparedPolygonContainsProperly.cpp: Fixed extra - qualifications in /geom/prep/PreparedPolygonContainsProperly. - git-svn-id: http://svn.osgeo.org/geos/trunk@2095 + * : Updated svn:ignore property. git-svn-id: http://svn.osgeo.org/geos/trunk@2096 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot @@ -21330,51 +25184,45 @@ * source/geom/prep/AbstractPreparedPolygonContains.cpp, source/geom/prep/PreparedGeometryFactory.cpp, source/headers/geos/geom/prep/PreparedGeometryFactory.h: Fixed extra - qualifications in PreparedGeometryFactory class. git-svn-id: - http://svn.osgeo.org/geos/trunk@2094 + qualifications in PreparedGeometryFactory class. git-svn-id: http://svn.osgeo.org/geos/trunk@2094 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot * source/headers/geos/geom/util/ComponentCoordinateExtracter.h: Fixed GeometryTypeId misused in - geos/geom/util/ComponentCoordinateExtracter.h. git-svn-id: - http://svn.osgeo.org/geos/trunk@2093 + geos/geom/util/ComponentCoordinateExtracter.h. git-svn-id: http://svn.osgeo.org/geos/trunk@2093 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/geom/util/Makefile.am: remove .cpp files that weren't there - before git-svn-id: http://svn.osgeo.org/geos/trunk@2092 + before git-svn-id: http://svn.osgeo.org/geos/trunk@2092 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot * source/geom/CoordinateArraySequence.cpp, source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp: - Reverted changes appled in r2089 to three files from source/geom. - git-svn-id: http://svn.osgeo.org/geos/trunk@2091 + Reverted changes appled in r2089 to three files from source/geom. git-svn-id: http://svn.osgeo.org/geos/trunk@2091 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * source/algorithm/Makefile.am: type subdir typo git-svn-id: - http://svn.osgeo.org/geos/trunk@2090 + * source/algorithm/Makefile.am: type subdir typo git-svn-id: http://svn.osgeo.org/geos/trunk@2090 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot * source/geom/CoordinateArraySequence.cpp, source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp: - Updated svn:ignore property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2089 + Updated svn:ignore property. git-svn-id: http://svn.osgeo.org/geos/trunk@2089 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot * source/examples/CustomPointCoordinateSequence.cpp: Added missing - header to CustomPointCoordinateSequence.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@2088 + header to CustomPointCoordinateSequence.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@2088 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot @@ -21387,32 +25235,27 @@ 2007-12-21 Paul Ramsey - * configure.in: Updated configure.in with new locations. - git-svn-id: http://svn.osgeo.org/geos/trunk@2086 + * configure.in: Updated configure.in with new locations. git-svn-id: http://svn.osgeo.org/geos/trunk@2086 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot - * configure.in: Updated configure.in with new locations. - git-svn-id: http://svn.osgeo.org/geos/trunk@2085 + * configure.in: Updated configure.in with new locations. git-svn-id: http://svn.osgeo.org/geos/trunk@2085 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot - * configure.in: Updated configure.in with new locations. - git-svn-id: http://svn.osgeo.org/geos/trunk@2084 + * configure.in: Updated configure.in with new locations. git-svn-id: http://svn.osgeo.org/geos/trunk@2084 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot - * configure.in: Updated configure.in with new locations. - git-svn-id: http://svn.osgeo.org/geos/trunk@2083 + * configure.in: Updated configure.in with new locations. git-svn-id: http://svn.osgeo.org/geos/trunk@2083 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Mateusz Loskot - * configure.in: Updated configure.in with new locations. - git-svn-id: http://svn.osgeo.org/geos/trunk@2082 + * configure.in: Updated configure.in with new locations. git-svn-id: http://svn.osgeo.org/geos/trunk@2082 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey @@ -21420,22 +25263,19 @@ * source/headers/geos/algorithm/Makefile.am, source/headers/geos/algorithm/locate/Makefile.am, source/headers/geos/noding/Makefile.am: Add - headers/geos/algorithm/locate to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2081 + headers/geos/algorithm/locate to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2081 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * source/noding/Makefile.am: Add files to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2080 + * source/noding/Makefile.am: Add files to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2080 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/headers/geos/index/Makefile.am, source/headers/geos/index/intervalrtree/Makefile.am: Added - headers/index/intervalrtree to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2079 + headers/index/intervalrtree to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2079 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey @@ -21443,42 +25283,36 @@ * source/headers/geos/geom/Makefile.am, source/headers/geos/geom/prep/Makefile.am, source/headers/geos/geom/util/Makefile.am: Added headers/geom/prep - headers/geom/util to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2078 + headers/geom/util to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2078 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/index/Makefile.am, source/index/intervalrtree/Makefile.am: - Added index/intervalrtree to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2077 + Added index/intervalrtree to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2077 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/geom/util/Makefile.am: added - geom/util/ComponentCoordinateExtracter.h git-svn-id: - http://svn.osgeo.org/geos/trunk@2076 + geom/util/ComponentCoordinateExtracter.h git-svn-id: http://svn.osgeo.org/geos/trunk@2076 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/geom/Makefile.am, source/geom/prep/Makefile.am: Add - geom/prep to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2075 + geom/prep to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2075 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey * source/algorithm/Makefile.am, source/algorithm/locate/Makefile.am: - Add algorithm/location to automake git-svn-id: - http://svn.osgeo.org/geos/trunk@2074 + Add algorithm/location to automake git-svn-id: http://svn.osgeo.org/geos/trunk@2074 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * source/algorithm/Makefile.am: Added new files git-svn-id: - http://svn.osgeo.org/geos/trunk@2073 + * source/algorithm/Makefile.am: Added new files git-svn-id: http://svn.osgeo.org/geos/trunk@2073 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21500,8 +25334,7 @@ source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h, source/headers/geos/index/intervalrtree/IntervalRTreeNode.h, source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h: - Added from JTS 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2070 + Added from JTS 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2070 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21509,29 +25342,25 @@ * source/algorithm/locate/IndexedPointInAreaLocator.cpp, source/algorithm/locate/PointOnGeometryLocator.cpp, source/algorithm/locate/SimplePointInAreaLocator.cpp: Added from JTS - 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2069 + 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2069 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/geom/util/ComponentCoordinateExtracter.cpp: Added from JTS - 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2068 + 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2068 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/geom/util/ComponentCoordinateExtracter.h: - Added from JTS 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2067 + Added from JTS 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2067 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/operation/predicate/RectangleIntersects.cpp: modified - because SimplePointInAreaLocator.h moved git-svn-id: - http://svn.osgeo.org/geos/trunk@2066 + because SimplePointInAreaLocator.h moved git-svn-id: http://svn.osgeo.org/geos/trunk@2066 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21541,7 +25370,7 @@ source/noding/NodedSegmentString.cpp, source/noding/SegmentIntersectionDetector.cpp, source/noding/SegmentStringUtil.cpp: Added from JTS 1.9 to support - prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2065 + prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2065 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21550,8 +25379,7 @@ source/index/intervalrtree/IntervalRTreeLeafNode.cpp, source/index/intervalrtree/IntervalRTreeNode.cpp, source/index/intervalrtree/SortedPackedIntervalRTree.cpp: Added from - JTS 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2064 + JTS 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2064 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21570,29 +25398,25 @@ source/geom/prep/PreparedPolygonIntersects.cpp, source/geom/prep/PreparedPolygonLineIntersection.cpp, source/geom/prep/PreparedPolygonPredicate.cpp: Added from JTS 1.9 to - support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2063 + support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2063 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/geomgraph/EdgeEndStar.cpp: modified because - SimplePointInAreaLocator.h moved git-svn-id: - http://svn.osgeo.org/geos/trunk@2062 + SimplePointInAreaLocator.h moved git-svn-id: http://svn.osgeo.org/geos/trunk@2062 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/algorithm/SimplePointInAreaLocator.h: Moved - into geos::algorithm::locate git-svn-id: - http://svn.osgeo.org/geos/trunk@2061 + into geos::algorithm::locate git-svn-id: http://svn.osgeo.org/geos/trunk@2061 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/algorithm/RayCrossingCounter.h: Added from JTS - 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2060 + 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2060 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21611,8 +25435,7 @@ source/headers/geos/geom/prep/PreparedPolygonIntersects.h, source/headers/geos/geom/prep/PreparedPolygonLineIntersection.h, source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Added from - JTS 1.9 to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2059 + JTS 1.9 to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2059 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb @@ -21624,116 +25447,98 @@ source/headers/geos/noding/SegmentIntersectionDetector.h, source/headers/geos/noding/SegmentSetMutualIntersector.h, source/headers/geos/noding/SegmentStringUtil.h: Added from JTS 1.9 - to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2058 + to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2058 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/noding/SegmentString.h: changed destructor to - be virtual git-svn-id: http://svn.osgeo.org/geos/trunk@2057 + be virtual git-svn-id: http://svn.osgeo.org/geos/trunk@2057 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/geom/Envelope.h: Added a covers() predicate, - from JTS 1.9, to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2056 + from JTS 1.9, to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2056 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/geom/Geometry.h: changed IsRectangle to be - public git-svn-id: http://svn.osgeo.org/geos/trunk@2055 + public git-svn-id: http://svn.osgeo.org/geos/trunk@2055 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/geom/Envelope.inl: Added a covers() predicate, - from JTS 1.9, to support prepared geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@2054 + from JTS 1.9, to support prepared geometry git-svn-id: http://svn.osgeo.org/geos/trunk@2054 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/algorithm/locate/SimplePointInAreaLocator.h: - Moved from geos::algorithm as in JTS 1.9 git-svn-id: - http://svn.osgeo.org/geos/trunk@2053 + Moved from geos::algorithm as in JTS 1.9 git-svn-id: http://svn.osgeo.org/geos/trunk@2053 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h, source/headers/geos/algorithm/locate/PointOnGeometryLocator.h: New - namaspace geos::algorithm::locate, as in JTS 1.9.. git-svn-id: - http://svn.osgeo.org/geos/trunk@2052 + namaspace geos::algorithm::locate, as in JTS 1.9.. git-svn-id: http://svn.osgeo.org/geos/trunk@2052 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Ben Jubb * source/headers/geos/algorithm/SimplePointInAreaLocator.h: Added a public constructor, and a method to bring in line with JTS 1.9. - Changed namespace to geos::algorithm::locate git-svn-id: - http://svn.osgeo.org/geos/trunk@2051 + Changed namespace to geos::algorithm::locate git-svn-id: http://svn.osgeo.org/geos/trunk@2051 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * configure.in: version numbering for next release (3.1.0) - git-svn-id: http://svn.osgeo.org/geos/trunk@2050 + * configure.in: version numbering for next release (3.1.0) git-svn-id: http://svn.osgeo.org/geos/trunk@2050 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-21 Paul Ramsey - * ChangeLog, configure.in: 3.0.0 release git-svn-id: - http://svn.osgeo.org/geos/trunk@2046 + * ChangeLog, configure.in: 3.0.0 release git-svn-id: http://svn.osgeo.org/geos/trunk@2046 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-19 Mateusz Loskot * ChangeLog, source/headers/geos/geom.h, source/headers/geos/io.h: - Improved warning message about using DEPRECATED headers git-svn-id: - http://svn.osgeo.org/geos/trunk@2045 + Improved warning message about using DEPRECATED headers git-svn-id: http://svn.osgeo.org/geos/trunk@2045 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-17 Mateusz Loskot * tests/xmltester/XMLTester.cpp: Fixed std::tolower usage in - XMLTester.cpp (Ticket #163). git-svn-id: - http://svn.osgeo.org/geos/trunk@2044 + XMLTester.cpp (Ticket #163). git-svn-id: http://svn.osgeo.org/geos/trunk@2044 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-17 Mateusz Loskot * source/algorithm/HCoordinate.cpp: Replaced finite function with - std::numeric_limits (Ticket #162). git-svn-id: - http://svn.osgeo.org/geos/trunk@2043 + std::numeric_limits (Ticket #162). git-svn-id: http://svn.osgeo.org/geos/trunk@2043 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-17 Mateusz Loskot * ChangeLog, source/Makefile.vc: source\Makefile.vc: Fixed MSVC_VER - condition for Microsoft Visual C++ 2008 (9.0). git-svn-id: - http://svn.osgeo.org/geos/trunk@2042 + condition for Microsoft Visual C++ 2008 (9.0). git-svn-id: http://svn.osgeo.org/geos/trunk@2042 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-13 Mateusz Loskot - * ChangeLog: Added Id keyword at the top of ChangeLog file. - git-svn-id: http://svn.osgeo.org/geos/trunk@2041 + * ChangeLog: Added Id keyword at the top of ChangeLog file. git-svn-id: http://svn.osgeo.org/geos/trunk@2041 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-13 Mateusz Loskot * ChangeLog, build/msvc80/geos_unit/geos_unit.vcproj, source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - tests/unit/geom/GeometryFactoryTest.cpp: * build\msvc80\geos_unit\geos_unit.vcproj: fixed post-build event * - source\geom\GeometryCollection.cpp: removed unreachable code, - shorten exception message. * source\geom\Geometry.cpp: purified - condition based on dynamic_cast * - tests\unit\geom\GeometryFactoryTest.cpp: use std::size_t instead of - int where unsigned integral type required. git-svn-id: - http://svn.osgeo.org/geos/trunk@2040 + tests/unit/geom/GeometryFactoryTest.cpp: * build\msvc80\geos_unit\geos_unit.vcproj: fixed post-build event * source\geom\GeometryCollection.cpp: removed unreachable code, shorten exception message. * source\geom\Geometry.cpp: purified condition based on dynamic_cast * tests\unit\geom\GeometryFactoryTest.cpp: use std::size_t instead + of int where unsigned integral type required. git-svn-id: http://svn.osgeo.org/geos/trunk@2040 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-09 Mateusz Loskot @@ -21741,21 +25546,12 @@ * ChangeLog, tests/unit/Makefile.am, tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp: Added test suite for class - geos::precision::SimpleGeometryPrecisionReducer. git-svn-id: - http://svn.osgeo.org/geos/trunk@2038 + geos::precision::SimpleGeometryPrecisionReducer. git-svn-id: http://svn.osgeo.org/geos/trunk@2038 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-12-08 Mateusz Loskot - * : Updated svn:keyword property. git-svn-id: - http://svn.osgeo.org/geos/trunk@2037 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-11-26 Mateusz Loskot - - * build/msvc80/geos.vsprops: Added geos.vsprops - property sheet for - Visual C++ projects. git-svn-id: - http://svn.osgeo.org/geos/trunk@2036 + * : Updated svn:keyword property. git-svn-id: http://svn.osgeo.org/geos/trunk@2037 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-11-26 Mateusz Loskot @@ -21764,42 +25560,29 @@ build/msvc80/geos_ruby/geos_ruby.vcproj, swig/python/geos_wrap.cxx: Added common Property Sheet for Visual C++ projects where Python and Ruby macros/locations are defined. Fixed include of Python.h, see - Ticket #164 for details. git-svn-id: - http://svn.osgeo.org/geos/trunk@2035 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-11-26 Mateusz Loskot - - * : Updated svn:ignore patterns. git-svn-id: - http://svn.osgeo.org/geos/trunk@2034 + Ticket #164 for details. git-svn-id: http://svn.osgeo.org/geos/trunk@2035 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-11-26 Mateusz Loskot - * ChangeLog, source/Makefile.vc, source/headers/geos/version.h.vc: - Enabled target copying version.h.vc and geos_c.h.vc to headers used - by Visual C++. Added test if version.h.vc is used with Visual C++. - git-svn-id: http://svn.osgeo.org/geos/trunk@2033 + * : Updated svn:ignore patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@2034 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-11-23 Mateusz Loskot * ChangeLog, source/headers/geos/io/WKBWriter.h: A bit of - purification with explicit casting int to bool type. git-svn-id: - http://svn.osgeo.org/geos/trunk@2032 + purification with explicit casting int to bool type. git-svn-id: http://svn.osgeo.org/geos/trunk@2032 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-11-02 Paul Ramsey - * web/index.html: urls updated to point to osgeo locations - git-svn-id: http://svn.osgeo.org/geos/trunk@2031 + * web/index.html: urls updated to point to osgeo locations git-svn-id: http://svn.osgeo.org/geos/trunk@2031 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-11-02 Paul Ramsey * web/index.html, web/style.css: add the web site content to svn for - collaborative management git-svn-id: - http://svn.osgeo.org/geos/trunk@2030 + collaborative management git-svn-id: http://svn.osgeo.org/geos/trunk@2030 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-21 Charlie Savage @@ -21816,8 +25599,7 @@ swig/ruby/test/test_io.rb, swig/ruby/test/test_operations.rb, swig/ruby/test/test_srid.rb, swig/ruby/test/test_version.rb: Updated the SWIG bindings and tests to use the new Reader/Writer classes - exposed in the CAPI. git-svn-id: - http://svn.osgeo.org/geos/trunk@2028 + exposed in the CAPI. git-svn-id: http://svn.osgeo.org/geos/trunk@2028 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-21 Charlie Savage @@ -21828,8 +25610,7 @@ static variable used to control byte order and # of dimenions, and gives clients more control over the creation/destruction of readers and writers. Finally, exposed the ability to output the EWKB format - (set SRID to true in the WKBWriter). git-svn-id: - http://svn.osgeo.org/geos/trunk@2027 + (set SRID to true in the WKBWriter). git-svn-id: http://svn.osgeo.org/geos/trunk@2027 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-21 Charlie Savage @@ -21839,8 +25620,7 @@ comments in code for more information. Note this change may cause problems. Strk left a note in the code saying that the '<' comparison sometimes gives unstable results. But that seems better - than an assertion failure. git-svn-id: - http://svn.osgeo.org/geos/trunk@2026 + than an assertion failure. git-svn-id: http://svn.osgeo.org/geos/trunk@2026 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-21 Charlie Savage @@ -21850,8 +25630,7 @@ PostGIS. Also added a few getter/setter methods that allow clients to specify the reader's number of dimensions, byte order and whether srid values should be output. These getters/setters make it easier - to wrap the reader in the CAPI. git-svn-id: - http://svn.osgeo.org/geos/trunk@2025 + to wrap the reader in the CAPI. git-svn-id: http://svn.osgeo.org/geos/trunk@2025 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-14 Charlie Savage @@ -21863,16 +25642,7 @@ 2007-09-14 Charlie Savage - * : Told SVN to ignore MSCV++ Python swig build directories. - git-svn-id: http://svn.osgeo.org/geos/trunk@2023 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-09-14 Charlie Savage - - * source/io/WKBReader.cpp: Set unknown SRID values to 0 instead of - -1 to be more consistent with the rest of GEOS (srid values are - initialized to 0 by default). git-svn-id: - http://svn.osgeo.org/geos/trunk@2022 + * : Told SVN to ignore MSCV++ Python swig build directories. git-svn-id: http://svn.osgeo.org/geos/trunk@2023 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-11 Charlie Savage @@ -21884,8 +25654,7 @@ 2007-09-07 Charlie Savage * configure.in: The test for SWIG was incorrect. Fixed by patch - from Mark Cave-Ayland. git-svn-id: - http://svn.osgeo.org/geos/trunk@2020 + from Mark Cave-Ayland. git-svn-id: http://svn.osgeo.org/geos/trunk@2020 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-09-06 Charlie Savage @@ -21901,8 +25670,7 @@ * configure.in, macros/ruby.m4: Applied patches from Mark Cave-Ayland's that reorganize/improve the SWIG support in the - generated configure file.\ git-svn-id: - http://svn.osgeo.org/geos/trunk@2018 + generated configure file.\ git-svn-id: http://svn.osgeo.org/geos/trunk@2018 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-31 Charlie Savage @@ -21910,8 +25678,7 @@ * capi/geos_c.cpp, capi/geos_c.h.in: For MSVC++ builds the CAPI version was set in geos_c.cpp instead of geos_c.h and it was set incorrectly. This patch fixes the MSVC++ version number and - centralizes the various versoin #defines in the geos_c.h. - git-svn-id: http://svn.osgeo.org/geos/trunk@2017 + centralizes the various versoin #defines in the geos_c.h. git-svn-id: http://svn.osgeo.org/geos/trunk@2017 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-31 Charlie Savage @@ -21920,23 +25687,20 @@ makefiles to make the wrappers dependent on the SWIG interface files even if SWIG is disabled. Doing this means that Make will correctly recognize that a user has modified an I file, but that the .cxx - wrapper cannot be regenerated since SWIG is not available. - git-svn-id: http://svn.osgeo.org/geos/trunk@2016 + wrapper cannot be regenerated since SWIG is not available. git-svn-id: http://svn.osgeo.org/geos/trunk@2016 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-30 Charlie Savage * source/headers/geos/profiler.h, source/headers/geos/timeval.h: MingW now includes the gettimeofday function - so reworked includes - to only use custom version when building with VC++. git-svn-id: - http://svn.osgeo.org/geos/trunk@2015 + to only use custom version when building with VC++. git-svn-id: http://svn.osgeo.org/geos/trunk@2015 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-30 Charlie Savage * macros/ruby.m4, swig/ruby/Makefile.am: Added RUBY_BIN_DIR to - autoconf macros - simplified auto make input file for ruby bindings. - git-svn-id: http://svn.osgeo.org/geos/trunk@2014 + autoconf macros - simplified auto make input file for ruby bindings. git-svn-id: http://svn.osgeo.org/geos/trunk@2014 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-30 Charlie Savage @@ -21944,21 +25708,19 @@ * macros/ac_pkg_swig.m4: The last attempt to fix this file failed - instead keep the code that queries the swig libraries but use sed to merge multiple lines together. If this is not done, then the swig - output causes ./configure to blow up on msys. git-svn-id: - http://svn.osgeo.org/geos/trunk@2013 + output causes ./configure to blow up on msys. git-svn-id: http://svn.osgeo.org/geos/trunk@2013 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-30 Charlie Savage * macros/ac_pkg_swig.m4: Fixes sed issue with swig on msys. For more info see: - - http://lists.refractions.net/pipermail/geos-devel/2007-August/002956.html git-svn-id: http://svn.osgeo.org/geos/trunk@2012 5242fede-7e19-0410-aef8-94bd7d2200fb + http://lists.refractions.net/pipermail/geos-devel/2007-August/002956.htmlgit-svn-id: http://svn.osgeo.org/geos/trunk@2012 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-30 Charlie Savage - * swig/geos.i.in: Changed from dos to unix line feeds. git-svn-id: - http://svn.osgeo.org/geos/trunk@2011 + * swig/geos.i.in: Changed from dos to unix line feeds. git-svn-id: http://svn.osgeo.org/geos/trunk@2011 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-29 Charlie Savage @@ -21966,8 +25728,7 @@ * build/msvc80/geos.sln, build/msvc80/geos_python/geos_python.vcproj, build/msvc80/geos_ruby/geos_ruby.vcproj: New VC++ project for the - python SWIG bindings. git-svn-id: - http://svn.osgeo.org/geos/trunk@2010 + python SWIG bindings. git-svn-id: http://svn.osgeo.org/geos/trunk@2010 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-29 Charlie Savage @@ -21988,15 +25749,8 @@ 2007-08-28 Charlie Savage - * : Added new ruby VC++ project to solution file. git-svn-id: - http://svn.osgeo.org/geos/trunk@2007 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-08-28 Charlie Savage - * capi/geos_c.h.in: Fixed c api include for VC++ - it should be - #include instead of #include . - git-svn-id: http://svn.osgeo.org/geos/trunk@2006 + #include instead of #include . git-svn-id: http://svn.osgeo.org/geos/trunk@2006 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-28 Charlie Savage @@ -22016,16 +25770,14 @@ * build/msvc80/geos_ruby/geos_ruby.vcproj: Added new vc++ project for building ruby bindings. Its not perfect since it hard-codes the - path to Ruby, but its enough to get one started. git-svn-id: - http://svn.osgeo.org/geos/trunk@2003 + path to Ruby, but its enough to get one started. git-svn-id: http://svn.osgeo.org/geos/trunk@2003 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-28 Charlie Savage * swig/python/geos.py, swig/python/geos_wrap.cxx, swig/ruby/geos_wrap.cxx: Updated SWIG wrappers based on changed - interface file. Also generated with SWIG 1.3.31 git-svn-id: - http://svn.osgeo.org/geos/trunk@2002 + interface file. Also generated with SWIG 1.3.31 git-svn-id: http://svn.osgeo.org/geos/trunk@2002 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-28 Charlie Savage @@ -22037,23 +25789,20 @@ swig/ruby/test/test_io.rb, swig/ruby/test/test_operations.rb, swig/ruby/test/test_relations.rb, swig/ruby/test/test_srid.rb, swig/ruby/test/test_version.rb: SWIG bindings - updated Ruby tests - based on name changes. git-svn-id: - http://svn.osgeo.org/geos/trunk@2001 + based on name changes. git-svn-id: http://svn.osgeo.org/geos/trunk@2001 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-28 Charlie Savage * swig/ruby/ruby.i: Updated Ruby swig bindings to more closely match Ruby style names. So eql? instead of equals, dimensions instead of - get_dimensions, etc. git-svn-id: - http://svn.osgeo.org/geos/trunk@2000 + get_dimensions, etc. git-svn-id: http://svn.osgeo.org/geos/trunk@2000 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-28 Charlie Savage * swig/geos.i.in: Exposed Geometry::Clone method in SWIG bindings. - Added check for NULL string in geomFromWKT wrapper. git-svn-id: - http://svn.osgeo.org/geos/trunk@1999 + Added check for NULL string in geomFromWKT wrapper. git-svn-id: http://svn.osgeo.org/geos/trunk@1999 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-23 Paul Ramsey @@ -22061,7 +25810,7 @@ * source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, source/operation/buffer/OffsetCurveVertexList.h: Memory leak patches - from Robert Coup git-svn-id: http://svn.osgeo.org/geos/trunk@1998 + from Robert Coup git-svn-id: http://svn.osgeo.org/geos/trunk@1998 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-08-22 Mateusz Loskot @@ -22069,8 +25818,7 @@ * source/headers/geos/io/ByteOrderDataInStream.inl, source/operation/overlay/ElevationMatrix.cpp, source/operation/polygonize/Polygonizer.cpp: Cleaned compilation - warnings from VC++. git-svn-id: - http://svn.osgeo.org/geos/trunk@1997 + warnings from VC++. git-svn-id: http://svn.osgeo.org/geos/trunk@1997 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-11 Mateusz Loskot @@ -22078,15 +25826,13 @@ * ChangeLog, source/operation/IsSimpleOp.cpp: Replaced post-increment operators with pre-increment operators where standard iterators are incremented in loops. NOTE: Prefer pre-incr. over - post-inc. when working with standard iterators. git-svn-id: - http://svn.osgeo.org/geos/trunk@1996 + post-inc. when working with standard iterators. git-svn-id: http://svn.osgeo.org/geos/trunk@1996 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-11 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/operation/IsSimpleOpTest.cpp: - Added unit test for geos::operation::IsSimpleOp class. git-svn-id: - http://svn.osgeo.org/geos/trunk@1995 + Added unit test for geos::operation::IsSimpleOp class. git-svn-id: http://svn.osgeo.org/geos/trunk@1995 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-10 Mateusz Loskot @@ -22107,31 +25853,20 @@ 2007-06-10 Mateusz Loskot * : Updated svn:ignore property for the whole tree adding VC++ and - Windows specific patterns. git-svn-id: - http://svn.osgeo.org/geos/trunk@1992 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-06-10 Mateusz Loskot - - * ChangeLog, build/msvc80/geos_unit/geos_unit.vcproj, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp: Added unit test for - CGAlgorithms::isCCW() function. git-svn-id: - http://svn.osgeo.org/geos/trunk@1991 + Windows specific patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@1992 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-10 Mateusz Loskot * tests/unit/algorithm/ConvexHullTest.cpp, tests/unit/geom/LineStringTest.cpp: Added unit test for - geos::algorithm::ConvexHull. git-svn-id: - http://svn.osgeo.org/geos/trunk@1990 + geos::algorithm::ConvexHull. git-svn-id: http://svn.osgeo.org/geos/trunk@1990 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-10 Mateusz Loskot * tests/unit/utility.h: Added custom operators for static and - dynamic casts of pointers wrapped with std::auto_ptr type. - git-svn-id: http://svn.osgeo.org/geos/trunk@1989 + dynamic casts of pointers wrapped with std::auto_ptr type. git-svn-id: http://svn.osgeo.org/geos/trunk@1989 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-08 Mateusz Loskot @@ -22145,8 +25880,7 @@ * ChangeLog, source/index/strtree/STRtree.cpp: Analysis of instability of the yComparator, there are some new important - questions to answer. git-svn-id: - http://svn.osgeo.org/geos/trunk@1987 + questions to answer. git-svn-id: http://svn.osgeo.org/geos/trunk@1987 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-08 Mateusz Loskot @@ -22175,22 +25909,19 @@ source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp, source/index/sweepline/SweepLineIndex.cpp, source/operation/buffer/BufferSubgraph.cpp: Cleaned signed/unsigned - types mixtures, got rid from annoying compiler warnings. - git-svn-id: http://svn.osgeo.org/geos/trunk@1986 + types mixtures, got rid from annoying compiler warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@1986 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-08 Mateusz Loskot * ChangeLog: Applied Konstantin Baumann's suggestion about including - version.h in C API header for Visual C++. git-svn-id: - http://svn.osgeo.org/geos/trunk@1985 + version.h in C API header for Visual C++. git-svn-id: http://svn.osgeo.org/geos/trunk@1985 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-08 Mateusz Loskot * capi/geos_c.h.in: Applied Konstantin Baumann's suggestion about - including version.h in C API header for Visual C++. git-svn-id: - http://svn.osgeo.org/geos/trunk@1984 + including version.h in C API header for Visual C++. git-svn-id: http://svn.osgeo.org/geos/trunk@1984 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-01 Mateusz Loskot @@ -22198,8 +25929,7 @@ * ChangeLog, build/bjam/Jamroot, build/bjam/geos/Jamfile, build/bjam/geos_c/Jamfile, build/bjam/geos_unit/Jamfile: Added Boost.Build configuration for GEOS (experimental). The idea is to - enable users to build GEOS with bjam tool from Boost.Build package. - git-svn-id: http://svn.osgeo.org/geos/trunk@1983 + enable users to build GEOS with bjam tool from Boost.Build package. git-svn-id: http://svn.osgeo.org/geos/trunk@1983 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-06-01 Mateusz Loskot @@ -22212,21 +25942,12 @@ * ChangeLog, build/msvc80/geos_lib/geos_lib.vcproj: Applied patch with pre-build events generating platform.h and version.h headers. - Thanks to Konstantin Baumann for this patch. git-svn-id: - http://svn.osgeo.org/geos/trunk@1981 + Thanks to Konstantin Baumann for this patch. git-svn-id: http://svn.osgeo.org/geos/trunk@1981 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-05-06 Mateusz Loskot - * : Updated svn:ignore property for build\msvc80. git-svn-id: - http://svn.osgeo.org/geos/trunk@1980 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2007-05-06 Mateusz Loskot - - * ChangeLog, source/headers/geos/version.h.vc: Added - source/headers/geos/version.h.vc file for Visual C++ compiler. - git-svn-id: http://svn.osgeo.org/geos/trunk@1979 + * : Updated svn:ignore property for build\msvc80. git-svn-id: http://svn.osgeo.org/geos/trunk@1980 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-04-22 Mateusz Loskot @@ -22248,42 +25969,29 @@ * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/hole_from_shell.xml, tests/xmltester/hole_red.xml: - Add new testcases by Carl Anderson git-svn-id: - http://svn.osgeo.org/geos/trunk@1976 + Add new testcases by Carl Anderson git-svn-id: http://svn.osgeo.org/geos/trunk@1976 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-26 Sandro Santilli - * ChangeLog, source/inlines.cpp: Patch by Tom Elwertowski: * - source/inlines.cpp: fix for MingW32 builds. git-svn-id: - http://svn.osgeo.org/geos/trunk@1975 + * ChangeLog, source/inlines.cpp: Patch by Tom Elwertowski: * source/inlines.cpp: fix for MingW32 builds. git-svn-id: http://svn.osgeo.org/geos/trunk@1975 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-21 Sandro Santilli * ChangeLog, source/operation/buffer/SubgraphDepthLocater.cpp: Patch - by Carl Anderson: * - source/operation/buffer/SubgraphDepthLocater.cpp - (findStabbedSegments): Implement short-circuit to avoid - inner defective logic. Fixes badguy3.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@1974 + by Carl Anderson: * source/operation/buffer/SubgraphDepthLocater.cpp (findStabbedSegments): Implement short-circuit to avoid inner defective logic. Fixes badguy3.xml git-svn-id: http://svn.osgeo.org/geos/trunk@1974 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-21 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/badguy3.xml: * tests/xmltester/: Makefile.am, badguy3.xml: - Added simplified version of nasty buffer bug test. - git-svn-id: http://svn.osgeo.org/geos/trunk@1973 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/xmltester/badguy3.xml: * tests/xmltester/: Makefile.am, badguy3.xml: Added simplified version of nasty buffer bug test. git-svn-id: http://svn.osgeo.org/geos/trunk@1973 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-08 Sandro Santilli - * ChangeLog, configure.in: Patch by Mark Cave-Ayland: * - configure.in: Allow configure to continue with use_python - set to false if a python binary is not found, as per - http://sources.redhat.com/automake/automake.html#Python. - git-svn-id: http://svn.osgeo.org/geos/trunk@1972 + * ChangeLog, configure.in: Patch by Mark Cave-Ayland: * configure.in: Allow configure to continue with use_python set to false if a python binary is not found, as per http://sources.redhat.com/automake/automake.html#Python. git-svn-id: http://svn.osgeo.org/geos/trunk@1972 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-07 Sandro Santilli @@ -22297,94 +26005,71 @@ source/index/strtree/AbstractNode.cpp, source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: General refactoring aimed at making the code cleaner - to read and maintain; use iterators rather then random - accessing containers to allow easy future switch to - std::list from std::vector; use a - tolerance-based strict weak ordering operator - for sorting child boundables in STRtree, this - fixes the heisenbug when building with inlines disabled. - git-svn-id: http://svn.osgeo.org/geos/trunk@1971 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: General refactoring aimed at making the code cleaner to read and maintain; use iterators rather then random accessing containers to allow easy future switch to + std::list from std::vector; use a tolerance-based strict + weak ordering operator for sorting child boundables in STRtree, this fixes the heisenbug when building with inlines disabled. git-svn-id: http://svn.osgeo.org/geos/trunk@1971 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-06 Sandro Santilli - * ChangeLog, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: - Expect result of POLYGON simplification to always be - a polygon, even if collapsed to the empty geom. - git-svn-id: http://svn.osgeo.org/geos/trunk@1970 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Expect result of POLYGON simplification to always be a polygon, even if collapsed to the empty geom. git-svn-id: http://svn.osgeo.org/geos/trunk@1970 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-06 Sandro Santilli * ChangeLog, source/headers/geos/operation/buffer/BufferBuilder.h, source/headers/geos/operation/buffer/BufferOp.h, source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: * operation::buffer::BufferBuilder, - operation::buffer::BufferOp: Fixed buffer - operation to always return polygonal geometry - git-svn-id: http://svn.osgeo.org/geos/trunk@1969 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/operation/buffer/BufferOp.cpp: * operation::buffer::BufferBuilder, operation::buffer::BufferOp: Fixed buffer operation to always return polygonal geometry git-svn-id: http://svn.osgeo.org/geos/trunk@1969 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-03 Paul Ramsey - * ChangeLog, configure.in: 3.0.0rc4 tagging git-svn-id: - http://svn.osgeo.org/geos/trunk@1967 + * ChangeLog, configure.in: 3.0.0rc4 tagging git-svn-id: http://svn.osgeo.org/geos/trunk@1967 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-02-01 Sandro Santilli * ChangeLog, source/headers/geos/operation/buffer/BufferOp.h, - source/operation/buffer/BufferOp.cpp: * operation::buffer::BufferOp: set MAX_PRECISION_DIGITS - so to match JTS. git-svn-id: - http://svn.osgeo.org/geos/trunk@1966 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/operation/buffer/BufferOp.cpp: * operation::buffer::BufferOp: set MAX_PRECISION_DIGITS so to match JTS. git-svn-id: http://svn.osgeo.org/geos/trunk@1966 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-26 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/stmlf-cases-20070119.xml: * tests/xmltester/: Makefile.am, stmlf-cases-20070119.xml: - New overlay test. git-svn-id: - http://svn.osgeo.org/geos/trunk@1965 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/xmltester/stmlf-cases-20070119.xml: * tests/xmltester/: Makefile.am, stmlf-cases-20070119.xml: New overlay test. git-svn-id: http://svn.osgeo.org/geos/trunk@1965 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-26 Sandro Santilli * ChangeLog, source/operation/buffer/BufferBuilder.cpp, - tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: improved buffer - result validator. * - source/operation/buffer/BufferBuilder.cpp - (computeNodedEdges): remove repeated points from - noded SegmentStrings, skip collapsed edges. - git-svn-id: http://svn.osgeo.org/geos/trunk@1964 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: improved buffer result validator. * source/operation/buffer/BufferBuilder.cpp + (computeNodedEdges): remove repeated points from noded + SegmentStrings, skip collapsed edges. git-svn-id: http://svn.osgeo.org/geos/trunk@1964 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-17 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/heisenbugs.xml: New testcase for bug fixed by - previous commit. git-svn-id: http://svn.osgeo.org/geos/trunk@1963 + previous commit. git-svn-id: http://svn.osgeo.org/geos/trunk@1963 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-17 Sandro Santilli - * ChangeLog, source/index/strtree/STRtree.cpp: * source/index/strtree/STRtree.cpp (yComparator): - Use static_cast<> and make code more readable. A - side effect seems to be fixing a segfault :! git-svn-id: - http://svn.osgeo.org/geos/trunk@1962 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, source/index/strtree/STRtree.cpp: * source/index/strtree/STRtree.cpp (yComparator): Use static_cast<> and make code more readable. A side effect seems to be fixing a segfault :! git-svn-id: http://svn.osgeo.org/geos/trunk@1962 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-17 Sandro Santilli * ChangeLog, source/headers/geos/index/strtree/STRtree.h: * source/headers/geos/index/strtree/STRtree.h (centreY): - const-corrected. git-svn-id: http://svn.osgeo.org/geos/trunk@1961 + const-corrected. git-svn-id: http://svn.osgeo.org/geos/trunk@1961 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-16 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp, - tests/xmltester/XMLTester.h: * tests/xmltester/XMLTester.cpp: don't include catch-all headers. - git-svn-id: http://svn.osgeo.org/geos/trunk@1960 + tests/xmltester/XMLTester.h: * tests/xmltester/XMLTester.cpp: don't include catch-all headers. git-svn-id: http://svn.osgeo.org/geos/trunk@1960 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-09 Sandro Santilli @@ -22397,140 +26082,100 @@ tests/xmltester/Makefile.am, tests/xmltester/TestBufferExternal.xml, tests/xmltester/XMLTester.cpp: * source/operation/buffer/: Makefile.am, - OffsetCurveVertexList.h: New helper class for - OffsetCurveBuilder * - operation::buffer::OffsetCurveBuilder: Move - vertexlist management to external class. * - tests/xmltester/: Makefile.am, TestBufferExternal.xml: - added test for above changes (imported from JTS and - modified to work with GEOS). * - tests/xmltester/XMLTester.cpp: change buffer - validator again: check area of topological - difference between expected and obtained result to - be smaller then 1/1000 of expected geometry area. - git-svn-id: http://svn.osgeo.org/geos/trunk@1959 - 5242fede-7e19-0410-aef8-94bd7d2200fb + OffsetCurveVertexList.h: New helper class for + OffsetCurveBuilder * operation::buffer::OffsetCurveBuilder: Move vertexlist management to external class. * tests/xmltester/: Makefile.am, TestBufferExternal.xml: added test for above changes (imported from JTS and modified to work with GEOS). * tests/xmltester/XMLTester.cpp: change buffer validator again: check area of topological difference between expected and obtained result to be smaller then 1/1000 of expected geometry area. git-svn-id: http://svn.osgeo.org/geos/trunk@1959 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-09 Sandro Santilli * ChangeLog, source/geom/CoordinateArraySequence.cpp, source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateSequence.h: * source/geom/CoordinateArraySequence.cpp, - source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/CoordinateArraySequence.h: - add(Coordinate, bool) made a virtual method and overrridden - for CoordinateArraySequence, for better performance - (single virtual call vs. multiple); added front() and - back() methods. git-svn-id: - http://svn.osgeo.org/geos/trunk@1958 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/headers/geos/geom/CoordinateSequence.h: * source/geom/CoordinateArraySequence.cpp, source/headers/geos/geom/CoordinateSequence.h, source/headers/geos/geom/CoordinateArraySequence.h: add(Coordinate, bool) made a virtual method and + overrridden for CoordinateArraySequence, for better + performance (single virtual call vs. multiple); added front() and back() methods. git-svn-id: http://svn.osgeo.org/geos/trunk@1958 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-09 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: add areatest to buffer test - handler. git-svn-id: http://svn.osgeo.org/geos/trunk@1957 + handler. git-svn-id: http://svn.osgeo.org/geos/trunk@1957 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-05 Sandro Santilli - * ChangeLog, configure.in: * configure.in: prepared for version to 3.0.0rc4, - fixed swig python errors as suggested by hint - (AM_PATH_PYTHON). git-svn-id: - http://svn.osgeo.org/geos/trunk@1956 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, configure.in: * configure.in: prepared for version to 3.0.0rc4, fixed swig python errors as suggested by hint (AM_PATH_PYTHON). git-svn-id: http://svn.osgeo.org/geos/trunk@1956 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-04 Sandro Santilli - * ChangeLog, configure.in, swig/{geos.i => geos.i.in}: * configure.in, swig/geos.i.in, swig/geos.i: - geos.i generated at configure time from geos.i.in - (so we don't have to manually update versions there). - git-svn-id: http://svn.osgeo.org/geos/trunk@1955 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, configure.in, swig/geos.i, swig/geos.i.in: * configure.in, swig/geos.i.in, swig/geos.i: geos.i generated at configure time from geos.i.in (so we don't have to manually update versions there). git-svn-id: http://svn.osgeo.org/geos/trunk@1955 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-04 Sandro Santilli - * ChangeLog, swig/geos.i: Patch by dev-zero at gentoo dot org: - * swig/geos.i: use unsigned int when CAPI signatures - expect unsigned int (not size_t). git-svn-id: - http://svn.osgeo.org/geos/trunk@1954 + * ChangeLog, swig/geos.i: Patch by dev-zero at gentoo dot org: * swig/geos.i: use unsigned int when CAPI signatures expect unsigned int (not size_t). git-svn-id: http://svn.osgeo.org/geos/trunk@1954 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-03 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/fme.xml: * tests/xmltester/: fme.xml, Makefile.am: added buffer - testcase. git-svn-id: http://svn.osgeo.org/geos/trunk@1953 - 5242fede-7e19-0410-aef8-94bd7d2200fb + testcase. git-svn-id: http://svn.osgeo.org/geos/trunk@1953 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-03 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: use a tolerance of 10E-6 - for buffer validation (~10cm at worst when using latlong - projections); create sql tables with oid to work around a - bug in qgis 0.7.4. git-svn-id: - http://svn.osgeo.org/geos/trunk@1952 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: use a tolerance of 10E-6 for buffer validation (~10cm at worst when using latlong projections); create sql tables with oid to work around a bug in qgis 0.7.4. git-svn-id: http://svn.osgeo.org/geos/trunk@1952 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-03 Sandro Santilli * ChangeLog, source/algorithm/HCoordinate.cpp, source/inlines.cpp: - Applied patch by Mark Cave-Ayland : - * source/inlines.cpp, source/algorithm/HCoordinate.cpp: - Fixes for MingW builds. See geos-devel/2007-January/002766.html. - git-svn-id: http://svn.osgeo.org/geos/trunk@1951 + Applied patch by Mark Cave-Ayland : * source/inlines.cpp, source/algorithm/HCoordinate.cpp: Fixes for MingW builds. See + geos-devel/2007-January/002766.html. git-svn-id: http://svn.osgeo.org/geos/trunk@1951 5242fede-7e19-0410-aef8-94bd7d2200fb 2007-01-03 Sandro Santilli * ChangeLog, source/operation/buffer/BufferOp.cpp: * source/operation/buffer/BufferOp.cpp - (bufferReducedPrecision): Fixed computation of - reduced PrecisionModel scale. git-svn-id: - http://svn.osgeo.org/geos/trunk@1950 - 5242fede-7e19-0410-aef8-94bd7d2200fb + (bufferReducedPrecision): Fixed computation of reduced + PrecisionModel scale. git-svn-id: http://svn.osgeo.org/geos/trunk@1950 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-18 Sandro Santilli - * ChangeLog, tests/xmltester/robustness.xml: * tests/xmltester/robustness.xml: added testcase - reported to fail with 2.2.3 on - postgis-users/2006-November/014013.html. git-svn-id: - http://svn.osgeo.org/geos/trunk@1949 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, tests/xmltester/robustness.xml: * tests/xmltester/robustness.xml: added testcase reported to fail with 2.2.3 on postgis-users/2006-November/014013.html. git-svn-id: http://svn.osgeo.org/geos/trunk@1949 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-18 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h, source/headers/geos/precision/GeometrySnapper.h, source/precision/GeometrySnapper.cpp: Geometry snapping synced with - JTS. git-svn-id: http://svn.osgeo.org/geos/trunk@1948 + JTS. git-svn-id: http://svn.osgeo.org/geos/trunk@1948 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-18 Sandro Santilli - * ChangeLog, HOWTO_RELEASE: * HOWTO_RELEASE: add ChangeLog's release mark step. - git-svn-id: http://svn.osgeo.org/geos/trunk@1947 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, HOWTO_RELEASE: * HOWTO_RELEASE: add ChangeLog's release mark step. git-svn-id: http://svn.osgeo.org/geos/trunk@1947 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-18 Sandro Santilli * ChangeLog, source/precision/GeometrySnapper.cpp, tests/xmltester/Makefile.am, tests/xmltester/TestRobustOverlayFixed.xml: * source/precision/GeometrySnapper.cpp - (computeSnapTolerance): properly compute snap - tolerance for fixed precision geometries. * - tests/xmltester/: Makefile.am, TestRobustOverlayFixed.xml: - new test for fixed precision snapping. git-svn-id: - http://svn.osgeo.org/geos/trunk@1946 - 5242fede-7e19-0410-aef8-94bd7d2200fb + (computeSnapTolerance): properly compute snap tolerance for + fixed precision geometries. * tests/xmltester/: Makefile.am, TestRobustOverlayFixed.xml: new test for fixed precision snapping. git-svn-id: http://svn.osgeo.org/geos/trunk@1946 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-15 Sandro Santilli - * ChangeLog: release 3.0.0rc3 marked git-svn-id: - http://svn.osgeo.org/geos/trunk@1945 + * ChangeLog: release 3.0.0rc3 marked git-svn-id: http://svn.osgeo.org/geos/trunk@1945 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-14 Paul Ramsey - * configure.in: bumped version numbers for 3.0.0rc3 git-svn-id: - http://svn.osgeo.org/geos/trunk@1943 + * configure.in: bumped version numbers for 3.0.0rc3 git-svn-id: http://svn.osgeo.org/geos/trunk@1943 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-13 Mateusz Loskot @@ -22549,7 +26194,7 @@ source/operation/overlay/FuzzyPointLocator.cpp, source/operation/overlay/OffsetPointGenerator.cpp, source/operation/overlay/OverlayResultValidator.cpp: Updated port - information. git-svn-id: http://svn.osgeo.org/geos/trunk@1941 + information. git-svn-id: http://svn.osgeo.org/geos/trunk@1941 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-13 Sandro Santilli @@ -22557,10 +26202,8 @@ * ChangeLog, source/headers/geos/precision/GeometrySnapper.h, source/headers/geos/precision/LineStringSnapper.h, source/precision/GeometrySnapper.cpp, - source/precision/LineStringSnapper.cpp: * precision::GeometrySnapper, precision::LineStringSnapper: - Updated port information. git-svn-id: - http://svn.osgeo.org/geos/trunk@1940 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/precision/LineStringSnapper.cpp: * precision::GeometrySnapper, precision::LineStringSnapper: Updated port information. git-svn-id: http://svn.osgeo.org/geos/trunk@1940 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-11 Sandro Santilli @@ -22572,17 +26215,13 @@ source/noding/FastNodingValidator.cpp, source/noding/MCIndexNoder.cpp, source/noding/Makefile.am, source/noding/SingleInteriorIntersectionFinder.cpp: * source/headers/geos/noding/SegmentIntersector.h: added - virtual isDone() function, always returning false - by default. * source/noding/MCIndexNoder.cpp - (intersectChains): short-circuit from JTS-1.8, - based on the new SegmentIntersector::isDone() - method. * source/noding/Makefile.am, - source/noding/FastNodingValidator.cpp, - source/noding/SingleInteriorIntersectionFinder.cpp, - source/headers/geos/noding/Makefile.am, - source/headers/geos/noding/FastNodingValidator.h, - - source/headers/geos/noding/SingleInteriorIntersectionFinder.h: New ports from JTS-1.8-cvs. * source/headers/geos/geomgraph/EdgeNodingValidator.h: use a FastNodingValidator rather then a simple NodingValidator. git-svn-id: http://svn.osgeo.org/geos/trunk@1939 5242fede-7e19-0410-aef8-94bd7d2200fb + virtual isDone() function, always returning false by + default. * source/noding/MCIndexNoder.cpp (intersectChains): short-circuit from JTS-1.8, based on the new SegmentIntersector::isDone() method. * source/noding/Makefile.am, + source/noding/FastNodingValidator.cpp, + source/noding/SingleInteriorIntersectionFinder.cpp, source/headers/geos/noding/Makefile.am, source/headers/geos/noding/FastNodingValidator.h, + source/headers/geos/noding/SingleInteriorIntersectionFinder.h: New ports from JTS-1.8-cvs. * source/headers/geos/geomgraph/EdgeNodingValidator.h: use a FastNodingValidator rather then a simple + NodingValidator. git-svn-id: http://svn.osgeo.org/geos/trunk@1939 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-07 Sandro Santilli @@ -22590,11 +26229,9 @@ source/headers/geos/algorithm/CentralEndpointIntersector.h, source/headers/geos/algorithm/LineIntersector.h, source/headers/geos/algorithm/Makefile.am: * source/headers/geos/algorithm/: - CentralEndpointIntersector.h, Makefile.am: new - port from JTS-1.8. * algorithm::LineIntersector: - robustness improvements from JTS-1.8. - git-svn-id: http://svn.osgeo.org/geos/trunk@1938 - 5242fede-7e19-0410-aef8-94bd7d2200fb + CentralEndpointIntersector.h, Makefile.am: new port from + JTS-1.8. * algorithm::LineIntersector: robustness improvements from JTS-1.8. git-svn-id: http://svn.osgeo.org/geos/trunk@1938 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-05 Mateusz Loskot @@ -22605,22 +26242,12 @@ 2006-12-05 Mateusz Loskot - * ChangeLog: Fixed typos in changelog. git-svn-id: - http://svn.osgeo.org/geos/trunk@1936 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-12-05 Mateusz Loskot - - * : Set svn:keyword property on CAPI tests. git-svn-id: - http://svn.osgeo.org/geos/trunk@1935 + * ChangeLog: Fixed typos in changelog. git-svn-id: http://svn.osgeo.org/geos/trunk@1936 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-05 Mateusz Loskot - * ChangeLog, tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Purifying CAPI - unit tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1934 + * : Set svn:keyword property on CAPI tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1935 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-05 Mateusz Loskot @@ -22633,85 +26260,67 @@ * ChangeLog, source/headers/geos/geom/BinaryOp.h, source/operation/overlay/OverlayOp.cpp: * source/operation/overlay/OverlayOp.cpp: Use - EdgeNodingValidator instead of - OverlayResultValidator (faster and more effective). - Note that compile-time defines can select use of either or - both ones. * - source/headers/geos/geom/BinaryOp.h: be quiet if not in - DEBUG mode. git-svn-id: - http://svn.osgeo.org/geos/trunk@1932 - 5242fede-7e19-0410-aef8-94bd7d2200fb + EdgeNodingValidator instead of OverlayResultValidator + (faster and more effective). Note that compile-time defines can + select use of either or both ones. * source/headers/geos/geom/BinaryOp.h: be quiet if not in + DEBUG mode. git-svn-id: http://svn.osgeo.org/geos/trunk@1932 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-05 Sandro Santilli * ChangeLog, source/headers/geos/noding/NodingValidator.h, - source/noding/NodingValidator.cpp: * noding::NodingValidator.h: throw TopologyException - rather then a generic GEOSException. git-svn-id: - http://svn.osgeo.org/geos/trunk@1931 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/noding/NodingValidator.cpp: * noding::NodingValidator.h: throw TopologyException rather then a generic GEOSException. git-svn-id: http://svn.osgeo.org/geos/trunk@1931 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/EdgeNodingValidator.h: * source/headers/geos/geomgraph/EdgeNodingValidator.h: - fix members initialization order. git-svn-id: - http://svn.osgeo.org/geos/trunk@1930 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, source/headers/geos/geomgraph/EdgeNodingValidator.h: * source/headers/geos/geomgraph/EdgeNodingValidator.h: fix members initialization order. git-svn-id: http://svn.osgeo.org/geos/trunk@1930 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli * ChangeLog, source/geomgraph/EdgeNodingValidator.cpp, - source/headers/geos/geomgraph/EdgeNodingValidator.h: * geomgraph::EdgeNodingValidator: minor cleanup to - use references args instead of pointers for method - that doesn't handle NULLs anyway. git-svn-id: - http://svn.osgeo.org/geos/trunk@1929 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/headers/geos/geomgraph/EdgeNodingValidator.h: * geomgraph::EdgeNodingValidator: minor cleanup to use references args instead of pointers for method that doesn't handle NULLs anyway. git-svn-id: http://svn.osgeo.org/geos/trunk@1929 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli * ChangeLog, source/simplify/DouglasPeuckerLineSimplifier.cpp, - tests/unit/Makefile.am, tests/unit/capi/{GEOSCoordSeq.cpp => - GEOSCoordSeqTest.cpp}, tests/unit/capi/GEOSSimplifyTest.cpp: * tests/unit/capi/: GEOSCoordSeq.cpp => GEOSCoordSeqTest.cpp - * tests/unit/capi/GEOSSimplifyTest.cpp: new test - for GEOSSimplify (just a test for bug #134). * - source/simplify/DouglasPeuckerLineSimplifier.cpp (simplify): - don't try to simplify empty coordinate lists. Fixes bug - #134. git-svn-id: http://svn.osgeo.org/geos/trunk@1928 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/unit/Makefile.am, tests/unit/capi/GEOSCoordSeq.cpp, + tests/unit/capi/GEOSCoordSeqTest.cpp, + tests/unit/capi/GEOSSimplifyTest.cpp: * tests/unit/capi/: GEOSCoordSeq.cpp => GEOSCoordSeqTest.cpp * tests/unit/capi/GEOSSimplifyTest.cpp: new test for GEOSSimplify (just a test for bug #134). * source/simplify/DouglasPeuckerLineSimplifier.cpp + (simplify): don't try to simplify empty coordinate lists. + Fixes bug #134. git-svn-id: http://svn.osgeo.org/geos/trunk@1928 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli * ChangeLog, tests/unit/capi/GEOSCoordSeq.cpp: Other tests using - setOrdinate instead of set{X,Y,Z} git-svn-id: - http://svn.osgeo.org/geos/trunk@1927 + setOrdinate instead of set{X,Y,Z} git-svn-id: http://svn.osgeo.org/geos/trunk@1927 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli * ChangeLog, source/geom/CoordinateArraySequence.cpp: * source/geom/CoordinateArraySequence.cpp (setOrdinate): fix bug - #133. git-svn-id: http://svn.osgeo.org/geos/trunk@1926 + #133. git-svn-id: http://svn.osgeo.org/geos/trunk@1926 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli - * ChangeLog, tests/unit/capi/GEOSCoordSeq.cpp: * tests/unit/capi/GEOSCoordSeq.cpp: add test for bug #133 (failing). - git-svn-id: http://svn.osgeo.org/geos/trunk@1925 + * ChangeLog, tests/unit/capi/GEOSCoordSeq.cpp: * tests/unit/capi/GEOSCoordSeq.cpp: add test for bug #133 (failing). git-svn-id: http://svn.osgeo.org/geos/trunk@1925 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-12-04 Sandro Santilli * ChangeLog, tests/unit/geom/CoordinateArraySequenceTest.cpp: * tests/unit/geom/CoordinateArraySequenceTest.cpp: added tests for - setOrdinate() git-svn-id: http://svn.osgeo.org/geos/trunk@1924 + setOrdinate() git-svn-id: http://svn.osgeo.org/geos/trunk@1924 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-30 Sandro Santilli * ChangeLog, capi/geos_c.cpp, tests/unit/Makefile.am, - tests/unit/capi/GEOSCoordSeq.cpp: * tests/unit/: Makefile.am, capi/GEOSCoordSeq.cpp: - new experimental test for C-API GEOSCoordSeq. * - capi/geos_c.cpp (GEOSCoordSeq_create): removed - suspicious static cast. git-svn-id: - http://svn.osgeo.org/geos/trunk@1923 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/unit/capi/GEOSCoordSeq.cpp: * tests/unit/: Makefile.am, capi/GEOSCoordSeq.cpp: new experimental test for C-API GEOSCoordSeq. * capi/geos_c.cpp (GEOSCoordSeq_create): removed suspicious static cast. git-svn-id: http://svn.osgeo.org/geos/trunk@1923 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-28 Mateusz Loskot @@ -22725,146 +26334,114 @@ 2006-11-23 Sandro Santilli * ChangeLog, source/geom/Point.cpp: * source/geom/Point.cpp (equalsExact): don't segfault on empty - points. Fixes bug #132. git-svn-id: - http://svn.osgeo.org/geos/trunk@1921 + points. Fixes bug #132. git-svn-id: http://svn.osgeo.org/geos/trunk@1921 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-23 Sandro Santilli * tests/xmltester/stmlf-cases-20061020.xml: Added short descripion - of testcases provenience git-svn-id: - http://svn.osgeo.org/geos/trunk@1920 + of testcases provenience git-svn-id: http://svn.osgeo.org/geos/trunk@1920 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-22 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/stmlf-cases-20061020.xml: * tests/xmltester/: stmlf-cases-20061020.xml, Makefile.am: add more - robustness testcases. git-svn-id: - http://svn.osgeo.org/geos/trunk@1919 + robustness testcases. git-svn-id: http://svn.osgeo.org/geos/trunk@1919 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-22 Sandro Santilli - * ChangeLog, autogen.sh: Patch by dron@ak4719.spb.edu: * - autogen.sh: call 'autoheader' after 'aclocal'. Fixes bug - #131 git-svn-id: http://svn.osgeo.org/geos/trunk@1918 + * ChangeLog, autogen.sh: Patch by dron@ak4719.spb.edu: * autogen.sh: call 'autoheader' after 'aclocal'. Fixes bug #131 git-svn-id: http://svn.osgeo.org/geos/trunk@1918 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-18 Mateusz Loskot - * source/Makefile.vc: Fixed path to geos_c.h in source/makefile.vc. - git-svn-id: http://svn.osgeo.org/geos/trunk@1917 + * source/Makefile.vc: Fixed path to geos_c.h in source/makefile.vc. git-svn-id: http://svn.osgeo.org/geos/trunk@1917 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-15 Sandro Santilli * ChangeLog, capi/Makefile.am, capi/geos_c.h.vc.in, configure.in, source/Makefile.vc, source/headers/geos/Makefile.am, - source/headers/geos/version.h.vc: * configure.in: don't generate geos_c.h.vc * - source/Makefile.vc: don't generate geos_c.h and version.h - * source/headers/geos/version.h.vc, capi/geos_c.h.vc.in: - removed, will NOT be needed by Makefile.vc * - source/headers/geos/Makefile.am: distribute version.h - * capi/Makefile.am: distribute geos_c.h git-svn-id: - http://svn.osgeo.org/geos/trunk@1916 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/headers/geos/version.h.vc: * configure.in: don't generate geos_c.h.vc * source/Makefile.vc: don't generate geos_c.h and version.h * source/headers/geos/version.h.vc, capi/geos_c.h.vc.in: removed, will NOT be needed by Makefile.vc * source/headers/geos/Makefile.am: distribute version.h * capi/Makefile.am: distribute geos_c.h git-svn-id: http://svn.osgeo.org/geos/trunk@1916 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-15 Sandro Santilli - * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: hopefully fixed GEOS_DLL use. git-svn-id: - http://svn.osgeo.org/geos/trunk@1915 + * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: hopefully fixed GEOS_DLL use. git-svn-id: http://svn.osgeo.org/geos/trunk@1915 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-15 Sandro Santilli * ChangeLog, capi/geos_c.cpp: * capi/geos_c.cpp (GEOSGeom_getDimensions): Fix a segfault on empty - geometry input (fix bug #126). git-svn-id: - http://svn.osgeo.org/geos/trunk@1914 + geometry input (fix bug #126). git-svn-id: http://svn.osgeo.org/geos/trunk@1914 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-11 Paul Ramsey * capi/geos_c.h.vc.in: Retreived original .vc file and put in MACRO substitutions. Somehow GNU version replaced .vc version during file - shuffles to get macros in. git-svn-id: - http://svn.osgeo.org/geos/trunk@1913 + shuffles to get macros in. git-svn-id: http://svn.osgeo.org/geos/trunk@1913 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Sandro Santilli - * ChangeLog: fixed timewarp git-svn-id: - http://svn.osgeo.org/geos/trunk@1912 + * ChangeLog: fixed timewarp git-svn-id: http://svn.osgeo.org/geos/trunk@1912 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Paul Ramsey - * ChangeLog: noted .vc change git-svn-id: - http://svn.osgeo.org/geos/trunk@1911 + * ChangeLog: noted .vc change git-svn-id: http://svn.osgeo.org/geos/trunk@1911 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Paul Ramsey * capi/Makefile.am: Made sure geos_c.h.vc is part of 'make dist' - since VC users won't have .configure git-svn-id: - http://svn.osgeo.org/geos/trunk@1910 + since VC users won't have .configure git-svn-id: http://svn.osgeo.org/geos/trunk@1910 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Paul Ramsey - * capi/Makefile.am, capi/{geos_c.h.vc => geos_c.h.vc.in}: Added - substitution strings to .in files for .vc generation. git-svn-id: - http://svn.osgeo.org/geos/trunk@1909 + * capi/Makefile.am, capi/geos_c.h.vc, capi/geos_c.h.vc.in: Added + substitution strings to .in files for .vc generation. git-svn-id: http://svn.osgeo.org/geos/trunk@1909 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Paul Ramsey - * configure.in: Changes for capi .vc generation git-svn-id: - http://svn.osgeo.org/geos/trunk@1908 + * configure.in: Changes for capi .vc generation git-svn-id: http://svn.osgeo.org/geos/trunk@1908 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-10 Howard Butler - * capi/geos_c.h.vc: update git-svn-id: - http://svn.osgeo.org/geos/trunk@1907 + * capi/geos_c.h.vc: update git-svn-id: http://svn.osgeo.org/geos/trunk@1907 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-09 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * test/xmltester/XMLTester.cpp: improved 'testarea' test. - git-svn-id: http://svn.osgeo.org/geos/trunk@1906 + * ChangeLog, tests/xmltester/XMLTester.cpp: * test/xmltester/XMLTester.cpp: improved 'testarea' test. git-svn-id: http://svn.osgeo.org/geos/trunk@1906 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-08 Sandro Santilli - * ChangeLog: added 'release-separator' tag git-svn-id: - http://svn.osgeo.org/geos/trunk@1905 + * ChangeLog: added 'release-separator' tag git-svn-id: http://svn.osgeo.org/geos/trunk@1905 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-08 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/robustness.xml: * tests/xmltester/robustness.xml: made test safe to - run by using the new 'areatest' operation; added - new testcases just raised on the mailing list. * - tests/xmltester/Makefile.am: robustness.xml is now safe - to run, so run it on make check. git-svn-id: - http://svn.osgeo.org/geos/trunk@1904 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/xmltester/robustness.xml: * tests/xmltester/robustness.xml: made test safe to run by using the new 'areatest' operation; added new testcases just raised on the mailing list. * tests/xmltester/Makefile.am: robustness.xml is now safe to run, so run it on make check. git-svn-id: http://svn.osgeo.org/geos/trunk@1904 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-08 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: enable - COMMONBITS-removal heuristic so it is attempted - before geometry snapping. git-svn-id: - http://svn.osgeo.org/geos/trunk@1903 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: enable COMMONBITS-removal heuristic so it is attempted before geometry snapping. git-svn-id: http://svn.osgeo.org/geos/trunk@1903 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-05 Sandro Santilli * ChangeLog, capi/Makefile.am: * capi/Makefile.am: distribute files needed for testing, proper - cleanup (make distcheck works now) git-svn-id: - http://svn.osgeo.org/geos/trunk@1900 + cleanup (make distcheck works now) git-svn-id: http://svn.osgeo.org/geos/trunk@1900 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-05 Charlie Savage @@ -22881,136 +26458,106 @@ 2006-11-05 Charlie Savage - * swig/geos.i: Fixes for changes in header files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1897 + * swig/geos.i: Fixes for changes in header files. git-svn-id: http://svn.osgeo.org/geos/trunk@1897 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-03 Sandro Santilli - * capi/testrunner.sh: redirect 'diff' output to stderr git-svn-id: - http://svn.osgeo.org/geos/trunk@1896 + * capi/testrunner.sh: redirect 'diff' output to stderr git-svn-id: http://svn.osgeo.org/geos/trunk@1896 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-03 Sandro Santilli - * ChangeLog, capi/testrunner.sh: hopefully fixed proper quoting - git-svn-id: http://svn.osgeo.org/geos/trunk@1895 + * ChangeLog, capi/testrunner.sh: hopefully fixed proper quoting git-svn-id: http://svn.osgeo.org/geos/trunk@1895 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-03 Sandro Santilli * ChangeLog, capi/testrunner.sh: Report non-zero return from - ./geostest run git-svn-id: http://svn.osgeo.org/geos/trunk@1894 + ./geostest run git-svn-id: http://svn.osgeo.org/geos/trunk@1894 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: disable debugging output by - default. git-svn-id: http://svn.osgeo.org/geos/trunk@1893 + default. git-svn-id: http://svn.osgeo.org/geos/trunk@1893 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli * ChangeLog, capi/geostest.c: * capi/geostest.c: updated to use the new GEOSGeometry typedef, so to build w/out warnings and fully respecting current const - specification. git-svn-id: http://svn.osgeo.org/geos/trunk@1892 + specification. git-svn-id: http://svn.osgeo.org/geos/trunk@1892 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp, capi/geos_c.h.in: const-corrected and documented - GEOSPolygonize function. git-svn-id: - http://svn.osgeo.org/geos/trunk@1891 + GEOSPolygonize function. git-svn-id: http://svn.osgeo.org/geos/trunk@1891 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli - * ChangeLog, capi/test.expected, capi/testrunner.sh: * capi/test.expected: updated expected version * - capi/testrunner.sh: be happy with geostest running w/out - segfaulting, still run diff for reference. git-svn-id: - http://svn.osgeo.org/geos/trunk@1890 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, capi/test.expected, capi/testrunner.sh: * capi/test.expected: updated expected version * capi/testrunner.sh: be happy with geostest running w/out segfaulting, still run diff for reference. git-svn-id: http://svn.osgeo.org/geos/trunk@1890 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli - * ChangeLog, configure.in: * configure.in: updated versions to 3.0.0rc2 / CAPI-1.3.0 - git-svn-id: http://svn.osgeo.org/geos/trunk@1889 + * ChangeLog, configure.in: * configure.in: updated versions to 3.0.0rc2 / CAPI-1.3.0 git-svn-id: http://svn.osgeo.org/geos/trunk@1889 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-11-02 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch by Markus - Schaber : * capi/geos_c.h.in: add - GEOSGeometry and GEOSCoordSequence typedef, to unhide the - pointer type and allow fine-grained const specification, - use the new typedefs in function signatures (fix some - const-specifications accordingly) * capi/geos_c.cpp: define - GEOSGeometry and GEOSCoordSequence for cross-checking of - types in header. git-svn-id: http://svn.osgeo.org/geos/trunk@1888 + Schaber : * capi/geos_c.h.in: add GEOSGeometry and GEOSCoordSequence typedef, to unhide the pointer type and allow fine-grained const specification, use the new typedefs in function + signatures (fix some const-specifications accordingly) * capi/geos_c.cpp: define GEOSGeometry and GEOSCoordSequence for cross-checking of types in header. git-svn-id: http://svn.osgeo.org/geos/trunk@1888 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch by Markus - Schaber * capi/geos_c.cpp: more - focused 'using' directives. * capi/geos_c.h.in: let the enum - visible by geos_c.cpp now that there are no more name - clashes. git-svn-id: http://svn.osgeo.org/geos/trunk@1887 + Schaber * capi/geos_c.cpp: more focused 'using' directives. * capi/geos_c.h.in: let the enum visible by geos_c.cpp now that there are no more name clashes. git-svn-id: http://svn.osgeo.org/geos/trunk@1887 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli - * capi/geos_c.cpp: removed useless GEOSGeomTypes define git-svn-id: - http://svn.osgeo.org/geos/trunk@1886 + * capi/geos_c.cpp: removed useless GEOSGeomTypes define git-svn-id: http://svn.osgeo.org/geos/trunk@1886 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli * ChangeLog, source/operation/overlay/OverlayOp.cpp: reduce default - verbosity git-svn-id: http://svn.osgeo.org/geos/trunk@1885 + verbosity git-svn-id: http://svn.osgeo.org/geos/trunk@1885 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp: Remove a typedef which is also - included via Header; Use dynamic_cast instead of C - cast in 2 cases to allow the RTTI type - check; Replace "geoms" temp vector in polygonizer - function with a loop, this saves us at least one - of the two vector copies; Drop 2 unneded - const_cast occurences; Allow calling - getNumGeometries against non-collections; 2 - comment / whitespace cleanups. * capi/geos_c.h.in: - Added a comment explaining ou #ifndef magic; - Unified the two #ifndef into a single one. git-svn-id: - http://svn.osgeo.org/geos/trunk@1884 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp: Remove a typedef which is also included via Header; Use dynamic_cast instead of C cast in 2 cases to allow the + RTTI type check; Replace "geoms" temp vector in + polygonizer function with a loop, this saves us at least one of the + two vector copies; Drop 2 unneded const_cast occurences; Allow calling getNumGeometries against non-collections; 2 comment / whitespace cleanups. * capi/geos_c.h.in: Added a comment explaining ou #ifndef magic; Unified the two #ifndef into a single one. git-svn-id: http://svn.osgeo.org/geos/trunk@1884 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli * ChangeLog, capi/Makefile.am, capi/test.expected, capi/testrunner.sh: * capi/: test.expected, testrunner.sh, Makefile.am: Added a run of - ./geostest as part of 'make check' git-svn-id: - http://svn.osgeo.org/geos/trunk@1883 + ./geostest as part of 'make check' git-svn-id: http://svn.osgeo.org/geos/trunk@1883 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch submitted by - Markus Schaber ( reviewed and fixed ) - * capi/: geos_c.cpp, geos_c.h.in: Changed the C-API - implementation to actually include the header that's - included by the clients, this allows the compiler to check - declarations and implementation for consistency, fixed geos_c.cpp - accordingly (const-correctness, mainly). git-svn-id: - http://svn.osgeo.org/geos/trunk@1882 + Markus Schaber ( reviewed and fixed ) * capi/: geos_c.cpp, geos_c.h.in: Changed the C-API implementation to actually include the + header that's included by the clients, this allows the + compiler to check declarations and implementation for consistency, + fixed geos_c.cpp accordingly (const-correctness, mainly). git-svn-id: http://svn.osgeo.org/geos/trunk@1882 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-30 Sandro Santilli * ChangeLog, capi/geostest.c: * capi/geostest.c: added some checks of return from CAPI functions - returning GEOSGeom (not all, just a few) git-svn-id: - http://svn.osgeo.org/geos/trunk@1881 + returning GEOSGeom (not all, just a few) git-svn-id: http://svn.osgeo.org/geos/trunk@1881 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-27 Sandro Santilli @@ -23021,26 +26568,22 @@ source/headers/geos/geom/Geometry.h, source/headers/geos/operation/polygonize/Polygonizer.h, source/operation/polygonize/Polygonizer.cpp: Patch by Markus Schaber - * algorithm::InteriorPointLine - (ctor): take Geometry by const-pointer. * geom::Geometry - (getInteriorPoint): made a const-method * - operation::polygonize::Polygonizer: implement filter_ro rather - then filter_rw, as it doesn't change the Geometry, propagated - change to internal interfaces (add methods) git-svn-id: - http://svn.osgeo.org/geos/trunk@1880 + * algorithm::InteriorPointLine (ctor): take Geometry by + const-pointer. * geom::Geometry (getInteriorPoint): made a const-method * operation::polygonize::Polygonizer: implement filter_ro + rather then filter_rw, as it doesn't change the Geometry, + propagated change to internal interfaces (add methods) git-svn-id: http://svn.osgeo.org/geos/trunk@1880 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-26 Sandro Santilli - * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: reverted all changes of 'int' types - to 'size_t' types (the lib never changed, and still expects - ints) git-svn-id: http://svn.osgeo.org/geos/trunk@1879 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: reverted all changes of 'int' types to 'size_t' types (the lib never changed, and still + expects ints) git-svn-id: http://svn.osgeo.org/geos/trunk@1879 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-24 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: try original geoms first by - default. git-svn-id: http://svn.osgeo.org/geos/trunk@1878 + default. git-svn-id: http://svn.osgeo.org/geos/trunk@1878 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-24 Sandro Santilli @@ -23048,8 +26591,7 @@ * ChangeLog, source/headers/geos/operation/overlay/OverlayResultValidator.h, source/operation/overlay/OverlayResultValidator.cpp: * operation::overlay::OverlayResultValidator.cpp (isValid): run the - test even if inputs and output are not areal. git-svn-id: - http://svn.osgeo.org/geos/trunk@1877 + test even if inputs and output are not areal. git-svn-id: http://svn.osgeo.org/geos/trunk@1877 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-24 Sandro Santilli @@ -23057,48 +26599,39 @@ * ChangeLog, source/headers/geos/operation/overlay/FuzzyPointLocator.h, source/operation/overlay/FuzzyPointLocator.cpp: * operation::overlay::FuzzyPointLocator: eliminate non-polygonal - components from consideration when testing the location of points. - git-svn-id: http://svn.osgeo.org/geos/trunk@1876 + components from consideration when testing the location of points. git-svn-id: http://svn.osgeo.org/geos/trunk@1876 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-24 Sandro Santilli * ChangeLog, source/headers/geos/precision/GeometrySnapper.h, source/precision/GeometrySnapper.cpp: * precision::GeometrySnapper: snapPrecisionFactor augmented from - 10e-12 to 10e-10. git-svn-id: http://svn.osgeo.org/geos/trunk@1875 + 10e-12 to 10e-10. git-svn-id: http://svn.osgeo.org/geos/trunk@1875 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-24 Sandro Santilli * ChangeLog, source/headers/geos/precision/LineStringSnapper.h, - source/precision/LineStringSnapper.cpp: * precision::LineStringSnapper (findSegmentToSnap): return the - *closest* segment, don't snap if the closest segment *intersects* - the snap points, consider a distance of exactly snapTolerance as - non-tolerated (got in sync with JTS) git-svn-id: - http://svn.osgeo.org/geos/trunk@1874 + source/precision/LineStringSnapper.cpp: * precision::LineStringSnapper (findSegmentToSnap): return the *closest* segment, don't snap if the closest segment *intersects* the snap points, consider a distance of exactly snapTolerance as non-tolerated (got in sync with JTS) git-svn-id: http://svn.osgeo.org/geos/trunk@1874 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-23 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h (SnapOp): document and add optional CBR step (snap after applying common bits removal - this is - the default); (check_valid): add validity checker function. - git-svn-id: http://svn.osgeo.org/geos/trunk@1873 + the default); (check_valid): add validity checker function. git-svn-id: http://svn.osgeo.org/geos/trunk@1873 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-20 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/noding/ScaledNoder.cpp, source/noding/SegmentString.cpp: * noding::SegmentString: added notifyCoordinatesChange method. * - noding::ScaledNoder: notify possible coordinates change to - SegmentString after removing repeated points. git-svn-id: - http://svn.osgeo.org/geos/trunk@1872 + source/noding/ScaledNoder.cpp, source/noding/SegmentString.cpp: * noding::SegmentString: added notifyCoordinatesChange method. * noding::ScaledNoder: notify possible coordinates change to + SegmentString after removing repeated points. git-svn-id: http://svn.osgeo.org/geos/trunk@1872 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-19 Sandro Santilli - * ChangeLog, configure.in: * configure.in: use 'expr' for arithmetics (more portable) - git-svn-id: http://svn.osgeo.org/geos/trunk@1871 + * ChangeLog, configure.in: * configure.in: use 'expr' for arithmetics (more portable) git-svn-id: http://svn.osgeo.org/geos/trunk@1871 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-18 Mateusz Loskot @@ -23110,157 +26643,132 @@ 2006-10-18 Mateusz Loskot * source/Makefile.vc, source/dirlist.mk: Updated source\makefile.vc - and source\dirlist.mk files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1869 + and source\dirlist.mk files. git-svn-id: http://svn.osgeo.org/geos/trunk@1869 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-18 Mateusz Loskot - * makefile.vc: Added top-level makefile.vc. git-svn-id: - http://svn.osgeo.org/geos/trunk@1868 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-10-18 Sandro Santilli - - * : fixed svn:ignore property git-svn-id: - http://svn.osgeo.org/geos/trunk@1867 + * makefile.vc: Added top-level makefile.vc. git-svn-id: http://svn.osgeo.org/geos/trunk@1868 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-18 Sandro Santilli - * ChangeLog, source/operation/overlay/OverlayOp.cpp: disable non-JTS - overlay result validators (to more closely track JTS at this stage) - git-svn-id: http://svn.osgeo.org/geos/trunk@1866 + * : fixed svn:ignore property git-svn-id: http://svn.osgeo.org/geos/trunk@1867 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-17 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h (SnapOp): fixed - horrible bug applying overlay of first geom to - itself :( git-svn-id: http://svn.osgeo.org/geos/trunk@1865 - 5242fede-7e19-0410-aef8-94bd7d2200fb + horrible bug applying overlay of first geom to itself :( git-svn-id: http://svn.osgeo.org/geos/trunk@1865 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-17 Sandro Santilli * capi/geos_c.h.in: really fixed 'extra tokens at end of #endif - directive' warning git-svn-id: http://svn.osgeo.org/geos/trunk@1864 + directive' warning git-svn-id: http://svn.osgeo.org/geos/trunk@1864 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-17 Sandro Santilli * capi/geos_c.h.in: fixed 'extra tokens at end of #endif directive' - warning git-svn-id: http://svn.osgeo.org/geos/trunk@1863 + warning git-svn-id: http://svn.osgeo.org/geos/trunk@1863 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-17 Sandro Santilli - * ChangeLog, capi/Makefile.am: * capi/Makefile.am: don't directly link geostest against - both libgeos.so and libstdc++ (should be derived by - libgeos_c.so). git-svn-id: - http://svn.osgeo.org/geos/trunk@1862 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, capi/Makefile.am: * capi/Makefile.am: don't directly link geostest against both libgeos.so and libstdc++ (should be derived by libgeos_c.so). git-svn-id: http://svn.osgeo.org/geos/trunk@1862 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-12 Sandro Santilli * ChangeLog, tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h: * tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/bigtest.h, tests/bigtest/TestSweepLineSpeed.cpp: fixed header inclusion, to - reduce compiler noise. git-svn-id: - http://svn.osgeo.org/geos/trunk@1861 + reduce compiler noise. git-svn-id: http://svn.osgeo.org/geos/trunk@1861 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-09 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: always snap geoms to - each-other before applying an overlay (temp hack). git-svn-id: - http://svn.osgeo.org/geos/trunk@1860 + each-other before applying an overlay (temp hack). git-svn-id: http://svn.osgeo.org/geos/trunk@1860 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-09 Sandro Santilli * ChangeLog, source/operation/overlay/OverlayOp.cpp: * source/operation/overlay/OverlayOp.cpp: enable all overlay result - validators, make it disablable at compile time. git-svn-id: - http://svn.osgeo.org/geos/trunk@1859 + validators, make it disablable at compile time. git-svn-id: http://svn.osgeo.org/geos/trunk@1859 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-05 Mateusz Loskot * ChangeLog, capi/geos_c.h.in, capi/geos_c.h.vc: Added inclusion - guards to geos_c.h files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1858 + guards to geos_c.h files. git-svn-id: http://svn.osgeo.org/geos/trunk@1858 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-05 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: increment areatest - verbosity (needs -v -v) git-svn-id: - http://svn.osgeo.org/geos/trunk@1857 + verbosity (needs -v -v) git-svn-id: http://svn.osgeo.org/geos/trunk@1857 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-10-02 Howard Butler * ChangeLog, capi/geos_c.cpp: GEOSEnvelope wasn't in the PROTOTYPES - section in geos_c.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@1856 + section in geos_c.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@1856 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-27 Sandro Santilli - * HOWTO_RELEASE: updated tag item git-svn-id: - http://svn.osgeo.org/geos/trunk@1855 + * HOWTO_RELEASE: updated tag item git-svn-id: http://svn.osgeo.org/geos/trunk@1855 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-27 Sandro Santilli - * HOWTO_RELEASE: added info about svn tags git-svn-id: - http://svn.osgeo.org/geos/trunk@1854 + * HOWTO_RELEASE: added info about svn tags git-svn-id: http://svn.osgeo.org/geos/trunk@1854 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-19 Sandro Santilli * source/operation/overlay/OffsetPointGenerator.cpp: Added - include git-svn-id: - http://svn.osgeo.org/geos/trunk@1853 + include git-svn-id: http://svn.osgeo.org/geos/trunk@1853 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-08 Paul Ramsey * AUTHORS: Added information about funders of the 3.0.0 series: Safe Software, Autodesk, Bavarian State Ministry of Agriculture and - Forestry and the State Survey of Bavaria. git-svn-id: - http://svn.osgeo.org/geos/trunk@1851 + Forestry and the State Survey of Bavaria. git-svn-id: http://svn.osgeo.org/geos/trunk@1851 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-08 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1850 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1850 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-08 Sandro Santilli * source/operation/overlay/OverlayResultValidator.cpp: more - debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1849 + debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1849 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-08 Sandro Santilli * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, tests/unit/operation/overlay/OverlayResultValidatorTest.cpp: More - testcases git-svn-id: http://svn.osgeo.org/geos/trunk@1848 + testcases git-svn-id: http://svn.osgeo.org/geos/trunk@1848 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/overlay/OverlayResultValidatorTest.cpp: New - unit test for OverlayResultValidator class git-svn-id: - http://svn.osgeo.org/geos/trunk@1847 + unit test for OverlayResultValidator class git-svn-id: http://svn.osgeo.org/geos/trunk@1847 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/operation/overlay/OverlayResultValidator.cpp: more - debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1846 + debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1846 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli @@ -23268,20 +26776,19 @@ * source/headers/geos/operation/overlay/OverlayResultValidator.h, source/operation/overlay/OverlayResultValidator.cpp: Added addVertices private method (unused, as in JTS, but possibly useful - in the future) git-svn-id: http://svn.osgeo.org/geos/trunk@1845 + in the future) git-svn-id: http://svn.osgeo.org/geos/trunk@1845 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/operation/overlay/OverlayResultValidator.cpp: Added - debugging code git-svn-id: http://svn.osgeo.org/geos/trunk@1844 + debugging code git-svn-id: http://svn.osgeo.org/geos/trunk@1844 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: more - testcases (added test for max distance of offset points) - git-svn-id: http://svn.osgeo.org/geos/trunk@1843 + testcases (added test for max distance of offset points) git-svn-id: http://svn.osgeo.org/geos/trunk@1843 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli @@ -23306,122 +26813,102 @@ tests/unit/noding/SegmentStringTest.cpp, tests/unit/operation/distance/DistanceOpTest.cpp, tests/unit/precision/LineStringSnapperTest.cpp: removed - svn:executable prop from all .cpp files git-svn-id: - http://svn.osgeo.org/geos/trunk@1842 + svn:executable prop from all .cpp files git-svn-id: http://svn.osgeo.org/geos/trunk@1842 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: removed - svn:executable property git-svn-id: - http://svn.osgeo.org/geos/trunk@1841 + svn:executable property git-svn-id: http://svn.osgeo.org/geos/trunk@1841 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: testing - execute bit state git-svn-id: http://svn.osgeo.org/geos/trunk@1840 + execute bit state git-svn-id: http://svn.osgeo.org/geos/trunk@1840 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Mateusz Loskot - * : Set svn:keyword for $ expansion. git-svn-id: - http://svn.osgeo.org/geos/trunk@1839 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-09-07 Sandro Santilli - - * source/operation/overlay/OverlayOp.cpp: Cleaned up - OverlayResultValidator call (still disabled due to bugs) - git-svn-id: http://svn.osgeo.org/geos/trunk@1838 + * : Set svn:keyword for $ expansion. git-svn-id: http://svn.osgeo.org/geos/trunk@1839 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/operation/overlay/OverlayResultValidator.cpp: blindly - return positive result if any input or output is not an area - git-svn-id: http://svn.osgeo.org/geos/trunk@1837 + return positive result if any input or output is not an area git-svn-id: http://svn.osgeo.org/geos/trunk@1837 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: new test - for FuzzyPointLocator git-svn-id: - http://svn.osgeo.org/geos/trunk@1836 + for FuzzyPointLocator git-svn-id: http://svn.osgeo.org/geos/trunk@1836 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/headers/geos/geom/Location.h: Explicit values to - LocationValue enum items. Removed CVS Log git-svn-id: - http://svn.osgeo.org/geos/trunk@1835 + LocationValue enum items. Removed CVS Log git-svn-id: http://svn.osgeo.org/geos/trunk@1835 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * doc/example.cpp: Removed catch-all headers inclusion and use of - obsoleted Unload class git-svn-id: - http://svn.osgeo.org/geos/trunk@1834 + obsoleted Unload class git-svn-id: http://svn.osgeo.org/geos/trunk@1834 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli - * README: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1833 + * README: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1833 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/headers/geos/operation/overlay/OverlayResultValidator.h: - comment cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1832 + comment cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1832 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * source/headers/geos/operation/distance/DistanceOp.h: Comments - about ownership (and lifetime) of returned objects git-svn-id: - http://svn.osgeo.org/geos/trunk@1831 + about ownership (and lifetime) of returned objects git-svn-id: http://svn.osgeo.org/geos/trunk@1831 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli * tests/unit/Makefile.am, tests/unit/operation/distance/DistanceOpTest.cpp: New DistanceOp - unit test git-svn-id: http://svn.osgeo.org/geos/trunk@1830 + unit test git-svn-id: http://svn.osgeo.org/geos/trunk@1830 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli - * ChangeLog, source/operation/distance/DistanceOp.cpp: (computeMinDistancePoints): fixed invalid reference. git-svn-id: - http://svn.osgeo.org/geos/trunk@1829 + * ChangeLog, source/operation/distance/DistanceOp.cpp: (computeMinDistancePoints): fixed invalid reference. git-svn-id: http://svn.osgeo.org/geos/trunk@1829 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-07 Sandro Santilli - * ChangeLog, autogen.sh: don't giveup on automake failures (testing) - git-svn-id: http://svn.osgeo.org/geos/trunk@1828 + * ChangeLog, autogen.sh: don't giveup on automake failures (testing) git-svn-id: http://svn.osgeo.org/geos/trunk@1828 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Ops, overlay result - validation erroenously committed git-svn-id: - http://svn.osgeo.org/geos/trunk@1827 + validation erroenously committed git-svn-id: http://svn.osgeo.org/geos/trunk@1827 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli * ChangeLog, tests/unit/Makefile.am, tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: new test - for OffsetPointGenerator class git-svn-id: - http://svn.osgeo.org/geos/trunk@1826 + for OffsetPointGenerator class git-svn-id: http://svn.osgeo.org/geos/trunk@1826 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli * source/operation/overlay/OffsetPointGenerator.cpp: Fixed - uninitialized memory bug git-svn-id: - http://svn.osgeo.org/geos/trunk@1825 + uninitialized memory bug git-svn-id: http://svn.osgeo.org/geos/trunk@1825 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli @@ -23429,21 +26916,18 @@ * ChangeLog, source/operation/overlay/OverlayOp.cpp, tests/unit/Makefile.am, tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: new test for - FuzzyPointLocator class git-svn-id: - http://svn.osgeo.org/geos/trunk@1824 + FuzzyPointLocator class git-svn-id: http://svn.osgeo.org/geos/trunk@1824 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli * tests/unit/precision/GeometrySnapperTest.cpp: updated after - GeometrySnapper interface change. git-svn-id: - http://svn.osgeo.org/geos/trunk@1823 + GeometrySnapper interface change. git-svn-id: http://svn.osgeo.org/geos/trunk@1823 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Mateusz Loskot - * ChangeLog: Set $ expansion for new files in 'overlay' module. - git-svn-id: http://svn.osgeo.org/geos/trunk@1822 + * ChangeLog: Set $ expansion for new files in 'overlay' module. git-svn-id: http://svn.osgeo.org/geos/trunk@1822 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli @@ -23457,21 +26941,19 @@ source/operation/overlay/Makefile.am, source/operation/overlay/OffsetPointGenerator.cpp, source/operation/overlay/OverlayResultValidator.cpp: Rest of Overlay - validation classes. git-svn-id: - http://svn.osgeo.org/geos/trunk@1821 + validation classes. git-svn-id: http://svn.osgeo.org/geos/trunk@1821 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Mateusz Loskot - * ChangeLog: Set svn:keyword property for Id keyword expansion. - git-svn-id: http://svn.osgeo.org/geos/trunk@1820 + * ChangeLog: Set svn:keyword property for Id keyword expansion. git-svn-id: http://svn.osgeo.org/geos/trunk@1820 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli * source/headers/geos/operation/overlay/FuzzyPointLocator.h, source/operation/overlay/FuzzyPointLocator.cpp: Fixed comments and - includes git-svn-id: http://svn.osgeo.org/geos/trunk@1819 + includes git-svn-id: http://svn.osgeo.org/geos/trunk@1819 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli @@ -23479,20 +26961,18 @@ * ChangeLog, source/headers/geos/operation/overlay/FuzzyPointLocator.h, source/operation/overlay/FuzzyPointLocator.cpp: new helper class for - Overlay op validation. git-svn-id: - http://svn.osgeo.org/geos/trunk@1818 + Overlay op validation. git-svn-id: http://svn.osgeo.org/geos/trunk@1818 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-06 Sandro Santilli - * source/headers/geos/geom/Geometry.h: (getBoundary) memory allocations documented git-svn-id: - http://svn.osgeo.org/geos/trunk@1817 + * source/headers/geos/geom/Geometry.h: (getBoundary) memory allocations documented git-svn-id: http://svn.osgeo.org/geos/trunk@1817 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-05 Sandro Santilli * ChangeLog: updated (last commit log was bogus, refer to ChangeLog - entry) git-svn-id: http://svn.osgeo.org/geos/trunk@1816 + entry) git-svn-id: http://svn.osgeo.org/geos/trunk@1816 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-09-05 Sandro Santilli @@ -23502,94 +26982,82 @@ source/operation/overlay/OverlayOp.cpp, source/precision/GeometrySnapper.cpp: (OverlayOp::checkObviouslyWrongResult): exceptions messages - rewording git-svn-id: http://svn.osgeo.org/geos/trunk@1815 + rewording git-svn-id: http://svn.osgeo.org/geos/trunk@1815 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-31 Sandro Santilli * ChangeLog, source/index/quadtree/Root.cpp: (insertContained): fixed bug reported in - geos-devel/2006-August/002541.html git-svn-id: - http://svn.osgeo.org/geos/trunk@1814 + geos-devel/2006-August/002541.html git-svn-id: http://svn.osgeo.org/geos/trunk@1814 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-31 Sandro Santilli * ChangeLog, configure.in: Reverted last two commits. Darwin host on - buildbot seems to have its own problems... git-svn-id: - http://svn.osgeo.org/geos/trunk@1813 + buildbot seems to have its own problems... git-svn-id: http://svn.osgeo.org/geos/trunk@1813 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-31 Sandro Santilli * configure.in: Ops, it was AM_CONFIG_HEADER the old version - still - testing git-svn-id: http://svn.osgeo.org/geos/trunk@1812 + testing git-svn-id: http://svn.osgeo.org/geos/trunk@1812 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-31 Sandro Santilli * ChangeLog, configure.in: AC_CONFIG_HEADERS => AM_CONFIG_HEADER (to - support older automake versions) git-svn-id: - http://svn.osgeo.org/geos/trunk@1811 + support older automake versions) git-svn-id: http://svn.osgeo.org/geos/trunk@1811 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-04 Howard Butler - * capi/geos_c.h.vc: version should be 3.0.0 instead of 3.3.0 - git-svn-id: http://svn.osgeo.org/geos/trunk@1810 + * capi/geos_c.h.vc: version should be 3.0.0 instead of 3.3.0 git-svn-id: http://svn.osgeo.org/geos/trunk@1810 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-04 Howard Butler - * source/headers/geos/version.h.vc: bump patch to rc1 git-svn-id: - http://svn.osgeo.org/geos/trunk@1809 + * source/headers/geos/version.h.vc: bump patch to rc1 git-svn-id: http://svn.osgeo.org/geos/trunk@1809 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-04 Howard Butler - * source/Makefile.vc: give makefile.vc some love git-svn-id: - http://svn.osgeo.org/geos/trunk@1808 + * source/Makefile.vc: give makefile.vc some love git-svn-id: http://svn.osgeo.org/geos/trunk@1808 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-04 Charlie Savage * swig/geos.i, swig/python/geos.py, swig/python/geos_wrap.cxx, swig/ruby/geos_wrap.cxx: Updated SWIG bindings to expose the - equalsExact and normalize methods. git-svn-id: - http://svn.osgeo.org/geos/trunk@1807 + equalsExact and normalize methods. git-svn-id: http://svn.osgeo.org/geos/trunk@1807 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage * source/headers/geos/platform.h.in, source/headers/geos/timeval.h: Two changes needed to include the correct definitions for compiling - geos using MingW/msys on Windows. git-svn-id: - http://svn.osgeo.org/geos/trunk@1806 + geos using MingW/msys on Windows. git-svn-id: http://svn.osgeo.org/geos/trunk@1806 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Sandro Santilli - * ChangeLog: try to keep text within 80 cols git-svn-id: - http://svn.osgeo.org/geos/trunk@1805 + * ChangeLog: try to keep text within 80 cols git-svn-id: http://svn.osgeo.org/geos/trunk@1805 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage - * configure.in: Changed configure.in to use *nix line feeds. - git-svn-id: http://svn.osgeo.org/geos/trunk@1804 + * configure.in: Changed configure.in to use *nix line feeds. git-svn-id: http://svn.osgeo.org/geos/trunk@1804 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc: Mistakenly - used Geometry* in C api headers instead of GEOSGeom. git-svn-id: - http://svn.osgeo.org/geos/trunk@1803 + used Geometry* in C api headers instead of GEOSGeom. git-svn-id: http://svn.osgeo.org/geos/trunk@1803 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage * configure.in: Removed native line endings for configure.in since - CR/LF does not work on Windows under msys. git-svn-id: - http://svn.osgeo.org/geos/trunk@1802 + CR/LF does not work on Windows under msys. git-svn-id: http://svn.osgeo.org/geos/trunk@1802 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage @@ -23598,7 +27066,8 @@ Added equalsExact and normalize to the c api as discussed on the mailing list - (http://geos.refractions.net/pipermail/geos-devel/2006-July/002452.html). git-svn-id: http://svn.osgeo.org/geos/trunk@1801 5242fede-7e19-0410-aef8-94bd7d2200fb + (http://geos.refractions.net/pipermail/geos-devel/2006-July/002452.html).git-svn-id: http://svn.osgeo.org/geos/trunk@1801 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage @@ -23610,118 +27079,56 @@ 2006-08-03 Mateusz Loskot - * ChangeLog, tests/unit/geos_unit.cpp: Fixed Bug #90 git-svn-id: - http://svn.osgeo.org/geos/trunk@1799 + * ChangeLog, tests/unit/geos_unit.cpp: Fixed Bug #90 git-svn-id: http://svn.osgeo.org/geos/trunk@1799 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-08-03 Charlie Savage * swig/python/geos.py, swig/python/geos_wrap.cxx, swig/ruby/geos_wrap.cxx: Added SWIG generated wrapper files for Ruby - and Python git-svn-id: http://svn.osgeo.org/geos/trunk@1798 + and Python git-svn-id: http://svn.osgeo.org/geos/trunk@1798 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-27 Mateusz Loskot * : Added svn:ignore property to ignore 'geos-3.0.0rc1' dir (testing - commit access to SVN). git-svn-id: - http://svn.osgeo.org/geos/trunk@1797 + commit access to SVN). git-svn-id: http://svn.osgeo.org/geos/trunk@1797 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-26 Sandro Santilli - * .cvsignore, capi/.cvsignore, doc/.cvsignore, macros/.cvsignore, - source/.cvsignore, source/algorithm/.cvsignore, - source/examples/.cvsignore, source/geom/.cvsignore, - source/geom/util/.cvsignore, source/geomgraph/.cvsignore, - source/geomgraph/index/.cvsignore, source/headers/.cvsignore, - source/headers/geos/.cvsignore, - source/headers/geos/algorithm/.cvsignore, - source/headers/geos/geom/.cvsignore, - source/headers/geos/geom/util/.cvsignore, - source/headers/geos/geomgraph/.cvsignore, - source/headers/geos/geomgraph/index/.cvsignore, - source/headers/geos/index/.cvsignore, - source/headers/geos/index/bintree/.cvsignore, - source/headers/geos/index/chain/.cvsignore, - source/headers/geos/index/quadtree/.cvsignore, - source/headers/geos/index/strtree/.cvsignore, - source/headers/geos/index/sweepline/.cvsignore, - source/headers/geos/io/.cvsignore, - source/headers/geos/noding/.cvsignore, - source/headers/geos/noding/snapround/.cvsignore, - source/headers/geos/operation/.cvsignore, - source/headers/geos/operation/buffer/.cvsignore, - source/headers/geos/operation/distance/.cvsignore, - source/headers/geos/operation/linemerge/.cvsignore, - source/headers/geos/operation/overlay/.cvsignore, - source/headers/geos/operation/polygonize/.cvsignore, - source/headers/geos/operation/predicate/.cvsignore, - source/headers/geos/operation/relate/.cvsignore, - source/headers/geos/operation/valid/.cvsignore, - source/headers/geos/planargraph/.cvsignore, - source/headers/geos/planargraph/algorithm/.cvsignore, - source/headers/geos/precision/.cvsignore, - source/headers/geos/simplify/.cvsignore, - source/headers/geos/util/.cvsignore, source/index/.cvsignore, - source/index/bintree/.cvsignore, source/index/chain/.cvsignore, - source/index/quadtree/.cvsignore, source/index/strtree/.cvsignore, - source/index/sweepline/.cvsignore, source/io/.cvsignore, - source/noding/.cvsignore, source/noding/snapround/.cvsignore, - source/operation/.cvsignore, source/operation/buffer/.cvsignore, - source/operation/distance/.cvsignore, - source/operation/linemerge/.cvsignore, - source/operation/overlay/.cvsignore, - source/operation/polygonize/.cvsignore, - source/operation/predicate/.cvsignore, - source/operation/relate/.cvsignore, - source/operation/valid/.cvsignore, source/planargraph/.cvsignore, - source/precision/.cvsignore, source/simplify/.cvsignore, - source/util/.cvsignore, swig/.cvsignore, swig/python/.cvsignore, - swig/python/tests/.cvsignore, swig/ruby/.cvsignore, - swig/ruby/test/.cvsignore, tests/.cvsignore, - tests/bigtest/.cvsignore, tests/tut/.cvsignore, - tests/unit/.cvsignore, tests/xmltester/.cvsignore, tools/.cvsignore: - Removed .cvsignore files from repository git-svn-id: - http://svn.osgeo.org/geos/trunk@1795 + * ChangeLog, capi/Makefile.am, tests/xmltester/XMLTester.cpp: * capi/Makefile.am: forced link of geostest against stdc++ lib * tests/xmltester/XMLTester.cpp: added include (for fabs + use) git-svn-id: http://svn.osgeo.org/geos/trunk@1794 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-26 Sandro Santilli - * ChangeLog, capi/Makefile.am, tests/xmltester/XMLTester.cpp: * capi/Makefile.am: forced link of geostest against stdc++ lib * - tests/xmltester/XMLTester.cpp: added include (for fabs use) - git-svn-id: http://svn.osgeo.org/geos/trunk@1794 + * ChangeLog, source/headers/geos/geom/BinaryOp.h: Added geometry snapping heuristic git-svn-id: http://svn.osgeo.org/geos/trunk@1776 5242fede-7e19-0410-aef8-94bd7d2200fb -2006-07-26 Sandro Santilli - - * ChangeLog, source/headers/geos/geom/BinaryOp.h: Added geometry snapping heuristic git-svn-id: - http://svn.osgeo.org/geos/trunk@1776 - 5242fede-7e19-0410-aef8-94bd7d2200fb - 2006-07-25 Sandro Santilli - * ChangeLog, autogen.sh: Made autogen.sh errors more visible - git-svn-id: http://svn.osgeo.org/geos/trunk@1775 + * ChangeLog, autogen.sh: Made autogen.sh errors more visible git-svn-id: http://svn.osgeo.org/geos/trunk@1775 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Charlie Savage * NEWS: Added note about inclusion of version.in.vc. See - http://geos.refractions.net/pipermail/geos-devel/2006-July/002463.html for more info. git-svn-id: http://svn.osgeo.org/geos/trunk@1773 5242fede-7e19-0410-aef8-94bd7d2200fb + http://geos.refractions.net/pipermail/geos-devel/2006-July/002463.html for more info.git-svn-id: http://svn.osgeo.org/geos/trunk@1773 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli * ChangeLog, tests/unit/Makefile.am, tests/unit/precision/GeometrySnapperTest.cpp: Added test for - GeometrySnapper git-svn-id: http://svn.osgeo.org/geos/trunk@1772 + GeometrySnapper git-svn-id: http://svn.osgeo.org/geos/trunk@1772 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli * source/precision/LineStringSnapper.cpp: Fixed preprocessor - directive use git-svn-id: http://svn.osgeo.org/geos/trunk@1771 + directive use git-svn-id: http://svn.osgeo.org/geos/trunk@1771 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli @@ -23734,29 +27141,26 @@ source/precision/Makefile.am, tests/unit/Makefile.am, tests/unit/precision/LineStringSnapperTest.cpp: Added new precision::LineStringSnapper class + test and - precision::GeometrySnapper (w/out test) git-svn-id: - http://svn.osgeo.org/geos/trunk@1770 + precision::GeometrySnapper (w/out test) git-svn-id: http://svn.osgeo.org/geos/trunk@1770 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli * ChangeLog, source/headers/geos/geom/CoordinateList.h: added - operator<< for CoordinateList class git-svn-id: - http://svn.osgeo.org/geos/trunk@1769 + operator<< for CoordinateList class git-svn-id: http://svn.osgeo.org/geos/trunk@1769 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli * ChangeLog, tests/unit/geom/LineSegmentTest.cpp: Added another - distance() test git-svn-id: http://svn.osgeo.org/geos/trunk@1768 + distance() test git-svn-id: http://svn.osgeo.org/geos/trunk@1768 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Mateusz Loskot * ChangeLog, source/headers/geos/geom.h, source/headers/geos/io.h: Wrapped FIXME message with #warning directive to shout about - potential headers removal in future. git-svn-id: - http://svn.osgeo.org/geos/trunk@1767 + potential headers removal in future. git-svn-id: http://svn.osgeo.org/geos/trunk@1767 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli @@ -23765,94 +27169,82 @@ source/headers/geos/geom/Makefile.am, tests/unit/Makefile.am, tests/unit/geom/CoordinateListTest.cpp: CoordinateList class re-introduced, for list-based ops (not strictly mapped to JTS - version, not yet at least) git-svn-id: - http://svn.osgeo.org/geos/trunk@1766 + version, not yet at least) git-svn-id: http://svn.osgeo.org/geos/trunk@1766 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli - * source/headers/geos/geom/LineSegment.h: Fixed typo in comment - git-svn-id: http://svn.osgeo.org/geos/trunk@1765 + * source/headers/geos/geom/LineSegment.h: Fixed typo in comment git-svn-id: http://svn.osgeo.org/geos/trunk@1765 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-21 Sandro Santilli * swig/ruby/test/Makefile.am: Removed blank space after backslash - (automake complained) git-svn-id: - http://svn.osgeo.org/geos/trunk@1764 + (automake complained) git-svn-id: http://svn.osgeo.org/geos/trunk@1764 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-19 Charlie Savage * source/headers/geos/Makefile.am: Added veresion.h.vc as EXTRA_DIST - to ensure it is packaged when doing make dist. git-svn-id: - http://svn.osgeo.org/geos/trunk@1763 + to ensure it is packaged when doing make dist. git-svn-id: http://svn.osgeo.org/geos/trunk@1763 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-15 Charlie Savage * configure.in: Removed python test/cases directory (tests are now - just in tests directory). git-svn-id: - http://svn.osgeo.org/geos/trunk@1762 + just in tests directory). git-svn-id: http://svn.osgeo.org/geos/trunk@1762 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * ChangeLog: Updated ChangeLog to note additional SWIG tests and - integration with the GEOS build system. git-svn-id: - http://svn.osgeo.org/geos/trunk@1761 + integration with the GEOS build system. git-svn-id: http://svn.osgeo.org/geos/trunk@1761 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * capi/geos_c.h.vc: Updated version number to 3.0.0rc1-CAPI-1.1.1 to - match the autoconf generated files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1760 + match the autoconf generated files. git-svn-id: http://svn.osgeo.org/geos/trunk@1760 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/ruby/test/Makefile.am: Fixed spelling mistake in test task. - git-svn-id: http://svn.osgeo.org/geos/trunk@1759 + * swig/ruby/test/Makefile.am: Fixed spelling mistake in test task. git-svn-id: http://svn.osgeo.org/geos/trunk@1759 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/Makefile.am: Removed dependency on README.txt since it has - been removed. git-svn-id: http://svn.osgeo.org/geos/trunk@1758 + been removed. git-svn-id: http://svn.osgeo.org/geos/trunk@1758 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/ruby/test/test_buffer.rb: New tests for the buffer operation. - git-svn-id: http://svn.osgeo.org/geos/trunk@1757 + * swig/ruby/test/test_buffer.rb: New tests for the buffer operation. git-svn-id: http://svn.osgeo.org/geos/trunk@1757 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * configure.in: Added SWIG Python and Ruby bindings back into the - main GEOS build system. git-svn-id: - http://svn.osgeo.org/geos/trunk@1756 + main GEOS build system. git-svn-id: http://svn.osgeo.org/geos/trunk@1756 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/tests/Makefile.am, swig/ruby/test/Makefile.am: Updated - extra_dist for test directories. git-svn-id: - http://svn.osgeo.org/geos/trunk@1755 + extra_dist for test directories. git-svn-id: http://svn.osgeo.org/geos/trunk@1755 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/tests/Makefile.am: Remove the dependency on the cases - subdirectory which is no longer needed. git-svn-id: - http://svn.osgeo.org/geos/trunk@1754 + subdirectory which is no longer needed. git-svn-id: http://svn.osgeo.org/geos/trunk@1754 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/tests/runtests.py: Updated test suite to use the - correct tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1753 + correct tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1753 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage @@ -23863,15 +27255,13 @@ swig/python/tests/cases/pointtest.py, swig/python/tests/cases/testing.py, swig/python/tests/cases/wkttest.py: Removed old tests cases which - are no longer valid (worked using the C++ api). git-svn-id: - http://svn.osgeo.org/geos/trunk@1752 + are no longer valid (worked using the C++ api). git-svn-id: http://svn.osgeo.org/geos/trunk@1752 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/tests/test_geometry.py: New Python test case to ensure - creating coordinate sequences and geometries works correctly. - git-svn-id: http://svn.osgeo.org/geos/trunk@1751 + creating coordinate sequences and geometries works correctly. git-svn-id: http://svn.osgeo.org/geos/trunk@1751 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage @@ -23879,144 +27269,131 @@ * swig/README.txt, swig/python/Makefile.am, swig/python/README.txt, swig/ruby/Makefile.am, swig/ruby/README.txt: Removed README.txt files which are no longer applicable now that the SWIG bindings have - been intergrated into the GEOS build system. git-svn-id: - http://svn.osgeo.org/geos/trunk@1750 + been intergrated into the GEOS build system. git-svn-id: http://svn.osgeo.org/geos/trunk@1750 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/ruby/test/test_geometry.rb: Renamed test class. git-svn-id: - http://svn.osgeo.org/geos/trunk@1749 + * swig/ruby/test/test_geometry.rb: Renamed test class. git-svn-id: http://svn.osgeo.org/geos/trunk@1749 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/python/Makefile.am: Removed old, unused code. git-svn-id: - http://svn.osgeo.org/geos/trunk@1748 + * swig/python/Makefile.am: Removed old, unused code. git-svn-id: http://svn.osgeo.org/geos/trunk@1748 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/python.i: Added tyepmap to support creating polygons - with holes. git-svn-id: http://svn.osgeo.org/geos/trunk@1747 + with holes. git-svn-id: http://svn.osgeo.org/geos/trunk@1747 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/geos.i: Added default value for quadsegs parmeter in buffer - operation. git-svn-id: http://svn.osgeo.org/geos/trunk@1746 + operation. git-svn-id: http://svn.osgeo.org/geos/trunk@1746 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/tests/example.py: Manually moved from parent - directory. git-svn-id: http://svn.osgeo.org/geos/trunk@1745 + directory. git-svn-id: http://svn.osgeo.org/geos/trunk@1745 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/Makefile.am: Updated EXTRA_DIST to include python.i - and geos.pth git-svn-id: http://svn.osgeo.org/geos/trunk@1744 + and geos.pth git-svn-id: http://svn.osgeo.org/geos/trunk@1744 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/python/example.py: Moved file to tests subdirectory. - git-svn-id: http://svn.osgeo.org/geos/trunk@1743 + * swig/python/example.py: Moved file to tests subdirectory. git-svn-id: http://svn.osgeo.org/geos/trunk@1743 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/python/setup.py: Installation is now done by autoconf macros - instead of setup.py git-svn-id: - http://svn.osgeo.org/geos/trunk@1742 + instead of setup.py git-svn-id: http://svn.osgeo.org/geos/trunk@1742 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/geos.i, swig/python/python.i, swig/ruby/ruby.i: Cleaned up ruby.i, added licenxe to python.i, commented back in python.i into - geos.i. git-svn-id: http://svn.osgeo.org/geos/trunk@1741 + geos.i. git-svn-id: http://svn.osgeo.org/geos/trunk@1741 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage - * swig/ruby/test/test_helper.rb: Added code to read xml test cases. - git-svn-id: http://svn.osgeo.org/geos/trunk@1740 + * swig/ruby/test/test_helper.rb: Added code to read xml test cases. git-svn-id: http://svn.osgeo.org/geos/trunk@1740 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * swig/geos.i: Added exception handling for results that return geometries. Added normalize and equalsExact, but for the moment - they are commented out. git-svn-id: - http://svn.osgeo.org/geos/trunk@1739 + they are commented out. git-svn-id: http://svn.osgeo.org/geos/trunk@1739 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-13 Charlie Savage * tests/xmltester/XMLTester.cpp: Changes to compile on VC++ - fully - qualified polygon name. Should also work on MingW, will test next. - git-svn-id: http://svn.osgeo.org/geos/trunk@1738 + qualified polygon name. Should also work on MingW, will test next. git-svn-id: http://svn.osgeo.org/geos/trunk@1738 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/test/geos_tests.rb: Disabled test_combinations.rb for - the moment since it fails. git-svn-id: - http://svn.osgeo.org/geos/trunk@1737 + the moment since it fails. git-svn-id: http://svn.osgeo.org/geos/trunk@1737 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/geos.i: Fixed serious bug in geom_to_hex and geom_to_wkb type - maps. Was using temporary variable instead of passed in variable. - git-svn-id: http://svn.osgeo.org/geos/trunk@1736 + maps. Was using temporary variable instead of passed in variable. git-svn-id: http://svn.osgeo.org/geos/trunk@1736 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * capi/geos_c.h.vc: Switched GeosBytesOrder to int in api - signatures. git-svn-id: http://svn.osgeo.org/geos/trunk@1735 + signatures. git-svn-id: http://svn.osgeo.org/geos/trunk@1735 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/geos.i: A number of changes to fix warning generated by gcc - and to make sure the bindings compile for Python. git-svn-id: - http://svn.osgeo.org/geos/trunk@1734 + and to make sure the bindings compile for Python. git-svn-id: http://svn.osgeo.org/geos/trunk@1734 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/python/Makefile.am: Updated Python SWIG makefile to build - with the c api. git-svn-id: http://svn.osgeo.org/geos/trunk@1733 + with the c api. git-svn-id: http://svn.osgeo.org/geos/trunk@1733 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/ruby.i: Minor change to fix gcc warning. git-svn-id: - http://svn.osgeo.org/geos/trunk@1732 + * swig/ruby/ruby.i: Minor change to fix gcc warning. git-svn-id: http://svn.osgeo.org/geos/trunk@1732 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/Makefile.am: Updated Ruby SWIG makefile to build with - the c api. git-svn-id: http://svn.osgeo.org/geos/trunk@1731 + the c api. git-svn-id: http://svn.osgeo.org/geos/trunk@1731 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc: Fixed an error in the way GEOSByteOrder was declared. It is now an enum in - geos_c.h git-svn-id: http://svn.osgeo.org/geos/trunk@1730 + geos_c.h git-svn-id: http://svn.osgeo.org/geos/trunk@1730 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/geos.i: Added %rename directive so that GeomUnion is exposed - as union is SWIG languages. git-svn-id: - http://svn.osgeo.org/geos/trunk@1729 + as union is SWIG languages. git-svn-id: http://svn.osgeo.org/geos/trunk@1729 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage @@ -24025,28 +27402,26 @@ swig/ruby/test/test_combinations.rb, swig/ruby/test/test_operations.rb: Updated tests for combinatins (union, intersection, etc.) and operaptions (buffer, centroid, - etc.). git-svn-id: http://svn.osgeo.org/geos/trunk@1728 + etc.). git-svn-id: http://svn.osgeo.org/geos/trunk@1728 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_simple.rb: These tests are no longer needed. - git-svn-id: http://svn.osgeo.org/geos/trunk@1727 + * swig/ruby/test/test_simple.rb: These tests are no longer needed. git-svn-id: http://svn.osgeo.org/geos/trunk@1727 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/test/geos_tests.rb, swig/ruby/test/test_helper.rb, swig/ruby/test/test_relations.rb: Ported old tests for relations, - such as intersects, touches, etc., to new swig bindings. - git-svn-id: http://svn.osgeo.org/geos/trunk@1726 + such as intersects, touches, etc., to new swig bindings. git-svn-id: http://svn.osgeo.org/geos/trunk@1726 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/ruby.i: Added type map needed to create polygons with holes. Unfortunately, this is Ruby specific. It needs to be ported - to Python next. git-svn-id: http://svn.osgeo.org/geos/trunk@1725 + to Python next. git-svn-id: http://svn.osgeo.org/geos/trunk@1725 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage @@ -24054,94 +27429,75 @@ * swig/geos.i: Removed wrapper classes and replace them with SWIG "fake" classes. This makes the interface cleaner, and makes memory management much easier. Also added area, dimension, length, - getExteriorRing, getInteriorRingN methods. git-svn-id: - http://svn.osgeo.org/geos/trunk@1724 + getExteriorRing, getInteriorRingN methods. git-svn-id: http://svn.osgeo.org/geos/trunk@1724 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/test/test_srid.rb: Added test to read from wkb geometry - - currently fails, needs more investigation. git-svn-id: - http://svn.osgeo.org/geos/trunk@1723 + - currently fails, needs more investigation. git-svn-id: http://svn.osgeo.org/geos/trunk@1723 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_io.rb: Added tests for invalid geometries. - git-svn-id: http://svn.osgeo.org/geos/trunk@1722 + * swig/ruby/test/test_io.rb: Added tests for invalid geometries. git-svn-id: http://svn.osgeo.org/geos/trunk@1722 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/geos_tests.rb: Updated ruby test suite. - git-svn-id: http://svn.osgeo.org/geos/trunk@1721 + * swig/ruby/test/geos_tests.rb: Updated ruby test suite. git-svn-id: http://svn.osgeo.org/geos/trunk@1721 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/test/test_geometry.rb: New tests for area, length, - distance. git-svn-id: http://svn.osgeo.org/geos/trunk@1720 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-07-12 Charlie Savage - - * : Converted line feeds to Unix style. git-svn-id: - http://svn.osgeo.org/geos/trunk@1719 + distance. git-svn-id: http://svn.osgeo.org/geos/trunk@1720 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_geometry.rb: New tests for creating geometries - and calling various functions such as numGeometries, isValid, etc. - git-svn-id: http://svn.osgeo.org/geos/trunk@1718 + * : Converted line feeds to Unix style. git-svn-id: http://svn.osgeo.org/geos/trunk@1719 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_srid.rb: Tests for srid handling. - git-svn-id: http://svn.osgeo.org/geos/trunk@1717 + * swig/ruby/test/test_srid.rb: Tests for srid handling. git-svn-id: http://svn.osgeo.org/geos/trunk@1717 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_io.rb: Merged tests from test_wkb_reader.rb - git-svn-id: http://svn.osgeo.org/geos/trunk@1716 + * swig/ruby/test/test_io.rb: Merged tests from test_wkb_reader.rb git-svn-id: http://svn.osgeo.org/geos/trunk@1716 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage - * swig/ruby/test/test_wkb_reader.rb: Merging into test_io.rb - git-svn-id: http://svn.osgeo.org/geos/trunk@1715 + * swig/ruby/test/test_wkb_reader.rb: Merging into test_io.rb git-svn-id: http://svn.osgeo.org/geos/trunk@1715 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-12 Charlie Savage * swig/ruby/test/test_version.rb: Tests to verify returned version - numbers from C api. git-svn-id: - http://svn.osgeo.org/geos/trunk@1714 + numbers from C api. git-svn-id: http://svn.osgeo.org/geos/trunk@1714 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * swig/geos.i: Fixes for coordinate sequences. Fixed bug in range checking, chaned clone to be a method instead of copy constructor, - marked clone as creating a new object. git-svn-id: - http://svn.osgeo.org/geos/trunk@1713 + marked clone as creating a new object. git-svn-id: http://svn.osgeo.org/geos/trunk@1713 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * swig/ruby/test/test_coordinate_sequence.rb: Tests for SWIG - coordinate sequence class. git-svn-id: - http://svn.osgeo.org/geos/trunk@1712 + coordinate sequence class. git-svn-id: http://svn.osgeo.org/geos/trunk@1712 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * capi/geos_c.h.in, capi/geos_c.h.vc: Added reference to new enum called GEOSByteOrders. The enum has two values, GEOS_WKB_NDR and - GEOS_WKB_XDR which signify big endian and little endian byte orders. - git-svn-id: http://svn.osgeo.org/geos/trunk@1711 + GEOS_WKB_XDR which signify big endian and little endian byte orders. git-svn-id: http://svn.osgeo.org/geos/trunk@1711 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage @@ -24149,86 +27505,77 @@ * capi/geos_c.h.in, capi/geos_c.h.vc: Added 5 methods to the C API as documented in the changelong. The new methods are read/write WKB Hex values, read/write WKB byte order and read wkb output - dimensions. git-svn-id: http://svn.osgeo.org/geos/trunk@1710 + dimensions. git-svn-id: http://svn.osgeo.org/geos/trunk@1710 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * swig/ruby/test/test_wkb_reader.rb: Test cases for reading and writing geometries to WKT, WKB and hex encoded WKB formats via the - SWIG bindings. git-svn-id: http://svn.osgeo.org/geos/trunk@1709 + SWIG bindings. git-svn-id: http://svn.osgeo.org/geos/trunk@1709 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * capi/geos_c.h.vc: Updated visual studio header file to match - geos_c.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@1708 + geos_c.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@1708 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * capi/geos_c.cpp: Added 5 methods to the C API as documented in the changelong. The new methods are read/write WKB Hex values, - read/write WKB byte order and read wkb output dimensions. - git-svn-id: http://svn.osgeo.org/geos/trunk@1707 + read/write WKB byte order and read wkb output dimensions. git-svn-id: http://svn.osgeo.org/geos/trunk@1707 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage * ChangeLog: Noted additions to the C API and porting of SWIG to use - the C api. git-svn-id: http://svn.osgeo.org/geos/trunk@1706 + the C api. git-svn-id: http://svn.osgeo.org/geos/trunk@1706 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-11 Charlie Savage - * swig/geos.i, swig/ruby/ruby.i: Ported SWIG bindings to use c-api. - git-svn-id: http://svn.osgeo.org/geos/trunk@1705 + * swig/geos.i, swig/ruby/ruby.i: Ported SWIG bindings to use c-api. git-svn-id: http://svn.osgeo.org/geos/trunk@1705 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-10 Sandro Santilli - * tests/tut/.cvsignore: Added .cvsignore file git-svn-id: - http://svn.osgeo.org/geos/trunk@1704 + * tests/tut/.cvsignore: Added .cvsignore file git-svn-id: http://svn.osgeo.org/geos/trunk@1704 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-10 Sandro Santilli * ChangeLog, capi/geos_c.cpp: don't use dynamic strings as format - arg the formatted message callbacks. git-svn-id: - http://svn.osgeo.org/geos/trunk@1703 + arg the formatted message callbacks. git-svn-id: http://svn.osgeo.org/geos/trunk@1703 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-10 Sandro Santilli * ChangeLog, source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h: changed - vector to vector (see bug#101) git-svn-id: - http://svn.osgeo.org/geos/trunk@1702 + vector to vector (see bug#101) git-svn-id: http://svn.osgeo.org/geos/trunk@1702 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Mateusz Loskot * tests/xmltester/.cvsignore: Added 'testrunner' pattern to - tests/xmltester/.cvsignore. git-svn-id: - http://svn.osgeo.org/geos/trunk@1701 + tests/xmltester/.cvsignore. git-svn-id: http://svn.osgeo.org/geos/trunk@1701 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Mateusz Loskot - * .cvsignore: Added 'testrunner' to .cvsignore patterns. - git-svn-id: http://svn.osgeo.org/geos/trunk@1700 + * .cvsignore: Added 'testrunner' to .cvsignore patterns. git-svn-id: http://svn.osgeo.org/geos/trunk@1700 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Mateusz Loskot - * ChangeLog: Updated ChangeLog with details about new unit tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@1699 + * ChangeLog: Updated ChangeLog with details about new unit tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1699 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Mateusz Loskot - * tests/unit/Makefile.am: Added new tests to tests/unit/Makefile.am. - git-svn-id: http://svn.osgeo.org/geos/trunk@1698 + * tests/unit/Makefile.am: Added new tests to tests/unit/Makefile.am. git-svn-id: http://svn.osgeo.org/geos/trunk@1698 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Mateusz Loskot @@ -24236,15 +27583,13 @@ * tests/unit/noding/SegmentNodeTest.cpp, tests/unit/noding/SegmentPointComparatorTest.cpp, tests/unit/noding/SegmentStringTest.cpp: Added new tests cases to - tests/unit/noding. Removed zero-to-pointer casts. git-svn-id: - http://svn.osgeo.org/geos/trunk@1697 + tests/unit/noding. Removed zero-to-pointer casts. git-svn-id: http://svn.osgeo.org/geos/trunk@1697 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-09 Sandro Santilli * tests/xmltester/Makefile.am: Added testrunner to CLEANFILES. make - distcheck now succeeds. git-svn-id: - http://svn.osgeo.org/geos/trunk@1696 + distcheck now succeeds. git-svn-id: http://svn.osgeo.org/geos/trunk@1696 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-08 Sandro Santilli @@ -24256,119 +27601,95 @@ source/headers/geos/geom/GeometryFactory.inl, source/headers/geos/geomgraph/EdgeRing.h, source/headers/geos/platform.h.in: * configure.in: incremented CAPI minor version, to avoid - falling behind any future version from the 2.2. branch. - * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/geomgraph/EdgeRing.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFactory.inl, - source/headers/geos/geomgraph/EdgeRing.h: updated - doxygen comments (sync with JTS head). * - source/headers/geos/platform.h.in: include - rather then git-svn-id: - http://svn.osgeo.org/geos/trunk@1693 - 5242fede-7e19-0410-aef8-94bd7d2200fb + falling behind any future version from the 2.2. branch. * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/geomgraph/EdgeRing.cpp, source/headers/geos/geom/Geometry.h, source/headers/geos/geom/GeometryFactory.h, source/headers/geos/geom/GeometryFactory.inl, source/headers/geos/geomgraph/EdgeRing.h: updated doxygen comments (sync with JTS head). * source/headers/geos/platform.h.in: include rather then git-svn-id: http://svn.osgeo.org/geos/trunk@1693 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-07 Mateusz Loskot * ChangeLog: Updated ChangeLog with version comparison fix in - GEOS_UNIT. git-svn-id: http://svn.osgeo.org/geos/trunk@1691 + GEOS_UNIT. git-svn-id: http://svn.osgeo.org/geos/trunk@1691 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-07 Mateusz Loskot - * macros/geos.m4: Fixed versions comparison in the GEOS_UNIT macro. - git-svn-id: http://svn.osgeo.org/geos/trunk@1690 + * macros/geos.m4: Fixed versions comparison in the GEOS_UNIT macro. git-svn-id: http://svn.osgeo.org/geos/trunk@1690 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-07 Sandro Santilli - * ChangeLog, acsite.m4, configure.in: * acsite.m4: include rather then - (the latter is not available on Solaris 9) * - configure.in: make sure CFLAGS is set before compiling - using the 64bit integer detection macro. git-svn-id: - http://svn.osgeo.org/geos/trunk@1689 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, acsite.m4, configure.in: * acsite.m4: include rather then (the latter is not available on Solaris 9) * configure.in: make sure CFLAGS is set before compiling using the 64bit integer detection macro. git-svn-id: http://svn.osgeo.org/geos/trunk@1689 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-06 Mateusz Loskot * ChangeLog, macros/geos.m4: Fixed version query regexp with escaped - dots. Removed -lpq from GEOS_LIBS flags. git-svn-id: - http://svn.osgeo.org/geos/trunk@1688 + dots. Removed -lpq from GEOS_LIBS flags. git-svn-id: http://svn.osgeo.org/geos/trunk@1688 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Mateusz Loskot * ChangeLog, macros/geos.m4: Removed redundant -L and -I from - GEOS_LIBS and GEOS_CFLAGS. git-svn-id: - http://svn.osgeo.org/geos/trunk@1687 + GEOS_LIBS and GEOS_CFLAGS. git-svn-id: http://svn.osgeo.org/geos/trunk@1687 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Mateusz Loskot * ChangeLog, macros/geos.m4: Fixed GEOS_INIT to support full paths - to geos-config passed to --with-geos. Fixed version decoding. - git-svn-id: http://svn.osgeo.org/geos/trunk@1686 + to geos-config passed to --with-geos. Fixed version decoding. git-svn-id: http://svn.osgeo.org/geos/trunk@1686 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli - * ChangeLog, tests/unit/Makefile.am: distribute utility.h - git-svn-id: http://svn.osgeo.org/geos/trunk@1685 + * ChangeLog, tests/unit/Makefile.am: distribute utility.h git-svn-id: http://svn.osgeo.org/geos/trunk@1685 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli * ChangeLog, configure.in, tests/Makefile.am, tests/tut/Makefile.am: - distribute the TUT framework. git-svn-id: - http://svn.osgeo.org/geos/trunk@1684 + distribute the TUT framework. git-svn-id: http://svn.osgeo.org/geos/trunk@1684 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am: Distribute XML tests and - tester. git-svn-id: http://svn.osgeo.org/geos/trunk@1683 + tester. git-svn-id: http://svn.osgeo.org/geos/trunk@1683 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli * ChangeLog, source/operation/valid/Makefile.am: Fixed missing - SweeplineNestedRingTester.cpp file. git-svn-id: - http://svn.osgeo.org/geos/trunk@1682 + SweeplineNestedRingTester.cpp file. git-svn-id: http://svn.osgeo.org/geos/trunk@1682 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli * ChangeLog, source/headers/geos/operation/linemerge/Makefile.am: - Fixed missing backslash, dropping headers from distribution. - git-svn-id: http://svn.osgeo.org/geos/trunk@1681 + Fixed missing backslash, dropping headers from distribution. git-svn-id: http://svn.osgeo.org/geos/trunk@1681 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1680 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1680 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-07-05 Sandro Santilli * ChangeLog, source/headers/geos/operation/overlay/OverlayOp.h, source/operation/overlay/OverlayOp.cpp: added checks for obviously - wrong result of difference and intersection ops git-svn-id: - http://svn.osgeo.org/geos/trunk@1679 + wrong result of difference and intersection ops git-svn-id: http://svn.osgeo.org/geos/trunk@1679 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-27 Sandro Santilli * ChangeLog, source/algorithm/HCoordinate.cpp: * source/algorithm/HCoordinate.cpp: added support for MingW -ansi - builds. git-svn-id: http://svn.osgeo.org/geos/trunk@1677 + builds. git-svn-id: http://svn.osgeo.org/geos/trunk@1677 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-27 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp: fixed forward declaration of - GEOSCoordSeq_getOrdinate. * capi/geos_c.h.in: renamed GEOSGeomTypeId - enum to GEOSGeomTypes, to make VC++ 2005 happy. git-svn-id: - http://svn.osgeo.org/geos/trunk@1676 + GEOSCoordSeq_getOrdinate. * capi/geos_c.h.in: renamed GEOSGeomTypeId enum to GEOSGeomTypes, to + make VC++ 2005 happy. git-svn-id: http://svn.osgeo.org/geos/trunk@1676 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-19 Sandro Santilli @@ -24378,21 +27699,19 @@ source/headers/geos/util/CoordinateArrayFilter.h, source/headers/geos/util/UniqueCoordinateArrayFilter.h, source/noding/ScaledNoder.cpp: Don't *require* CoordinateFilters to - define both read-only and read-write methods. git-svn-id: - http://svn.osgeo.org/geos/trunk@1675 + define both read-only and read-write methods. git-svn-id: http://svn.osgeo.org/geos/trunk@1675 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-19 Sandro Santilli - * ChangeLog, source/geom/Polygon.cpp: optimized loops git-svn-id: - http://svn.osgeo.org/geos/trunk@1674 + * ChangeLog, source/geom/Polygon.cpp: optimized loops git-svn-id: http://svn.osgeo.org/geos/trunk@1674 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-19 Sandro Santilli * ChangeLog, source/geom/util/GeometryTransformer.cpp, source/headers/geos/geom/util/GeometryTransformer.h: updated port - info git-svn-id: http://svn.osgeo.org/geos/trunk@1673 + info git-svn-id: http://svn.osgeo.org/geos/trunk@1673 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-19 Sandro Santilli @@ -24400,14 +27719,13 @@ * ChangeLog, source/geom/GeometryFactory.cpp, source/headers/geos/geom/GeometryFactory.h, source/headers/geos/geom/GeometryFactory.inl: port info and doxygen - dox. git-svn-id: http://svn.osgeo.org/geos/trunk@1672 + dox. git-svn-id: http://svn.osgeo.org/geos/trunk@1672 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-19 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: parseCase(): make sure - to exit the tag before returning git-svn-id: - http://svn.osgeo.org/geos/trunk@1671 + to exit the tag before returning git-svn-id: http://svn.osgeo.org/geos/trunk@1671 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli @@ -24416,35 +27734,30 @@ source/headers/geos/geom/Coordinate.h, source/headers/geos/geom/Coordinate.inl: Let the compiler synthetize copy ctor and assignment op for Coordinate class to obtain better - numerical stability. git-svn-id: - http://svn.osgeo.org/geos/trunk@1670 + numerical stability. git-svn-id: http://svn.osgeo.org/geos/trunk@1670 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: Added support for - "AreaTest" operations. git-svn-id: - http://svn.osgeo.org/geos/trunk@1669 + "AreaTest" operations. git-svn-id: http://svn.osgeo.org/geos/trunk@1669 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli * ChangeLog, source/operation/overlay/PolygonBuilder.cpp: Fixed bug - in findShell() needlessly erasing vector elements git-svn-id: - http://svn.osgeo.org/geos/trunk@1668 + in findShell() needlessly erasing vector elements git-svn-id: http://svn.osgeo.org/geos/trunk@1668 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Fixed just-introduced bug - git-svn-id: http://svn.osgeo.org/geos/trunk@1667 + * source/operation/overlay/OverlayOp.cpp: Fixed just-introduced bug git-svn-id: http://svn.osgeo.org/geos/trunk@1667 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli * ChangeLog, source/operation/overlay/OverlayOp.cpp: * source/operation/overlay/OverlayOp.cpp: use NodeMap::container and - related typedefs, removed (int) casts, optimized loops. - git-svn-id: http://svn.osgeo.org/geos/trunk@1666 + related typedefs, removed (int) casts, optimized loops. git-svn-id: http://svn.osgeo.org/geos/trunk@1666 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli @@ -24453,36 +27766,33 @@ source/headers/geos/geomgraph/DirectedEdge.h, source/headers/geos/geomgraph/DirectedEdge.inl, source/headers/geos/geomgraph/EdgeEnd.h: EdgeEnd::getEdge() made - non-virtual and inlined. git-svn-id: - http://svn.osgeo.org/geos/trunk@1665 + non-virtual and inlined. git-svn-id: http://svn.osgeo.org/geos/trunk@1665 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-14 Sandro Santilli * ChangeLog, source/operation/overlay/PolygonBuilder.cpp: Fixed bug in PolygonBuilder::placePolygonHoles, performance improved as a side - effect. git-svn-id: http://svn.osgeo.org/geos/trunk@1664 + effect. git-svn-id: http://svn.osgeo.org/geos/trunk@1664 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli * ChangeLog, source/headers/geos/operation/overlay/PolygonBuilder.h, - source/operation/overlay/PolygonBuilder.cpp: cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1663 + source/operation/overlay/PolygonBuilder.cpp: cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1663 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli * ChangeLog, source/headers/geos/io/WKTReader.inl: * source/headers/geos/io/WKTReader.inl: added missing include for - GEOS_DEBUG set case, use stderr for debugging output. git-svn-id: - http://svn.osgeo.org/geos/trunk@1662 + GEOS_DEBUG set case, use stderr for debugging output. git-svn-id: http://svn.osgeo.org/geos/trunk@1662 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli * ChangeLog, source/operation/overlay/LineBuilder.cpp: fixed unused - parameter warning git-svn-id: http://svn.osgeo.org/geos/trunk@1661 + parameter warning git-svn-id: http://svn.osgeo.org/geos/trunk@1661 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli @@ -24490,39 +27800,35 @@ * ChangeLog, source/headers/geos/geomgraph/GeometryGraph.h: Changed GeometryGraph::lineEdgeMap set comparison function to be pointer-based. Should be safe and much faster. Available tests all - succeed. git-svn-id: http://svn.osgeo.org/geos/trunk@1660 + succeed. git-svn-id: http://svn.osgeo.org/geos/trunk@1660 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: trimmed cvs log, cleanups - git-svn-id: http://svn.osgeo.org/geos/trunk@1659 + * source/operation/overlay/OverlayOp.cpp: trimmed cvs log, cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1659 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli * source/geomgraph/GeometryGraph.cpp: Cleanups and some more - debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1658 + debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1658 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli * ChangeLog, source/geom/Geometry.cpp: Added self comparison check - in Geometry::compareTo(). git-svn-id: - http://svn.osgeo.org/geos/trunk@1657 + in Geometry::compareTo(). git-svn-id: http://svn.osgeo.org/geos/trunk@1657 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-13 Sandro Santilli - * ChangeLog: fixed mis-assigned commit git-svn-id: - http://svn.osgeo.org/geos/trunk@1656 + * ChangeLog: fixed mis-assigned commit git-svn-id: http://svn.osgeo.org/geos/trunk@1656 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/simplify/LineSegmentIndex.cpp: LineSegmentIndex: - explicitly initialized parent class in constructors. git-svn-id: - http://svn.osgeo.org/geos/trunk@1655 + explicitly initialized parent class in constructors. git-svn-id: http://svn.osgeo.org/geos/trunk@1655 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli @@ -24530,38 +27836,34 @@ * ChangeLog, source/headers/geos/index/quadtree/Root.h, source/headers/geos/operation/distance/ConnectedElementPointFilter. h, source/headers/geos/operation/polygonize/Polygonizer.h: Removed - unused parameters warning git-svn-id: - http://svn.osgeo.org/geos/trunk@1654 + unused parameters warning git-svn-id: http://svn.osgeo.org/geos/trunk@1654 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/headers/geos/geom/GeometryFilter.h: added assert(0) version of filter_ro() and filter_rw() to allow - implementations to only defined the required one. git-svn-id: - http://svn.osgeo.org/geos/trunk@1653 + implementations to only defined the required one. git-svn-id: http://svn.osgeo.org/geos/trunk@1653 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * tests/bigtest/TestSweepLineSpeed.cpp, tests/xmltester/SimpleWKTTester.cpp: Removed unused parameter - warnings git-svn-id: http://svn.osgeo.org/geos/trunk@1652 + warnings git-svn-id: http://svn.osgeo.org/geos/trunk@1652 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * source/headers/geos/planargraph/Node.h: Added note about ownership - of return from getEdgesBetween() git-svn-id: - http://svn.osgeo.org/geos/trunk@1651 + of return from getEdgesBetween() git-svn-id: http://svn.osgeo.org/geos/trunk@1651 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/headers/geos/io/WKTWriter.h, source/io/WKTWriter.cpp: fixed compiler warnings, fixed some methods - to omit unused parameters. git-svn-id: - http://svn.osgeo.org/geos/trunk@1650 + to omit unused parameters. git-svn-id: http://svn.osgeo.org/geos/trunk@1650 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli @@ -24569,52 +27871,46 @@ * ChangeLog, source/geom/CoordinateSequence.cpp, source/headers/geos/geom/CoordinateSequence.h, tests/unit/geom/CoordinateArraySequenceTest.cpp: Added equality and - inequality operators and tests git-svn-id: - http://svn.osgeo.org/geos/trunk@1649 + inequality operators and tests git-svn-id: http://svn.osgeo.org/geos/trunk@1649 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/geom/CoordinateSequence.cpp, source/headers/geos/geom/CoordinateSequence.h: indentation, notes - about things to be fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@1648 + about things to be fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@1648 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/planargraph/Node.cpp: implemented missing - getEdgesBetween() method (untested). git-svn-id: - http://svn.osgeo.org/geos/trunk@1647 + getEdgesBetween() method (untested). git-svn-id: http://svn.osgeo.org/geos/trunk@1647 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * source/headers/geos/planargraph/DirectedEdge.h, source/planargraph/DirectedEdge.cpp: provided a memory friendly - version of toEdges() method. git-svn-id: - http://svn.osgeo.org/geos/trunk@1646 + version of toEdges() method. git-svn-id: http://svn.osgeo.org/geos/trunk@1646 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, source/geom/CoordinateArraySequence.cpp: explicitly - invoked CoordinateSequence (copy) ctor - suggested by GCC warning. - git-svn-id: http://svn.osgeo.org/geos/trunk@1645 + invoked CoordinateSequence (copy) ctor - suggested by GCC warning. git-svn-id: http://svn.osgeo.org/geos/trunk@1645 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * source/headers/geos/geom/CoordinateSequence.h: Added default ctor - and copy ctor (protected) git-svn-id: - http://svn.osgeo.org/geos/trunk@1644 + and copy ctor (protected) git-svn-id: http://svn.osgeo.org/geos/trunk@1644 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, acsite.m4, configure.in, source/headers/geos/platform.h.in: Check for int64_t type for int64 - typedef. git-svn-id: http://svn.osgeo.org/geos/trunk@1643 + typedef. git-svn-id: http://svn.osgeo.org/geos/trunk@1643 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli @@ -24658,8 +27954,7 @@ source/simplify/DouglasPeuckerLineSimplifier.cpp, source/simplify/LineSegmentIndex.cpp, source/simplify/TaggedLineString.cpp, source/util/Profiler.cpp: - unsigned int => size_t git-svn-id: - http://svn.osgeo.org/geos/trunk@1642 + unsigned int => size_t git-svn-id: http://svn.osgeo.org/geos/trunk@1642 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli @@ -24677,15 +27972,13 @@ source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp, source/operation/linemerge/LineSequencer.cpp, - source/planargraph/PlanarGraph.cpp: unsigned int => size_t - git-svn-id: http://svn.osgeo.org/geos/trunk@1641 + source/planargraph/PlanarGraph.cpp: unsigned int => size_t git-svn-id: http://svn.osgeo.org/geos/trunk@1641 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: don't print test file - precision model if verbosity level < 2. git-svn-id: - http://svn.osgeo.org/geos/trunk@1640 + precision model if verbosity level < 2. git-svn-id: http://svn.osgeo.org/geos/trunk@1640 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-12 Sandro Santilli @@ -24708,36 +28001,31 @@ source/headers/geos/geom/LineSegment.h, source/headers/geos/util/UniqueCoordinateArrayFilter.h: Fixed getGeometryN() to take size_t rather then int, changed unsigned int - parameters to size_t. git-svn-id: - http://svn.osgeo.org/geos/trunk@1639 + parameters to size_t. git-svn-id: http://svn.osgeo.org/geos/trunk@1639 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli - * tests/xmltester/SimpleWKTTester.cpp: Removed compiler warning - git-svn-id: http://svn.osgeo.org/geos/trunk@1638 + * tests/xmltester/SimpleWKTTester.cpp: Removed compiler warning git-svn-id: http://svn.osgeo.org/geos/trunk@1638 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli * ChangeLog, tests/unit/noding/SegmentStringTest.cpp: removed - signed/unsigned comparison warnings. git-svn-id: - http://svn.osgeo.org/geos/trunk@1637 + signed/unsigned comparison warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@1637 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli * ChangeLog, tests/unit/geom/LinearRingTest.cpp, tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PolygonTest.cpp: - removed signed/unsigned comparison warnings. git-svn-id: - http://svn.osgeo.org/geos/trunk@1636 + removed signed/unsigned comparison warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@1636 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli * ChangeLog, tests/unit/geom/LineStringTest.cpp: Fixed - signed/unsigned comparison tests git-svn-id: - http://svn.osgeo.org/geos/trunk@1635 + signed/unsigned comparison tests git-svn-id: http://svn.osgeo.org/geos/trunk@1635 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli @@ -24750,28 +28038,24 @@ source/operation/overlay/OverlayOp.cpp, source/operation/valid/RepeatedPointTester.cpp: Fixed warning after Polygon ring accessor methods changed to work with size_t. Small - optimizations in loops. git-svn-id: - http://svn.osgeo.org/geos/trunk@1634 + optimizations in loops. git-svn-id: http://svn.osgeo.org/geos/trunk@1634 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-09 Sandro Santilli - * ChangeLog: Added missing log for mloskot change git-svn-id: - http://svn.osgeo.org/geos/trunk@1633 + * ChangeLog: Added missing log for mloskot change git-svn-id: http://svn.osgeo.org/geos/trunk@1633 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Mateusz Loskot * tests/unit/geom/DimensionTest.cpp: Fixed no-effect warning in - test<1> from DimensionTest.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@1632 + test<1> from DimensionTest.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@1632 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli * ChangeLog, tests/unit/geom/GeometryFactoryTest.cpp: * tests/unit/geom/GeometryFactoryTest.cpp: fixed compiler warnings - about signed/unsigned comparisons. git-svn-id: - http://svn.osgeo.org/geos/trunk@1631 + about signed/unsigned comparisons. git-svn-id: http://svn.osgeo.org/geos/trunk@1631 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli @@ -24780,43 +28064,38 @@ source/geom/Polygon.cpp, source/geom/util/GeometryEditor.cpp, source/headers/geos/geom/Polygon.h, source/io/WKTWriter.cpp: Polygon::getNumInteriorRing() return size_t, - Polygon::interiorRingN() takes size_t. git-svn-id: - http://svn.osgeo.org/geos/trunk@1630 + Polygon::interiorRingN() takes size_t. git-svn-id: http://svn.osgeo.org/geos/trunk@1630 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli * ChangeLog, tests/unit/geom/CoordinateArraySequenceTest.cpp: * tests/unit/geom/CoordinateArraySequenceTest.cpp: fix - signed/unsigned comparison warning. git-svn-id: - http://svn.osgeo.org/geos/trunk@1629 + signed/unsigned comparison warning. git-svn-id: http://svn.osgeo.org/geos/trunk@1629 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli * ChangeLog, tests/xmltester/markup/MarkupSTL.cpp: * tests/xmltester/markup/MarkupSTL.cpp: removed use of allocator, which brings in some incompatibilities with - libstdc++ 6.0.7 (gcc 4.0.2). git-svn-id: - http://svn.osgeo.org/geos/trunk@1628 + libstdc++ 6.0.7 (gcc 4.0.2). git-svn-id: http://svn.osgeo.org/geos/trunk@1628 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli - * configure.in: Commented out ruby and python detection - git-svn-id: http://svn.osgeo.org/geos/trunk@1627 + * configure.in: Commented out ruby and python detection git-svn-id: http://svn.osgeo.org/geos/trunk@1627 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/testrunner.sh: Fixed - xml testrunner rule git-svn-id: - http://svn.osgeo.org/geos/trunk@1626 + xml testrunner rule git-svn-id: http://svn.osgeo.org/geos/trunk@1626 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/testrunner.sh: added XML tests run to the 'make - check' rule. git-svn-id: http://svn.osgeo.org/geos/trunk@1625 + check' rule. git-svn-id: http://svn.osgeo.org/geos/trunk@1625 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-08 Sandro Santilli @@ -24831,26 +28110,25 @@ source/headers/geos/index/ItemVisitor.h, source/headers/geos/index/strtree/AbstractSTRtree.h, source/headers/geos/index/sweepline/SweepLineOverlapAction.h: Added - missing virtual destructor to abstract classes. git-svn-id: - http://svn.osgeo.org/geos/trunk@1624 + missing virtual destructor to abstract classes. git-svn-id: http://svn.osgeo.org/geos/trunk@1624 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli * ChangeLog, configure.in: * configure.in: enforce -Wall -ansi -pedantic -Wno-long-long to C - and CXX flags. git-svn-id: http://svn.osgeo.org/geos/trunk@1623 + and CXX flags. git-svn-id: http://svn.osgeo.org/geos/trunk@1623 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli * swig/ruby/test/Makefile.am: Renamed (reserved) TESTS variable to - RUBY_TESTS git-svn-id: http://svn.osgeo.org/geos/trunk@1622 + RUBY_TESTS git-svn-id: http://svn.osgeo.org/geos/trunk@1622 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli * Makefile.am: Fixed SUBDIRS order, and added a NOTE about - maintaining it. git-svn-id: http://svn.osgeo.org/geos/trunk@1621 + maintaining it. git-svn-id: http://svn.osgeo.org/geos/trunk@1621 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli @@ -24858,50 +28136,45 @@ * ChangeLog, Makefile.am, configure.in, swig/python/Makefile.am, swig/ruby/Makefile.am, swig/ruby/test/Makefile.am: * Makefile.am, configure.in, swig/python/Makefile.am, swig/ruby/Makefile.am, swig/ruby/test/Makefile.am: swig removed from - automatic build process. * configure.in: removed check for boost - availability. git-svn-id: http://svn.osgeo.org/geos/trunk@1620 + automatic build process. * configure.in: removed check for boost availability. git-svn-id: http://svn.osgeo.org/geos/trunk@1620 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli - * configure.in: Set release version to 3.0.0rc1 git-svn-id: - http://svn.osgeo.org/geos/trunk@1619 + * configure.in: Set release version to 3.0.0rc1 git-svn-id: http://svn.osgeo.org/geos/trunk@1619 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Mateusz Loskot * ChangeLog, tests/unit/Makefile.am: Update ChangeLog with info - about new test case isPointInRingTest.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@1618 + about new test case isPointInRingTest.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@1618 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Mateusz Loskot - * tests/unit/algorithm/CGAlgorithms/{isPointInRing.cpp => - isPointInRingTest.cpp}: Renamed file isPointInRing.cpp to - isPointInRingTest.cpp to follow GEOS Unit Test convention. - git-svn-id: http://svn.osgeo.org/geos/trunk@1617 + * tests/unit/algorithm/CGAlgorithms/isPointInRing.cpp, + tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: Renamed + file isPointInRing.cpp to isPointInRingTest.cpp to follow GEOS Unit + Test convention. git-svn-id: http://svn.osgeo.org/geos/trunk@1617 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/algorithm/CGAlgorithms/isPointInRing.cpp: Added new test: - CGAlgorithms/isPointInRing.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@1616 + CGAlgorithms/isPointInRing.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@1616 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli * ChangeLog, source/headers/geos/geom.h: Removed Triangle.h include - from geom.h git-svn-id: http://svn.osgeo.org/geos/trunk@1615 + from geom.h git-svn-id: http://svn.osgeo.org/geos/trunk@1615 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-07 Sandro Santilli * ChangeLog, source/headers/geos/geom/Makefile.am: * source/headers/geos/geom/Makefile.am: removed Triangle.h from - installed header set. git-svn-id: - http://svn.osgeo.org/geos/trunk@1614 + installed header set. git-svn-id: http://svn.osgeo.org/geos/trunk@1614 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-05 Sandro Santilli @@ -24941,8 +28214,7 @@ source/headers/geos/planargraph/algorithm/Makefile.am, source/headers/geos/precision/Makefile.am, source/headers/geos/util.h, source/headers/geos/util/Makefile.am: - Fixed noinst_geos_HEADERS => noinst_HEADERS. git-svn-id: - http://svn.osgeo.org/geos/trunk@1613 + Fixed noinst_geos_HEADERS => noinst_HEADERS. git-svn-id: http://svn.osgeo.org/geos/trunk@1613 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-05 Sandro Santilli @@ -24958,22 +28230,19 @@ source/operation/overlay/PointBuilder.cpp, tests/xmltester/XMLTester.cpp: Given OverlayOp funx code enum a name and renamed values to have a lowercase prefix. Drop all of noding - headers from installed header set. git-svn-id: - http://svn.osgeo.org/geos/trunk@1612 + headers from installed header set. git-svn-id: http://svn.osgeo.org/geos/trunk@1612 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-03 Howard Butler - * source/Makefile.vc: update to track latest removals git-svn-id: - http://svn.osgeo.org/geos/trunk@1611 + * source/Makefile.vc: update to track latest removals git-svn-id: http://svn.osgeo.org/geos/trunk@1611 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-03 Howard Butler * source/simplify/DouglasPeuckerLineSimplifier.cpp: Use a fully qualified namespace for LineSegment because we're inside of - geos::simplify at the time git-svn-id: - http://svn.osgeo.org/geos/trunk@1610 + geos::simplify at the time git-svn-id: http://svn.osgeo.org/geos/trunk@1610 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-01 Sandro Santilli @@ -24991,7 +28260,7 @@ source/headers/geos/precision.h, source/headers/geos/precision/Makefile.am, source/io/WKTWriter.cpp, source/io/Writer.cpp: Reduced installed headers form geomgraph - namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1609 + namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1609 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-06-01 Sandro Santilli @@ -25008,43 +28277,38 @@ source/headers/geos/indexSweepline.h, source/headers/geos/operation/valid/SweeplineNestedRingTester.h, source/operation/valid/Makefile.am: Reduced number of installed - headers for the geos::index namespace git-svn-id: - http://svn.osgeo.org/geos/trunk@1608 + headers for the geos::index namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1608 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-25 Sandro Santilli * ChangeLog, tests/unit/geom/TriangleTest.cpp: * tests/unit/geom/TriangleTest.cpp: take floating-point rounding - error into account. git-svn-id: - http://svn.osgeo.org/geos/trunk@1607 + error into account. git-svn-id: http://svn.osgeo.org/geos/trunk@1607 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-25 Mateusz Loskot * tests/tut/tut.h: Changed precision constant with epsilon() from - std::numeric_limits. git-svn-id: - http://svn.osgeo.org/geos/trunk@1606 + std::numeric_limits. git-svn-id: http://svn.osgeo.org/geos/trunk@1606 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-25 Mateusz Loskot * tests/tut/tut.h: Added specialization of ensure_equals for double - type. git-svn-id: http://svn.osgeo.org/geos/trunk@1605 + type. git-svn-id: http://svn.osgeo.org/geos/trunk@1605 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli * ChangeLog, source/index/quadtree/DoubleBits.cpp: * source/index/quadtree/DoubleBits.cpp: handled negative or zero - values in getExponent(). git-svn-id: - http://svn.osgeo.org/geos/trunk@1604 + values in getExponent(). git-svn-id: http://svn.osgeo.org/geos/trunk@1604 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli * ChangeLog, tests/unit/utility.h: * tests/unit/utility.h: fixed missing return from isSameStructure's specialization on GeometryCollection, also fixed a signed/unsigned - mismatch warning there. git-svn-id: - http://svn.osgeo.org/geos/trunk@1603 + mismatch warning there. git-svn-id: http://svn.osgeo.org/geos/trunk@1603 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli @@ -25054,16 +28318,14 @@ source/util/UniqueCoordinateArrayFilter.cpp: * source/util/Makefile.am, source/util/CoordinateArrayFiter.cpp, source/util/GEOSException.cpp, source/util/UniqueCoordinateArrayFilter.cpp: removed empty - implementation files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1602 + implementation files. git-svn-id: http://svn.osgeo.org/geos/trunk@1602 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli * ChangeLog, source/headers/geos/simplify/TaggedLinesSimplifier.h: * source/headers/geos/simplify/TaggedLinesSimplifier.h: added LineSegmentIndex.h include so that every use of the templated - simplify() function get all the required definitions. git-svn-id: - http://svn.osgeo.org/geos/trunk@1601 + simplify() function get all the required definitions. git-svn-id: http://svn.osgeo.org/geos/trunk@1601 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli @@ -25080,41 +28342,30 @@ source/headers/geos/operation/polygonize/Makefile.am, source/headers/geos/operation/relate/Makefile.am, source/headers/geos/planargraph/Makefile.am: Reduced number of - installed headers in geos/operation/ subdir git-svn-id: - http://svn.osgeo.org/geos/trunk@1600 + installed headers in geos/operation/ subdir git-svn-id: http://svn.osgeo.org/geos/trunk@1600 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli - * NEWS: Added a note about unit tests being introduced git-svn-id: - http://svn.osgeo.org/geos/trunk@1599 + * NEWS: Added a note about unit tests being introduced git-svn-id: http://svn.osgeo.org/geos/trunk@1599 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Mateusz Loskot - * ChangeLog: Added missing entries to ChangeLog. git-svn-id: - http://svn.osgeo.org/geos/trunk@1598 + * ChangeLog: Added missing entries to ChangeLog. git-svn-id: http://svn.osgeo.org/geos/trunk@1598 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli * ChangeLog, source/headers/geos/simplify/TaggedLinesSimplifier.h, source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: * source/headers/geos/simplify/TaggedLinesSimplifier.h, - source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: - fixed bug in TopologyPreservingSimplifier failing to - detect intersections, refactored TaggedLinesSimplifier - class to more closely match JTS and use templated - functions. git-svn-id: - http://svn.osgeo.org/geos/trunk@1597 - 5242fede-7e19-0410-aef8-94bd7d2200fb + source/simplify/TopologyPreservingSimplifier.cpp: * source/headers/geos/simplify/TaggedLinesSimplifier.h, source/simplify/TaggedLinesSimplifier.cpp, source/simplify/TopologyPreservingSimplifier.cpp: fixed bug in TopologyPreservingSimplifier failing to detect intersections, refactored TaggedLinesSimplifier class to more closely match JTS and use templated functions. git-svn-id: http://svn.osgeo.org/geos/trunk@1597 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Sandro Santilli * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: #include to get size_t definition - (only #ifndef __cplusplus) git-svn-id: - http://svn.osgeo.org/geos/trunk@1596 + (only #ifndef __cplusplus) git-svn-id: http://svn.osgeo.org/geos/trunk@1596 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-24 Mateusz Loskot @@ -25123,21 +28374,19 @@ tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, tests/unit/utility.h: Added new test: TopologyPreservingSimplifierTest.cpp. Added new utility.cpp helper - for Unit Tests (implementes utils from JTS Unit Tests). - git-svn-id: http://svn.osgeo.org/geos/trunk@1595 + for Unit Tests (implementes utils from JTS Unit Tests). git-svn-id: http://svn.osgeo.org/geos/trunk@1595 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, source/headers/geos/geom/Coordinate.h: * source/headers/geos/geom/Coordinate.h: added missing - include. git-svn-id: http://svn.osgeo.org/geos/trunk@1594 + include. git-svn-id: http://svn.osgeo.org/geos/trunk@1594 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, source/headers/geos/config.h: * source/headers/geos/config.h: removed file which is not supposed - to be in the repository. git-svn-id: - http://svn.osgeo.org/geos/trunk@1593 + to be in the repository. git-svn-id: http://svn.osgeo.org/geos/trunk@1593 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli @@ -25145,60 +28394,54 @@ * ChangeLog, source/headers/geos/index/quadtree/DoubleBits.h, source/index/quadtree/DoubleBits.cpp: * source/headers/geos/index/quadtree/DoubleBits.h, source/index/quadtree/DoubleBits.cpp: const correctness and - documentation. git-svn-id: http://svn.osgeo.org/geos/trunk@1592 + documentation. git-svn-id: http://svn.osgeo.org/geos/trunk@1592 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * tests/unit/io/ByteOrderValuesTest.cpp: Added test for put/get Long - values git-svn-id: http://svn.osgeo.org/geos/trunk@1591 + values git-svn-id: http://svn.osgeo.org/geos/trunk@1591 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, source/io/WKBWriter.cpp: Fixed a bug in - WKBWriter::writeByteOrder() failing to consider machine's byte order - git-svn-id: http://svn.osgeo.org/geos/trunk@1590 + WKBWriter::writeByteOrder() failing to consider machine's byte order git-svn-id: http://svn.osgeo.org/geos/trunk@1590 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli - * tests/unit/geom/CoordinateTest.cpp: Fixed small typo in label - git-svn-id: http://svn.osgeo.org/geos/trunk@1589 + * tests/unit/geom/CoordinateTest.cpp: Fixed small typo in label git-svn-id: http://svn.osgeo.org/geos/trunk@1589 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, source/io/ByteOrderValues.cpp: * source/io/ByteOrderValues.cpp: fixed bug in putLong() also - affecting putDouble() git-svn-id: - http://svn.osgeo.org/geos/trunk@1588 + affecting putDouble() git-svn-id: http://svn.osgeo.org/geos/trunk@1588 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, tests/unit/Makefile.am, tests/unit/io/ByteOrderValuesTest.cpp: * tests/unit/Makefile.am, tests/unit/io/ByteOrderValuesTest.cpp: - unit test for ByteOrderValues class. git-svn-id: - http://svn.osgeo.org/geos/trunk@1587 + unit test for ByteOrderValues class. git-svn-id: http://svn.osgeo.org/geos/trunk@1587 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, source/io/WKBWriter.cpp: * source/io/WKBWriter.cpp: fixed bug in ::writeInt missing to honour - the requested byte order. git-svn-id: - http://svn.osgeo.org/geos/trunk@1586 + the requested byte order. git-svn-id: http://svn.osgeo.org/geos/trunk@1586 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli - * tests/unit/io/WKBReaderTest.cpp: Fixed top comment git-svn-id: - http://svn.osgeo.org/geos/trunk@1585 + * tests/unit/io/WKBReaderTest.cpp: Fixed top comment git-svn-id: http://svn.osgeo.org/geos/trunk@1585 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli * ChangeLog, tests/unit/io/WKBReaderTest.cpp: * tests/unit/io/WKBReaderTest.cpp: cleaned up and added both XDR and - NDR tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1584 + NDR tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1584 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-23 Sandro Santilli @@ -25206,99 +28449,79 @@ * ChangeLog, source/headers/geos/io/WKBConstants.h, source/io/ByteOrderValues.cpp: * source/io/ByteOrderValues.cpp: changed ENDIAN_BIG and ENDIAN_LITTLE values to match WKBConstants::XDR and - WKBConstants::NDR respectively. * - source/headers/geos/io/WKBConstants.h: added comments about meaning - of XDR/NDR. git-svn-id: http://svn.osgeo.org/geos/trunk@1583 + WKBConstants::NDR respectively. * source/headers/geos/io/WKBConstants.h: added comments about + meaning of XDR/NDR. git-svn-id: http://svn.osgeo.org/geos/trunk@1583 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-22 Sandro Santilli * source/headers/geos/util/GEOSException.h: Print colon after - exception name (as it has always been) git-svn-id: - http://svn.osgeo.org/geos/trunk@1582 + exception name (as it has always been) git-svn-id: http://svn.osgeo.org/geos/trunk@1582 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-19 Sandro Santilli - * ChangeLog, source/simplify/TopologyPreservingSimplifier.cpp: * source/simplify/TopologyPreservingSimplifier.cpp: - removed friend specification in - TopologyPreservingSimplifier helper class (no more - needed) git-svn-id: http://svn.osgeo.org/geos/trunk@1581 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, source/simplify/TopologyPreservingSimplifier.cpp: * source/simplify/TopologyPreservingSimplifier.cpp: removed friend specification in TopologyPreservingSimplifier helper class (no more needed) git-svn-id: http://svn.osgeo.org/geos/trunk@1581 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-19 Sandro Santilli - * ChangeLog, tests/unit/geom/Geometry/coversTest.cpp: * tests/unit/geom/Geometry/coversTest.cpp: keep - tests in 'tut' namespace. git-svn-id: - http://svn.osgeo.org/geos/trunk@1580 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, tests/unit/geom/Geometry/coversTest.cpp: * tests/unit/geom/Geometry/coversTest.cpp: keep tests in 'tut' namespace. git-svn-id: http://svn.osgeo.org/geos/trunk@1580 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-19 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: report error on - load of requested tests. git-svn-id: - http://svn.osgeo.org/geos/trunk@1579 - 5242fede-7e19-0410-aef8-94bd7d2200fb + * ChangeLog, tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: report error on load of requested tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1579 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli - * ChangeLog, source/headers/geos/geom.h: * source/headers/geos/geom.h: fixed doxygen header for mainpage. - git-svn-id: http://svn.osgeo.org/geos/trunk@1578 + * ChangeLog, source/headers/geos/geom.h: * source/headers/geos/geom.h: fixed doxygen header for mainpage. git-svn-id: http://svn.osgeo.org/geos/trunk@1578 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli - * NEWS: Added note about the new BinaryOp class and its uses. - git-svn-id: http://svn.osgeo.org/geos/trunk@1577 + * NEWS: Added note about the new BinaryOp class and its uses. git-svn-id: http://svn.osgeo.org/geos/trunk@1577 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: * source/headers/geos/geom/BinaryOp.h: added compile-time defines to avoid precision-reduction and simplify based policies (default to - enabled). git-svn-id: http://svn.osgeo.org/geos/trunk@1576 + enabled). git-svn-id: http://svn.osgeo.org/geos/trunk@1576 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli - * NEWS: added note about new Geometry predicates git-svn-id: - http://svn.osgeo.org/geos/trunk@1575 + * NEWS: added note about new Geometry predicates git-svn-id: http://svn.osgeo.org/geos/trunk@1575 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli * ChangeLog, tests/unit/geom/Geometry/coversTest.cpp: Added tests - for coveredBy(), fixed ChangeLog entry git-svn-id: - http://svn.osgeo.org/geos/trunk@1574 + for coveredBy(), fixed ChangeLog entry git-svn-id: http://svn.osgeo.org/geos/trunk@1574 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-18 Sandro Santilli * ChangeLog, source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h, tests/unit/Makefile.am, - tests/unit/geom/Geometry/coversTest.cpp: * source/geom/Geometry.cpp, - source/headers/geos/geom/Geometry.h: added covers() - and isCoveredBy() predicates. * - tests/unit/Makefile.am, - tests/unit/geom/Geometry/coversTest.cpp: added test - for covers() predicates. git-svn-id: - http://svn.osgeo.org/geos/trunk@1573 - 5242fede-7e19-0410-aef8-94bd7d2200fb + tests/unit/geom/Geometry/coversTest.cpp: * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h: added covers() and isCoveredBy() predicates. * tests/unit/Makefile.am, tests/unit/geom/Geometry/coversTest.cpp: added test for covers() predicates. git-svn-id: http://svn.osgeo.org/geos/trunk@1573 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-17 Sandro Santilli * source/geom/IntersectionMatrix.cpp, source/headers/geos/geom/IntersectionMatrix.h, tests/unit/geom/IntersectionMatrixTest.cpp: Added output operator + - test git-svn-id: http://svn.osgeo.org/geos/trunk@1572 + test git-svn-id: http://svn.osgeo.org/geos/trunk@1572 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-17 Sandro Santilli * ChangeLog, source/geom/IntersectionMatrix.cpp, source/headers/geos/geom/IntersectionMatrix.h: Added port info, - fixed isCoveredBy() comment. git-svn-id: - http://svn.osgeo.org/geos/trunk@1571 + fixed isCoveredBy() comment. git-svn-id: http://svn.osgeo.org/geos/trunk@1571 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-17 Sandro Santilli @@ -25307,27 +28530,18 @@ source/headers/geos/geom/IntersectionMatrix.h, tests/unit/geom/IntersectionMatrixTest.cpp: added isCovers() and isCoveredBy() public methods to IntersectionMatrix and associated - tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1570 + tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1570 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-17 Sandro Santilli * source/headers/geos/geom/BinaryOp.h: typo fixed to make - description more clear git-svn-id: - http://svn.osgeo.org/geos/trunk@1569 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-05-13 Mateusz Loskot - - * : Fixed line-ends in PointLocatorTest.cpp file. git-svn-id: - http://svn.osgeo.org/geos/trunk@1563 + description more clear git-svn-id: http://svn.osgeo.org/geos/trunk@1569 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-13 Mateusz Loskot - * .cvsignore, tests/unit/.cvsignore: Fixed line-ends in - isRectangleTest.cpp. Added new patterns to .cvsignore. git-svn-id: - http://svn.osgeo.org/geos/trunk@1562 + * : Fixed line-ends in PointLocatorTest.cpp file. git-svn-id: http://svn.osgeo.org/geos/trunk@1563 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-05 Sandro Santilli @@ -25335,15 +28549,13 @@ * ChangeLog, source/noding/snapround/MCIndexSnapRounder.cpp, source/noding/snapround/SimpleSnapRounder.cpp: Had nodind validation error throw an exception for SimpleSnapRounder and - MCIndexSnapRounder git-svn-id: - http://svn.osgeo.org/geos/trunk@1561 + MCIndexSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@1561 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-05 Sandro Santilli * ChangeLog, tests/unit/Makefile.am, - tests/unit/noding/SegmentStringTest.cpp: New SegmentString unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@1560 + tests/unit/noding/SegmentStringTest.cpp: New SegmentString unit test git-svn-id: http://svn.osgeo.org/geos/trunk@1560 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-05 Sandro Santilli @@ -25352,8 +28564,7 @@ source/headers/geos/noding/SegmentString.inl, source/noding/SegmentString.cpp: moved getSegmentOctant out of .inl into .cpp, renamed private eiList to nodeList as in JTS, added more - assertion checking and fixed doxygen comments git-svn-id: - http://svn.osgeo.org/geos/trunk@1559 + assertion checking and fixed doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1559 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-05 Sandro Santilli @@ -25362,14 +28573,13 @@ source/headers/geos/noding/SegmentString.inl, source/noding/SegmentNodeList.cpp: droppped SegmentString::getContext(), new name is getData() to reflect change - in JTS git-svn-id: http://svn.osgeo.org/geos/trunk@1558 + in JTS git-svn-id: http://svn.osgeo.org/geos/trunk@1558 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-05 Sandro Santilli * ChangeLog, source/headers/geos/geom.h: * source/headers/geos/geom.h: fixed namespace qualification in - doxygen page about C++ interface. git-svn-id: - http://svn.osgeo.org/geos/trunk@1557 + doxygen page about C++ interface. git-svn-id: http://svn.osgeo.org/geos/trunk@1557 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli @@ -25389,7 +28599,7 @@ source/headers/geos/geom/Polygon.h, source/operation/buffer/BufferOp.cpp: updated all Geometry::getDimension() methods to return Dimension::DimensionType - (closes bug#93) git-svn-id: http://svn.osgeo.org/geos/trunk@1556 + (closes bug#93) git-svn-id: http://svn.osgeo.org/geos/trunk@1556 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli @@ -25399,188 +28609,167 @@ source/headers/geos/util/math.h, source/noding/ScaledNoder.cpp: * source/headers/geos/util/math.h: provided an util::round() method being an inline proxy to call appropriate default rounding function for the whole GEOS codebase. Currently pointing at - util::java_math_round() being the last being used. git-svn-id: - http://svn.osgeo.org/geos/trunk@1555 + util::java_math_round() being the last being used. git-svn-id: http://svn.osgeo.org/geos/trunk@1555 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/headers/geos/geomgraph/DirectedEdge.h: doxygen comments - cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1554 + cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1554 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/geomgraph/NodeMap.h: Added invariant tester for NodeMap class, fixed comment about ownership of - NodeFactory git-svn-id: http://svn.osgeo.org/geos/trunk@1553 + NodeFactory git-svn-id: http://svn.osgeo.org/geos/trunk@1553 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp: Added some comments - about RightmostEdgeFinder only considering forward DirectedEdge - git-svn-id: http://svn.osgeo.org/geos/trunk@1552 + about RightmostEdgeFinder only considering forward DirectedEdge git-svn-id: http://svn.osgeo.org/geos/trunk@1552 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/headers/geos/operation/buffer/RightmostEdgeFinder.h: Added - note about findEdge() only scanning for forward DirectedEdges - git-svn-id: http://svn.osgeo.org/geos/trunk@1551 + note about findEdge() only scanning for forward DirectedEdges git-svn-id: http://svn.osgeo.org/geos/trunk@1551 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/geomgraph/PlanarGraph.cpp: Added comment about management - of newly created DirectedEdges git-svn-id: - http://svn.osgeo.org/geos/trunk@1550 + of newly created DirectedEdges git-svn-id: http://svn.osgeo.org/geos/trunk@1550 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h: - Doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1549 + Doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1549 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Added JTS debugging, - for comparison with JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@1548 + for comparison with JTS git-svn-id: http://svn.osgeo.org/geos/trunk@1548 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/geom/CoordinateSequence.h: Added - note about the CoordinateSequence::toVector() method. git-svn-id: - http://svn.osgeo.org/geos/trunk@1547 + note about the CoordinateSequence::toVector() method. git-svn-id: http://svn.osgeo.org/geos/trunk@1547 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/noding/SegmentNodeList.cpp: noding/SegmentNodeList.cpp: cleanups, changed output operator to be - more similar to JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@1546 + more similar to JTS git-svn-id: http://svn.osgeo.org/geos/trunk@1546 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/noding/ScaledNoder.cpp: removed use of - SegmentString::setCoordinates() [dropped] git-svn-id: - http://svn.osgeo.org/geos/trunk@1545 + SegmentString::setCoordinates() [dropped] git-svn-id: http://svn.osgeo.org/geos/trunk@1545 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentString.h, source/headers/geos/noding/SegmentString.inl: * source/noding/ScaledNoder.cpp: removed use of - SegmentString::setCoordinates(). * - source/headers/geos/noding/SegmentStrign.{h,inl}: removed new - setCoordinates() interface. git-svn-id: - http://svn.osgeo.org/geos/trunk@1544 + SegmentString::setCoordinates(). * source/headers/geos/noding/SegmentStrign.{h,inl}: removed new + setCoordinates() interface. git-svn-id: http://svn.osgeo.org/geos/trunk@1544 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentString.h, source/noding/SegmentString.cpp: output operator for SegmentString - class git-svn-id: http://svn.osgeo.org/geos/trunk@1543 + class git-svn-id: http://svn.osgeo.org/geos/trunk@1543 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentNodeList.h: - const-correct size() method for SegmentNodeList git-svn-id: - http://svn.osgeo.org/geos/trunk@1542 + const-correct size() method for SegmentNodeList git-svn-id: http://svn.osgeo.org/geos/trunk@1542 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-04 Sandro Santilli * source/headers/geos/noding/ScaledNoder.h: Extended definition to - take new CoordinateSequence tracking into account git-svn-id: - http://svn.osgeo.org/geos/trunk@1541 + take new CoordinateSequence tracking into account git-svn-id: http://svn.osgeo.org/geos/trunk@1541 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/noding/ScaledNoder.cpp: Added SQL debugging - output git-svn-id: http://svn.osgeo.org/geos/trunk@1540 + output git-svn-id: http://svn.osgeo.org/geos/trunk@1540 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/geom/CoordinateSequence.cpp, source/headers/geos/geom/CoordinateSequence.h: added operator<< for - CoordinateSequence git-svn-id: - http://svn.osgeo.org/geos/trunk@1539 + CoordinateSequence git-svn-id: http://svn.osgeo.org/geos/trunk@1539 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentString.h, source/headers/geos/noding/SegmentString.inl: added - SegmentString::setCoordinates() interface git-svn-id: - http://svn.osgeo.org/geos/trunk@1538 + SegmentString::setCoordinates() interface git-svn-id: http://svn.osgeo.org/geos/trunk@1538 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/noding/snapround/SimpleSnapRounder.cpp: Uncommented - correctness checker git-svn-id: - http://svn.osgeo.org/geos/trunk@1537 + correctness checker git-svn-id: http://svn.osgeo.org/geos/trunk@1537 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/noding/snapround/HotPixel.cpp: system headers included - after package headers git-svn-id: - http://svn.osgeo.org/geos/trunk@1536 + after package headers git-svn-id: http://svn.osgeo.org/geos/trunk@1536 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/headers/geos/noding/snapround/HotPixel.h: - Doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1535 + Doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1535 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * source/headers/geos/nodingSnapround.h: Forgot a slash - git-svn-id: http://svn.osgeo.org/geos/trunk@1534 + * source/headers/geos/nodingSnapround.h: Forgot a slash git-svn-id: http://svn.osgeo.org/geos/trunk@1534 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * ChangeLog, source/headers/geos/nodingSnapround.h: Doxygen brief - git-svn-id: http://svn.osgeo.org/geos/trunk@1533 + * ChangeLog, source/headers/geos/nodingSnapround.h: Doxygen brief git-svn-id: http://svn.osgeo.org/geos/trunk@1533 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler - * source/Makefile.vc: tweak clean target git-svn-id: - http://svn.osgeo.org/geos/trunk@1532 + * source/Makefile.vc: tweak clean target git-svn-id: http://svn.osgeo.org/geos/trunk@1532 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler * source/Makefile.vc: Build the C API and shared lib separate from - the normal lib Add missing files git-svn-id: - http://svn.osgeo.org/geos/trunk@1531 + the normal lib Add missing files git-svn-id: http://svn.osgeo.org/geos/trunk@1531 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * source/headers/geos/noding/SegmentString.h: fit in 80 columns - git-svn-id: http://svn.osgeo.org/geos/trunk@1530 + * source/headers/geos/noding/SegmentString.h: fit in 80 columns git-svn-id: http://svn.osgeo.org/geos/trunk@1530 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler * capi/geos_c.h.vc: Maintain a geos_c.h.vc until we come up with a - better solution git-svn-id: http://svn.osgeo.org/geos/trunk@1529 + better solution git-svn-id: http://svn.osgeo.org/geos/trunk@1529 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler @@ -25591,26 +28780,24 @@ * ChangeLog, source/noding/snapround/SimpleSnapRounder.cpp: fixed bug in SimpleSnapRounder::computeSnaps, trying to access - out-of-bound vector element. git-svn-id: - http://svn.osgeo.org/geos/trunk@1527 + out-of-bound vector element. git-svn-id: http://svn.osgeo.org/geos/trunk@1527 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler * source/Makefile.vc: add additional files and change names where - necessary git-svn-id: http://svn.osgeo.org/geos/trunk@1526 + necessary git-svn-id: http://svn.osgeo.org/geos/trunk@1526 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/noding/ScaledNoder.cpp: test SegmentString invariant before - and after scaling git-svn-id: http://svn.osgeo.org/geos/trunk@1525 + and after scaling git-svn-id: http://svn.osgeo.org/geos/trunk@1525 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * ChangeLog: Tabs for indent git-svn-id: - http://svn.osgeo.org/geos/trunk@1524 + * ChangeLog: Tabs for indent git-svn-id: http://svn.osgeo.org/geos/trunk@1524 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Howard Butler @@ -25620,67 +28807,60 @@ 2006-05-03 Howard Butler * source/headers/geos/version.h.vc: Maintain a version.h.vc until we - come up with a better solution git-svn-id: - http://svn.osgeo.org/geos/trunk@1522 + come up with a better solution git-svn-id: http://svn.osgeo.org/geos/trunk@1522 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * ChangeLog, configure.in: updated JTS_PORT to 1.7.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@1521 + * ChangeLog, configure.in: updated JTS_PORT to 1.7.1 git-svn-id: http://svn.osgeo.org/geos/trunk@1521 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/headers/geos/noding/SegmentString.h, source/headers/geos/noding/SegmentString.inl: testInvariant made - public and always inlined git-svn-id: - http://svn.osgeo.org/geos/trunk@1520 + public and always inlined git-svn-id: http://svn.osgeo.org/geos/trunk@1520 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/headers/geos/noding/snapround/HotPixel.inl: - Changed sym_round() to java_math_round() git-svn-id: - http://svn.osgeo.org/geos/trunk@1519 + Changed sym_round() to java_math_round() git-svn-id: http://svn.osgeo.org/geos/trunk@1519 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * source/noding/ScaledNoder.cpp: Oops, uninitialized value fix - git-svn-id: http://svn.osgeo.org/geos/trunk@1518 + * source/noding/ScaledNoder.cpp: Oops, uninitialized value fix git-svn-id: http://svn.osgeo.org/geos/trunk@1518 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * ChangeLog: Updated git-svn-id: - http://svn.osgeo.org/geos/trunk@1517 + * ChangeLog: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@1517 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/headers/geos/noding/IntersectionFinderAdder.h: Better - doxygen comment git-svn-id: http://svn.osgeo.org/geos/trunk@1516 + doxygen comment git-svn-id: http://svn.osgeo.org/geos/trunk@1516 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/operation/buffer/RightmostEdgeFinder.cpp: Assertions - checking git-svn-id: http://svn.osgeo.org/geos/trunk@1515 + checking git-svn-id: http://svn.osgeo.org/geos/trunk@1515 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/headers/geos/noding/ScaledNoder.h: removed reduntant port - info git-svn-id: http://svn.osgeo.org/geos/trunk@1514 + info git-svn-id: http://svn.osgeo.org/geos/trunk@1514 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * source/headers/geos/noding/snapround/SimpleSnapRounder.h, source/noding/snapround/SimpleSnapRounder.cpp: moved some - implementations from header to .cpp file (taken out of inline) - git-svn-id: http://svn.osgeo.org/geos/trunk@1513 + implementations from header to .cpp file (taken out of inline) git-svn-id: http://svn.osgeo.org/geos/trunk@1513 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli @@ -25688,20 +28868,18 @@ * source/headers/geos/noding/ScaledNoder.h, source/noding/ScaledNoder.cpp: Fixed scale() function to remove repeated points *after* rounding. Added brief doxygen class - description. git-svn-id: http://svn.osgeo.org/geos/trunk@1512 + description. git-svn-id: http://svn.osgeo.org/geos/trunk@1512 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli * ChangeLog, source/operation/buffer/BufferOp.cpp: Fixed misuse of - precision model in noder (bufferFixedPrecision) git-svn-id: - http://svn.osgeo.org/geos/trunk@1511 + precision model in noder (bufferFixedPrecision) git-svn-id: http://svn.osgeo.org/geos/trunk@1511 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli - * ChangeLog: buffer headers reduction item git-svn-id: - http://svn.osgeo.org/geos/trunk@1510 + * ChangeLog: buffer headers reduction item git-svn-id: http://svn.osgeo.org/geos/trunk@1510 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli @@ -25709,8 +28887,7 @@ * source/headers/geos/opBuffer.h, source/headers/geos/operation/buffer/Makefile.am: Do not install following buffer headers: BufferBuilder.h, OffsetCurveSetBuilder.h, - BufferSubgraph.h, SubgraphDepthLocater.h, RightmostEdgeFinder.h - git-svn-id: http://svn.osgeo.org/geos/trunk@1509 + BufferSubgraph.h, SubgraphDepthLocater.h, RightmostEdgeFinder.h git-svn-id: http://svn.osgeo.org/geos/trunk@1509 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli @@ -25718,10 +28895,9 @@ * ChangeLog, source/headers/geos/noding/ScaledNoder.h, source/noding/ScaledNoder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: * source/operation/buffer/OffsetCurveSetBuilder.cpp: used auto_ptr - to protect leaks of CoordinateSequence * - source/noding/ScaledNoder.cpp, + to protect leaks of CoordinateSequence * source/noding/ScaledNoder.cpp, source/headers/geos/noding/ScaledNoder.h: ported JTS bugfix in scale - method. git-svn-id: http://svn.osgeo.org/geos/trunk@1508 + method. git-svn-id: http://svn.osgeo.org/geos/trunk@1508 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-03 Sandro Santilli @@ -25730,22 +28906,20 @@ source/headers/geos/geom/CoordinateArraySequence.h, source/headers/geos/geom/CoordinateSequence.h, tests/unit/geom/CoordinateArraySequenceTest.cpp: added new - non-static CoordinateSequence::removeRepeatedPoints() mutator. - git-svn-id: http://svn.osgeo.org/geos/trunk@1507 + non-static CoordinateSequence::removeRepeatedPoints() mutator. git-svn-id: http://svn.osgeo.org/geos/trunk@1507 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-02 Sandro Santilli * ChangeLog, source/noding/ScaledNoder.cpp: * source/noding/ScaledNoder.cpp: use java_math_round instead of - sym_round. git-svn-id: http://svn.osgeo.org/geos/trunk@1506 + sym_round. git-svn-id: http://svn.osgeo.org/geos/trunk@1506 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-02 Sandro Santilli * source/algorithm/CGAlgorithms.cpp, source/headers/geos/algorithm/CGAlgorithms.h: Added port info and - fixed doxygen comments for CGAlgorithms class git-svn-id: - http://svn.osgeo.org/geos/trunk@1505 + fixed doxygen comments for CGAlgorithms class git-svn-id: http://svn.osgeo.org/geos/trunk@1505 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-02 Sandro Santilli @@ -25755,33 +28929,30 @@ source/headers/geos/operation/polygonize/Makefile.am, source/operation/polygonize/EdgeRing.cpp: Added port info for polygonize/EdgeRing class, polygonize/EdgeRing.h header not - installed. git-svn-id: http://svn.osgeo.org/geos/trunk@1503 + installed. git-svn-id: http://svn.osgeo.org/geos/trunk@1503 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-02 Sandro Santilli - * ChangeLog, source/operation/polygonize/{polygonizeEdgeRing.cpp => - EdgeRing.cpp}, source/operation/polygonize/Makefile.am: * source/operation/polygonize/: polygonizeEdgeRing.cpp renamed to - EdgeRing.cpp, to follow JTS naming. git-svn-id: - http://svn.osgeo.org/geos/trunk@1502 + * ChangeLog, source/operation/polygonize/EdgeRing.cpp, + source/operation/polygonize/Makefile.am, + source/operation/polygonize/polygonizeEdgeRing.cpp: * source/operation/polygonize/: polygonizeEdgeRing.cpp renamed to + EdgeRing.cpp, to follow JTS naming. git-svn-id: http://svn.osgeo.org/geos/trunk@1502 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-05-02 Sandro Santilli - * ChangeLog, source/io/WKBReader.cpp: * source/io/WKBReader.cpp: fixed reads of XDR WKB. git-svn-id: - http://svn.osgeo.org/geos/trunk@1500 + * ChangeLog, source/io/WKBReader.cpp: * source/io/WKBReader.cpp: fixed reads of XDR WKB. git-svn-id: http://svn.osgeo.org/geos/trunk@1500 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli - * tests/xmltester/Makefile.am: Added 'verbose-test' rule - git-svn-id: http://svn.osgeo.org/geos/trunk@1497 + * tests/xmltester/Makefile.am: Added 'verbose-test' rule git-svn-id: http://svn.osgeo.org/geos/trunk@1497 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli - * NEWS: Added note about Geometry constructors git-svn-id: - http://svn.osgeo.org/geos/trunk@1496 + * NEWS: Added note about Geometry constructors git-svn-id: http://svn.osgeo.org/geos/trunk@1496 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli @@ -25789,9 +28960,8 @@ * ChangeLog, source/geom/GeometryFactory.cpp, source/geom/Polygon.cpp, source/headers/geos/geom/GeometryFactory.h: * source/geom/GeometryFactory.cpp, source/headers/geos/geom/GeometryFactory.h: added LineString copy - constructor. * source/geom/Polygon.cpp: fixed getBoundary method to - always return a geometry composed by LineStrings (not LinearRings) - git-svn-id: http://svn.osgeo.org/geos/trunk@1495 + constructor. * source/geom/Polygon.cpp: fixed getBoundary method to always return + a geometry composed by LineStrings (not LinearRings) git-svn-id: http://svn.osgeo.org/geos/trunk@1495 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli @@ -25800,8 +28970,7 @@ source/headers/geos/operation/predicate/RectangleIntersects.h, source/io/WKTWriter.cpp, source/operation/predicate/RectangleIntersects.cpp: removed warnings - related to change in getNumPoints() return type. git-svn-id: - http://svn.osgeo.org/geos/trunk@1494 + related to change in getNumPoints() return type. git-svn-id: http://svn.osgeo.org/geos/trunk@1494 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli @@ -25820,8 +28989,7 @@ source/headers/geos/geom/Polygon.h: Geometry constructors made protected, to ensure all constructions use GeometryFactory, which has been made friend of all Geometry derivates. getNumPoints() - changed to return size_t. git-svn-id: - http://svn.osgeo.org/geos/trunk@1493 + changed to return size_t. git-svn-id: http://svn.osgeo.org/geos/trunk@1493 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-28 Sandro Santilli @@ -25829,62 +28997,56 @@ * ChangeLog, tests/unit/geom/LineStringTest.cpp, tests/unit/geom/MultiPointTest.cpp, tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp: Unit tests: only construct Geoms - using GeometryFactory. git-svn-id: - http://svn.osgeo.org/geos/trunk@1492 + using GeometryFactory. git-svn-id: http://svn.osgeo.org/geos/trunk@1492 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-27 Sandro Santilli * ChangeLog, source/headers/geos/geomgraph/Node.h: Z check removed from invariant tester to avoid aborts due to differences in FP - computations. git-svn-id: http://svn.osgeo.org/geos/trunk@1491 + computations. git-svn-id: http://svn.osgeo.org/geos/trunk@1491 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-27 Sandro Santilli * source/geomgraph/PlanarGraph.cpp: use output operators in - debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1490 + debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1490 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-27 Sandro Santilli * ChangeLog, source/geomgraph/NodeMap.cpp: (addNode): always use the Node Coordinate as a key in the map to - reduce likeliness of a premature deletion. git-svn-id: - http://svn.osgeo.org/geos/trunk@1489 + reduce likeliness of a premature deletion. git-svn-id: http://svn.osgeo.org/geos/trunk@1489 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-27 Sandro Santilli * source/geomgraph/Node.cpp: standard algorithm used in addZ() for - vector seek git-svn-id: http://svn.osgeo.org/geos/trunk@1488 + vector seek git-svn-id: http://svn.osgeo.org/geos/trunk@1488 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-26 Sandro Santilli * ChangeLog, source/io/StringTokenizer.cpp, source/io/WKTReader.cpp, tests/xmltester/testLeaksBig.xml: Had - WKTReader accept correct form for MultiPoint git-svn-id: - http://svn.osgeo.org/geos/trunk@1485 + WKTReader accept correct form for MultiPoint git-svn-id: http://svn.osgeo.org/geos/trunk@1485 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-26 Sandro Santilli - * ChangeLog: Added mloskot item (bug#100) git-svn-id: - http://svn.osgeo.org/geos/trunk@1482 + * ChangeLog: Added mloskot item (bug#100) git-svn-id: http://svn.osgeo.org/geos/trunk@1482 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-26 Sandro Santilli * ChangeLog, tools/geos-config.in: tools/geos-config.in: fixed - library path to use layout detected by autoconf git-svn-id: - http://svn.osgeo.org/geos/trunk@1481 + library path to use layout detected by autoconf git-svn-id: http://svn.osgeo.org/geos/trunk@1481 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-24 Sandro Santilli * source/simplify/TopologyPreservingSimplifier.cpp: Public - constructors change made permanent git-svn-id: - http://svn.osgeo.org/geos/trunk@1480 + constructors change made permanent git-svn-id: http://svn.osgeo.org/geos/trunk@1480 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-23 Mateusz Loskot @@ -25892,33 +29054,30 @@ * .cvsignore, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Small refactoring of DouglasPeuckerSimplifierTest (prefer to use ctor instead of operator= to create objects). Added new patterns to - .cvsignore. git-svn-id: http://svn.osgeo.org/geos/trunk@1479 + .cvsignore. git-svn-id: http://svn.osgeo.org/geos/trunk@1479 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-23 Mateusz Loskot - * .cvsignore: Added new patterns to .cvsignore file. git-svn-id: - http://svn.osgeo.org/geos/trunk@1478 + * .cvsignore: Added new patterns to .cvsignore file. git-svn-id: http://svn.osgeo.org/geos/trunk@1478 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-22 Mateusz Loskot * source/simplify/TopologyPreservingSimplifier.cpp: Temporar fix of - Bug #100. This report requires deeper analysis!. git-svn-id: - http://svn.osgeo.org/geos/trunk@1477 + Bug #100. This report requires deeper analysis!. git-svn-id: http://svn.osgeo.org/geos/trunk@1477 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-21 Sandro Santilli * ChangeLog, source/geom/PrecisionModel.cpp: Fixed constructor by - type to always initialize scale factor git-svn-id: - http://svn.osgeo.org/geos/trunk@1476 + type to always initialize scale factor git-svn-id: http://svn.osgeo.org/geos/trunk@1476 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-20 Sandro Santilli * ChangeLog, source/headers/geos/geom/BinaryOp.h: Added missing - debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1475 + debugging output git-svn-id: http://svn.osgeo.org/geos/trunk@1475 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-20 Sandro Santilli @@ -25926,14 +29085,13 @@ * ChangeLog, source/algorithm/HCoordinate.cpp, source/headers/geos/algorithm/HCoordinate.h: HCoordinate class changed to use long double types internally, in order to improve - computation precision git-svn-id: - http://svn.osgeo.org/geos/trunk@1474 + computation precision git-svn-id: http://svn.osgeo.org/geos/trunk@1474 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-20 Sandro Santilli * source/headers/geos/algorithm/LineIntersector.h: Added some more - doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1473 + doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1473 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-20 Sandro Santilli @@ -25941,59 +29099,51 @@ * ChangeLog, source/algorithm/HCoordinate.cpp: source/algorithm/HCoordinate.cpp: added compile time define to force storage of intermediate computation values to variables (in order to - make the -ffloat-store gcc switch effective). Disabled by default. - git-svn-id: http://svn.osgeo.org/geos/trunk@1472 + make the -ffloat-store gcc switch effective). Disabled by default. git-svn-id: http://svn.osgeo.org/geos/trunk@1472 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-19 Sandro Santilli - * TODO: Added snapround and simplify tests items git-svn-id: - http://svn.osgeo.org/geos/trunk@1471 + * TODO: Added snapround and simplify tests items git-svn-id: http://svn.osgeo.org/geos/trunk@1471 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-19 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1470 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1470 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * ChangeLog, capi/geos_c.cpp: Had CAPI use new BinaryOp class in an - aim to reduce robustness problems git-svn-id: - http://svn.osgeo.org/geos/trunk@1469 + aim to reduce robustness problems git-svn-id: http://svn.osgeo.org/geos/trunk@1469 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli - * TODO: updated, somehow git-svn-id: - http://svn.osgeo.org/geos/trunk@1468 + * TODO: updated, somehow git-svn-id: http://svn.osgeo.org/geos/trunk@1468 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * ChangeLog, source/operation/overlay/OverlayOp.cpp: removed - precision reduction code (use BinaryOp for that) git-svn-id: - http://svn.osgeo.org/geos/trunk@1467 + precision reduction code (use BinaryOp for that) git-svn-id: http://svn.osgeo.org/geos/trunk@1467 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli - * source/headers/geos/geom/Makefile.am: Added BinaryOp.h header - git-svn-id: http://svn.osgeo.org/geos/trunk@1466 + * source/headers/geos/geom/Makefile.am: Added BinaryOp.h header git-svn-id: http://svn.osgeo.org/geos/trunk@1466 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * source/headers/geos/operation/overlay/OverlayOp.h: fixed missing - namespace qualification in overlay::overlayOp git-svn-id: - http://svn.osgeo.org/geos/trunk@1465 + namespace qualification in overlay::overlayOp git-svn-id: http://svn.osgeo.org/geos/trunk@1465 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * ChangeLog, tests/xmltester/XMLTester.cpp: XMLTester binary ops - invoked using the new BinaryOp template function. git-svn-id: - http://svn.osgeo.org/geos/trunk@1464 + invoked using the new BinaryOp template function. git-svn-id: http://svn.osgeo.org/geos/trunk@1464 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli @@ -26001,59 +29151,51 @@ * ChangeLog, source/headers/geos/geom/BinaryOp.h: new geos::Geom::BinaryOp template function implementing various heuristics aimed at making binary geometry ops work around - robustness issues. git-svn-id: - http://svn.osgeo.org/geos/trunk@1463 + robustness issues. git-svn-id: http://svn.osgeo.org/geos/trunk@1463 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * ChangeLog, source/headers/geos/operation/overlay/OverlayOp.h: - Added overlayOp() adapter for use in templates expecting binary ops - git-svn-id: http://svn.osgeo.org/geos/trunk@1462 + Added overlayOp() adapter for use in templates expecting binary ops git-svn-id: http://svn.osgeo.org/geos/trunk@1462 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-14 Sandro Santilli * ChangeLog, source/algorithm/HCoordinate.cpp, source/headers/geos/algorithm/HCoordinate.h: Hadded output operator - and debugging prints for HCoordinate. git-svn-id: - http://svn.osgeo.org/geos/trunk@1461 + and debugging prints for HCoordinate. git-svn-id: http://svn.osgeo.org/geos/trunk@1461 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Disables reduced precision - overlayOp (is broken) git-svn-id: - http://svn.osgeo.org/geos/trunk@1460 + overlayOp (is broken) git-svn-id: http://svn.osgeo.org/geos/trunk@1460 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Plugged CommonBitsOp attempts in overlay op, before brute force precision reduction (this - is likely going to change) git-svn-id: - http://svn.osgeo.org/geos/trunk@1459 + is likely going to change) git-svn-id: http://svn.osgeo.org/geos/trunk@1459 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * source/precision/CommonBitsOp.cpp: "always build before commit" - (forgot a closing paren) git-svn-id: - http://svn.osgeo.org/geos/trunk@1458 + (forgot a closing paren) git-svn-id: http://svn.osgeo.org/geos/trunk@1458 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * ChangeLog, source/headers/geos/precision/CommonBitsOp.h, source/precision/CommonBitsOp.cpp: fixed bug in binary ops failing - to consistently reduce operands. git-svn-id: - http://svn.osgeo.org/geos/trunk@1457 + to consistently reduce operands. git-svn-id: http://svn.osgeo.org/geos/trunk@1457 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli - * capi/geostest.c: fixed bug introduced by previous commit - git-svn-id: http://svn.osgeo.org/geos/trunk@1456 + * capi/geostest.c: fixed bug introduced by previous commit git-svn-id: http://svn.osgeo.org/geos/trunk@1456 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli @@ -26063,30 +29205,26 @@ source/simplify/TaggedLineString.cpp, source/simplify/TaggedLineStringSimplifier.cpp, source/simplify/TopologyPreservingSimplifier.cpp: Many debugging - lines and assertions added. Fixed bug in TaggedLineString class. - git-svn-id: http://svn.osgeo.org/geos/trunk@1455 + lines and assertions added. Fixed bug in TaggedLineString class. git-svn-id: http://svn.osgeo.org/geos/trunk@1455 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * ChangeLog, capi/geos_c.cpp: Use default GeometryFactory instance - (finishGEOS() is a no-op now) git-svn-id: - http://svn.osgeo.org/geos/trunk@1454 + (finishGEOS() is a no-op now) git-svn-id: http://svn.osgeo.org/geos/trunk@1454 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in, capi/geostest.c: Added GEOSSimplify and GEOSTopologyPreserveSimplify interfaces. - Removed compiler warnings in geostest git-svn-id: - http://svn.osgeo.org/geos/trunk@1453 + Removed compiler warnings in geostest git-svn-id: http://svn.osgeo.org/geos/trunk@1453 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * source/simplify/DouglasPeuckerSimplifier.cpp: Fixed a bug in - DPTransformer handling of MultiPolygons git-svn-id: - http://svn.osgeo.org/geos/trunk@1452 + DPTransformer handling of MultiPolygons git-svn-id: http://svn.osgeo.org/geos/trunk@1452 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli @@ -26095,15 +29233,13 @@ source/headers/geos/simplify/TopologyPreservingSimplifier.h, source/simplify/Makefile.am, source/simplify/TopologyPreservingSimplifier.cpp: Made - TopologyPreservingSimplifier implementation successfully build - git-svn-id: http://svn.osgeo.org/geos/trunk@1451 + TopologyPreservingSimplifier implementation successfully build git-svn-id: http://svn.osgeo.org/geos/trunk@1451 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli * ChangeLog, tests/unit/io/WKBReaderTest.cpp: Forced NDR output (to - not rely on architecture). Removed CRs endings. git-svn-id: - http://svn.osgeo.org/geos/trunk@1450 + not rely on architecture). Removed CRs endings. git-svn-id: http://svn.osgeo.org/geos/trunk@1450 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli @@ -26116,8 +29252,7 @@ source/simplify/Makefile.am, source/simplify/TaggedLinesSimplifier.cpp, source/simplify/TopologyPreservingSimplifier.cpp: - TopologyPreservingSimplifier initial port git-svn-id: - http://svn.osgeo.org/geos/trunk@1449 + TopologyPreservingSimplifier initial port git-svn-id: http://svn.osgeo.org/geos/trunk@1449 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Sandro Santilli @@ -26132,33 +29267,29 @@ source/simplify/Makefile.am, source/simplify/TaggedLinesSimplifier.cpp, source/simplify/TopologyPreservingSimplifier.cpp: Initial - implementation of TaggedLinesSimplifier class git-svn-id: - http://svn.osgeo.org/geos/trunk@1448 + implementation of TaggedLinesSimplifier class git-svn-id: http://svn.osgeo.org/geos/trunk@1448 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Mateusz Loskot * source/headers/geos/simplify/LineSegmentIndex.h, source/simplify/LineSegmentIndex.cpp: Removed definition of copy - ctor and assignment operator for LineSegmentString class. - git-svn-id: http://svn.osgeo.org/geos/trunk@1447 + ctor and assignment operator for LineSegmentString class. git-svn-id: http://svn.osgeo.org/geos/trunk@1447 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-13 Mateusz Loskot * source/headers/geos/simplify/TaggedLineString.h, source/simplify/TaggedLineString.cpp: Removed definition of copy - ctor and assignment operator for TaggedLineString class. According + ctor and assignment operator for TaggedLineString class. According to following rule: Declaring, but not defining, private copy - operations has the effect of "turning off" copying for the class. - git-svn-id: http://svn.osgeo.org/geos/trunk@1446 + operations has the effect of "turning off" copying for the class. git-svn-id: http://svn.osgeo.org/geos/trunk@1446 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli * ChangeLog: Added note about reduction of installed headers in - simplify namespace git-svn-id: - http://svn.osgeo.org/geos/trunk@1445 + simplify namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1445 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli @@ -26171,8 +29302,7 @@ source/simplify/Makefile.am, source/simplify/TaggedLineSegment.cpp, source/simplify/TaggedLineStringSimplifier.cpp: Ported TaggedLineStringSimplifier class, made LineSegment class polymorphic - to fix derivation of TaggedLineSegment git-svn-id: - http://svn.osgeo.org/geos/trunk@1444 + to fix derivation of TaggedLineSegment git-svn-id: http://svn.osgeo.org/geos/trunk@1444 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli @@ -26181,8 +29311,7 @@ source/headers/geos/simplify/Makefile.am, source/headers/geos/simplify/TaggedLineString.h, source/simplify/LineSegmentIndex.cpp, source/simplify/Makefile.am, - source/simplify/TaggedLineString.cpp: LineSegmentIndex class - git-svn-id: http://svn.osgeo.org/geos/trunk@1443 + source/simplify/TaggedLineString.cpp: LineSegmentIndex class git-svn-id: http://svn.osgeo.org/geos/trunk@1443 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli @@ -26192,43 +29321,38 @@ source/headers/geos/simplify/TaggedLineString.h, source/simplify/Makefile.am, source/simplify/TaggedLineSegment.cpp, source/simplify/TaggedLineString.cpp: Initial implementation of - TaggedLineSegment and TaggedLineString classes git-svn-id: - http://svn.osgeo.org/geos/trunk@1442 + TaggedLineSegment and TaggedLineString classes git-svn-id: http://svn.osgeo.org/geos/trunk@1442 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Added support for use of - CommonBitsOp in reduced precision attempts (compile-time option) - git-svn-id: http://svn.osgeo.org/geos/trunk@1441 + CommonBitsOp in reduced precision attempts (compile-time option) git-svn-id: http://svn.osgeo.org/geos/trunk@1441 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli - * source/algorithm/LineIntersector.cpp: Fixed debugging line - git-svn-id: http://svn.osgeo.org/geos/trunk@1440 + * source/algorithm/LineIntersector.cpp: Fixed debugging line git-svn-id: http://svn.osgeo.org/geos/trunk@1440 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli * source/headers/geos/geom/GeometryFactory.h: Removed Geometry.h and - CoordinateSequence.h includes. The former created a circular - dependency. git-svn-id: http://svn.osgeo.org/geos/trunk@1439 + CoordinateSequence.h includes. The former created a circular + dependency. git-svn-id: http://svn.osgeo.org/geos/trunk@1439 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli * ChangeLog, source/io/WKBReader.cpp: Fixed exceptions constructors - (were using operator+ with strings and const char*) git-svn-id: - http://svn.osgeo.org/geos/trunk@1438 + (were using operator+ with strings and const char*) git-svn-id: http://svn.osgeo.org/geos/trunk@1438 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-12 Sandro Santilli * ChangeLog, source/headers/geos/io/WKBReader.h, source/io/WKBReader.cpp: Added WKBReader default ctor using default - GeometryFactory instance git-svn-id: - http://svn.osgeo.org/geos/trunk@1437 + GeometryFactory instance git-svn-id: http://svn.osgeo.org/geos/trunk@1437 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli @@ -26239,15 +29363,13 @@ source/simplify/DouglasPeuckerSimplifier.cpp, source/simplify/Makefile.am, tests/unit/Makefile.am, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: - geos::simplify::DouglasPeukerSimplifier class + unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@1436 + geos::simplify::DouglasPeukerSimplifier class + unit test git-svn-id: http://svn.osgeo.org/geos/trunk@1436 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli * source/headers/geos/geom/util/GeometryTransformer.h: used typedef - for auto_ptr git-svn-id: - http://svn.osgeo.org/geos/trunk@1435 + for auto_ptr git-svn-id: http://svn.osgeo.org/geos/trunk@1435 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli @@ -26256,14 +29378,13 @@ source/geom/util/Makefile.am, source/headers/geos/geom/util/GeometryTransformer.h, source/headers/geos/geom/util/Makefile.am: GeometryTransformer class - ported git-svn-id: http://svn.osgeo.org/geos/trunk@1434 + ported git-svn-id: http://svn.osgeo.org/geos/trunk@1434 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli * source/headers/geos/geom/CoordinateSequence.h: Added - CoordinateSequence::AutoPtr typedef git-svn-id: - http://svn.osgeo.org/geos/trunk@1433 + CoordinateSequence::AutoPtr typedef git-svn-id: http://svn.osgeo.org/geos/trunk@1433 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli @@ -26273,14 +29394,13 @@ source/headers/geos/geom/GeometryFactory.h, source/headers/geos/geom/LineString.h, source/headers/geos/geom/LinearRing.h: Added LineString and - LinearRing constructors by auto_ptr git-svn-id: - http://svn.osgeo.org/geos/trunk@1432 + LinearRing constructors by auto_ptr git-svn-id: http://svn.osgeo.org/geos/trunk@1432 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli * source/headers/geos/geom/GeometryList.h: Added missing duplicated - include sentinel git-svn-id: http://svn.osgeo.org/geos/trunk@1431 + include sentinel git-svn-id: http://svn.osgeo.org/geos/trunk@1431 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli @@ -26288,20 +29408,19 @@ * source/geom/GeometryList.cpp, source/geom/Makefile.am, source/headers/geos/geom/GeometryList.h, source/headers/geos/geom/Makefile.am: Initial implementation of a - GeometryList class, to be used to manage lists of Geometry pointers. - git-svn-id: http://svn.osgeo.org/geos/trunk@1430 + GeometryList class, to be used to manage lists of Geometry pointers. git-svn-id: http://svn.osgeo.org/geos/trunk@1430 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli * source/headers/geos/geom/Geometry.h: Added Geometry::AutoPtr - typedef git-svn-id: http://svn.osgeo.org/geos/trunk@1429 + typedef git-svn-id: http://svn.osgeo.org/geos/trunk@1429 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-11 Sandro Santilli * source/geom/Geometry.cpp: Fixed initialization list (removed - compiler warning) git-svn-id: http://svn.osgeo.org/geos/trunk@1428 + compiler warning) git-svn-id: http://svn.osgeo.org/geos/trunk@1428 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli @@ -26315,9 +29434,8 @@ source/headers/geos/geom/LineString.h, source/headers/geos/geom/Point.h, source/headers/geos/geom/Polygon.h: Changed Geometry::envelope - member to be of type auto_ptr. Changed - computeEnvelopeInternal() signater to return auto_ptr - git-svn-id: http://svn.osgeo.org/geos/trunk@1427 + member to be of type auto_ptr. Changed + computeEnvelopeInternal() signater to return auto_ptr git-svn-id: http://svn.osgeo.org/geos/trunk@1427 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli @@ -26329,50 +29447,43 @@ source/headers/geos/geom/Point.h, tests/unit/geom/LineStringTest.cpp, tests/unit/geom/PointTest.cpp: Changed LineString::points and Point::coordinates to be wrapped in - an auto_ptr<>. This should close bugs #86 and #89 git-svn-id: - http://svn.osgeo.org/geos/trunk@1426 + an auto_ptr<>. This should close bugs #86 and #89 git-svn-id: http://svn.osgeo.org/geos/trunk@1426 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * ChangeLog: First manual edit (will likely update later tonight... - with changes grouped by date) git-svn-id: - http://svn.osgeo.org/geos/trunk@1425 + with changes grouped by date) git-svn-id: http://svn.osgeo.org/geos/trunk@1425 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * tests/xmltester/TestInteriorPoint.xml: Re-synced with JTS version - (so this actually *was* a bug :) git-svn-id: - http://svn.osgeo.org/geos/trunk@1424 + (so this actually *was* a bug :) git-svn-id: http://svn.osgeo.org/geos/trunk@1424 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * source/geom/Geometry.cpp: Fixed a bug introduced by previous - commit in getCentroid() git-svn-id: - http://svn.osgeo.org/geos/trunk@1423 + commit in getCentroid() git-svn-id: http://svn.osgeo.org/geos/trunk@1423 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * source/geom/Geometry.cpp: Fixed getCentroid(Coordinate&) to round - using PrecisionModel all unit tests succeed. git-svn-id: - http://svn.osgeo.org/geos/trunk@1422 + using PrecisionModel all unit tests succeed. git-svn-id: http://svn.osgeo.org/geos/trunk@1422 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * source/headers/geos/io/WKTReader.h, source/headers/geos/io/WKTReader.inl: Added default ctor for - WKTReader (using GeometryFactory's default instance) git-svn-id: - http://svn.osgeo.org/geos/trunk@1421 + WKTReader (using GeometryFactory's default instance) git-svn-id: http://svn.osgeo.org/geos/trunk@1421 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli - * tools/geos-config.in: Removed INLINE flags from geos-config --libs - git-svn-id: http://svn.osgeo.org/geos/trunk@1420 + * tools/geos-config.in: Removed INLINE flags from geos-config --libs git-svn-id: http://svn.osgeo.org/geos/trunk@1420 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli @@ -26381,8 +29492,7 @@ source/headers/geos/geom/GeometryFactory.h, source/io/Unload.cpp: Added GeometryFactory::defaultInstance() Made Geometry::INTERNAL_GEOMETRY_FACTORY an alias for it removed last - deletion from Unload::Release class git-svn-id: - http://svn.osgeo.org/geos/trunk@1419 + deletion from Unload::Release class git-svn-id: http://svn.osgeo.org/geos/trunk@1419 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli @@ -26398,16 +29508,14 @@ source/inlines.cpp, source/io/ByteOrderDataInStream.cpp, source/io/WKTReader.cpp, source/operation/overlay/OverlayOp.cpp: Added inline-replicator implementation files to make sure functions - in .inl files are still available out-of-line. A side effect is this - should fix MingW build. git-svn-id: - http://svn.osgeo.org/geos/trunk@1418 + in .inl files are still available out-of-line. A side effect is + this should fix MingW build. git-svn-id: http://svn.osgeo.org/geos/trunk@1418 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Sandro Santilli * tests/unit/algorithm/PointLocatorTest.cpp: Uncommented required - Geometry.h include (for use in auto_ptr) git-svn-id: - http://svn.osgeo.org/geos/trunk@1417 + Geometry.h include (for use in auto_ptr) git-svn-id: http://svn.osgeo.org/geos/trunk@1417 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-10 Mateusz Loskot @@ -26422,43 +29530,37 @@ tests/unit/geom/MultiPointTest.cpp, tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Added new test for UniqueCoordinateArrayFilter class. Small fixes related to - signed/unsigned comparison. git-svn-id: - http://svn.osgeo.org/geos/trunk@1416 + signed/unsigned comparison. git-svn-id: http://svn.osgeo.org/geos/trunk@1416 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot - * doc/example.cpp: Small fixes in doc/example.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@1413 + * doc/example.cpp: Small fixes in doc/example.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@1413 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot * tests/xmltester/markup/MarkupSTL.cpp: Removed redundant semicolons - from xmltester sources. git-svn-id: - http://svn.osgeo.org/geos/trunk@1412 + from xmltester sources. git-svn-id: http://svn.osgeo.org/geos/trunk@1412 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot * tests/xmltester/markup/MarkupSTL.cpp: Removed redundant semicolon - reported by g++ -pedantic. git-svn-id: - http://svn.osgeo.org/geos/trunk@1411 + reported by g++ -pedantic. git-svn-id: http://svn.osgeo.org/geos/trunk@1411 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot * source/operation/valid/SweeplineNestedRingTester.cpp: Removed - redundant semicolon reported by g++ -pedantic. git-svn-id: - http://svn.osgeo.org/geos/trunk@1410 + redundant semicolon reported by g++ -pedantic. git-svn-id: http://svn.osgeo.org/geos/trunk@1410 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/geom/IntersectionMatrixTest.cpp: Added Unit Test for - IntersectionMatrix class. git-svn-id: - http://svn.osgeo.org/geos/trunk@1409 + IntersectionMatrix class. git-svn-id: http://svn.osgeo.org/geos/trunk@1409 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot @@ -26466,75 +29568,62 @@ * source/headers/geos/geom/IntersectionMatrix.h: [SORRY] Added comments for doxygen based on JTS docs. Added row/col dimension consts. Added asserts in functions to check if given row/col is in - range. git-svn-id: http://svn.osgeo.org/geos/trunk@1408 + range. git-svn-id: http://svn.osgeo.org/geos/trunk@1408 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-09 Mateusz Loskot * source/geom/IntersectionMatrix.cpp: Added comments for doxygen based on JTS docs. Added row/col dimension consts. Added asserts in - functions to check if given row/col is in range. git-svn-id: - http://svn.osgeo.org/geos/trunk@1407 + functions to check if given row/col is in range. git-svn-id: http://svn.osgeo.org/geos/trunk@1407 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-08 Mateusz Loskot * tests/tut/tut.h, tests/tut/tut_reporter.h, tests/tut/tut_restartable.h: Added copyright notice to TUT files. - Small cleaning. git-svn-id: http://svn.osgeo.org/geos/trunk@1406 + Small cleaning. git-svn-id: http://svn.osgeo.org/geos/trunk@1406 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-08 Sandro Santilli - * source/geomgraph/EdgeEnd.cpp: Added assertion git-svn-id: - http://svn.osgeo.org/geos/trunk@1405 + * source/geomgraph/EdgeEnd.cpp: Added assertion git-svn-id: http://svn.osgeo.org/geos/trunk@1405 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-08 Sandro Santilli * source/geomgraph/NodeMap.cpp: assertion checking, mergeLabel() - call fix (bug#91) git-svn-id: http://svn.osgeo.org/geos/trunk@1404 + call fix (bug#91) git-svn-id: http://svn.osgeo.org/geos/trunk@1404 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * source/geomgraph/PlanarGraph.cpp, source/headers/geos/geomgraph/PlanarGraph.h: Port info, doxygen - comments, assertion checking git-svn-id: - http://svn.osgeo.org/geos/trunk@1403 + comments, assertion checking git-svn-id: http://svn.osgeo.org/geos/trunk@1403 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * source/geomgraph/Node.cpp, source/headers/geos/geomgraph/Node.h: Port info, doxygen comments, testInvariant(), many assertionss, - handling of the NULL EdgeEndStar member git-svn-id: - http://svn.osgeo.org/geos/trunk@1402 + handling of the NULL EdgeEndStar member git-svn-id: http://svn.osgeo.org/geos/trunk@1402 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Use of - auto_ptr<> to prevent confusing leaks in tester git-svn-id: - http://svn.osgeo.org/geos/trunk@1401 - 5242fede-7e19-0410-aef8-94bd7d2200fb - -2006-04-07 Mateusz Loskot - - * tests/tut/tut_reporter.h: Fixed annoying warnings from TUT. - git-svn-id: http://svn.osgeo.org/geos/trunk@1400 + auto_ptr<> to prevent confusing leaks in tester git-svn-id: http://svn.osgeo.org/geos/trunk@1401 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot - * : Fixed line-ends to LF. git-svn-id: - http://svn.osgeo.org/geos/trunk@1399 + * tests/tut/tut_reporter.h: Fixed annoying warnings from TUT. git-svn-id: http://svn.osgeo.org/geos/trunk@1400 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot - * tests/unit/geom/PolygonTest.cpp: Uncommented test nr 38 in - PolygonTest.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@1398 + * : Fixed line-ends to LF. git-svn-id: http://svn.osgeo.org/geos/trunk@1399 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot @@ -26545,16 +29634,14 @@ tests/unit/geom/MultiPolygonTest.cpp, tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, tests/unit/geos_unit.cpp: Added java_math_round() function for - Asymmetric Arithmetic Rounding. Small fixes in Unit Tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@1397 + Asymmetric Arithmetic Rounding. Small fixes in Unit Tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1397 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot * tests/unit/geom/GeometryFactoryTest.cpp, tests/unit/geom/PointTest.cpp: Added test nr 29 to PointTest (JTS - conformance). Removed inform() calls from GeometryFactoryTest. - git-svn-id: http://svn.osgeo.org/geos/trunk@1396 + conformance). Removed inform() calls from GeometryFactoryTest. git-svn-id: http://svn.osgeo.org/geos/trunk@1396 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli @@ -26571,52 +29658,47 @@ source/io/WKTWriter.cpp, source/operation/valid/IsValidOp.cpp, source/operation/valid/RepeatedPointTester.cpp: Geometry::getNumGeometries() changed to return 'unsigned int' rather - then 'int' git-svn-id: http://svn.osgeo.org/geos/trunk@1395 + then 'int' git-svn-id: http://svn.osgeo.org/geos/trunk@1395 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * source/algorithm/LineIntersector.cpp: kept isInSegmentEnvelopes() - check even when not debugging git-svn-id: - http://svn.osgeo.org/geos/trunk@1394 + check even when not debugging git-svn-id: http://svn.osgeo.org/geos/trunk@1394 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli - * source/precision/EnhancedPrecisionOp.cpp: Debugging lines - git-svn-id: http://svn.osgeo.org/geos/trunk@1393 + * source/precision/EnhancedPrecisionOp.cpp: Debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1393 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * source/headers/geos/precision/CommonBitsRemover.h: made addCommonBits/removeCommonBits interface consistent, doxygen - comments git-svn-id: http://svn.osgeo.org/geos/trunk@1392 + comments git-svn-id: http://svn.osgeo.org/geos/trunk@1392 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli * source/precision/CommonBitsRemover.cpp: debugging lines, - assertions git-svn-id: http://svn.osgeo.org/geos/trunk@1391 + assertions git-svn-id: http://svn.osgeo.org/geos/trunk@1391 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Sandro Santilli - * source/precision/CommonBitsOp.cpp: debugging blocks git-svn-id: - http://svn.osgeo.org/geos/trunk@1390 + * source/precision/CommonBitsOp.cpp: debugging blocks git-svn-id: http://svn.osgeo.org/geos/trunk@1390 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot * tests/unit/Makefile.am, tests/unit/geom/CoordinateTest.cpp: Add - new-line at the EOF some files. git-svn-id: - http://svn.osgeo.org/geos/trunk@1389 + new-line at the EOF some files. git-svn-id: http://svn.osgeo.org/geos/trunk@1389 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot - * .cvsignore: Added new objects to .cvsignore. git-svn-id: - http://svn.osgeo.org/geos/trunk@1388 + * .cvsignore: Added new objects to .cvsignore. git-svn-id: http://svn.osgeo.org/geos/trunk@1388 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot @@ -26626,14 +29708,13 @@ tests/unit/geom/LocationTest.cpp, tests/unit/geom/PointTest.cpp: Added name for anonymous enum in Dimension class (bug). Added missing new-line at the end of source files. Removed CR from line - ends. git-svn-id: http://svn.osgeo.org/geos/trunk@1387 + ends. git-svn-id: http://svn.osgeo.org/geos/trunk@1387 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-07 Mateusz Loskot * tests/unit/geom/Geometry/isRectangleTest.cpp: Adding missing - isRectangleTest.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@1386 + isRectangleTest.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@1386 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot @@ -26654,27 +29735,24 @@ tests/unit/geom/MultiPolygonTest.cpp, tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, tests/unit/geom/TriangleTest.cpp, tests/unit/io/WKBReaderTest.cpp: - Adding new Unit Tests. git-svn-id: - http://svn.osgeo.org/geos/trunk@1385 + Adding new Unit Tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1385 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli - * AUTHORS: Added Mateusz Loskot git-svn-id: - http://svn.osgeo.org/geos/trunk@1384 + * AUTHORS: Added Mateusz Loskot git-svn-id: http://svn.osgeo.org/geos/trunk@1384 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot * tests/unit/algorithm/PointLocatorTest.cpp: [UT Files Renaming] Add - PointLocatorTest.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@1383 + PointLocatorTest.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@1383 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot * tests/unit/io/WKBReader.cpp: [UT Files Renaming] Remove 'io' - tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1382 + tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1382 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot @@ -26682,49 +29760,45 @@ * tests/unit/geom/Envelope.cpp, tests/unit/geom/Geometry/isRectangle.cpp, tests/unit/geom/LineSegment.cpp: [UT Files Renaming] Remove 'geom' - tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1381 + tests. git-svn-id: http://svn.osgeo.org/geos/trunk@1381 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot * tests/unit/algorithm/PointLocator.cpp: [UT Files Renaming] Remove - file PointLocator.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@1380 + file PointLocator.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@1380 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot * tests/unit/geos_unit.cpp: New version of Unit Test runner. Now, - it's more GNU style compatible git-svn-id: - http://svn.osgeo.org/geos/trunk@1379 + it's more GNU style compatible git-svn-id: http://svn.osgeo.org/geos/trunk@1379 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Mateusz Loskot * tests/tut/tut.h, tests/tut/tut_reporter.h: Add inform() target in - tut.h and new callbacks in tut_reporter.h git-svn-id: - http://svn.osgeo.org/geos/trunk@1378 + tut.h and new callbacks in tut_reporter.h git-svn-id: http://svn.osgeo.org/geos/trunk@1378 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/algorithm/LineIntersector.cpp, source/headers/geos/algorithm/LineIntersector.h: Const correctness - for debugging function git-svn-id: - http://svn.osgeo.org/geos/trunk@1377 + for debugging function git-svn-id: http://svn.osgeo.org/geos/trunk@1377 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/headers/geos/util/math.h: Added missing rint_vc() forward - declaration git-svn-id: http://svn.osgeo.org/geos/trunk@1376 + declaration git-svn-id: http://svn.osgeo.org/geos/trunk@1376 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * tests/unit/Makefile.am, tests/unit/index/quadtree/DoubleBitsTest.cpp: Added unit test for - DoubleBits git-svn-id: http://svn.osgeo.org/geos/trunk@1375 + DoubleBits git-svn-id: http://svn.osgeo.org/geos/trunk@1375 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli @@ -26735,41 +29809,38 @@ source/precision/CommonBitsOp.cpp, source/precision/CommonBitsRemover.cpp, source/precision/EnhancedPrecisionOp.cpp: Cleanup in geos::precision - namespace (leaks plugged, auto_ptr use, ...) git-svn-id: - http://svn.osgeo.org/geos/trunk@1374 + namespace (leaks plugged, auto_ptr use, ...) git-svn-id: http://svn.osgeo.org/geos/trunk@1374 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/geomgraph/DirectedEdge.cpp: Added printing of EdgeRing if - available git-svn-id: http://svn.osgeo.org/geos/trunk@1373 + available git-svn-id: http://svn.osgeo.org/geos/trunk@1373 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/headers/geos/operation/valid/ConnectedInteriorTester.h: Added private vector to keep track of allocated MaximalEdgeRings - objects git-svn-id: http://svn.osgeo.org/geos/trunk@1372 + objects git-svn-id: http://svn.osgeo.org/geos/trunk@1372 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli - * source/geomgraph/EdgeEnd.cpp: Fixed output function git-svn-id: - http://svn.osgeo.org/geos/trunk@1371 + * source/geomgraph/EdgeEnd.cpp: Fixed output function git-svn-id: http://svn.osgeo.org/geos/trunk@1371 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/operation/valid/ConnectedInteriorTester.cpp: Delayed - deletion of newly allocated MaximalEdgeRings. Existing 'valid' - operation tests don't should instability with this patch. - git-svn-id: http://svn.osgeo.org/geos/trunk@1370 + deletion of newly allocated MaximalEdgeRings. Existing 'valid' + operation tests don't should instability with this patch. git-svn-id: http://svn.osgeo.org/geos/trunk@1370 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/geom/PrecisionModel.cpp: removed spurious lines from - previous commi git-svn-id: http://svn.osgeo.org/geos/trunk@1369 + previous commi git-svn-id: http://svn.osgeo.org/geos/trunk@1369 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli @@ -26777,36 +29848,31 @@ * source/geom/PrecisionModel.cpp, source/headers/geos/geom/PrecisionModel.h, source/headers/geos/geom/PrecisionModel.inl: Port info, more - debugging lines, doxygen comments git-svn-id: - http://svn.osgeo.org/geos/trunk@1368 + debugging lines, doxygen comments git-svn-id: http://svn.osgeo.org/geos/trunk@1368 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli - * source/geom/GeometryFactory.cpp: More debugging lines - git-svn-id: http://svn.osgeo.org/geos/trunk@1367 + * source/geom/GeometryFactory.cpp: More debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1367 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/io/WKBReader.cpp: Fixed bogus static PrecisionModel - variable in ::readCoordinate(). git-svn-id: - http://svn.osgeo.org/geos/trunk@1366 + variable in ::readCoordinate(). git-svn-id: http://svn.osgeo.org/geos/trunk@1366 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/geomgraph/EdgeRing.cpp, source/headers/geos/geomgraph/EdgeRing.h: Added operator<<, added - pts!=NULL assertion in testInvariant() function git-svn-id: - http://svn.osgeo.org/geos/trunk@1365 + pts!=NULL assertion in testInvariant() function git-svn-id: http://svn.osgeo.org/geos/trunk@1365 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli * source/geomgraph/EdgeEnd.cpp, - source/headers/geos/geomgraph/EdgeEnd.h: Added operator<< - git-svn-id: http://svn.osgeo.org/geos/trunk@1364 + source/headers/geos/geomgraph/EdgeEnd.h: Added operator<< git-svn-id: http://svn.osgeo.org/geos/trunk@1364 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli @@ -26815,113 +29881,100 @@ source/geomgraph/TopologyLocation.cpp, source/headers/geos/geomgraph/Label.h, source/headers/geos/geomgraph/TopologyLocation.h: Doxygen comments, - port info, operator<<, assertion checking git-svn-id: - http://svn.osgeo.org/geos/trunk@1363 + port info, operator<<, assertion checking git-svn-id: http://svn.osgeo.org/geos/trunk@1363 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-06 Sandro Santilli - * source/geomgraph/DirectedEdge.cpp: Fixed bug in ::print() function - git-svn-id: http://svn.osgeo.org/geos/trunk@1362 + * source/geomgraph/DirectedEdge.cpp: Fixed bug in ::print() function git-svn-id: http://svn.osgeo.org/geos/trunk@1362 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * source/headers/geos/geomgraph/Edge.h, source/headers/geos/geomgraph/EdgeRing.h: Moved testInvariant() - methods from private to public, added some comments about them. - git-svn-id: http://svn.osgeo.org/geos/trunk@1361 + methods from private to public, added some comments about them. git-svn-id: http://svn.osgeo.org/geos/trunk@1361 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Removed dead code - git-svn-id: http://svn.osgeo.org/geos/trunk@1360 + * source/operation/overlay/OverlayOp.cpp: Removed dead code git-svn-id: http://svn.osgeo.org/geos/trunk@1360 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * tests/xmltester/markup/MarkupSTL.cpp, tests/xmltester/markup/MarkupSTL.h: Removed annoying warnings from - external source git-svn-id: http://svn.osgeo.org/geos/trunk@1359 + external source git-svn-id: http://svn.osgeo.org/geos/trunk@1359 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * source/geom/Envelope.cpp, source/headers/geos/geom/Envelope.h, source/headers/geos/geom/Envelope.inl: Fixed copy ctor to support - "Null" Envelope copies. Drop init(Envelope&) method. Port info and - various cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@1358 + "Null" Envelope copies. Drop init(Envelope&) method. Port info and + various cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@1358 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * source/geom/LineString.cpp, source/headers/geos/geom/LineString.h: Fixed LineString constructor to ensure deletion of - CoordinateSequence argument on exception throw git-svn-id: - http://svn.osgeo.org/geos/trunk@1357 + CoordinateSequence argument on exception throw git-svn-id: http://svn.osgeo.org/geos/trunk@1357 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * source/headers/geos/util/GEOSException.h: GEOSException derived - from std::exception again, hopefully the correct way now - git-svn-id: http://svn.osgeo.org/geos/trunk@1356 + from std::exception again, hopefully the correct way now git-svn-id: http://svn.osgeo.org/geos/trunk@1356 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-05 Sandro Santilli * source/headers/geos/operation/buffer/RightmostEdgeFinder.h, source/operation/buffer/RightmostEdgeFinder.cpp: Added port - informations and many assertion checking. Fixed bug in - getRightmostSide() method ( a "testing-only" corner case ) - git-svn-id: http://svn.osgeo.org/geos/trunk@1355 + informations and many assertion checking. Fixed bug in + getRightmostSide() method ( a "testing-only" corner case ) git-svn-id: http://svn.osgeo.org/geos/trunk@1355 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/geomgraph/DirectedEdgeStar.cpp: More assertion checking, - less overhead when built with NDEBUG defined git-svn-id: - http://svn.osgeo.org/geos/trunk@1353 + less overhead when built with NDEBUG defined git-svn-id: http://svn.osgeo.org/geos/trunk@1353 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/geomgraph/EdgeEndStar.cpp, source/headers/geos/geomgraph/EdgeEndStar.h: Port info, assertion - checking, indentation git-svn-id: - http://svn.osgeo.org/geos/trunk@1352 + checking, indentation git-svn-id: http://svn.osgeo.org/geos/trunk@1352 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/algorithm/LineIntersector.cpp: Changed NotRepresentableCoordinate exception handler to throw a - TopologyException. This allows further handling. git-svn-id: - http://svn.osgeo.org/geos/trunk@1351 + TopologyException. This allows further handling. git-svn-id: http://svn.osgeo.org/geos/trunk@1351 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/algorithm/HCoordinate.cpp, source/headers/geos/algorithm/HCoordinate.h: Port information + - initialization lists in ctors git-svn-id: - http://svn.osgeo.org/geos/trunk@1350 + initialization lists in ctors git-svn-id: http://svn.osgeo.org/geos/trunk@1350 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/algorithm/HCoordinate.cpp: NotRepresentable condition detected using finite() from rather then using FINITE() - macro. Made ::intersection() body more readable. git-svn-id: - http://svn.osgeo.org/geos/trunk@1349 + macro. Made ::intersection() body more readable. git-svn-id: http://svn.osgeo.org/geos/trunk@1349 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli * source/headers/geos/geom/CoordinateSequence.h: Fixed - applyCoordinateFilter() templated function body git-svn-id: - http://svn.osgeo.org/geos/trunk@1348 + applyCoordinateFilter() templated function body git-svn-id: http://svn.osgeo.org/geos/trunk@1348 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Sandro Santilli @@ -26937,50 +29990,45 @@ source/io/ParseException.cpp, source/operation/overlay/ElevationMatrix.cpp, source/util/GEOSException.cpp: Changed GEOSException hierarchy to be - derived from std::runtime_exception. Removed the - GEOSException::toString redundant method (use ::what() instead) - git-svn-id: http://svn.osgeo.org/geos/trunk@1345 + derived from std::runtime_exception. Removed the + GEOSException::toString redundant method (use ::what() instead) git-svn-id: http://svn.osgeo.org/geos/trunk@1345 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Howard Butler * source/Makefile.vc: Add in changes/missing from previous - rearranging. git-svn-id: http://svn.osgeo.org/geos/trunk@1344 + rearranging. git-svn-id: http://svn.osgeo.org/geos/trunk@1344 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Howard Butler - * capi/geos_c.cpp: GEOS_JTS_PORT is in version.h not platform.h - git-svn-id: http://svn.osgeo.org/geos/trunk@1343 + * capi/geos_c.cpp: GEOS_JTS_PORT is in version.h not platform.h git-svn-id: http://svn.osgeo.org/geos/trunk@1343 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-04 Howard Butler * source/Makefile.vc: remove objects that no longer exist default to - MSVC_VER=1310 git-svn-id: http://svn.osgeo.org/geos/trunk@1342 + MSVC_VER=1310 git-svn-id: http://svn.osgeo.org/geos/trunk@1342 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeEnd.cpp, source/geomgraph/Label.cpp, source/headers/geos/geomgraph/EdgeEnd.h: - Assertion checking, port info, cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1341 + Assertion checking, port info, cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1341 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/headers/geos/operation/GeometryGraphOperation.h, source/operation/GeometryGraphOperation.cpp: - getArgGeometry() parameter type changed from 'int' to 'unsigned - int' - Added port informations - minor assertions checking - minor - cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1340 + int' - Added port informations - minor assertions checking - minor cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1340 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/headers/geos/geom/PrecisionModel.h: Commented out obsoleted - toInternal() method git-svn-id: - http://svn.osgeo.org/geos/trunk@1339 + toInternal() method git-svn-id: http://svn.osgeo.org/geos/trunk@1339 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli @@ -26988,18 +30036,14 @@ * macros/ac_pkg_swig.m4, macros/ac_python_devel.m4, swig/geos.i, swig/python/Makefile.am, swig/python/python.i, swig/ruby/ruby.i, swig/ruby/test/geos_tests.rb, swig/ruby/test/test_helper.rb: Applied - patch by Charlie Savage: - Fixes up the SWIG bindings to use the new - GEOS namespaces - Fixes a bug in the Python m4 macro - Adds the - -modern flag for SWIG when compiling a Python extension - git-svn-id: http://svn.osgeo.org/geos/trunk@1337 + patch by Charlie Savage: - Fixes up the SWIG bindings to use the new GEOS namespaces - Fixes a bug in the Python m4 macro - Adds the -modern flag for SWIG when compiling a Python extension git-svn-id: http://svn.osgeo.org/geos/trunk@1337 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/headers/geos/precision/SimpleGeometryPrecisionReducer.h, source/precision/SimpleGeometryPrecisionReducer.cpp: Made - externally-owned PrecisionModel const git-svn-id: - http://svn.osgeo.org/geos/trunk@1336 + externally-owned PrecisionModel const git-svn-id: http://svn.osgeo.org/geos/trunk@1336 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli @@ -27012,15 +30056,14 @@ source/util/AssertionFailedException.cpp, source/util/IllegalArgumentException.cpp, source/util/Makefile.am, source/util/UnsupportedOperationException.cpp: Removed - implementation files build spec for fully-inlined classes - git-svn-id: http://svn.osgeo.org/geos/trunk@1334 + implementation files build spec for fully-inlined classes git-svn-id: http://svn.osgeo.org/geos/trunk@1334 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/index/strtree/STRtree.cpp, source/noding/snapround/MCIndexSnapRounder.cpp: Added missing - headers git-svn-id: http://svn.osgeo.org/geos/trunk@1333 + headers git-svn-id: http://svn.osgeo.org/geos/trunk@1333 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli @@ -27032,23 +30075,20 @@ source/headers/geos/simplify/Makefile.am, source/simplify/.cvsignore, source/simplify/DouglasPeuckerLineSimplifier.cpp, - source/simplify/Makefile.am: DouglasPeuckerLineSimplifier class port - git-svn-id: http://svn.osgeo.org/geos/trunk@1332 + source/simplify/Makefile.am: DouglasPeuckerLineSimplifier class port git-svn-id: http://svn.osgeo.org/geos/trunk@1332 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/headers/geos/index/strtree/STRtree.h, - source/index/strtree/STRtree.cpp: Added port info, minor cleanups - git-svn-id: http://svn.osgeo.org/geos/trunk@1331 + source/index/strtree/STRtree.cpp: Added port info, minor cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1331 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-04-03 Sandro Santilli * source/headers/geos/index/quadtree/Quadtree.h, source/index/quadtree/Quadtree.cpp: Added port info, cleaned up log - message, minor assertion checking. git-svn-id: - http://svn.osgeo.org/geos/trunk@1330 + message, minor assertion checking. git-svn-id: http://svn.osgeo.org/geos/trunk@1330 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-31 Sandro Santilli @@ -27056,44 +30096,39 @@ * source/geom/GeometryFactory.cpp, source/headers/geos/geom/GeometryFactory.h: A few assertion checking, comments cleanup, use of initialization lists in - constructors, handled NULL parameters. git-svn-id: - http://svn.osgeo.org/geos/trunk@1329 + constructors, handled NULL parameters. git-svn-id: http://svn.osgeo.org/geos/trunk@1329 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-31 Sandro Santilli * NEWS, source/geom/LineString.cpp, source/headers/geos/geom/LineString.h: Added many assertions - checking in LineString implementation. Changed ::getCoordinate() to - return NULL on empty geom. Changed ::get{Start,End}Point() to return - NULL on empty geom. git-svn-id: - http://svn.osgeo.org/geos/trunk@1328 + checking in LineString implementation. Changed ::getCoordinate() to + return NULL on empty geom. Changed ::get{Start,End}Point() to + return NULL on empty geom. git-svn-id: http://svn.osgeo.org/geos/trunk@1328 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-31 Sandro Santilli * source/headers/geos/geom/Geometry.h: Added comment about possible - NULL return from getCoordinate() git-svn-id: - http://svn.osgeo.org/geos/trunk@1327 + NULL return from getCoordinate() git-svn-id: http://svn.osgeo.org/geos/trunk@1327 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-31 Sandro Santilli * source/geom/Geometry.cpp: Fixed NULL-GeometryFactory constructor - to use INTERNAL_GEOMETRY_FACTORY (should fix bug #81) git-svn-id: - http://svn.osgeo.org/geos/trunk@1325 + to use INTERNAL_GEOMETRY_FACTORY (should fix bug #81) git-svn-id: http://svn.osgeo.org/geos/trunk@1325 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-30 Sandro Santilli - * source/headers/geos/io/WKTReader.h: minor cleanup git-svn-id: - http://svn.osgeo.org/geos/trunk@1324 + * source/headers/geos/io/WKTReader.h: minor cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1324 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli * capi/geos_c.cpp: Added missing 'const' in catch std::exception - statements git-svn-id: http://svn.osgeo.org/geos/trunk@1323 + statements git-svn-id: http://svn.osgeo.org/geos/trunk@1323 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli @@ -27103,21 +30138,18 @@ source/headers/geos/geomgraph/GeometryGraph.h, source/headers/geos/geomgraph/GeometryGraph.inl, source/headers/geos/geomgraph/Makefile.am: Moved GeometryGraph - inlines from .h to .inl file git-svn-id: - http://svn.osgeo.org/geos/trunk@1322 + inlines from .h to .inl file git-svn-id: http://svn.osgeo.org/geos/trunk@1322 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli - * tests/xmltester/TestValid.xml: Sync'ed testfile with JTS head - git-svn-id: http://svn.osgeo.org/geos/trunk@1321 + * tests/xmltester/TestValid.xml: Sync'ed testfile with JTS head git-svn-id: http://svn.osgeo.org/geos/trunk@1321 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli * tests/unit/Makefile.am, tests/unit/algorithm/PointLocator.cpp, - tests/unit/io/WKBReader.cpp: Added PointLocator unit test - git-svn-id: http://svn.osgeo.org/geos/trunk@1320 + tests/unit/io/WKBReader.cpp: Added PointLocator unit test git-svn-id: http://svn.osgeo.org/geos/trunk@1320 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli @@ -27128,76 +30160,68 @@ source/operation/valid/ConnectedInteriorTester.cpp, source/operation/valid/IsValidOp.cpp: EdgeRing equipped with Invariant testing function and lots of exceptional assertions. - Removed useless heap allocations, and pointers usages. git-svn-id: - http://svn.osgeo.org/geos/trunk@1319 + Removed useless heap allocations, and pointers usages. git-svn-id: http://svn.osgeo.org/geos/trunk@1319 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli * source/algorithm/MCPointInRing.cpp, source/headers/geos/algorithm/MCPointInRing.h: const correctness, - useless heap allocations removal git-svn-id: - http://svn.osgeo.org/geos/trunk@1318 + useless heap allocations removal git-svn-id: http://svn.osgeo.org/geos/trunk@1318 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-29 Sandro Santilli * source/headers/geos/operation/valid/QuadtreeNestedRingTester.h, source/operation/valid/QuadtreeNestedRingTester.cpp: Removed useless - heap allocations in construction, enforced const correctness - git-svn-id: http://svn.osgeo.org/geos/trunk@1317 + heap allocations in construction, enforced const correctness git-svn-id: http://svn.osgeo.org/geos/trunk@1317 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/io/WKBReader.cpp: Reintroduced rewind of input parameter in - printHEX() [dropped by prev commit] git-svn-id: - http://svn.osgeo.org/geos/trunk@1316 + printHEX() [dropped by prev commit] git-svn-id: http://svn.osgeo.org/geos/trunk@1316 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/headers/geos/geom/GeometryFactory.h: Added note about args - responsibility in GeometryFactory constructor git-svn-id: - http://svn.osgeo.org/geos/trunk@1315 + responsibility in GeometryFactory constructor git-svn-id: http://svn.osgeo.org/geos/trunk@1315 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * tests/unit/io/WKBReader.cpp: swapped assert_equals() args to get - obtained/expected the right way. git-svn-id: - http://svn.osgeo.org/geos/trunk@1314 + obtained/expected the right way. git-svn-id: http://svn.osgeo.org/geos/trunk@1314 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli - * source/io/WKBReader.cpp: Simplified printHEX() implementation - git-svn-id: http://svn.osgeo.org/geos/trunk@1313 + * source/io/WKBReader.cpp: Simplified printHEX() implementation git-svn-id: http://svn.osgeo.org/geos/trunk@1313 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * doc/example.cpp: Added macros for sections skip (useful in - debugging) git-svn-id: http://svn.osgeo.org/geos/trunk@1312 + debugging) git-svn-id: http://svn.osgeo.org/geos/trunk@1312 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * tests/unit/Makefile.am, tests/unit/io/WKBReader.cpp: Added simple - test for WKB reader. git-svn-id: - http://svn.osgeo.org/geos/trunk@1311 + test for WKB reader. git-svn-id: http://svn.osgeo.org/geos/trunk@1311 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/io/WKBReader.cpp: added missing header for non-inlined - builds git-svn-id: http://svn.osgeo.org/geos/trunk@1310 + builds git-svn-id: http://svn.osgeo.org/geos/trunk@1310 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/io/ByteOrderDataInStream.cpp: forgot to add in previous - commit git-svn-id: http://svn.osgeo.org/geos/trunk@1309 + commit git-svn-id: http://svn.osgeo.org/geos/trunk@1309 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli @@ -27207,41 +30231,36 @@ source/headers/geos/io/Makefile.am, source/headers/geos/io/WKBWriter.h, source/io/Makefile.am: ByteOrderDataInStream inlines moved to .inl file, updated - implementation files includes. git-svn-id: - http://svn.osgeo.org/geos/trunk@1308 + implementation files includes. git-svn-id: http://svn.osgeo.org/geos/trunk@1308 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli - * source/io/WKBWriter.cpp: Assertion checking git-svn-id: - http://svn.osgeo.org/geos/trunk@1307 + * source/io/WKBWriter.cpp: Assertion checking git-svn-id: http://svn.osgeo.org/geos/trunk@1307 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineSegment.inl: Headers inclusion fix. - git-svn-id: http://svn.osgeo.org/geos/trunk@1306 + source/headers/geos/geom/LineSegment.inl: Headers inclusion fix. git-svn-id: http://svn.osgeo.org/geos/trunk@1306 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * source/headers/geos/geom/PrecisionModel.h, source/headers/geos/geom/PrecisionModel.inl: Comments cleanup, - system headers included after project headers git-svn-id: - http://svn.osgeo.org/geos/trunk@1305 + system headers included after project headers git-svn-id: http://svn.osgeo.org/geos/trunk@1305 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-28 Sandro Santilli * configure.in: C-API lib version bumped to 1.1.1 (release 2.2.2 - will ship 1.1.0) git-svn-id: http://svn.osgeo.org/geos/trunk@1304 + will ship 1.1.0) git-svn-id: http://svn.osgeo.org/geos/trunk@1304 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp: Fixed small leak. - git-svn-id: http://svn.osgeo.org/geos/trunk@1302 + * source/operation/buffer/OffsetCurveBuilder.cpp: Fixed small leak. git-svn-id: http://svn.osgeo.org/geos/trunk@1302 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli @@ -27249,8 +30268,7 @@ * source/headers/geos/operation/buffer/OffsetCurveBuilder.h, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Cleanups and - explicit initializations git-svn-id: - http://svn.osgeo.org/geos/trunk@1301 + explicit initializations git-svn-id: http://svn.osgeo.org/geos/trunk@1301 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli @@ -27265,22 +30283,20 @@ source/operation/overlay/MinimalEdgeRing.cpp, source/operation/valid/ConnectedInteriorTester.cpp: Added INL file for MinimalEdgeRing, added many debugging blocks, fixed memory leak - in ConnectedInteriorTester (bug #59) git-svn-id: - http://svn.osgeo.org/geos/trunk@1300 + in ConnectedInteriorTester (bug #59) git-svn-id: http://svn.osgeo.org/geos/trunk@1300 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * source/headers/geos/geom/Coordinate.h, source/headers/geos/geom/Coordinate.inl: Commented need for - platform.h include git-svn-id: - http://svn.osgeo.org/geos/trunk@1299 + platform.h include git-svn-id: http://svn.osgeo.org/geos/trunk@1299 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * source/geom/Coordinate.cpp: Added missing platform.h include (for - ISNAN macro) git-svn-id: http://svn.osgeo.org/geos/trunk@1298 + ISNAN macro) git-svn-id: http://svn.osgeo.org/geos/trunk@1298 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli @@ -27288,8 +30304,7 @@ * source/headers/geos/operation/valid/ConnectedInteriorTester.h, source/operation/valid/ConnectedInteriorTester.cpp: Added paranoid assertion checking and a note in header about responsibility of - return from buildMaximalEdgeRings() git-svn-id: - http://svn.osgeo.org/geos/trunk@1297 + return from buildMaximalEdgeRings() git-svn-id: http://svn.osgeo.org/geos/trunk@1297 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli @@ -27297,37 +30312,32 @@ * source/headers/geos/operation/valid/ConsistentAreaTester.h, source/operation/valid/ConsistentAreaTester.cpp: Reduced heap allocations and probability of error by making LineIntersector and - RelateNodeGraph part of ConsistentAreaTester class . git-svn-id: - http://svn.osgeo.org/geos/trunk@1296 + RelateNodeGraph part of ConsistentAreaTester class . git-svn-id: http://svn.osgeo.org/geos/trunk@1296 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * source/operation/valid/TopologyValidationError.cpp: added missing - space in exception message git-svn-id: - http://svn.osgeo.org/geos/trunk@1295 + space in exception message git-svn-id: http://svn.osgeo.org/geos/trunk@1295 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * source/headers/geos/geom/Coordinate.inl: moved external includes - after internal ones git-svn-id: - http://svn.osgeo.org/geos/trunk@1294 + after internal ones git-svn-id: http://svn.osgeo.org/geos/trunk@1294 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/TestValid2-big.xml: - Added final isValid test from JTS (floating version) git-svn-id: - http://svn.osgeo.org/geos/trunk@1293 + Added final isValid test from JTS (floating version) git-svn-id: http://svn.osgeo.org/geos/trunk@1293 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/TestValid2.xml, tests/xmltester/testLeaksBig.xml: Extracted TestValid2.xml from - testLeaksBig.xml (target file is taken from JTS source tree) - git-svn-id: http://svn.osgeo.org/geos/trunk@1292 + testLeaksBig.xml (target file is taken from JTS source tree) git-svn-id: http://svn.osgeo.org/geos/trunk@1292 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli @@ -27335,55 +30345,50 @@ * tests/xmltester/Makefile.am, tests/xmltester/TestValid.xml, tests/xmltester/testLeaksBig.xml: Added TestValid.xml test, taken from JTS source tree, already present in testLeaksBig (from which - tests were removed) git-svn-id: - http://svn.osgeo.org/geos/trunk@1291 + tests were removed) git-svn-id: http://svn.osgeo.org/geos/trunk@1291 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli - * NEWS: added namespaces use and headers split git-svn-id: - http://svn.osgeo.org/geos/trunk@1290 + * NEWS: added namespaces use and headers split git-svn-id: http://svn.osgeo.org/geos/trunk@1290 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * capi/geos_c.h.in: Added note about responsibility of return from - GEOSGeomType() git-svn-id: http://svn.osgeo.org/geos/trunk@1289 + GEOSGeomType() git-svn-id: http://svn.osgeo.org/geos/trunk@1289 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-27 Sandro Santilli * source/geom/CoordinateArraySequence.cpp: Bug #79 - Small fix in - CoordinateArraySequence::toString() git-svn-id: - http://svn.osgeo.org/geos/trunk@1288 + CoordinateArraySequence::toString() git-svn-id: http://svn.osgeo.org/geos/trunk@1288 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli - * configure.in: reverted default of assertion checking git-svn-id: - http://svn.osgeo.org/geos/trunk@1287 + * configure.in: reverted default of assertion checking git-svn-id: http://svn.osgeo.org/geos/trunk@1287 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli * TODO, configure.in, tools/geos-config.in: Inlining enabled by - default, assertion checking disabled by default. Added - --enable-cassert and --disable-inline configure switches. Had + default, assertion checking disabled by default. Added + --enable-cassert and --disable-inline configure switches. Had geos-config --cflags output appropriate inline flag if required - (-DGEOS_INLINE) git-svn-id: http://svn.osgeo.org/geos/trunk@1286 + (-DGEOS_INLINE) git-svn-id: http://svn.osgeo.org/geos/trunk@1286 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli * source/operation/linemerge/LineSequencer.cpp: Changed assert() - with Assert::isTrue in addReverseSubpath git-svn-id: - http://svn.osgeo.org/geos/trunk@1285 + with Assert::isTrue in addReverseSubpath git-svn-id: http://svn.osgeo.org/geos/trunk@1285 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli * source/operation/linemerge/LineSequencer.cpp: Fixed to build with - -DNDEBUG git-svn-id: http://svn.osgeo.org/geos/trunk@1284 + -DNDEBUG git-svn-id: http://svn.osgeo.org/geos/trunk@1284 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli @@ -27470,27 +30475,24 @@ source/noding/SegmentString.cpp, source/noding/snapround/HotPixel.cpp, source/noding/snapround/MCIndexSnapRounder.cpp, - source/operation/distance/DistanceOp.cpp: USE_INLINE => GEOS_INLINE - git-svn-id: http://svn.osgeo.org/geos/trunk@1283 + source/operation/distance/DistanceOp.cpp: USE_INLINE => GEOS_INLINE git-svn-id: http://svn.osgeo.org/geos/trunk@1283 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli - * capi/geos_c.cpp: Bug #77 - Missing platform.h git-svn-id: - http://svn.osgeo.org/geos/trunk@1282 + * capi/geos_c.cpp: Bug #77 - Missing platform.h git-svn-id: http://svn.osgeo.org/geos/trunk@1282 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli * source/noding/snapround/MCIndexPointSnapper.cpp, source/operation/buffer/BufferBuilder.cpp: Bugs #77 and #76: missing - git-svn-id: http://svn.osgeo.org/geos/trunk@1281 + git-svn-id: http://svn.osgeo.org/geos/trunk@1281 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-24 Sandro Santilli - * tests/unit/geos_unit.cpp: Bug #78 - Small fixes and cleaning - git-svn-id: http://svn.osgeo.org/geos/trunk@1280 + * tests/unit/geos_unit.cpp: Bug #78 - Small fixes and cleaning git-svn-id: http://svn.osgeo.org/geos/trunk@1280 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli @@ -27503,8 +30505,7 @@ source/headers/geos/geomgraph/DirectedEdgeStar.h, source/headers/geos/util/TopologyException.h, source/operation/overlay/OverlayOp.cpp: Dropped by-pointer - TopologyException constructor, various small cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1278 + TopologyException constructor, various small cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1278 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli @@ -27515,7 +30516,7 @@ source/index/chain/MonotoneChainBuilder.cpp, source/index/quadtree/Node.cpp, source/index/quadtree/NodeBase.cpp, source/index/quadtree/Quadtree.cpp: Fixed to allow build with - GEOS_DEBUG git-svn-id: http://svn.osgeo.org/geos/trunk@1277 + GEOS_DEBUG git-svn-id: http://svn.osgeo.org/geos/trunk@1277 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli @@ -27530,28 +30531,27 @@ source/headers/geos/geom/MultiLineString.inl, source/headers/geos/geom/MultiPolygon.inl, source/operation/distance/DistanceOp.cpp: Fixes to allow build with - -DUSE_INLINE git-svn-id: http://svn.osgeo.org/geos/trunk@1276 + -DUSE_INLINE git-svn-id: http://svn.osgeo.org/geos/trunk@1276 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli * Makefile.am, configure.in: Temporarly excluded 'swig' extension from distribution, to allow for successufull 'dist' rule and - distributed testing. git-svn-id: - http://svn.osgeo.org/geos/trunk@1275 + distributed testing. git-svn-id: http://svn.osgeo.org/geos/trunk@1275 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli * source/headers/geos/Makefile.am, source/headers/geos/operation/relate/Makefile.am: Fixed automake - files git-svn-id: http://svn.osgeo.org/geos/trunk@1274 + files git-svn-id: http://svn.osgeo.org/geos/trunk@1274 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli * source/headers/geos/operation/predicate/Makefile.am: Fixed missing - backslash git-svn-id: http://svn.osgeo.org/geos/trunk@1273 + backslash git-svn-id: http://svn.osgeo.org/geos/trunk@1273 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-23 Sandro Santilli @@ -27571,8 +30571,7 @@ source/precision/CommonBitsRemover.cpp, source/precision/EnhancedPrecisionOp.cpp, source/precision/SimpleGeometryPrecisionReducer.cpp: precision.h - header split, minor optimizations git-svn-id: - http://svn.osgeo.org/geos/trunk@1272 + header split, minor optimizations git-svn-id: http://svn.osgeo.org/geos/trunk@1272 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27591,22 +30590,21 @@ source/headers/geos/noding/MCIndexNoder.h, source/headers/geos/noding/snapround/MCIndexPointSnapper.h, source/index/bintree/NodeBase.cpp, source/index/chain/Makefile.am, - source/index/chain/{indexMonotoneChain.cpp => MonotoneChain.cpp}, + source/index/chain/MonotoneChain.cpp, source/index/chain/MonotoneChainBuilder.cpp, source/index/chain/MonotoneChainOverlapAction.cpp, source/index/chain/MonotoneChainSelectAction.cpp, + source/index/chain/indexMonotoneChain.cpp, source/noding/MCIndexNoder.cpp, source/noding/snapround/MCIndexPointSnapper.cpp, source/noding/snapround/MCIndexSnapRounder.cpp, source/operation/buffer/BufferBuilder.cpp, - source/operation/valid/IsValidOp.cpp: indexChain.h header split. - git-svn-id: http://svn.osgeo.org/geos/trunk@1271 + source/operation/valid/IsValidOp.cpp: indexChain.h header split. git-svn-id: http://svn.osgeo.org/geos/trunk@1271 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli - * source/headers/geos/geosAlgorithm.h: cleaned up git-svn-id: - http://svn.osgeo.org/geos/trunk@1270 + * source/headers/geos/geosAlgorithm.h: cleaned up git-svn-id: http://svn.osgeo.org/geos/trunk@1270 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27631,10 +30629,9 @@ source/io/WKTWriter.cpp, source/util/CoordinateArrayFiter.cpp, source/util/GeometricShapeFactory.cpp, source/util/UniqueCoordinateArrayFilter.cpp: Removed (almost) all - inclusions of geom.h. Removed obsoleted .cpp files. Fixed a bug in + inclusions of geom.h. Removed obsoleted .cpp files. Fixed a bug in WKTReader not using the provided CoordinateSequence implementation, - optimized out some memory allocations. git-svn-id: - http://svn.osgeo.org/geos/trunk@1269 + optimized out some memory allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@1269 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27650,25 +30647,26 @@ source/headers/geos/index/bintree/NodeBase.h, source/headers/geos/index/bintree/Root.h, source/headers/geos/indexBintree.h, + source/index/bintree/BinTreeInterval.cpp, + source/index/bintree/BinTreeNode.cpp, source/index/bintree/Bintree.cpp, - source/index/bintree/{BinTreeInterval.cpp => Interval.cpp}, - source/index/bintree/Key.cpp, source/index/bintree/Makefile.am, - source/index/bintree/{BinTreeNode.cpp => Node.cpp}, + source/index/bintree/Interval.cpp, source/index/bintree/Key.cpp, + source/index/bintree/Makefile.am, source/index/bintree/Node.cpp, source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, tests/xmltester/XMLTester.cpp: indexBintree.h header split, classes - renamed to match JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@1268 + renamed to match JTS git-svn-id: http://svn.osgeo.org/geos/trunk@1268 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli - * source/index/quadtree/{QuadTreeKey.cpp => Key.cpp}, - source/index/quadtree/Makefile.am, - source/index/quadtree/{QuadTreeNode.cpp => Node.cpp}, - source/index/quadtree/{QuadTreeNodeBase.cpp => NodeBase.cpp}, - source/index/quadtree/{QuadTreeRoot.cpp => Root.cpp}: Filenames - renamed to match class names (matching JTS) git-svn-id: - http://svn.osgeo.org/geos/trunk@1267 + * source/index/quadtree/Key.cpp, source/index/quadtree/Makefile.am, + source/index/quadtree/Node.cpp, source/index/quadtree/NodeBase.cpp, + source/index/quadtree/QuadTreeKey.cpp, + source/index/quadtree/QuadTreeNode.cpp, + source/index/quadtree/QuadTreeNodeBase.cpp, + source/index/quadtree/QuadTreeRoot.cpp, + source/index/quadtree/Root.cpp: Filenames renamed to match class + names (matching JTS) git-svn-id: http://svn.osgeo.org/geos/trunk@1267 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27694,7 +30692,7 @@ source/index/quadtree/QuadTreeRoot.cpp, source/index/quadtree/Quadtree.cpp, source/operation/valid/QuadtreeNestedRingTester.cpp: indexQuadtree.h - split git-svn-id: http://svn.osgeo.org/geos/trunk@1266 + split git-svn-id: http://svn.osgeo.org/geos/trunk@1266 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27715,7 +30713,7 @@ source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp: opPolygonize.h - headers split. git-svn-id: http://svn.osgeo.org/geos/trunk@1265 + headers split. git-svn-id: http://svn.osgeo.org/geos/trunk@1265 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27723,7 +30721,7 @@ * source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Changed back 'unable to find edge to compute depths' from assertion to - TopologyException git-svn-id: http://svn.osgeo.org/geos/trunk@1264 + TopologyException git-svn-id: http://svn.osgeo.org/geos/trunk@1264 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-22 Sandro Santilli @@ -27742,8 +30740,7 @@ source/operation/linemerge/LineMergeEdge.cpp, source/operation/linemerge/LineMergeGraph.cpp, source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp: opLinemerge.h split - git-svn-id: http://svn.osgeo.org/geos/trunk@1263 + source/operation/linemerge/LineSequencer.cpp: opLinemerge.h split git-svn-id: http://svn.osgeo.org/geos/trunk@1263 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27774,20 +30771,20 @@ source/operation/polygonize/polygonizeEdgeRing.cpp, source/planargraph/DirectedEdge.cpp, source/planargraph/DirectedEdgeStar.cpp, - source/planargraph/{planarEdge.cpp => Edge.cpp}, - source/planargraph/Makefile.am, source/planargraph/Node.cpp, - source/planargraph/NodeMap.cpp, - source/planargraph/{planarPlanarGraph.cpp => PlanarGraph.cpp}, + source/planargraph/Edge.cpp, source/planargraph/Makefile.am, + source/planargraph/Node.cpp, source/planargraph/NodeMap.cpp, + source/planargraph/PlanarGraph.cpp, source/planargraph/Subgraph.cpp, source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, source/planargraph/planarDirectedEdge.cpp, source/planargraph/planarDirectedEdgeStar.cpp, + source/planargraph/planarEdge.cpp, source/planargraph/planarGraphComponent.cpp, source/planargraph/planarNode.cpp, source/planargraph/planarNodeMap.cpp, + source/planargraph/planarPlanarGraph.cpp, source/planargraph/planarSubgraph.cpp: planargraph.h header split, - planargraph:: classes renamed to match JTS symbols git-svn-id: - http://svn.osgeo.org/geos/trunk@1262 + planargraph:: classes renamed to match JTS symbols git-svn-id: http://svn.osgeo.org/geos/trunk@1262 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27808,7 +30805,7 @@ source/operation/distance/ConnectedElementPointFilter.cpp, source/operation/distance/DistanceOp.cpp, source/operation/distance/GeometryLocation.cpp: opDistance.h header - split git-svn-id: http://svn.osgeo.org/geos/trunk@1261 + split git-svn-id: http://svn.osgeo.org/geos/trunk@1261 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27824,8 +30821,7 @@ , source/operation/predicate/RectangleContains.cpp, source/operation/predicate/RectangleIntersects.cpp, source/operation/predicate/SegmentIntersectionTester.cpp: - opPredicate.h header split git-svn-id: - http://svn.osgeo.org/geos/trunk@1260 + opPredicate.h header split git-svn-id: http://svn.osgeo.org/geos/trunk@1260 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27852,7 +30848,7 @@ source/operation/relate/RelateNodeGraph.cpp, source/operation/relate/RelateOp.cpp, source/operation/valid/ConsistentAreaTester.cpp: opRelate.h header - split git-svn-id: http://svn.osgeo.org/geos/trunk@1259 + split git-svn-id: http://svn.osgeo.org/geos/trunk@1259 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27860,8 +30856,7 @@ * tests/xmltester/TestInteriorPoint.xml: Changed expected result to the obtained one :) We're not cheating, it's a 2-vertex linestring for which an InteriorPoint is requested, both vertexes are correct - answer (equidistant from centroid). git-svn-id: - http://svn.osgeo.org/geos/trunk@1258 + answer (equidistant from centroid). git-svn-id: http://svn.osgeo.org/geos/trunk@1258 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27886,8 +30881,7 @@ source/algorithm/SimplePointInAreaLocator.cpp, source/algorithm/SimplePointInRing.cpp, source/headers/geos/algorithm/SIRtreePointInRing.h: Cleanups: - headers inclusion and Log section git-svn-id: - http://svn.osgeo.org/geos/trunk@1257 + headers inclusion and Log section git-svn-id: http://svn.osgeo.org/geos/trunk@1257 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27908,15 +30902,13 @@ source/index/strtree/Interval.cpp, source/index/strtree/ItemBoundable.cpp, source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: - indexStrtree.h split git-svn-id: - http://svn.osgeo.org/geos/trunk@1256 + indexStrtree.h split git-svn-id: http://svn.osgeo.org/geos/trunk@1256 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli * source/algorithm/RobustDeterminant.cpp: streamlined header - inclusion, put original copyright on top git-svn-id: - http://svn.osgeo.org/geos/trunk@1255 + inclusion, put original copyright on top git-svn-id: http://svn.osgeo.org/geos/trunk@1255 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-21 Sandro Santilli @@ -27930,12 +30922,12 @@ source/headers/geos/index/sweepline/SweepLineOverlapAction.h, source/headers/geos/indexSweepline.h, source/index/sweepline/Makefile.am, - source/index/sweepline/{indexSweepLineEvent.cpp => - SweepLineEvent.cpp}, source/index/sweepline/SweepLineIndex.cpp, + source/index/sweepline/SweepLineEvent.cpp, + source/index/sweepline/SweepLineIndex.cpp, source/index/sweepline/SweepLineInterval.cpp, + source/index/sweepline/indexSweepLineEvent.cpp, source/operation/valid/SweeplineNestedRingTester.cpp: - indexSweepline.h header split git-svn-id: - http://svn.osgeo.org/geos/trunk@1254 + indexSweepline.h header split git-svn-id: http://svn.osgeo.org/geos/trunk@1254 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli @@ -27958,20 +30950,20 @@ source/io/WKBReader.cpp, source/io/WKBWriter.cpp, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/io/Writer.cpp, source/operation/buffer/BufferSubgraph.cpp: - io.h header split git-svn-id: http://svn.osgeo.org/geos/trunk@1253 + io.h header split git-svn-id: http://svn.osgeo.org/geos/trunk@1253 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/index/quadtree/DoubleBits.cpp: included when - appropriate git-svn-id: http://svn.osgeo.org/geos/trunk@1252 + appropriate git-svn-id: http://svn.osgeo.org/geos/trunk@1252 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/headers/geos/geom/CoordinateSequence.h, source/headers/geos/geom/GeometryFactory.h: Bug #72 - Missing - header git-svn-id: http://svn.osgeo.org/geos/trunk@1251 + header git-svn-id: http://svn.osgeo.org/geos/trunk@1251 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli @@ -27981,8 +30973,7 @@ source/headers/geos/noding/snapround/Makefile.am, source/headers/geos/operation/buffer/Makefile.am, source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/valid/Makefile.am: Fixed geosdir - git-svn-id: http://svn.osgeo.org/geos/trunk@1250 + source/headers/geos/operation/valid/Makefile.am: Fixed geosdir git-svn-id: http://svn.osgeo.org/geos/trunk@1250 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli @@ -28027,22 +31018,19 @@ source/operation/valid/RepeatedPointTester.cpp, source/operation/valid/SimpleNestedRingTester.cpp, source/operation/valid/TopologyValidationError.cpp: spatialindex.h - and opValid.h headers split git-svn-id: - http://svn.osgeo.org/geos/trunk@1249 + and opValid.h headers split git-svn-id: http://svn.osgeo.org/geos/trunk@1249 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli - * macros/ac_python_devel.m4: redirected find stderr to /dev/null - git-svn-id: http://svn.osgeo.org/geos/trunk@1248 + * macros/ac_python_devel.m4: redirected find stderr to /dev/null git-svn-id: http://svn.osgeo.org/geos/trunk@1248 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/operation/overlay/PolygonBuilder.cpp: Changed assertion to TopologyException for the "orphaned" hole case in order to allow for - reduced precision ops to catch the case. git-svn-id: - http://svn.osgeo.org/geos/trunk@1247 + reduced precision ops to catch the case. git-svn-id: http://svn.osgeo.org/geos/trunk@1247 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli @@ -28050,22 +31038,19 @@ * source/headers/geos/operation/overlay/PolygonBuilder.h, source/operation/overlay/PolygonBuilder.cpp: Simplified some privat methods to use refs instead of pointers, added debugging section for - failiures of holes/shells associations git-svn-id: - http://svn.osgeo.org/geos/trunk@1246 + failiures of holes/shells associations git-svn-id: http://svn.osgeo.org/geos/trunk@1246 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/headers/geos/geomgraph/EdgeRing.h: Added note about - responsibility of return from ::toPolygon git-svn-id: - http://svn.osgeo.org/geos/trunk@1245 + responsibility of return from ::toPolygon git-svn-id: http://svn.osgeo.org/geos/trunk@1245 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h: - Added operator<< for Geometry, writing HEXWKB git-svn-id: - http://svn.osgeo.org/geos/trunk@1244 + Added operator<< for Geometry, writing HEXWKB git-svn-id: http://svn.osgeo.org/geos/trunk@1244 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli @@ -28073,43 +31058,38 @@ * source/noding/Octant.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - include git-svn-id: http://svn.osgeo.org/geos/trunk@1243 + include git-svn-id: http://svn.osgeo.org/geos/trunk@1243 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/operation/predicate/RectangleContains.cpp, source/operation/predicate/RectangleIntersects.cpp: Bug #61 - - Disambiguated geom::Polygon use git-svn-id: - http://svn.osgeo.org/geos/trunk@1242 + Disambiguated geom::Polygon use git-svn-id: http://svn.osgeo.org/geos/trunk@1242 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/headers/geos/timeval.h: Bug #69 - Check for macro - WIN32_LEAN_AND_MEAN git-svn-id: - http://svn.osgeo.org/geos/trunk@1241 + WIN32_LEAN_AND_MEAN git-svn-id: http://svn.osgeo.org/geos/trunk@1241 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: Bug #71 - - Missing git-svn-id: - http://svn.osgeo.org/geos/trunk@1240 + Missing git-svn-id: http://svn.osgeo.org/geos/trunk@1240 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/headers/geos/geom/Coordinate.h: Bug #70 - Small fix in fwd - decl. of CoordinateLessThen git-svn-id: - http://svn.osgeo.org/geos/trunk@1239 + decl. of CoordinateLessThen git-svn-id: http://svn.osgeo.org/geos/trunk@1239 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-20 Sandro Santilli * source/geom/GeometryFactory.cpp: Bug #67 - Debugging helpers in - GeometryFactory class git-svn-id: - http://svn.osgeo.org/geos/trunk@1238 + GeometryFactory class git-svn-id: http://svn.osgeo.org/geos/trunk@1238 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-17 Sandro Santilli @@ -28125,14 +31105,13 @@ source/operation/valid/SimpleNestedRingTester.cpp: LineIntersector and PointLocator made complete components of RelateComputer (were statics const pointers before). Reduced inclusions from opRelate.h - and opValid.h, updated .cpp files to allow build. git-svn-id: - http://svn.osgeo.org/geos/trunk@1237 + and opValid.h, updated .cpp files to allow build. git-svn-id: http://svn.osgeo.org/geos/trunk@1237 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-17 Sandro Santilli * tests/xmltester/XMLTester.cpp: Fixed filename normalizer for sql - output git-svn-id: http://svn.osgeo.org/geos/trunk@1236 + output git-svn-id: http://svn.osgeo.org/geos/trunk@1236 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-17 Sandro Santilli @@ -28169,21 +31148,18 @@ source/operation/overlay/PolygonBuilder.cpp: opOverlay.h header splitted. Reduced header inclusions in operation/overlay implementation files. ElevationMatrixFilter code moved from own file - to ElevationMatrix.cpp (ideally a class-private). git-svn-id: - http://svn.osgeo.org/geos/trunk@1235 + to ElevationMatrix.cpp (ideally a class-private). git-svn-id: http://svn.osgeo.org/geos/trunk@1235 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli - * tests/xmltester/linemerge.xml: Added missing testfile - git-svn-id: http://svn.osgeo.org/geos/trunk@1234 + * tests/xmltester/linemerge.xml: Added missing testfile git-svn-id: http://svn.osgeo.org/geos/trunk@1234 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli * tests/unit/Makefile.am, tests/unit/geom/LineSegment.cpp: new unit - test for LineSegment (adding tests would be helpful) git-svn-id: - http://svn.osgeo.org/geos/trunk@1233 + test for LineSegment (adding tests would be helpful) git-svn-id: http://svn.osgeo.org/geos/trunk@1233 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli @@ -28191,34 +31167,30 @@ * source/geom/LineSegment.cpp, source/headers/geos/geom/LineSegment.h, source/headers/geos/geom/LineSegment.inl: obsoleted getCoordinate(), - replaced by operator[] git-svn-id: - http://svn.osgeo.org/geos/trunk@1232 + replaced by operator[] git-svn-id: http://svn.osgeo.org/geos/trunk@1232 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli - * README: Added notes about testing git-svn-id: - http://svn.osgeo.org/geos/trunk@1231 + * README: Added notes about testing git-svn-id: http://svn.osgeo.org/geos/trunk@1231 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli * tests/unit/geos_unit.cpp: Bug #65 - Command line changes and EOL - fixes Unit Test git-svn-id: http://svn.osgeo.org/geos/trunk@1230 + fixes Unit Test git-svn-id: http://svn.osgeo.org/geos/trunk@1230 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli * source/geom/Geometry.cpp: Bug #64 - Not all control paths return a - value in geos::geom::Geometry::getClassSortIndex git-svn-id: - http://svn.osgeo.org/geos/trunk@1229 + value in geos::geom::Geometry::getClassSortIndex git-svn-id: http://svn.osgeo.org/geos/trunk@1229 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli * source/algorithm/LineIntersector.cpp: Bug #63 - Remove - unreferenced local variable warning git-svn-id: - http://svn.osgeo.org/geos/trunk@1228 + unreferenced local variable warning git-svn-id: http://svn.osgeo.org/geos/trunk@1228 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-16 Sandro Santilli @@ -28227,42 +31199,36 @@ tests/tut/tut_restartable.h, tests/unit/Makefile.am, tests/unit/envelope_class_test.cpp, tests/unit/geom/Envelope.cpp, tests/unit/geom/Geometry/isRectangle.cpp, tests/unit/geos_unit.cpp: - Initial unit tests git-svn-id: - http://svn.osgeo.org/geos/trunk@1227 + Initial unit tests git-svn-id: http://svn.osgeo.org/geos/trunk@1227 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/headers/geos/operation/IsSimpleOp.h: Bug #62: 'struct' - CoordinateLessThen in forward declaration git-svn-id: - http://svn.osgeo.org/geos/trunk@1226 + CoordinateLessThen in forward declaration git-svn-id: http://svn.osgeo.org/geos/trunk@1226 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: small cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@1225 + * source/operation/buffer/SubgraphDepthLocater.cpp: small cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1225 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: cleanups in DEBUG lines - git-svn-id: http://svn.osgeo.org/geos/trunk@1224 + * source/operation/buffer/BufferBuilder.cpp: cleanups in DEBUG lines git-svn-id: http://svn.osgeo.org/geos/trunk@1224 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Temporary hack to avoid snapround:: Noders (still using ScaledNoder wrapper) to allow for - buffer_snapround.xml test to succeed git-svn-id: - http://svn.osgeo.org/geos/trunk@1223 + buffer_snapround.xml test to succeed git-svn-id: http://svn.osgeo.org/geos/trunk@1223 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * tests/xmltester/buffer_snapround.xml: Added xml testfile showing - bug in snapround:: noders git-svn-id: - http://svn.osgeo.org/geos/trunk@1222 + bug in snapround:: noders git-svn-id: http://svn.osgeo.org/geos/trunk@1222 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28275,15 +31241,13 @@ source/index/quadtree/QuadTreeKey.cpp, source/index/strtree/STRtree.cpp, source/util/GeometricShapeFactory.cpp: Bug #60 - Missing - header in some files git-svn-id: - http://svn.osgeo.org/geos/trunk@1221 + header in some files git-svn-id: http://svn.osgeo.org/geos/trunk@1221 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp: Changed operator<< to - use operator<< for Nodes git-svn-id: - http://svn.osgeo.org/geos/trunk@1220 + use operator<< for Nodes git-svn-id: http://svn.osgeo.org/geos/trunk@1220 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28291,8 +31255,7 @@ * source/headers/geos/geomgraph/DirectedEdgeStar.h, source/headers/geos/geomgraph/EdgeRing.h, source/headers/geos/geomgraph/index/SweepLineEvent.h: Added missing - forward declarations git-svn-id: - http://svn.osgeo.org/geos/trunk@1219 + forward declarations git-svn-id: http://svn.osgeo.org/geos/trunk@1219 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28316,46 +31279,43 @@ source/geomgraph/index/SimpleSweepLineIntersector.cpp, source/geomgraph/index/SweepLineEvent.cpp, source/geomgraph/index/SweepLineSegment.cpp: streamlined headers - inclusion git-svn-id: http://svn.osgeo.org/geos/trunk@1218 + inclusion git-svn-id: http://svn.osgeo.org/geos/trunk@1218 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/geomgraph/Node.cpp, source/headers/geos/geomgraph/Node.h: - operator<< for Node class git-svn-id: - http://svn.osgeo.org/geos/trunk@1217 + operator<< for Node class git-svn-id: http://svn.osgeo.org/geos/trunk@1217 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/headers/geos/operation/buffer/SubgraphDepthLocater.h, source/operation/buffer/SubgraphDepthLocater.cpp: const correctness, - cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1216 + cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1216 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/EdgeEnd.h: cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1215 + source/headers/geos/geomgraph/EdgeEnd.h: cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1215 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeRing.cpp: - Cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1214 + Cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1214 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: removed leftover - debugging line git-svn-id: http://svn.osgeo.org/geos/trunk@1213 + debugging line git-svn-id: http://svn.osgeo.org/geos/trunk@1213 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli - * source/headers/geos/opBuffer.h: Removed DepthSegment.h include - git-svn-id: http://svn.osgeo.org/geos/trunk@1212 + * source/headers/geos/opBuffer.h: Removed DepthSegment.h include git-svn-id: http://svn.osgeo.org/geos/trunk@1212 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28363,7 +31323,7 @@ * source/headers/geos/operation/buffer/DepthSegment.h, source/headers/geos/operation/buffer/Makefile.am: Removed public DepthSegment definition (moved inside SubgraphDepthLocater - implementation) git-svn-id: http://svn.osgeo.org/geos/trunk@1211 + implementation) git-svn-id: http://svn.osgeo.org/geos/trunk@1211 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28373,48 +31333,44 @@ source/operation/buffer/SubgraphDepthLocater.cpp: DepthSegment class moved inside SubgraphDepthLocator implementaion as it was private to this file in JTS. Also, changed to reduce copies of LineSegment - copies. git-svn-id: http://svn.osgeo.org/geos/trunk@1210 + copies. git-svn-id: http://svn.osgeo.org/geos/trunk@1210 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/headers/geos/operation/buffer/BufferSubgraph.h: doxygen - comments git-svn-id: http://svn.osgeo.org/geos/trunk@1209 + comments git-svn-id: http://svn.osgeo.org/geos/trunk@1209 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/overlay/PolygonBuilder.cpp: debug blocks, dumping - SQL when GEOS_DEBUG > 1 git-svn-id: - http://svn.osgeo.org/geos/trunk@1208 + SQL when GEOS_DEBUG > 1 git-svn-id: http://svn.osgeo.org/geos/trunk@1208 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: more debugging lines, - with two levels of debugging handled git-svn-id: - http://svn.osgeo.org/geos/trunk@1207 + with two levels of debugging handled git-svn-id: http://svn.osgeo.org/geos/trunk@1207 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp: comments cleanup, changed computeDepths to use a list<> rather then a vector - (performance related) git-svn-id: - http://svn.osgeo.org/geos/trunk@1206 + (performance related) git-svn-id: http://svn.osgeo.org/geos/trunk@1206 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * doc/Doxyfile.in: Fixed to allow doxygen runs from external - builddir git-svn-id: http://svn.osgeo.org/geos/trunk@1205 + builddir git-svn-id: http://svn.osgeo.org/geos/trunk@1205 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli * source/headers/geos/noding/SegmentString.inl, - source/headers/geos/noding/SimpleNoder.h: streamlined header usage - git-svn-id: http://svn.osgeo.org/geos/trunk@1204 + source/headers/geos/noding/SimpleNoder.h: streamlined header usage git-svn-id: http://svn.osgeo.org/geos/trunk@1204 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli @@ -28428,57 +31384,51 @@ source/noding/SimpleNoder.cpp, source/noding/snapround/MCIndexPointSnapper.cpp, source/noding/snapround/SimpleSnapRounder.cpp: streamlined headers - usage git-svn-id: http://svn.osgeo.org/geos/trunk@1203 + usage git-svn-id: http://svn.osgeo.org/geos/trunk@1203 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli - * source/geom/Polygon.cpp: updated port info git-svn-id: - http://svn.osgeo.org/geos/trunk@1202 + * source/geom/Polygon.cpp: updated port info git-svn-id: http://svn.osgeo.org/geos/trunk@1202 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-15 Sandro Santilli - * source/headers/geos/geom/Polygon.h: isSimple doc git-svn-id: - http://svn.osgeo.org/geos/trunk@1201 + * source/headers/geos/geom/Polygon.h: isSimple doc git-svn-id: http://svn.osgeo.org/geos/trunk@1201 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli - * source/headers/geos/util/Assert.h: Removed unrequired include - git-svn-id: http://svn.osgeo.org/geos/trunk@1200 + * source/headers/geos/util/Assert.h: Removed unrequired include git-svn-id: http://svn.osgeo.org/geos/trunk@1200 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli - * source/operation/buffer/BufferSubgraph.cpp: cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1199 + * source/operation/buffer/BufferSubgraph.cpp: cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1199 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli * source/headers/geos/opOverlay.h, source/operation/overlay/MaximalEdgeRing.cpp: comments cleanup, - integrity checks git-svn-id: http://svn.osgeo.org/geos/trunk@1198 + integrity checks git-svn-id: http://svn.osgeo.org/geos/trunk@1198 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli * source/operation/overlay/PolygonBuilder.cpp: oops, GEOS_DEBUG - default to 0 git-svn-id: http://svn.osgeo.org/geos/trunk@1197 + default to 0 git-svn-id: http://svn.osgeo.org/geos/trunk@1197 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli * source/headers/geos/opOverlay.h, - source/operation/overlay/PolygonBuilder.cpp: comments cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@1196 + source/operation/overlay/PolygonBuilder.cpp: comments cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1196 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli - * source/geomgraph/Edge.cpp: removed endline from printing funx - git-svn-id: http://svn.osgeo.org/geos/trunk@1195 + * source/geomgraph/Edge.cpp: removed endline from printing funx git-svn-id: http://svn.osgeo.org/geos/trunk@1195 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28486,8 +31436,7 @@ * source/headers/geos/operation/buffer/BufferBuilder.h, source/operation/buffer/BufferBuilder.cpp: changed buildSubgraphs signature to use refs rather then pointers, made it const-correct. - Reduced heap allocations in createSubgraphs() git-svn-id: - http://svn.osgeo.org/geos/trunk@1194 + Reduced heap allocations in createSubgraphs() git-svn-id: http://svn.osgeo.org/geos/trunk@1194 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28495,7 +31444,7 @@ * source/geomgraph/PlanarGraph.cpp, source/headers/geos/geomgraph/PlanarGraph.h: Added PlanarGraph::getNodes(vector&) func, to reduce useless heap - allocations git-svn-id: http://svn.osgeo.org/geos/trunk@1193 + allocations git-svn-id: http://svn.osgeo.org/geos/trunk@1193 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28504,7 +31453,7 @@ source/geom/CoordinateArraySequence.cpp, source/geomgraph/DirectedEdge.cpp, source/geomgraph/Edge.cpp, source/geomgraph/Node.cpp: Cleaned up toString funx (more WKT - friendly) git-svn-id: http://svn.osgeo.org/geos/trunk@1192 + friendly) git-svn-id: http://svn.osgeo.org/geos/trunk@1192 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28513,8 +31462,7 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferSubgraph.cpp, source/operation/overlay/PolygonBuilder.cpp: operator<< for - BufferSubgraph, more debugging calls git-svn-id: - http://svn.osgeo.org/geos/trunk@1191 + BufferSubgraph, more debugging calls git-svn-id: http://svn.osgeo.org/geos/trunk@1191 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28558,8 +31506,7 @@ source/noding/snapround/MCIndexSnapRounder.cpp, source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferOp.cpp: Headers split: - geomgraphindex.h, nodingSnapround.h git-svn-id: - http://svn.osgeo.org/geos/trunk@1190 + geomgraphindex.h, nodingSnapround.h git-svn-id: http://svn.osgeo.org/geos/trunk@1190 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28567,19 +31514,19 @@ * source/geomgraph/Edge.cpp, source/geomgraph/EdgeList.cpp, source/headers/geos/geomgraph/Edge.h, source/headers/geos/geomgraph/EdgeList.h: Added operator<< for Edge - and EdgeList git-svn-id: http://svn.osgeo.org/geos/trunk@1189 + and EdgeList git-svn-id: http://svn.osgeo.org/geos/trunk@1189 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli * source/headers/geos/operation/buffer/Makefile.am: Fixed include - filenames git-svn-id: http://svn.osgeo.org/geos/trunk@1188 + filenames git-svn-id: http://svn.osgeo.org/geos/trunk@1188 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Reduced 'buffer' headers - inclusion git-svn-id: http://svn.osgeo.org/geos/trunk@1187 + inclusion git-svn-id: http://svn.osgeo.org/geos/trunk@1187 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-14 Sandro Santilli @@ -28602,14 +31549,13 @@ source/operation/buffer/OffsetCurveSetBuilder.cpp, source/operation/buffer/RightmostEdgeFinder.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: opBuffer.h split, - streamlined headers in some (not all) files in operation/buffer/ - git-svn-id: http://svn.osgeo.org/geos/trunk@1186 + streamlined headers in some (not all) files in operation/buffer/ git-svn-id: http://svn.osgeo.org/geos/trunk@1186 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-13 Sandro Santilli * source/headers/geos/geom/LineSegment.h: Added missing forward - declarations git-svn-id: http://svn.osgeo.org/geos/trunk@1185 + declarations git-svn-id: http://svn.osgeo.org/geos/trunk@1185 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-13 Sandro Santilli @@ -28618,8 +31564,7 @@ source/geom/CoordinateSequenceFactory.cpp, source/geom/Geometry.cpp, source/geom/GeometryComponentFilter.cpp, source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/Triangle.cpp: Streamlined headers inclusion. - git-svn-id: http://svn.osgeo.org/geos/trunk@1184 + source/geom/Triangle.cpp: Streamlined headers inclusion. git-svn-id: http://svn.osgeo.org/geos/trunk@1184 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-13 Sandro Santilli @@ -28628,29 +31573,26 @@ source/noding/ScaledNoder.cpp: Fixed bug in ScaledNoder scaling mechanism (hugly code, due to CoordinateSequence visitor pattern design). Tests are still failing so this possibly needs some other - fix. Streamlined includes by implementation file. git-svn-id: - http://svn.osgeo.org/geos/trunk@1183 + fix. Streamlined includes by implementation file. git-svn-id: http://svn.osgeo.org/geos/trunk@1183 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-13 Sandro Santilli * source/headers/geos/noding/SegmentString.h: Added missing forward - declarations git-svn-id: http://svn.osgeo.org/geos/trunk@1182 + declarations git-svn-id: http://svn.osgeo.org/geos/trunk@1182 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-13 Sandro Santilli * source/headers/geos/geom/CoordinateFilter.h: Added comment about - possible refactoring git-svn-id: - http://svn.osgeo.org/geos/trunk@1181 + possible refactoring git-svn-id: http://svn.osgeo.org/geos/trunk@1181 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-11 Sandro Santilli * source/headers/geos/opBuffer.h, source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug in - OffsetCurveBuilder::getCoordinates. git-svn-id: - http://svn.osgeo.org/geos/trunk@1180 + OffsetCurveBuilder::getCoordinates. git-svn-id: http://svn.osgeo.org/geos/trunk@1180 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli @@ -28658,66 +31600,61 @@ * source/geomgraph/EdgeRing.cpp: Changed 'found null Directed Edge' from an Assertion to a TopologyException, to give 'precision-reducing' overlay operation a chance to handle it (it - seems to work) git-svn-id: http://svn.osgeo.org/geos/trunk@1179 + seems to work) git-svn-id: http://svn.osgeo.org/geos/trunk@1179 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * source/geomgraph/EdgeRing.cpp: fine-tuned includes, reverted - Assert=>assert due to user-input based failure git-svn-id: - http://svn.osgeo.org/geos/trunk@1178 + Assert=>assert due to user-input based failure git-svn-id: http://svn.osgeo.org/geos/trunk@1178 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * configure.in, tests/unit/Makefile.am, tests/unit/envelope_class_test.cpp: boost detection code fix, first - UTF source for testing purposes git-svn-id: - http://svn.osgeo.org/geos/trunk@1177 + UTF source for testing purposes git-svn-id: http://svn.osgeo.org/geos/trunk@1177 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1176 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1176 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * configure.in: Update configure script to work with new boost.m4 - file git-svn-id: http://svn.osgeo.org/geos/trunk@1175 + file git-svn-id: http://svn.osgeo.org/geos/trunk@1175 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli - * macros/boost.m4: Updated boost detection macro git-svn-id: - http://svn.osgeo.org/geos/trunk@1174 + * macros/boost.m4: Updated boost detection macro git-svn-id: http://svn.osgeo.org/geos/trunk@1174 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * source/index/quadtree/QuadTreeNodeBase.cpp: Added missing - include (bug#56) git-svn-id: - http://svn.osgeo.org/geos/trunk@1173 + include (bug#56) git-svn-id: http://svn.osgeo.org/geos/trunk@1173 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * configure.in, macros/boost.m4, tests/Makefile.am, tests/unit/.cvsignore, tests/unit/Makefile.am: Initial boost - detection code git-svn-id: http://svn.osgeo.org/geos/trunk@1172 + detection code git-svn-id: http://svn.osgeo.org/geos/trunk@1172 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * source/operation/valid/ConnectedInteriorTester.cpp: Comments - cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1171 + cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1171 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * source/Makefile.vc: Bug #58 - Patch to makefile.vc after big - refactoring commit git-svn-id: - http://svn.osgeo.org/geos/trunk@1170 + refactoring commit git-svn-id: http://svn.osgeo.org/geos/trunk@1170 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli @@ -28725,28 +31662,24 @@ * source/operation/buffer/BufferBuilder.cpp, source/operation/overlay/ElevationMatrixFilter.cpp, source/precision/EnhancedPrecisionOp.cpp: Unreferenced exception - objects cleanup (#52) git-svn-id: - http://svn.osgeo.org/geos/trunk@1169 + objects cleanup (#52) git-svn-id: http://svn.osgeo.org/geos/trunk@1169 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli * source/geomgraph/index/SimpleSweepLineIntersector.cpp: Added - missing include (#55) git-svn-id: - http://svn.osgeo.org/geos/trunk@1168 + missing include (#55) git-svn-id: http://svn.osgeo.org/geos/trunk@1168 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-10 Sandro Santilli - * source/geom/Polygon.cpp: Added missing include (#54) - git-svn-id: http://svn.osgeo.org/geos/trunk@1167 + * source/geom/Polygon.cpp: Added missing include (#54) git-svn-id: http://svn.osgeo.org/geos/trunk@1167 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/TestIsValid.xml: - Added isvalid test for latest validop patch git-svn-id: - http://svn.osgeo.org/geos/trunk@1166 + Added isvalid test for latest validop patch git-svn-id: http://svn.osgeo.org/geos/trunk@1166 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli @@ -28755,15 +31688,14 @@ source/operation/overlay/MaximalEdgeRing.cpp, source/operation/valid/ConnectedInteriorTester.cpp: Added memory-friendly MaximalEdgeRing::buildMinimalRings() implementation. - Applied patch to IsValid operation from JTS-1.7.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@1165 + Applied patch to IsValid operation from JTS-1.7.1 git-svn-id: http://svn.osgeo.org/geos/trunk@1165 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * source/headers/geos/opBuffer.h, source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug#33 - (hopefully) git-svn-id: http://svn.osgeo.org/geos/trunk@1164 + (hopefully) git-svn-id: http://svn.osgeo.org/geos/trunk@1164 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli @@ -28970,118 +31902,104 @@ source/operation/valid/RepeatedPointTester.cpp, source/util/Assert.cpp, tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/buffer.xml: - geos::geom namespace definition, first pass at headers split - git-svn-id: http://svn.osgeo.org/geos/trunk@1163 + geos::geom namespace definition, first pass at headers split git-svn-id: http://svn.osgeo.org/geos/trunk@1163 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * tests/xmltester/Makefile.am: Fixed to allow tests from external - build tree (thanks Norman:) git-svn-id: - http://svn.osgeo.org/geos/trunk@1162 + build tree (thanks Norman:) git-svn-id: http://svn.osgeo.org/geos/trunk@1162 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * source/geomgraph/Position.cpp, source/operation/overlay/ElevationMatrixFilter.cpp: Fixed debugging - lines git-svn-id: http://svn.osgeo.org/geos/trunk@1161 + lines git-svn-id: http://svn.osgeo.org/geos/trunk@1161 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Fixed debugging lines, - added missing header git-svn-id: - http://svn.osgeo.org/geos/trunk@1160 + added missing header git-svn-id: http://svn.osgeo.org/geos/trunk@1160 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * source/operation/linemerge/LineMergeGraph.cpp: Fixed debugging - lines git-svn-id: http://svn.osgeo.org/geos/trunk@1159 + lines git-svn-id: http://svn.osgeo.org/geos/trunk@1159 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli * source/index/quadtree/QuadTreeKey.cpp, source/index/quadtree/QuadTreeRoot.cpp, - source/noding/SegmentNodeList.cpp: Fixed debugging lines - git-svn-id: http://svn.osgeo.org/geos/trunk@1158 + source/noding/SegmentNodeList.cpp: Fixed debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1158 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-09 Sandro Santilli - * capi/Makefile.am: Added missing INCLUDES line git-svn-id: - http://svn.osgeo.org/geos/trunk@1157 + * capi/Makefile.am: Added missing INCLUDES line git-svn-id: http://svn.osgeo.org/geos/trunk@1157 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * tests/xmltester/XMLTester.cpp: Leak plugged, tweeked output to be - nice with --sql-output git-svn-id: - http://svn.osgeo.org/geos/trunk@1156 + nice with --sql-output git-svn-id: http://svn.osgeo.org/geos/trunk@1156 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * source/headers/geos/opBuffer.h, source/operation/buffer/OffsetCurveBuilder.cpp: Big deal of heap - allocations reduction git-svn-id: - http://svn.osgeo.org/geos/trunk@1155 + allocations reduction git-svn-id: http://svn.osgeo.org/geos/trunk@1155 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * source/util/Profiler.cpp: Profiler singleton implemented with a - function-static Profiler instance git-svn-id: - http://svn.osgeo.org/geos/trunk@1154 + function-static Profiler instance git-svn-id: http://svn.osgeo.org/geos/trunk@1154 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * tests/xmltester/buffer.xml: addedvalidity test for a case with - invalid input git-svn-id: http://svn.osgeo.org/geos/trunk@1153 + invalid input git-svn-id: http://svn.osgeo.org/geos/trunk@1153 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - --wkb-output and made --sql-output compatible with -v git-svn-id: - http://svn.osgeo.org/geos/trunk@1152 + --wkb-output and made --sql-output compatible with -v git-svn-id: http://svn.osgeo.org/geos/trunk@1152 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli - * tests/xmltester/XMLTester.cpp: table name for sqlOutput normalized - git-svn-id: http://svn.osgeo.org/geos/trunk@1151 + * tests/xmltester/XMLTester.cpp: table name for sqlOutput normalized git-svn-id: http://svn.osgeo.org/geos/trunk@1151 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - --sql-output switch for debugging git-svn-id: - http://svn.osgeo.org/geos/trunk@1150 + --sql-output switch for debugging git-svn-id: http://svn.osgeo.org/geos/trunk@1150 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-07 Sandro Santilli - * tests/xmltester/XMLTester.cpp: verbose validity errors - git-svn-id: http://svn.osgeo.org/geos/trunk@1149 + * tests/xmltester/XMLTester.cpp: verbose validity errors git-svn-id: http://svn.osgeo.org/geos/trunk@1149 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * doc/example.cpp, source/headers/geos/geom.h, source/headers/geos/opRelate.h, tests/xmltester/XMLTester.cpp: - Cascading fixed after Unload definition moved to geos::io namespace - git-svn-id: http://svn.osgeo.org/geos/trunk@1148 + Cascading fixed after Unload definition moved to geos::io namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1148 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * source/headers/geos/unload.h: Fixed Unload class definition - namespace (geos::io) git-svn-id: - http://svn.osgeo.org/geos/trunk@1147 + namespace (geos::io) git-svn-id: http://svn.osgeo.org/geos/trunk@1147 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli @@ -29107,9 +32025,10 @@ source/geomgraph/EdgeRing.cpp, source/geomgraph/GeometryGraph.cpp, source/geomgraph/GraphComponent.cpp, source/geomgraph/PlanarGraph.cpp, source/geomgraph/Quadrant.cpp, + source/headers/geos/LineSegment.inl, source/headers/geos/Makefile.am, source/headers/geos/geom.h, source/headers/geos/geom/GeometryCollection.inl, - source/headers/geos/{ => geom}/LineSegment.inl, + source/headers/geos/geom/LineSegment.inl, source/headers/geos/geomgraph.h, source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, source/headers/geos/opBuffer.h, source/headers/geos/profiler.h, @@ -29154,7 +32073,7 @@ source/util/UnsupportedOperationException.cpp, tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp: geos::util namespace. New GeometryCollection::iterator interface, - many cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@1146 + many cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@1146 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli @@ -29167,96 +32086,85 @@ source/io/WKTWriter.cpp, source/io/Writer.cpp, tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, tests/xmltester/buffer.xml: geos::io - namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1145 + namespace git-svn-id: http://svn.osgeo.org/geos/trunk@1145 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli - * capi/geos_c.cpp: Validity error include Coordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@1143 + * capi/geos_c.cpp: Validity error include Coordinate git-svn-id: http://svn.osgeo.org/geos/trunk@1143 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli - * source/geom/Polygon.cpp: Cleaned up equalsExact git-svn-id: - http://svn.osgeo.org/geos/trunk@1142 + * source/geom/Polygon.cpp: Cleaned up equalsExact git-svn-id: http://svn.osgeo.org/geos/trunk@1142 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * tests/xmltester/XMLTester.cpp: Fixed equalsExact check, and also - reduced tolerance git-svn-id: http://svn.osgeo.org/geos/trunk@1141 + reduced tolerance git-svn-id: http://svn.osgeo.org/geos/trunk@1141 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * source/headers/geos/opValid.h, source/operation/valid/IsValidOp.cpp: TopologyValidationError error - names (enum) renamed to avoid conflicts. git-svn-id: - http://svn.osgeo.org/geos/trunk@1140 + names (enum) renamed to avoid conflicts. git-svn-id: http://svn.osgeo.org/geos/trunk@1140 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli - * tests/xmltester/robustness.xml: Added second case for Union - git-svn-id: http://svn.osgeo.org/geos/trunk@1139 + * tests/xmltester/robustness.xml: Added second case for Union git-svn-id: http://svn.osgeo.org/geos/trunk@1139 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: precision.h => - geos/precision.h (#48) git-svn-id: - http://svn.osgeo.org/geos/trunk@1138 + geos/precision.h (#48) git-svn-id: http://svn.osgeo.org/geos/trunk@1138 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * tests/xmltester/robustness.xml: Added test extracted from data - provided by Guillaume Sueur git-svn-id: - http://svn.osgeo.org/geos/trunk@1137 + provided by Guillaume Sueur git-svn-id: http://svn.osgeo.org/geos/trunk@1137 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * source/headers/geos/geom.h: Dropped unused/unmaintained/platform-problematic serial version info for - classes (#47) git-svn-id: http://svn.osgeo.org/geos/trunk@1136 + classes (#47) git-svn-id: http://svn.osgeo.org/geos/trunk@1136 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * capi/geos_c.cpp: added a compile-time option to get - VERBOSE_EXCEPTION (print args on exceptions) git-svn-id: - http://svn.osgeo.org/geos/trunk@1135 + VERBOSE_EXCEPTION (print args on exceptions) git-svn-id: http://svn.osgeo.org/geos/trunk@1135 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: precision reducing - overlayOp made compile-time optional git-svn-id: - http://svn.osgeo.org/geos/trunk@1134 + overlayOp made compile-time optional git-svn-id: http://svn.osgeo.org/geos/trunk@1134 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-06 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - input and output validity test facilities git-svn-id: - http://svn.osgeo.org/geos/trunk@1133 + input and output validity test facilities git-svn-id: http://svn.osgeo.org/geos/trunk@1133 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-03 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Experimental - precision-reducing overlayOp git-svn-id: - http://svn.osgeo.org/geos/trunk@1132 + precision-reducing overlayOp git-svn-id: http://svn.osgeo.org/geos/trunk@1132 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-03 Sandro Santilli * source/algorithm/InteriorPointLine.cpp, source/headers/geos/geom.h, source/headers/geos/geosAlgorithm.h: - Cleaned up InteriorPointLine class git-svn-id: - http://svn.osgeo.org/geos/trunk@1131 + Cleaned up InteriorPointLine class git-svn-id: http://svn.osgeo.org/geos/trunk@1131 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-03 Sandro Santilli @@ -29375,21 +32283,18 @@ source/util/GeometricShapeFactory.cpp, source/util/Profiler.cpp, tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Removed 'using namespace' from headers, added missing headers in .cpp files, - removed useless includes in headers (bug#46) git-svn-id: - http://svn.osgeo.org/geos/trunk@1130 + removed useless includes in headers (bug#46) git-svn-id: http://svn.osgeo.org/geos/trunk@1130 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/robustness.xml: Added - robustness testcases git-svn-id: - http://svn.osgeo.org/geos/trunk@1129 + robustness testcases git-svn-id: http://svn.osgeo.org/geos/trunk@1129 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Updated copyright notice - git-svn-id: http://svn.osgeo.org/geos/trunk@1128 + * tests/xmltester/XMLTester.cpp: Updated copyright notice git-svn-id: http://svn.osgeo.org/geos/trunk@1128 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli @@ -29400,7 +32305,7 @@ source/precision/CommonBitsRemover.cpp, source/precision/EnhancedPrecisionOp.cpp, source/precision/SimpleGeometryPrecisionReducer.cpp: geos::precision - namespace added git-svn-id: http://svn.osgeo.org/geos/trunk@1127 + namespace added git-svn-id: http://svn.osgeo.org/geos/trunk@1127 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli @@ -29409,8 +32314,7 @@ source/headers/geos/geomgraphindex.h, source/headers/geos/indexSweepline.h, source/index/sweepline/indexSweepLineEvent.cpp: - SweepLineEvent::DELETE=>DELETE_EVENT, INSERT=>INSERT_EVENT (#45) - git-svn-id: http://svn.osgeo.org/geos/trunk@1126 + SweepLineEvent::DELETE=>DELETE_EVENT, INSERT=>INSERT_EVENT (#45) git-svn-id: http://svn.osgeo.org/geos/trunk@1126 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli @@ -29420,13 +32324,12 @@ source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PolygonBuilder.cpp: GeometryGraphOperation::li made a non-static member, and not more a - pointer git-svn-id: http://svn.osgeo.org/geos/trunk@1125 + pointer git-svn-id: http://svn.osgeo.org/geos/trunk@1125 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli - * capi/geos_c.cpp: DEBUG => GEOS_DEBUG [#44] git-svn-id: - http://svn.osgeo.org/geos/trunk@1124 + * capi/geos_c.cpp: DEBUG => GEOS_DEBUG [#44] git-svn-id: http://svn.osgeo.org/geos/trunk@1124 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli @@ -29465,73 +32368,68 @@ source/operation/overlay/PolygonBuilder.cpp, source/operation/polygonize/Polygonizer.cpp: Renamed DEBUG macros to GEOS_DEBUG, all wrapped in #ifndef block to allow global override - (bug#43) git-svn-id: http://svn.osgeo.org/geos/trunk@1123 + (bug#43) git-svn-id: http://svn.osgeo.org/geos/trunk@1123 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * tests/xmltester/XMLTester.cpp: Added assertion in relate test - handler git-svn-id: http://svn.osgeo.org/geos/trunk@1122 + handler git-svn-id: http://svn.osgeo.org/geos/trunk@1122 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * source/geom/IntersectionMatrix.cpp, source/headers/geos/geom.h: Changed IntersectionMatrix funx taking strings to take const string& - instead git-svn-id: http://svn.osgeo.org/geos/trunk@1121 + instead git-svn-id: http://svn.osgeo.org/geos/trunk@1121 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * tests/xmltester/XMLTester.cpp, tests/xmltester/buffer.xml: Added - support for FLOATING_SINGLE precisionmodel in XML tests - git-svn-id: http://svn.osgeo.org/geos/trunk@1120 + support for FLOATING_SINGLE precisionmodel in XML tests git-svn-id: http://svn.osgeo.org/geos/trunk@1120 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * capi/Makefile.am, capi/geos_c.cpp: Removed use of strdup, changed GEOSjtsport() to return const char* instead of char* (is not - advertised in headerfile, so no compatibility problems) - git-svn-id: http://svn.osgeo.org/geos/trunk@1119 + advertised in headerfile, so no compatibility problems) git-svn-id: http://svn.osgeo.org/geos/trunk@1119 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Fixes in DEBUG lines - (bug#42) git-svn-id: http://svn.osgeo.org/geos/trunk@1118 + (bug#42) git-svn-id: http://svn.osgeo.org/geos/trunk@1118 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * source/headers/geos/LineSegment.inl: Changed LineSegment output to - use 'LINESEGMENT' label rather then 'LINESTRING' git-svn-id: - http://svn.osgeo.org/geos/trunk@1117 + use 'LINESEGMENT' label rather then 'LINESTRING' git-svn-id: http://svn.osgeo.org/geos/trunk@1117 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * source/headers/geos/timeval.h: WINCE implmentation of gettimeofday - (bug#40) git-svn-id: http://svn.osgeo.org/geos/trunk@1116 + (bug#40) git-svn-id: http://svn.osgeo.org/geos/trunk@1116 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-02 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: cleaned up - debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1115 + debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1115 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli - * NEWS: added note about getInteriorPoint() possibly returning NULL - git-svn-id: http://svn.osgeo.org/geos/trunk@1114 + * NEWS: added note about getInteriorPoint() possibly returning NULL git-svn-id: http://svn.osgeo.org/geos/trunk@1114 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * capi/geos_c.cpp: Handled new NULL return from - Geometry::getInteriorPoint() git-svn-id: - http://svn.osgeo.org/geos/trunk@1113 + Geometry::getInteriorPoint() git-svn-id: http://svn.osgeo.org/geos/trunk@1113 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli @@ -29540,17 +32438,15 @@ source/algorithm/InteriorPointPoint.cpp, source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/headers/geos/geom.h: Geometry::createPointFromInternalCoord dropped (it's a duplication - of GeometryFactory::createPointFromInternalCoord). Fixed bugs in - InteriorPoint* and getCentroid() inserted by previous commits. - git-svn-id: http://svn.osgeo.org/geos/trunk@1112 + of GeometryFactory::createPointFromInternalCoord). Fixed bugs in + InteriorPoint* and getCentroid() inserted by previous commits. git-svn-id: http://svn.osgeo.org/geos/trunk@1112 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/Makefile.am, tests/xmltester/TestCentroid.xml, tests/xmltester/testLeaksBig.xml: getCentroid() test moved from - testLeaksBig.xml to TestCentroid.xml (synced with JTS-1.7) - git-svn-id: http://svn.osgeo.org/geos/trunk@1111 + testLeaksBig.xml to TestCentroid.xml (synced with JTS-1.7) git-svn-id: http://svn.osgeo.org/geos/trunk@1111 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli @@ -29559,14 +32455,13 @@ tests/xmltester/TestInteriorPoint.xml, tests/xmltester/testLeaksBig.xml: Extracted getInteriorPoint() tests out of testLeaksBig.xml and into TestInteriorPoint.xml (synced with - JTS-1.7). git-svn-id: http://svn.osgeo.org/geos/trunk@1110 + JTS-1.7). git-svn-id: http://svn.osgeo.org/geos/trunk@1110 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/XMLTester.cpp: Handled NULL return from - Geometry::getInteriorPoint() git-svn-id: - http://svn.osgeo.org/geos/trunk@1109 + Geometry::getInteriorPoint() git-svn-id: http://svn.osgeo.org/geos/trunk@1109 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli @@ -29584,35 +32479,31 @@ source/headers/geos/opBuffer.h, source/operation/buffer/SubgraphDepthLocater.cpp, source/operation/distance/DistanceOp.cpp: LineSegment class made - final and optionally (compile-time) inlined. Reduced heap + final and optionally (compile-time) inlined. Reduced heap allocations in Centroid{Area,Line,Point} and - InteriorPoint{Area,Line,Point}. git-svn-id: - http://svn.osgeo.org/geos/trunk@1108 + InteriorPoint{Area,Line,Point}. git-svn-id: http://svn.osgeo.org/geos/trunk@1108 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli - * source/Makefile.vc: Fixed include name (Bug#41) git-svn-id: - http://svn.osgeo.org/geos/trunk@1107 + * source/Makefile.vc: Fixed include name (Bug#41) git-svn-id: http://svn.osgeo.org/geos/trunk@1107 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * source/noding/SegmentNodeList.cpp: Fixed const correctness of - operator<<(ostream&, SegmentNodeList&) [bug#37] git-svn-id: - http://svn.osgeo.org/geos/trunk@1106 + operator<<(ostream&, SegmentNodeList&) [bug#37] git-svn-id: http://svn.osgeo.org/geos/trunk@1106 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli - * source/index/quadtree/Quadtree.cpp: Fixed debug lines (bug#36) - git-svn-id: http://svn.osgeo.org/geos/trunk@1105 + * source/index/quadtree/Quadtree.cpp: Fixed debug lines (bug#36) git-svn-id: http://svn.osgeo.org/geos/trunk@1105 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/Stackwalker.cpp: Fixed missing type specifier - (bug#35) git-svn-id: http://svn.osgeo.org/geos/trunk@1104 + (bug#35) git-svn-id: http://svn.osgeo.org/geos/trunk@1104 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli @@ -29621,21 +32512,18 @@ tests/xmltester/buffer.xml: Used FLOATING precision model in buffer.xml test, added expected results, changed XMLTester.cpp to use a tolerance when comparing expected and obtained results from - buffer operations. git-svn-id: - http://svn.osgeo.org/geos/trunk@1103 + buffer operations. git-svn-id: http://svn.osgeo.org/geos/trunk@1103 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/XMLTester.cpp: Fixed a bug in verbose output - preventing geometry arg 'A' from being properly printed - git-svn-id: http://svn.osgeo.org/geos/trunk@1102 + preventing geometry arg 'A' from being properly printed git-svn-id: http://svn.osgeo.org/geos/trunk@1102 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli - * source/Makefile.vc: Applied patch by Mateusz Loskot (Bug #39) - git-svn-id: http://svn.osgeo.org/geos/trunk@1101 + * source/Makefile.vc: Applied patch by Mateusz Loskot (Bug #39) git-svn-id: http://svn.osgeo.org/geos/trunk@1101 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli @@ -29643,49 +32531,42 @@ * source/headers/geos/opValid.h, source/operation/valid/TopologyValidationError.cpp: Changed static TopologyValidationError::errMsg[] from 'string' to 'const char*' to - reduce dynamic memory allocations. git-svn-id: - http://svn.osgeo.org/geos/trunk@1100 + reduce dynamic memory allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@1100 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * source/headers/geos/unload.h, source/io/Unload.cpp: ctor and dtor - made private and inlined git-svn-id: - http://svn.osgeo.org/geos/trunk@1099 + made private and inlined git-svn-id: http://svn.osgeo.org/geos/trunk@1099 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/XMLTester.cpp: Case insensitive operation names - and geometry arguments names (a/b) git-svn-id: - http://svn.osgeo.org/geos/trunk@1098 + and geometry arguments names (a/b) git-svn-id: http://svn.osgeo.org/geos/trunk@1098 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli * tests/xmltester/XMLTester.cpp: Unrecognized tests always printed - (was only printed when verbose before) git-svn-id: - http://svn.osgeo.org/geos/trunk@1097 + (was only printed when verbose before) git-svn-id: http://svn.osgeo.org/geos/trunk@1097 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-03-01 Sandro Santilli - * source/dirlist.mk: File to be included by Makefile.vc - git-svn-id: http://svn.osgeo.org/geos/trunk@1096 + * source/dirlist.mk: File to be included by Makefile.vc git-svn-id: http://svn.osgeo.org/geos/trunk@1096 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli * source/headers/geos/opBuffer.h, source/operation/buffer/OffsetCurveBuilder.cpp: Fixed in-place - definition of static members in OffsetCurveBuilder (bug#33) - git-svn-id: http://svn.osgeo.org/geos/trunk@1095 + definition of static members in OffsetCurveBuilder (bug#33) git-svn-id: http://svn.osgeo.org/geos/trunk@1095 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Added cctype include (bug #34) - git-svn-id: http://svn.osgeo.org/geos/trunk@1094 + * tests/xmltester/XMLTester.cpp: Added cctype include (bug #34) git-svn-id: http://svn.osgeo.org/geos/trunk@1094 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli @@ -29695,15 +32576,14 @@ source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp, source/operation/buffer/BufferBuilder.cpp: Added a check in SegmentNode::addSplitEdge to prevent attempts to build SegmentString - with less then 2 points. This is a temporary fix for the buffer.xml + with less then 2 points. This is a temporary fix for the buffer.xml assertion failure, temporary as Martin Davis review would really be - needed there. git-svn-id: http://svn.osgeo.org/geos/trunk@1093 + needed there. git-svn-id: http://svn.osgeo.org/geos/trunk@1093 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Fix for VC++ builds (Bug #32) - git-svn-id: http://svn.osgeo.org/geos/trunk@1092 + * tests/xmltester/XMLTester.cpp: Fix for VC++ builds (Bug #32) git-svn-id: http://svn.osgeo.org/geos/trunk@1092 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli @@ -29722,46 +32602,39 @@ source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, tests/xmltester/buffer.xml: Added many assertions and debugging - output hunting for a bug in BufferOp git-svn-id: - http://svn.osgeo.org/geos/trunk@1091 + output hunting for a bug in BufferOp git-svn-id: http://svn.osgeo.org/geos/trunk@1091 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli - * source/geomgraph/Edge.cpp: Fixed a bug in a debugging line - git-svn-id: http://svn.osgeo.org/geos/trunk@1090 + * source/geomgraph/Edge.cpp: Fixed a bug in a debugging line git-svn-id: http://svn.osgeo.org/geos/trunk@1090 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli * source/headers/geos/noding.h: Added missing definition of - IteratedNoder::MAX_ITER, moving it to private access level - git-svn-id: http://svn.osgeo.org/geos/trunk@1089 + IteratedNoder::MAX_ITER, moving it to private access level git-svn-id: http://svn.osgeo.org/geos/trunk@1089 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli - * tests/xmltester/markup/MarkupSTL.cpp: Fixed strchr use (Bug #30) - git-svn-id: http://svn.osgeo.org/geos/trunk@1088 + * tests/xmltester/markup/MarkupSTL.cpp: Fixed strchr use (Bug #30) git-svn-id: http://svn.osgeo.org/geos/trunk@1088 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sandro Santilli - * capi/geos_c.cpp: Fixed typo in GEOSLenght function git-svn-id: - http://svn.osgeo.org/geos/trunk@1087 + * capi/geos_c.cpp: Fixed typo in GEOSLenght function git-svn-id: http://svn.osgeo.org/geos/trunk@1087 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-28 Sean Gillies * NEWS, capi/geos_c.cpp, capi/geos_c.h.in: added GEOSLength(), - GEOSEnvelope() to the C API git-svn-id: - http://svn.osgeo.org/geos/trunk@1085 + GEOSEnvelope() to the C API git-svn-id: http://svn.osgeo.org/geos/trunk@1085 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-27 Sandro Santilli - * tests/xmltester/XMLTester.cpp: More verbose handling of exceptions - git-svn-id: http://svn.osgeo.org/geos/trunk@1076 + * tests/xmltester/XMLTester.cpp: More verbose handling of exceptions git-svn-id: http://svn.osgeo.org/geos/trunk@1076 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-27 Sandro Santilli @@ -29769,8 +32642,7 @@ * source/geomgraph/DirectedEdgeStar.cpp, source/headers/geos/geomgraph.h: DirectedEdgeStar made more safe trough assert(), use of standard iterator and dynamic casts - substituting static ones. git-svn-id: - http://svn.osgeo.org/geos/trunk@1075 + substituting static ones. git-svn-id: http://svn.osgeo.org/geos/trunk@1075 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-27 Sandro Santilli @@ -29783,8 +32655,7 @@ source/headers/geos/opOverlay.h, source/headers/geos/operation.h, source/operation/GeometryGraphOperation.cpp, source/operation/overlay/OverlayOp.cpp: Doxygen comments, a few - inlines and general cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1074 + inlines and general cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1074 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-24 Sandro Santilli @@ -29794,9 +32665,8 @@ source/util/Makefile.am, source/util/math.cpp, tests/xmltester/testLeaksBig.xml: Added Mateusz implementation of round() in a new math.cpp file named sym_round(). Changed use of - rint_vc to sym_round in PrecisionModel. Moved rint_vc to math.cpp - (geos::util namespace), to be renamed to something more meaningful - git-svn-id: http://svn.osgeo.org/geos/trunk@1073 + rint_vc to sym_round in PrecisionModel. Moved rint_vc to math.cpp + (geos::util namespace), to be renamed to something more meaningful git-svn-id: http://svn.osgeo.org/geos/trunk@1073 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-24 Sandro Santilli @@ -29807,16 +32677,12 @@ source/operation/linemerge/LineMergeGraph.cpp, source/operation/linemerge/LineMerger.cpp, source/planargraph/planarEdge.cpp, - source/planargraph/planarNode.cpp, tests/xmltester/Makefile.am: - operator>> for Coordinate, planarNode and planarEdge - Fixed bug - in planarGraphComponent::setMarked - Added linemerge.xml test - (single test, should grow a bit) git-svn-id: - http://svn.osgeo.org/geos/trunk@1072 + source/planargraph/planarNode.cpp, tests/xmltester/Makefile.am: - operator>> for Coordinate, planarNode and planarEdge - Fixed bug in planarGraphComponent::setMarked - Added linemerge.xml test (single test, should grow a bit) git-svn-id: http://svn.osgeo.org/geos/trunk@1072 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-24 Sandro Santilli - * doc/Doxyfile.in: Fixed typo in config file git-svn-id: - http://svn.osgeo.org/geos/trunk@1071 + * doc/Doxyfile.in: Fixed typo in config file git-svn-id: http://svn.osgeo.org/geos/trunk@1071 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-23 Sandro Santilli @@ -29832,17 +32698,13 @@ source/operation/polygonize/polygonizeEdgeRing.cpp, source/operation/valid/TopologyValidationError.cpp, source/planargraph/planarDirectedEdgeStar.cpp, - source/util/GeometricShapeFactory.cpp: - Coordinate::nullCoordinate made private - Simplified Coordinate - inline definitions - LMGeometryComponentFilter definition moved to - LineMerger.cpp file - Misc cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1070 + source/util/GeometricShapeFactory.cpp: - Coordinate::nullCoordinate made private - Simplified Coordinate inline definitions - LMGeometryComponentFilter definition moved to LineMerger.cpp file - Misc cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1070 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-23 Sandro Santilli * tests/xmltester/XMLTester.cpp: Added support for LineMerge tests. - Exception printed on stderr. git-svn-id: - http://svn.osgeo.org/geos/trunk@1069 + Exception printed on stderr. git-svn-id: http://svn.osgeo.org/geos/trunk@1069 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-23 Sandro Santilli @@ -29854,14 +32716,12 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferOp.cpp: Fixed bug in MCIndexNoder constructor making memory checker go crazy, more doxygen-friendly - comments, miscellaneous cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@1068 + comments, miscellaneous cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1068 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-23 Sandro Santilli - * doc/Doxyfile.in: updated to also show undocumented methods - git-svn-id: http://svn.osgeo.org/geos/trunk@1067 + * doc/Doxyfile.in: updated to also show undocumented methods git-svn-id: http://svn.osgeo.org/geos/trunk@1067 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-23 Sandro Santilli @@ -29897,13 +32757,8 @@ source/util/GEOSException.cpp, source/util/IllegalArgumentException.cpp, source/util/Makefile.am, source/util/UnsupportedOperationException.cpp, - tests/xmltester/buffer.xml: - MCIndexPointSnapper - MCIndexSnapRounder - SnapRounding BufferOp - - ScaledNoder - GEOSException hierarchy cleanups - SpatialIndex - memory-friendly query interface - GeometryGraph::getBoundaryNodes - memory-friendly - NodeMap::getBoundaryNodes memory-friendly - - Cleanups in geomgraph::Edge - Added an XML test for snaprounding - buffer (shows leaks, working on it) git-svn-id: - http://svn.osgeo.org/geos/trunk@1066 + tests/xmltester/buffer.xml: - MCIndexPointSnapper - MCIndexSnapRounder - SnapRounding BufferOp - ScaledNoder - GEOSException hierarchy cleanups - SpatialIndex memory-friendly query interface - GeometryGraph::getBoundaryNodes memory-friendly - NodeMap::getBoundaryNodes memory-friendly - Cleanups in geomgraph::Edge - Added an XML test for snaprounding buffer (shows leaks, working on + it) git-svn-id: http://svn.osgeo.org/geos/trunk@1066 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-21 Sandro Santilli @@ -29919,8 +32774,7 @@ source/noding/snapround/MCIndexPointSnapper.cpp, source/noding/snapround/MCIndexSnapRounder.cpp, source/noding/snapround/SimpleSnapRounder.cpp: MCIndexPointSnapper, - MCIndexSnapRounder git-svn-id: - http://svn.osgeo.org/geos/trunk@1065 + MCIndexSnapRounder git-svn-id: http://svn.osgeo.org/geos/trunk@1065 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-20 Sandro Santilli @@ -29932,8 +32786,7 @@ source/index/quadtree/QuadTreeNodeBase.cpp, source/index/quadtree/Quadtree.cpp, source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp: - namespace geos::index - SpatialIndex interface synced - git-svn-id: http://svn.osgeo.org/geos/trunk@1064 + source/index/strtree/STRtree.cpp: - namespace geos::index - SpatialIndex interface synced git-svn-id: http://svn.osgeo.org/geos/trunk@1064 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-20 Sandro Santilli @@ -29978,8 +32831,7 @@ source/io/Unload.cpp, source/noding/MCIndexNoder.cpp, source/noding/snapround/MCIndexPointSnapper.cpp, source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp: - namespaces geos::index::* - Doxygen documentation cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@1063 + source/operation/valid/SweeplineNestedRingTester.cpp: - namespaces geos::index::* - Doxygen documentation cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@1063 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-19 Sandro Santilli @@ -30123,8 +32975,7 @@ source/planargraph/planarSubgraph.cpp, tests/xmltester/XMLTester.cpp: Packages <-> namespaces mapping for most GEOS internal code (uncomplete, but working). Dir-level libs - for index/ subdirs. git-svn-id: - http://svn.osgeo.org/geos/trunk@1062 + for index/ subdirs. git-svn-id: http://svn.osgeo.org/geos/trunk@1062 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-18 Sandro Santilli @@ -30145,37 +32996,30 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: - new CoordinateSequence::applyCoordinateFilter method (slow but - useful) - SegmentString::getCoordinates() doesn't return a clone - anymore. - SegmentString::getCoordinatesRO() obsoleted. - - SegmentString constructor does not promises constness of passed - CoordinateSequence anymore. - NEW ScaledNoder class - Stubs for - MCIndexPointSnapper and MCIndexSnapRounder - Simplified internal - interaces of OffsetCurveBuilder and OffsetCurveSetBuilder - git-svn-id: http://svn.osgeo.org/geos/trunk@1061 + useful) - SegmentString::getCoordinates() doesn't return a clone anymore. - SegmentString::getCoordinatesRO() obsoleted. - SegmentString constructor does not promises constness of passed CoordinateSequence anymore. - NEW ScaledNoder class - Stubs for MCIndexPointSnapper and MCIndexSnapRounder - Simplified internal interaces of OffsetCurveBuilder and + OffsetCurveSetBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@1061 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-16 Sandro Santilli * source/noding/NodingValidator.cpp: Fixed include: "util.h" => - "geos/util.h" git-svn-id: http://svn.osgeo.org/geos/trunk@1060 + "geos/util.h" git-svn-id: http://svn.osgeo.org/geos/trunk@1060 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-16 Sandro Santilli * source/headers/geos/nodingSnapround.h: added include for - round() git-svn-id: http://svn.osgeo.org/geos/trunk@1059 + round() git-svn-id: http://svn.osgeo.org/geos/trunk@1059 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-16 Sandro Santilli - * source/noding/IntersectionAdder.cpp: Missed from last commit - git-svn-id: http://svn.osgeo.org/geos/trunk@1058 + * source/noding/IntersectionAdder.cpp: Missed from last commit git-svn-id: http://svn.osgeo.org/geos/trunk@1058 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-15 Sean Gillies - * capi/geos_c.h.in: added GEOSGeomType git-svn-id: - http://svn.osgeo.org/geos/trunk@1057 + * capi/geos_c.h.in: added GEOSGeomType git-svn-id: http://svn.osgeo.org/geos/trunk@1057 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-15 Sandro Santilli @@ -30185,8 +33029,7 @@ source/headers/geos/noding.h, source/noding/NodingValidator.cpp, source/noding/snapround/SimpleSnapRounder.cpp: NodingValidator synced with JTS-1.7, added CoordinateSequence::operator[] and size() - to easy port maintainance. git-svn-id: - http://svn.osgeo.org/geos/trunk@1056 + to easy port maintainance. git-svn-id: http://svn.osgeo.org/geos/trunk@1056 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-15 Sandro Santilli @@ -30194,8 +33037,7 @@ * source/headers/geos/noding.h, source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp: JTS-1.7 sync for: noding/SegmentNode.cpp noding/SegmentNodeList.cpp - noding/SegmentString.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@1055 + noding/SegmentString.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@1055 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-14 Sandro Santilli @@ -30226,9 +33068,8 @@ source/noding/snapround/SnapRounder.cpp, source/operation/buffer/BufferBuilder.cpp, tests/xmltester/XMLTester.cpp: New SnapRounding code ported from - JTS-1.7 (not complete yet). Buffer op optimized by using new - snaprounding code. Leaks fixed in XMLTester. git-svn-id: - http://svn.osgeo.org/geos/trunk@1054 + JTS-1.7 (not complete yet). Buffer op optimized by using new + snaprounding code. Leaks fixed in XMLTester. git-svn-id: http://svn.osgeo.org/geos/trunk@1054 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Sandro Santilli @@ -30277,50 +33118,44 @@ source/util/UnsupportedOperationException.cpp, tests/xmltester/CTS.cpp, tests/xmltester/SimpleWKTTester.cpp, tests/xmltester/XMLTester.cpp: GEOSException derived from - std::exception; always thrown and cought by const ref. git-svn-id: - http://svn.osgeo.org/geos/trunk@1053 + std::exception; always thrown and cought by const ref. git-svn-id: http://svn.osgeo.org/geos/trunk@1053 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Sean Gillies - * configure.in: incrementing C API patch level git-svn-id: - http://svn.osgeo.org/geos/trunk@1052 + * configure.in: incrementing C API patch level git-svn-id: http://svn.osgeo.org/geos/trunk@1052 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Sean Gillies * capi/geos_c.cpp, capi/geos_c.h.in, capi/geostest.c: added - GEOSArea() to the C API git-svn-id: - http://svn.osgeo.org/geos/trunk@1051 + GEOSArea() to the C API git-svn-id: http://svn.osgeo.org/geos/trunk@1051 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geos/geom.h, source/io/WKBReader.cpp: Added support for SRID in input WKB, - undeprecated Geometry::setSRID and Geometry::getSRID git-svn-id: - http://svn.osgeo.org/geos/trunk@1050 + undeprecated Geometry::setSRID and Geometry::getSRID git-svn-id: http://svn.osgeo.org/geos/trunk@1050 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Frank Warmerdam * source/io/WKBReader.cpp: Botched last fix. Hopefully this is - better. git-svn-id: http://svn.osgeo.org/geos/trunk@1049 + better. git-svn-id: http://svn.osgeo.org/geos/trunk@1049 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Sandro Santilli * ChangeLog, source/operation/linemerge/LineSequencer.cpp: Added - missing include git-svn-id: - http://svn.osgeo.org/geos/trunk@1048 + missing include git-svn-id: http://svn.osgeo.org/geos/trunk@1048 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-09 Frank Warmerdam * ChangeLog, source/io/WKBReader.cpp: Fixed support for consuming WKB for 'POLYGON EMPTY' with numRings==0. - http://bugzilla.remotesensing.org/show_bug.cgi?id=1064 git-svn-id: - http://svn.osgeo.org/geos/trunk@1047 + http://bugzilla.remotesensing.org/show_bug.cgi?id=1064 git-svn-id: http://svn.osgeo.org/geos/trunk@1047 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-08 Sandro Santilli @@ -30332,20 +33167,12 @@ source/headers/geos/opValid.h, source/io/WKTWriter.cpp, source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferOp.cpp, - source/operation/valid/IsValidOp.cpp: - New WKTWriter::toLineString and ::toPoint convenience methods - - New IsValidOp::setSelfTouchingRingFormingHoleValid method - New - Envelope::centre() - New Envelope::intersection(Envelope) - New - Envelope::expandBy(distance, [ydistance]) - New - LineString::reverse() - New MultiLineString::reverse() - New - Geometry::buffer(distance, quadSeg, endCapStyle) - Obsoleted - toInternalGeometry/fromInternalGeometry - More const-correctness in - Buffer "package" git-svn-id: http://svn.osgeo.org/geos/trunk@1046 + source/operation/valid/IsValidOp.cpp: - New WKTWriter::toLineString and ::toPoint convenience methods - New IsValidOp::setSelfTouchingRingFormingHoleValid method - New Envelope::centre() - New Envelope::intersection(Envelope) - New Envelope::expandBy(distance, [ydistance]) - New LineString::reverse() - New MultiLineString::reverse() - New Geometry::buffer(distance, quadSeg, endCapStyle) - Obsoleted toInternalGeometry/fromInternalGeometry - More const-correctness in Buffer "package" git-svn-id: http://svn.osgeo.org/geos/trunk@1046 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-08 Sandro Santilli - * NEWS: Added note about new LineSequencer class git-svn-id: - http://svn.osgeo.org/geos/trunk@1045 + * NEWS: Added note about new LineSequencer class git-svn-id: http://svn.osgeo.org/geos/trunk@1045 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-08 Sandro Santilli @@ -30356,35 +33183,24 @@ source/operation/linemerge/Makefile.am, source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarSubgraph.cpp: - NEW Geometry::applyComponentFilter() templated method - Changed - Geometry::getGeometryN() to take unsigned int and getNumGeometries - to return unsigned int. - Changed planarNode::getDegree() to return - unsigned int. - Added Geometry::NonConstVect typedef - NEW - LineSequencer class - Changed planarDirectedEdgeStar::outEdges from - protected to private - added static templated setVisitedMap to - change Visited flag for all values in a map - Added const versions - of some planarDirectedEdgeStar methods. - Added containers typedefs - for planarDirectedEdgeStar git-svn-id: - http://svn.osgeo.org/geos/trunk@1044 + source/planargraph/planarSubgraph.cpp: - NEW Geometry::applyComponentFilter() templated method - Changed Geometry::getGeometryN() to take unsigned int and + getNumGeometries to return unsigned int. - Changed planarNode::getDegree() to return unsigned int. - Added Geometry::NonConstVect typedef - NEW LineSequencer class - Changed planarDirectedEdgeStar::outEdges from protected to private - added static templated setVisitedMap to change Visited flag for all values in a map - Added const versions of some planarDirectedEdgeStar methods. - Added containers typedefs for planarDirectedEdgeStar git-svn-id: http://svn.osgeo.org/geos/trunk@1044 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-07 Sandro Santilli - * source/Makefile.am: Added missing geomgraph SUBDIR git-svn-id: - http://svn.osgeo.org/geos/trunk@1043 + * source/Makefile.am: Added missing geomgraph SUBDIR git-svn-id: http://svn.osgeo.org/geos/trunk@1043 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-07 Sandro Santilli * tests/xmltester/Makefile.am: Removed TestConvexHull.xml file - (already included in testLeaksBig.xml git-svn-id: - http://svn.osgeo.org/geos/trunk@1042 + (already included in testLeaksBig.xml git-svn-id: http://svn.osgeo.org/geos/trunk@1042 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-06 Sandro Santilli - * tests/.cvsignore: new entry git-svn-id: - http://svn.osgeo.org/geos/trunk@1041 + * tests/.cvsignore: new entry git-svn-id: http://svn.osgeo.org/geos/trunk@1041 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-05 Sandro Santilli @@ -30395,9 +33211,7 @@ source/planargraph/planarDirectedEdgeStar.cpp, source/planargraph/planarNode.cpp, source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp: - New ConnectedSubgraphFinder class. - More iterators returning - methods, inlining and cleanups in planargraph. git-svn-id: - http://svn.osgeo.org/geos/trunk@1040 + source/planargraph/planarPlanarGraph.cpp: - New ConnectedSubgraphFinder class. - More iterators returning methods, inlining and cleanups in planargraph. git-svn-id: http://svn.osgeo.org/geos/trunk@1040 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-04 Sandro Santilli @@ -30405,29 +33219,25 @@ * ChangeLog, NEWS, source/headers/geos/geom.h, source/headers/geos/geomgraph.h, source/headers/geos/planargraph.h, source/planargraph/planarSubgraph.cpp, swig/ruby/Makefile.am, - tests/xmltester/Makefile.am: - Doxygen dox updated - LineStringLT struct moved from geomgraph.h - to geom.h - New planarSubgraph class - Fixed ruby Makefiles to avoid - running tests when disabled - Renamed TESTS variable to XMLTESTS to - not confuse 'make check' rule git-svn-id: - http://svn.osgeo.org/geos/trunk@1039 + tests/xmltester/Makefile.am: - Doxygen dox updated - LineStringLT struct moved from geomgraph.h to geom.h - New planarSubgraph class - Fixed ruby Makefiles to avoid running tests when disabled - Renamed TESTS variable to XMLTESTS to not confuse 'make check' + rule git-svn-id: http://svn.osgeo.org/geos/trunk@1039 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-03 Sandro Santilli * source/geom/util/ShortCircuitedGeometryVisitor.cpp: Added missing - file git-svn-id: http://svn.osgeo.org/geos/trunk@1038 + file git-svn-id: http://svn.osgeo.org/geos/trunk@1038 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-02 Sandro Santilli * source/geom/Polygon.cpp: Fixed bug in isRectangle() failing to - detect rectangles. git-svn-id: - http://svn.osgeo.org/geos/trunk@1037 + detect rectangles. git-svn-id: http://svn.osgeo.org/geos/trunk@1037 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-01 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1036 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1036 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-02-01 Sandro Santilli @@ -30438,57 +33248,50 @@ source/headers/geos/planargraph.h, source/operation/Makefile.am, source/operation/predicate/Makefile.am, source/planargraph/planarGraphComponent.cpp: - Added rectangle-based optimizations of intersects() and contains() - ops - Inlined all planarGraphComponent class git-svn-id: - http://svn.osgeo.org/geos/trunk@1035 + ops - Inlined all planarGraphComponent class git-svn-id: http://svn.osgeo.org/geos/trunk@1035 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli - * source/Makefile.vc: Added DepthSegment object git-svn-id: - http://svn.osgeo.org/geos/trunk@1034 + * source/Makefile.vc: Added DepthSegment object git-svn-id: http://svn.osgeo.org/geos/trunk@1034 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli * swig/geos.i: Fixes error in calling read_hex from scripting - languages. git-svn-id: http://svn.osgeo.org/geos/trunk@1033 + languages. git-svn-id: http://svn.osgeo.org/geos/trunk@1033 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli - * capi/Makefile.in: Erroneusly ended in CVS git-svn-id: - http://svn.osgeo.org/geos/trunk@1032 + * capi/Makefile.in: Erroneusly ended in CVS git-svn-id: http://svn.osgeo.org/geos/trunk@1032 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli * source/operation/predicate/RectangleContains.cpp: Added missing - file from last commits git-svn-id: - http://svn.osgeo.org/geos/trunk@1031 + file from last commits git-svn-id: http://svn.osgeo.org/geos/trunk@1031 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli - * source/bigtest/.cvsignore: Another left-over from cleanups - git-svn-id: http://svn.osgeo.org/geos/trunk@1030 + * source/bigtest/.cvsignore: Another left-over from cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@1030 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli * source/capi/.cvsignore, source/test/.cvsignore: Removed leftover - files in obsoleted dirs git-svn-id: - http://svn.osgeo.org/geos/trunk@1029 + files in obsoleted dirs git-svn-id: http://svn.osgeo.org/geos/trunk@1029 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-31 Sandro Santilli - * Makefile.am, NEWS, README, capi/.cvsignore, {source/capi => - capi}/Makefile.am, capi/Makefile.in, capi/geos_c.cpp, - source/capi/geos_c.cpp => capi/geos_c.cpp.bak, {source/capi => - capi}/geos_c.h.in, {source/capi => capi}/geostest.c, {source/capi - => capi}/test.wkt, configure.in, doc/Doxyfile.in, doc/Makefile.am, - doc/example.cpp, source/.cvsignore, source/Makefile.am, - source/algorithm/.cvsignore, source/algorithm/CGAlgorithms.cpp, + * Makefile.am, NEWS, README, capi/.cvsignore, capi/Makefile.am, + capi/Makefile.in, capi/geos_c.cpp, capi/geos_c.cpp.bak, + capi/geos_c.h.in, capi/geostest.c, capi/test.wkt, configure.in, + doc/Doxyfile.in, doc/Makefile.am, doc/example.cpp, + source/.cvsignore, source/Makefile.am, source/algorithm/.cvsignore, + source/algorithm/CGAlgorithms.cpp, source/algorithm/CentroidArea.cpp, source/algorithm/CentroidLine.cpp, source/algorithm/ConvexHull.cpp, source/algorithm/InteriorPointArea.cpp, @@ -30498,13 +33301,17 @@ source/algorithm/PointLocator.cpp, source/algorithm/SIRtreePointInRing.cpp, source/algorithm/SimplePointInAreaLocator.cpp, - source/examples/CPCLException.cpp, + source/bigtest/GeometryTestFactory.cpp, source/bigtest/Makefile.am, + source/bigtest/TestSweepLineSpeed.cpp, source/bigtest/bigtest.h, + source/capi/Makefile.am, source/capi/geos_c.cpp, + source/capi/geos_c.h.in, source/capi/geostest.c, + source/capi/test.wkt, source/examples/CPCLException.cpp, source/examples/CoordinateSequencesExample.cpp, source/geom/Coordinate.cpp, - source/geom/{DefaultCoordinateSequence.cpp => - CoordinateArraySequence.cpp}, + source/geom/CoordinateArraySequence.cpp, source/geom/CoordinateArraySequenceFactory.cpp, source/geom/CoordinateList.cpp, source/geom/CoordinateSequence.cpp, + source/geom/DefaultCoordinateSequence.cpp, source/geom/DefaultCoordinateSequenceFactory.cpp, source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, source/geom/GeometryFactory.cpp, @@ -30539,9 +33346,10 @@ source/index/chain/MonotoneChainBuilder.cpp, source/index/chain/indexMonotoneChain.cpp, source/io/.cvsignore, source/io/Makefile.am, source/io/Unload.cpp, - source/io/WKTReader.cpp, source/noding/.cvsignore, - source/noding/MCQuadtreeNoder.cpp, source/noding/Makefile.am, - source/noding/NodingValidator.cpp, + source/io/WKTReader.cpp, source/io/markup/.cvsignore, + source/io/markup/MarkupSTL.cpp, source/io/markup/MarkupSTL.h, + source/noding/.cvsignore, source/noding/MCQuadtreeNoder.cpp, + source/noding/Makefile.am, source/noding/NodingValidator.cpp, source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, source/noding/nodingSegmentIntersector.cpp, @@ -30572,7 +33380,7 @@ source/operation/predicate/Makefile.am, source/operation/predicate/RectangleIntersects.cpp, source/operation/predicate/SegmentIntersectionTester.cpp, - source/{io/markup => operation/relate}/.cvsignore, + source/operation/relate/.cvsignore, source/operation/relate/Makefile.am, source/operation/valid/.cvsignore, source/operation/valid/ConnectedInteriorTester.cpp, @@ -30585,186 +33393,156 @@ source/planargraph/.cvsignore, source/planargraph/Makefile.am, source/precision/.cvsignore, source/precision/Makefile.am, source/precision/SimpleGeometryPrecisionReducer.cpp, - source/util/.cvsignore, source/util/CoordinateArrayFiter.cpp, + source/test/CTS.cpp, source/test/Makefile.am, + source/test/SimpleWKTTester.cpp, source/test/Stackwalker.cpp, + source/test/Stackwalker.h, source/test/WKTIn, source/test/WKTOut, + source/test/XMLTester.cpp, source/test/XMLTester.h, + source/test/hexwkb.xml, source/test/test.xml, + source/test/testLeaksBig.xml, source/util/.cvsignore, + source/util/CoordinateArrayFiter.cpp, source/util/GeometricShapeFactory.cpp, source/util/Makefile.am, source/util/UniqueCoordinateArrayFilter.cpp, tests/Makefile.am, - tests/bigtest/.cvsignore, {source => - tests}/bigtest/GeometryTestFactory.cpp, {source => - tests}/bigtest/Makefile.am, {source => - tests}/bigtest/TestSweepLineSpeed.cpp, {source => - tests}/bigtest/bigtest.h, tests/xmltester/.cvsignore, {source/test - => tests/xmltester}/CTS.cpp, {source/test => - tests/xmltester}/Makefile.am, {source/test => - tests/xmltester}/SimpleWKTTester.cpp, {source/test => - tests/xmltester}/Stackwalker.cpp, {source/test => - tests/xmltester}/Stackwalker.h, {source/test => - tests/xmltester}/WKTIn, {source/test => tests/xmltester}/WKTOut, - {source/test => tests/xmltester}/XMLTester.cpp, {source/test => - tests/xmltester}/XMLTester.h, {source/test => - tests/xmltester}/hexwkb.xml, {source/io => - tests/xmltester}/markup/MarkupSTL.cpp, {source/io => - tests/xmltester}/markup/MarkupSTL.h, {source/test => - tests/xmltester}/test.xml, {source/test => - tests/xmltester}/testLeaksBig.xml: - Renamed DefaultCoordinateSequence to CoordinateArraySequence. - - Moved GetNumGeometries() and GetGeometryN() interfaces from - GeometryCollection to Geometry class. - Added getAt(int pos, - Coordinate &to) funtion to CoordinateSequence class. - Reworked - automake scripts to produce a static lib for each subdir and then - link all subsystem's libs togheter - Moved C-API in it's own - top-level dir capi/ - Moved source/bigtest and source/test to - tests/bigtest and test/xmltester - Fixed PointLocator handling of - LinearRings - Changed CoordinateArrayFilter to reduce memory copies - - Changed UniqueCoordinateArrayFilter to reduce memory copies - - Added CGAlgorithms::isPointInRing() version working with - Coordinate::ConstVect type (faster!) - Ported JTS-1.7 version of - ConvexHull with big attention to memory usage optimizations. - - Improved XMLTester output and user interface - geos::geom::util - namespace used for geom/util stuff - Improved memory use in - geos::geom::util::PolygonExtractor - New - ShortCircuitedGeometryVisitor class - New operation/predicate - package git-svn-id: http://svn.osgeo.org/geos/trunk@1028 + tests/bigtest/.cvsignore, tests/bigtest/GeometryTestFactory.cpp, + tests/bigtest/Makefile.am, tests/bigtest/TestSweepLineSpeed.cpp, + tests/bigtest/bigtest.h, tests/xmltester/.cvsignore, + tests/xmltester/CTS.cpp, tests/xmltester/Makefile.am, + tests/xmltester/SimpleWKTTester.cpp, + tests/xmltester/Stackwalker.cpp, tests/xmltester/Stackwalker.h, + tests/xmltester/WKTIn, tests/xmltester/WKTOut, + tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, + tests/xmltester/hexwkb.xml, tests/xmltester/markup/MarkupSTL.cpp, + tests/xmltester/markup/MarkupSTL.h, tests/xmltester/test.xml, + tests/xmltester/testLeaksBig.xml: - Renamed DefaultCoordinateSequence to CoordinateArraySequence. - Moved GetNumGeometries() and GetGeometryN() interfaces from GeometryCollection to Geometry class. - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence + class. - Reworked automake scripts to produce a static lib for each subdir + and then link all subsystem's libs togheter - Moved C-API in it's own top-level dir capi/ - Moved source/bigtest and source/test to tests/bigtest and + test/xmltester - Fixed PointLocator handling of LinearRings - Changed CoordinateArrayFilter to reduce memory copies - Changed UniqueCoordinateArrayFilter to reduce memory copies - Added CGAlgorithms::isPointInRing() version working with Coordinate::ConstVect type (faster!) - Ported JTS-1.7 version of ConvexHull with big attention to memory usage optimizations. - Improved XMLTester output and user interface - geos::geom::util namespace used for geom/util stuff - Improved memory use in geos::geom::util::PolygonExtractor - New ShortCircuitedGeometryVisitor class - New operation/predicate package git-svn-id: http://svn.osgeo.org/geos/trunk@1028 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-30 Frank Warmerdam * source/algorithm/LineIntersector.cpp: yikes! comment out debug - define again git-svn-id: http://svn.osgeo.org/geos/trunk@1027 + define again git-svn-id: http://svn.osgeo.org/geos/trunk@1027 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-30 Frank Warmerdam * ChangeLog, source/algorithm/LineIntersector.cpp: fixed up some - debug messages git-svn-id: http://svn.osgeo.org/geos/trunk@1026 + debug messages git-svn-id: http://svn.osgeo.org/geos/trunk@1026 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-30 Sandro Santilli * macros/ac_python_devel.m4, swig/python/Makefile.am, swig/python/example.py, swig/python/geos.pth, swig/python/python.i, - swig/ruby/test/geos_tests.rb: More patches from Charlie Savage - git-svn-id: http://svn.osgeo.org/geos/trunk@1025 + swig/ruby/test/geos_tests.rb: More patches from Charlie Savage git-svn-id: http://svn.osgeo.org/geos/trunk@1025 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-27 Sandro Santilli * configure.in: Python and Ruby build disable by default (until - we've properly tested it) git-svn-id: - http://svn.osgeo.org/geos/trunk@1024 + we've properly tested it) git-svn-id: http://svn.osgeo.org/geos/trunk@1024 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-27 Sandro Santilli * macros/ac_python_devel.m4, swig/python/Makefile.am, swig/ruby/ruby.i: * Ruby - removes dependency on renames.i file which is no longer - deleted and was removed from CVS last week * Python - fixes - autoconf search for Python include path * Python - fixes autoconf - search for Python lib directory on MingW/windows * Python - adds - python library to link line so that python extension can be built - git-svn-id: http://svn.osgeo.org/geos/trunk@1023 + deleted and was removed from CVS last week * Python - fixes autoconf search for Python include path * Python - fixes autoconf search for Python lib directory on + MingW/windows * Python - adds python library to link line so that python extension + can be built git-svn-id: http://svn.osgeo.org/geos/trunk@1023 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-22 Sandro Santilli * TODO: Added Safe's performance improvement idea for - CoordinateSequence git-svn-id: - http://svn.osgeo.org/geos/trunk@1022 + CoordinateSequence git-svn-id: http://svn.osgeo.org/geos/trunk@1022 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-21 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1021 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@1021 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-21 Sandro Santilli * source/io/ByteOrderValues.cpp: Fixed integer conversion bug - (ported from JTS-1.7). Added last port information. git-svn-id: - http://svn.osgeo.org/geos/trunk@1020 + (ported from JTS-1.7). Added last port information. git-svn-id: http://svn.osgeo.org/geos/trunk@1020 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-21 Sandro Santilli * source/test/hexwkb.xml: Added endian specification to case - descriptions. All tests are Little Endian, should add the same tests - with Big Endian format. git-svn-id: - http://svn.osgeo.org/geos/trunk@1019 + descriptions. All tests are Little Endian, should add the same + tests with Big Endian format. git-svn-id: http://svn.osgeo.org/geos/trunk@1019 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli * source/operation/overlay/PolygonBuilder.cpp: Updated port - information git-svn-id: http://svn.osgeo.org/geos/trunk@1018 + information git-svn-id: http://svn.osgeo.org/geos/trunk@1018 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli - * source/operation/overlay/PolygonBuilder.cpp: Fixed bug #13 - git-svn-id: http://svn.osgeo.org/geos/trunk@1017 + * source/operation/overlay/PolygonBuilder.cpp: Fixed bug #13 git-svn-id: http://svn.osgeo.org/geos/trunk@1017 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli * source/operation/valid/IsValidOp.cpp, source/operation/valid/TopologyValidationError.cpp: Updated last - port info git-svn-id: http://svn.osgeo.org/geos/trunk@1016 + port info git-svn-id: http://svn.osgeo.org/geos/trunk@1016 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli * configure.in, macros/ruby.m4, swig/python/Makefile.am, - swig/ruby/Makefile.am, swig/ruby/renames.i, - swig/ruby/test/Makefile.am, swig/ruby/{ => test}/example.rb, - swig/ruby/test/test_envelope.rb: More SWIG/python/ruby patches - git-svn-id: http://svn.osgeo.org/geos/trunk@1015 + swig/ruby/Makefile.am, swig/ruby/example.rb, swig/ruby/renames.i, + swig/ruby/test/Makefile.am, swig/ruby/test/example.rb, + swig/ruby/test/test_envelope.rb: More SWIG/python/ruby patches git-svn-id: http://svn.osgeo.org/geos/trunk@1015 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli - * source/io/WKBReader.cpp: Better debugging git-svn-id: - http://svn.osgeo.org/geos/trunk@1014 + * source/io/WKBReader.cpp: Better debugging git-svn-id: http://svn.osgeo.org/geos/trunk@1014 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-20 Sandro Santilli - * source/test/hexwkb.xml: PrecisionModel made FLOATING git-svn-id: - http://svn.osgeo.org/geos/trunk@1013 + * source/test/hexwkb.xml: PrecisionModel made FLOATING git-svn-id: http://svn.osgeo.org/geos/trunk@1013 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli * source/test/XMLTester.cpp, source/test/XMLTester.h: Reworked - XMLTester to be quiet by default. Use -v switch to make it verbose. - git-svn-id: http://svn.osgeo.org/geos/trunk@1012 + XMLTester to be quiet by default. Use -v switch to make it verbose. git-svn-id: http://svn.osgeo.org/geos/trunk@1012 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli - * source/test/hexwkb.xml: Added GEOMETRYCOLLECTION test - git-svn-id: http://svn.osgeo.org/geos/trunk@1011 + * source/test/hexwkb.xml: Added GEOMETRYCOLLECTION test git-svn-id: http://svn.osgeo.org/geos/trunk@1011 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli - * source/test/Makefile.am: Added another local test to the test rule - git-svn-id: http://svn.osgeo.org/geos/trunk@1010 + * source/test/Makefile.am: Added another local test to the test rule git-svn-id: http://svn.osgeo.org/geos/trunk@1010 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli * source/io/WKTWriter.cpp: Fixed leak in ::writeFormatted(Geometry - *) git-svn-id: http://svn.osgeo.org/geos/trunk@1009 + *) git-svn-id: http://svn.osgeo.org/geos/trunk@1009 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli - * source/io/WKBReader.cpp: more debugging lines git-svn-id: - http://svn.osgeo.org/geos/trunk@1008 + * source/io/WKBReader.cpp: more debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@1008 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli * source/io/WKBReader.cpp: Set binary flag for stringstream used in - ::readHEX() git-svn-id: http://svn.osgeo.org/geos/trunk@1007 + ::readHEX() git-svn-id: http://svn.osgeo.org/geos/trunk@1007 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli @@ -30773,22 +33551,20 @@ source/test/XMLTester.h, source/test/hexwkb.xml: Added HEXWKB support in XMLTester. Added a simple test in HEXWKB form and a 'test' rule running the locally-available tests and showing result - summay. git-svn-id: http://svn.osgeo.org/geos/trunk@1006 + summay. git-svn-id: http://svn.osgeo.org/geos/trunk@1006 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-18 Sandro Santilli - * macros/ac_python_devel.m4: Added missing macro file git-svn-id: - http://svn.osgeo.org/geos/trunk@1005 + * macros/ac_python_devel.m4: Added missing macro file git-svn-id: http://svn.osgeo.org/geos/trunk@1005 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-17 Sandro Santilli * configure.in, macros/ac_pkg_swig.m4: Modified AC_PROG_SWIG macro to set SWIG to the empty string on error (rather then making it echo - an error and return false). SWIG version 1.3.28 or up required in - order to build SWIG-based extensions. git-svn-id: - http://svn.osgeo.org/geos/trunk@1004 + an error and return false). SWIG version 1.3.28 or up required in + order to build SWIG-based extensions. git-svn-id: http://svn.osgeo.org/geos/trunk@1004 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-16 Sandro Santilli @@ -30796,8 +33572,7 @@ * autogen.sh, configure.in, macros/ac_pkg_swig.m4, macros/python.m4, swig/python/.cvsignore, swig/python/Makefile.am, swig/python/python.i, swig/ruby/Makefile.am: Added initial - conditional build of python and ruby wrappers git-svn-id: - http://svn.osgeo.org/geos/trunk@1003 + conditional build of python and ruby wrappers git-svn-id: http://svn.osgeo.org/geos/trunk@1003 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-15 Sandro Santilli @@ -30806,8 +33581,7 @@ swig/ruby/.cvsignore, swig/ruby/Makefile, swig/ruby/Makefile.am, swig/ruby/renames.i, swig/ruby/ruby.i, swig/ruby/test/.cvsignore, swig/ruby/test/Makefile.am: Added bare build/install/dist scripts - support for ruby interface git-svn-id: - http://svn.osgeo.org/geos/trunk@1001 + support for ruby interface git-svn-id: http://svn.osgeo.org/geos/trunk@1001 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-15 Sandro Santilli @@ -30816,41 +33590,37 @@ swig/ruby/test/test_combinations.rb, swig/ruby/test/test_helper.rb, swig/ruby/test/test_io.rb, swig/ruby/test/test_operations.rb, swig/ruby/test/test_relations.rb, swig/ruby/test/test_simple.rb: - Initial import of ruby unit tests git-svn-id: - http://svn.osgeo.org/geos/trunk@1000 + Initial import of ruby unit tests git-svn-id: http://svn.osgeo.org/geos/trunk@1000 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-15 Sandro Santilli * source/geom/Envelope.cpp, source/headers/geos/geom.h: Added Envelope constructor by string (accepting what's returned by - ::toString) git-svn-id: http://svn.osgeo.org/geos/trunk@999 + ::toString) git-svn-id: http://svn.osgeo.org/geos/trunk@999 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-15 Sandro Santilli * source/headers/geos/io.h, source/io/WKBReader.cpp, source/io/WKBWriter.cpp: Added WKBWriter::writeHEX() and - WKBReader::readHEX() git-svn-id: - http://svn.osgeo.org/geos/trunk@998 + WKBReader::readHEX() git-svn-id: http://svn.osgeo.org/geos/trunk@998 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-12 Sandro Santilli - * NEWS: synced after 2.2.1 release git-svn-id: - http://svn.osgeo.org/geos/trunk@997 + * NEWS: synced after 2.2.1 release git-svn-id: http://svn.osgeo.org/geos/trunk@997 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-12 Sandro Santilli - * source/capi/geos_c.cpp: Removed double call to ::isValid - git-svn-id: http://svn.osgeo.org/geos/trunk@996 + * source/capi/geos_c.cpp: Removed double call to ::isValid git-svn-id: http://svn.osgeo.org/geos/trunk@996 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-08 Sandro Santilli * source/capi/geos_c.cpp: Changed finite() function call with - FINITE() macro. git-svn-id: http://svn.osgeo.org/geos/trunk@994 + FINITE() macro. git-svn-id: http://svn.osgeo.org/geos/trunk@994 5242fede-7e19-0410-aef8-94bd7d2200fb 2006-01-08 Sandro Santilli @@ -30864,11 +33634,10 @@ source/operation/relate/RelateNodeGraph.cpp, source/operation/valid/IsValidOp.cpp, source/util/GeometricShapeFactory.cpp: Changed container-related - typedef to class-scoped STL-like typedefs. Fixed const correctness + typedef to class-scoped STL-like typedefs. Fixed const correctness of EdgeIntersectionList::begin() and ::end() consts; defined M_PI - when undef as suggested by Charlie Savage. Removed include - from GeometricShapeFactory.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@993 + when undef as suggested by Charlie Savage. Removed + include from GeometricShapeFactory.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@993 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-22 Sandro Santilli @@ -30876,26 +33645,25 @@ * swig/README.txt, swig/geos.i, swig/ruby/Makefile, swig/ruby/README.txt, swig/ruby/example.rb, swig/ruby/renames.i, swig/ruby/ruby.i: Imported Charlie Savage new ruby wrapper and swig - changes git-svn-id: http://svn.osgeo.org/geos/trunk@992 + changes git-svn-id: http://svn.osgeo.org/geos/trunk@992 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-14 Sandro Santilli * HOWTO_RELEASE: Added a note about the need to *always* increment - CAPI version git-svn-id: http://svn.osgeo.org/geos/trunk@991 + CAPI version git-svn-id: http://svn.osgeo.org/geos/trunk@991 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-14 Sandro Santilli - * HOWTO_RELEASE, source/algorithm/ConvexHull.cpp: New entry - git-svn-id: http://svn.osgeo.org/geos/trunk@990 + * HOWTO_RELEASE, source/algorithm/ConvexHull.cpp: New entry git-svn-id: http://svn.osgeo.org/geos/trunk@990 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-13 Sandro Santilli * source/capi/geos_c.h.in: Removed INTERFACE_* defines (obsoleted). Made GEOSCoordSeq_clone() arg const (won't change ABI, it's C world, - lucky ;) git-svn-id: http://svn.osgeo.org/geos/trunk@989 + lucky ;) git-svn-id: http://svn.osgeo.org/geos/trunk@989 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-13 Sandro Santilli @@ -30903,67 +33671,60 @@ * source/capi/geos_c.cpp: Removed conditional blocks based on GEOS version (we're always in sync). This fixed an annoying problem introduced since INTERFACE_LAST and INTERFACE_CURREN were taken off - geos/version.h git-svn-id: http://svn.osgeo.org/geos/trunk@988 + geos/version.h git-svn-id: http://svn.osgeo.org/geos/trunk@988 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-12 Sandro Santilli * configure.in, source/geom/Makefile.am, source/headers/geos/version.h.in: Switched to -release mode for C++ - library versioning. Every release will be binary-incompatible with - previous. Removed GEOS_FIRST_INTERFACE and GEOS_LAST_INTERFACE - defines from geos/version.h. git-svn-id: - http://svn.osgeo.org/geos/trunk@987 + library versioning. Every release will be binary-incompatible with + previous. Removed GEOS_FIRST_INTERFACE and GEOS_LAST_INTERFACE + defines from geos/version.h. git-svn-id: http://svn.osgeo.org/geos/trunk@987 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-11 Sandro Santilli * source/operation/overlay/ElevationMatrix.cpp, source/operation/overlay/ElevationMatrixFilter.cpp: Fixed premature - initialization of average Z value in ElevationMatrixFilter - git-svn-id: http://svn.osgeo.org/geos/trunk@984 + initialization of average Z value in ElevationMatrixFilter git-svn-id: http://svn.osgeo.org/geos/trunk@984 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-11 Sandro Santilli - * configure.in: Fixed mungled versions (1.0.0/3.0.1 => 1.0.1/3.0.0) - git-svn-id: http://svn.osgeo.org/geos/trunk@983 + * configure.in: Fixed mungled versions (1.0.0/3.0.1 => 1.0.1/3.0.0) git-svn-id: http://svn.osgeo.org/geos/trunk@983 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-10 Sandro Santilli - * source/capi/geos_c.cpp: Unkown -> Unknown typo fix git-svn-id: - http://svn.osgeo.org/geos/trunk@981 + * source/capi/geos_c.cpp: Unkown -> Unknown typo fix git-svn-id: http://svn.osgeo.org/geos/trunk@981 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-09 Sandro Santilli * configure.in: Capi lib version set to 1.0.1 (due to leak fix in - GEOSHasZ) git-svn-id: http://svn.osgeo.org/geos/trunk@980 + GEOSHasZ) git-svn-id: http://svn.osgeo.org/geos/trunk@980 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-09 Sandro Santilli * NEWS, source/capi/geos_c.cpp, source/operation/polygonize/PolygonizeGraph.cpp: Small leak plugged - in CAPI::GEOSHasZ() and in invalid input to PolygonizeGraph (again) - git-svn-id: http://svn.osgeo.org/geos/trunk@977 + in CAPI::GEOSHasZ() and in invalid input to PolygonizeGraph (again) git-svn-id: http://svn.osgeo.org/geos/trunk@977 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-09 Sandro Santilli * source/operation/polygonize/Polygonizer.cpp: Cleaned up debugging - line left over from previous commit git-svn-id: - http://svn.osgeo.org/geos/trunk@974 + line left over from previous commit git-svn-id: http://svn.osgeo.org/geos/trunk@974 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-09 Sandro Santilli * NEWS, source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp: Fixed a bug making - PolygonizeGraph choking on invalid LineStrings. Minor optimizations - in Polygonizer loops. git-svn-id: - http://svn.osgeo.org/geos/trunk@972 + PolygonizeGraph choking on invalid LineStrings. Minor optimizations + in Polygonizer loops. git-svn-id: http://svn.osgeo.org/geos/trunk@972 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-08 Sandro Santilli @@ -30981,45 +33742,41 @@ used for both elevation and Matrix fill, thus removing CoordinateSequence copy in ElevetaionMatrix::add(Geometry *). Changed CoordinateFilter::filter_rw to be a const method: updated - all apply_rw() methods to take a const CoordinateFilter. - git-svn-id: http://svn.osgeo.org/geos/trunk@971 + all apply_rw() methods to take a const CoordinateFilter. git-svn-id: http://svn.osgeo.org/geos/trunk@971 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-08 Sandro Santilli * NEWS, source/headers/geos/noding.h, source/noding/Noder.cpp, source/noding/SegmentString.cpp: SegmentString::eiList made a real - object rather then a pointer. Adde getter for const and non-const - references of it (dropping get by pointer) git-svn-id: - http://svn.osgeo.org/geos/trunk@970 + object rather then a pointer. Adde getter for const and non-const + references of it (dropping get by pointer) git-svn-id: http://svn.osgeo.org/geos/trunk@970 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-08 Sandro Santilli * source/geomgraph/EdgeIntersectionList.cpp: minor optimizations in - loops git-svn-id: http://svn.osgeo.org/geos/trunk@969 + loops git-svn-id: http://svn.osgeo.org/geos/trunk@969 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-08 Sandro Santilli * source/geomgraph/EdgeIntersectionList.cpp: Reduced coordinate - assignments in ::createSplitEdge git-svn-id: - http://svn.osgeo.org/geos/trunk@968 + assignments in ::createSplitEdge git-svn-id: http://svn.osgeo.org/geos/trunk@968 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-08 Sandro Santilli * NEWS, source/headers/geos/opOverlay.h, source/operation/overlay/LineBuilder.cpp: LineBuilder::lineEdgesList - made a real vector, rather then pointer (private member). Small + made a real vector, rather then pointer (private member). Small optimizations in LineBuilder loops, cleanups in LineBuilder class - dox. git-svn-id: http://svn.osgeo.org/geos/trunk@967 + dox. git-svn-id: http://svn.osgeo.org/geos/trunk@967 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli - * source/geomgraph/EdgeIntersection.cpp: standard indentation - git-svn-id: http://svn.osgeo.org/geos/trunk@966 + * source/geomgraph/EdgeIntersection.cpp: standard indentation git-svn-id: http://svn.osgeo.org/geos/trunk@966 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli @@ -31029,41 +33786,37 @@ CoordinateSequence::apply_rw(CoordinateFilter *) and CoordinateSequence::apply_ro(CoordinateFilter *) const to reduce coordinate copies on read-write CoordinateFilter applications - (previously required getAt()/setAt() calls). Undefined + (previously required getAt()/setAt() calls). Undefined PROFILE_COORDINATE_COPIES (erroneously left defined by previous - commit) git-svn-id: http://svn.osgeo.org/geos/trunk@965 + commit) git-svn-id: http://svn.osgeo.org/geos/trunk@965 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli * source/geom/CoordinateSequence.cpp: Optimized memory allocations - in ::removeRepeatedPoints git-svn-id: - http://svn.osgeo.org/geos/trunk@964 + in ::removeRepeatedPoints git-svn-id: http://svn.osgeo.org/geos/trunk@964 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli * source/geomgraph/GeometryGraph.cpp: minor container methods call - reduction git-svn-id: http://svn.osgeo.org/geos/trunk@963 + reduction git-svn-id: http://svn.osgeo.org/geos/trunk@963 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli - * source/geomgraph/EdgeEndStar.cpp: removed dead code git-svn-id: - http://svn.osgeo.org/geos/trunk@962 + * source/geomgraph/EdgeEndStar.cpp: removed dead code git-svn-id: http://svn.osgeo.org/geos/trunk@962 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp: minor cleanups - git-svn-id: http://svn.osgeo.org/geos/trunk@961 + * source/geomgraph/DirectedEdgeStar.cpp: minor cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@961 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli * source/geomgraph/Edge.cpp: Oops, removed Coordinate copies - introduced by recent code cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@960 + introduced by recent code cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@960 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-07 Sandro Santilli @@ -31074,106 +33827,95 @@ source/operation/overlay/OverlayOp.cpp, source/operation/valid/ConnectedInteriorTester.cpp: Changed PlanarGraph::addEdges and EdgeList::addAll to take a const vector by - reference rather then a non-const vector by pointer. Optimized - polygon vector allocations in OverlayOp::computeOverlay. - git-svn-id: http://svn.osgeo.org/geos/trunk@959 + reference rather then a non-const vector by pointer. Optimized + polygon vector allocations in OverlayOp::computeOverlay. git-svn-id: http://svn.osgeo.org/geos/trunk@959 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-12-06 Sandro Santilli * Makefile.am, NEWS, configure.in, source/capi/Makefile.am, - source/geom/Makefile.am: Added acsite.m4 to distribution. Added - macros and flags required to build on mingw arch. git-svn-id: - http://svn.osgeo.org/geos/trunk@958 + source/geom/Makefile.am: Added acsite.m4 to distribution. Added + macros and flags required to build on mingw arch. git-svn-id: http://svn.osgeo.org/geos/trunk@958 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-30 Sandro Santilli - * source/capi/.cvsignore: Added geos_c.h git-svn-id: - http://svn.osgeo.org/geos/trunk@955 + * source/capi/.cvsignore: Added geos_c.h git-svn-id: http://svn.osgeo.org/geos/trunk@955 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-30 Sandro Santilli - * tools/geos-config.in: Added --ldflags git-svn-id: - http://svn.osgeo.org/geos/trunk@951 + * tools/geos-config.in: Added --ldflags git-svn-id: http://svn.osgeo.org/geos/trunk@951 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-30 Sandro Santilli - * README: Updated with C-API usage git-svn-id: - http://svn.osgeo.org/geos/trunk@949 + * README: Updated with C-API usage git-svn-id: http://svn.osgeo.org/geos/trunk@949 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-30 Sandro Santilli - * doc/example.cpp: catch std::exception by ref git-svn-id: - http://svn.osgeo.org/geos/trunk@945 + * doc/example.cpp: catch std::exception by ref git-svn-id: http://svn.osgeo.org/geos/trunk@945 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-30 Sandro Santilli - * doc/example.cpp: includes cleanup git-svn-id: - http://svn.osgeo.org/geos/trunk@944 + * doc/example.cpp: includes cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@944 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli - * NEWS: updated moving some items to 2.2.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@942 + * NEWS: updated moving some items to 2.2.0 git-svn-id: http://svn.osgeo.org/geos/trunk@942 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli * source/geomgraph/TopologyLocation.cpp, source/headers/geos/geomgraph.h: Fixed signedness of - TopologyLocation methods, cleanups. git-svn-id: - http://svn.osgeo.org/geos/trunk@936 + TopologyLocation methods, cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@936 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli * ChangeLog, source/algorithm/MinimumDiameter.cpp, source/headers/geos/geosAlgorithm.h: Fixed sign-related warnings and - signatures. git-svn-id: http://svn.osgeo.org/geos/trunk@935 + signatures. git-svn-id: http://svn.osgeo.org/geos/trunk@935 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli - * NEWS: More info git-svn-id: http://svn.osgeo.org/geos/trunk@934 + * NEWS: More info git-svn-id: http://svn.osgeo.org/geos/trunk@934 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli - * NEWS: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@933 + * NEWS: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@933 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: - Removed number of points cache in Edge, replaced with local caches. - git-svn-id: http://svn.osgeo.org/geos/trunk@932 + Removed number of points cache in Edge, replaced with local caches. git-svn-id: http://svn.osgeo.org/geos/trunk@932 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli * source/geom/CoordinateSequence.cpp, source/geom/DefaultCoordinateSequence.cpp: More signed/unsigned - fixes git-svn-id: http://svn.osgeo.org/geos/trunk@931 + fixes git-svn-id: http://svn.osgeo.org/geos/trunk@931 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli * source/headers/geos/geom.h, source/headers/geos/io.h: Moved byte - typedef from geom.h to io.h. Removed useless commas at inlined funx - end. Changed CoordinateSequenceFactory::create(siz,dims) to use - unsigned for dims. git-svn-id: http://svn.osgeo.org/geos/trunk@930 + typedef from geom.h to io.h. Removed useless commas at inlined funx + end. Changed CoordinateSequenceFactory::create(siz,dims) to use + unsigned for dims. git-svn-id: http://svn.osgeo.org/geos/trunk@930 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli - * NEWS: organized changes info git-svn-id: - http://svn.osgeo.org/geos/trunk@929 + * NEWS: organized changes info git-svn-id: http://svn.osgeo.org/geos/trunk@929 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-29 Sandro Santilli @@ -31184,29 +33926,26 @@ source/operation/buffer/BufferSubgraph.cpp, source/operation/relate/EdgeEndBundleStar.cpp, source/operation/valid/ConsistentAreaTester.cpp: Removed edgeList - cache from EdgeEndRing. edgeMap is enough. Restructured iterated + cache from EdgeEndRing. edgeMap is enough. Restructured iterated access by use of standard ::iterator abstraction with scoped - typedefs. git-svn-id: http://svn.osgeo.org/geos/trunk@928 + typedefs. git-svn-id: http://svn.osgeo.org/geos/trunk@928 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-28 Sandro Santilli - * source/geom/LineString.cpp: Minor warning removal git-svn-id: - http://svn.osgeo.org/geos/trunk@927 + * source/geom/LineString.cpp: Minor warning removal git-svn-id: http://svn.osgeo.org/geos/trunk@927 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-25 Sandro Santilli * NEWS, source/test/XMLTester.cpp, source/test/XMLTester.h: Made - XMLTester able to run multiple test files and keep overall counters. - git-svn-id: http://svn.osgeo.org/geos/trunk@926 + XMLTester able to run multiple test files and keep overall counters. git-svn-id: http://svn.osgeo.org/geos/trunk@926 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-25 Sandro Santilli * source/precision/SimpleGeometryPrecisionReducer.cpp: Another - getSize in for loop, another int-unsigned int warning git-svn-id: - http://svn.osgeo.org/geos/trunk@925 + getSize in for loop, another int-unsigned int warning git-svn-id: http://svn.osgeo.org/geos/trunk@925 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-25 Sandro Santilli @@ -31221,42 +33960,37 @@ source/operation/valid/ConnectedInteriorTester.cpp, source/operation/valid/IsValidOp.cpp, source/operation/valid/RepeatedPointTester.cpp: Removed all - CoordinateSequence::getSize() calls embedded in for loops. - git-svn-id: http://svn.osgeo.org/geos/trunk@924 + CoordinateSequence::getSize() calls embedded in for loops. git-svn-id: http://svn.osgeo.org/geos/trunk@924 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-25 Sandro Santilli * source/geomgraph/Edge.cpp: Fix in ::equals() - this finally passes - testLeaksBig.xml tests git-svn-id: - http://svn.osgeo.org/geos/trunk@923 + testLeaksBig.xml tests git-svn-id: http://svn.osgeo.org/geos/trunk@923 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-25 Sandro Santilli * source/geom/GeometryCollection.cpp: Fixed bug in getCoordinates() - [ introduced by previous commit ] git-svn-id: - http://svn.osgeo.org/geos/trunk@922 + [ introduced by previous commit ] git-svn-id: http://svn.osgeo.org/geos/trunk@922 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-24 Sandro Santilli * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: Yes - another fix, sorry. Missing const-correctness. git-svn-id: - http://svn.osgeo.org/geos/trunk@921 + another fix, sorry. Missing const-correctness. git-svn-id: http://svn.osgeo.org/geos/trunk@921 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-24 Sandro Santilli * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: Fixed - equals() function [ optimized in previous commit, but unchecked ] - git-svn-id: http://svn.osgeo.org/geos/trunk@920 + equals() function [ optimized in previous commit, but unchecked ] git-svn-id: http://svn.osgeo.org/geos/trunk@920 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-24 Sandro Santilli * NEWS: Added note about CoordinateSequence signed->unsigned change - in API git-svn-id: http://svn.osgeo.org/geos/trunk@919 + in API git-svn-id: http://svn.osgeo.org/geos/trunk@919 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-24 Sandro Santilli @@ -31278,8 +34012,7 @@ source/noding/snapround/SimpleSegmentStringsSnapper.cpp: CoordinateSequence indexes switched from int to the more the correct unsigned int. Optimizations here and there to avoid calling - getSize() in loops. Update of all callers is not complete yet. - git-svn-id: http://svn.osgeo.org/geos/trunk@918 + getSize() in loops. Update of all callers is not complete yet. git-svn-id: http://svn.osgeo.org/geos/trunk@918 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-24 Sandro Santilli @@ -31287,8 +34020,7 @@ * source/algorithm/CentroidLine.cpp, source/headers/geos/geosAlgorithm.h: CentroidLine made concrete class (only destructor was virtual) - avoided heap allocation for - owned Coordinate centSum git-svn-id: - http://svn.osgeo.org/geos/trunk@917 + owned Coordinate centSum git-svn-id: http://svn.osgeo.org/geos/trunk@917 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-21 Sandro Santilli @@ -31321,28 +34053,7 @@ source/operation/relate/RelateNodeGraph.cpp, source/operation/relate/RelateOp.cpp, source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp: Coordinate interface change: - Removed setCoordinate call, use assignment operator instead. - Provided a compile-time switch to make copy ctor and - assignment operators non-inline to allow for more accurate - profiling. Coordinate copies removal: - NodeFactory::createNode() takes now a Coordinate reference - rather then real value. This brings coordinate copies in the - testLeaksBig.xml test from 654818 to 645991 (tested in 2.1 - branch). In the head branch Coordinate copies are 222198. - Removed useless coordinate copies in ConvexHull operations - STL containers heap allocations reduction: Converted many - containers element from pointers to real objects. - Made some use of .reserve() or size initialization when - final container size is known in advance. Stateless classes - allocations reduction: Provided ::instance() function for - NodeFactories, to avoid allocating more then one (they are - all stateless). HCoordinate improvements: Changed - HCoordinate constructor by HCoordinates take reference - rather then real objects. Changed HCoordinate::intersection - to avoid a new allocation but rather return into a provided - storage. LineIntersector changed to reflect the above - change. git-svn-id: http://svn.osgeo.org/geos/trunk@916 + source/operation/valid/IsValidOp.cpp: Coordinate interface change: Removed setCoordinate call, use assignment operator instead. Provided a compile-time switch to make copy ctor and assignment operators non-inline to allow for more accurate profiling. Coordinate copies removal: NodeFactory::createNode() takes now a Coordinate reference rather then real value. This brings coordinate copies in the testLeaksBig.xml test from 654818 to 645991 (tested in 2.1 branch). In the head branch Coordinate copies are 222198. Removed useless coordinate copies in ConvexHull operations STL containers heap allocations reduction: Converted many containers element from pointers to real objects. Made some use of .reserve() or size initialization when final container size is known in advance. Stateless classes allocations reduction: Provided ::instance() function for NodeFactories, to avoid allocating more then one (they are all stateless). HCoordinate improvements: Changed HCoordinate constructor by HCoordinates take reference rather then real objects. Changed HCoordinate::intersection to avoid a new allocation but rather return into a provided storage. LineIntersector changed to reflect the above change. git-svn-id: http://svn.osgeo.org/geos/trunk@916 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-18 Sandro Santilli @@ -31352,12 +34063,11 @@ source/operation/overlay/MaximalEdgeRing.cpp, source/operation/overlay/MinimalEdgeRing.cpp, source/operation/overlay/PolygonBuilder.cpp: Fixed a bug in - EdgeRing::containsPoint(). Changed EdgeRing::getLinearRing() to + EdgeRing::containsPoint(). Changed EdgeRing::getLinearRing() to avoid LinearRing copy and updated usages from PolygonBuilder. Removed CoordinateSequence copy in EdgeRing (ownership is - transferred to its LinearRing). Removed heap allocations for - EdgeRing containers. Initialization lists and cleanups. - git-svn-id: http://svn.osgeo.org/geos/trunk@915 + transferred to its LinearRing). Removed heap allocations for + EdgeRing containers. Initialization lists and cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@915 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-16 Sandro Santilli @@ -31367,8 +34077,7 @@ source/geomgraph/GeometryGraph.cpp, source/geomgraph/PlanarGraph.cpp, source/headers/geos/geomgraph.h, source/operation/valid/IsValidOp.cpp: enforced const-correctness and - use of initializer lists. git-svn-id: - http://svn.osgeo.org/geos/trunk@913 + use of initializer lists. git-svn-id: http://svn.osgeo.org/geos/trunk@913 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-16 Sandro Santilli @@ -31383,7 +34092,7 @@ source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateNodeGraph.cpp, source/operation/valid/IsValidOp.cpp: Reduced gratuitous heap - allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@912 + allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@912 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-15 Sandro Santilli @@ -31391,8 +34100,7 @@ * source/algorithm/LineIntersector.cpp, source/geomgraph/Label.cpp, source/geomgraph/TopologyLocation.cpp, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h: Removed dead code git-svn-id: - http://svn.osgeo.org/geos/trunk@911 + source/headers/geos/geosAlgorithm.h: Removed dead code git-svn-id: http://svn.osgeo.org/geos/trunk@911 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-15 Sandro Santilli @@ -31412,7 +34120,7 @@ source/planargraph/planarNodeMap.cpp, source/planargraph/planarPlanarGraph.cpp: Reduced heap allocations, made use of references when appropriate, small optimizations here - and there. git-svn-id: http://svn.osgeo.org/geos/trunk@909 + and there. git-svn-id: http://svn.osgeo.org/geos/trunk@909 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-15 Sandro Santilli @@ -31425,16 +34133,14 @@ source/geomgraph/index/SimpleSweepLineIntersector.cpp, source/geomgraph/index/SweepLineSegment.cpp, source/headers/geos/geomgraphindex.h: Reduced heap allocations - (vectors, mostly). Enforced const-correctness, changed some - interfaces to use references rather then pointers when appropriate. - git-svn-id: http://svn.osgeo.org/geos/trunk@908 + (vectors, mostly). Enforced const-correctness, changed some + interfaces to use references rather then pointers when appropriate. git-svn-id: http://svn.osgeo.org/geos/trunk@908 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-15 Sandro Santilli * source/geom/LineString.cpp: optimized envelope computation - reducing virtual calls git-svn-id: - http://svn.osgeo.org/geos/trunk@907 + reducing virtual calls git-svn-id: http://svn.osgeo.org/geos/trunk@907 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-14 Sandro Santilli @@ -31449,15 +34155,14 @@ source/operation/overlay/OverlayOp.cpp, source/operation/relate/EdgeEndBuilder.cpp, source/operation/relate/EdgeEndBundle.cpp: Reduced heap allocations - made by TopologyLocation and Label objects. Enforced - const-correctness on GraphComponent. Cleanups. git-svn-id: - http://svn.osgeo.org/geos/trunk@906 + made by TopologyLocation and Label objects. Enforced + const-correctness on GraphComponent. Cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@906 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-10 Sandro Santilli * source/io/WKBReader.cpp: Fixed printHEX (was printing one char - past the WKB) git-svn-id: http://svn.osgeo.org/geos/trunk@904 + past the WKB) git-svn-id: http://svn.osgeo.org/geos/trunk@904 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-10 Sandro Santilli @@ -31465,51 +34170,45 @@ * source/headers/geos/geomUtil.h, source/headers/geos/geomgraph.h, source/headers/geos/geosAlgorithm.h, source/headers/geos/indexStrtree.h, source/headers/geos/noding.h, - source/headers/geos/precision.h: Made virtual overloads explicit. - git-svn-id: http://svn.osgeo.org/geos/trunk@903 + source/headers/geos/precision.h: Made virtual overloads explicit. git-svn-id: http://svn.osgeo.org/geos/trunk@903 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-10 Sandro Santilli * source/geom/MultiPoint.cpp, source/headers/geos/geom.h: Renamed MultiPoint::getCoordinate(int) to MultiPoint::getCoordinateN(int) to - avoid hiding of Geometry::getCoordinate(). git-svn-id: - http://svn.osgeo.org/geos/trunk@902 + avoid hiding of Geometry::getCoordinate(). git-svn-id: http://svn.osgeo.org/geos/trunk@902 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-10 Sandro Santilli * source/headers/geos/util.h, source/util/CoordinateArrayFiter.cpp: - Fixed virtual overload of CoordinateArrayFilter::filter* - git-svn-id: http://svn.osgeo.org/geos/trunk@901 + Fixed virtual overload of CoordinateArrayFilter::filter* git-svn-id: http://svn.osgeo.org/geos/trunk@901 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-10 Sandro Santilli * source/geom/LineString.cpp, source/headers/geos/geom.h: Removed - virtual overloading LineString::compareTo(LineString *) - git-svn-id: http://svn.osgeo.org/geos/trunk@900 + virtual overloading LineString::compareTo(LineString *) git-svn-id: http://svn.osgeo.org/geos/trunk@900 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-09 Sandro Santilli - * source/operation/buffer/DepthSegment.cpp: Forgot to add this - git-svn-id: http://svn.osgeo.org/geos/trunk@899 + * source/operation/buffer/DepthSegment.cpp: Forgot to add this git-svn-id: http://svn.osgeo.org/geos/trunk@899 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-09 Sandro Santilli * source/geomgraph/Node.cpp, source/geomgraph/NodeMap.cpp, source/headers/geos/geomgraph.h: Cleanups in Node and NodeMap. - Optimization of EdgeIntersectionLessThen. git-svn-id: - http://svn.osgeo.org/geos/trunk@898 + Optimization of EdgeIntersectionLessThen. git-svn-id: http://svn.osgeo.org/geos/trunk@898 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-09 Sandro Santilli * source/geom/IntersectionMatrix.cpp, source/headers/geos/geom.h: - IntersectionMatrix made a concrete and final type. Cleanups in class - definition. git-svn-id: http://svn.osgeo.org/geos/trunk@897 + IntersectionMatrix made a concrete and final type. Cleanups in + class definition. git-svn-id: http://svn.osgeo.org/geos/trunk@897 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-08 Sandro Santilli @@ -31518,68 +34217,59 @@ source/headers/geos/opBuffer.h, source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: Memory overhead - reductions in buffer operations. git-svn-id: - http://svn.osgeo.org/geos/trunk@896 + reductions in buffer operations. git-svn-id: http://svn.osgeo.org/geos/trunk@896 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-08 Sandro Santilli * source/geom/DefaultCoordinateSequence.cpp: Cleanups, ::setPoint - small improvement git-svn-id: http://svn.osgeo.org/geos/trunk@895 + small improvement git-svn-id: http://svn.osgeo.org/geos/trunk@895 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-08 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: comments cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@894 + * source/operation/overlay/OverlayOp.cpp: comments cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@894 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-08 Sandro Santilli - * configure.in: Library versioning took back to 3.0.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@893 + * configure.in: Library versioning took back to 3.0.0 git-svn-id: http://svn.osgeo.org/geos/trunk@893 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-08 Sandro Santilli * configure.in, doc/Doxyfile.in, source/geom/Envelope.cpp, source/geom/Geometry.cpp, source/headers/geos/geom.h: Set library - version to 2.2.0. Cleaned up Doxygen warnings. Inlined more Envelope - methods. Dropped deprecated Envelope::overlaps methods. - git-svn-id: http://svn.osgeo.org/geos/trunk@892 + version to 2.2.0. Cleaned up Doxygen warnings. Inlined more + Envelope methods. Dropped deprecated Envelope::overlaps methods. git-svn-id: http://svn.osgeo.org/geos/trunk@892 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Sandro Santilli - * configure.in: Removed VisualStudio knowledge from configure script - git-svn-id: http://svn.osgeo.org/geos/trunk@890 + * configure.in: Removed VisualStudio knowledge from configure script git-svn-id: http://svn.osgeo.org/geos/trunk@890 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Sandro Santilli * source/geomgraph/EdgeIntersectionList.cpp, source/headers/geos/noding.h, source/noding/SegmentNodeList.cpp: - Reduced set<> lookups git-svn-id: - http://svn.osgeo.org/geos/trunk@889 + Reduced set<> lookups git-svn-id: http://svn.osgeo.org/geos/trunk@889 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Frank Warmerdam * VisualStudio/GEOS.sln, VisualStudio/GEOS.vcproj, - VisualStudio/Makefile.am: no longer used git-svn-id: - http://svn.osgeo.org/geos/trunk@888 + VisualStudio/Makefile.am: no longer used git-svn-id: http://svn.osgeo.org/geos/trunk@888 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Frank Warmerdam - * Makefile.am: removed VisualStudio, no longer distributed - git-svn-id: http://svn.osgeo.org/geos/trunk@887 + * Makefile.am: removed VisualStudio, no longer distributed git-svn-id: http://svn.osgeo.org/geos/trunk@887 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Frank Warmerdam - * VisualStudio/.cvsignore: obsolete git-svn-id: - http://svn.osgeo.org/geos/trunk@886 + * VisualStudio/.cvsignore: obsolete git-svn-id: http://svn.osgeo.org/geos/trunk@886 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Sandro Santilli @@ -31598,28 +34288,25 @@ source/operation/relate/RelateNodeGraph.cpp, source/operation/valid/IsValidOp.cpp: Changed EdgeIntersectionList to use a set<> rathern then a vector<>, and to avoid dynamic - allocation of initial header. Inlined short SweepLineEvent methods. - git-svn-id: http://svn.osgeo.org/geos/trunk@885 + allocation of initial header. Inlined short SweepLineEvent methods. git-svn-id: http://svn.osgeo.org/geos/trunk@885 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-07 Sandro Santilli * source/capi/geos_c.h.in: Added const qualifiers to function to - reflect paradigm of immutable Geometry objects. git-svn-id: - http://svn.osgeo.org/geos/trunk@884 + reflect paradigm of immutable Geometry objects. git-svn-id: http://svn.osgeo.org/geos/trunk@884 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-04 Sandro Santilli * source/geomgraph/index/SweepLineEvent.cpp: Fixed bug in SweepLineEventLessThen functor (didn't conform to strict weak - ordering). Note: this was introduced by previous commit. - git-svn-id: http://svn.osgeo.org/geos/trunk@883 + ordering). Note: this was introduced by previous commit. git-svn-id: http://svn.osgeo.org/geos/trunk@883 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-04 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@882 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@882 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-04 Sandro Santilli @@ -31630,25 +34317,24 @@ source/operation/valid/SimpleNestedRingTester.cpp, source/operation/valid/SweeplineNestedRingTester.cpp, source/operation/valid/TopologyValidationError.cpp: Ported revision - 1.38 of IsValidOp.java (adding closed Ring checks). Changed + 1.38 of IsValidOp.java (adding closed Ring checks). Changed NestedRingTester classes to use Coorinate pointers rather then - actual objects, to speedup NULL tests. Added JTS port revision when - applicable. git-svn-id: http://svn.osgeo.org/geos/trunk@881 + actual objects, to speedup NULL tests. Added JTS port revision when + applicable. git-svn-id: http://svn.osgeo.org/geos/trunk@881 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-04 Sandro Santilli * NEWS, source/operation/overlay/OverlayOp.cpp: Ported speedup of OverlayOp::insertUniqueEdge() from JTS-1.7 (rev 1.23) Updated NEWS - file. git-svn-id: http://svn.osgeo.org/geos/trunk@880 + file. git-svn-id: http://svn.osgeo.org/geos/trunk@880 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-03 Sandro Santilli * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, source/geomgraph/index/SimpleSweepLineIntersector.cpp: Fixed - constructors broke by previous commit git-svn-id: - http://svn.osgeo.org/geos/trunk@878 + constructors broke by previous commit git-svn-id: http://svn.osgeo.org/geos/trunk@878 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-03 Sandro Santilli @@ -31656,21 +34342,19 @@ * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, source/geomgraph/index/SimpleSweepLineIntersector.cpp, source/headers/geos/geomgraphindex.h: Indentation changes, small - vector memory allocation optimization. git-svn-id: - http://svn.osgeo.org/geos/trunk@877 + vector memory allocation optimization. git-svn-id: http://svn.osgeo.org/geos/trunk@877 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-03 Sandro Santilli * source/headers/geos/geom.h: Removed declaration of - PointCoordinateSequence and PointCoordinateSequenceFactory - git-svn-id: http://svn.osgeo.org/geos/trunk@876 + PointCoordinateSequence and PointCoordinateSequenceFactory git-svn-id: http://svn.osgeo.org/geos/trunk@876 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-11-01 Sandro Santilli * source/operation/valid/IsValidOp.cpp: Replaced finite() with - FINITE() calls. git-svn-id: http://svn.osgeo.org/geos/trunk@875 + FINITE() calls. git-svn-id: http://svn.osgeo.org/geos/trunk@875 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-27 Sandro Santilli @@ -31678,187 +34362,165 @@ * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, source/geomgraph/index/SweepLineEvent.cpp, source/headers/geos/geomgraphindex.h: Added a SweepLineEventLessThen - functor to be used by sort algorithm. git-svn-id: - http://svn.osgeo.org/geos/trunk@873 + functor to be used by sort algorithm. git-svn-id: http://svn.osgeo.org/geos/trunk@873 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-24 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h.in, source/capi/geostest.c: Changed constructors to take ownership of - GEOSGeom and GEOSCoordSeq objects. Changed inspectors to retain - ownership of GEOSGeom and GEOSCoordSeq objects. Added - GEOSGeom_clone() method. git-svn-id: - http://svn.osgeo.org/geos/trunk@872 + GEOSGeom and GEOSCoordSeq objects. Changed inspectors to retain + ownership of GEOSGeom and GEOSCoordSeq objects. Added + GEOSGeom_clone() method. git-svn-id: http://svn.osgeo.org/geos/trunk@872 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h.in: Added - GEOSGeom_clone() function git-svn-id: - http://svn.osgeo.org/geos/trunk@871 + GEOSGeom_clone() function git-svn-id: http://svn.osgeo.org/geos/trunk@871 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Sandro Santilli - * source/capi/geos_c.h.in: Added missing GEOS_DLL specifiers - git-svn-id: http://svn.osgeo.org/geos/trunk@870 + * source/capi/geos_c.h.in: Added missing GEOS_DLL specifiers git-svn-id: http://svn.osgeo.org/geos/trunk@870 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h.in, source/capi/geostest.c: Added fine-grained geometry constructors and - GEOSCoordSeq abstract data type. Renamed GEOSmakeCollection to - GEOSGeom_createCollection git-svn-id: - http://svn.osgeo.org/geos/trunk@869 + GEOSCoordSeq abstract data type. Renamed GEOSmakeCollection to + GEOSGeom_createCollection git-svn-id: http://svn.osgeo.org/geos/trunk@869 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Sandro Santilli - * configure.in: typo fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@868 + * configure.in: typo fixed git-svn-id: http://svn.osgeo.org/geos/trunk@868 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * AUTHORS: added myself to authors - isn't that cheeky! - git-svn-id: http://svn.osgeo.org/geos/trunk@867 + * AUTHORS: added myself to authors - isn't that cheeky! git-svn-id: http://svn.osgeo.org/geos/trunk@867 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * README: added note on source\makefile.vc git-svn-id: - http://svn.osgeo.org/geos/trunk@866 + * README: added note on source\makefile.vc git-svn-id: http://svn.osgeo.org/geos/trunk@866 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * source/Makefile.vc: added a wee readme git-svn-id: - http://svn.osgeo.org/geos/trunk@865 + * source/Makefile.vc: added a wee readme git-svn-id: http://svn.osgeo.org/geos/trunk@865 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * source/Makefile.vc: added DLL building, and geostest.exe - git-svn-id: http://svn.osgeo.org/geos/trunk@864 + * source/Makefile.vc: added DLL building, and geostest.exe git-svn-id: http://svn.osgeo.org/geos/trunk@864 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * source/capi/geos_c.h.in: need to DLL export C API git-svn-id: - http://svn.osgeo.org/geos/trunk@863 + * source/capi/geos_c.h.in: need to DLL export C API git-svn-id: http://svn.osgeo.org/geos/trunk@863 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * source/capi/geos_c.cpp: DLL Export functions git-svn-id: - http://svn.osgeo.org/geos/trunk@862 + * source/capi/geos_c.cpp: DLL Export functions git-svn-id: http://svn.osgeo.org/geos/trunk@862 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam * source/capi/geostest.c: avoid non-portable vasprintf, make big - buffer static git-svn-id: http://svn.osgeo.org/geos/trunk@861 + buffer static git-svn-id: http://svn.osgeo.org/geos/trunk@861 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-21 Frank Warmerdam - * source/Makefile.vc: updated for 3.0.0 and added C API - git-svn-id: http://svn.osgeo.org/geos/trunk@860 + * source/Makefile.vc: updated for 3.0.0 and added C API git-svn-id: http://svn.osgeo.org/geos/trunk@860 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-20 Frank Warmerdam * source/headers/geos/platform.h.vc: added getMachineByteOrder(), - convert to unix text mode git-svn-id: - http://svn.osgeo.org/geos/trunk@859 + convert to unix text mode git-svn-id: http://svn.osgeo.org/geos/trunk@859 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-19 Sandro Santilli * source/io/WKBReader.cpp: Added support for SRID flag in WKB (full - EWKB is accepted now) git-svn-id: - http://svn.osgeo.org/geos/trunk@858 + EWKB is accepted now) git-svn-id: http://svn.osgeo.org/geos/trunk@858 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-19 Sandro Santilli * source/headers/geos/io.h: Added input stream checks in - ByteOrderDataInStream, throwing ParseException on unexpected EOF - git-svn-id: http://svn.osgeo.org/geos/trunk@857 + ByteOrderDataInStream, throwing ParseException on unexpected EOF git-svn-id: http://svn.osgeo.org/geos/trunk@857 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h.in: Added - GetGeometryN, GetInteriorRingN, GetExteriorRing git-svn-id: - http://svn.osgeo.org/geos/trunk@856 + GetGeometryN, GetInteriorRingN, GetExteriorRing git-svn-id: http://svn.osgeo.org/geos/trunk@856 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/capi/geos_c.h.in: Added comments on exception returns for - Geometry info functions git-svn-id: - http://svn.osgeo.org/geos/trunk@855 + Geometry info functions git-svn-id: http://svn.osgeo.org/geos/trunk@855 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/capi/geos_c.cpp: Added missing exception handlers from - previous commit. Fixed GEOSGeomTypeId signatures. git-svn-id: - http://svn.osgeo.org/geos/trunk@854 + previous commit. Fixed GEOSGeomTypeId signatures. git-svn-id: http://svn.osgeo.org/geos/trunk@854 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/geom/Makefile.am: Removed GEOS_VERSION define (Geometry.cpp, the only file using this will use the one in - version.h) git-svn-id: http://svn.osgeo.org/geos/trunk@853 + version.h) git-svn-id: http://svn.osgeo.org/geos/trunk@853 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/capi/geos_c.h.in: Fixed GEOSGeom typedef to be accepted by C++ compilers, added extern "C" namespace for inclusion by C++ code - (really needed?) git-svn-id: http://svn.osgeo.org/geos/trunk@852 + (really needed?) git-svn-id: http://svn.osgeo.org/geos/trunk@852 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-10-17 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h.in, - source/capi/geostest.c: Added GEOSDistance() function. Trapped all + source/capi/geostest.c: Added GEOSDistance() function. Trapped all exceptions and reported using ERROR_MESSAGE rather then - NOTICE_MESSAGE. Changed WKB functions to use 'unsigned char' rather + NOTICE_MESSAGE. Changed WKB functions to use 'unsigned char' rather then 'char' Added missing GEOS_setWKBOutputDims() function in header - file. git-svn-id: http://svn.osgeo.org/geos/trunk@851 + file. git-svn-id: http://svn.osgeo.org/geos/trunk@851 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-28 Sandro Santilli * source/capi/geos_c.cpp: Added GEOS_setWKBOutputDims(int) function - to specify coordinate dimension in WKB output. git-svn-id: - http://svn.osgeo.org/geos/trunk@850 + to specify coordinate dimension in WKB output. git-svn-id: http://svn.osgeo.org/geos/trunk@850 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-28 Sandro Santilli * source/headers/geos/io.h, source/io/WKBWriter.cpp: WKBWriter ctor out-lined (will require changes in the near future, for higher - dimensions support), added support for 3d WKB output git-svn-id: - http://svn.osgeo.org/geos/trunk@849 + dimensions support), added support for 3d WKB output git-svn-id: http://svn.osgeo.org/geos/trunk@849 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-28 Sandro Santilli - * source/io/WKBReader.cpp: Cleanups in the printHEX function - git-svn-id: http://svn.osgeo.org/geos/trunk@848 + * source/io/WKBReader.cpp: Cleanups in the printHEX function git-svn-id: http://svn.osgeo.org/geos/trunk@848 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-27 Sandro Santilli * source/io/WKBReader.cpp: Ported JTS-1.7 use of PrecisionModel in - WKBReader git-svn-id: http://svn.osgeo.org/geos/trunk@847 + WKBReader git-svn-id: http://svn.osgeo.org/geos/trunk@847 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-27 Sandro Santilli @@ -31868,8 +34530,7 @@ change, fixed the bug by turning WKBReader.factory into a reference rather then a real object. ABI still breaks, but API at least is safe (we didn't release any WKB-aware package so breaking ABI is not - a big deal at this stage). git-svn-id: - http://svn.osgeo.org/geos/trunk@846 + a big deal at this stage). git-svn-id: http://svn.osgeo.org/geos/trunk@846 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-27 Sandro Santilli @@ -31878,34 +34539,32 @@ source/headers/geos/io.h, source/io/WKBReader.cpp: Fixed bug in WKBReader destroying the GeometryFactory used in Geometry construction. Changed it's definition to *require* a GeometryFactory - pointer parameter. git-svn-id: http://svn.osgeo.org/geos/trunk@845 + pointer parameter. git-svn-id: http://svn.osgeo.org/geos/trunk@845 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-27 Sandro Santilli * source/test/Makefile.am: Added XMLTester.h in XMLTester_SOURCES - list git-svn-id: http://svn.osgeo.org/geos/trunk@844 + list git-svn-id: http://svn.osgeo.org/geos/trunk@844 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli * source/io/WKBReader.cpp: Fixed handling of higher dimensional WKB - streams git-svn-id: http://svn.osgeo.org/geos/trunk@843 + streams git-svn-id: http://svn.osgeo.org/geos/trunk@843 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli * source/capi/Makefile.am: Modified GEOS_CAPI_VERSION to include - underlying GEOS version git-svn-id: - http://svn.osgeo.org/geos/trunk@842 + underlying GEOS version git-svn-id: http://svn.osgeo.org/geos/trunk@842 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli * configure.in, source/capi/Makefile.am, source/capi/geos_c.cpp, - source/capi/{geos_c.h => geos_c.h.in}: Moved C-api versioning to - top-level configure.in Added version info in geos_c.h git-svn-id: - http://svn.osgeo.org/geos/trunk@841 + source/capi/geos_c.h, source/capi/geos_c.h.in: Moved C-api + versioning to top-level configure.in Added version info in geos_c.h git-svn-id: http://svn.osgeo.org/geos/trunk@841 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli @@ -31914,20 +34573,18 @@ source/capi/geostest.c: Changed LineMerge interface to accept a single Geometry and return the simpler Geometry obtainable with the set of merger LineStrings. Fixed leaks in geostest, fixed a leak in - GEOSRelate(). git-svn-id: http://svn.osgeo.org/geos/trunk@840 + GEOSRelate(). git-svn-id: http://svn.osgeo.org/geos/trunk@840 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli * source/geom/PrecisionModel.cpp: Initializzation lists in - PrecisionModel ctors git-svn-id: - http://svn.osgeo.org/geos/trunk@839 + PrecisionModel ctors git-svn-id: http://svn.osgeo.org/geos/trunk@839 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli - * NEWS: Added changes in LineMerger git-svn-id: - http://svn.osgeo.org/geos/trunk@838 + * NEWS: Added changes in LineMerger git-svn-id: http://svn.osgeo.org/geos/trunk@838 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli @@ -31937,71 +34594,62 @@ source/operation/linemerge/LineMergeEdge.cpp, source/operation/linemerge/LineMergeGraph.cpp, source/operation/linemerge/LineMerger.cpp: Const correctness changes - in LineMerger package, and a few speedups. git-svn-id: - http://svn.osgeo.org/geos/trunk@837 + in LineMerger package, and a few speedups. git-svn-id: http://svn.osgeo.org/geos/trunk@837 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli - * source/capi/.cvsignore: Added .lo, .la and geostest git-svn-id: - http://svn.osgeo.org/geos/trunk@836 + * source/capi/.cvsignore: Added .lo, .la and geostest git-svn-id: http://svn.osgeo.org/geos/trunk@836 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-26 Sandro Santilli - * doc/example.cpp: Removed memory leak from WKB tester git-svn-id: - http://svn.osgeo.org/geos/trunk@835 + * doc/example.cpp: Removed memory leak from WKB tester git-svn-id: http://svn.osgeo.org/geos/trunk@835 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-23 Sandro Santilli * source/headers/geos/opLinemerge.h, source/operation/linemerge/LineMerger.cpp: Made LineMerger graph be - a real object (rather then a pointer to it) git-svn-id: - http://svn.osgeo.org/geos/trunk@834 + a real object (rather then a pointer to it) git-svn-id: http://svn.osgeo.org/geos/trunk@834 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-23 Sandro Santilli * source/capi/geos_c.cpp: Fixed export of GEOSPolygonize() and - GEOSMakeCollection() git-svn-id: - http://svn.osgeo.org/geos/trunk@833 + GEOSMakeCollection() git-svn-id: http://svn.osgeo.org/geos/trunk@833 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-23 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h: Added - GEOSMakeCollection. Changed GEOSGetCentroid to return an + GEOSMakeCollection. Changed GEOSGetCentroid to return an EmptyGeometry when no Centroid can be computed (Empty input, for - example). git-svn-id: http://svn.osgeo.org/geos/trunk@832 + example). git-svn-id: http://svn.osgeo.org/geos/trunk@832 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-19 Sandro Santilli - * NEWS: Added C api git-svn-id: - http://svn.osgeo.org/geos/trunk@831 + * NEWS: Added C api git-svn-id: http://svn.osgeo.org/geos/trunk@831 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-14 Sandro Santilli * source/capi/geos_c.h: Removed functions returning not-new GEOSGeom objects to avoid ambiguity whereas when to destroy returns. Added - not about memory management. git-svn-id: - http://svn.osgeo.org/geos/trunk@830 + not about memory management. git-svn-id: http://svn.osgeo.org/geos/trunk@830 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-14 Sandro Santilli * source/capi/geos_c.cpp, source/capi/geos_c.h, - source/capi/geostest.c: Added copyright notices and usage notes - git-svn-id: http://svn.osgeo.org/geos/trunk@829 + source/capi/geostest.c: Added copyright notices and usage notes git-svn-id: http://svn.osgeo.org/geos/trunk@829 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-14 Sandro Santilli * source/io/WKBWriter.cpp: Fixed bug writing WKB for all Multi* - geoms as Collections. git-svn-id: - http://svn.osgeo.org/geos/trunk@828 + geoms as Collections. git-svn-id: http://svn.osgeo.org/geos/trunk@828 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-14 Sandro Santilli @@ -32009,31 +34657,27 @@ * configure.in, source/Makefile.am, source/capi/.cvsignore, source/capi/Makefile.am, source/capi/geos_c.cpp, source/capi/geos_c.h, source/capi/geostest.c, source/capi/test.wkt: - Initial abstract C api. git-svn-id: - http://svn.osgeo.org/geos/trunk@827 + Initial abstract C api. git-svn-id: http://svn.osgeo.org/geos/trunk@827 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-14 Sandro Santilli - * source/io/WKBReader.cpp: Typo fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@826 + * source/io/WKBReader.cpp: Typo fixed git-svn-id: http://svn.osgeo.org/geos/trunk@826 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-09-03 Sandro Santilli * doc/example.cpp, source/geom/Makefile.am, source/headers/geos/ByteOrderDataInStreamT.h, - source/headers/geos/Makefile.am, source/headers/geos/WKBWriterT.h, - source/headers/geos/io.h, source/{headers/geos/WKBReaderT.h => - io/WKBReader.cpp}, source/io/WKBWriter.cpp: Reworked WKB I/O to - avoid use of templates and make better use of STL git-svn-id: - http://svn.osgeo.org/geos/trunk@825 + source/headers/geos/Makefile.am, source/headers/geos/WKBReaderT.h, + source/headers/geos/WKBWriterT.h, source/headers/geos/io.h, + source/io/WKBReader.cpp, source/io/WKBWriter.cpp: Reworked WKB I/O + to avoid use of templates and make better use of STL git-svn-id: http://svn.osgeo.org/geos/trunk@825 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-08-22 Sandro Santilli - * NEWS: Added 2.1.4 section git-svn-id: - http://svn.osgeo.org/geos/trunk@822 + * NEWS: Added 2.1.4 section git-svn-id: http://svn.osgeo.org/geos/trunk@822 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-08-22 Sandro Santilli @@ -32042,47 +34686,41 @@ source/operation/buffer/BufferBuilder.cpp, source/planargraph/planarDirectedEdgeStar.cpp: Fixed comparator functions used with STL sort() algorithm to implement - StrictWeakOrdering semantic. git-svn-id: - http://svn.osgeo.org/geos/trunk@821 + StrictWeakOrdering semantic. git-svn-id: http://svn.osgeo.org/geos/trunk@821 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-12 Sandro Santilli - * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@819 + * NEWS: updated git-svn-id: http://svn.osgeo.org/geos/trunk@819 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli * source/headers/geos/ByteOrderDataInStreamT.h, source/headers/geos/WKBReaderT.h, source/headers/geos/WKBWriterT.h: - Removed '_' prefix from header guards git-svn-id: - http://svn.osgeo.org/geos/trunk@818 + Removed '_' prefix from header guards git-svn-id: http://svn.osgeo.org/geos/trunk@818 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli * source/headers/geos/io.h, source/headers/geos/opOverlay.h, - source/headers/geos/platform.h.in: Cleaned up syntax git-svn-id: - http://svn.osgeo.org/geos/trunk@817 + source/headers/geos/platform.h.in: Cleaned up syntax git-svn-id: http://svn.osgeo.org/geos/trunk@817 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli - * doc/example.cpp: Commented out useless include git-svn-id: - http://svn.osgeo.org/geos/trunk@816 + * doc/example.cpp: Commented out useless include git-svn-id: http://svn.osgeo.org/geos/trunk@816 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli - * source/geom/Geometry.cpp: Added parens suggested by compiler - git-svn-id: http://svn.osgeo.org/geos/trunk@815 + * source/geom/Geometry.cpp: Added parens suggested by compiler git-svn-id: http://svn.osgeo.org/geos/trunk@815 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli * source/geomgraph/Edge.cpp, source/headers/geos/WKBReaderT.h: - Cleaned up signed/unsigned mismatches git-svn-id: - http://svn.osgeo.org/geos/trunk@814 + Cleaned up signed/unsigned mismatches git-svn-id: http://svn.osgeo.org/geos/trunk@814 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli @@ -32090,21 +34728,18 @@ * source/geomgraph/DirectedEdge.cpp, source/operation/buffer/BufferOp.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: Fixed - initializzazion lists git-svn-id: - http://svn.osgeo.org/geos/trunk@813 + initializzazion lists git-svn-id: http://svn.osgeo.org/geos/trunk@813 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli * source/headers/geos/geom.h: Made CoordinateSequence::getDimension - return unsigned int instead of int git-svn-id: - http://svn.osgeo.org/geos/trunk@812 + return unsigned int instead of int git-svn-id: http://svn.osgeo.org/geos/trunk@812 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-07-11 Sandro Santilli - * source/geom/Geometry.cpp: removed useless assignment git-svn-id: - http://svn.osgeo.org/geos/trunk@811 + * source/geom/Geometry.cpp: removed useless assignment git-svn-id: http://svn.osgeo.org/geos/trunk@811 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-30 Sandro Santilli @@ -32112,76 +34747,68 @@ * source/headers/geos/opBuffer.h, source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: Ported - SubgraphDepthLocator optimizations from JTS code git-svn-id: - http://svn.osgeo.org/geos/trunk@807 + SubgraphDepthLocator optimizations from JTS code git-svn-id: http://svn.osgeo.org/geos/trunk@807 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-28 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: Fixed a bug introduced by LineSegment skip - made LineSegment skip a - compile-time optione git-svn-id: - http://svn.osgeo.org/geos/trunk@803 + compile-time optione git-svn-id: http://svn.osgeo.org/geos/trunk@803 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-28 Sandro Santilli * source/test/XMLTester.cpp: Added number of points count as a - debugging aid git-svn-id: http://svn.osgeo.org/geos/trunk@802 + debugging aid git-svn-id: http://svn.osgeo.org/geos/trunk@802 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-28 Sandro Santilli - * NEWS: Added DepthSegmentLT bugfix git-svn-id: - http://svn.osgeo.org/geos/trunk@801 + * NEWS: Added DepthSegmentLT bugfix git-svn-id: http://svn.osgeo.org/geos/trunk@801 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-28 Sandro Santilli * source/headers/geos/opOverlay.h, source/operation/overlay/PointBuilder.cpp: improved extraction of - result points in overlay op git-svn-id: - http://svn.osgeo.org/geos/trunk@796 + result points in overlay op git-svn-id: http://svn.osgeo.org/geos/trunk@796 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-28 Sandro Santilli * source/geomgraph/Node.cpp: improved ::isIncidentEdgeInResult() - method git-svn-id: http://svn.osgeo.org/geos/trunk@794 + method git-svn-id: http://svn.osgeo.org/geos/trunk@794 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-27 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: Bugfix in - DepthSegmentLT as suggested by Graeme Hiebert git-svn-id: - http://svn.osgeo.org/geos/trunk@793 + DepthSegmentLT as suggested by Graeme Hiebert git-svn-id: http://svn.osgeo.org/geos/trunk@793 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-27 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: Fixed bug - just-introduced with optimization. git-svn-id: - http://svn.osgeo.org/geos/trunk@790 + just-introduced with optimization. git-svn-id: http://svn.osgeo.org/geos/trunk@790 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-27 Sandro Santilli * NEWS, source/operation/buffer/SubgraphDepthLocater.cpp: Reduced - Coordinate copies due to LineSegment overuse git-svn-id: - http://svn.osgeo.org/geos/trunk@789 + Coordinate copies due to LineSegment overuse git-svn-id: http://svn.osgeo.org/geos/trunk@789 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-25 Sandro Santilli * NEWS, source/geomgraph/Node.cpp, source/headers/geos/geomgraph.h, source/operation/overlay/PointBuilder.cpp: OverlayOp speedup (JTS - port) git-svn-id: http://svn.osgeo.org/geos/trunk@787 + port) git-svn-id: http://svn.osgeo.org/geos/trunk@787 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-24 Sandro Santilli - * NEWS: Added LineIntersector concrete type note git-svn-id: - http://svn.osgeo.org/geos/trunk@786 + * NEWS: Added LineIntersector concrete type note git-svn-id: http://svn.osgeo.org/geos/trunk@786 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-24 Sandro Santilli @@ -32199,9 +34826,10 @@ source/operation/relate/RelateComputer.cpp, source/operation/valid/ConsistentAreaTester.cpp, source/operation/valid/IsValidOp.cpp: Dropped RobustLineIntersector, - made LineIntersector a concrete class. Added + made LineIntersector a concrete class. Added - LineIntersector::hasIntersection(Coordinate&,Coordinate&,Coordinate&) to avoid computing intersection point (Z) when it's not necessary. git-svn-id: http://svn.osgeo.org/geos/trunk@785 5242fede-7e19-0410-aef8-94bd7d2200fb + LineIntersector::hasIntersection(Coordinate&,Coordinate&,Coordinate&)to avoid computing intersection point (Z) when it's not necessary. git-svn-id: http://svn.osgeo.org/geos/trunk@785 + 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-23 Sandro Santilli @@ -32209,162 +34837,144 @@ source/geom/LineString.cpp, source/geom/LinearRing.cpp, source/geom/Point.cpp, source/geom/Polygon.cpp, source/headers/geos/geom.h: Inlined and added missing ::clone() for - Geometry subclasses git-svn-id: - http://svn.osgeo.org/geos/trunk@784 + Geometry subclasses git-svn-id: http://svn.osgeo.org/geos/trunk@784 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-23 Sandro Santilli * NEWS, source/algorithm/CGAlgorithms.cpp: performance improvement - for CGAlgorithms::isOnLine() git-svn-id: - http://svn.osgeo.org/geos/trunk@782 + for CGAlgorithms::isOnLine() git-svn-id: http://svn.osgeo.org/geos/trunk@782 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-22 Sandro Santilli - * NEWS, source/geom/Geometry.cpp: Shortcircuit tests for Union - git-svn-id: http://svn.osgeo.org/geos/trunk@779 + * NEWS, source/geom/Geometry.cpp: Shortcircuit tests for Union git-svn-id: http://svn.osgeo.org/geos/trunk@779 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-22 Sandro Santilli * source/geom/GeometryFactory.cpp: Fixed bugus handling of - collections in ::buildGeometry git-svn-id: - http://svn.osgeo.org/geos/trunk@777 + collections in ::buildGeometry git-svn-id: http://svn.osgeo.org/geos/trunk@777 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-21 Sandro Santilli * NEWS, source/test/XMLTester.cpp, source/test/XMLTester.h: - XMLTester code cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@773 + XMLTester code cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@773 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-20 Sandro Santilli - * NEWS, source/test/Makefile.am: XMLTester installed by default - git-svn-id: http://svn.osgeo.org/geos/trunk@772 + * NEWS, source/test/Makefile.am: XMLTester installed by default git-svn-id: http://svn.osgeo.org/geos/trunk@772 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-17 Sandro Santilli * .cvsignore, ltmain.sh: Removed ltmain.sh from repository, will be - created by autogen.sh git-svn-id: - http://svn.osgeo.org/geos/trunk@770 + created by autogen.sh git-svn-id: http://svn.osgeo.org/geos/trunk@770 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-17 Sandro Santilli * NEWS, source/operation/polygonize/Polygonizer.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp: Polygonizer - segfault fix git-svn-id: http://svn.osgeo.org/geos/trunk@766 + segfault fix git-svn-id: http://svn.osgeo.org/geos/trunk@766 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-17 Sandro Santilli * source/geom/GeometryFactory.cpp: Fixed segfault in LinearRing and - LineString constructors git-svn-id: - http://svn.osgeo.org/geos/trunk@764 + LineString constructors git-svn-id: http://svn.osgeo.org/geos/trunk@764 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-14 Sandro Santilli * NEWS, source/test/XMLTester.cpp: Added workaround for mingw - Polygon name clash git-svn-id: http://svn.osgeo.org/geos/trunk@761 + Polygon name clash git-svn-id: http://svn.osgeo.org/geos/trunk@761 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-10 Sandro Santilli - * autogen.sh: Added libtoolize call git-svn-id: - http://svn.osgeo.org/geos/trunk@760 + * autogen.sh: Added libtoolize call git-svn-id: http://svn.osgeo.org/geos/trunk@760 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-10 Sandro Santilli * source/test/XMLTester.cpp: Added use declaration to make MingW - build work git-svn-id: http://svn.osgeo.org/geos/trunk@758 + build work git-svn-id: http://svn.osgeo.org/geos/trunk@758 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-08 Sandro Santilli - * INSTALL: Added GCC version requirement note git-svn-id: - http://svn.osgeo.org/geos/trunk@754 + * INSTALL: Added GCC version requirement note git-svn-id: http://svn.osgeo.org/geos/trunk@754 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-06-05 Sandro Santilli * CHANGES, NEWS: Changes file renamed back to NEWS, automake insists - on finding it. git-svn-id: http://svn.osgeo.org/geos/trunk@752 + on finding it. git-svn-id: http://svn.osgeo.org/geos/trunk@752 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-30 No Body - * NEWS: Blank news file to molfify new versions of autoconf - git-svn-id: http://svn.osgeo.org/geos/trunk@750 + * NEWS: Blank news file to molfify new versions of autoconf git-svn-id: http://svn.osgeo.org/geos/trunk@750 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-24 Sandro Santilli - * NEWS: Info moved into CHANGES file git-svn-id: - http://svn.osgeo.org/geos/trunk@749 + * NEWS: Info moved into CHANGES file git-svn-id: http://svn.osgeo.org/geos/trunk@749 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-24 Sandro Santilli - * CHANGES: Filled in section from 2.0.0 to 2.1.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@748 + * CHANGES: Filled in section from 2.0.0 to 2.1.1 git-svn-id: http://svn.osgeo.org/geos/trunk@748 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-24 Sandro Santilli - * CHANGES: Initial import git-svn-id: - http://svn.osgeo.org/geos/trunk@744 + * CHANGES: Initial import git-svn-id: http://svn.osgeo.org/geos/trunk@744 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-23 Sandro Santilli - * source/geom/Point.cpp: Added Refractions copyright git-svn-id: - http://svn.osgeo.org/geos/trunk@728 + * source/geom/Point.cpp: Added Refractions copyright git-svn-id: http://svn.osgeo.org/geos/trunk@728 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-23 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: Added debugging - output git-svn-id: http://svn.osgeo.org/geos/trunk@717 + output git-svn-id: http://svn.osgeo.org/geos/trunk@717 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-23 Sandro Santilli - * source/geom/LineSegment.cpp: Fixed bug in ::reverse() - git-svn-id: http://svn.osgeo.org/geos/trunk@716 + * source/geom/LineSegment.cpp: Fixed bug in ::reverse() git-svn-id: http://svn.osgeo.org/geos/trunk@716 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-22 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp: Fixed initialization - list order git-svn-id: http://svn.osgeo.org/geos/trunk@715 + list order git-svn-id: http://svn.osgeo.org/geos/trunk@715 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-22 Sandro Santilli * ChangeLog, source/headers/geos/Makefile.am: Added missing - WKBWriterT.h git-svn-id: http://svn.osgeo.org/geos/trunk@714 + WKBWriterT.h git-svn-id: http://svn.osgeo.org/geos/trunk@714 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-20 Sandro Santilli * source/geomgraph/Position.cpp, source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Code cleanups - git-svn-id: http://svn.osgeo.org/geos/trunk@713 + source/operation/buffer/SubgraphDepthLocater.cpp: Code cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@713 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-20 Sandro Santilli * source/operation/buffer/OffsetCurveSetBuilder.cpp: Fixed a bug in - addPolygonRing setting wrong depths on Edges git-svn-id: - http://svn.osgeo.org/geos/trunk@712 + addPolygonRing setting wrong depths on Edges git-svn-id: http://svn.osgeo.org/geos/trunk@712 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-19 Sandro Santilli @@ -32387,55 +34997,51 @@ CGAlgorithms instances substituting them with direct calls to the static functions. Interfaces accepting CGAlgorithms pointers kept for backward compatibility but modified to make the argument - optional. Fixed a small memory leak in - OffsetCurveBuilder::getRingCurve. Inlined some smaller functions - encountered during bug hunting. Updated Copyright notices in the - touched files. git-svn-id: http://svn.osgeo.org/geos/trunk@711 + optional. Fixed a small memory leak in + OffsetCurveBuilder::getRingCurve. Inlined some smaller functions + encountered during bug hunting. Updated Copyright notices in the + touched files. git-svn-id: http://svn.osgeo.org/geos/trunk@711 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-19 Sandro Santilli * source/test/testLeaksBig.xml: Added bogus multipolygon buffering - test git-svn-id: http://svn.osgeo.org/geos/trunk@710 + test git-svn-id: http://svn.osgeo.org/geos/trunk@710 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-13 Sandro Santilli * source/headers/geos/geom.h: Added default tolerance parameter for - equalsExact git-svn-id: http://svn.osgeo.org/geos/trunk@709 + equalsExact git-svn-id: http://svn.osgeo.org/geos/trunk@709 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-13 Sandro Santilli - * source/geom/Point.cpp: cleanups and indentations git-svn-id: - http://svn.osgeo.org/geos/trunk@708 + * source/geom/Point.cpp: cleanups and indentations git-svn-id: http://svn.osgeo.org/geos/trunk@708 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-13 Sandro Santilli * source/geom/Geometry.cpp: Added comment about 2D-only comparison - of ::equal(Coordinate, Coordinate, double) git-svn-id: - http://svn.osgeo.org/geos/trunk@707 + of ::equal(Coordinate, Coordinate, double) git-svn-id: http://svn.osgeo.org/geos/trunk@707 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-09 Sandro Santilli * source/headers/geos/WKBWriterT.h: Second argument to ::write made - mandatory. git-svn-id: http://svn.osgeo.org/geos/trunk@706 + mandatory. git-svn-id: http://svn.osgeo.org/geos/trunk@706 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-09 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp, source/headers/geos/geosAlgorithm.h: Ported JTS robustness patches - made by Martin on suggestions by Kevin. git-svn-id: - http://svn.osgeo.org/geos/trunk@705 + made by Martin on suggestions by Kevin. git-svn-id: http://svn.osgeo.org/geos/trunk@705 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-05-03 Sandro Santilli - * TODO: Added WKB TODOs git-svn-id: - http://svn.osgeo.org/geos/trunk@704 + * TODO: Added WKB TODOs git-svn-id: http://svn.osgeo.org/geos/trunk@704 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli @@ -32445,21 +35051,18 @@ source/headers/geos/geom.h, source/headers/geos/io.h, source/headers/geos/opOverlay.h, source/io/ByteOrderValues.cpp, source/operation/overlay/OverlayOp.cpp: Updated Doxygen - documentation and some Copyright headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@703 + documentation and some Copyright headers. git-svn-id: http://svn.osgeo.org/geos/trunk@703 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli - * source/headers/geos/io.h: Fixed biostringstream stream output. - git-svn-id: http://svn.osgeo.org/geos/trunk@702 + * source/headers/geos/io.h: Fixed biostringstream stream output. git-svn-id: http://svn.osgeo.org/geos/trunk@702 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli * doc/example.cpp: Made WKBReader use global_factory, for having WKB - reads produce same context of input geoms. git-svn-id: - http://svn.osgeo.org/geos/trunk@701 + reads produce same context of input geoms. git-svn-id: http://svn.osgeo.org/geos/trunk@701 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli @@ -32467,10 +35070,9 @@ * doc/example.cpp, source/headers/geos/WKBReaderT.h, source/headers/geos/WKBWriterT.h, source/headers/geos/io.h, source/io/ByteOrderValues.cpp: Typedef'ed biostringstream, preferred - parameter for WKB parser templates. Added << operator for - biostringstream. Typedef'ed WKBWriter and WKBReader to be - parametrized by biostringstream. Added WKBtest in doc/example.cpp - git-svn-id: http://svn.osgeo.org/geos/trunk@700 + parameter for WKB parser templates. Added << operator for + biostringstream. Typedef'ed WKBWriter and WKBReader to be + parametrized by biostringstream. Added WKBtest in doc/example.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@700 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli @@ -32484,34 +35086,31 @@ source/headers/geos/WKBReaderT.h, source/headers/geos/WKBWriterT.h, source/headers/geos/geom.h, source/headers/geos/io.h: Added new JTS interfaces for CoordinateSequence and factories, removed example - implementations to reduce maintainance costs. Added first + implementations to reduce maintainance costs. Added first implementation of WKBWriter, made ByteOrderDataInStream a template - class. git-svn-id: http://svn.osgeo.org/geos/trunk@699 + class. git-svn-id: http://svn.osgeo.org/geos/trunk@699 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-29 Sandro Santilli * source/headers/geos/platform.h.in: Added machine byte order - extractor git-svn-id: http://svn.osgeo.org/geos/trunk@698 + extractor git-svn-id: http://svn.osgeo.org/geos/trunk@698 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-21 Sandro Santilli - * configure.in: library version bumped to 3.0.0 git-svn-id: - http://svn.osgeo.org/geos/trunk@697 + * configure.in: library version bumped to 3.0.0 git-svn-id: http://svn.osgeo.org/geos/trunk@697 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-21 Sandro Santilli - * ChangeLog, NEWS: Updated chage logs git-svn-id: - http://svn.osgeo.org/geos/trunk@696 + * ChangeLog, NEWS: Updated chage logs git-svn-id: http://svn.osgeo.org/geos/trunk@696 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-21 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Removed useless Coordinate - copies in mergeZ() - patch by Safe Software git-svn-id: - http://svn.osgeo.org/geos/trunk@695 + copies in mergeZ() - patch by Safe Software git-svn-id: http://svn.osgeo.org/geos/trunk@695 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-20 Sandro Santilli @@ -32519,8 +35118,7 @@ * source/algorithm/NonRobustCGAlgorithms.cpp, source/algorithm/RobustCGAlgorithms.cpp, source/geom/Makefile.am: Removed NonRobustCGAlgorithms and RobustCGAlgorithms, already unused - (CGAlgorithms replaces both with robust implementation). - git-svn-id: http://svn.osgeo.org/geos/trunk@694 + (CGAlgorithms replaces both with robust implementation). git-svn-id: http://svn.osgeo.org/geos/trunk@694 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-20 Sandro Santilli @@ -32531,37 +35129,32 @@ source/headers/geos/geom.h, source/headers/geos/io.h, source/io/ByteOrderValues.cpp, source/io/WKBReader.cpp: Added initial implementation of WKBReaderT and ByteOrderDataInStreamT - class templates and ByteOrderValues class. Work is unfinished as + class templates and ByteOrderValues class. Work is unfinished as WKBReader requires new interface of CoordinateSequence taking higher - dimensions into account. git-svn-id: - http://svn.osgeo.org/geos/trunk@693 + dimensions into account. git-svn-id: http://svn.osgeo.org/geos/trunk@693 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-20 Sandro Santilli - * source/headers/geos.h: Added standard copyright header - git-svn-id: http://svn.osgeo.org/geos/trunk@692 + * source/headers/geos.h: Added standard copyright header git-svn-id: http://svn.osgeo.org/geos/trunk@692 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-19 Sandro Santilli - * source/geom/Point.cpp: Fixed segfault in ::isEmpty git-svn-id: - http://svn.osgeo.org/geos/trunk@691 + * source/geom/Point.cpp: Fixed segfault in ::isEmpty git-svn-id: http://svn.osgeo.org/geos/trunk@691 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-14 Sandro Santilli * source/headers/geos/io.h, source/io/StringTokenizer.cpp, source/io/WKTReader.cpp: Applied slightly modified patch by Cheng - Shan to speedup WKT parsing. git-svn-id: - http://svn.osgeo.org/geos/trunk@690 + Shan to speedup WKT parsing. git-svn-id: http://svn.osgeo.org/geos/trunk@690 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-07 Sandro Santilli * source/operation/valid/IsValidOp.cpp: Fixed bug throwing an - exception when a result could be returned instead (ported JTS patch) - git-svn-id: http://svn.osgeo.org/geos/trunk@689 + exception when a result could be returned instead (ported JTS patch) git-svn-id: http://svn.osgeo.org/geos/trunk@689 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-06 Sandro Santilli @@ -32576,41 +35169,36 @@ source/headers/geos/platform.h.in, source/noding/snapround/SegmentSnapper.cpp, source/planargraph/planarDirectedEdge.cpp: Applied patch from Jon - Schlueter (math.h => cmath; ieeefp.h in "C" block) git-svn-id: - http://svn.osgeo.org/geos/trunk@688 + Schlueter (math.h => cmath; ieeefp.h in "C" block) git-svn-id: http://svn.osgeo.org/geos/trunk@688 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-04-02 Sean Gillies * swig/python/setup.py: now supporting the win32 platform, thanks to - Howard Butler git-svn-id: http://svn.osgeo.org/geos/trunk@687 + Howard Butler git-svn-id: http://svn.osgeo.org/geos/trunk@687 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-03-26 Sandro Santilli * source/headers/geos/opPolygonize.h: Commented out - Polygonizer::LineStringAdder friendship git-svn-id: - http://svn.osgeo.org/geos/trunk@686 + Polygonizer::LineStringAdder friendship git-svn-id: http://svn.osgeo.org/geos/trunk@686 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-03-10 Sandro Santilli - * source/io/WKBReader.cpp: ported from current JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@685 + * source/io/WKBReader.cpp: ported from current JTS git-svn-id: http://svn.osgeo.org/geos/trunk@685 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-03-04 Sandro Santilli * source/algorithm/CGAlgorithms.cpp: Removed useless copy from - ::isOnLine() - suggested by Dale Lutz git-svn-id: - http://svn.osgeo.org/geos/trunk@684 + ::isOnLine() - suggested by Dale Lutz git-svn-id: http://svn.osgeo.org/geos/trunk@684 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-03-02 Sandro Santilli * source/headers/Makefile.am: Removed commented line, cousing - strange behaviours with autotools. git-svn-id: - http://svn.osgeo.org/geos/trunk@683 + strange behaviours with autotools. git-svn-id: http://svn.osgeo.org/geos/trunk@683 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli @@ -32618,8 +35206,7 @@ * source/headers/geos/noding.h, source/index/strtree/STRtree.cpp, source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp: Changed SegmentNode to contain a - *real* Coordinate (not a pointer) to reduce construction costs. - git-svn-id: http://svn.osgeo.org/geos/trunk@682 + *real* Coordinate (not a pointer) to reduce construction costs. git-svn-id: http://svn.osgeo.org/geos/trunk@682 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli @@ -32627,63 +35214,55 @@ * source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp, source/noding/MCQuadtreeNoder.cpp, source/operation/buffer/RightmostEdgeFinder.cpp: Reduced - CoordinateSequence::getSize() calls. git-svn-id: - http://svn.osgeo.org/geos/trunk@681 + CoordinateSequence::getSize() calls. git-svn-id: http://svn.osgeo.org/geos/trunk@681 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: cached - number of points in Edge git-svn-id: - http://svn.osgeo.org/geos/trunk@680 + number of points in Edge git-svn-id: http://svn.osgeo.org/geos/trunk@680 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli * source/headers/geos/noding.h, source/noding/SegmentString.cpp: - Cached number of points in CoordinateSequence. git-svn-id: - http://svn.osgeo.org/geos/trunk@679 + Cached number of points in CoordinateSequence. git-svn-id: http://svn.osgeo.org/geos/trunk@679 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli * source/noding/SegmentString.cpp: Reduced calls to - DefaultCoordinateSequence->getSize(). git-svn-id: - http://svn.osgeo.org/geos/trunk@678 + DefaultCoordinateSequence->getSize(). git-svn-id: http://svn.osgeo.org/geos/trunk@678 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli * source/headers/geos/indexStrtree.h, source/index/strtree/STRtree.cpp: STRtree::avg() and - STRtree::centreY() inlined. git-svn-id: - http://svn.osgeo.org/geos/trunk@677 + STRtree::centreY() inlined. git-svn-id: http://svn.osgeo.org/geos/trunk@677 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-22 Sandro Santilli - * source/geomgraph/Edge.cpp: Optimized Edge::equals(Edge *e) - git-svn-id: http://svn.osgeo.org/geos/trunk@676 + * source/geomgraph/Edge.cpp: Optimized Edge::equals(Edge *e) git-svn-id: http://svn.osgeo.org/geos/trunk@676 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-18 Sandro Santilli * source/test/XMLTester.cpp: Added support for point-per-quadrant - argument in buffer tests (using arg2). git-svn-id: - http://svn.osgeo.org/geos/trunk@675 + argument in buffer tests (using arg2). git-svn-id: http://svn.osgeo.org/geos/trunk@675 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-17 Sandro Santilli * source/operation/buffer/OffsetCurveBuilder.cpp: Commented out - unused variable. git-svn-id: http://svn.osgeo.org/geos/trunk@674 + unused variable. git-svn-id: http://svn.osgeo.org/geos/trunk@674 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-17 Sandro Santilli * source/headers/geos/geom.h: Applied patch from Jon Schlueter using - instead of git-svn-id: - http://svn.osgeo.org/geos/trunk@673 + instead of git-svn-id: http://svn.osgeo.org/geos/trunk@673 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-15 Sandro Santilli @@ -32699,15 +35278,14 @@ source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp, source/noding/MCQuadtreeNoder.cpp: Inlined most Envelope methods, reserved() memory for some vectors when the usage was known a - priori. git-svn-id: http://svn.osgeo.org/geos/trunk@672 + priori. git-svn-id: http://svn.osgeo.org/geos/trunk@672 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-11 Sandro Santilli * source/geom/Makefile.am, source/headers/Makefile.am, source/headers/geos/Makefile.am: Applied patch from Curtis Barrett - handling --includedir and --libdir params for configure. - git-svn-id: http://svn.osgeo.org/geos/trunk@671 + handling --includedir and --libdir params for configure. git-svn-id: http://svn.osgeo.org/geos/trunk@671 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-05 Sandro Santilli @@ -32735,62 +35313,55 @@ source/operation/valid/ConsistentAreaTester.cpp, source/operation/valid/IsValidOp.cpp: Changed geomgraph nodeMap to use Coordinate pointers as keys, reduces lots of other Coordinate - copies. git-svn-id: http://svn.osgeo.org/geos/trunk@670 + copies. git-svn-id: http://svn.osgeo.org/geos/trunk@670 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-04 Sandro Santilli * source/headers/geos/geom.h: Envelope destructor made non-virtual - to give compiler more static binding options. git-svn-id: - http://svn.osgeo.org/geos/trunk@669 + to give compiler more static binding options. git-svn-id: http://svn.osgeo.org/geos/trunk@669 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-04 Sandro Santilli * source/headers/geos/opBuffer.h, source/operation/buffer/BufferSubgraph.cpp: Changed ::computeDepths - to use a set instead of a vector for checking visited Edges. - git-svn-id: http://svn.osgeo.org/geos/trunk@668 + to use a set instead of a vector for checking visited Edges. git-svn-id: http://svn.osgeo.org/geos/trunk@668 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-04 Sandro Santilli * source/test/Makefile.am: Added rule to build staticXMLTester (for - profiling with gprof) git-svn-id: - http://svn.osgeo.org/geos/trunk@667 + profiling with gprof) git-svn-id: http://svn.osgeo.org/geos/trunk@667 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-03 Sandro Santilli - * source/geom/CoordinateSequence.cpp: more profiling label - git-svn-id: http://svn.osgeo.org/geos/trunk@666 + * source/geom/CoordinateSequence.cpp: more profiling label git-svn-id: http://svn.osgeo.org/geos/trunk@666 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-01 Sandro Santilli * source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp: more - profiling labels git-svn-id: http://svn.osgeo.org/geos/trunk@665 + profiling labels git-svn-id: http://svn.osgeo.org/geos/trunk@665 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-01 Sandro Santilli * source/geom/Envelope.cpp, - source/index/chain/indexMonotoneChain.cpp: Small optimizations. - git-svn-id: http://svn.osgeo.org/geos/trunk@664 + source/index/chain/indexMonotoneChain.cpp: Small optimizations. git-svn-id: http://svn.osgeo.org/geos/trunk@664 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-01 Sandro Santilli * source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: More profiler labels git-svn-id: - http://svn.osgeo.org/geos/trunk@663 + source/noding/SegmentString.cpp: More profiler labels git-svn-id: http://svn.osgeo.org/geos/trunk@663 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-01 Sandro Santilli * source/headers/geos/profiler.h, source/util/Profiler.cpp: Made - profiler start/stop inline git-svn-id: - http://svn.osgeo.org/geos/trunk@662 + profiler start/stop inline git-svn-id: http://svn.osgeo.org/geos/trunk@662 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-02-01 Sandro Santilli @@ -32799,22 +35370,20 @@ source/index/chain/MonotoneChainOverlapAction.cpp, source/noding/IteratedNoder.cpp, source/noding/SegmentNodeList.cpp, source/operation/buffer/BufferBuilder.cpp, source/util/Profiler.cpp: - More profiling labels. git-svn-id: - http://svn.osgeo.org/geos/trunk@661 + More profiling labels. git-svn-id: http://svn.osgeo.org/geos/trunk@661 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-31 Sandro Santilli * source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/STRtree.cpp, source/noding/MCQuadtreeNoder.cpp: - Small optimizations. git-svn-id: - http://svn.osgeo.org/geos/trunk@660 + Small optimizations. git-svn-id: http://svn.osgeo.org/geos/trunk@660 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-28 Sandro Santilli * source/io/ParseException.cpp: substituted sprintf calls with use - of ostringstream git-svn-id: http://svn.osgeo.org/geos/trunk@659 + of ostringstream git-svn-id: http://svn.osgeo.org/geos/trunk@659 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-28 Sandro Santilli @@ -32831,128 +35400,112 @@ source/index/quadtree/QuadTreeNodeBase.cpp, source/noding/SegmentNode.cpp, source/planargraph/planarDirectedEdge.cpp: Replaced sprintf uses - with ostringstream. git-svn-id: - http://svn.osgeo.org/geos/trunk@658 + with ostringstream. git-svn-id: http://svn.osgeo.org/geos/trunk@658 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-28 Sandro Santilli * source/geom/Coordinate.cpp: Removed sprintf usage, replaced with - sstream git-svn-id: http://svn.osgeo.org/geos/trunk@657 + sstream git-svn-id: http://svn.osgeo.org/geos/trunk@657 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-28 Sandro Santilli * source/geom/DefaultCoordinateSequence.cpp: removed sprintf usage, - ad ::toString call Coordinate::toString git-svn-id: - http://svn.osgeo.org/geos/trunk@656 + ad ::toString call Coordinate::toString git-svn-id: http://svn.osgeo.org/geos/trunk@656 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-18 Sandro Santilli * source/algorithm/LineIntersector.cpp: reverted previous change, - sign was actually stored in zgap git-svn-id: - http://svn.osgeo.org/geos/trunk@655 + sign was actually stored in zgap git-svn-id: http://svn.osgeo.org/geos/trunk@655 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-18 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp: Fixed interpolateZ - call using final intersection point instead of HCoordinate. - git-svn-id: http://svn.osgeo.org/geos/trunk@654 + call using final intersection point instead of HCoordinate. git-svn-id: http://svn.osgeo.org/geos/trunk@654 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-14 Sandro Santilli * source/algorithm/LineIntersector.cpp: Fixed Z interpolation to use - the correct sign git-svn-id: http://svn.osgeo.org/geos/trunk@653 + the correct sign git-svn-id: http://svn.osgeo.org/geos/trunk@653 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-03 Sandro Santilli * source/test/XMLTester.cpp: Changed polygonize op to return a - GeometryCollection git-svn-id: http://svn.osgeo.org/geos/trunk@652 + GeometryCollection git-svn-id: http://svn.osgeo.org/geos/trunk@652 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-03 Sandro Santilli * source/test/XMLTester.cpp: Fixed memory leaks just introduced for - Polygonizer test case. git-svn-id: - http://svn.osgeo.org/geos/trunk@651 + Polygonizer test case. git-svn-id: http://svn.osgeo.org/geos/trunk@651 5242fede-7e19-0410-aef8-94bd7d2200fb 2005-01-03 Sandro Santilli - * source/test/XMLTester.cpp: Added Polygonize test handling - git-svn-id: http://svn.osgeo.org/geos/trunk@650 + * source/test/XMLTester.cpp: Added Polygonize test handling git-svn-id: http://svn.osgeo.org/geos/trunk@650 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-30 Sandro Santilli - * source/test/XMLTester.cpp: Handled NULL result from getCentroid() - git-svn-id: http://svn.osgeo.org/geos/trunk@649 + * source/test/XMLTester.cpp: Handled NULL result from getCentroid() git-svn-id: http://svn.osgeo.org/geos/trunk@649 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-30 Sandro Santilli * source/geom/Geometry.cpp: Fixed a segfault on - EMPTYGEOM->getCeontroid() git-svn-id: - http://svn.osgeo.org/geos/trunk@648 + EMPTYGEOM->getCeontroid() git-svn-id: http://svn.osgeo.org/geos/trunk@648 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-30 Sandro Santilli * source/geom/Polygon.cpp: never return LinearRing or - MultiLinearRing from getBoundary git-svn-id: - http://svn.osgeo.org/geos/trunk@647 + MultiLinearRing from getBoundary git-svn-id: http://svn.osgeo.org/geos/trunk@647 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-30 Sandro Santilli * source/geom/GeometryFactory.cpp: input checking and class - promoting in createMultiLineString() git-svn-id: - http://svn.osgeo.org/geos/trunk@646 + promoting in createMultiLineString() git-svn-id: http://svn.osgeo.org/geos/trunk@646 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-22 Sandro Santilli * source/geom/util/GeometryEditor.cpp: Fixed a premature Geometry - destruction, Avoided CoordinateSequence copies when possible. - git-svn-id: http://svn.osgeo.org/geos/trunk@645 + destruction, Avoided CoordinateSequence copies when possible. git-svn-id: http://svn.osgeo.org/geos/trunk@645 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-16 Paul Ramsey - * configure.in: Bumped minor version number for 2.1.1 release. - git-svn-id: http://svn.osgeo.org/geos/trunk@644 + * configure.in: Bumped minor version number for 2.1.1 release. git-svn-id: http://svn.osgeo.org/geos/trunk@644 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-16 Sandro Santilli * source/geom/LinearRing.cpp, source/headers/geos/geom.h: Fixed - LinearRing::clone() to return LinearRing instead of LineString - git-svn-id: http://svn.osgeo.org/geos/trunk@643 + LinearRing::clone() to return LinearRing instead of LineString git-svn-id: http://svn.osgeo.org/geos/trunk@643 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-16 Sandro Santilli * swig/geos.i, swig/python/example.py: New patches from Niki Spahiev - (still unstable) git-svn-id: - http://svn.osgeo.org/geos/trunk@642 + (still unstable) git-svn-id: http://svn.osgeo.org/geos/trunk@642 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-16 Sandro Santilli * swig/python/example.py: Added python example by Niki Spahiev - git-svn-id: - http://svn.osgeo.org/geos/trunk@641 + git-svn-id: http://svn.osgeo.org/geos/trunk@641 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-16 Sandro Santilli * swig/geos.i: Applyed patches by Niki Spahiev - git-svn-id: - http://svn.osgeo.org/geos/trunk@640 + git-svn-id: http://svn.osgeo.org/geos/trunk@640 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-14 Sandro Santilli @@ -32963,60 +35516,52 @@ source/planargraph/planarDirectedEdge.cpp, source/planargraph/planarDirectedEdgeStar.cpp: Comments cleanup. PolygonizeGraph keeps track of generated CoordinateSequence for - delayed destruction. git-svn-id: - http://svn.osgeo.org/geos/trunk@638 + delayed destruction. git-svn-id: http://svn.osgeo.org/geos/trunk@638 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-13 Sandro Santilli * source/headers/geos/opPolygonize.h: Added a not about gcc 2.95.4 - required friendship git-svn-id: - http://svn.osgeo.org/geos/trunk@637 + required friendship git-svn-id: http://svn.osgeo.org/geos/trunk@637 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-13 Sandro Santilli - * source/geom/TopologyException.cpp: Fixed uninitialized Coordinate. - git-svn-id: http://svn.osgeo.org/geos/trunk@636 + * source/geom/TopologyException.cpp: Fixed uninitialized Coordinate. git-svn-id: http://svn.osgeo.org/geos/trunk@636 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-12 Sandro Santilli * source/headers/geos/Makefile.am: version.h and platform.h - installed again (missed when removed from dist) git-svn-id: - http://svn.osgeo.org/geos/trunk@635 + installed again (missed when removed from dist) git-svn-id: http://svn.osgeo.org/geos/trunk@635 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli * source/geom/MultiPolygon.cpp: Checked inner polys getBoundary - return for the single LineString case. git-svn-id: - http://svn.osgeo.org/geos/trunk@634 + return for the single LineString case. git-svn-id: http://svn.osgeo.org/geos/trunk@634 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli - * source/geom/GeometryCollection.cpp: cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@633 + * source/geom/GeometryCollection.cpp: cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@633 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli * source/test/testLeaksBig.xml: adjusted getBoundary expected - returns to match OGC specs git-svn-id: - http://svn.osgeo.org/geos/trunk@632 + returns to match OGC specs git-svn-id: http://svn.osgeo.org/geos/trunk@632 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: elevationMatrix deleted by - destructor git-svn-id: http://svn.osgeo.org/geos/trunk@631 + destructor git-svn-id: http://svn.osgeo.org/geos/trunk@631 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli - * source/io/Unload.cpp: Added default profiler instance cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@630 + * source/io/Unload.cpp: Added default profiler instance cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@630 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-08 Sandro Santilli @@ -33055,61 +35600,54 @@ source/operation/polygonize/Polygonizer.cpp, source/operation/valid/IsValidOp.cpp, source/test/XMLTester.cpp, source/util/GeometricShapeFactory.cpp: gcc warnings checked and - fixed, general cleanups. git-svn-id: - http://svn.osgeo.org/geos/trunk@629 + fixed, general cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@629 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-06 Sandro Santilli - * source/headers/geos/Makefile.am: Added timeval.h in distribution. - git-svn-id: http://svn.osgeo.org/geos/trunk@628 + * source/headers/geos/Makefile.am: Added timeval.h in distribution. git-svn-id: http://svn.osgeo.org/geos/trunk@628 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-05 Sandro Santilli - * VisualStudio/.cvsignore: initial revision git-svn-id: - http://svn.osgeo.org/geos/trunk@627 + * VisualStudio/.cvsignore: initial revision git-svn-id: http://svn.osgeo.org/geos/trunk@627 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-05 Sandro Santilli - * VisualStudio/Makefile.am: forgot to add git-svn-id: - http://svn.osgeo.org/geos/trunk@626 + * VisualStudio/Makefile.am: forgot to add git-svn-id: http://svn.osgeo.org/geos/trunk@626 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-05 Sandro Santilli * debian/control, debian/libgeos-doc.doc-base, debian/rules: - Modifications by Alex Bodnaru git-svn-id: - http://svn.osgeo.org/geos/trunk@625 + Modifications by Alex Bodnaru git-svn-id: http://svn.osgeo.org/geos/trunk@625 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-05 Sandro Santilli * configure.in, doc/Makefile.am, source/bigtest/Makefile.am, source/examples/Makefile.am, source/test/Makefile.am: Applied Norman - Vine patches for cleaner win32 build. git-svn-id: - http://svn.osgeo.org/geos/trunk@624 + Vine patches for cleaner win32 build. git-svn-id: http://svn.osgeo.org/geos/trunk@624 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-04 Sandro Santilli * source/Makefile.am, source/headers/geos/Makefile.am: Added source/Makefile.vc and source/headers/geos/platform.h.in in - distribution git-svn-id: http://svn.osgeo.org/geos/trunk@623 + distribution git-svn-id: http://svn.osgeo.org/geos/trunk@623 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-04 Sandro Santilli * Makefile.am, configure.in, source/headers/geos/Makefile.am: Added VisualStudio dir in distribution, removed platform.h and version.h - from it. git-svn-id: http://svn.osgeo.org/geos/trunk@622 + from it. git-svn-id: http://svn.osgeo.org/geos/trunk@622 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-04 Frank Warmerdam - * source/Makefile.vc: removed dll delete git-svn-id: - http://svn.osgeo.org/geos/trunk@621 + * source/Makefile.vc: removed dll delete git-svn-id: http://svn.osgeo.org/geos/trunk@621 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Sandro Santilli @@ -33119,60 +35657,51 @@ source/geom/LineString.cpp, source/geom/LinearRing.cpp, source/geom/PointCoordinateSequence.cpp, source/headers/geos/geom.h, source/util/Profiler.cpp: enforced const - return of CoordinateSequence::toVector() method to derivate classes. - git-svn-id: http://svn.osgeo.org/geos/trunk@620 + return of CoordinateSequence::toVector() method to derivate classes. git-svn-id: http://svn.osgeo.org/geos/trunk@620 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Frank Warmerdam - * source/headers/geos/platform.h.vc: added headers git-svn-id: - http://svn.osgeo.org/geos/trunk@619 + * source/headers/geos/platform.h.vc: added headers git-svn-id: http://svn.osgeo.org/geos/trunk@619 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Frank Warmerdam - * source/Makefile.vc: New git-svn-id: - http://svn.osgeo.org/geos/trunk@618 + * source/Makefile.vc: New git-svn-id: http://svn.osgeo.org/geos/trunk@618 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Frank Warmerdam * source/headers/geos/geom.h: update to use I64 on MSVC for 64 bit - integer constants, also toVector chg. git-svn-id: - http://svn.osgeo.org/geos/trunk@617 + integer constants, also toVector chg. git-svn-id: http://svn.osgeo.org/geos/trunk@617 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Frank Warmerdam - * source/headers/geos/profiler.h: dont try for sys/time.h with MSVC - git-svn-id: http://svn.osgeo.org/geos/trunk@616 + * source/headers/geos/profiler.h: dont try for sys/time.h with MSVC git-svn-id: http://svn.osgeo.org/geos/trunk@616 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-12-03 Frank Warmerdam - * source/headers/geos/platform.h.vc: New git-svn-id: - http://svn.osgeo.org/geos/trunk@615 + * source/headers/geos/platform.h.vc: New git-svn-id: http://svn.osgeo.org/geos/trunk@615 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-30 Sandro Santilli * source/headers/geos/profiler.h, source/headers/geos/timeval.h: - Added gettimeofday implementation for win32, curtesy of Wu Yongwei. - git-svn-id: http://svn.osgeo.org/geos/trunk@614 + Added gettimeofday implementation for win32, curtesy of Wu Yongwei. git-svn-id: http://svn.osgeo.org/geos/trunk@614 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-30 Sandro Santilli * source/headers/geos/platform.h.in: Removed inclusion of stdio.h, - which should now be useless. git-svn-id: - http://svn.osgeo.org/geos/trunk@613 + which should now be useless. git-svn-id: http://svn.osgeo.org/geos/trunk@613 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-30 Sandro Santilli * configure.in, source/headers/geos/platform.h.in: Added optional - inclusion of ieeefp.h on platform providing it. git-svn-id: - http://svn.osgeo.org/geos/trunk@612 + inclusion of ieeefp.h on platform providing it. git-svn-id: http://svn.osgeo.org/geos/trunk@612 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-29 Sandro Santilli @@ -33188,9 +35717,9 @@ source/operation/overlay/LineBuilder.cpp, source/operation/overlay/OverlayOp.cpp: Fixed a bug in LineIntersector::interpolateZ causing NaN values to come out. - Handled dimensional collapses in ElevationMatrix. Added ISNAN macro + Handled dimensional collapses in ElevationMatrix. Added ISNAN macro and changed ISNAN/FINITE macros to avoid dispendious isnan() and - finite() calls. git-svn-id: http://svn.osgeo.org/geos/trunk@611 + finite() calls. git-svn-id: http://svn.osgeo.org/geos/trunk@611 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-27 Sandro Santilli @@ -33198,8 +35727,7 @@ * debian/Makefile, debian/README.Debian, debian/changelog, debian/control, debian/libgeos-dev.install, debian/libgeos-dev.manpages, debian/rules, debian/shlibs.local: - Updated scripts by Alex Bodnaru, added Makefile git-svn-id: - http://svn.osgeo.org/geos/trunk@610 + Updated scripts by Alex Bodnaru, added Makefile git-svn-id: http://svn.osgeo.org/geos/trunk@610 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-26 Sandro Santilli @@ -33207,8 +35735,7 @@ * source/algorithm/LineIntersector.cpp, source/algorithm/RobustLineIntersector.cpp, source/geomgraph/Node.cpp, source/headers/geos/platform.h.in: Added - more FINITE calls, and added inf and -inf to FINITE checks - git-svn-id: http://svn.osgeo.org/geos/trunk@609 + more FINITE calls, and added inf and -inf to FINITE checks git-svn-id: http://svn.osgeo.org/geos/trunk@609 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-26 Sandro Santilli @@ -33218,33 +35745,31 @@ source/operation/overlay/ElevationMatrixCell.cpp, source/operation/overlay/ElevationMatrixFilter.cpp, source/operation/overlay/OverlayOp.cpp: Added FINITE(x) macro and - its use. Made input geoms average Z computation optional in - OverlayOp. git-svn-id: http://svn.osgeo.org/geos/trunk@608 + its use. Made input geoms average Z computation optional in + OverlayOp. git-svn-id: http://svn.osgeo.org/geos/trunk@608 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-24 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Stricter handling of - USE_ELEVATION_MATRIX define git-svn-id: - http://svn.osgeo.org/geos/trunk@607 + USE_ELEVATION_MATRIX define git-svn-id: http://svn.osgeo.org/geos/trunk@607 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-24 Sandro Santilli - * source/algorithm/LineIntersector.cpp: Cleanup of interpolateZ - git-svn-id: http://svn.osgeo.org/geos/trunk@606 + * source/algorithm/LineIntersector.cpp: Cleanup of interpolateZ git-svn-id: http://svn.osgeo.org/geos/trunk@606 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-24 Sandro Santilli * source/operation/overlay/ElevationMatrix.cpp: Handled boundary - cases in ::getCell git-svn-id: http://svn.osgeo.org/geos/trunk@605 + cases in ::getCell git-svn-id: http://svn.osgeo.org/geos/trunk@605 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-24 Sandro Santilli * source/operation/overlay/LineBuilder.cpp: Re-enabled Z propagation - in output lines. git-svn-id: http://svn.osgeo.org/geos/trunk@604 + in output lines. git-svn-id: http://svn.osgeo.org/geos/trunk@604 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-23 Sandro Santilli @@ -33258,8 +35783,7 @@ source/headers/geos/geosAlgorithm.h, source/operation/overlay/LineBuilder.cpp, source/operation/overlay/OverlayOp.cpp: Had LineIntersector compute - Z by interpolation. git-svn-id: - http://svn.osgeo.org/geos/trunk@603 + Z by interpolation. git-svn-id: http://svn.osgeo.org/geos/trunk@603 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-23 Sandro Santilli @@ -33273,35 +35797,31 @@ source/operation/overlay/ElevationMatrixFilter.cpp, source/operation/overlay/OverlayOp.cpp: Added ElevationMatrix class and components to do post-processing draping of overlayed - geometries. git-svn-id: http://svn.osgeo.org/geos/trunk@602 + geometries. git-svn-id: http://svn.osgeo.org/geos/trunk@602 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli * source/headers/geos/opOverlay.h, source/operation/overlay/OverlayOp.cpp: Added interpolation of - containing geometry's average Z for point_in_poly case. - git-svn-id: http://svn.osgeo.org/geos/trunk@601 + containing geometry's average Z for point_in_poly case. git-svn-id: http://svn.osgeo.org/geos/trunk@601 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp: Fixed a bug in - Collinear intersection Z computation git-svn-id: - http://svn.osgeo.org/geos/trunk@600 + Collinear intersection Z computation git-svn-id: http://svn.osgeo.org/geos/trunk@600 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli * source/geomgraph/EdgeIntersectionList.cpp: Forced use if computed - intersection point in ::createSplitEdge (for Z computation) - git-svn-id: http://svn.osgeo.org/geos/trunk@599 + intersection point in ::createSplitEdge (for Z computation) git-svn-id: http://svn.osgeo.org/geos/trunk@599 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli - * source/geomgraph/Edge.cpp: Added debugging lines git-svn-id: - http://svn.osgeo.org/geos/trunk@598 + * source/geomgraph/Edge.cpp: Added debugging lines git-svn-id: http://svn.osgeo.org/geos/trunk@598 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli @@ -33310,83 +35830,72 @@ source/geomgraph/GeometryGraph.cpp, source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, source/operation/overlay/OverlayOp.cpp: More debugging lines and - comments/indentation cleanups git-svn-id: - http://svn.osgeo.org/geos/trunk@597 + comments/indentation cleanups git-svn-id: http://svn.osgeo.org/geos/trunk@597 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-22 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp: Added Z computation - for CollinearIntersections git-svn-id: - http://svn.osgeo.org/geos/trunk@596 + for CollinearIntersections git-svn-id: http://svn.osgeo.org/geos/trunk@596 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * debian/README.Debian, debian/control, debian/libgeos-dev.install, - debian/rules: Scripts updates from Alex Bodnaru git-svn-id: - http://svn.osgeo.org/geos/trunk@595 + debian/rules: Scripts updates from Alex Bodnaru git-svn-id: http://svn.osgeo.org/geos/trunk@595 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/headers/geos/opOverlay.h, source/operation/overlay/LineBuilder.cpp: Added Z propagation for - overlay lines output. git-svn-id: - http://svn.osgeo.org/geos/trunk@594 + overlay lines output. git-svn-id: http://svn.osgeo.org/geos/trunk@594 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/headers/geos/opOverlay.h, source/operation/overlay/OverlayOp.cpp: Handled Z merging for point - on polygon boundary case. git-svn-id: - http://svn.osgeo.org/geos/trunk@593 + on polygon boundary case. git-svn-id: http://svn.osgeo.org/geos/trunk@593 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Added Z computation for - point on line case. git-svn-id: - http://svn.osgeo.org/geos/trunk@592 + point on line case. git-svn-id: http://svn.osgeo.org/geos/trunk@592 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/headers/geos/geomgraph.h: Added composing Z management - functions and elements for class Node git-svn-id: - http://svn.osgeo.org/geos/trunk@591 + functions and elements for class Node git-svn-id: http://svn.osgeo.org/geos/trunk@591 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli - * source/geomgraph/NodeMap.cpp: Fixed Z merging in addNode(Node *) - git-svn-id: http://svn.osgeo.org/geos/trunk@590 + * source/geomgraph/NodeMap.cpp: Fixed Z merging in addNode(Node *) git-svn-id: http://svn.osgeo.org/geos/trunk@590 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli - * source/geomgraph/NodeMap.cpp: Added Z merging in ::addNode - git-svn-id: http://svn.osgeo.org/geos/trunk@589 + * source/geomgraph/NodeMap.cpp: Added Z merging in ::addNode git-svn-id: http://svn.osgeo.org/geos/trunk@589 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/geomgraph/Node.cpp: Added management of vector of composing - Z values. git-svn-id: http://svn.osgeo.org/geos/trunk@588 + Z values. git-svn-id: http://svn.osgeo.org/geos/trunk@588 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp: Added Z computation in - point-segment intersection. git-svn-id: - http://svn.osgeo.org/geos/trunk@587 + point-segment intersection. git-svn-id: http://svn.osgeo.org/geos/trunk@587 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-20 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp: Reduced HEAP allocations. - git-svn-id: http://svn.osgeo.org/geos/trunk@586 + * source/algorithm/CGAlgorithms.cpp: Reduced HEAP allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@586 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-19 Sandro Santilli @@ -33397,35 +35906,30 @@ debian/libgeos-doc.doc-base, debian/libgeos-doc.docs, debian/libgeos.dirs, debian/libgeos.docs, debian/libgeos.install, debian/makedoc, debian/rules, debian/shlibs.local, debian/watch: - Added debian package builder scripts. git-svn-id: - http://svn.osgeo.org/geos/trunk@585 + Added debian package builder scripts. git-svn-id: http://svn.osgeo.org/geos/trunk@585 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-19 Sandro Santilli * source/index/quadtree/QuadTreeNode.cpp: Completely removed sprintf - usage, substituted by stringstream. git-svn-id: - http://svn.osgeo.org/geos/trunk@584 + usage, substituted by stringstream. git-svn-id: http://svn.osgeo.org/geos/trunk@584 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-19 Sandro Santilli * source/index/quadtree/QuadTreeNode.cpp: Added include - for sprintf recognition. git-svn-id: - http://svn.osgeo.org/geos/trunk@583 + for sprintf recognition. git-svn-id: http://svn.osgeo.org/geos/trunk@583 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-19 Sandro Santilli - * source/geomgraph/Node.cpp: COMPUTE_Z re-enabled by default - git-svn-id: http://svn.osgeo.org/geos/trunk@582 + * source/geomgraph/Node.cpp: COMPUTE_Z re-enabled by default git-svn-id: http://svn.osgeo.org/geos/trunk@582 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-19 Sandro Santilli * source/geomgraph/GeometryGraph.cpp: removed useless - CoordinateSequence copy in ::addLineString git-svn-id: - http://svn.osgeo.org/geos/trunk@581 + CoordinateSequence copy in ::addLineString git-svn-id: http://svn.osgeo.org/geos/trunk@581 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-17 Sandro Santilli @@ -33433,16 +35937,14 @@ * source/algorithm/RobustLineIntersector.cpp, source/geomgraph/Node.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PointBuilder.cpp: Changed COMPUTE_Z - defaults to be more conservative git-svn-id: - http://svn.osgeo.org/geos/trunk@580 + defaults to be more conservative git-svn-id: http://svn.osgeo.org/geos/trunk@580 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-17 Sandro Santilli * source/algorithm/RobustLineIntersector.cpp, source/geomgraph/index/SegmentIntersector.cpp: Fixed a bug in Z - computation and removed debugging output by default. git-svn-id: - http://svn.osgeo.org/geos/trunk@579 + computation and removed debugging output by default. git-svn-id: http://svn.osgeo.org/geos/trunk@579 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-17 Sandro Santilli @@ -33459,29 +35961,26 @@ source/headers/geos/operation.h, source/operation/GeometryGraphOperation.cpp, source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp: Indentation changes. Some - Z_COMPUTATION activated by default. git-svn-id: - http://svn.osgeo.org/geos/trunk@578 + source/operation/overlay/PointBuilder.cpp: Indentation changes. + Some Z_COMPUTATION activated by default. git-svn-id: http://svn.osgeo.org/geos/trunk@578 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-12 Sandro Santilli * source/geom/Polygon.cpp: Changed ::getBoundary() to return - LineString if polygon has no holes. (has required to pass OGC - conformance test T20) git-svn-id: - http://svn.osgeo.org/geos/trunk@576 + LineString if polygon has no holes. (has required to pass OGC + conformance test T20) git-svn-id: http://svn.osgeo.org/geos/trunk@576 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-09 Sandro Santilli * tools/geos-config.in: Removed -g -O2 from geos-config --cflags - output git-svn-id: http://svn.osgeo.org/geos/trunk@575 + output git-svn-id: http://svn.osgeo.org/geos/trunk@575 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli - * source/index/strtree/STRtree.cpp: Just another small improvement. - git-svn-id: http://svn.osgeo.org/geos/trunk@574 + * source/index/strtree/STRtree.cpp: Just another small improvement. git-svn-id: http://svn.osgeo.org/geos/trunk@574 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli @@ -33490,40 +35989,36 @@ source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/STRtree.cpp, source/noding/MCQuadtreeNoder.cpp, - source/operation/buffer/BufferOp.cpp: More performance tuning. - git-svn-id: http://svn.osgeo.org/geos/trunk@573 + source/operation/buffer/BufferOp.cpp: More performance tuning. git-svn-id: http://svn.osgeo.org/geos/trunk@573 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli - * source/headers/geos/Makefile.am: Added profiler.h git-svn-id: - http://svn.osgeo.org/geos/trunk@572 + * source/headers/geos/Makefile.am: Added profiler.h git-svn-id: http://svn.osgeo.org/geos/trunk@572 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli * source/util/Profiler.cpp: Added number of gathered timings in - output. git-svn-id: http://svn.osgeo.org/geos/trunk@571 + output. git-svn-id: http://svn.osgeo.org/geos/trunk@571 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli * source/util/Profiler.cpp: Profiler::get() always return a Profile - (new if not existant). git-svn-id: - http://svn.osgeo.org/geos/trunk@570 + (new if not existant). git-svn-id: http://svn.osgeo.org/geos/trunk@570 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli * source/geom/Envelope.cpp: Optimized the ::intersect function to - avoid nested function calls. git-svn-id: - http://svn.osgeo.org/geos/trunk@569 + avoid nested function calls. git-svn-id: http://svn.osgeo.org/geos/trunk@569 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-08 Sandro Santilli * source/headers/geos/geom.h: Moved Log lines at the bottom, and cut - oldest git-svn-id: http://svn.osgeo.org/geos/trunk@568 + oldest git-svn-id: http://svn.osgeo.org/geos/trunk@568 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-06 Sandro Santilli @@ -33531,13 +36026,12 @@ * source/algorithm/CGAlgorithms.cpp, source/headers/geos/geosAlgorithm.h, source/operation/valid/IsValidOp.cpp: Fixed CGAlgorithms::isCCW from - JTS port. Code cleanup in IsValidOp. git-svn-id: - http://svn.osgeo.org/geos/trunk@567 + JTS port. Code cleanup in IsValidOp. git-svn-id: http://svn.osgeo.org/geos/trunk@567 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-05 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@566 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@566 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-05 Sandro Santilli @@ -33547,9 +36041,8 @@ source/operation/valid/IsValidOp.cpp, source/operation/valid/TopologyValidationError.cpp: Made IsValidOp handle IllegalArgumentException throw from GeometryGraph as a sign - of invalidity (just for Polygon geometries). Removed leaks generated - by this specific exception. git-svn-id: - http://svn.osgeo.org/geos/trunk@565 + of invalidity (just for Polygon geometries). Removed leaks + generated by this specific exception. git-svn-id: http://svn.osgeo.org/geos/trunk@565 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-04 Sandro Santilli @@ -33568,69 +36061,62 @@ source/operation/buffer/BufferOp.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/test/XMLTester.cpp: Cleanups, initializers list, profiling. - git-svn-id: http://svn.osgeo.org/geos/trunk@564 + source/test/XMLTester.cpp: Cleanups, initializers list, profiling. git-svn-id: http://svn.osgeo.org/geos/trunk@564 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-04 Sandro Santilli * source/headers/geos/indexQuadtree.h, source/headers/geos/profiler.h, - source/index/quadtree/DoubleBits.cpp: Unlinked new documentation. - git-svn-id: http://svn.osgeo.org/geos/trunk@563 + source/index/quadtree/DoubleBits.cpp: Unlinked new documentation. git-svn-id: http://svn.osgeo.org/geos/trunk@563 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-03 Sandro Santilli * source/index/quadtree/DoubleBits.cpp: Slightly modified log/log2 - based algo to better handle numbers in the range 0-1. git-svn-id: - http://svn.osgeo.org/geos/trunk@562 + based algo to better handle numbers in the range 0-1. git-svn-id: http://svn.osgeo.org/geos/trunk@562 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli * source/headers/geos/indexQuadtree.h: Fixed ieee-754 detection - switch git-svn-id: http://svn.osgeo.org/geos/trunk@561 + switch git-svn-id: http://svn.osgeo.org/geos/trunk@561 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@560 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@560 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli * source/headers/geos/indexQuadtree.h: Autodetect availability of - IEEE-754 FP git-svn-id: http://svn.osgeo.org/geos/trunk@559 + IEEE-754 FP git-svn-id: http://svn.osgeo.org/geos/trunk@559 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli * source/headers/geos/indexQuadtree.h, source/index/quadtree/DoubleBits.cpp: Moved ASSUME_IEEE_DOUBLE - define from DoubleBits.cpp to indexQuadtree.h. Fixed a bug in + define from DoubleBits.cpp to indexQuadtree.h. Fixed a bug in powerOf2(). Made the !IEEE version less prone to round-offs (still - has approximation errors). git-svn-id: - http://svn.osgeo.org/geos/trunk@558 + has approximation errors). git-svn-id: http://svn.osgeo.org/geos/trunk@558 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli * source/index/quadtree/DoubleBits.cpp: Fixed bug in IEEE-based - exponent and PowerOf2 computation, but disabled at compile time. - git-svn-id: http://svn.osgeo.org/geos/trunk@557 + exponent and PowerOf2 computation, but disabled at compile time. git-svn-id: http://svn.osgeo.org/geos/trunk@557 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli - * source/noding/MCQuadtreeNoder.cpp: Added more profiling. - git-svn-id: http://svn.osgeo.org/geos/trunk@556 + * source/noding/MCQuadtreeNoder.cpp: Added more profiling. git-svn-id: http://svn.osgeo.org/geos/trunk@556 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-02 Sandro Santilli - * source/test/XMLTester.cpp: Added timer for buffer test. - git-svn-id: http://svn.osgeo.org/geos/trunk@555 + * source/test/XMLTester.cpp: Added timer for buffer test. git-svn-id: http://svn.osgeo.org/geos/trunk@555 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-11-01 Sandro Santilli @@ -33658,22 +36144,20 @@ source/noding/nodingSegmentIntersector.cpp, source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferOp.cpp, source/util/Profiler.cpp: - Added Profiler code. Temporarly patched a bug in DoubleBits (must - check drawbacks). Various cleanups and speedups. git-svn-id: - http://svn.osgeo.org/geos/trunk@554 + Added Profiler code. Temporarly patched a bug in DoubleBits (must + check drawbacks). Various cleanups and speedups. git-svn-id: http://svn.osgeo.org/geos/trunk@554 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-27 Sandro Santilli * source/operation/polygonize/Polygonizer.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp: Added some - debugging lines (disabled by default) git-svn-id: - http://svn.osgeo.org/geos/trunk@553 + debugging lines (disabled by default) git-svn-id: http://svn.osgeo.org/geos/trunk@553 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-27 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@552 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@552 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-26 Sandro Santilli @@ -33682,20 +36166,18 @@ source/headers/geos/indexChain.h, source/headers/geos/indexStrtree.h, source/headers/geos/spatialIndex.h: Removed slash-stars in comments - to remove annoying compiler warnings. git-svn-id: - http://svn.osgeo.org/geos/trunk@551 + to remove annoying compiler warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@551 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-26 Sandro Santilli * NEWS, configure.in: current:revision:age set to 3.0.1 (will be - release 2.1.0). added news. git-svn-id: - http://svn.osgeo.org/geos/trunk@550 + release 2.1.0). added news. git-svn-id: http://svn.osgeo.org/geos/trunk@550 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-26 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@549 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@549 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-26 Sandro Santilli @@ -33703,8 +36185,7 @@ * source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp: Some more - intentation and envelope equality check fix. git-svn-id: - http://svn.osgeo.org/geos/trunk@548 + intentation and envelope equality check fix. git-svn-id: http://svn.osgeo.org/geos/trunk@548 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-21 Sandro Santilli @@ -33722,21 +36203,18 @@ source/operation/GeometryGraphOperation.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PointBuilder.cpp: Indentation changes and - some more COMPUTE_Z rules git-svn-id: - http://svn.osgeo.org/geos/trunk@547 + some more COMPUTE_Z rules git-svn-id: http://svn.osgeo.org/geos/trunk@547 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-21 Sandro Santilli - * source/io/WKTReader.cpp: Fixed bug introduced by previous patch. - git-svn-id: http://svn.osgeo.org/geos/trunk@546 + * source/io/WKTReader.cpp: Fixed bug introduced by previous patch. git-svn-id: http://svn.osgeo.org/geos/trunk@546 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-21 Sandro Santilli * source/io/WKTReader.cpp: Removed leak in ::readPolygonText - reported by Carlos A. Rueda git-svn-id: - http://svn.osgeo.org/geos/trunk@545 + reported by Carlos A. Rueda git-svn-id: http://svn.osgeo.org/geos/trunk@545 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-20 Sandro Santilli @@ -33755,12 +36233,12 @@ source/io/WKTWriter.cpp, source/operation/overlay/LineBuilder.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PointBuilder.cpp: Initial approach to 2.5d - intersection() git-svn-id: http://svn.osgeo.org/geos/trunk@544 + intersection() git-svn-id: http://svn.osgeo.org/geos/trunk@544 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-19 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@543 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@543 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-19 Sandro Santilli @@ -33777,8 +36255,7 @@ source/planargraph/planarDirectedEdge.cpp, source/planargraph/planarNode.cpp, source/planargraph/planarNodeMap.cpp: Fixed many leaks and bugs in - Polygonizer. Output still bogus. git-svn-id: - http://svn.osgeo.org/geos/trunk@542 + Polygonizer. Output still bogus. git-svn-id: http://svn.osgeo.org/geos/trunk@542 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-18 Sandro Santilli @@ -33788,7 +36265,7 @@ swig/python/tests/.cvsignore, swig/python/tests/Makefile.am, swig/python/tests/cases/.cvsignore, swig/python/tests/cases/Makefile.am: swig interface added to - distribution. git-svn-id: http://svn.osgeo.org/geos/trunk@541 + distribution. git-svn-id: http://svn.osgeo.org/geos/trunk@541 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-10-13 Sandro Santilli @@ -33813,95 +36290,85 @@ source/planargraph/planarNode.cpp, source/planargraph/planarNodeMap.cpp, source/planargraph/planarPlanarGraph.cpp: Added missing linemerge - and polygonize operation. Bug fixes and leaks removal from the newly - added modules and planargraph (used by them). Some comments and - indentation changes. git-svn-id: - http://svn.osgeo.org/geos/trunk@540 + and polygonize operation. Bug fixes and leaks removal from the + newly added modules and planargraph (used by them). Some comments + and indentation changes. git-svn-id: http://svn.osgeo.org/geos/trunk@540 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-23 Sandro Santilli * source/geom/CoordinateSequence.cpp: Fixed a bug in ::reverse - (thanks to Elliott Edwards) git-svn-id: - http://svn.osgeo.org/geos/trunk@539 + (thanks to Elliott Edwards) git-svn-id: http://svn.osgeo.org/geos/trunk@539 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-23 Paul Ramsey - * configure.in: Back minor version back to 2.0.1 git-svn-id: - http://svn.osgeo.org/geos/trunk@538 + * configure.in: Back minor version back to 2.0.1 git-svn-id: http://svn.osgeo.org/geos/trunk@538 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-23 Paul Ramsey - * configure.in: Bumped minor version to 2.0.2 after 2.0.1 release. - git-svn-id: http://svn.osgeo.org/geos/trunk@537 + * configure.in: Bumped minor version to 2.0.2 after 2.0.1 release. git-svn-id: http://svn.osgeo.org/geos/trunk@537 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-21 Sandro Santilli * source/precision/SimpleGeometryPrecisionReducer.cpp: fixed a - mis-initialization bug in ::reduce git-svn-id: - http://svn.osgeo.org/geos/trunk@536 + mis-initialization bug in ::reduce git-svn-id: http://svn.osgeo.org/geos/trunk@536 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-21 Sandro Santilli * source/index/quadtree/DoubleBits.cpp: Removed useless auto_ptr - usage in ::exponent git-svn-id: - http://svn.osgeo.org/geos/trunk@535 + usage in ::exponent git-svn-id: http://svn.osgeo.org/geos/trunk@535 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-16 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@534 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@534 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-16 Sandro Santilli * source/geom/Geometry.cpp: Finer short-circuit tests for equals, - within, contains. git-svn-id: http://svn.osgeo.org/geos/trunk@533 + within, contains. git-svn-id: http://svn.osgeo.org/geos/trunk@533 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-16 Sandro Santilli * source/geom/Envelope.cpp, source/headers/geos/geom.h: Added - Envelope::equals git-svn-id: http://svn.osgeo.org/geos/trunk@532 + Envelope::equals git-svn-id: http://svn.osgeo.org/geos/trunk@532 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-16 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@531 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@531 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-16 Sandro Santilli * source/geom/Geometry.cpp: Added short-circuit tests. Can be - disabled at compile-time git-svn-id: - http://svn.osgeo.org/geos/trunk@530 + disabled at compile-time git-svn-id: http://svn.osgeo.org/geos/trunk@530 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli - * source/operation/valid/IsValidOp.cpp: comments cleanup - git-svn-id: http://svn.osgeo.org/geos/trunk@529 + * source/operation/valid/IsValidOp.cpp: comments cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@529 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@528 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@528 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli - * configure.in: Updated version number git-svn-id: - http://svn.osgeo.org/geos/trunk@527 + * configure.in: Updated version number git-svn-id: http://svn.osgeo.org/geos/trunk@527 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli - * source/test/XMLTester.cpp: Added missing newline at end of output - git-svn-id: http://svn.osgeo.org/geos/trunk@526 + * source/test/XMLTester.cpp: Added missing newline at end of output git-svn-id: http://svn.osgeo.org/geos/trunk@526 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli @@ -33909,70 +36376,63 @@ * source/geom/MultiPoint.cpp, source/geom/Point.cpp, source/headers/geos/geom.h, source/headers/geos/opValid.h, source/operation/valid/IsValidOp.cpp: Made Point and MultiPoint - subject to Validity tests. git-svn-id: - http://svn.osgeo.org/geos/trunk@525 + subject to Validity tests. git-svn-id: http://svn.osgeo.org/geos/trunk@525 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli * source/operation/valid/TopologyValidationError.cpp: Added - INVALID_COORDINATE code num and error message. git-svn-id: - http://svn.osgeo.org/geos/trunk@524 + INVALID_COORDINATE code num and error message. git-svn-id: http://svn.osgeo.org/geos/trunk@524 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli * TODO, source/headers/geos/geosAlgorithm.h, source/headers/geos/opValid.h, source/operation/valid/IsValidOp.cpp: - Added invalid coordinates checks in IsValidOp. Cleanups. - git-svn-id: http://svn.osgeo.org/geos/trunk@523 + Added invalid coordinates checks in IsValidOp. Cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@523 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli * source/headers/geos/opValid.h, source/operation/valid/IsValidOp.cpp: Added - IsValidOp::isValid(Coordinate &) git-svn-id: - http://svn.osgeo.org/geos/trunk@522 + IsValidOp::isValid(Coordinate &) git-svn-id: http://svn.osgeo.org/geos/trunk@522 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-13 Sandro Santilli - * source/geom/LineString.cpp: Ported fix in LineString::isCoordinate - git-svn-id: http://svn.osgeo.org/geos/trunk@521 + * source/geom/LineString.cpp: Ported fix in LineString::isCoordinate git-svn-id: http://svn.osgeo.org/geos/trunk@521 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-12 Paul Ramsey * source/geom/LineString.cpp, source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp: Casting changes to allow OS/X - compilation. git-svn-id: http://svn.osgeo.org/geos/trunk@520 + compilation. git-svn-id: http://svn.osgeo.org/geos/trunk@520 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-09-07 Sandro Santilli * source/headers/geos/geom.h: Fixed doxygen malformed comment for - Coordinate class git-svn-id: http://svn.osgeo.org/geos/trunk@519 + Coordinate class git-svn-id: http://svn.osgeo.org/geos/trunk@519 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-08-20 Paul Ramsey * source/bigtest/Makefile.am: Added reference to bigtest.h so 'make - dist' includes it properly. git-svn-id: - http://svn.osgeo.org/geos/trunk@517 + dist' includes it properly. git-svn-id: http://svn.osgeo.org/geos/trunk@517 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-08-20 Paul Ramsey * configure.in: Removed examples from build directories for release - (they don't build now). git-svn-id: - http://svn.osgeo.org/geos/trunk@516 + (they don't build now). git-svn-id: http://svn.osgeo.org/geos/trunk@516 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-08-04 Sandro Santilli * source/operation/relate/RelateComputer.cpp: comments lift, stack - allocation reduced git-svn-id: http://svn.osgeo.org/geos/trunk@515 + allocation reduced git-svn-id: http://svn.osgeo.org/geos/trunk@515 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-27 Sandro Santilli @@ -34001,30 +36461,26 @@ source/operation/valid/QuadtreeNestedRingTester.cpp, source/operation/valid/SweeplineNestedRingTester.cpp: Geometry::getEnvelopeInternal() changed to return a const Envelope - *. This should reduce object copies as once computed the envelope of - a geometry remains the same. git-svn-id: - http://svn.osgeo.org/geos/trunk@514 + *. This should reduce object copies as once computed the envelope + of a geometry remains the same. git-svn-id: http://svn.osgeo.org/geos/trunk@514 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-26 Sean Gillies - * AUTHORS: added to AUTHORS git-svn-id: - http://svn.osgeo.org/geos/trunk@513 + * AUTHORS: added to AUTHORS git-svn-id: http://svn.osgeo.org/geos/trunk@513 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-26 Sean Gillies * swig/geos.i, swig/python/tests/cases/pointtest.py, swig/python/tests/cases/wkttest.py: added simple exception handling - on all method calls git-svn-id: - http://svn.osgeo.org/geos/trunk@512 + on all method calls git-svn-id: http://svn.osgeo.org/geos/trunk@512 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-26 Sandro Santilli * source/headers/geos/geom.h: Removed dangling - MultiPoint::isClosed() method definition. git-svn-id: - http://svn.osgeo.org/geos/trunk@511 + MultiPoint::isClosed() method definition. git-svn-id: http://svn.osgeo.org/geos/trunk@511 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-26 Sean Gillies @@ -34033,8 +36489,7 @@ swig/python/tests/cases/wkttest.py, swig/python/tests/runtests.py: wrapped up WKT reader and writer and added two test cases to check that it works. found a bug where the WKT reader crashes the program - in the case of poorly formatted WKT string. git-svn-id: - http://svn.osgeo.org/geos/trunk@510 + in the case of poorly formatted WKT string. git-svn-id: http://svn.osgeo.org/geos/trunk@510 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-25 Sean Gillies @@ -34047,8 +36502,7 @@ SWIG interface for high level language modules, Python setup script, and beginning of a unit testing framework under swig/python/tests. The build works for today's CVS GEOS, and the test passes -- means - that a module can be built, installed, and imported. git-svn-id: - http://svn.osgeo.org/geos/trunk@509 + that a module can be built, installed, and imported. git-svn-id: http://svn.osgeo.org/geos/trunk@509 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-22 Sandro Santilli @@ -34056,7 +36510,7 @@ * TODO, doc/example.cpp, source/geom/Geometry.cpp, source/headers/geos/geom.h: runtime version extractor functions split. geos::version() is now geos::geosversion() and - geos::jtsport() git-svn-id: http://svn.osgeo.org/geos/trunk@508 + geos::jtsport() git-svn-id: http://svn.osgeo.org/geos/trunk@508 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-22 Sandro Santilli @@ -34064,22 +36518,19 @@ * TODO, source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, source/headers/geos/geom.h: - Documentation updates, memory leaks fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@507 + Documentation updates, memory leaks fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@507 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-22 Sandro Santilli - * source/headers/geos/geom.h: Changed getCoordinatesRO description. - git-svn-id: http://svn.osgeo.org/geos/trunk@506 + * source/headers/geos/geom.h: Changed getCoordinatesRO description. git-svn-id: http://svn.osgeo.org/geos/trunk@506 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-22 Sandro Santilli * source/geom/Coordinate.cpp, source/geom/GeometryCollection.cpp, source/geom/Polygon.cpp, source/headers/geos/geom.h: Documented - missing geometry functions. git-svn-id: - http://svn.osgeo.org/geos/trunk@505 + missing geometry functions. git-svn-id: http://svn.osgeo.org/geos/trunk@505 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-21 Sandro Santilli @@ -34090,20 +36541,17 @@ source/geom/PrecisionModel.cpp, source/geomgraph/Edge.cpp, source/headers/geos.h, source/headers/geos/geom.h: CoordinateSequence::atLeastNCoordinatesOrNothing definition fix. - Documentation fixes. git-svn-id: - http://svn.osgeo.org/geos/trunk@504 + Documentation fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@504 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-21 Sandro Santilli - * NEWS, README, TODO: Updated git-svn-id: - http://svn.osgeo.org/geos/trunk@503 + * NEWS, README, TODO: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@503 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-20 Sandro Santilli - * doc/README: Updated doxygen rule git-svn-id: - http://svn.osgeo.org/geos/trunk@502 + * doc/README: Updated doxygen rule git-svn-id: http://svn.osgeo.org/geos/trunk@502 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-20 Sandro Santilli @@ -34111,16 +36559,14 @@ * doc/Doxyfile.in, source/geom/CoordinateList.cpp, source/geom/Geometry.cpp, source/headers/geos/geom.h, source/headers/geos/opDistance.h: Fixed a bug in opDistance.h. - Removed doxygen tags from obsoleted CoordinateList.cpp. Got doxygen - to run with no warnings. git-svn-id: - http://svn.osgeo.org/geos/trunk@501 + Removed doxygen tags from obsoleted CoordinateList.cpp. Got doxygen + to run with no warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@501 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Paul Ramsey * doc/Makefile.am: Changed doxygen target to be more "make dist" - friendly. (and allow autogeneration of CVS snapshot to work again.) - git-svn-id: http://svn.osgeo.org/geos/trunk@500 + friendly. (and allow autogeneration of CVS snapshot to work again.) git-svn-id: http://svn.osgeo.org/geos/trunk@500 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli @@ -34143,240 +36589,213 @@ source/headers/geos/opValid.h, source/headers/geos/operation.h, source/headers/geos/planargraph.h, source/headers/geos/precision.h, source/headers/geos/spatialIndex.h, source/io/WKTWriter.cpp: - Documentation fixes git-svn-id: - http://svn.osgeo.org/geos/trunk@499 + Documentation fixes git-svn-id: http://svn.osgeo.org/geos/trunk@499 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli - * doc/.cvsignore: Added Doxyfile git-svn-id: - http://svn.osgeo.org/geos/trunk@498 + * doc/.cvsignore: Added Doxyfile git-svn-id: http://svn.osgeo.org/geos/trunk@498 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@497 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@497 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli - * doc/Makefile.am: Doxygen doc added to default build rules - git-svn-id: http://svn.osgeo.org/geos/trunk@496 + * doc/Makefile.am: Doxygen doc added to default build rules git-svn-id: http://svn.osgeo.org/geos/trunk@496 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli * source/geom/DefaultCoordinateSequenceFactory.cpp: defaultCoordinateSequenceFactory made module-static (use - DefaultCoordinateSequenceFactory::instance() instead) git-svn-id: - http://svn.osgeo.org/geos/trunk@495 + DefaultCoordinateSequenceFactory::instance() instead) git-svn-id: http://svn.osgeo.org/geos/trunk@495 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli * source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, source/{headers/geos => - bigtest}/bigtest.h: bigtest.h moved to local dir git-svn-id: - http://svn.osgeo.org/geos/trunk@494 + source/bigtest/TestSweepLineSpeed.cpp, source/bigtest/bigtest.h, + source/headers/geos/bigtest.h: bigtest.h moved to local dir git-svn-id: http://svn.osgeo.org/geos/trunk@494 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli * source/headers/geos/geom.h: removed doxygen documentation of - removed feature git-svn-id: http://svn.osgeo.org/geos/trunk@493 + removed feature git-svn-id: http://svn.osgeo.org/geos/trunk@493 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli * source/headers/geos/io.h: Class documentation changed to report - geos.h as WKT writer/parser header file git-svn-id: - http://svn.osgeo.org/geos/trunk@492 + geos.h as WKT writer/parser header file git-svn-id: http://svn.osgeo.org/geos/trunk@492 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli - * source/headers/{geos => }/acconfig.h, - source/headers/geos/Makefile.am: acconfig.h moved one directory up - git-svn-id: http://svn.osgeo.org/geos/trunk@491 + * source/headers/acconfig.h, source/headers/geos/Makefile.am, + source/headers/geos/acconfig.h: acconfig.h moved one directory up git-svn-id: http://svn.osgeo.org/geos/trunk@491 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-19 Sandro Santilli - * doc/Doxyfile.in: Excluded example and test dirs from input set - git-svn-id: http://svn.osgeo.org/geos/trunk@490 + * doc/Doxyfile.in: Excluded example and test dirs from input set git-svn-id: http://svn.osgeo.org/geos/trunk@490 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@489 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@489 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * doc/.cvsignore: added Doxyfile (generated) git-svn-id: - http://svn.osgeo.org/geos/trunk@488 + * doc/.cvsignore: added Doxyfile (generated) git-svn-id: http://svn.osgeo.org/geos/trunk@488 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * source/geom/Geometry.cpp: fixed typo in documentation - git-svn-id: http://svn.osgeo.org/geos/trunk@487 + * source/geom/Geometry.cpp: fixed typo in documentation git-svn-id: http://svn.osgeo.org/geos/trunk@487 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * configure.in, doc/{Doxyfile => Doxyfile.in}: Doxygen configuration - created at ./configure time, for versioning. git-svn-id: - http://svn.osgeo.org/geos/trunk@486 + * configure.in, doc/Doxyfile, doc/Doxyfile.in: Doxygen configuration + created at ./configure time, for versioning. git-svn-id: http://svn.osgeo.org/geos/trunk@486 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * doc/example.cpp: added GEOS version report git-svn-id: - http://svn.osgeo.org/geos/trunk@485 + * doc/example.cpp: added GEOS version report git-svn-id: http://svn.osgeo.org/geos/trunk@485 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geos/geom.h: Added - geos::version() git-svn-id: http://svn.osgeo.org/geos/trunk@484 + geos::version() git-svn-id: http://svn.osgeo.org/geos/trunk@484 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * tools/geos-config.in: Added --jtsport git-svn-id: - http://svn.osgeo.org/geos/trunk@483 + * tools/geos-config.in: Added --jtsport git-svn-id: http://svn.osgeo.org/geos/trunk@483 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli * source/headers/geos/version.h.in: Added GEOS_FIRST_INTERFACE, - GEOS_LAST_INTERFACE and GEOS_JTS_PORT git-svn-id: - http://svn.osgeo.org/geos/trunk@482 + GEOS_LAST_INTERFACE and GEOS_JTS_PORT git-svn-id: http://svn.osgeo.org/geos/trunk@482 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-17 Sandro Santilli - * configure.in: Added JTS_PORT variable. Simplified versioning + * configure.in: Added JTS_PORT variable. Simplified versioning settings: comments added, major/minor/patchlevel extracted by - CURRENT,AGE,REVISION. git-svn-id: - http://svn.osgeo.org/geos/trunk@481 + CURRENT,AGE,REVISION. git-svn-id: http://svn.osgeo.org/geos/trunk@481 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@480 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@480 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli * configure.in, source/geom/Makefile.am: Libtool versioning scheme - adopted. git-svn-id: http://svn.osgeo.org/geos/trunk@479 + adopted. git-svn-id: http://svn.osgeo.org/geos/trunk@479 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * doc/Makefile.am: removed useless Includedir git-svn-id: - http://svn.osgeo.org/geos/trunk@478 + * doc/Makefile.am: removed useless Includedir git-svn-id: http://svn.osgeo.org/geos/trunk@478 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * source/headers/geos.h: made includes use <> git-svn-id: - http://svn.osgeo.org/geos/trunk@477 + * source/headers/geos.h: made includes use <> git-svn-id: http://svn.osgeo.org/geos/trunk@477 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@476 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@476 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli * source/headers/geos/util.h, source/util/GeometricShapeFactory.cpp: - Dimesions object allocated on the heap git-svn-id: - http://svn.osgeo.org/geos/trunk@475 + Dimesions object allocated on the heap git-svn-id: http://svn.osgeo.org/geos/trunk@475 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli * doc/example.cpp: Bug fixed in GeometricShapeFactory examples. - Added example of GeometricShapeFactory::createArc. git-svn-id: - http://svn.osgeo.org/geos/trunk@474 + Added example of GeometricShapeFactory::createArc. git-svn-id: http://svn.osgeo.org/geos/trunk@474 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@473 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@473 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * doc/example.tosql: Added LINEARRING to LINESTRING conversion - git-svn-id: http://svn.osgeo.org/geos/trunk@472 + * doc/example.tosql: Added LINEARRING to LINESTRING conversion git-svn-id: http://svn.osgeo.org/geos/trunk@472 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-16 Sandro Santilli - * source/geom/Makefile.am: Modified library version to 1.4.0 - git-svn-id: http://svn.osgeo.org/geos/trunk@471 + * source/geom/Makefile.am: Modified library version to 1.4.0 git-svn-id: http://svn.osgeo.org/geos/trunk@471 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-15 Sandro Santilli - * doc/example.cpp: Added createRectangle example. git-svn-id: - http://svn.osgeo.org/geos/trunk@470 + * doc/example.cpp: Added createRectangle example. git-svn-id: http://svn.osgeo.org/geos/trunk@470 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-15 Sandro Santilli * source/util/GeometricShapeFactory.cpp: Memory leaks fixed, - CoordinateSequence use made JTS - compatible. git-svn-id: - http://svn.osgeo.org/geos/trunk@469 + CoordinateSequence use made JTS - compatible. git-svn-id: http://svn.osgeo.org/geos/trunk@469 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@468 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@468 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli * source/geom/Geometry.cpp: Added GeometricShapeFactory note on - doxygen mainpage git-svn-id: http://svn.osgeo.org/geos/trunk@467 + doxygen mainpage git-svn-id: http://svn.osgeo.org/geos/trunk@467 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli - * source/headers/geos.h: added geos/io.h and geos/unload.h - git-svn-id: http://svn.osgeo.org/geos/trunk@466 + * source/headers/geos.h: added geos/io.h and geos/unload.h git-svn-id: http://svn.osgeo.org/geos/trunk@466 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli * source/headers/geos/util.h, source/util/GeometricShapeFactory.cpp: - GeometricShapeFactory first pass of bug fixes git-svn-id: - http://svn.osgeo.org/geos/trunk@465 + GeometricShapeFactory first pass of bug fixes git-svn-id: http://svn.osgeo.org/geos/trunk@465 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli - * source/geom/Makefile.am: added missing GeometricShapeFactory.cpp - git-svn-id: http://svn.osgeo.org/geos/trunk@464 + * source/geom/Makefile.am: added missing GeometricShapeFactory.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@464 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli * source/geom/Coordinate.cpp, source/headers/geos/geom.h: added - inequality operator for Coordinate git-svn-id: - http://svn.osgeo.org/geos/trunk@463 + inequality operator for Coordinate git-svn-id: http://svn.osgeo.org/geos/trunk@463 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-14 Sandro Santilli * doc/example.cpp, doc/example.tosql: Added GeometricShapeFactory - example: createCircle. Added simple filter to send example output to - a postgis table. git-svn-id: http://svn.osgeo.org/geos/trunk@462 + example: createCircle. Added simple filter to send example output + to a postgis table. git-svn-id: http://svn.osgeo.org/geos/trunk@462 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-13 Sandro Santilli @@ -34397,38 +36816,37 @@ source/operation/buffer/OffsetCurveSetBuilder.cpp, source/operation/distance/DistanceOp.cpp, source/planargraph/planarGraphComponent.cpp: Added missing virtual - destructor to virtual classes. Fixed implicit unsigned int -> int - casts git-svn-id: http://svn.osgeo.org/geos/trunk@461 + destructor to virtual classes. Fixed implicit unsigned int -> int + casts git-svn-id: http://svn.osgeo.org/geos/trunk@461 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-12 Sandro Santilli * source/headers/geos/geom.h: Commented out CoordinateList class - definition. git-svn-id: http://svn.osgeo.org/geos/trunk@460 + definition. git-svn-id: http://svn.osgeo.org/geos/trunk@460 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-12 Sandro Santilli - * source/geom/PrecisionModel.cpp: Fixed maximumPreciseValue scope - git-svn-id: http://svn.osgeo.org/geos/trunk@459 + * source/geom/PrecisionModel.cpp: Fixed maximumPreciseValue scope git-svn-id: http://svn.osgeo.org/geos/trunk@459 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-09 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@458 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@458 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli - * source/examples/{CoordinateListsExample.cpp => - CoordinateSequencesExample.cpp}, - source/examples/{CustomCoordinateListExample.cpp => - CustomCoordinateSequenceExample.cpp}, - source/examples/{CustomCoordinateListExample.h => - CustomCoordinateSequenceExample.h}, - source/examples/{CustomPointCoordinateList.cpp => - CustomPointCoordinateSequence.cpp}: renamed to reflect JTS API. - git-svn-id: http://svn.osgeo.org/geos/trunk@457 + * source/examples/CoordinateListsExample.cpp, + source/examples/CoordinateSequencesExample.cpp, + source/examples/CustomCoordinateListExample.cpp, + source/examples/CustomCoordinateListExample.h, + source/examples/CustomCoordinateSequenceExample.cpp, + source/examples/CustomCoordinateSequenceExample.h, + source/examples/CustomPointCoordinateList.cpp, + source/examples/CustomPointCoordinateSequence.cpp: renamed to + reflect JTS API. git-svn-id: http://svn.osgeo.org/geos/trunk@457 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli @@ -34439,28 +36857,25 @@ source/geom/DefaultCoordinateSequenceFactory.cpp, source/geom/PointCoordinateSequence.cpp, source/geom/PointCoordinateSequenceFactory.cpp: renamed from *List* - equivalents git-svn-id: http://svn.osgeo.org/geos/trunk@456 + equivalents git-svn-id: http://svn.osgeo.org/geos/trunk@456 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli * source/geom/PointCoordinateList.cpp: Renamed to - PointCoordinateSequence.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@455 + PointCoordinateSequence.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@455 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli * source/geom/CoordinateListFactory.cpp: Renamed to - CoordinateSequenceFactory.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@454 + CoordinateSequenceFactory.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@454 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli * source/geom/BasicCoordinateList.cpp: Renamed to - DefaultCoordinateSequence.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@453 + DefaultCoordinateSequence.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@453 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-08 Sandro Santilli @@ -34536,22 +36951,20 @@ source/util/CoordinateArrayFiter.cpp, source/util/GeometricShapeFactory.cpp, source/util/UniqueCoordinateArrayFilter.cpp: Mirrored JTS interface - of CoordinateSequence, factory and default implementations. Added - DefaultCoordinateSequenceFactory::instance() function. git-svn-id: - http://svn.osgeo.org/geos/trunk@452 + of CoordinateSequence, factory and default implementations. Added + DefaultCoordinateSequenceFactory::instance() function. git-svn-id: http://svn.osgeo.org/geos/trunk@452 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-07 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@451 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@451 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-07 Sandro Santilli * source/algorithm/NotRepresentableException.cpp, source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, - source/headers/geos/util.h: Adjusted exceptions documentation. - git-svn-id: http://svn.osgeo.org/geos/trunk@450 + source/headers/geos/util.h: Adjusted exceptions documentation. git-svn-id: http://svn.osgeo.org/geos/trunk@450 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-07 Sandro Santilli @@ -34560,18 +36973,16 @@ source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/test/XMLTester.cpp: Dropped WKTWriter::stringOfChars - (implemented by std::string). Dropped WKTWriter default constructor - (internally created GeometryFactory). Updated XMLTester to respect - the changes. Main documentation page made nicer. git-svn-id: - http://svn.osgeo.org/geos/trunk@449 + (implemented by std::string). Dropped WKTWriter default constructor + (internally created GeometryFactory). Updated XMLTester to respect + the changes. Main documentation page made nicer. git-svn-id: http://svn.osgeo.org/geos/trunk@449 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-07 Sandro Santilli * TODO, source/operation/buffer/BufferSubgraph.cpp: Removed note - about required speedup in BufferSubgraph. I've made tests with - 'sets' and there is actually a big slow down.. git-svn-id: - http://svn.osgeo.org/geos/trunk@448 + about required speedup in BufferSubgraph. I've made tests with + 'sets' and there is actually a big slow down.. git-svn-id: http://svn.osgeo.org/geos/trunk@448 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-06 Sandro Santilli @@ -34587,23 +36998,20 @@ deprecated Geometry constructors based on PrecisionModel and SRID specification. Removed SimpleGeometryPrecisionReducer capability of changing Geometry's factory. Reverted Geometry::factory member to be - a reference to external factory. git-svn-id: - http://svn.osgeo.org/geos/trunk@447 + a reference to external factory. git-svn-id: http://svn.osgeo.org/geos/trunk@447 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-05 Sandro Santilli * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/headers/geos/geom.h: Added - GeometryFactory::destroyGeometry(Geometry *) git-svn-id: - http://svn.osgeo.org/geos/trunk@446 + GeometryFactory::destroyGeometry(Geometry *) git-svn-id: http://svn.osgeo.org/geos/trunk@446 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-05 Sandro Santilli * TODO, source/geom/Geometry.cpp, source/headers/geos/geom.h: - Documentation again. git-svn-id: - http://svn.osgeo.org/geos/trunk@445 + Documentation again. git-svn-id: http://svn.osgeo.org/geos/trunk@445 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-05 Sandro Santilli @@ -34611,14 +37019,12 @@ * NEWS, source/geom/CoordinateList.cpp, source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, source/geom/PrecisionModel.cpp, source/headers/geos/geom.h, - source/headers/geos/util.h: More documentation cleanups. - git-svn-id: http://svn.osgeo.org/geos/trunk@444 + source/headers/geos/util.h: More documentation cleanups. git-svn-id: http://svn.osgeo.org/geos/trunk@444 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-05 Sandro Santilli - * doc/README: initial import git-svn-id: - http://svn.osgeo.org/geos/trunk@443 + * doc/README: initial import git-svn-id: http://svn.osgeo.org/geos/trunk@443 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-05 Sandro Santilli @@ -34632,18 +37038,16 @@ source/geom/Polygon.cpp, source/headers/geos.h, source/headers/geos/geom.h, source/headers/geos/util.h, source/io/WKTReader.cpp: deep-dopy construction taken out of - Geometry and implemented only in GeometryFactory. Deep-copy geometry - construction takes care of cleaning up copies on exception. + Geometry and implemented only in GeometryFactory. Deep-copy + geometry construction takes care of cleaning up copies on exception. Implemented clone() method for CoordinateList Changed createMultiPoint(CoordinateList) signature to reflect copy semantic - (by-ref instead of by-pointer). Cleaned up documentation. - git-svn-id: http://svn.osgeo.org/geos/trunk@442 + (by-ref instead of by-pointer). Cleaned up documentation. git-svn-id: http://svn.osgeo.org/geos/trunk@442 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-03 Sandro Santilli - * source/headers/geos/.cvsignore: more entries git-svn-id: - http://svn.osgeo.org/geos/trunk@441 + * source/headers/geos/.cvsignore: more entries git-svn-id: http://svn.osgeo.org/geos/trunk@441 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-03 Sandro Santilli @@ -34652,22 +37056,20 @@ source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, source/geom/PrecisionModel.cpp, source/headers/geos.h, source/headers/geos/geom.h: Documentation - cleanups for DoxyGen. git-svn-id: - http://svn.osgeo.org/geos/trunk@440 + cleanups for DoxyGen. git-svn-id: http://svn.osgeo.org/geos/trunk@440 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-02 Sandro Santilli - * doc/{geosDoxygen.conf => Doxyfile}, doc/Makefile.am: Doxygen - configuration file renamed. git-svn-id: - http://svn.osgeo.org/geos/trunk@439 + * doc/Doxyfile, doc/Makefile.am, doc/geosDoxygen.conf: Doxygen + configuration file renamed. git-svn-id: http://svn.osgeo.org/geos/trunk@439 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-02 Sandro Santilli * source/geom/GeometryFactory.cpp, source/geom/Point.cpp, source/headers/geos/geom.h: Added deep-copy / take-ownerhship for - Point type. git-svn-id: http://svn.osgeo.org/geos/trunk@438 + Point type. git-svn-id: http://svn.osgeo.org/geos/trunk@438 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-02 Sandro Santilli @@ -34844,68 +37246,78 @@ source/util/IllegalArgumentException.cpp, source/util/UniqueCoordinateArrayFilter.cpp, source/util/UnsupportedOperationException.cpp: Fixed all #include - lines to reflect headers layout change. Added client application - build tips in README. git-svn-id: - http://svn.osgeo.org/geos/trunk@437 + lines to reflect headers layout change. Added client application + build tips in README. git-svn-id: http://svn.osgeo.org/geos/trunk@437 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-02 Sandro Santilli - * source/headers/geos_version.h.in: renamed to geos/version.h.in - git-svn-id: http://svn.osgeo.org/geos/trunk@436 + * source/headers/geos_version.h.in: renamed to geos/version.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@436 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-02 Sandro Santilli * source/headers/.cvsignore, source/headers/Makefile.am, + source/headers/acconfig.h, source/headers/bigtest.h, + source/headers/geom.h, source/headers/geomUtil.h, + source/headers/geomgraph.h, source/headers/geomgraphindex.h, source/headers/geos.h, source/headers/geos/.cvsignore, - source/headers/geos/Makefile.am, source/headers/{ => - geos}/acconfig.h, source/headers/{ => geos}/bigtest.h, - source/headers/geos/config.h, source/headers/{ => geos}/geom.h, - source/headers/{ => geos}/geomUtil.h, source/headers/{ => - geos}/geomgraph.h, source/headers/{ => geos}/geomgraphindex.h, - source/headers/{ => geos}/geosAlgorithm.h, source/headers/{ => - geos}/indexBintree.h, source/headers/{ => geos}/indexChain.h, - source/headers/{ => geos}/indexQuadtree.h, source/headers/{ => - geos}/indexStrtree.h, source/headers/{ => geos}/indexSweepline.h, - source/headers/{ => geos}/io.h, source/headers/{ => geos}/noding.h, - source/headers/{ => geos}/nodingSnapround.h, source/headers/{ => - geos}/opBuffer.h, source/headers/{ => geos}/opDistance.h, - source/headers/{ => geos}/opLinemerge.h, source/headers/{ => - geos}/opOverlay.h, source/headers/{ => geos}/opPolygonize.h, - source/headers/{ => geos}/opRelate.h, source/headers/{ => - geos}/opValid.h, source/headers/{ => geos}/operation.h, - source/headers/{ => geos}/planargraph.h, source/headers/{ => - geos}/platform.h.in, source/headers/{ => geos}/precision.h, - source/headers/{ => geos}/spatialIndex.h, source/headers/{ => - geos}/unload.h, source/headers/{ => geos}/util.h, - source/headers/geos/version.h.in: Header files moved under geos/ - dir. git-svn-id: http://svn.osgeo.org/geos/trunk@435 + source/headers/geos/Makefile.am, source/headers/geos/acconfig.h, + source/headers/geos/bigtest.h, source/headers/geos/config.h, + source/headers/geos/geom.h, source/headers/geos/geomUtil.h, + source/headers/geos/geomgraph.h, + source/headers/geos/geomgraphindex.h, + source/headers/geos/geosAlgorithm.h, + source/headers/geos/indexBintree.h, + source/headers/geos/indexChain.h, + source/headers/geos/indexQuadtree.h, + source/headers/geos/indexStrtree.h, + source/headers/geos/indexSweepline.h, source/headers/geos/io.h, + source/headers/geos/noding.h, + source/headers/geos/nodingSnapround.h, + source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, + source/headers/geos/opLinemerge.h, source/headers/geos/opOverlay.h, + source/headers/geos/opPolygonize.h, source/headers/geos/opRelate.h, + source/headers/geos/opValid.h, source/headers/geos/operation.h, + source/headers/geos/planargraph.h, + source/headers/geos/platform.h.in, source/headers/geos/precision.h, + source/headers/geos/spatialIndex.h, source/headers/geos/unload.h, + source/headers/geos/util.h, source/headers/geos/version.h.in, + source/headers/geosAlgorithm.h, source/headers/indexBintree.h, + source/headers/indexChain.h, source/headers/indexQuadtree.h, + source/headers/indexStrtree.h, source/headers/indexSweepline.h, + source/headers/io.h, source/headers/noding.h, + source/headers/nodingSnapround.h, source/headers/opBuffer.h, + source/headers/opDistance.h, source/headers/opLinemerge.h, + source/headers/opOverlay.h, source/headers/opPolygonize.h, + source/headers/opRelate.h, source/headers/opValid.h, + source/headers/operation.h, source/headers/planargraph.h, + source/headers/platform.h.in, source/headers/precision.h, + source/headers/spatialIndex.h, source/headers/unload.h, + source/headers/util.h: Header files moved under geos/ dir. git-svn-id: http://svn.osgeo.org/geos/trunk@435 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-01 Sandro Santilli * source/geom/Geometry.cpp: GeometryFactory argument in Geometry - constructor reverted to its copy-and-destroy semantic. git-svn-id: - http://svn.osgeo.org/geos/trunk@434 + constructor reverted to its copy-and-destroy semantic. git-svn-id: http://svn.osgeo.org/geos/trunk@434 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-01 Sandro Santilli * doc/.cvsignore, doc/Makefile.am: Added doxygen_docs generation - rule git-svn-id: http://svn.osgeo.org/geos/trunk@433 + rule git-svn-id: http://svn.osgeo.org/geos/trunk@433 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-01 Sandro Santilli - * doc/geosDoxygen.conf: re-generated with doxygen 1.2.15 - git-svn-id: http://svn.osgeo.org/geos/trunk@432 + * doc/geosDoxygen.conf: re-generated with doxygen 1.2.15 git-svn-id: http://svn.osgeo.org/geos/trunk@432 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-01 No Body * doc/geosDoxygen.conf: Added doxygen file for better doco - generation. git-svn-id: http://svn.osgeo.org/geos/trunk@431 + generation. git-svn-id: http://svn.osgeo.org/geos/trunk@431 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-07-01 Sandro Santilli @@ -34930,10 +37342,8 @@ source/operation/overlay/OverlayOp.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp, source/util/GeometricShapeFactory.cpp: Geometry constructors come - now in two flavors: - deep-copy args (pass-by-reference) - - take-ownership of args (pass-by-pointer) Same functionality is - available through GeometryFactory, including buildGeometry(). - git-svn-id: http://svn.osgeo.org/geos/trunk@430 + now in two flavors: - deep-copy args (pass-by-reference) - take-ownership of args (pass-by-pointer) Same functionality is + available through GeometryFactory, including buildGeometry(). git-svn-id: http://svn.osgeo.org/geos/trunk@430 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-30 Sandro Santilli @@ -34947,15 +37357,13 @@ source/operation/overlay/MinimalEdgeRing.cpp, source/operation/overlay/PointBuilder.cpp, source/operation/overlay/PolygonBuilder.cpp: Removed GeoemtryFactory - copy from geometry constructors. Enforced const-correctness on - GeometryFactory arguments. git-svn-id: - http://svn.osgeo.org/geos/trunk@429 + copy from geometry constructors. Enforced const-correctness on + GeometryFactory arguments. git-svn-id: http://svn.osgeo.org/geos/trunk@429 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-28 Sandro Santilli - * source/geom/Polygon.cpp: Constructors speedup. git-svn-id: - http://svn.osgeo.org/geos/trunk@428 + * source/geom/Polygon.cpp: Constructors speedup. git-svn-id: http://svn.osgeo.org/geos/trunk@428 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-28 Sandro Santilli @@ -34965,44 +37373,40 @@ source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, source/geom/Point.cpp, source/geom/Polygon.cpp, source/headers/geom.h: Moved getGeometryTypeId() definitions from - geom.h to each geometry module. Added holes argument check in - Polygon.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@427 + geom.h to each geometry module. Added holes argument check in + Polygon.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@427 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-25 Sandro Santilli - * tools/geos-config.in: fixed --includes git-svn-id: - http://svn.osgeo.org/geos/trunk@426 + * tools/geos-config.in: fixed --includes git-svn-id: http://svn.osgeo.org/geos/trunk@426 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-22 Sandro Santilli - * NEWS: Written down some news git-svn-id: - http://svn.osgeo.org/geos/trunk@425 + * NEWS: Written down some news git-svn-id: http://svn.osgeo.org/geos/trunk@425 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-22 Sandro Santilli * source/headers/Makefile.am, source/headers/geos.h: Added geos.h - file. git-svn-id: http://svn.osgeo.org/geos/trunk@424 + file. git-svn-id: http://svn.osgeo.org/geos/trunk@424 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-21 Sandro Santilli - * source/headers/.cvsignore: added geos_version.h git-svn-id: - http://svn.osgeo.org/geos/trunk@423 + * source/headers/.cvsignore: added geos_version.h git-svn-id: http://svn.osgeo.org/geos/trunk@423 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-21 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@422 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@422 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-21 Sandro Santilli * configure.in, source/headers/Makefile.am, - source/headers/geos_version.h.in: Added VERSION defines - git-svn-id: http://svn.osgeo.org/geos/trunk@421 + source/headers/geos_version.h.in: Added VERSION defines git-svn-id: http://svn.osgeo.org/geos/trunk@421 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-16 Sandro Santilli @@ -35013,30 +37417,27 @@ source/noding/MCQuadtreeNoder.cpp, source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp, source/noding/nodingSegmentIntersector.cpp: Changed interface of - SegmentString, now copying CoordinateList argument. Fixed memory - leaks associated with this and MultiGeometry constructors. Other - associated fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@420 + SegmentString, now copying CoordinateList argument. Fixed memory + leaks associated with this and MultiGeometry constructors. Other + associated fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@420 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli * source/geom/GeometryFactory.cpp: fixed buildGeometry to always - return a newly allocated geometry git-svn-id: - http://svn.osgeo.org/geos/trunk@419 + return a newly allocated geometry git-svn-id: http://svn.osgeo.org/geos/trunk@419 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli * doc/example.cpp, source/geom/LineString.cpp, source/geom/MultiPolygon.cpp, source/geom/Polygon.cpp: updated to - respect deep-copy GeometryCollection interface git-svn-id: - http://svn.osgeo.org/geos/trunk@418 + respect deep-copy GeometryCollection interface git-svn-id: http://svn.osgeo.org/geos/trunk@418 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli - * source/io/WKTReader.cpp: fixed a typo git-svn-id: - http://svn.osgeo.org/geos/trunk@417 + * source/io/WKTReader.cpp: fixed a typo git-svn-id: http://svn.osgeo.org/geos/trunk@417 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli @@ -35044,8 +37445,7 @@ * source/geom/util/GeometryEditor.cpp, source/io/WKTReader.cpp, source/operation/buffer/BufferBuilder.cpp, source/operation/overlay/OverlayOp.cpp: updated to respect deep-copy - GeometryCollection interface git-svn-id: - http://svn.osgeo.org/geos/trunk@416 + GeometryCollection interface git-svn-id: http://svn.osgeo.org/geos/trunk@416 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli @@ -35053,296 +37453,268 @@ * source/geom/GeometryCollection.cpp, source/geom/GeometryFactory.cpp, source/headers/geom.h: GeometryCollections constructors make a deep copy of Geometry vector - argument. git-svn-id: http://svn.osgeo.org/geos/trunk@415 + argument. git-svn-id: http://svn.osgeo.org/geos/trunk@415 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Empty geometry creation call made using NULL instead of newly created empty vector (will be - faster) git-svn-id: http://svn.osgeo.org/geos/trunk@414 + faster) git-svn-id: http://svn.osgeo.org/geos/trunk@414 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli * tools/geos-config.in: Fixed a bug preventing geos-config from - giving correct version info git-svn-id: - http://svn.osgeo.org/geos/trunk@413 + giving correct version info git-svn-id: http://svn.osgeo.org/geos/trunk@413 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli * source/noding/SegmentNode.cpp, source/planargraph/planarDirectedEdge.cpp: Added missing - include git-svn-id: http://svn.osgeo.org/geos/trunk@412 + include git-svn-id: http://svn.osgeo.org/geos/trunk@412 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-06-15 Sandro Santilli - * TODO: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@411 + * TODO: Updated git-svn-id: http://svn.osgeo.org/geos/trunk@411 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-28 Yury Bychkov * source/geom/PrecisionModel.cpp: Changed rounding method to make - compilable with VC++ git-svn-id: - http://svn.osgeo.org/geos/trunk@410 + compilable with VC++ git-svn-id: http://svn.osgeo.org/geos/trunk@410 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli - * source/test/testLeaksBig.xml: added one buffer test git-svn-id: - http://svn.osgeo.org/geos/trunk@409 + * source/test/testLeaksBig.xml: added one buffer test git-svn-id: http://svn.osgeo.org/geos/trunk@409 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli * source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: Memory leaks fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@408 + source/noding/SegmentString.cpp: Memory leaks fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@408 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli * source/noding/nodingSegmentIntersector.cpp: set (useless?) - recordIsolated member in constructor git-svn-id: - http://svn.osgeo.org/geos/trunk@407 + recordIsolated member in constructor git-svn-id: http://svn.osgeo.org/geos/trunk@407 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli * source/headers/indexChain.h: MonotoneChainOverlapAction::overlap(*) funx made virtual as they are - supposed to be. git-svn-id: http://svn.osgeo.org/geos/trunk@406 + supposed to be. git-svn-id: http://svn.osgeo.org/geos/trunk@406 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli - * source/test/XMLTester.cpp: Fixed a memleak in buffer test. - git-svn-id: http://svn.osgeo.org/geos/trunk@405 + * source/test/XMLTester.cpp: Fixed a memleak in buffer test. git-svn-id: http://svn.osgeo.org/geos/trunk@405 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-27 Sandro Santilli * source/headers/opBuffer.h, source/operation/buffer/OffsetCurveBuilder.cpp: Fixed a bug - preventing OffsetCurveBuilder point list from being reset. - git-svn-id: http://svn.osgeo.org/geos/trunk@404 + preventing OffsetCurveBuilder point list from being reset. git-svn-id: http://svn.osgeo.org/geos/trunk@404 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-26 Sandro Santilli * source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Changed abs() to - fabs() when working with doubles. Used dynamic_cast<> instead of - typeid() when JTS uses instanceof. git-svn-id: - http://svn.osgeo.org/geos/trunk@403 + fabs() when working with doubles. Used dynamic_cast<> instead of + typeid() when JTS uses instanceof. git-svn-id: http://svn.osgeo.org/geos/trunk@403 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-26 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Removed try/catch block - from ::buildSubgraphs git-svn-id: - http://svn.osgeo.org/geos/trunk@402 + from ::buildSubgraphs git-svn-id: http://svn.osgeo.org/geos/trunk@402 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-26 Sandro Santilli * source/headers/geomgraph.h: Added comments about OverlayNodeFactory() ownership in NodeMap and PlanarGraph - constuctors git-svn-id: http://svn.osgeo.org/geos/trunk@401 + constuctors git-svn-id: http://svn.osgeo.org/geos/trunk@401 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-26 Sandro Santilli * source/headers/opBuffer.h, source/operation/buffer/BufferBuilder.cpp: PlanarGraph made local to - ::buffer instead of Class private. git-svn-id: - http://svn.osgeo.org/geos/trunk@400 + ::buffer instead of Class private. git-svn-id: http://svn.osgeo.org/geos/trunk@400 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-21 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@399 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@399 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-21 Sandro Santilli * source/geom/Geometry.cpp: ::intersection missed to invalidate - geometryCollection inputs git-svn-id: - http://svn.osgeo.org/geos/trunk@398 + geometryCollection inputs git-svn-id: http://svn.osgeo.org/geos/trunk@398 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-21 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@397 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@397 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-21 Sandro Santilli * source/geom/PrecisionModel.cpp: ::makePrecise make use of - nearbyint() now, to be compatible with JTS git-svn-id: - http://svn.osgeo.org/geos/trunk@396 + nearbyint() now, to be compatible with JTS git-svn-id: http://svn.osgeo.org/geos/trunk@396 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-21 Sandro Santilli - * source/test/testLeaksBig.xml: first import git-svn-id: - http://svn.osgeo.org/geos/trunk@395 + * source/test/testLeaksBig.xml: first import git-svn-id: http://svn.osgeo.org/geos/trunk@395 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-20 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@394 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@394 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Yury Bychkov * source/geom/PrecisionModel.cpp: Changed rounding method to make - compilable with VC++ git-svn-id: - http://svn.osgeo.org/geos/trunk@393 + compilable with VC++ git-svn-id: http://svn.osgeo.org/geos/trunk@393 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Sandro Santilli * source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug in - ::addCircle git-svn-id: http://svn.osgeo.org/geos/trunk@392 + ::addCircle git-svn-id: http://svn.osgeo.org/geos/trunk@392 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Sandro Santilli * source/geom/BasicCoordinateList.cpp, source/geom/PointCoordinateList.cpp, source/headers/geom.h: made - CoordinateList::toString() a const member function git-svn-id: - http://svn.osgeo.org/geos/trunk@391 + CoordinateList::toString() a const member function git-svn-id: http://svn.osgeo.org/geos/trunk@391 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Sandro Santilli * source/operation/buffer/BufferOp.cpp: avoided assignment operator - calls for BufferBuilder git-svn-id: - http://svn.osgeo.org/geos/trunk@390 + calls for BufferBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@390 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Sandro Santilli * source/operation/buffer/BufferSubgraph.cpp: Removed all try/catch - blocks transforming stack allocated-vectors to auto-heap-allocations - git-svn-id: http://svn.osgeo.org/geos/trunk@389 + blocks transforming stack allocated-vectors to auto-heap-allocations git-svn-id: http://svn.osgeo.org/geos/trunk@389 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-19 Yury Bychkov * source/operation/buffer/OffsetCurveSetBuilder.cpp: Bugfix in - OffsetCurveSetBuilder::addPolygon (JTS 1.4.1) git-svn-id: - http://svn.osgeo.org/geos/trunk@388 + OffsetCurveSetBuilder::addPolygon (JTS 1.4.1) git-svn-id: http://svn.osgeo.org/geos/trunk@388 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-18 Sandro Santilli * source/test/XMLTester.cpp: Output made more neat (geometry B is - not printed if not existent). Added support for buffer tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@387 + not printed if not existent). Added support for buffer tests. git-svn-id: http://svn.osgeo.org/geos/trunk@387 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-18 Sandro Santilli * source/geom/CoordinateList.cpp: made ::scroll handle already - scrolled vect and more readable git-svn-id: - http://svn.osgeo.org/geos/trunk@386 + scrolled vect and more readable git-svn-id: http://svn.osgeo.org/geos/trunk@386 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-18 Yury Bychkov * source/headers/opValid.h, source/operation/valid/IsValidOp.cpp: IsValidOp::checkShellNotNested() bugfix from JTS 1.4.1 (not released - yet) has been added. git-svn-id: - http://svn.osgeo.org/geos/trunk@385 + yet) has been added. git-svn-id: http://svn.osgeo.org/geos/trunk@385 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Yury Bychkov * source/geom/GeometryCollection.cpp, source/headers/geom.h: JavaDoc - updated git-svn-id: http://svn.osgeo.org/geos/trunk@384 + updated git-svn-id: http://svn.osgeo.org/geos/trunk@384 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Yury Bychkov * source/geom/BasicCoordinateList.cpp, source/geom/PointCoordinateList.cpp: toString() performance - enhancement git-svn-id: http://svn.osgeo.org/geos/trunk@383 + enhancement git-svn-id: http://svn.osgeo.org/geos/trunk@383 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Yury Bychkov * source/geom/CoordinateList.cpp, source/headers/geom.h: JavaDoc - updated git-svn-id: http://svn.osgeo.org/geos/trunk@382 + updated git-svn-id: http://svn.osgeo.org/geos/trunk@382 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli - * source/io/markup/MarkupSTL.cpp: Added tab in list of blank chars - git-svn-id: http://svn.osgeo.org/geos/trunk@381 + * source/io/markup/MarkupSTL.cpp: Added tab in list of blank chars git-svn-id: http://svn.osgeo.org/geos/trunk@381 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/test/XMLTester.cpp: Expected result string trimmed for - blanks git-svn-id: http://svn.osgeo.org/geos/trunk@380 + blanks git-svn-id: http://svn.osgeo.org/geos/trunk@380 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/io/StringTokenizer.cpp: Added carriage returns and tabs in - set of blanks chars git-svn-id: - http://svn.osgeo.org/geos/trunk@379 + set of blanks chars git-svn-id: http://svn.osgeo.org/geos/trunk@379 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/io/ParseException.cpp: ParseException message made more - readable git-svn-id: http://svn.osgeo.org/geos/trunk@378 + readable git-svn-id: http://svn.osgeo.org/geos/trunk@378 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/geom/PrecisionModel.cpp: Fixed bogus FIXED coordinate - rounding git-svn-id: http://svn.osgeo.org/geos/trunk@377 + rounding git-svn-id: http://svn.osgeo.org/geos/trunk@377 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: reduced stack allocations, - try/catch blocks in ::overlayOp git-svn-id: - http://svn.osgeo.org/geos/trunk@376 + try/catch blocks in ::overlayOp git-svn-id: http://svn.osgeo.org/geos/trunk@376 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/algorithm/CentroidArea.cpp: CentroidArea::add(const - Geometry *geom) uses dynamic_cast git-svn-id: - http://svn.osgeo.org/geos/trunk@375 + Geometry *geom) uses dynamic_cast git-svn-id: http://svn.osgeo.org/geos/trunk@375 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-17 Sandro Santilli * source/geom/Geometry.cpp: ::getCeontroid(): reduced dynamic - allocations, added missing check for isEmpty git-svn-id: - http://svn.osgeo.org/geos/trunk@374 + allocations, added missing check for isEmpty git-svn-id: http://svn.osgeo.org/geos/trunk@374 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli * source/operation/distance/ConnectedElementLocationFilter.cpp: - Added LinearRing support git-svn-id: - http://svn.osgeo.org/geos/trunk@373 + Added LinearRing support git-svn-id: http://svn.osgeo.org/geos/trunk@373 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli * source/headers/geomUtil.h: Fixed bogus inheritance of - LinearComponentExtracter git-svn-id: - http://svn.osgeo.org/geos/trunk@372 + LinearComponentExtracter git-svn-id: http://svn.osgeo.org/geos/trunk@372 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli @@ -35354,68 +37726,60 @@ source/headers/opDistance.h, source/operation/distance/ConnectedElementLocationFilter.cpp, source/operation/distance/DistanceOp.cpp: DistanceOp bug removed, - cascading errors fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@371 + cascading errors fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@371 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geom.h: const correctness - git-svn-id: http://svn.osgeo.org/geos/trunk@370 + * source/geom/Geometry.cpp, source/headers/geom.h: const correctness git-svn-id: http://svn.osgeo.org/geos/trunk@370 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli - * source/io/WKTReader.cpp: avoided leaks on malformed LinearRing - git-svn-id: http://svn.osgeo.org/geos/trunk@369 + * source/io/WKTReader.cpp: avoided leaks on malformed LinearRing git-svn-id: http://svn.osgeo.org/geos/trunk@369 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli * source/geom/util/LinearComponentExtracter.cpp, source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp: Mem leaks fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@368 + source/geom/util/PolygonExtracter.cpp: Mem leaks fixed git-svn-id: http://svn.osgeo.org/geos/trunk@368 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-14 Sandro Santilli * source/test/XMLTester.cpp: Changed the algorythm for finding precisionModel type (current way did not work): now if you specify a - scale precisionModel will be FIXED, otherwise it will be FLOATING. - git-svn-id: http://svn.osgeo.org/geos/trunk@367 + scale precisionModel will be FIXED, otherwise it will be FLOATING. git-svn-id: http://svn.osgeo.org/geos/trunk@367 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli * source/io/StringTokenizer.cpp: fixed peekNextToken to avoid - incrementing string pointer git-svn-id: - http://svn.osgeo.org/geos/trunk@366 + incrementing string pointer git-svn-id: http://svn.osgeo.org/geos/trunk@366 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli - * source/index/bintree/Bintree.cpp: Fixed segfault in ::insert - git-svn-id: http://svn.osgeo.org/geos/trunk@365 + * source/index/bintree/Bintree.cpp: Fixed segfault in ::insert git-svn-id: http://svn.osgeo.org/geos/trunk@365 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli * source/algorithm/InteriorPointArea.cpp: Fixed segfault in - destructor git-svn-id: http://svn.osgeo.org/geos/trunk@364 + destructor git-svn-id: http://svn.osgeo.org/geos/trunk@364 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli * source/io/WKTReader.cpp, source/test/XMLTester.cpp: Memory leaks - fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@363 + fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@363 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli * source/geom/MultiLineString.cpp: leak removed in - MultiLineString::getBoundary() git-svn-id: - http://svn.osgeo.org/geos/trunk@362 + MultiLineString::getBoundary() git-svn-id: http://svn.osgeo.org/geos/trunk@362 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli @@ -35425,8 +37789,7 @@ source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, source/headers/geom.h: Some const correctness added. Fixed bug in GeometryFactory::createMultiPoint to - handle NULL CoordinateList. git-svn-id: - http://svn.osgeo.org/geos/trunk@361 + handle NULL CoordinateList. git-svn-id: http://svn.osgeo.org/geos/trunk@361 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-07 Sandro Santilli @@ -35434,11 +37797,10 @@ * source/geom/Makefile.am, source/headers/noding.h, source/headers/opBuffer.h, source/noding/SegmentString.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - EdgeNodingValidator to build scripts. Changed SegmentString + EdgeNodingValidator to build scripts. Changed SegmentString constructor back to its original form (takes const void *), implemented local tracking of "contexts" in caller objects for - proper destruction. git-svn-id: - http://svn.osgeo.org/geos/trunk@360 + proper destruction. git-svn-id: http://svn.osgeo.org/geos/trunk@360 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-06 Sandro Santilli @@ -35447,8 +37809,7 @@ source/index/bintree/Bintree.cpp, source/index/quadtree/Quadtree.cpp: Kept track of newly allocated objects by ensureExtent for Bintree and Quadtree, deleted at - destruction time. doc/example.cpp runs with no leaks. git-svn-id: - http://svn.osgeo.org/geos/trunk@359 + destruction time. doc/example.cpp runs with no leaks. git-svn-id: http://svn.osgeo.org/geos/trunk@359 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-06 Sandro Santilli @@ -35457,9 +37818,8 @@ source/noding/SegmentString.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: SegmentNodeList keeps track of created splitEdges for later destruction. - SegmentString constructor copies given Label. Buffer operation does - no more leaks for doc/example.cpp git-svn-id: - http://svn.osgeo.org/geos/trunk@358 + SegmentString constructor copies given Label. Buffer operation does + no more leaks for doc/example.cpp git-svn-id: http://svn.osgeo.org/geos/trunk@358 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-06 Sandro Santilli @@ -35468,23 +37828,20 @@ source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/ItemBoundable.cpp, source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: - Boundable destructor made virtual. Added vector + Boundable destructor made virtual. Added vector *nodes member in AbstractSTRTree, used to keep track of created node - to cleanly delete them at destruction time. git-svn-id: - http://svn.osgeo.org/geos/trunk@357 + to cleanly delete them at destruction time. git-svn-id: http://svn.osgeo.org/geos/trunk@357 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-06 Sandro Santilli * source/index/strtree/STRtree.cpp: leak removed from - createParentBoundablesFromVerticalSlices git-svn-id: - http://svn.osgeo.org/geos/trunk@356 + createParentBoundablesFromVerticalSlices git-svn-id: http://svn.osgeo.org/geos/trunk@356 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-06 Sandro Santilli - * source/index/strtree/AbstractSTRtree.cpp: memory leak fixed - git-svn-id: http://svn.osgeo.org/geos/trunk@355 + * source/index/strtree/AbstractSTRtree.cpp: memory leak fixed git-svn-id: http://svn.osgeo.org/geos/trunk@355 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli @@ -35493,44 +37850,40 @@ source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: AbstractNode destructor made virtual. AbstractNode::bounds made - protected. SIRAbstractNode and STRAbstractNode destructors added to + protected. SIRAbstractNode and STRAbstractNode destructors added to get rid of AbstractNode::bounds in the right way (is a void * casted - to appropriate Class in the subClasses). git-svn-id: - http://svn.osgeo.org/geos/trunk@354 + to appropriate Class in the subClasses). git-svn-id: http://svn.osgeo.org/geos/trunk@354 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/headers/opBuffer.h, source/operation/buffer/BufferBuilder.cpp: Rewritten static cga - allocation to avoid copy constructor calls. git-svn-id: - http://svn.osgeo.org/geos/trunk@353 + allocation to avoid copy constructor calls. git-svn-id: http://svn.osgeo.org/geos/trunk@353 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/geom/Geometry.cpp: avoided copy constructor in - Geometry::geometryChangedFilter initializzazion git-svn-id: - http://svn.osgeo.org/geos/trunk@352 + Geometry::geometryChangedFilter initializzazion git-svn-id: http://svn.osgeo.org/geos/trunk@352 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/noding/MCQuadtreeNoder.cpp: reduced explicit local objects - allocation git-svn-id: http://svn.osgeo.org/geos/trunk@351 + allocation git-svn-id: http://svn.osgeo.org/geos/trunk@351 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: Avoid use of copy - c'tors on local objects initializzation git-svn-id: - http://svn.osgeo.org/geos/trunk@350 + c'tors on local objects initializzation git-svn-id: http://svn.osgeo.org/geos/trunk@350 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/noding/MCQuadtreeNoder.cpp: Fixed big leak in - intersectChains() git-svn-id: http://svn.osgeo.org/geos/trunk@349 + intersectChains() git-svn-id: http://svn.osgeo.org/geos/trunk@349 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli @@ -35539,21 +37892,19 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Leaks fixed, - explicit allocations/deallocations reduced. git-svn-id: - http://svn.osgeo.org/geos/trunk@348 + explicit allocations/deallocations reduced. git-svn-id: http://svn.osgeo.org/geos/trunk@348 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/operation/buffer/SubgraphDepthLocater.cpp: memleak fixed in - ::getDepth git-svn-id: http://svn.osgeo.org/geos/trunk@347 + ::getDepth git-svn-id: http://svn.osgeo.org/geos/trunk@347 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/geom/util/GeometryEditor.cpp: Memory leak plugged in - editGeometryCollection git-svn-id: - http://svn.osgeo.org/geos/trunk@346 + editGeometryCollection git-svn-id: http://svn.osgeo.org/geos/trunk@346 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli @@ -35561,26 +37912,23 @@ * source/geom/Geometry.cpp, source/headers/geom.h, source/headers/opBuffer.h, source/io/Unload.cpp, source/operation/buffer/BufferBuilder.cpp: Removed some private - static heap explicit allocation, less cleanup done by the unloader. - git-svn-id: http://svn.osgeo.org/geos/trunk@345 + static heap explicit allocation, less cleanup done by the unloader. git-svn-id: http://svn.osgeo.org/geos/trunk@345 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@344 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@344 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Removed dynamic allocations. - git-svn-id: http://svn.osgeo.org/geos/trunk@343 + * source/operation/buffer/BufferOp.cpp: Removed dynamic allocations. git-svn-id: http://svn.osgeo.org/geos/trunk@343 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-05 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Reduced dynamic allocations - in bufferOriginalPrecision and bufferFixedPrecision. git-svn-id: - http://svn.osgeo.org/geos/trunk@342 + in bufferOriginalPrecision and bufferFixedPrecision. git-svn-id: http://svn.osgeo.org/geos/trunk@342 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli @@ -35592,16 +37940,14 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/SubgraphDepthLocater.cpp: leaks fixed, - exception specification omitted. git-svn-id: - http://svn.osgeo.org/geos/trunk@341 + exception specification omitted. git-svn-id: http://svn.osgeo.org/geos/trunk@341 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli * source/geom/util/LinearComponentExtracter.cpp, source/geom/util/PointExtracter.cpp, - source/noding/SegmentNodeList.cpp: Some more leaks fixed - git-svn-id: http://svn.osgeo.org/geos/trunk@340 + source/noding/SegmentNodeList.cpp: Some more leaks fixed git-svn-id: http://svn.osgeo.org/geos/trunk@340 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli @@ -35613,7 +37959,7 @@ source/operation/buffer/BufferSubgraph.cpp, source/precision/CommonBitsOp.cpp, source/precision/SimpleGeometryPrecisionReducer.cpp: leaks on - exception fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@339 + exception fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@339 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli @@ -35623,24 +37969,21 @@ source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: Added sortBoundables(const vector) pure virtual in AbstractSTRtree, implemented in SIRtree and STRtree. Comparator funx - made static in STRtree.cpp and SIRtree.cpp. git-svn-id: - http://svn.osgeo.org/geos/trunk@338 + made static in STRtree.cpp and SIRtree.cpp. git-svn-id: http://svn.osgeo.org/geos/trunk@338 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli * source/headers/indexStrtree.h, source/index/strtree/AbstractSTRtree.cpp: Fixed comparator function - to express StrictWeakOrdering. git-svn-id: - http://svn.osgeo.org/geos/trunk@337 + to express StrictWeakOrdering. git-svn-id: http://svn.osgeo.org/geos/trunk@337 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli * source/noding/Noder.cpp, source/noding/SegmentNode.cpp, source/noding/nodingSegmentIntersector.cpp, - source/planargraph/planarNodeMap.cpp: newline added at end of file - git-svn-id: http://svn.osgeo.org/geos/trunk@336 + source/planargraph/planarNodeMap.cpp: newline added at end of file git-svn-id: http://svn.osgeo.org/geos/trunk@336 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-05-03 Sandro Santilli @@ -35654,8 +37997,7 @@ source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PolygonBuilder.cpp, source/planargraph/planarDirectedEdge.cpp: Exception specification - considered harmful - left as comment. git-svn-id: - http://svn.osgeo.org/geos/trunk@335 + considered harmful - left as comment. git-svn-id: http://svn.osgeo.org/geos/trunk@335 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-30 Sandro Santilli @@ -35663,8 +38005,8 @@ * source/geom/Geometry.cpp, source/headers/noding.h, source/headers/opBuffer.h, source/noding/IteratedNoder.cpp, source/operation/buffer/BufferBuilder.cpp: Enlarged exception - specifications to allow for AssertionFailedException. Added missing - initializers. git-svn-id: http://svn.osgeo.org/geos/trunk@334 + specifications to allow for AssertionFailedException. Added missing + initializers. git-svn-id: http://svn.osgeo.org/geos/trunk@334 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-28 Sandro Santilli @@ -35674,21 +38016,18 @@ instanceof. Previous typeid(*) use missed to catch an STRAbstractNode as a class derived from AbstractNode. Still have to check if this is the correct semantic with Martin, but at least lots - of SIGABORT are no more raised. git-svn-id: - http://svn.osgeo.org/geos/trunk@333 + of SIGABORT are no more raised. git-svn-id: http://svn.osgeo.org/geos/trunk@333 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-26 Paul Ramsey - * configure.in: Bump version number to 1.4 to indicate new changes. - git-svn-id: http://svn.osgeo.org/geos/trunk@332 + * configure.in: Bump version number to 1.4 to indicate new changes. git-svn-id: http://svn.osgeo.org/geos/trunk@332 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-26 Sandro Santilli * source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp: Some leaks fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@331 + source/index/strtree/STRtree.cpp: Some leaks fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@331 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-23 Sandro Santilli @@ -35696,14 +38035,12 @@ * source/headers/noding.h, source/headers/opBuffer.h, source/noding/IteratedNoder.cpp, source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: const-correctness changes - git-svn-id: http://svn.osgeo.org/geos/trunk@330 + source/operation/buffer/BufferOp.cpp: const-correctness changes git-svn-id: http://svn.osgeo.org/geos/trunk@330 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-21 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp: Fixed bug in computeDepths - git-svn-id: http://svn.osgeo.org/geos/trunk@329 + * source/geomgraph/DirectedEdgeStar.cpp: Fixed bug in computeDepths git-svn-id: http://svn.osgeo.org/geos/trunk@329 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-20 Sandro Santilli @@ -35712,15 +38049,13 @@ source/algorithm/MinimumDiameter.cpp, source/geom/LineString.cpp, source/geom/LinearRing.cpp, source/geom/Polygon.cpp, source/operation/buffer/BufferOp.cpp, - source/operation/overlay/OverlayOp.cpp: More leaks removed. - git-svn-id: http://svn.osgeo.org/geos/trunk@328 + source/operation/overlay/OverlayOp.cpp: More leaks removed. git-svn-id: http://svn.osgeo.org/geos/trunk@328 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-20 Sandro Santilli * source/algorithm/MinimumDiameter.cpp, - source/headers/geosAlgorithm.h: MinimumDiameter leaks plugged. - git-svn-id: http://svn.osgeo.org/geos/trunk@327 + source/headers/geosAlgorithm.h: MinimumDiameter leaks plugged. git-svn-id: http://svn.osgeo.org/geos/trunk@327 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-20 Sandro Santilli @@ -35729,7 +38064,7 @@ source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: More memory leaks - removed. git-svn-id: http://svn.osgeo.org/geos/trunk@326 + removed. git-svn-id: http://svn.osgeo.org/geos/trunk@326 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-20 Sandro Santilli @@ -35739,7 +38074,7 @@ source/operation/buffer/BufferOp.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, source/precision/SimpleGeometryPrecisionReducer.cpp: Memory leaks - removed. git-svn-id: http://svn.osgeo.org/geos/trunk@325 + removed. git-svn-id: http://svn.osgeo.org/geos/trunk@325 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-20 Sandro Santilli @@ -35752,9 +38087,8 @@ source/geom/util/GeometryEditor.cpp, source/headers/geom.h, source/headers/geomUtil.h, source/headers/precision.h, source/precision/SimpleGeometryPrecisionReducer.cpp: GeometryFactory - and Geometry const correctness. Memory leaks removed from - SimpleGeometryPrecisionReducer and GeometryFactory. git-svn-id: - http://svn.osgeo.org/geos/trunk@324 + and Geometry const correctness. Memory leaks removed from + SimpleGeometryPrecisionReducer and GeometryFactory. git-svn-id: http://svn.osgeo.org/geos/trunk@324 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-19 Sandro Santilli @@ -35763,8 +38097,7 @@ source/noding/MCQuadtreeNoder.cpp, source/noding/SegmentString.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Some memory leaks - plugged in noding algorithms. git-svn-id: - http://svn.osgeo.org/geos/trunk@323 + plugged in noding algorithms. git-svn-id: http://svn.osgeo.org/geos/trunk@323 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-19 Sandro Santilli @@ -35776,9 +38109,8 @@ source/operation/buffer/BufferOp.cpp, source/operation/buffer/OffsetCurveBuilder.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - virtual destructor in SpatialIndex class. Memory leaks fixes. Const - and throw specifications added. git-svn-id: - http://svn.osgeo.org/geos/trunk@322 + virtual destructor in SpatialIndex class. Memory leaks fixes. Const + and throw specifications added. git-svn-id: http://svn.osgeo.org/geos/trunk@322 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-19 Sandro Santilli @@ -35787,26 +38119,22 @@ source/noding/IteratedNoder.cpp, source/operation/buffer/BufferBuilder.cpp, source/operation/buffer/BufferOp.cpp: Memory leaks fixes. Throw - specifications added. git-svn-id: - http://svn.osgeo.org/geos/trunk@321 + specifications added. git-svn-id: http://svn.osgeo.org/geos/trunk@321 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli - * source/geom/Point.cpp: Memory leak fix in copy constructor - git-svn-id: http://svn.osgeo.org/geos/trunk@320 + * source/geom/Point.cpp: Memory leak fix in copy constructor git-svn-id: http://svn.osgeo.org/geos/trunk@320 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Leaks fixes git-svn-id: - http://svn.osgeo.org/geos/trunk@319 + * source/operation/buffer/BufferOp.cpp: Leaks fixes git-svn-id: http://svn.osgeo.org/geos/trunk@319 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp: More leaks fixed - git-svn-id: http://svn.osgeo.org/geos/trunk@318 + * source/operation/buffer/OffsetCurveBuilder.cpp: More leaks fixed git-svn-id: http://svn.osgeo.org/geos/trunk@318 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli @@ -35814,77 +38142,71 @@ * source/noding/IteratedNoder.cpp, source/noding/MCQuadtreeNoder.cpp, source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp: Leak fixes. - git-svn-id: http://svn.osgeo.org/geos/trunk@317 + source/operation/buffer/OffsetCurveBuilder.cpp: Leak fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@317 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Memory leaks plugged on - exception thrown git-svn-id: http://svn.osgeo.org/geos/trunk@316 + exception thrown git-svn-id: http://svn.osgeo.org/geos/trunk@316 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Memory leak fixed. - git-svn-id: http://svn.osgeo.org/geos/trunk@315 + * source/operation/buffer/BufferOp.cpp: Memory leak fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@315 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli * source/algorithm/CGAlgorithms.cpp: Removed memory leak in - CGAlgorithms::isOnline git-svn-id: - http://svn.osgeo.org/geos/trunk@314 + CGAlgorithms::isOnline git-svn-id: http://svn.osgeo.org/geos/trunk@314 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli * source/headers/planargraph.h, source/io/Unload.cpp: Unload::Release final delete (static heap allocations should be gone - now) git-svn-id: http://svn.osgeo.org/geos/trunk@313 + now) git-svn-id: http://svn.osgeo.org/geos/trunk@313 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli * source/geom/GeometryFactory.cpp, source/geom/Point.cpp, source/headers/geom.h: Memory leaks fixed and const correctness - applied for Point class. git-svn-id: - http://svn.osgeo.org/geos/trunk@312 + applied for Point class. git-svn-id: http://svn.osgeo.org/geos/trunk@312 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-16 Sandro Santilli * source/geom/PrecisionModel.cpp, source/headers/geom.h, source/io/Unload.cpp: PrecisionModel::Type made an enum instead of a - Type. git-svn-id: http://svn.osgeo.org/geos/trunk@311 + Type. git-svn-id: http://svn.osgeo.org/geos/trunk@311 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-15 Sandro Santilli * source/io/Unload.cpp: Commented out deletion that seems to cause - segfaults git-svn-id: http://svn.osgeo.org/geos/trunk@310 + segfaults git-svn-id: http://svn.osgeo.org/geos/trunk@310 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-15 Sandro Santilli * source/headers/geom.h, source/headers/opBuffer.h, - source/io/Unload.cpp: Added new cleanup to Unload::Release - git-svn-id: http://svn.osgeo.org/geos/trunk@309 + source/io/Unload.cpp: Added new cleanup to Unload::Release git-svn-id: http://svn.osgeo.org/geos/trunk@309 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geom.h: All geometries returned by {from,to}InternalGeometry calls are now deleted after - use (unless NOT new). Some 'commented' throw specifications in - geom.h git-svn-id: http://svn.osgeo.org/geos/trunk@308 + use (unless NOT new). Some 'commented' throw specifications in + geom.h git-svn-id: http://svn.osgeo.org/geos/trunk@308 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/operation/overlay/OverlayOp.cpp: Removed deletion of - externally pointed GeometryFactory from OverlayOp destructor - git-svn-id: http://svn.osgeo.org/geos/trunk@307 + externally pointed GeometryFactory from OverlayOp destructor git-svn-id: http://svn.osgeo.org/geos/trunk@307 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli @@ -35892,55 +38214,50 @@ * source/geom/GeometryCollection.cpp, source/geom/GeometryFactory.cpp, source/index/strtree/AbstractSTRtree.cpp: shouldNeverReachHere - exceptions made more verbose git-svn-id: - http://svn.osgeo.org/geos/trunk@306 + exceptions made more verbose git-svn-id: http://svn.osgeo.org/geos/trunk@306 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/geom/util/GeometryEditor.cpp: Added support for LinearRing - in GeometryEditor git-svn-id: http://svn.osgeo.org/geos/trunk@305 + in GeometryEditor git-svn-id: http://svn.osgeo.org/geos/trunk@305 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/operation/distance/DistanceOp.cpp: Uncommented - initializzazion and destruction of DistanceOp::minDistanceLocation - git-svn-id: http://svn.osgeo.org/geos/trunk@304 + initializzazion and destruction of DistanceOp::minDistanceLocation git-svn-id: http://svn.osgeo.org/geos/trunk@304 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/geom/PrecisionModel.cpp: PrecisionModel(double newScale) - missed to set the scale git-svn-id: - http://svn.osgeo.org/geos/trunk@303 + missed to set the scale git-svn-id: http://svn.osgeo.org/geos/trunk@303 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/headers/noding.h, source/noding/IteratedNoder.cpp: Private iterated noding funx now use int* instead of vector to know when - it's time to stop. git-svn-id: http://svn.osgeo.org/geos/trunk@302 + it's time to stop. git-svn-id: http://svn.osgeo.org/geos/trunk@302 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/operation/buffer/BufferOp.cpp: endCapStyle was never set in - BufferOp contructor git-svn-id: - http://svn.osgeo.org/geos/trunk@301 + BufferOp contructor git-svn-id: http://svn.osgeo.org/geos/trunk@301 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/operation/buffer/BufferBuilder.cpp: BufferBuilder - constructor missed to initialize workingPrecisionModel git-svn-id: - http://svn.osgeo.org/geos/trunk@300 + constructor missed to initialize workingPrecisionModel git-svn-id: http://svn.osgeo.org/geos/trunk@300 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli * source/operation/buffer/BufferOp.cpp: BufferOp constructor missed - to set argGeom git-svn-id: http://svn.osgeo.org/geos/trunk@299 + to set argGeom git-svn-id: http://svn.osgeo.org/geos/trunk@299 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Sandro Santilli @@ -35948,8 +38265,7 @@ * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/headers/geom.h: Fixed GeometryFactory constructors to copy given PrecisionModel. Added GeometryFactory copy constructor. Fixed - Geometry constructors to copy GeometryFactory. git-svn-id: - http://svn.osgeo.org/geos/trunk@298 + Geometry constructors to copy GeometryFactory. git-svn-id: http://svn.osgeo.org/geos/trunk@298 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-14 Yury Bychkov @@ -35963,57 +38279,49 @@ source/geomgraph/index/SimpleSweepLineIntersector.cpp, source/geomgraph/index/SweepLineEvent.cpp, source/geomgraph/index/SweepLineSegment.cpp: "geomgraph/index" - committ problem fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@297 + committ problem fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@297 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/geom/Point.cpp: Removed faulty assert in constructor - git-svn-id: http://svn.osgeo.org/geos/trunk@296 + * source/geom/Point.cpp: Removed faulty assert in constructor git-svn-id: http://svn.osgeo.org/geos/trunk@296 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/geom/Makefile.am: Added more source files git-svn-id: - http://svn.osgeo.org/geos/trunk@295 + * source/geom/Makefile.am: Added more source files git-svn-id: http://svn.osgeo.org/geos/trunk@295 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * doc/example.cpp: Removed spurious line git-svn-id: - http://svn.osgeo.org/geos/trunk@294 + * doc/example.cpp: Removed spurious line git-svn-id: http://svn.osgeo.org/geos/trunk@294 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/headers/precision.h: prototype mismatch fixed git-svn-id: - http://svn.osgeo.org/geos/trunk@293 + * source/headers/precision.h: prototype mismatch fixed git-svn-id: http://svn.osgeo.org/geos/trunk@293 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli * source/headers/opDistance.h, source/operation/distance/GeometryLocation.cpp: GeometryLocation - const-correctness. git-svn-id: http://svn.osgeo.org/geos/trunk@292 + const-correctness. git-svn-id: http://svn.osgeo.org/geos/trunk@292 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/headers/Makefile.am: Added lost opDistance.h git-svn-id: - http://svn.osgeo.org/geos/trunk@291 + * source/headers/Makefile.am: Added lost opDistance.h git-svn-id: http://svn.osgeo.org/geos/trunk@291 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/headers/Makefile.am: Added new header files git-svn-id: - http://svn.osgeo.org/geos/trunk@290 + * source/headers/Makefile.am: Added new header files git-svn-id: http://svn.osgeo.org/geos/trunk@290 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/geom/Makefile.am: Added new source files git-svn-id: - http://svn.osgeo.org/geos/trunk@289 + * source/geom/Makefile.am: Added new source files git-svn-id: http://svn.osgeo.org/geos/trunk@289 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli @@ -36021,16 +38329,14 @@ * source/headers/opDistance.h, source/operation/distance/DistanceOp.cpp, source/operation/distance/GeometryLocation.cpp: GeometryLocation - constructor made const-correct. Fixed erroneus down-casting in - DistanceOp::computeMinDistancePoints. git-svn-id: - http://svn.osgeo.org/geos/trunk@288 + constructor made const-correct. Fixed erroneus down-casting in + DistanceOp::computeMinDistancePoints. git-svn-id: http://svn.osgeo.org/geos/trunk@288 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-13 Sandro Santilli - * source/headers/geom.h: Changed all 'long long' with int64. Changed - all 'long long' constants to end with two Ls. git-svn-id: - http://svn.osgeo.org/geos/trunk@287 + * source/headers/geom.h: Changed all 'long long' with int64. + Changed all 'long long' constants to end with two Ls. git-svn-id: http://svn.osgeo.org/geos/trunk@287 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-10 Yury Bychkov @@ -36044,7 +38350,7 @@ source/precision/EnhancedPrecisionOp.cpp, source/precision/SimpleGeometryPrecisionReducer.cpp, source/util/UniqueCoordinateArrayFilter.cpp: "precision" upgraded to - JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@286 + JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@286 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-10 Yury Bychkov @@ -36064,8 +38370,7 @@ source/operation/buffer/SubgraphDepthLocater.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PolygonBuilder.cpp: "operation/buffer" - upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@285 + upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@285 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-08 Yury Bychkov @@ -36076,8 +38381,7 @@ source/operation/polygonize/PolygonizeGraph.cpp, source/operation/polygonize/Polygonizer.cpp, source/operation/polygonize/polygonizeEdgeRing.cpp: - "operation/polygonize" ported from JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@284 + "operation/polygonize" ported from JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@284 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-07 Yury Bychkov @@ -36090,10 +38394,10 @@ source/operation/linemerge/LineMergeEdge.cpp, source/operation/linemerge/LineMergeGraph.cpp, source/operation/linemerge/LineMerger.cpp, + source/planargraph/PlanarGraph.cpp, source/planargraph/planarNodeMap.cpp, - source/planargraph/{PlanarGraph.cpp => planarPlanarGraph.cpp}: - "operation/linemerge" ported from JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@283 + source/planargraph/planarPlanarGraph.cpp: "operation/linemerge" + ported from JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@283 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-05 Yury Bychkov @@ -36108,8 +38412,7 @@ source/operation/distance/LineExtracterFilter.cpp, source/operation/distance/PointExtracterFilter.cpp, source/operation/distance/PolygonExtracterFilter.cpp: - "operation/distance" upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@282 + "operation/distance" upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@282 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-04 Yury Bychkov @@ -36128,8 +38431,7 @@ source/planargraph/planarGraphComponent.cpp, source/planargraph/planarNode.cpp, source/planargraph/planarNodeMap.cpp: "planargraph" and "geom/utill" - upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@281 + upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@281 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-04-01 Yury Bychkov @@ -36139,8 +38441,7 @@ source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, source/geom/Polygon.cpp, source/headers/geom.h, source/io/Unload.cpp: All "geom" classes from - JTS 1.3 upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@280 + JTS 1.3 upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@280 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-31 Yury Bychkov @@ -36149,8 +38450,7 @@ source/geom/MultiPolygon.cpp, source/geom/Point.cpp, source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, source/geomgraph/EdgeNodingValidator.cpp, source/headers/geom.h: - "geom" partially upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@279 + "geom" partially upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@279 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-29 Yury Bychkov @@ -36173,8 +38473,7 @@ source/operation/valid/SweeplineNestedRingTester.cpp: "noding/snapround" package ported (JTS 1.4); "operation", "operation/valid", "operation/relate" and "operation/overlay" - upgraded to JTS 1.4; "geom" partially upgraded. git-svn-id: - http://svn.osgeo.org/geos/trunk@278 + upgraded to JTS 1.4; "geom" partially upgraded. git-svn-id: http://svn.osgeo.org/geos/trunk@278 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-26 Yury Bychkov @@ -36185,7 +38484,7 @@ source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, source/noding/nodingSegmentIntersector.cpp: "noding" package ported - (JTS 1.4) git-svn-id: http://svn.osgeo.org/geos/trunk@277 + (JTS 1.4) git-svn-id: http://svn.osgeo.org/geos/trunk@277 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-25 Yury Bychkov @@ -36222,8 +38521,7 @@ source/index/strtree/AbstractNode.cpp, source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/SIRtree.cpp, source/index/strtree/STRtree.cpp: - All "index/*" packages upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@276 + All "index/*" packages upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@276 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-19 Yury Bychkov @@ -36250,15 +38548,15 @@ source/graph/index/SimpleMCSweepLineIntersector.cpp, source/graph/index/SimpleSweepLineIntersector.cpp, source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/{graph.h => - geomgraph.h}, source/headers/{graphindex.h => geomgraphindex.h}, + source/graph/index/SweepLineSegment.cpp, + source/headers/geomgraph.h, source/headers/geomgraphindex.h, + source/headers/graph.h, source/headers/graphindex.h, source/headers/noding.h, source/headers/opOverlay.h, source/headers/opRelate.h, source/headers/operation.h, source/index/chain/MonotoneChainBuilder.cpp, source/io/Unload.cpp, source/operation/buffer/BufferOp.cpp, source/operation/overlay/OverlayOp.cpp, source/test/XMLTester.cpp: - "geomgraph" and "geomgraph/indexl" upgraded to JTS 1.4 git-svn-id: - http://svn.osgeo.org/geos/trunk@275 + "geomgraph" and "geomgraph/indexl" upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@275 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-18 Yury Bychkov @@ -36269,8 +38567,7 @@ source/headers/io.h, source/headers/util.h, source/io/StringTokenizer.cpp, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/util/GeometricShapeFactory.cpp: "IO" - and "Util" upgraded to JTS 1.4 "Geometry" partially upgraded. - git-svn-id: http://svn.osgeo.org/geos/trunk@274 + and "Util" upgraded to JTS 1.4 "Geometry" partially upgraded. git-svn-id: http://svn.osgeo.org/geos/trunk@274 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-17 Yury Bychkov @@ -36289,8 +38586,7 @@ source/algorithm/SimplePointInAreaLocator.cpp, source/algorithm/SimplePointInRing.cpp, source/geom/Geometry.cpp, source/headers/geom.h, source/headers/geosAlgorithm.h, - source/test/Stackwalker.h: "Algorithm" upgraded to JTS 1.4 - git-svn-id: http://svn.osgeo.org/geos/trunk@273 + source/test/Stackwalker.h: "Algorithm" upgraded to JTS 1.4 git-svn-id: http://svn.osgeo.org/geos/trunk@273 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-03-01 Sandro Santilli @@ -36300,75 +38596,65 @@ source/operation/buffer/BufferOp.cpp, source/operation/relate/RelateOp.cpp: applied const correctness changes by Manuel Prieto Villegas - git-svn-id: - http://svn.osgeo.org/geos/trunk@272 + git-svn-id: http://svn.osgeo.org/geos/trunk@272 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-02-27 Sandro Santilli * source/geom/Polygon.cpp: memory leak fix in Polygon::getArea() - - reported by 'Manuel Prieto Villegas' git-svn-id: - http://svn.osgeo.org/geos/trunk@271 + reported by 'Manuel Prieto Villegas' git-svn-id: http://svn.osgeo.org/geos/trunk@271 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-02-27 Sandro Santilli * source/algorithm/CGAlgorithms.cpp, source/headers/geosAlgorithm.h: made CGAlgorithms::signedArea() and CGAlgorithms::length() arguments - const-correct git-svn-id: http://svn.osgeo.org/geos/trunk@270 + const-correct git-svn-id: http://svn.osgeo.org/geos/trunk@270 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-02-20 Paul Ramsey * ltmain.sh: Changed to new version of ltmain, that matches the - version of libtool on build box git-svn-id: - http://svn.osgeo.org/geos/trunk@269 + version of libtool on build box git-svn-id: http://svn.osgeo.org/geos/trunk@269 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-01-20 Paul Ramsey - * configure.in: Change platform.h back to AM_CONFIG_HEADER. - git-svn-id: http://svn.osgeo.org/geos/trunk@268 + * configure.in: Change platform.h back to AM_CONFIG_HEADER. git-svn-id: http://svn.osgeo.org/geos/trunk@268 5242fede-7e19-0410-aef8-94bd7d2200fb 2004-01-20 Paul Ramsey * configure.in: Change AM_CONFIG_HEADER to AC_CONFIG_HEADERS to - allow autoheader to work its magic. git-svn-id: - http://svn.osgeo.org/geos/trunk@267 + allow autoheader to work its magic. git-svn-id: http://svn.osgeo.org/geos/trunk@267 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-12-11 Sandro Santilli * source/operation/buffer/BufferOp.cpp: made buffer(0) back to its - *correct* semantic (empy collection) git-svn-id: - http://svn.osgeo.org/geos/trunk@266 + *correct* semantic (empy collection) git-svn-id: http://svn.osgeo.org/geos/trunk@266 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-12-11 Sandro Santilli * source/operation/buffer/BufferOp.cpp: made buffer operation return - a cloned input geom when called with 0 as distance git-svn-id: - http://svn.osgeo.org/geos/trunk@265 + a cloned input geom when called with 0 as distance git-svn-id: http://svn.osgeo.org/geos/trunk@265 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-12-11 Sandro Santilli * source/geom/GeometryCollection.cpp: Fixed bogus copy constructor - (making clone bogus) git-svn-id: - http://svn.osgeo.org/geos/trunk@264 + (making clone bogus) git-svn-id: http://svn.osgeo.org/geos/trunk@264 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-13 Sandro Santilli - * doc/example.cpp: bug fixed in relate call git-svn-id: - http://svn.osgeo.org/geos/trunk@263 + * doc/example.cpp: bug fixed in relate call git-svn-id: http://svn.osgeo.org/geos/trunk@263 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli - * doc/example.cpp: added relational operators git-svn-id: - http://svn.osgeo.org/geos/trunk@262 + * doc/example.cpp: added relational operators git-svn-id: http://svn.osgeo.org/geos/trunk@262 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli @@ -36376,98 +38662,86 @@ * source/graph/PlanarGraph.cpp, source/headers/graph.h, source/headers/opOverlay.h, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/PolygonBuilder.cpp: Added throw - specification. Fixed leaks on exceptions. git-svn-id: - http://svn.osgeo.org/geos/trunk@261 + specification. Fixed leaks on exceptions. git-svn-id: http://svn.osgeo.org/geos/trunk@261 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli * source/geom/PrecisionModel.cpp: made sure PrecisionModel scale is - never 0 git-svn-id: http://svn.osgeo.org/geos/trunk@260 + never 0 git-svn-id: http://svn.osgeo.org/geos/trunk@260 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli - * source/test/XMLTester.cpp: added missing initialization - git-svn-id: http://svn.osgeo.org/geos/trunk@259 + * source/test/XMLTester.cpp: added missing initialization git-svn-id: http://svn.osgeo.org/geos/trunk@259 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli * source/headers/opOverlay.h, source/operation/overlay/OverlayOp.cpp: Added some more throw - specifications and cleanup on exception (leaks removed). - git-svn-id: http://svn.osgeo.org/geos/trunk@258 + specifications and cleanup on exception (leaks removed). git-svn-id: http://svn.osgeo.org/geos/trunk@258 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli * source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEndStar.cpp, source/graph/GeometryGraph.cpp, source/headers/graph.h: Added some - more throw specifications git-svn-id: - http://svn.osgeo.org/geos/trunk@257 + more throw specifications git-svn-id: http://svn.osgeo.org/geos/trunk@257 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli - * source/test/XMLTester.cpp: more cleanup on exception git-svn-id: - http://svn.osgeo.org/geos/trunk@256 + * source/test/XMLTester.cpp: more cleanup on exception git-svn-id: http://svn.osgeo.org/geos/trunk@256 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli * doc/example.cpp: removed old changelog, moved comments in the nice - standard frame git-svn-id: http://svn.osgeo.org/geos/trunk@255 + standard frame git-svn-id: http://svn.osgeo.org/geos/trunk@255 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-12 Sandro Santilli - * autogen.sh: added autoheader call git-svn-id: - http://svn.osgeo.org/geos/trunk@254 + * autogen.sh: added autoheader call git-svn-id: http://svn.osgeo.org/geos/trunk@254 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Memory leak fix in - insertEdge() git-svn-id: http://svn.osgeo.org/geos/trunk@253 + insertEdge() git-svn-id: http://svn.osgeo.org/geos/trunk@253 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Paul Ramsey - * ChangeLog: Added current ChangeLog git-svn-id: - http://svn.osgeo.org/geos/trunk@252 + * ChangeLog: Added current ChangeLog git-svn-id: http://svn.osgeo.org/geos/trunk@252 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Sandro Santilli - * source/headers/config.h.in: will be generated with ./autogen.sh - git-svn-id: http://svn.osgeo.org/geos/trunk@251 + * source/headers/config.h.in: will be generated with ./autogen.sh git-svn-id: http://svn.osgeo.org/geos/trunk@251 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Sandro Santilli * Makefile.am, configure.in, doc/.cvsignore, doc/Makefile, doc/Makefile.am: Made doc/ directory part of distribution. Uniformed - doc build script to autotools. git-svn-id: - http://svn.osgeo.org/geos/trunk@250 + doc build script to autotools. git-svn-id: http://svn.osgeo.org/geos/trunk@250 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Sandro Santilli - * source/headers/.cvsignore: added config.h.in (missed before) - git-svn-id: http://svn.osgeo.org/geos/trunk@249 + * source/headers/.cvsignore: added config.h.in (missed before) git-svn-id: http://svn.osgeo.org/geos/trunk@249 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Sandro Santilli - * source/headers/.cvsignore: added config.h.in git-svn-id: - http://svn.osgeo.org/geos/trunk@248 + * source/headers/.cvsignore: added config.h.in git-svn-id: http://svn.osgeo.org/geos/trunk@248 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Paul Ramsey - * AUTHORS: Added people! git-svn-id: - http://svn.osgeo.org/geos/trunk@247 + * AUTHORS: Added people! git-svn-id: http://svn.osgeo.org/geos/trunk@247 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-07 Paul Ramsey @@ -36615,109 +38889,95 @@ source/util/IllegalArgumentException.cpp, source/util/UniqueCoordinateArrayFilter.cpp, source/util/UnsupportedOperationException.cpp: Add standard CVS - headers licence notices and copyrights to all cpp and h files. - git-svn-id: http://svn.osgeo.org/geos/trunk@245 + headers licence notices and copyrights to all cpp and h files. git-svn-id: http://svn.osgeo.org/geos/trunk@245 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/graph/EdgeIntersectionList.cpp: removed useless Coordinate - copy in ::createSplitEdge() git-svn-id: - http://svn.osgeo.org/geos/trunk@244 + copy in ::createSplitEdge() git-svn-id: http://svn.osgeo.org/geos/trunk@244 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli - * doc/.cvsignore: first import git-svn-id: - http://svn.osgeo.org/geos/trunk@243 + * doc/.cvsignore: first import git-svn-id: http://svn.osgeo.org/geos/trunk@243 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli - * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@242 + * TODO: updated git-svn-id: http://svn.osgeo.org/geos/trunk@242 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/operation/overlay/PolygonBuilder.cpp: added throw - information comment in PolygonBuilder git-svn-id: - http://svn.osgeo.org/geos/trunk@241 + information comment in PolygonBuilder git-svn-id: http://svn.osgeo.org/geos/trunk@241 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Added throw specification for BufferOp's ::buildSubgraphs() and ::computeBuffer(). Cleanup on - exception in computeBuffer(). git-svn-id: - http://svn.osgeo.org/geos/trunk@240 + exception in computeBuffer(). git-svn-id: http://svn.osgeo.org/geos/trunk@240 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/headers/opBuffer.h: Added throw specification for - BufferOp's ::buildSubgraphs() and ::computeBuffer() git-svn-id: - http://svn.osgeo.org/geos/trunk@239 + BufferOp's ::buildSubgraphs() and ::computeBuffer() git-svn-id: http://svn.osgeo.org/geos/trunk@239 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/graph/DirectedEdgeStar.cpp, source/headers/graph.h: Added - throw specification for DirectEdgeStar::linkResultDirectedEdges() - git-svn-id: http://svn.osgeo.org/geos/trunk@238 + throw specification for DirectEdgeStar::linkResultDirectedEdges() git-svn-id: http://svn.osgeo.org/geos/trunk@238 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/operation/buffer/BufferOp.cpp: Cleanup on exception in - ::bufferOp() git-svn-id: http://svn.osgeo.org/geos/trunk@237 + ::bufferOp() git-svn-id: http://svn.osgeo.org/geos/trunk@237 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli - * source/graph/EdgeRing.cpp: Memory leaks fixed in ::containsPoint() - git-svn-id: http://svn.osgeo.org/geos/trunk@236 + * source/graph/EdgeRing.cpp: Memory leaks fixed in ::containsPoint() git-svn-id: http://svn.osgeo.org/geos/trunk@236 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/operation/buffer/BufferLineBuilder.cpp: Fixed memory leaks - in ::closePt() and ::addLineEndCap() git-svn-id: - http://svn.osgeo.org/geos/trunk@235 + in ::closePt() and ::addLineEndCap() git-svn-id: http://svn.osgeo.org/geos/trunk@235 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * source/operation/buffer/BufferEdgeBuilder.cpp: Added support for - LinearRing, removed memory leaks in ::addLineString git-svn-id: - http://svn.osgeo.org/geos/trunk@234 + LinearRing, removed memory leaks in ::addLineString git-svn-id: http://svn.osgeo.org/geos/trunk@234 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Sandro Santilli * doc/example.cpp: Added Buffer,Intersection,Difference and - Symdifference. Exception cleanup git-svn-id: - http://svn.osgeo.org/geos/trunk@233 + Symdifference. Exception cleanup git-svn-id: http://svn.osgeo.org/geos/trunk@233 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-06 Paul Ramsey - * INSTALL: Small addition of into about LD_LIBRARY_PATH - git-svn-id: http://svn.osgeo.org/geos/trunk@232 + * INSTALL: Small addition of into about LD_LIBRARY_PATH git-svn-id: http://svn.osgeo.org/geos/trunk@232 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-05 Sandro Santilli * doc/Makefile, doc/example.cpp: Modified example.cpp to make use of vectors instead of Geometry * / int couples. Added LineString - creation example. Added Makefile to compile it. git-svn-id: - http://svn.osgeo.org/geos/trunk@231 + creation example. Added Makefile to compile it. git-svn-id: http://svn.osgeo.org/geos/trunk@231 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-11-03 Sandro Santilli * doc/example.cpp: Removed comments about segfaults, made the simple - collection creation call cleaner by use of the clone() method. - git-svn-id: http://svn.osgeo.org/geos/trunk@230 + collection creation call cleaner by use of the clone() method. git-svn-id: http://svn.osgeo.org/geos/trunk@230 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-31 Sandro Santilli @@ -36725,48 +38985,43 @@ * source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, source/geom/Point.cpp, source/geom/Polygon.cpp, source/headers/geom.h: Re-introduced clone() method. Copy - constructor could not really replace it. git-svn-id: - http://svn.osgeo.org/geos/trunk@229 + constructor could not really replace it. git-svn-id: http://svn.osgeo.org/geos/trunk@229 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-29 Sandro Santilli - * doc/example.cpp: Added centroid computation example git-svn-id: - http://svn.osgeo.org/geos/trunk@228 + * doc/example.cpp: Added centroid computation example git-svn-id: http://svn.osgeo.org/geos/trunk@228 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-29 Sandro Santilli * source/algorithm/CentroidLine.cpp: Added support for LinearRing - types (treated as LineString) git-svn-id: - http://svn.osgeo.org/geos/trunk@227 + types (treated as LineString) git-svn-id: http://svn.osgeo.org/geos/trunk@227 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-24 Sandro Santilli * source/headers/geom.h: Added GeometryTypeId enum and - getGeometryTypeId abstract Geometry method. git-svn-id: - http://svn.osgeo.org/geos/trunk@226 + getGeometryTypeId abstract Geometry method. git-svn-id: http://svn.osgeo.org/geos/trunk@226 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-23 Sandro Santilli - * source/headers/.cvsignore: Added stamp-h2 and platform.h - git-svn-id: http://svn.osgeo.org/geos/trunk@225 + * source/headers/.cvsignore: Added stamp-h2 and platform.h git-svn-id: http://svn.osgeo.org/geos/trunk@225 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-23 Sandro Santilli * source/headers/util.h: Made CoordinateArrayFilter destructor - virtual. git-svn-id: http://svn.osgeo.org/geos/trunk@224 + virtual. git-svn-id: http://svn.osgeo.org/geos/trunk@224 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-22 Sandro Santilli - * configure.in, source/headers/{platform.h => platform.h.in}: Made - platform.h be created by configure. In this way we will not have - problems of installed headers trying to include phantom config.h. - git-svn-id: http://svn.osgeo.org/geos/trunk@223 + * configure.in, source/headers/platform.h, + source/headers/platform.h.in: Made platform.h be created by + configure. In this way we will not have problems of installed + headers trying to include phantom config.h. git-svn-id: http://svn.osgeo.org/geos/trunk@223 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-22 Sandro Santilli @@ -36775,76 +39030,68 @@ source/index/quadtree/DoubleBits.cpp: Quadtree bitfield operations made using type int64. Type int64 typedef'ed based on autoconf detected int type (long or long long). If long is not 64bits int64 - will be really 32 bits and INT64_IS_REALLY32 will be defined. - git-svn-id: http://svn.osgeo.org/geos/trunk@222 + will be really 32 bits and INT64_IS_REALLY32 will be defined. git-svn-id: http://svn.osgeo.org/geos/trunk@222 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-21 Sandro Santilli * acsite.m4, configure.in, source/headers/acconfig.h, - source/headers/config.h.in: Added macros to find 64bit integer. - git-svn-id: http://svn.osgeo.org/geos/trunk@221 + source/headers/config.h.in: Added macros to find 64bit integer. git-svn-id: http://svn.osgeo.org/geos/trunk@221 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-21 Sandro Santilli * doc/example.cpp: Uncommented point creation lines. Updated - comments about segfaults. git-svn-id: - http://svn.osgeo.org/geos/trunk@220 + comments about segfaults. git-svn-id: http://svn.osgeo.org/geos/trunk@220 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-21 Paul Ramsey * source/test/Makefile.am: Added test.xml so it gets picked up by - 'make dist' git-svn-id: http://svn.osgeo.org/geos/trunk@219 + 'make dist' git-svn-id: http://svn.osgeo.org/geos/trunk@219 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-21 Paul Ramsey - * INSTALL: Added simple installation directions. git-svn-id: - http://svn.osgeo.org/geos/trunk@218 + * INSTALL: Added simple installation directions. git-svn-id: http://svn.osgeo.org/geos/trunk@218 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-21 Paul Ramsey * source/examples/Makefile.am, source/geom/Makefile.am, source/test/Makefile.am: Fix up references to header files to 'make - dist' works. git-svn-id: http://svn.osgeo.org/geos/trunk@217 + dist' works. git-svn-id: http://svn.osgeo.org/geos/trunk@217 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-20 Sandro Santilli - * doc/example.cpp: added Union example git-svn-id: - http://svn.osgeo.org/geos/trunk@216 + * doc/example.cpp: added Union example git-svn-id: http://svn.osgeo.org/geos/trunk@216 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-20 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geom.h: Geometry::checkNotGeometryCollection made static and - non-distructive. git-svn-id: http://svn.osgeo.org/geos/trunk@215 + non-distructive. git-svn-id: http://svn.osgeo.org/geos/trunk@215 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-20 Sandro Santilli * source/graph/EdgeRing.cpp, source/operation/valid/ConnectedInteriorTester.cpp: more explicit - exception thrown on null Directed Edge detection git-svn-id: - http://svn.osgeo.org/geos/trunk@214 + exception thrown on null Directed Edge detection git-svn-id: http://svn.osgeo.org/geos/trunk@214 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-20 Sandro Santilli - * source/util/AssertionFailedException.cpp: fixed typo git-svn-id: - http://svn.osgeo.org/geos/trunk@213 + * source/util/AssertionFailedException.cpp: fixed typo git-svn-id: http://svn.osgeo.org/geos/trunk@213 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-20 Sandro Santilli * source/graph/GeometryGraph.cpp: LinearRing handled as a LineString in GeometryGraph::add(const Geometry *) - more explicit exception - thrown for unknown geometries git-svn-id: - http://svn.osgeo.org/geos/trunk@212 + thrown for unknown geometries git-svn-id: http://svn.osgeo.org/geos/trunk@212 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-17 Yury Bychkov @@ -36852,22 +39099,20 @@ * VisualStudio/GEOS.vcproj, source/geom/Polygon.cpp, source/headers/indexQuadtree.h, source/index/quadtree/DoubleBits.cpp, source/test/XMLTester.cpp: - Fixed a small memory leak. git-svn-id: - http://svn.osgeo.org/geos/trunk@211 + Fixed a small memory leak. git-svn-id: http://svn.osgeo.org/geos/trunk@211 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli * source/util/GEOSException.cpp, source/util/UnsupportedOperationException.cpp: Fixed a bug in - GEOSException that prevented print of the type of exception thrown. - git-svn-id: http://svn.osgeo.org/geos/trunk@210 + GEOSException that prevented print of the type of exception thrown. git-svn-id: http://svn.osgeo.org/geos/trunk@210 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli * source/operation/valid/RepeatedPointTester.cpp: dropped useless - string() cast git-svn-id: http://svn.osgeo.org/geos/trunk@209 + string() cast git-svn-id: http://svn.osgeo.org/geos/trunk@209 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli @@ -36875,20 +39120,17 @@ * source/geom/TopologyException.cpp, source/headers/geom.h, source/headers/util.h, source/util/IllegalArgumentException.cpp: Made TopologyException inherit from GEOSException. Adjusted - IllegalArgumentException subclassing. git-svn-id: - http://svn.osgeo.org/geos/trunk@208 + IllegalArgumentException subclassing. git-svn-id: http://svn.osgeo.org/geos/trunk@208 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli - * source/test/XMLTester.cpp: Added call to Unload::Release() - git-svn-id: http://svn.osgeo.org/geos/trunk@207 + * source/test/XMLTester.cpp: Added call to Unload::Release() git-svn-id: http://svn.osgeo.org/geos/trunk@207 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli - * source/test/XMLTester.cpp: bug fixed in exception handling - git-svn-id: http://svn.osgeo.org/geos/trunk@206 + * source/test/XMLTester.cpp: bug fixed in exception handling git-svn-id: http://svn.osgeo.org/geos/trunk@206 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli @@ -36908,14 +39150,12 @@ source/operation/overlay/LineBuilder.cpp, source/operation/valid/QuadtreeNestedRingTester.cpp: Memory leak fixes. Improved performance by mean of more calls to new - getCoordinatesRO() when applicable. git-svn-id: - http://svn.osgeo.org/geos/trunk@205 + getCoordinatesRO() when applicable. git-svn-id: http://svn.osgeo.org/geos/trunk@205 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-16 Sandro Santilli - * source/test/XMLTester.cpp: Exceptions handled git-svn-id: - http://svn.osgeo.org/geos/trunk@204 + * source/test/XMLTester.cpp: Exceptions handled git-svn-id: http://svn.osgeo.org/geos/trunk@204 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli @@ -36932,15 +39172,14 @@ source/headers/graphindex.h, source/operation/buffer/BufferOp.cpp, source/operation/buffer/RightmostEdgeFinder.cpp, source/operation/overlay/LineBuilder.cpp: Made - Edge::getCoordinates() return a 'const' value. Adapted code set. - git-svn-id: http://svn.osgeo.org/geos/trunk@203 + Edge::getCoordinates() return a 'const' value. Adapted code set. git-svn-id: http://svn.osgeo.org/geos/trunk@203 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli * source/algorithm/MCPointInRing.cpp, source/algorithm/PointLocator.cpp: Adapted to new getCoordinatesRO() - interface git-svn-id: http://svn.osgeo.org/geos/trunk@202 + interface git-svn-id: http://svn.osgeo.org/geos/trunk@202 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli @@ -36950,8 +39189,8 @@ source/graph/index/SweepLineSegment.cpp, source/headers/graphindex.h: Declared a SweepLineEventOBJ from which MonotoneChain and SweepLineSegment derive to abstract SweepLineEvent - object previously done on void * pointers. No more compiler - warnings... git-svn-id: http://svn.osgeo.org/geos/trunk@201 + object previously done on void * pointers. No more compiler + warnings... git-svn-id: http://svn.osgeo.org/geos/trunk@201 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli @@ -36959,7 +39198,7 @@ * source/graph/GeometryGraph.cpp, source/operation/valid/ConnectedInteriorTester.cpp, source/operation/valid/IsValidOp.cpp: Use getCoordinatesRO() - introduced. git-svn-id: http://svn.osgeo.org/geos/trunk@200 + introduced. git-svn-id: http://svn.osgeo.org/geos/trunk@200 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli @@ -36968,49 +39207,43 @@ source/geom/CoordinateList.cpp, source/geom/PointCoordinateList.cpp, source/headers/geom.h: Formalized const nature of toVector() method and of first argument - to static removeRepeatedPoints(). git-svn-id: - http://svn.osgeo.org/geos/trunk@199 + to static removeRepeatedPoints(). git-svn-id: http://svn.osgeo.org/geos/trunk@199 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli * source/geom/BasicCoordinateList.cpp, source/geom/PointCoordinateList.cpp, source/headers/geom.h: Made - setPoints() get a const vector. git-svn-id: - http://svn.osgeo.org/geos/trunk@198 + setPoints() get a const vector. git-svn-id: http://svn.osgeo.org/geos/trunk@198 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli * source/geom/LineString.cpp, source/headers/geom.h: Added - getCoordinatesRO() public method. git-svn-id: - http://svn.osgeo.org/geos/trunk@197 + getCoordinatesRO() public method. git-svn-id: http://svn.osgeo.org/geos/trunk@197 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli - * source/io/WKTReader.cpp: Memory leaks fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@196 + * source/io/WKTReader.cpp: Memory leaks fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@196 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli - * TODO: Initial import git-svn-id: - http://svn.osgeo.org/geos/trunk@195 + * TODO: Initial import git-svn-id: http://svn.osgeo.org/geos/trunk@195 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-15 Sandro Santilli * source/geom/Polygon.cpp: Memory leaks fixed. Partially due to getCoordinates() and GeometryCollection() changes, partially old - dated. git-svn-id: http://svn.osgeo.org/geos/trunk@194 + dated. git-svn-id: http://svn.osgeo.org/geos/trunk@194 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-14 Sandro Santilli * source/geom/GeometryFactory.cpp: Useless vector - leaking allocations removed git-svn-id: - http://svn.osgeo.org/geos/trunk@193 + leaking allocations removed git-svn-id: http://svn.osgeo.org/geos/trunk@193 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli @@ -37018,22 +39251,21 @@ * .cvsignore, macros/.cvsignore, source/bigtest/.cvsignore, source/examples/.cvsignore, source/geom/.cvsignore, source/headers/.cvsignore, source/test/.cvsignore: Added build time - created files to cvsignore lists git-svn-id: - http://svn.osgeo.org/geos/trunk@192 + created files to cvsignore lists git-svn-id: http://svn.osgeo.org/geos/trunk@192 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli * source/headers/opValid.h, source/operation/valid/IsValidOp.cpp: IsValidOp constructor used same name for the arg and a private - element. Fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@191 + element. Fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@191 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli * source/operation/overlay/MaximalEdgeRing.cpp, source/operation/overlay/PolygonBuilder.cpp: delete statement - removed git-svn-id: http://svn.osgeo.org/geos/trunk@190 + removed git-svn-id: http://svn.osgeo.org/geos/trunk@190 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli @@ -37041,35 +39273,32 @@ * source/algorithm/CentroidArea.cpp, source/algorithm/InteriorPointPoint.cpp, source/headers/geosAlgorithm.h: Fixed some leak or fault flips - (forced copy of a single coordinate) git-svn-id: - http://svn.osgeo.org/geos/trunk@189 + (forced copy of a single coordinate) git-svn-id: http://svn.osgeo.org/geos/trunk@189 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli * source/test/XMLTester.cpp: accept input file as first argument on - cmdline git-svn-id: http://svn.osgeo.org/geos/trunk@188 + cmdline git-svn-id: http://svn.osgeo.org/geos/trunk@188 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli * source/geom/Geometry.cpp, source/headers/geom.h: removed - sortedClasses strings array from all geometries. git-svn-id: - http://svn.osgeo.org/geos/trunk@187 + sortedClasses strings array from all geometries. git-svn-id: http://svn.osgeo.org/geos/trunk@187 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-13 Sandro Santilli * source/headers/indexQuadtree.h, source/index/quadtree/DoubleBits.cpp: long -> long long enlargement - of types to allow for left/rigth shift of 53 bits git-svn-id: - http://svn.osgeo.org/geos/trunk@186 + of types to allow for left/rigth shift of 53 bits git-svn-id: http://svn.osgeo.org/geos/trunk@186 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-11 Sandro Santilli * source/geom/LineString.cpp, source/geom/LinearRing.cpp: fixed - spurious typos git-svn-id: http://svn.osgeo.org/geos/trunk@185 + spurious typos git-svn-id: http://svn.osgeo.org/geos/trunk@185 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-11 Sandro Santilli @@ -37142,60 +39371,53 @@ source/operation/valid/SweeplineNestedRingTester.cpp, source/util/Assert.cpp, source/util/CoordinateArrayFiter.cpp, source/util/UniqueCoordinateArrayFilter.cpp: Code base padded with - 'const' keywords ;) git-svn-id: - http://svn.osgeo.org/geos/trunk@184 + 'const' keywords ;) git-svn-id: http://svn.osgeo.org/geos/trunk@184 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli * source/geom/GeometryFactory.cpp, source/headers/geom.h: added - 'const' keyword to GeometryFactory constructor, Log on top of geom.h - git-svn-id: http://svn.osgeo.org/geos/trunk@183 + 'const' keyword to GeometryFactory constructor, Log on top of geom.h git-svn-id: http://svn.osgeo.org/geos/trunk@183 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli - * doc/example.cpp: moved Log to a better place git-svn-id: - http://svn.osgeo.org/geos/trunk@182 + * doc/example.cpp: moved Log to a better place git-svn-id: http://svn.osgeo.org/geos/trunk@182 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli - * doc/example.cpp: added convexHull and PrecisionModel git-svn-id: - http://svn.osgeo.org/geos/trunk@181 + * doc/example.cpp: added convexHull and PrecisionModel git-svn-id: http://svn.osgeo.org/geos/trunk@181 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli * source/geom/GeometryFactory.cpp: just a style change in top Log - comment. git-svn-id: http://svn.osgeo.org/geos/trunk@180 + comment. git-svn-id: http://svn.osgeo.org/geos/trunk@180 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli * source/geom/PrecisionModel.cpp: Throw an exception if scale is 0. - Added Log entry. git-svn-id: http://svn.osgeo.org/geos/trunk@179 + Added Log entry. git-svn-id: http://svn.osgeo.org/geos/trunk@179 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli * source/geom/GeometryFactory.cpp: Tried to "formalize" constant nature of the first argument given to constructor by PrecisionModel - and SRID specification. Added CVS Log on top. git-svn-id: - http://svn.osgeo.org/geos/trunk@178 + and SRID specification. Added CVS Log on top. git-svn-id: http://svn.osgeo.org/geos/trunk@178 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli * doc/example.cpp, source/algorithm/ConvexHull.cpp: Added - convexHull() call to example, fixed leaks in ConvexHull - git-svn-id: http://svn.osgeo.org/geos/trunk@177 + convexHull() call to example, fixed leaks in ConvexHull git-svn-id: http://svn.osgeo.org/geos/trunk@177 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-09 Sandro Santilli - * doc/example.cpp: First reference-by-example file. git-svn-id: - http://svn.osgeo.org/geos/trunk@176 + * doc/example.cpp: First reference-by-example file. git-svn-id: http://svn.osgeo.org/geos/trunk@176 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-08 Sandro Santilli @@ -37205,23 +39427,20 @@ source/headers/indexQuadtree.h, source/headers/opRelate.h, source/headers/opValid.h, source/headers/operation.h, source/headers/unload.h, source/io/Unload.cpp: Added xie's Unload - class with some fixes. git-svn-id: - http://svn.osgeo.org/geos/trunk@175 + class with some fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@175 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-08 Sandro Santilli * source/headers/io.h, source/io/WKTWriter.cpp: added missing - LinearRing writing capabilities. git-svn-id: - http://svn.osgeo.org/geos/trunk@174 + LinearRing writing capabilities. git-svn-id: http://svn.osgeo.org/geos/trunk@174 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-08 Sandro Santilli * source/geom/GeometryCollection.cpp: Constructor by vector * now makes a copy of the vector so that call ers - can safely delete it when done. git-svn-id: - http://svn.osgeo.org/geos/trunk@173 + can safely delete it when done. git-svn-id: http://svn.osgeo.org/geos/trunk@173 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-07 Sandro Santilli @@ -37230,8 +39449,7 @@ source/geom/Polygon.cpp, source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, source/operation/overlay/PolygonBuilder.cpp: had all - getCoordinates() callers free returned value. git-svn-id: - http://svn.osgeo.org/geos/trunk@172 + getCoordinates() callers free returned value. git-svn-id: http://svn.osgeo.org/geos/trunk@172 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-07 Sandro Santilli @@ -37241,15 +39459,13 @@ source/geom/LineString.cpp, source/graph/GeometryGraph.cpp, source/headers/config.h.in: LineString constructor now creates its own copy of given CoordinateList object, and returns a new copy with - getCoordinates(). will be easier to remove by anyone else. - git-svn-id: http://svn.osgeo.org/geos/trunk@171 + getCoordinates(). will be easier to remove by anyone else. git-svn-id: http://svn.osgeo.org/geos/trunk@171 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-10-03 Yury Bychkov * source/geom/MultiPolygon.cpp, source/test/XMLTester.cpp: Memory - leak in Overlay fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@170 + leak in Overlay fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@170 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-29 Sandro Santilli @@ -37257,26 +39473,25 @@ * macros/.cvsignore, source/bigtest/.cvsignore, source/examples/.cvsignore, source/headers/.cvsignore: Some more cvsignore files. Some entries should probably not be in the local - copy git-svn-id: http://svn.osgeo.org/geos/trunk@169 + copy git-svn-id: http://svn.osgeo.org/geos/trunk@169 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-29 Sandro Santilli - * .cvsignore: Added config.sub, config.guess and autom4te.cache - git-svn-id: http://svn.osgeo.org/geos/trunk@168 + * .cvsignore: Added config.sub, config.guess and autom4te.cache git-svn-id: http://svn.osgeo.org/geos/trunk@168 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-29 Sandro Santilli * tools/.cvsignore: Don't wonder about Makefile.in, Makefile, - gdal-config git-svn-id: http://svn.osgeo.org/geos/trunk@167 + gdal-config git-svn-id: http://svn.osgeo.org/geos/trunk@167 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-26 Sandro Santilli * source/algorithm/ConvexHull.cpp: getConvexHull() made check value returned by reduce() before deleting it (might be the untouched - input). git-svn-id: http://svn.osgeo.org/geos/trunk@166 + input). git-svn-id: http://svn.osgeo.org/geos/trunk@166 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-26 Yury Bychkov @@ -37284,8 +39499,7 @@ * source/index/bintree/NodeBase.cpp, source/index/quadtree/QuadTreeNodeBase.cpp, source/index/quadtree/QuadTreeRoot.cpp, source/test/XMLTester.cpp: - isValid segfault fixed. Overlay still leaks a bit. git-svn-id: - http://svn.osgeo.org/geos/trunk@165 + isValid segfault fixed. Overlay still leaks a bit. git-svn-id: http://svn.osgeo.org/geos/trunk@165 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-24 Yury Bychkov @@ -37297,7 +39511,7 @@ source/operation/buffer/BufferOp.cpp, source/operation/overlay/PolygonBuilder.cpp, source/test/XMLTester.cpp: All reported bugs fiexd. Small leak in - Overlay remains. git-svn-id: http://svn.osgeo.org/geos/trunk@164 + Overlay remains. git-svn-id: http://svn.osgeo.org/geos/trunk@164 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-06 Yury Bychkov @@ -37308,8 +39522,7 @@ source/operation/distance/LineExtracterFilter.cpp, source/operation/distance/PointExtracterFilter.cpp, source/operation/distance/PolygonExtracterFilter.cpp, - source/test/XMLTester.cpp: isWithinDistance fixed and tested. - git-svn-id: http://svn.osgeo.org/geos/trunk@163 + source/test/XMLTester.cpp: isWithinDistance fixed and tested. git-svn-id: http://svn.osgeo.org/geos/trunk@163 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-06 Yury Bychkov @@ -37321,15 +39534,14 @@ source/graph/GeometryGraph.cpp, source/graph/index/SimpleMCSweepLineIntersector.cpp, source/operation/overlay/OverlayOp.cpp, source/test/XMLTester.cpp: - getInteriorPoint bugs fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@162 + getInteriorPoint bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@162 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-09-01 Yury Bychkov * source/algorithm/ConvexHull.cpp, source/geom/Geometry.cpp, source/geom/Polygon.cpp, source/test/XMLTester.cpp: Some ConvexHull - bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@161 + bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@161 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-30 Yury Bychkov @@ -37338,57 +39550,49 @@ source/geom/GeometryCollection.cpp, source/geom/Polygon.cpp, source/graph/GeometryGraph.cpp, source/operation/IsSimpleOp.cpp, source/test/XMLTester.cpp: Some bugfixes. XMLTester expanded to - accomodate getBoundary, getCentroid, isSimple. git-svn-id: - http://svn.osgeo.org/geos/trunk@160 + accomodate getBoundary, getCentroid, isSimple. git-svn-id: http://svn.osgeo.org/geos/trunk@160 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey * source/algorithm/ConvexHull.java: Removed java source file from - archive. git-svn-id: http://svn.osgeo.org/geos/trunk@159 + archive. git-svn-id: http://svn.osgeo.org/geos/trunk@159 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * configure.in: Change it back :/ git-svn-id: - http://svn.osgeo.org/geos/trunk@158 + * configure.in: Change it back :/ git-svn-id: http://svn.osgeo.org/geos/trunk@158 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * configure.in: Change version number. git-svn-id: - http://svn.osgeo.org/geos/trunk@157 + * configure.in: Change version number. git-svn-id: http://svn.osgeo.org/geos/trunk@157 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * ltmain.sh: Return ltmain to distro (oops) git-svn-id: - http://svn.osgeo.org/geos/trunk@156 + * ltmain.sh: Return ltmain to distro (oops) git-svn-id: http://svn.osgeo.org/geos/trunk@156 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * mkinstalldirs: Remove more autoconf files git-svn-id: - http://svn.osgeo.org/geos/trunk@155 + * mkinstalldirs: Remove more autoconf files git-svn-id: http://svn.osgeo.org/geos/trunk@155 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey * acinclude.m4, config.guess, config.sub, install-sh, ltmain.sh: - Removed more autoconf files... git-svn-id: - http://svn.osgeo.org/geos/trunk@154 + Removed more autoconf files... git-svn-id: http://svn.osgeo.org/geos/trunk@154 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * missing: Removed 'missing' script. git-svn-id: - http://svn.osgeo.org/geos/trunk@153 + * missing: Removed 'missing' script. git-svn-id: http://svn.osgeo.org/geos/trunk@153 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-18 Paul Ramsey - * source/headers/Makefile.am: Fixed up to treat headers as headers. - git-svn-id: http://svn.osgeo.org/geos/trunk@152 + * source/headers/Makefile.am: Fixed up to treat headers as headers. git-svn-id: http://svn.osgeo.org/geos/trunk@152 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-17 Paul Ramsey @@ -37522,20 +39726,18 @@ source/util/UniqueCoordinateArrayFilter.cpp, source/util/UnsupportedOperationException.cpp: Norman's patch + global removal of "no newline" + small changes to make Norman's - patch work in the linux build environment. git-svn-id: - http://svn.osgeo.org/geos/trunk@151 + patch work in the linux build environment. git-svn-id: http://svn.osgeo.org/geos/trunk@151 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-17 Paul Ramsey - * libtool: Removed more configuration files per Norman's request. - git-svn-id: http://svn.osgeo.org/geos/trunk@150 + * libtool: Removed more configuration files per Norman's request. git-svn-id: http://svn.osgeo.org/geos/trunk@150 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-17 Paul Ramsey * aclocal.m4, configure: Removed more configure files per Norman's - request. git-svn-id: http://svn.osgeo.org/geos/trunk@149 + request. git-svn-id: http://svn.osgeo.org/geos/trunk@149 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-17 Paul Ramsey @@ -37544,8 +39746,7 @@ source/bigtest/Makefile.in, source/geom/Coordinate.cpp, source/geom/Makefile.in, source/headers/Makefile.in, source/test/Makefile.in, tools/Makefile.in: Removed Makefile.in - files, per Norman's request. git-svn-id: - http://svn.osgeo.org/geos/trunk@148 + files, per Norman's request. git-svn-id: http://svn.osgeo.org/geos/trunk@148 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-08-16 Yury Bychkov @@ -37624,14 +39825,12 @@ source/operation/valid/QuadtreeNestedRingTester.cpp, source/test/Stackwalker.cpp, source/test/Stackwalker.h, source/test/XMLTester.cpp, source/util/CoordinateArrayFiter.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: Memory leak fixes. - git-svn-id: http://svn.osgeo.org/geos/trunk@147 + source/util/UniqueCoordinateArrayFilter.cpp: Memory leak fixes. git-svn-id: http://svn.osgeo.org/geos/trunk@147 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-06-21 Paul Ramsey - * source/geom/Makefile.am: GNU compile fixes from nvine. - git-svn-id: http://svn.osgeo.org/geos/trunk@146 + * source/geom/Makefile.am: GNU compile fixes from nvine. git-svn-id: http://svn.osgeo.org/geos/trunk@146 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-06-19 Yury Bychkov @@ -37774,7 +39973,7 @@ source/util/GEOSException.cpp, source/util/IllegalArgumentException.cpp, source/util/UnsupportedOperationException.cpp: 'geos' namespace - added. git-svn-id: http://svn.osgeo.org/geos/trunk@145 + added. git-svn-id: http://svn.osgeo.org/geos/trunk@145 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-06-18 Yury Bychkov @@ -37786,108 +39985,97 @@ source/operation/buffer/BufferSubgraph.cpp, source/operation/buffer/LoopFilter.cpp, source/operation/buffer/RightmostEdgeFinder.cpp: Buffer is almost - fully debugged. git-svn-id: http://svn.osgeo.org/geos/trunk@144 + fully debugged. git-svn-id: http://svn.osgeo.org/geos/trunk@144 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-29 Paul Ramsey * source/bigtest/Makefile.am, source/geom/Makefile.am: Final GNU - build adjustments. git-svn-id: http://svn.osgeo.org/geos/trunk@143 + build adjustments. git-svn-id: http://svn.osgeo.org/geos/trunk@143 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Paul Ramsey - * source/examples/Makefile.am: Added new exception class. - git-svn-id: http://svn.osgeo.org/geos/trunk@142 + * source/examples/Makefile.am: Added new exception class. git-svn-id: http://svn.osgeo.org/geos/trunk@142 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Paul Ramsey - * source/headers/Makefile.am: Change reference to spatialIndex.h - git-svn-id: http://svn.osgeo.org/geos/trunk@141 + * source/headers/Makefile.am: Change reference to spatialIndex.h git-svn-id: http://svn.osgeo.org/geos/trunk@141 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Paul Ramsey * source/geom/Makefile.am: Removed obsolete build entries for - removed classes. git-svn-id: http://svn.osgeo.org/geos/trunk@140 + removed classes. git-svn-id: http://svn.osgeo.org/geos/trunk@140 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Yury Bychkov * source/headers/indexStrtree.h, source/index/strtree/Interval.cpp: - Some bugfixes. git-svn-id: http://svn.osgeo.org/geos/trunk@139 + Some bugfixes. git-svn-id: http://svn.osgeo.org/geos/trunk@139 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Yury Bychkov * source/index/bintree/Interval.cpp, source/index/bintree/Node.cpp, - source/test/XMLTester.cpp: no message git-svn-id: - http://svn.osgeo.org/geos/trunk@138 + source/test/XMLTester.cpp: no message git-svn-id: http://svn.osgeo.org/geos/trunk@138 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Paul Ramsey * source/index/strtree/Interval.cpp, - source/index/strtree/SIRtree.cpp: Changed __max/__min to max/min - git-svn-id: http://svn.osgeo.org/geos/trunk@137 + source/index/strtree/SIRtree.cpp: Changed __max/__min to max/min git-svn-id: http://svn.osgeo.org/geos/trunk@137 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-28 Paul Ramsey - * source/index/quadtree/IntervalSize.cpp: Change __max to max - git-svn-id: http://svn.osgeo.org/geos/trunk@136 + * source/index/quadtree/IntervalSize.cpp: Change __max to max git-svn-id: http://svn.osgeo.org/geos/trunk@136 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey - * source/geom/Makefile.am: Changed from mistaken cpp file names. - git-svn-id: http://svn.osgeo.org/geos/trunk@135 + * source/geom/Makefile.am: Changed from mistaken cpp file names. git-svn-id: http://svn.osgeo.org/geos/trunk@135 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey - * source/algorithm/CentroidArea.cpp: Added include for - git-svn-id: http://svn.osgeo.org/geos/trunk@134 + * source/algorithm/CentroidArea.cpp: Added include for git-svn-id: http://svn.osgeo.org/geos/trunk@134 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey - * source/headers/indexStrtree.h: GNU build support git-svn-id: - http://svn.osgeo.org/geos/trunk@133 + * source/headers/indexStrtree.h: GNU build support git-svn-id: http://svn.osgeo.org/geos/trunk@133 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey * source/headers/indexQuadtree.h: Fix reference to spatialIndex - header git-svn-id: http://svn.osgeo.org/geos/trunk@132 + header git-svn-id: http://svn.osgeo.org/geos/trunk@132 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey - * source/headers/Makefile.in, source/headers/geom.h, - source/headers/indexStrtree.h, source/headers/{SpatialIndex.h => - spatialIndex.h}: Build updates. git-svn-id: - http://svn.osgeo.org/geos/trunk@131 + * source/headers/Makefile.in, source/headers/SpatialIndex.h, + source/headers/geom.h, source/headers/indexStrtree.h, + source/headers/spatialIndex.h: Build updates. git-svn-id: http://svn.osgeo.org/geos/trunk@131 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey - * source/geom/Makefile.am: Add new files into build support - git-svn-id: http://svn.osgeo.org/geos/trunk@130 + * source/geom/Makefile.am: Add new files into build support git-svn-id: http://svn.osgeo.org/geos/trunk@130 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey * source/headers/Makefile.am: Add all new headers into the build - process. git-svn-id: http://svn.osgeo.org/geos/trunk@129 + process. git-svn-id: http://svn.osgeo.org/geos/trunk@129 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-27 Paul Ramsey * source/geom/Makefile.am, source/headers/Makefile.am: Some updates - to synch build with devel. git-svn-id: - http://svn.osgeo.org/geos/trunk@128 + to synch build with devel. git-svn-id: http://svn.osgeo.org/geos/trunk@128 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-21 Yury Bychkov @@ -37895,8 +40083,7 @@ * source/algorithm/MCPointInRing.cpp, source/geom/PrecisionModel.cpp, source/graph/GeometryGraph.cpp, source/index/bintree/Key.cpp, source/operation/relate/RelateOp.cpp: - Several bugs fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@127 + Several bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@127 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-19 Yury Bychkov @@ -37929,7 +40116,7 @@ source/util/GEOSException.cpp, source/util/IllegalArgumentException.cpp, source/util/UnsupportedOperationException.cpp: All exceptions are - now classes. git-svn-id: http://svn.osgeo.org/geos/trunk@126 + now classes. git-svn-id: http://svn.osgeo.org/geos/trunk@126 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-17 Yury Bychkov @@ -37941,8 +40128,7 @@ source/algorithm/InteriorPointLine.cpp, source/algorithm/InteriorPointPoint.cpp, source/algorithm/SIRtreePointInRing.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp: Last fix for CVS. - git-svn-id: http://svn.osgeo.org/geos/trunk@125 + source/index/quadtree/QuadTreeNodeBase.cpp: Last fix for CVS. git-svn-id: http://svn.osgeo.org/geos/trunk@125 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-17 Yury Bychkov @@ -37955,15 +40141,13 @@ source/headers/indexQuadtree.h, source/headers/indexStrtree.h, source/index/quadtree/Quadtree.cpp, source/index/strtree/AbstractSTRtree.cpp, - source/operation/valid/IsValidOp.cpp: Fixing CVS error. - git-svn-id: http://svn.osgeo.org/geos/trunk@124 + source/operation/valid/IsValidOp.cpp: Fixing CVS error. git-svn-id: http://svn.osgeo.org/geos/trunk@124 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-17 Yury Bychkov * source/geom/GeometryCollection.cpp, - source/headers/geosAlgorithm.h: Fixing a commit problem. - git-svn-id: http://svn.osgeo.org/geos/trunk@123 + source/headers/geosAlgorithm.h: Fixing a commit problem. git-svn-id: http://svn.osgeo.org/geos/trunk@123 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-17 Yury Bychkov @@ -37981,8 +40165,7 @@ source/operation/distance/LineExtracterFilter.cpp, source/operation/distance/PointExtracterFilter.cpp, source/operation/distance/PolygonExtracterFilter.cpp: SIRtree is - done. Distance is done. git-svn-id: - http://svn.osgeo.org/geos/trunk@122 + done. Distance is done. git-svn-id: http://svn.osgeo.org/geos/trunk@122 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-07 Yury Bychkov @@ -37991,12 +40174,13 @@ source/algorithm/CentroidLine.cpp, source/algorithm/CentroidPoint.cpp, source/algorithm/ConvexHull.java, + source/algorithm/IntTreePointInRing.cpp, source/algorithm/InteriorPointArea.cpp, source/algorithm/InteriorPointLine.cpp, source/algorithm/InteriorPointPoint.cpp, source/algorithm/MCPointInRing.cpp, - source/algorithm/{IntTreePointInRing.cpp => - SIRtreePointInRing.cpp}, source/geom/GeometryComponentFilter.cpp, + source/algorithm/SIRtreePointInRing.cpp, + source/geom/GeometryComponentFilter.cpp, source/geom/TopologyException.cpp, source/graph/index/SimpleEdgeSetIntersector.cpp, source/graph/index/SimpleSweepLineIntersector.cpp, @@ -38022,8 +40206,7 @@ source/index/strtree/AbstractSTRtree.cpp, source/index/strtree/Interval.cpp, source/index/strtree/ItemBoundable.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp: Closer to 1.3 - git-svn-id: http://svn.osgeo.org/geos/trunk@121 + source/operation/valid/QuadtreeNestedRingTester.cpp: Closer to 1.3 git-svn-id: http://svn.osgeo.org/geos/trunk@121 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-05-04 Yury Bychkov @@ -38045,8 +40228,7 @@ source/operation/GeometryGraphOperation.cpp, source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateOp.cpp, - source/operation/valid/IsValidOp.cpp: Closer to JTS 1.3 - git-svn-id: http://svn.osgeo.org/geos/trunk@120 + source/operation/valid/IsValidOp.cpp: Closer to JTS 1.3 git-svn-id: http://svn.osgeo.org/geos/trunk@120 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-28 Yury Bychkov @@ -38140,14 +40322,13 @@ source/operation/valid/SweeplineNestedRingTester.cpp, source/operation/valid/TopologyValidationError.cpp, source/util/Assert.cpp, source/util/AssertionFailedException.cpp: - Partially upgraded to JTS 1.3 git-svn-id: - http://svn.osgeo.org/geos/trunk@119 + Partially upgraded to JTS 1.3 git-svn-id: http://svn.osgeo.org/geos/trunk@119 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-21 Yury Bychkov * VisualStudio/GEOS.sln, VisualStudio/GEOS.vcproj: VisualStudio - project added. git-svn-id: http://svn.osgeo.org/geos/trunk@118 + project added. git-svn-id: http://svn.osgeo.org/geos/trunk@118 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-17 Yury Bychkov @@ -38157,15 +40338,13 @@ source/geom/PointCoordinateList.cpp, source/graph/GeometryGraph.cpp, source/io/WKTReader.cpp: Changed PrecisionModel to Value type. Removed bounds checking from *At - methods in CoordinateLists. git-svn-id: - http://svn.osgeo.org/geos/trunk@117 + methods in CoordinateLists. git-svn-id: http://svn.osgeo.org/geos/trunk@117 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-12 Yury Bychkov * source/graph/EdgeRing.cpp, source/operation/overlay/OverlayOp.cpp: - Overlay passes all tests (both precise and normal) git-svn-id: - http://svn.osgeo.org/geos/trunk@116 + Overlay passes all tests (both precise and normal) git-svn-id: http://svn.osgeo.org/geos/trunk@116 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-11 Yury Bychkov @@ -38175,8 +40354,7 @@ source/geom/Point.cpp, source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, source/graph/GeometryGraph.cpp, source/headers/geom.h, source/io/WKTReader.cpp, - source/test/XMLTester.cpp: Overlay almost works. Fails 2 tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@115 + source/test/XMLTester.cpp: Overlay almost works. Fails 2 tests. git-svn-id: http://svn.osgeo.org/geos/trunk@115 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-10 Yury Bychkov @@ -38185,20 +40363,18 @@ source/graph/Depth.cpp, source/graph/DirectedEdgeStar.cpp, source/graph/EdgeIntersectionList.cpp, source/operation/overlay/OverlayOp.cpp, source/test/XMLTester.cpp: - Overlay passes all normal tests. Still fails on Precision tests. - git-svn-id: http://svn.osgeo.org/geos/trunk@114 + Overlay passes all normal tests. Still fails on Precision tests. git-svn-id: http://svn.osgeo.org/geos/trunk@114 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-09 Paul Ramsey * source/headers/geom.h: Changed destructors to virtual to quiet GNU - warnings git-svn-id: http://svn.osgeo.org/geos/trunk@113 + warnings git-svn-id: http://svn.osgeo.org/geos/trunk@113 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey - * source/headers/Makefile.am: Install all headers at install time. - git-svn-id: http://svn.osgeo.org/geos/trunk@112 + * source/headers/Makefile.am: Install all headers at install time. git-svn-id: http://svn.osgeo.org/geos/trunk@112 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey @@ -38206,37 +40382,33 @@ * source/examples/CustomCoordinateListExample.cpp, source/examples/CustomCoordinateListExample.h, source/examples/CustomPointCoordinateList.cpp: Newlines added to - quiet gcc. git-svn-id: http://svn.osgeo.org/geos/trunk@111 + quiet gcc. git-svn-id: http://svn.osgeo.org/geos/trunk@111 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey - * source/geom/Makefile.am: Build support git-svn-id: - http://svn.osgeo.org/geos/trunk@110 + * source/geom/Makefile.am: Build support git-svn-id: http://svn.osgeo.org/geos/trunk@110 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey - * source/examples/Makefile.am: Build support. git-svn-id: - http://svn.osgeo.org/geos/trunk@109 + * source/examples/Makefile.am: Build support. git-svn-id: http://svn.osgeo.org/geos/trunk@109 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey - * source/geom/Makefile.am: Build support updates. git-svn-id: - http://svn.osgeo.org/geos/trunk@108 + * source/geom/Makefile.am: Build support updates. git-svn-id: http://svn.osgeo.org/geos/trunk@108 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 Paul Ramsey * source/examples/Makefile.am: Build support for new example - programs. git-svn-id: http://svn.osgeo.org/geos/trunk@107 + programs. git-svn-id: http://svn.osgeo.org/geos/trunk@107 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-04 David Blasby - * INSTALL: added comment about running ./autogen.sh git-svn-id: - http://svn.osgeo.org/geos/trunk@106 + * INSTALL: added comment about running ./autogen.sh git-svn-id: http://svn.osgeo.org/geos/trunk@106 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-02 Yury Bychkov @@ -38244,8 +40416,7 @@ * source/examples/CustomCoordinateListExample.cpp, source/examples/CustomCoordinateListExample.h, source/examples/CustomPointCoordinateList.cpp: Added example on how - to wrap internal storage format with CoordinateLists. git-svn-id: - http://svn.osgeo.org/geos/trunk@105 + to wrap internal storage format with CoordinateLists. git-svn-id: http://svn.osgeo.org/geos/trunk@105 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-04-02 Yury Bychkov @@ -38262,14 +40433,13 @@ source/operation/overlay/OverlayNodeFactory.cpp, source/operation/valid/ConnectedInteriorTester.cpp, source/operation/valid/IsValidOp.cpp: isValid is debugged (passes - all 805 tests). git-svn-id: http://svn.osgeo.org/geos/trunk@104 + all 805 tests). git-svn-id: http://svn.osgeo.org/geos/trunk@104 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-24 Paul Ramsey * source/headers/indexQuadtree.h, source/headers/indexSweepline.h: - Added newlines to end to quiet gcc git-svn-id: - http://svn.osgeo.org/geos/trunk@103 + Added newlines to end to quiet gcc git-svn-id: http://svn.osgeo.org/geos/trunk@103 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-24 Paul Ramsey @@ -38290,14 +40460,12 @@ source/operation/valid/Makefile.am, source/test/Makefile.in, source/util/Makefile.am, source/util/Makefile.in, tools/Makefile.in: Yet more GNU build fiddling. Removed extraneous build support from - all non-geom library directories. git-svn-id: - http://svn.osgeo.org/geos/trunk@102 + all non-geom library directories. git-svn-id: http://svn.osgeo.org/geos/trunk@102 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-24 Paul Ramsey - * source/geom/Makefile.am: More GNU build support git-svn-id: - http://svn.osgeo.org/geos/trunk@101 + * source/geom/Makefile.am: More GNU build support git-svn-id: http://svn.osgeo.org/geos/trunk@101 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-24 Paul Ramsey @@ -38313,8 +40481,7 @@ source/operation/Makefile.am, source/operation/Makefile.in, source/operation/relate/Makefile.in, source/test/Makefile.in, source/test/XMLTester.cpp, source/util/Makefile.in, - tools/Makefile.in: GNU build support on latest changes. - git-svn-id: http://svn.osgeo.org/geos/trunk@100 + tools/Makefile.in: GNU build support on latest changes. git-svn-id: http://svn.osgeo.org/geos/trunk@100 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-19 Yury Bychkov @@ -38325,8 +40492,7 @@ source/operation/overlay/LineBuilder.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/overlay/OverlayOp.java: All Overlay classes are - ported. Overlay and isValid have not been tested yet. git-svn-id: - http://svn.osgeo.org/geos/trunk@99 + ported. Overlay and isValid have not been tested yet. git-svn-id: http://svn.osgeo.org/geos/trunk@99 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-18 Yury Bychkov @@ -38344,8 +40510,7 @@ source/operation/overlay/PolygonBuilder.cpp, source/operation/valid/IsValidOp.cpp, source/operation/valid/RepeatedPointTester.cpp, - source/test/XMLTester.cpp: 90% of Overlay classes ported. - git-svn-id: http://svn.osgeo.org/geos/trunk@98 + source/test/XMLTester.cpp: 90% of Overlay classes ported. git-svn-id: http://svn.osgeo.org/geos/trunk@98 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-17 Yury Bychkov @@ -38359,8 +40524,7 @@ source/index/chain/indexMonotoneChain.cpp, source/index/intervaltree/IntervalNode.cpp, source/index/intervaltree/IntervalTree.cpp: All 'index' packages and - part of 'overlay' are done. git-svn-id: - http://svn.osgeo.org/geos/trunk@97 + part of 'overlay' are done. git-svn-id: http://svn.osgeo.org/geos/trunk@97 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-17 Yury Bychkov @@ -38371,15 +40535,13 @@ source/operation/overlay/MaximalEdgeRing.cpp, source/operation/overlay/MinimalEdgeRing.cpp, source/operation/valid/IsValidOp.cpp: IsValid and supporting - packages are ported (but NOT tested). git-svn-id: - http://svn.osgeo.org/geos/trunk@96 + packages are ported (but NOT tested). git-svn-id: http://svn.osgeo.org/geos/trunk@96 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-12 Paul Ramsey * source/geom/Makefile.am, source/operation/Makefile.am, - source/operation/valid/Makefile.am: Build support for valid. - git-svn-id: http://svn.osgeo.org/geos/trunk@95 + source/operation/valid/Makefile.am: Build support for valid. git-svn-id: http://svn.osgeo.org/geos/trunk@95 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-10 Yury Bychkov @@ -38389,7 +40551,7 @@ source/operation/valid/ConnectedInteriorTester.cpp, source/operation/valid/QuadtreeNestedRingTester.cpp: IsValid() and supporting index classes are ported, but don't work yet (external - dependencies) git-svn-id: http://svn.osgeo.org/geos/trunk@94 + dependencies) git-svn-id: http://svn.osgeo.org/geos/trunk@94 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-10 Yury Bychkov @@ -38407,34 +40569,30 @@ source/operation/valid/SweeplineNestedRingTester.cpp, source/operation/valid/TopologyValidationError.cpp, source/test/XMLTester.cpp: IsValid and supporting index classes are - almost done. git-svn-id: http://svn.osgeo.org/geos/trunk@93 + almost done. git-svn-id: http://svn.osgeo.org/geos/trunk@93 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-05 Paul Ramsey * configure.in, source/Makefile.am, source/examples/Makefile.am: - Build support for new coordinateline examples. git-svn-id: - http://svn.osgeo.org/geos/trunk@92 + Build support for new coordinateline examples. git-svn-id: http://svn.osgeo.org/geos/trunk@92 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-05 Yury Bychkov * source/examples/CoordinateListsExample.cpp, source/geom/PointCoordinateList.cpp, source/headers/geom.h: - CoordinateList interface example. git-svn-id: - http://svn.osgeo.org/geos/trunk@91 + CoordinateList interface example. git-svn-id: http://svn.osgeo.org/geos/trunk@91 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-03 Paul Ramsey - * source/geom/Makefile.am: Remove PointInRing git-svn-id: - http://svn.osgeo.org/geos/trunk@90 + * source/geom/Makefile.am: Remove PointInRing git-svn-id: http://svn.osgeo.org/geos/trunk@90 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-03 Paul Ramsey - * source/algorithm/PointInRing.cpp: Removed unused file. - git-svn-id: http://svn.osgeo.org/geos/trunk@89 + * source/algorithm/PointInRing.cpp: Removed unused file. git-svn-id: http://svn.osgeo.org/geos/trunk@89 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-03 Yury Bychkov @@ -38444,14 +40602,12 @@ source/geom/GeometryFactory.cpp, source/geom/PointCoordinateList.cpp, source/graph/EdgeIntersectionList.cpp, source/io/WKTReader.cpp: Some - Coordinate& related bugs fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@88 + Coordinate& related bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@88 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-03 Yury Bychkov - * source/geom/GeometryFactory.cpp: GeometryFactory bug fix. - git-svn-id: http://svn.osgeo.org/geos/trunk@87 + * source/geom/GeometryFactory.cpp: GeometryFactory bug fix. git-svn-id: http://svn.osgeo.org/geos/trunk@87 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-03 Yury Bychkov @@ -38484,8 +40640,7 @@ source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateNode.cpp, source/test/CTS.cpp, source/util/Assert.cpp: Second pass of code cleanup. Coordinate - references and inlining. git-svn-id: - http://svn.osgeo.org/geos/trunk@86 + references and inlining. git-svn-id: http://svn.osgeo.org/geos/trunk@86 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-02 Yury Bychkov @@ -38506,20 +40661,18 @@ source/operation/relate/EdgeEndBuilder.cpp, source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateNodeGraph.cpp: First pass of code - cleanup completed over all packages. git-svn-id: - http://svn.osgeo.org/geos/trunk@85 + cleanup completed over all packages. git-svn-id: http://svn.osgeo.org/geos/trunk@85 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-01 Paul Ramsey * source/headers/geosAlgorithm.h: Uncommented default constructor - for PointInRing git-svn-id: http://svn.osgeo.org/geos/trunk@84 + for PointInRing git-svn-id: http://svn.osgeo.org/geos/trunk@84 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-03-01 Paul Ramsey - * source/test/SimpleWKTTester.cpp: Fixed call to geometry factory. - git-svn-id: http://svn.osgeo.org/geos/trunk@83 + * source/test/SimpleWKTTester.cpp: Fixed call to geometry factory. git-svn-id: http://svn.osgeo.org/geos/trunk@83 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-26 Yury Bychkov @@ -38535,15 +40688,13 @@ source/headers/util.h, source/io/StringTokenizer.cpp, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/io/Writer.cpp, source/test/XMLTester.cpp: All packages except - 'graph' has been refactored. git-svn-id: - http://svn.osgeo.org/geos/trunk@82 + 'graph' has been refactored. git-svn-id: http://svn.osgeo.org/geos/trunk@82 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-20 Paul Ramsey * source/test/SimpleWKTTester.cpp: Fixed small bug in call to - GeometryFactory (instantiate PrecisionModel with new) git-svn-id: - http://svn.osgeo.org/geos/trunk@81 + GeometryFactory (instantiate PrecisionModel with new) git-svn-id: http://svn.osgeo.org/geos/trunk@81 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-20 Paul Ramsey @@ -38551,7 +40702,7 @@ * source/geom/CoordinateListFactory.cpp, source/geom/GeometryFactory.cpp: GFactory: Move i outside of for loop. Needed to compile GNU CListFactory: Add newline to end of - file. git-svn-id: http://svn.osgeo.org/geos/trunk@80 + file. git-svn-id: http://svn.osgeo.org/geos/trunk@80 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-20 Yury Bychkov @@ -38562,8 +40713,7 @@ source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateNodeGraph.cpp, source/operation/relate/RelateOp.cpp: Geom and Operation (including - Relate) packages are updated. git-svn-id: - http://svn.osgeo.org/geos/trunk@79 + Relate) packages are updated. git-svn-id: http://svn.osgeo.org/geos/trunk@79 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-17 Yury Bychkov @@ -38578,8 +40728,7 @@ source/operation/GeometryGraphOperation.cpp, source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateOp.cpp, source/test/XMLTester.cpp: - GEOM package fully updated & bugs fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@78 + GEOM package fully updated & bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@78 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-17 Yury Bychkov @@ -38589,8 +40738,7 @@ source/geom/Point.cpp, source/geom/Polygon.cpp, source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, source/headers/geom.h, source/headers/io.h, source/io/WKTReader.cpp: - GEOM package fully updated. git-svn-id: - http://svn.osgeo.org/geos/trunk@77 + GEOM package fully updated. git-svn-id: http://svn.osgeo.org/geos/trunk@77 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-16 Yury Bychkov @@ -38604,28 +40752,26 @@ source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, source/geom/Point.cpp, source/geom/Polygon.cpp, source/graph/EdgeRing.cpp, source/headers/geom.h, - source/io/WKTReader.cpp: GEOM package partially updated. - git-svn-id: http://svn.osgeo.org/geos/trunk@76 + source/io/WKTReader.cpp: GEOM package partially updated. git-svn-id: http://svn.osgeo.org/geos/trunk@76 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * INSTALL, missing: Added two files required by autoconf build - process. git-svn-id: http://svn.osgeo.org/geos/trunk@75 + process. git-svn-id: http://svn.osgeo.org/geos/trunk@75 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * configure, libtool, source/geom/Makefile.in, source/headers/Makefile.in, source/test/Makefile.in: Commit build - support files. git-svn-id: http://svn.osgeo.org/geos/trunk@74 + support files. git-svn-id: http://svn.osgeo.org/geos/trunk@74 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * source/headers/Makefile.am: Change header installation path to - $(prefix)/include/geos. git-svn-id: - http://svn.osgeo.org/geos/trunk@73 + $(prefix)/include/geos. git-svn-id: http://svn.osgeo.org/geos/trunk@73 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey @@ -38634,7 +40780,7 @@ source/algorithm/SimplePointInRing.cpp, source/operation/GeometryGraphOperation.cpp, source/operation/relate/EdgeEndBundle.cpp: Added newlines to quiet - g++ warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@72 + g++ warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@72 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey @@ -38646,109 +40792,94 @@ source/graph/index/MonotoneChain.cpp, source/graph/index/SimpleMCSweepLineIntersector.cpp, source/graph/index/SweepLineEvent.cpp: Added newlines to ends of - files to quiet g++ warnings. git-svn-id: - http://svn.osgeo.org/geos/trunk@71 + files to quiet g++ warnings. git-svn-id: http://svn.osgeo.org/geos/trunk@71 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/test/XMLTester.cpp: Fix headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@70 + * source/test/XMLTester.cpp: Fix headers. git-svn-id: http://svn.osgeo.org/geos/trunk@70 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/test/SimpleWKTTester.cpp: Changed headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@69 + * source/test/SimpleWKTTester.cpp: Changed headers. git-svn-id: http://svn.osgeo.org/geos/trunk@69 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp: Added return value. - git-svn-id: http://svn.osgeo.org/geos/trunk@68 + * source/bigtest/TestSweepLineSpeed.cpp: Added return value. git-svn-id: http://svn.osgeo.org/geos/trunk@68 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * source/bigtest/TestSweepLineSpeed.cpp, source/test/CTS.cpp, - source/test/XMLTester.cpp: Changed headers. git-svn-id: - http://svn.osgeo.org/geos/trunk@67 + source/test/XMLTester.cpp: Changed headers. git-svn-id: http://svn.osgeo.org/geos/trunk@67 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/test/XMLTester.cpp: Make path to test file relative. - git-svn-id: http://svn.osgeo.org/geos/trunk@66 + * source/test/XMLTester.cpp: Make path to test file relative. git-svn-id: http://svn.osgeo.org/geos/trunk@66 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * source/bigtest/GeometryTestFactory.cpp: Change include reference - syntax. git-svn-id: http://svn.osgeo.org/geos/trunk@65 + syntax. git-svn-id: http://svn.osgeo.org/geos/trunk@65 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/graph/EdgeEndStar.cpp: Remove NULL test. git-svn-id: - http://svn.osgeo.org/geos/trunk@64 + * source/graph/EdgeEndStar.cpp: Remove NULL test. git-svn-id: http://svn.osgeo.org/geos/trunk@64 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/io/WKTWriter.cpp: Pass double to log(). git-svn-id: - http://svn.osgeo.org/geos/trunk@63 + * source/io/WKTWriter.cpp: Pass double to log(). git-svn-id: http://svn.osgeo.org/geos/trunk@63 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp: Fixed main() return type. - git-svn-id: http://svn.osgeo.org/geos/trunk@62 + * source/bigtest/TestSweepLineSpeed.cpp: Fixed main() return type. git-svn-id: http://svn.osgeo.org/geos/trunk@62 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/test/Makefile.am: Remove old library references. - git-svn-id: http://svn.osgeo.org/geos/trunk@61 + * source/test/Makefile.am: Remove old library references. git-svn-id: http://svn.osgeo.org/geos/trunk@61 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey * source/bigtest/TestSweepLineSpeed.cpp: Added stdio reference and - newline at end. git-svn-id: http://svn.osgeo.org/geos/trunk@60 + newline at end. git-svn-id: http://svn.osgeo.org/geos/trunk@60 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-12 Paul Ramsey - * source/test/test.xml: Added all JTS test cases to the file. - git-svn-id: http://svn.osgeo.org/geos/trunk@59 + * source/test/test.xml: Added all JTS test cases to the file. git-svn-id: http://svn.osgeo.org/geos/trunk@59 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-11 Paul Ramsey - * source/geom/Makefile.am: Added support for new cpp files. - git-svn-id: http://svn.osgeo.org/geos/trunk@58 + * source/geom/Makefile.am: Added support for new cpp files. git-svn-id: http://svn.osgeo.org/geos/trunk@58 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-11 Yury Bychkov * source/geom/CoordinateList.cpp, source/geom/Geometry.cpp, source/geom/PointCoordinateList.cpp, source/geom/Polygon.cpp, - source/headers/geom.h: Some bugs fixed. git-svn-id: - http://svn.osgeo.org/geos/trunk@57 + source/headers/geom.h: Some bugs fixed. git-svn-id: http://svn.osgeo.org/geos/trunk@57 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-11 Yury Bychkov * source/geom/PointCoordinateList.cpp, source/graph/EdgeEndStar.cpp, source/headers/graph.h: Small changes - in PointCoordinateList and EdgeEndStar. git-svn-id: - http://svn.osgeo.org/geos/trunk@56 + in PointCoordinateList and EdgeEndStar. git-svn-id: http://svn.osgeo.org/geos/trunk@56 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-11 Martin Davis - * source/geom/Geometry.cpp: fixed duplicate for loop index - git-svn-id: http://svn.osgeo.org/geos/trunk@55 + * source/geom/Geometry.cpp: fixed duplicate for loop index git-svn-id: http://svn.osgeo.org/geos/trunk@55 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-02-05 Yury Bychkov @@ -38767,8 +40898,7 @@ source/graph/index/MonotoneChainEdge.cpp, source/headers/geom.h, source/io/WKTReader.cpp, source/io/WKTWriter.cpp, source/operation/IsSimpleOp.cpp, source/test/XMLTester.cpp: Second - pass of CoordinateList interface migration. git-svn-id: - http://svn.osgeo.org/geos/trunk@54 + pass of CoordinateList interface migration. git-svn-id: http://svn.osgeo.org/geos/trunk@54 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-01-27 Yury Bychkov @@ -38793,21 +40923,19 @@ source/headers/geosAlgorithm.h, source/headers/graph.h, source/headers/graphindex.h, source/headers/io.h, source/io/WKTReader.cpp: First pass of CoordinateList interface - replacement. git-svn-id: http://svn.osgeo.org/geos/trunk@53 + replacement. git-svn-id: http://svn.osgeo.org/geos/trunk@53 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-01-27 Yury Bychkov * source/algorithm/CGAlgorithms.cpp: First pass of CoordinateList - interface replacement. git-svn-id: - http://svn.osgeo.org/geos/trunk@52 + interface replacement. git-svn-id: http://svn.osgeo.org/geos/trunk@52 5242fede-7e19-0410-aef8-94bd7d2200fb 2003-01-27 Yury Bychkov * source/algorithm/CGAlgorithms.cpp: First pass of CoordinateList - interface replacement. git-svn-id: - http://svn.osgeo.org/geos/trunk@51 + interface replacement. git-svn-id: http://svn.osgeo.org/geos/trunk@51 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-12-02 Yury Bychkov @@ -38828,8 +40956,7 @@ source/graph/index/SegmentIntersector.cpp, source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, source/headers/geosAlgorithm.h, source/headers/graph.h: More - performance updates. git-svn-id: - http://svn.osgeo.org/geos/trunk@50 + performance updates. git-svn-id: http://svn.osgeo.org/geos/trunk@50 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-11-24 Yury Bychkov @@ -38838,8 +40965,7 @@ source/bigtest/TestSweepLineSpeed.cpp, source/geom/CoordinateList.cpp, source/graph/index/MonotoneChainIndexer.cpp, source/headers/geom.h, - source/headers/graphindex.h: Some performance improvements. - git-svn-id: http://svn.osgeo.org/geos/trunk@49 + source/headers/graphindex.h: Some performance improvements. git-svn-id: http://svn.osgeo.org/geos/trunk@49 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-11-14 Paul Ramsey @@ -38847,8 +40973,7 @@ * configure.in, source/Makefile.am, source/Makefile.in, source/bigtest/Makefile.am, source/bigtest/Makefile.in, source/geom/Makefile.am, source/geom/Makefile.in: Build support for - the bigtest programs. git-svn-id: - http://svn.osgeo.org/geos/trunk@48 + the bigtest programs. git-svn-id: http://svn.osgeo.org/geos/trunk@48 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-11-08 Yury Bychkov @@ -38861,8 +40986,7 @@ source/graph/index/SegmentIntersector.cpp, source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, source/headers/graph.h, source/headers/graphindex.h: Preformance is - drastically improved git-svn-id: - http://svn.osgeo.org/geos/trunk@47 + drastically improved git-svn-id: http://svn.osgeo.org/geos/trunk@47 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-11-05 Yury Bychkov @@ -38872,34 +40996,30 @@ source/graph/index/SimpleMCSweepLineIntersector.cpp, source/headers/bigtest.h, source/operation/relate/RelateComputer.cpp: Code for generating - large tests added. git-svn-id: http://svn.osgeo.org/geos/trunk@46 + large tests added. git-svn-id: http://svn.osgeo.org/geos/trunk@46 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-31 Yury Bychkov * source/graph/index/SimpleMCSweepLineIntersector.cpp, source/io/StringTokenizer.cpp, source/test/XMLTester.cpp: XML tester - is less fragile now. git-svn-id: - http://svn.osgeo.org/geos/trunk@45 + is less fragile now. git-svn-id: http://svn.osgeo.org/geos/trunk@45 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-30 Paul Ramsey * config.guess, config.sub: Added configure support files for - building w/o automake/autoconf git-svn-id: - http://svn.osgeo.org/geos/trunk@44 + building w/o automake/autoconf git-svn-id: http://svn.osgeo.org/geos/trunk@44 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-30 Paul Ramsey - * configure.in: Small changes to make autoconf happy. git-svn-id: - http://svn.osgeo.org/geos/trunk@43 + * configure.in: Small changes to make autoconf happy. git-svn-id: http://svn.osgeo.org/geos/trunk@43 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-30 Paul Ramsey - * source/test/test.xml: Edited test file to not crash XMLTester - git-svn-id: http://svn.osgeo.org/geos/trunk@42 + * source/test/test.xml: Edited test file to not crash XMLTester git-svn-id: http://svn.osgeo.org/geos/trunk@42 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-30 Paul Ramsey @@ -38914,8 +41034,7 @@ source/operation/Makefile.in, source/operation/relate/Makefile.in, source/test/Makefile.am, source/test/Makefile.in, source/util/Makefile.in, tools/Makefile.in: New build changes - necessary to build under Linux GNU. git-svn-id: - http://svn.osgeo.org/geos/trunk@41 + necessary to build under Linux GNU. git-svn-id: http://svn.osgeo.org/geos/trunk@41 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-23 Norman Vine @@ -38934,7 +41053,7 @@ source/operation/GeometryGraphOperation.cpp, source/operation/relate/RelateComputer.cpp, source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, source/test/XMLTester.cpp: GNU - portability changes git-svn-id: http://svn.osgeo.org/geos/trunk@40 + portability changes git-svn-id: http://svn.osgeo.org/geos/trunk@40 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-17 Yury Bychkov @@ -38945,8 +41064,7 @@ source/graph/GeometryGraph.cpp, source/graph/index/SegmentIntersector.cpp, source/headers/graphindex.h, source/test/XMLTester.cpp: All test - cases now work. Some are still too slow. git-svn-id: - http://svn.osgeo.org/geos/trunk@39 + cases now work. Some are still too slow. git-svn-id: http://svn.osgeo.org/geos/trunk@39 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-10-06 Yury Bychkov @@ -38965,8 +41083,7 @@ source/operation/relate/EdgeEndBundleStar.cpp, source/operation/relate/RelateComputer.cpp, source/operation/relate/RelateNodeGraph.cpp, - source/test/XMLTester.cpp: Relate() is almost debugged. - git-svn-id: http://svn.osgeo.org/geos/trunk@38 + source/test/XMLTester.cpp: Relate() is almost debugged. git-svn-id: http://svn.osgeo.org/geos/trunk@38 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-12 Fernando Villa @@ -38977,7 +41094,7 @@ source/operation/Makefile.am, source/operation/Makefile.in, source/operation/relate/Makefile.am, source/operation/relate/Makefile.in: Add makefile support for new - files and dir git-svn-id: http://svn.osgeo.org/geos/trunk@37 + files and dir git-svn-id: http://svn.osgeo.org/geos/trunk@37 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-12 Yury Bychkov @@ -39004,8 +41121,7 @@ source/operation/relate/RelateNodeFactory.cpp, source/operation/relate/RelateNodeGraph.cpp, source/operation/relate/RelateOp.cpp, source/test/XMLTester.cpp: - Relate is finished,but doesn't work yet. git-svn-id: - http://svn.osgeo.org/geos/trunk@36 + Relate is finished,but doesn't work yet. git-svn-id: http://svn.osgeo.org/geos/trunk@36 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-10 Fernando Villa @@ -39013,8 +41129,7 @@ * configure, configure.in, libtool, source/Makefile.am, source/Makefile.in, source/geom/Makefile.am, source/geom/Makefile.in, source/operation/Makefile.am, - source/operation/Makefile.in: Added operation/Makefiles - git-svn-id: http://svn.osgeo.org/geos/trunk@35 + source/operation/Makefile.in: Added operation/Makefiles git-svn-id: http://svn.osgeo.org/geos/trunk@35 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-06 Yury Bychkov @@ -39042,8 +41157,7 @@ source/headers/graph.h, source/headers/operation.h, source/operation/GeometryGraphOperation.cpp, source/operation/IsSimpleOp.cpp: A lot of changes: Code is brought - to version 1.2 of JTS. Compilable part of Operation added. - git-svn-id: http://svn.osgeo.org/geos/trunk@34 + to version 1.2 of JTS. Compilable part of Operation added. git-svn-id: http://svn.osgeo.org/geos/trunk@34 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-05 Fernando Villa @@ -39056,16 +41170,15 @@ source/io/markup/Makefile.in, source/test/Makefile.in, source/util/Makefile.in, tools/Makefile.in: Fixed version numbering. Whenever version numbers are bumped up the change should be - reflected in the AC_INIT_AUTOMAKE macro in configure.in. I've put it - at 0.0.1 - should be changed as appropriate. The version is - #define'd for code being compiled as GEOS_VERSION. git-svn-id: - http://svn.osgeo.org/geos/trunk@33 + reflected in the AC_INIT_AUTOMAKE macro in configure.in. I've put + it at 0.0.1 - should be changed as appropriate. The version is + #define'd for code being compiled as GEOS_VERSION. git-svn-id: http://svn.osgeo.org/geos/trunk@33 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-03 Paul Ramsey * source/test/Makefile.am: Changed reference to 'libgeom' to - 'libgeos' git-svn-id: http://svn.osgeo.org/geos/trunk@32 + 'libgeos' git-svn-id: http://svn.osgeo.org/geos/trunk@32 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-03 Fernando Villa @@ -39084,21 +41197,13 @@ source/io/markup/Makefile.in, source/test/Makefile.am, source/test/Makefile.in, source/util/Makefile.am, source/util/Makefile.in, tools/Makefile.am, tools/Makefile.in, - tools/geos-config.in: * Add automake/autoconf support for one-lib compilation * add - libtool support for shared libraries. --enable-shared={yes|no} and - --enable-static={yes|no} control static and shared lib generation. - * Makefile.in and configure files added to cvs (for users without - automake) * add dir macros/ with a GEOS_INIT macro to be used in - configure.in of other packages using geos (not used by geos - itself) * add dir tools/ with geos-config script * the makefile in - source/geom is the only one that generates a library - all others - have the source files in EXTRA_DIST only * small glitch: 'make - dist' will give errors trying to add the source files non local to - source/geom to the archive using relative paths. Does not have - consequences other than the error messages - will see if I can fix - this. In general the one-lib, complex-tree solution is not easy to - work with in automake. git-svn-id: - http://svn.osgeo.org/geos/trunk@31 + tools/geos-config.in: * Add automake/autoconf support for one-lib compilation * add libtool support for shared libraries. --enable-shared={yes|no} + and --enable-static={yes|no} control static and shared lib + generation. * Makefile.in and configure files added to cvs (for users without + automake) * add dir macros/ with a GEOS_INIT macro to be used in configure.in of other packages using geos (not used by geos itself) * add dir tools/ with geos-config script * the makefile in source/geom is the only one that generates a library - all others have the source files in EXTRA_DIST only * small glitch: 'make dist' will give errors trying to add the source files non local to source/geom to the archive using + relative paths. Does not have consequences other than the error + messages - will see if I can fix this. In general the one-lib, + complex-tree solution is not easy to work with in automake. git-svn-id: http://svn.osgeo.org/geos/trunk@31 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-01 Paul Ramsey @@ -39109,15 +41214,13 @@ source/algorithm/RobustLineIntersector.cpp, source/io/ParseException.cpp, source/io/WKTWriter.cpp, source/io/Writer.cpp, source/io/markup/MarkupSTL.cpp: Minor - portability changes. git-svn-id: - http://svn.osgeo.org/geos/trunk@30 + portability changes. git-svn-id: http://svn.osgeo.org/geos/trunk@30 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-01 Paul Ramsey * configure.in, source/Makefile.am, source/algorithm/Makefile.am: - Changes to support algorithm directory in build structure. - git-svn-id: http://svn.osgeo.org/geos/trunk@29 + Changes to support algorithm directory in build structure. git-svn-id: http://svn.osgeo.org/geos/trunk@29 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-09-01 Paul Ramsey @@ -39130,26 +41233,24 @@ source/geom/LineString.cpp, source/geom/Location.cpp, source/geom/MultiPoint.cpp, source/geom/PrecisionModel.cpp: GNU compatibility fixes, changing __min/__max to min/max, adding stdio.h - where needed, small syntax adjustments, newlines at end of files. - git-svn-id: http://svn.osgeo.org/geos/trunk@28 + where needed, small syntax adjustments, newlines at end of files. git-svn-id: http://svn.osgeo.org/geos/trunk@28 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey - * COPYING: Added LGPL licence text. git-svn-id: - http://svn.osgeo.org/geos/trunk@27 + * COPYING: Added LGPL licence text. git-svn-id: http://svn.osgeo.org/geos/trunk@27 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey - * Authors => AUTHORS: Changed name of authors file as requested by - autoconf. git-svn-id: http://svn.osgeo.org/geos/trunk@26 + * AUTHORS, Authors: Changed name of authors file as requested by + autoconf. git-svn-id: http://svn.osgeo.org/geos/trunk@26 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey * autogen.sh: Removed --force-missing which did not work for my - version of autoconf git-svn-id: http://svn.osgeo.org/geos/trunk@25 + version of autoconf git-svn-id: http://svn.osgeo.org/geos/trunk@25 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey @@ -39158,7 +41259,7 @@ source/graph/.cvsignore, source/graph/index/.cvsignore, source/io/.cvsignore, source/io/markup/.cvsignore, source/test/.cvsignore, source/util/.cvsignore: Added cvs ignore - files. git-svn-id: http://svn.osgeo.org/geos/trunk@24 + files. git-svn-id: http://svn.osgeo.org/geos/trunk@24 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey @@ -39166,7 +41267,7 @@ * source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, source/test/WKTIn, source/test/WKTOut, source/test/XMLTester.cpp, source/test/test.xml: Added the testing files back into their new - subdirectory. git-svn-id: http://svn.osgeo.org/geos/trunk@23 + subdirectory. git-svn-id: http://svn.osgeo.org/geos/trunk@23 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Paul Ramsey @@ -39179,8 +41280,7 @@ source/io/Makefile.am, source/io/markup/Makefile.am, source/test.xml, source/test/Makefile.am, source/util/Makefile.am: Added GNU autoconf support files submitted by Norman Vine. Moved - test files to a new subdirectory. git-svn-id: - http://svn.osgeo.org/geos/trunk@22 + test files to a new subdirectory. git-svn-id: http://svn.osgeo.org/geos/trunk@22 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-30 Yury Bychkov @@ -39204,7 +41304,7 @@ source/headers/graph.h, source/headers/graphindex.h, source/headers/operation.h, source/headers/platform.h, source/headers/util.h, source/io/WKTWriter.cpp: 'algorithm' is - almost complete git-svn-id: http://svn.osgeo.org/geos/trunk@21 + almost complete git-svn-id: http://svn.osgeo.org/geos/trunk@21 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-22 Yury Bychkov @@ -39219,15 +41319,13 @@ source/headers/geosAlgorithm.h, source/headers/graph.h, source/headers/graphindex.h, source/headers/io.h, source/headers/operation.h, source/headers/platform.h, - source/headers/util.h: 'graph/index' finished. Some .h changes. - git-svn-id: http://svn.osgeo.org/geos/trunk@20 + source/headers/util.h: 'graph/index' finished. Some .h changes. git-svn-id: http://svn.osgeo.org/geos/trunk@20 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-21 Yury Bychkov * source/graph/GeometryGraph.cpp, source/headers/graph.h, - source/headers/graphindex.h: Some changes in 'graph' git-svn-id: - http://svn.osgeo.org/geos/trunk@19 + source/headers/graphindex.h: Some changes in 'graph' git-svn-id: http://svn.osgeo.org/geos/trunk@19 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-20 Yury Bychkov @@ -39235,57 +41333,54 @@ * source/XMLTester.cpp, source/graph/Node.cpp, source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/io.h: Changed consts to enums - git-svn-id: http://svn.osgeo.org/geos/trunk@18 + source/headers/graph.h, source/headers/io.h: Changed consts to enums git-svn-id: http://svn.osgeo.org/geos/trunk@18 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-08-14 Yury Bychkov - * graph.h, CTS.cpp => source/CTS.cpp, SimpleWKTTester.cpp => - source/SimpleWKTTester.cpp, WKTIn => source/WKTIn, WKTOut => - source/WKTOut, XMLTester.cpp => source/XMLTester.cpp, - Coordinate.cpp => source/geom/Coordinate.cpp, CoordinateList.cpp => - source/geom/CoordinateList.cpp, Dimension.cpp => - source/geom/Dimension.cpp, Envelope.cpp => - source/geom/Envelope.cpp, Geometry.cpp => source/geom/Geometry.cpp, - GeometryCollection.cpp => source/geom/GeometryCollection.cpp, - GeometryCollectionIterator.cpp => - source/geom/GeometryCollectionIterator.cpp, GeometryFactory.cpp => - source/geom/GeometryFactory.cpp, IntersectionMatrix.cpp => - source/geom/IntersectionMatrix.cpp, LineSegment.cpp => - source/geom/LineSegment.cpp, LineString.cpp => - source/geom/LineString.cpp, LinearRing.cpp => - source/geom/LinearRing.cpp, Location.cpp => - source/geom/Location.cpp, MultiLineString.cpp => - source/geom/MultiLineString.cpp, MultiPoint.cpp => - source/geom/MultiPoint.cpp, MultiPolygon.cpp => - source/geom/MultiPolygon.cpp, Point.cpp => source/geom/Point.cpp, - Polygon.cpp => source/geom/Polygon.cpp, PrecisionModel.cpp => - source/geom/PrecisionModel.cpp, Depth.cpp => - source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersection.cpp, + * Assert.cpp, AssertionFailedException.cpp, CTS.cpp, + Coordinate.cpp, CoordinateList.cpp, Depth.cpp, Dimension.cpp, + Envelope.cpp, Geometry.cpp, GeometryCollection.cpp, + GeometryCollectionIterator.cpp, GeometryFactory.cpp, + IntersectionMatrix.cpp, Label.cpp, LineSegment.cpp, LineString.cpp, + LinearRing.cpp, Location.cpp, MarkupSTL.cpp, MarkupSTL.h, + MultiLineString.cpp, MultiPoint.cpp, MultiPolygon.cpp, + ParseException.cpp, Point.cpp, Polygon.cpp, Position.cpp, + PrecisionModel.cpp, SimpleWKTTester.cpp, StringTokenizer.cpp, + TopologyLocation.cpp, WKTIn, WKTOut, WKTReader.cpp, WKTWriter.cpp, + Writer.cpp, XMLTester.cpp, geom.h, graph.h, io.h, operation.h, + platform.h, source/CTS.cpp, source/SimpleWKTTester.cpp, + source/WKTIn, source/WKTOut, source/XMLTester.cpp, + source/geom/Coordinate.cpp, source/geom/CoordinateList.cpp, + source/geom/Dimension.cpp, source/geom/Envelope.cpp, + source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, + source/geom/GeometryCollectionIterator.cpp, + source/geom/GeometryFactory.cpp, + source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, + source/geom/LineString.cpp, source/geom/LinearRing.cpp, + source/geom/Location.cpp, source/geom/MultiLineString.cpp, + source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, + source/geom/Point.cpp, source/geom/Polygon.cpp, + source/geom/PrecisionModel.cpp, source/graph/Depth.cpp, + source/graph/DirectedEdge.cpp, source/graph/DirectedEdgeStar.cpp, + source/graph/Edge.cpp, source/graph/EdgeEnd.cpp, + source/graph/EdgeEndStar.cpp, source/graph/EdgeIntersection.cpp, source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, source/graph/GraphComponent.cpp, - Label.cpp => source/graph/Label.cpp, source/graph/Node.cpp, + source/graph/Label.cpp, source/graph/Node.cpp, source/graph/NodeFactory.cpp, source/graph/NodeMap.cpp, - Position.cpp => source/graph/Position.cpp, - source/graph/Quadrant.cpp, TopologyLocation.cpp => - source/graph/TopologyLocation.cpp, geom.h => source/headers/geom.h, + source/graph/Position.cpp, source/graph/Quadrant.cpp, + source/graph/TopologyLocation.cpp, source/headers/geom.h, source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, io.h => source/headers/io.h, - operation.h => source/headers/operation.h, platform.h => - source/headers/platform.h, util.h => source/headers/util.h, - ParseException.cpp => source/io/ParseException.cpp, - StringTokenizer.cpp => source/io/StringTokenizer.cpp, WKTReader.cpp - => source/io/WKTReader.cpp, WKTWriter.cpp => - source/io/WKTWriter.cpp, Writer.cpp => source/io/Writer.cpp, - MarkupSTL.cpp => source/io/markup/MarkupSTL.cpp, MarkupSTL.h => - source/io/markup/MarkupSTL.h, test.xml => source/test.xml, - Assert.cpp => source/util/Assert.cpp, AssertionFailedException.cpp - => source/util/AssertionFailedException.cpp: New structure of - source. git-svn-id: http://svn.osgeo.org/geos/trunk@17 + source/headers/graphindex.h, source/headers/io.h, + source/headers/operation.h, source/headers/platform.h, + source/headers/util.h, source/io/ParseException.cpp, + source/io/StringTokenizer.cpp, source/io/WKTReader.cpp, + source/io/WKTWriter.cpp, source/io/Writer.cpp, + source/io/markup/MarkupSTL.cpp, source/io/markup/MarkupSTL.h, + source/test.xml, source/util/Assert.cpp, + source/util/AssertionFailedException.cpp, test.xml, util.h: New + structure of source. git-svn-id: http://svn.osgeo.org/geos/trunk@17 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-07-11 Yury Bychkov @@ -39294,14 +41389,12 @@ Geometry.cpp, GeometryCollection.cpp, GeometryFactory.cpp, Label.cpp, Position.cpp, TopologyLocation.cpp, WKTReader.cpp, WKTWriter.cpp, XMLTester.cpp, graph.h, operation.h, test.xml, - util.h: Assert and some graph classes git-svn-id: - http://svn.osgeo.org/geos/trunk@16 + util.h: Assert and some graph classes git-svn-id: http://svn.osgeo.org/geos/trunk@16 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-07-03 Yury Bychkov - * MarkupSTL.cpp, MarkupSTL.h, XMLTester.cpp: started XML tester - git-svn-id: http://svn.osgeo.org/geos/trunk@15 + * MarkupSTL.cpp, MarkupSTL.h, XMLTester.cpp: started XML tester git-svn-id: http://svn.osgeo.org/geos/trunk@15 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-07-02 Yury Bychkov @@ -39309,21 +41402,19 @@ * CTS.cpp, GeometryCollection.cpp, GeometryCollectionIterator.cpp, GeometryFactory.cpp, MultiPolygon.cpp, Polygon.cpp, SimpleWKTTester.cpp, WKTIn, WKTOut, WKTReader.cpp, WKTWriter.cpp, - geom.h, io.h: 'io' and SimpleTester done git-svn-id: - http://svn.osgeo.org/geos/trunk@14 + geom.h, io.h: 'io' and SimpleTester done git-svn-id: http://svn.osgeo.org/geos/trunk@14 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-27 Yury Bychkov * CTS.cpp, StringTokenizer.cpp, WKTWriter.cpp, Writer.cpp, io.h: - 'io' is almost done git-svn-id: http://svn.osgeo.org/geos/trunk@13 + 'io' is almost done git-svn-id: http://svn.osgeo.org/geos/trunk@13 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-26 Yury Bychkov * CTS.cpp, GeometryCollection.cpp, ParseException.cpp, Polygon.cpp, - StringTokenizer.cpp, WKTReader.cpp, io.h: Some 'io' classes done. - git-svn-id: http://svn.osgeo.org/geos/trunk@12 + StringTokenizer.cpp, WKTReader.cpp, io.h: Some 'io' classes done. git-svn-id: http://svn.osgeo.org/geos/trunk@12 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-21 Yury Bychkov @@ -39331,14 +41422,14 @@ * CTS.cpp, CoordinateList.cpp, Geometry.cpp, GeometryCollection.cpp, LineString.cpp, Point.cpp, Polygon.cpp, geom.h: 'geos': first pass done. Some external dependencies and - polishing left. git-svn-id: http://svn.osgeo.org/geos/trunk@11 + polishing left. git-svn-id: http://svn.osgeo.org/geos/trunk@11 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-20 Yury Bychkov * CTS.cpp, Geometry.cpp, GeometryCollection.cpp, GeometryCollectionIterator.cpp, GeometryFactory.cpp, geom.h: Only - Geometry.java left git-svn-id: http://svn.osgeo.org/geos/trunk@10 + Geometry.java left git-svn-id: http://svn.osgeo.org/geos/trunk@10 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-19 Yury Bychkov @@ -39346,22 +41437,20 @@ * CTS.cpp, CoordinateList.cpp, Geometry.cpp, GeometryCollection.cpp, LineString.cpp, LinearRing.cpp, MultiLineString.cpp, MultiPoint.cpp, MultiPolygon.cpp, Point.cpp, - Polygon.cpp, geom.h: 'geom' mostly done. git-svn-id: - http://svn.osgeo.org/geos/trunk@9 + Polygon.cpp, geom.h: 'geom' mostly done. git-svn-id: http://svn.osgeo.org/geos/trunk@9 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-14 Yury Bychkov * CTS.cpp, GeometryCollection.cpp, GeometryFactory.cpp, MultiLineString.cpp, MultiPoint.cpp, MultiPolygon.cpp, Polygon.cpp, - geom.h: 'geom' almost done git-svn-id: - http://svn.osgeo.org/geos/trunk@8 + geom.h: 'geom' almost done git-svn-id: http://svn.osgeo.org/geos/trunk@8 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-12 Yury Bychkov * CoordinateList.cpp, LineString.cpp, geom.h: LineString is 99% - finished git-svn-id: http://svn.osgeo.org/geos/trunk@7 + finished git-svn-id: http://svn.osgeo.org/geos/trunk@7 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-11 Yury Bychkov @@ -39369,14 +41458,18 @@ * CTS.cpp, Coordinate.cpp, CoordinateList.cpp, Dimension.cpp, Geometry.cpp, GeometryCollection.cpp, IntersectionMatrix.cpp, LineString.cpp, LinearRing.cpp, Location.cpp, Point.cpp, - PrecisionModel.cpp, geom.h, operation.h: 'geom' package 70% done - git-svn-id: http://svn.osgeo.org/geos/trunk@6 + PrecisionModel.cpp, geom.h, operation.h: 'geom' package 70% done git-svn-id: http://svn.osgeo.org/geos/trunk@6 5242fede-7e19-0410-aef8-94bd7d2200fb 2002-06-07 Paul Ramsey * CTS.cpp, Coordinate.cpp, CoordinateList.cpp, Dimension.cpp, Envelope.cpp, LineSegment.cpp, Location.cpp, geom.h, platform.h: - Initial revision git-svn-id: http://svn.osgeo.org/geos/trunk@2 + Initial revision git-svn-id: http://svn.osgeo.org/geos/trunk@2 + 5242fede-7e19-0410-aef8-94bd7d2200fb + +2002-06-07 No Body + + * New repository initialized by cvs2svn. git-svn-id: http://svn.osgeo.org/geos/trunk@1 5242fede-7e19-0410-aef8-94bd7d2200fb diff -Nru geos-3.7.1/cmake/cmake_uninstall.cmake.in geos-3.8.0/cmake/cmake_uninstall.cmake.in --- geos-3.7.1/cmake/cmake_uninstall.cmake.in 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/cmake/cmake_uninstall.cmake.in 2019-10-08 16:20:34.000000000 +0000 @@ -4,12 +4,12 @@ # # Defines commands used by make uninstall target of CMake build configuration. # -# Author: Credit to the CMake mailing list archives for providing this solution. +# Author: Credit to the CMake mailing list archives for providing this solution. # Modifications: Mateusz Loskot # ################################################################################# if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - message(FATAL_ERROR + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") endif() @@ -20,7 +20,7 @@ set(GEOS_INCLUDE_DIR) foreach(file ${files}) - if(${file} MATCHES "geos.h") + if(${file} MATCHES "geom.h") get_filename_component(GEOS_INCLUDE_DIR ${file} PATH) endif() @@ -39,7 +39,7 @@ endforeach() message(STATUS "Deleting ${GEOS_INCLUDE_DIR} directory") -exec_program("@CMAKE_COMMAND@" +exec_program("@CMAKE_COMMAND@" ARGS "-E remove_directory \"${GEOS_INCLUDE_DIR}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval) diff -Nru geos-3.7.1/cmake/FindMakeDistCheck.cmake geos-3.8.0/cmake/FindMakeDistCheck.cmake --- geos-3.7.1/cmake/FindMakeDistCheck.cmake 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/cmake/FindMakeDistCheck.cmake 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,61 @@ +# Inspired by CMake Distcheck for LAAS-CNRS +# +# DEFINE_DISTCHECK +# --------------- +# +# Add a distcheck target to check the generated tarball. +# +# This step calls `make dist' to generate a copy of the sources as it +# stands in the current git HEAD i.e., unversioned files are skipped. +# +# Then: +# - create _build and _inst to respectively create a build +# and an installation directory. +# - run cmake with _inst as the installation prefix +# - run make, make check, make install and make uninstall +# - remove _build and _inst. +# - remove dist directory and confirm success. +# +# During the compilation phase, all files in the source tree are modified +# to *not* be writeable to detect bad compilation steps which tries to modify +# the source tree. Permissions are reverted at the end of the check. +# +macro(AddMakeDistCheck) + find_program(_tar tar) + find_program(_bzip2 bzip2) + string(TOLOWER "${CPACK_SOURCE_PACKAGE_FILE_NAME}" _distbasename) + set(_distname "${_distbasename}.tar.bz2") + set(_builddir "${CMAKE_BINARY_DIR}/${_distbasename}/_build") + set(_instdir "${CMAKE_BINARY_DIR}/${_distbasename}/_inst") + # message(STATUS "GEOS: _distbasename: ${_distbasename}") + # message(STATUS "GEOS: _distname: ${_distname}") + # message(STATUS "GEOS: _builddir: ${_builddir}") + # message(STATUS "GEOS: _instdir: ${_instdir}") + + add_custom_target(distcheck + COMMAND rm -rf "${_distbasename}" + && \(${_bzip2} -d -c "${_distname}" | ${_tar} xf -\) + && mkdir -vp "${_builddir}" + && mkdir -vp "${_instdir}" + && cd "${_builddir}" + && ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX:PATH="${_instdir}" .. + || \(echo "ERROR: the cmake configuration failed." && false\) + && make + || \(echo "ERROR: the compilation failed." && false\) + && make test + || \(echo "ERROR: the test suite failed." && false\) + && make install + || \(echo "ERROR: the install target failed." && false\) + && make uninstall + || \(echo "ERROR: the uninstall target failed." && false\) + && make clean + || \(echo "ERROR: the clean target failed." && false\) + && cd ../.. + && rm -rf "${_distbasename}" + && echo "==============================================================" + && echo "${_distname} is ready for distribution." + && echo "==============================================================" + ) + + add_dependencies(distcheck dist) +endmacro() diff -Nru geos-3.7.1/cmake/geos-config.cmake geos-3.8.0/cmake/geos-config.cmake --- geos-3.7.1/cmake/geos-config.cmake 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/cmake/geos-config.cmake 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,11 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ +include("${CMAKE_CURRENT_LIST_DIR}/geos-targets.cmake") diff -Nru geos-3.7.1/cmake/modules/CheckPrototypeExists.cmake geos-3.8.0/cmake/modules/CheckPrototypeExists.cmake --- geos-3.7.1/cmake/modules/CheckPrototypeExists.cmake 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/cmake/modules/CheckPrototypeExists.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -# - Check if the prototype for a function exists. -# CHECK_PROTOTYPE_EXISTS (FUNCTION HEADER VARIABLE) -# -# FUNCTION - the name of the function you are looking for -# HEADER - the header(s) where the prototype should be declared -# VARIABLE - variable to store the result -# -# The following variables may be set before calling this macro to -# modify the way the check is run: -# -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories - -# Copyright (c) 2006, Alexander Neundorf, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# -# Source: KDE/kdelibs -# -# -INCLUDE(CheckCXXSourceCompiles) - -MACRO(CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) - SET(_INCLUDE_FILES) - FOREACH (it ${_HEADER}) - SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") - ENDFOREACH (it) - - SET(_CHECK_PROTO_EXISTS_SOURCE_CODE " -${_INCLUDE_FILES} -int main() -{ -#ifndef ${_SYMBOL} - int i = sizeof(&${_SYMBOL}); -#endif - return 0; -} -") - CHECK_CXX_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT}) -ENDMACRO(CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) - diff -Nru geos-3.7.1/cmake/modules/COPYING-CMAKE-SCRIPTS geos-3.8.0/cmake/modules/COPYING-CMAKE-SCRIPTS --- geos-3.7.1/cmake/modules/COPYING-CMAKE-SCRIPTS 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/cmake/modules/COPYING-CMAKE-SCRIPTS 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -Nru geos-3.7.1/cmake/modules/GenerateSourceGroups.cmake geos-3.8.0/cmake/modules/GenerateSourceGroups.cmake --- geos-3.7.1/cmake/modules/GenerateSourceGroups.cmake 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/cmake/modules/GenerateSourceGroups.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -# -# Macro generates tree of IDE source groups based on folders structure -# Source: http://www.cmake.org/pipermail/cmake/2013-November/056332.html -# -macro(GenerateSourceGroups curdir) - file(GLOB children RELATIVE ${PROJECT_SOURCE_DIR}/${curdir} ${PROJECT_SOURCE_DIR}/${curdir}/*) - foreach(child ${children}) - if(IS_DIRECTORY ${PROJECT_SOURCE_DIR}/${curdir}/${child}) - GenerateSourceGroups(${curdir}/${child}) - else() - string(REPLACE "/" "\\" groupname ${curdir}) - # I would like to call the src root folder in a different name, only in visual studio (not mandatory requirement) - string(REPLACE "src" "Source Files" groupname ${groupname}) - source_group(${groupname} FILES ${PROJECT_SOURCE_DIR}/${curdir}/${child}) - endif() - endforeach() -endmacro() \ No newline at end of file diff -Nru geos-3.7.1/CMakeLists.txt geos-3.8.0/CMakeLists.txt --- geos-3.7.1/CMakeLists.txt 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -1,356 +1,322 @@ -################################################################################# +############################################################################## +# Part of CMake configuration for GEOS # -# Main GEOS build configuration file for CMake build system -# -# Copyright (C) 2009 Mateusz Loskot +# Copyright (C) 2018-2019 Mateusz Loskot # # This is free software; you can redistribute and/or modify it under # the terms of the GNU Lesser General Public Licence as published # by the Free Software Foundation. # See the COPYING file for more information. -# -################################################################################# -cmake_minimum_required(VERSION 3.1.3) - -if(NOT CMAKE_VERSION) - set(CMAKE_VERSION - "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") -endif() - -if(POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) -endif() -################################################################################# -# Set GEOS project -################################################################################# -project(GEOS VERSION 3.7.0 LANGUAGES C CXX) - -# Add custom GEOS modules for CMake -list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules") - -################################################################################# -# Set C++ standard -################################################################################# -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) +############################################################################## -message(STATUS "Setting C++ requirement to C++${CMAKE_CXX_STANDARD}") +# Require CMake 3.8+ with support for meta-features that request compiler +# modes for specific C/C++ language standard levels. +cmake_minimum_required(VERSION 3.8) -################################################################################# -# Setup GEOS version -################################################################################# +# Default to release build so packagers don't release debug builds +set(DEFAULT_BUILD_TYPE Release) -# GEOS release version -# GEOS C++ library SONAME will use these encoding ABI break at every release -set(GEOS_VERSION "${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH}") -set(VERSION "${GEOS_VERSION}") - -# Copy version components into different variable names to match those used -# by autotools for *.h.in files -set(VERSION_MAJOR ${GEOS_VERSION_MAJOR}) -set(VERSION_MINOR ${GEOS_VERSION_MINOR}) -set(VERSION_PATCH ${GEOS_VERSION_PATCH}) - -# JTS_PORT is the version of JTS this release is bound to -set(JTS_PORT 1.13.0) -message(STATUS "Setting GEOS version ${VERSION} as port of JTS ${JTS_PORT}") - -# GEOS C API version -set(CAPI_INTERFACE_CURRENT 12) -set(CAPI_INTERFACE_REVISION 0) -set(CAPI_INTERFACE_AGE 11) - -math(EXPR CAPI_VERSION_MAJOR "${CAPI_INTERFACE_CURRENT} - ${CAPI_INTERFACE_AGE}") -set(CAPI_VERSION_MINOR ${CAPI_INTERFACE_AGE}) -set(CAPI_VERSION_PATCH ${CAPI_INTERFACE_REVISION}) -set(CAPI_VERSION "${CAPI_VERSION_MAJOR}.${CAPI_VERSION_MINOR}.${CAPI_VERSION_PATCH}") -message(STATUS "Setting GEOS C API version ${CAPI_VERSION}") -if (NOT WIN32) - set(CAPI_SOVERSION ${CAPI_VERSION_MAJOR}) - message(STATUS "Setting GEOS C API soversion ${CAPI_SOVERSION}") -endif() - -################################################################################# -# Check custom global options -################################################################################# - -option(GEOS_ENABLE_INLINE - "Set to OFF|ON (default) to control GEOS compilation with small functions inlining" ON) - -if(NOT MSVC) - option(GEOS_ENABLE_ASSERT - "Set to ON|OFF (default) to build GEOS with assert() macro enabled" OFF) +# Require CMake 3.13+ with VS generator for complete support of VS versions +# and support by AppVeyor. +if(${CMAKE_GENERATOR} MATCHES "Visual Studio") + cmake_minimum_required(VERSION 3.13 FATAL_ERROR) endif() -option(GEOS_ENABLE_TESTS - "Set to OFF|ON (default) to control build of GEOS tests package" ON) - -option(GEOS_ENABLE_TESTS_UNIT2_ONLY - "Set to ON|OFF (default) to enable only new tests based on Catch (WIP: experimental)." OFF) - -option(GEOS_BUILD_STATIC - "Set to OFF|ON (default) to build GEOS static libraries" ON) - -option(GEOS_BUILD_SHARED - "Set to OFF|ON (default) to build GEOS shared libraries" ON) - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - option(GEOS_ENABLE_FLOATSTORE - "Set to OFF|ON (default) to control IEEE754 conformance and remove extra precision" ON) -endif() - -if(APPLE) - option(GEOS_ENABLE_MACOSX_FRAMEWORK - "Set to ON|OFF (default) to build GEOS as a Mac OS X framework" OFF) - option(GEOS_ENABLE_MACOSX_FRAMEWORK_UNIXCOMPAT - "Set to ON|OFF (default) to add Unix compatibility to the Mac OS X framework" OFF) -endif() - -################################################################################# -# Setup C/C++ compiler options -################################################################################# -if(NOT MSVC_IDE) - if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug CACHE STRING - "Choose the type of build, options are: None Debug Release" FORCE) - endif() - message(STATUS "Setting GEOS build type - ${CMAKE_BUILD_TYPE}") -endif() - -if(CMAKE_BUILD_TYPE STREQUAL Debug) - add_definitions(-D_DEBUG) -endif() - -add_definitions(-DUSE_UNSTABLE_GEOS_CPP_API) - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - - # General options - set(CMAKE_C_FLAGS "-pedantic -ansi ${CMAKE_C_FLAGS}") - - # Numerical stability - if(GEOS_ENABLE_FLOATSTORE) - # Remove extra precision by forcing conformance to IEEE 754 rather than IEEE 854 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffloat-store") - endif() - message(STATUS - "Forcing IEEE 754 using flag -ffloat-store - ${GEOS_ENABLE_FLOATSTORE}") - - # Warnings specification - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -fno-implicit-inline-templates -Wconversion -pedantic -W -Wunused -Wuninitialized -Wextra -Wdouble-promotion") - - # Turn on Position Independent Code generation for GEOS C shared library - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wconversion -pedantic -Wmissing-prototypes -W -Wunused -Wuninitialized -Wextra -Wdouble-promotion") - - # Enable glibc ISO C99 features (macros isfinite, isnan) - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_ISOC99_SOURCE=1") - -elseif(MSVC) - - # Set pedantic mode by default - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - string(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - - if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") - - add_definitions(-D_SCL_SECURE_NO_WARNINGS) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - add_definitions(-DNOMINMAX) - endif() +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +# TODO: Follow CMake detection of git and version tagging +# https://gitlab.kitware.com/cmake/cmake/blob/master/Source/CMakeVersionSource.cmake +if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD) + set(GEOS_BUILD_FROM_GIT ON) endif() -if(GEOS_ENABLE_INLINE) - add_definitions(-DGEOS_INLINE) -endif() -message(STATUS - "Setting GEOS compilation with small functions inlining - ${GEOS_ENABLE_INLINE}") - -if(NOT MSVC) - if(GEOS_ENABLE_ASSERT) - string(REGEX REPLACE "[-/]D.*NDEBUG" "-U NDEBUG" - CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - endif() - message(STATUS - "Setting GEOS compilation with assert() macro enabled - ${GEOS_ENABLE_ASSERT}") +# Make sure we know our build type +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE ${DEFAULT_BUILD_TYPE}) + message(STATUS "GEOS: Using default build type: ${CMAKE_BUILD_TYPE}") +else() + message(STATUS "GEOS: Build type: ${CMAKE_BUILD_TYPE}") endif() -################################################################################# -# Setup C/C++ library features -################################################################################# -# check header files -include(CheckIncludeFiles) +#----------------------------------------------------------------------------- +# Options +#----------------------------------------------------------------------------- +include(CMakeDependentOption) -check_include_files(stdint.h HAVE_STDINT_H) -check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(ieeefp.h HAVE_IEEEFP_H) +## CMake global variables +option(BUILD_SHARED_LIBS "Build GEOS with shared libraries" ON) +set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard version to use (default is 11)") -# check types and sizes -include(CheckTypeSize) +## GEOS custom variables +cmake_dependent_option(GEOS_BUILD_DEVELOPER + "Build with compilation flags useful for development" ON + "GEOS_BUILD_FROM_GIT" OFF) +mark_as_advanced(GEOS_BUILD_DEVELOPER) -if(MSVC) - check_type_size("__int64" HAVE_INT64_T_64) -else() - if(HAVE_STDINT_H OR HAVE_INTTYPES_H) - check_type_size("int64_t" HAVE_INT64_T_64) - else() - check_type_size("long long int" HAVE_LONG_LONG_INT_64) - endif() -endif() - -# check functions and macros -include(CheckPrototypeExists) -include(CheckSymbolExists) - -check_prototype_exists(isnan cmath HAVE_STD_ISNAN) -if(NOT HAVE_STD_ISNAN) - if(MSVC) - check_prototype_exists(_isnan float.h HAVE_ISNAN) - elseif(APPLE) - check_prototype_exists(__isnand math.h HAVE_ISNAND_XCODE) - if(NOT HAVE_ISNAND_XCODE) - check_prototype_exists(__inline_isnand math.h HAVE_INLINE_ISNAND_XCODE) - endif() - else() - check_symbol_exists(isnan math.h HAVE_ISNAN) - endif() +if (POLICY CMP0092) + # dont set /W3 warning flags by default, we already + # set /W4 anyway + cmake_policy(SET CMP0092 NEW) endif() -check_prototype_exists(isfinite cmath HAVE_STD_ISFINITE) - -if(NOT HAVE_STD_ISFINITE) - if(MSVC) - check_prototype_exists(_finite float.h HAVE_FINITE) - else() - #CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - check_symbol_exists(isfinite math.h HAVE_ISFINITE) - endif() -endif() - -################################################################################ +#----------------------------------------------------------------------------- # Setup build directories -################################################################################# - -# Put the libaries and binaries that get built into directories at the -# top of the build tree rather than in hard-to-find leaf -# directories. This simplifies manual testing and the use of the build -# tree rather than installed Boost libraries. +#----------------------------------------------------------------------------- +# Place executables and shared libraries in the same location for +# convenience of direct execution from common spot and for +# convenience in environments without RPATH support. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +message(STATUS "GEOS: Run-time output: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") +message(STATUS "GEOS: Archives output: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") -################################################################################ -# Setup include directories -################################################################################# - -# for including GEOS C++ API headers -include_directories(${PROJECT_SOURCE_DIR}/include) - -# for including build-specific GEOS C API headers -include_directories(${PROJECT_BINARY_DIR}/capi) - -# for including build-specific version.h, platform.h and geos_c.h -include_directories(${PROJECT_BINARY_DIR}/include) - -# for geos_ts.cpp which does #include "../geos_revision.h" whereas -# CMake generates geos_revision.h in build directory, -# to not to pollute source tree. -include_directories(${PROJECT_BINARY_DIR}) - -################################################################################# -# Setup checks and generate config headers -################################################################################# -find_package(Git) - -message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/geos_revision.h") -file(WRITE ${CMAKE_BINARY_DIR}/geos_revision.h.in "\#define GEOS_REVISION \"@GEOS_REVISION@\"\n") - -file(WRITE ${CMAKE_BINARY_DIR}/geos_revision.cmake -" -execute_process(COMMAND \${GIT} describe --tags --always - WORKING_DIRECTORY \${CWD} - OUTPUT_VARIABLE GEOS_REVISION - OUTPUT_STRIP_TRAILING_WHITESPACE) -configure_file(\${SRC} \${DST} @ONLY) -") - -add_custom_target(geos_revision - COMMAND ${CMAKE_COMMAND} - -D CWD=${CMAKE_CURRENT_SOURCE_DIR} - -D GIT=${GIT_EXECUTABLE} - -D SRC=${PROJECT_BINARY_DIR}/geos_revision.h.in - -D DST=${PROJECT_BINARY_DIR}/geos_revision.h - -P ${PROJECT_BINARY_DIR}/geos_revision.cmake) - -if(EXISTS ${PROJECT_SOURCE_DIR}/include/geos/platform.h) - message(STATUS "Disabling existing ${PROJECT_SOURCE_DIR}/include/geos/platform.h") - - if(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6) - file(REMOVE ${PROJECT_SOURCE_DIR}/include/geos/platform.h) - set(PH_RESULT "removed") - else() - file(RENAME - ${PROJECT_SOURCE_DIR}/include/geos/platform.h - ${PROJECT_SOURCE_DIR}/include/geos/platform.h.disabled) - set(PH_RESULT "renamed") - endif() +#----------------------------------------------------------------------------- +# Version +#----------------------------------------------------------------------------- +file(READ Version.txt _version_txt) + +string(REGEX MATCH "GEOS_VERSION_MAJOR=([0-9]+)" _ ${_version_txt}) +set(_version_major ${CMAKE_MATCH_1}) +string(REGEX MATCH "GEOS_VERSION_MINOR=([0-9]+)" _ ${_version_txt}) +set(_version_minor ${CMAKE_MATCH_1}) +string(REGEX MATCH "GEOS_VERSION_PATCH=([0-9]+)" _ ${_version_txt}) +set(_version_patch ${CMAKE_MATCH_1}) +# OPTIONS: "", "dev", "rc1" etc. +string(REGEX MATCH "GEOS_PATCH_WORD=([a-zA-Z0-9]+)" _ ${_version_txt}) +set(_version_patch_word ${CMAKE_MATCH_1}) + +# Version of JTS this release is bound to +string(REGEX MATCH "JTS_PORT=([0-9a-zA-Z\.]+)" _ ${_version_txt}) +set(JTS_PORT ${CMAKE_MATCH_1}) + +# Version of public C API +string(REGEX MATCH "CAPI_INTERFACE_CURRENT=([0-9]+)" _ ${_version_txt}) +set(_version_capi_current ${CMAKE_MATCH_1}) +string(REGEX MATCH "CAPI_INTERFACE_REVISION=([0-9]+)" _ ${_version_txt}) +set(_version_capi_revision ${CMAKE_MATCH_1}) +string(REGEX MATCH "CAPI_INTERFACE_AGE=([0-9]+)" _ ${_version_txt}) +set(_version_capi_age ${CMAKE_MATCH_1}) + +unset(_version_txt) + +math(EXPR _version_capi_major "${_version_capi_current} - ${_version_capi_age}") +set(CAPI_VERSION_MAJOR ${_version_capi_major}) +set(CAPI_VERSION_MINOR ${_version_capi_age}) +set(CAPI_VERSION_PATCH ${_version_capi_revision}) +set(CAPI_VERSION "${_version_capi_major}.${_version_capi_age}.${_version_capi_revision}") + +unset(_version_capi_current) +unset(_version_capi_major) +unset(_version_capi_age) +unset(_version_capi_revision) + +#----------------------------------------------------------------------------- +# Project +#----------------------------------------------------------------------------- +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.9) + list(APPEND _project_info DESCRIPTION "GEOS - C++ port of the Java Topology Suite (JTS)") +endif() +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) + list(APPEND _project_info HOMEPAGE_URL "http://geos.osgeo.org") +endif() + +project(GEOS VERSION "${_version_major}.${_version_minor}.${_version_patch}" + LANGUAGES C CXX + ${_project_info}) - message(STATUS "Disabling existing ${PROJECT_SOURCE_DIR}/include/geos/platform.h - ${PH_RESULT}") +if("${_version_patch_word}" STREQUAL "") + set(GEOS_VERSION_FULL "${GEOS_VERSION}") +else() + set(GEOS_VERSION_FULL "${GEOS_VERSION}${_version_patch_word}") endif() -message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/include/geos/platform.h") -configure_file(${PROJECT_SOURCE_DIR}/include/geos/platform.h.cmake - ${PROJECT_BINARY_DIR}/include/geos/platform.h) - -message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/include/geos/version.h") -configure_file(${PROJECT_SOURCE_DIR}/include/geos/version.h.in - ${PROJECT_BINARY_DIR}/include/geos/version.h @ONLY) - -message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/capi/geos_c.h") -configure_file(${PROJECT_SOURCE_DIR}/capi/geos_c.h.in - ${PROJECT_BINARY_DIR}/capi/geos_c.h @ONLY) - -################################################################################# -# Configure tests -################################################################################# +unset(_version_major) +unset(_version_minor) +unset(_version_patch) +unset(_version_patch_word) + +message(STATUS "GEOS: Version ${GEOS_VERSION_FULL}") +message(STATUS "GEOS: C API Version ${CAPI_VERSION}") +message(STATUS "GEOS: JTS port ${JTS_PORT}") + +#----------------------------------------------------------------------------- +# C++ language version and compilation flags +#----------------------------------------------------------------------------- +message(STATUS "GEOS: Require C++${CMAKE_CXX_STANDARD}") +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) -if(GEOS_ENABLE_TESTS OR GEOS_ENABLE_TESTS_UNIT2_ONLY) - enable_testing() - # Define "make check" as alias for "make test" - add_custom_target(check COMMAND ctest) +#----------------------------------------------------------------------------- +# Target geos_cxx_flags: common compilation flags +#----------------------------------------------------------------------------- +add_library(geos_cxx_flags INTERFACE) +target_compile_features(geos_cxx_flags INTERFACE cxx_std_11) + +#----------------------------------------------------------------------------- +# Target geos_cxx_flags: common compilation flags +#----------------------------------------------------------------------------- +option(DISABLE_GEOS_INLINE "Disable inlining" OFF) +if(NOT DISABLE_GEOS_INLINE) + target_compile_definitions(geos_cxx_flags INTERFACE GEOS_INLINE) +else() + message(STATUS + "GEOS: DISABLING inlining of small functions") endif() -################################################################################# -# IDE specifics -################################################################################# -if (MSVC_IDE) - # Visual Studio 2017 supports .editorconfig, copy it next to generated .sln - message(STATUS "Copying .editorconfig file to ${PROJECT_BINARY_DIR}") - file(COPY "${PROJECT_SOURCE_DIR}/.editorconfig" - DESTINATION "${PROJECT_BINARY_DIR}") +#----------------------------------------------------------------------------- +# Target geos_developer_cxx_flags: developer mode compilation flags +#----------------------------------------------------------------------------- +# Do NOT install this target for end-users! +add_library(geos_developer_cxx_flags INTERFACE) + +if(GEOS_BUILD_DEVELOPER) + message(STATUS "GEOS: Developer mode enabled") +endif() + +# geos_cxx_flags inherits properties from geos_developer_cxx_flags when +# building as part of the GEOS repository or on explicit request for +# developer compilation mode, as GEOS contributor. +# The flags are intended only for GEOS itself and are not part of +# usage requirements needed by GEOS consumers. +if(GEOS_BUILD_DEVELOPER) + target_link_libraries(geos_cxx_flags + INTERFACE + $) +endif() + +target_compile_definitions(geos_cxx_flags + INTERFACE + USE_UNSTABLE_GEOS_CPP_API) + +target_compile_definitions(geos_developer_cxx_flags + INTERFACE + $<$:_CRT_NONSTDC_NO_DEPRECATE> + $<$:_SCL_SECURE_NO_DEPRECATE> + $<$:_CRT_SECURE_NO_WARNINGS> + $<$:NOMINMAX>) + +target_compile_options(geos_developer_cxx_flags + INTERFACE + $<$:-W4> + $<$,$>:-pedantic -Wall -Wextra -Wno-long-long -Wcast-align -Wconversion -Wchar-subscripts -Wdouble-promotion -Wpointer-arith -Wformat -Wformat-security -Wshadow -Wuninitialized -Wunused-parameter -fno-common> + $<$:-fno-implicit-inline-templates>) + +# Disable TTMath ASM support on Windows due to build issues +if(WIN32) + target_compile_definitions(geos_cxx_flags + INTERFACE TTMATH_NOASM) +endif() + +#----------------------------------------------------------------------------- +# Define a coverage build +#----------------------------------------------------------------------------- +set(CMAKE_CXX_FLAGS_COVERAGE "-fprofile-arcs -ftest-coverage") + +#----------------------------------------------------------------------------- +# Target geos: C++ API library +#----------------------------------------------------------------------------- +add_library(geos "") +target_link_libraries(geos PUBLIC geos_cxx_flags) +add_subdirectory(include) +add_subdirectory(src) + +if(BUILD_SHARED_LIBS) + target_compile_definitions(geos + PRIVATE $<$:GEOS_DLL_EXPORT>) + + set_target_properties(geos PROPERTIES VERSION ${GEOS_VERSION}) + set_target_properties(geos PROPERTIES SOVERSION ${GEOS_VERSION}) +endif() + +#----------------------------------------------------------------------------- +# Target geos_c: C API library +#----------------------------------------------------------------------------- +add_library(geos_c "") +target_link_libraries(geos_c PRIVATE geos) + +if(BUILD_SHARED_LIBS) + target_compile_definitions(geos_c + PRIVATE $<$:GEOS_DLL_EXPORT>) + + set_target_properties(geos_c PROPERTIES VERSION ${CAPI_VERSION}) + if(NOT WIN32) + set_target_properties(geos_c PROPERTIES SOVERSION ${CAPI_VERSION_MAJOR}) + endif() endif() -include(GenerateSourceGroups) +add_subdirectory(capi) -# Enable target debugging for CMake Tools in Visual Studio Code -# https://github.com/vector-of-bool/vscode-cmake-tools -include(CMakeToolsHelpers OPTIONAL) +#----------------------------------------------------------------------------- +# Tests +#----------------------------------------------------------------------------- +include(CTest) +if(BUILD_TESTING) + add_subdirectory(tests) +endif() + +#----------------------------------------------------------------------------- +# Benchmarks +#----------------------------------------------------------------------------- +add_subdirectory(benchmarks) + +#----------------------------------------------------------------------------- +# Documentation/Examples +#----------------------------------------------------------------------------- +add_subdirectory(doc) + +#----------------------------------------------------------------------------- +# Install and export targets - support 'make install' or equivalent +#----------------------------------------------------------------------------- +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/geos-config-version.cmake" + VERSION ${GEOS_VERSION} + COMPATIBILITY AnyNewerVersion) + +configure_file(cmake/geos-config.cmake + "${CMAKE_CURRENT_BINARY_DIR}/geos-config.cmake" + COPYONLY) + +install(TARGETS geos geos_cxx_flags + EXPORT geos-targets + LIBRARY DESTINATION lib NAMELINK_SKIP + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin + INCLUDES DESTINATION include + ) + +install(TARGETS geos_c + EXPORT geos-targets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin + INCLUDES DESTINATION include + ) + +install(EXPORT geos-targets + FILE geos-targets.cmake + NAMESPACE GEOS:: + DESTINATION lib/cmake/GEOS) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/geos-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/geos-config-version.cmake" + DESTINATION lib/cmake/GEOS) +install(DIRECTORY + "${CMAKE_CURRENT_LIST_DIR}/include/geos" + "${CMAKE_CURRENT_BINARY_DIR}/include/geos" + DESTINATION include + FILES_MATCHING PATTERN "*.h") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/capi/geos_c.h" + DESTINATION include) -################################################################################# -# Configure subdirectories -################################################################################# -add_subdirectory(include) -add_subdirectory(src) -add_subdirectory(capi) -add_subdirectory(tests) add_subdirectory(tools) -################################################################################# -# Install/Uninstall -################################################################################# +#----------------------------------------------------------------------------- +# Uninstall +#----------------------------------------------------------------------------- configure_file("${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${PROJECT_BINARY_DIR}/cmake/cmake_uninstall.cmake" @@ -359,11 +325,56 @@ add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake/cmake_uninstall.cmake") -################################################################################# -# DEBUG settings - TODO: make a summary - -message(STATUS "CMake ${CMAKE_VERSION} successfully configured ${PROJECT_NAME} using ${CMAKE_GENERATOR} generator") +#----------------------------------------------------------------------------- +# "make dist" workalike +#----------------------------------------------------------------------------- +get_property(_is_multi_config_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(NOT _is_multi_config_generator) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GEOS Computational Geometry Library") + set(CPACK_PACKAGE_VENDOR "OSGeo") + set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_CURRENT_SOURCE_DIR}/README.md) + set(CPACK_SOURCE_GENERATOR "TBZ2") + set(CPACK_PACKAGE_VERSION_MAJOR ${GEOS_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${GEOS_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${GEOS_VERSION_PATCH}) + set(CPACK_SOURCE_PACKAGE_FILE_NAME "geos-${GEOS_VERSION_FULL}") + + set(CPACK_SOURCE_IGNORE_FILES + "/\\\\.git" + "/autogen\\\\.sh" + "/tools/ci" + "/HOWTO_RELEASE" + "/autom4te\\\\.cache" + "\\\\.yml\$" + "\\\\.deps" + "/debian/" + "/php/" + "/.*build-.*/" + ${PROJECT_BINARY_DIR} + ) + + # message(STATUS "GEOS: CPACK_SOURCE_PACKAGE_FILE_NAME: ${CPACK_SOURCE_PACKAGE_FILE_NAME}") + # message(STATUS "GEOS: CPACK_SOURCE_IGNORE_FILES: ${CPACK_SOURCE_IGNORE_FILES}") + # message(STATUS "GEOS: CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") + include(CPack) + add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) + + message(STATUS "GEOS: Configured 'dist' target") +endif() + +#----------------------------------------------------------------------------- +# "make check" workalike +#----------------------------------------------------------------------------- + +add_custom_target(check COMMAND ${CMAKE_BUILD_TOOL} test) + +#----------------------------------------------------------------------------- +# "make distcheck" workalike +#----------------------------------------------------------------------------- +if(NOT _is_multi_config_generator) + find_package(MakeDistCheck) + AddMakeDistCheck() + message(STATUS "GEOS: Configured 'distcheck' target") +endif() -#message(STATUS "XXX: CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}") -#message(STATUS "XXX: CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}") -#message(STATUS "XXX: CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}") +unset(_is_multi_config_generator) diff -Nru geos-3.7.1/compile geos-3.8.0/compile --- geos-3.7.1/compile 2018-11-29 23:05:16.000000000 +0000 +++ geos-3.8.0/compile 1970-01-01 00:00:00.000000000 +0000 @@ -1,348 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2018 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# 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 . - -# 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. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ - icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff -Nru geos-3.7.1/config.guess geos-3.8.0/config.guess --- geos-3.7.1/config.guess 2017-09-05 18:37:08.000000000 +0000 +++ geos-3.8.0/config.guess 2019-10-03 17:33:32.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2014-11-04' +timestamp='2013-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 @@ -24,12 +24,12 @@ # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# Originally written by Per Bothner. # # 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 # -# Please send patches to . +# Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2013 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." @@ -149,7 +149,7 @@ LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac @@ -579,9 +579,8 @@ else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi @@ -827,7 +826,7 @@ *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - *:MSYS*:*) + i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -970,10 +969,10 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) + or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1261,26 +1260,16 @@ if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - 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 - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi + 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 + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; @@ -1372,6 +1361,154 @@ exit ;; esac +eval $set_cc_for_build +cat >$dummy.c < +# include +#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 + 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 +# 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 <. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -68,7 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2013 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." @@ -257,7 +257,7 @@ | avr | avr32 \ | be32 | be64 \ | bfin \ - | c4x | c8051 | clipper \ + | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ @@ -265,7 +265,6 @@ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ - | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -283,10 +282,8 @@ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -298,11 +295,11 @@ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ + | open8 \ + | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ - | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ @@ -313,7 +310,6 @@ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) @@ -328,10 +324,7 @@ c6x) basic_machine=tic6x-unknown ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -379,7 +372,7 @@ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ + | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -388,7 +381,6 @@ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ - | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ @@ -408,10 +400,8 @@ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -423,7 +413,6 @@ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ - | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ @@ -441,7 +430,6 @@ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ - | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -779,9 +767,6 @@ basic_machine=m68k-isi os=-sysv ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; m68knommu) basic_machine=m68k-unknown os=-linux @@ -809,7 +794,7 @@ os=-mingw64 ;; mingw32) - basic_machine=i686-pc + basic_machine=i386-pc os=-mingw32 ;; mingw32ce) @@ -837,10 +822,6 @@ basic_machine=powerpc-unknown os=-morphos ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; msdos) basic_machine=i386-pc os=-msdos @@ -849,7 +830,7 @@ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i686-pc + basic_machine=i386-pc os=-msys ;; mvs) @@ -1025,7 +1006,7 @@ ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown @@ -1386,14 +1367,14 @@ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -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* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1565,9 +1546,6 @@ c4x-* | tic4x-*) os=-coff ;; - c8051-*) - os=-elf - ;; hexagon-*) os=-elf ;; @@ -1611,6 +1589,9 @@ mips*-*) os=-elf ;; + or1k-*) + os=-elf + ;; or32-*) os=-coff ;; diff -Nru geos-3.7.1/configure geos-3.8.0/configure --- geos-3.7.1/configure 2018-11-29 23:05:20.000000000 +0000 +++ geos-3.8.0/configure 2019-10-10 17:21:13.000000000 +0000 @@ -640,9 +640,6 @@ CAPI_VERSION_MAJOR CAPI_VERSION JTS_PORT -INTERFACE_AGE -INTERFACE_REVISION -INTERFACE_CURRENT VERSION_RELEASE VERSION_PATCH VERSION_MINOR @@ -695,7 +692,6 @@ CXXFLAGS CXX CPP -LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO @@ -718,6 +714,7 @@ OBJDUMP DLLTOOL AS +DOXYGEN_LOGFILE am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -725,6 +722,7 @@ AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE +am__quote am__include DEPDIR OBJEXT @@ -813,8 +811,7 @@ PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR -SHELL -am__quote' +SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking @@ -825,7 +822,6 @@ enable_static with_pic enable_fast_install -with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock @@ -843,7 +839,6 @@ LDFLAGS LIBS CPPFLAGS -LT_SYS_LIBRARY_PATH CPP CXX CXXFLAGS @@ -1492,12 +1487,9 @@ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. --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). + --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 @@ -1507,8 +1499,6 @@ LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags @@ -2612,24 +2602,36 @@ -JTS_PORT=1.13.0 +VERTXT=${srcdir}/Version.txt +VERSION_MAJOR=`cat $VERTXT | awk -F= '/^GEOS_VERSION_MAJOR/ {print $2}'` +VERSION_MINOR=`cat $VERTXT | awk -F= '/^GEOS_VERSION_MINOR/ {print $2}'` +VERSION_PATCH=`cat $VERTXT | awk -F= '/^GEOS_VERSION_PATCH/ {print $2}'` +PATCH_WORD=`cat $VERTXT | awk -F= '/^GEOS_PATCH_WORD/ {print $2}'` -CAPI_INTERFACE_CURRENT=12 -CAPI_INTERFACE_REVISION=1 -CAPI_INTERFACE_AGE=11 - -VERSION_MAJOR=3 -VERSION_MINOR=7 -VERSION_PATCH=1 +VERSION_PATCH=${VERSION_PATCH}${PATCH_WORD} VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" VERSION_RELEASE=`echo "$VERSION" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+).*$/\1/'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GEOS version" >&5 +$as_echo_n "checking for GEOS version... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$VERSION\"" >&5 +$as_echo "\"$VERSION\"" >&6; } + +CAPI_INTERFACE_CURRENT=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_CURRENT/ {print $2}'` +CAPI_INTERFACE_REVISION=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_REVISION/ {print $2}'` +CAPI_INTERFACE_AGE=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_AGE/ {print $2}'` + CAPI_VERSION_MAJOR=`expr $CAPI_INTERFACE_CURRENT - $CAPI_INTERFACE_AGE` CAPI_VERSION_MINOR=$CAPI_INTERFACE_AGE CAPI_VERSION_PATCH=$CAPI_INTERFACE_REVISION CAPI_VERSION="$CAPI_VERSION_MAJOR.$CAPI_VERSION_MINOR.$CAPI_VERSION_PATCH" -am__api_version='1.16' +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GEOS CAPI version" >&5 +$as_echo_n "checking for GEOS CAPI version... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$CAPI_VERSION\"" >&5 +$as_echo "\"$CAPI_VERSION\"" >&6; } + +am__api_version='1.13' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -2801,8 +2803,8 @@ 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` +# 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 @@ -2821,7 +2823,7 @@ $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh+set}" != xset; then +if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -3137,12 +3139,12 @@ # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: -# -# +# +# mkdir_p='$(MKDIR_P)' -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' @@ -3158,48 +3160,6 @@ -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } @@ -3223,7 +3183,46 @@ MAINT=$MAINTAINER_MODE_TRUE -ac_config_headers="$ac_config_headers include/config.h include/geos/platform.h" +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +ac_config_headers="$ac_config_headers include/config.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -4013,108 +4012,49 @@ 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 whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -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 - DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } -cat > confinc.mk << 'END' + +am_make=${MAKE-make} +cat > confinc << 'END' am__doit: - @echo this is the am__doit target >confinc.out + @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= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 - (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - case $?:`cat confinc.out 2>/dev/null` in #( - '0:this is the am__doit target') : - case $s in #( - BSD) : - am__include='.include' am__quote='"' ;; #( - *) : - am__include='include' am__quote='' ;; -esac ;; #( - *) : +_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 - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } + 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 : @@ -4265,6 +4205,13 @@ +ac_config_links="$ac_config_links tools/astyle.sh:tools/astyle.sh" + + +JTS_PORT=`cat $VERTXT | awk -F= '/^JTS_PORT/ {print $2}'` + +DOXYGEN_LOGFILE= + $as_echo "#define USE_UNSTABLE_GEOS_CPP_API 1" >>confdefs.h @@ -4585,8 +4532,8 @@ -macro_version='2.4.6' -macro_revision='2.4.6' +macro_version='2.4.2' +macro_revision='1.3337' @@ -4600,7 +4547,7 @@ -ltmain=$ac_aux_dir/ltmain.sh +ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. @@ -4649,7 +4596,7 @@ $ECHO "" } -case $ECHO in +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 @@ -4972,19 +4919,19 @@ # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test yes = "$GCC"; then +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 + # 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` ;; @@ -4998,7 +4945,7 @@ 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 + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -5009,7 +4956,7 @@ with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +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 @@ -5020,32 +4967,32 @@ $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + 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 + 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 &5 $as_echo "$LD" >&6; } @@ -5088,38 +5035,33 @@ else if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM=$NM + lt_cv_path_NM="$NM" else - lt_nm_to_check=${ac_tool_prefix}nm + 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 + 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 + 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 + 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: + # 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 - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) + 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 2 + break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break 2 + break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -5130,15 +5072,15 @@ esac fi done - IFS=$lt_save_ifs + 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 no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM +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 : @@ -5244,9 +5186,9 @@ fi fi - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" + DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: @@ -5254,8 +5196,8 @@ esac fi - if test : != "$DUMPBIN"; then - NM=$DUMPBIN + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm @@ -5306,7 +5248,7 @@ $as_echo_n "(cached) " >&6 else i=0 - teststring=ABCD + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -5346,7 +5288,7 @@ lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + 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` @@ -5396,23 +5338,22 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + 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 + 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`env echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough + test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -5430,7 +5371,7 @@ fi -if test -n "$lt_cv_sys_max_cmd_len"; then +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 @@ -5448,6 +5389,30 @@ : ${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 @@ -5570,13 +5535,13 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then + if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + 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 @@ -5701,13 +5666,13 @@ # 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. +# `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 -# that 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. +# 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]*) @@ -5734,7 +5699,8 @@ # 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 + # 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 @@ -5770,6 +5736,10 @@ fi ;; +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -5808,7 +5778,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -5830,8 +5800,8 @@ lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then +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)$' @@ -5884,9 +5854,6 @@ tpf*) lt_cv_deplibs_check_method=pass_all ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; esac fi @@ -6041,8 +6008,8 @@ case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL + # 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 @@ -6054,7 +6021,7 @@ ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO + lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac @@ -6209,7 +6176,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test 0 -eq "$ac_status"; then + 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 @@ -6217,7 +6184,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test 0 -ne "$ac_status"; then + if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi @@ -6230,7 +6197,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } -if test no = "$lt_cv_ar_at_file"; then +if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -6447,7 +6414,7 @@ if test -n "$RANLIB"; then case $host_os in - bitrig* | openbsd*) + openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -6537,7 +6504,7 @@ symcode='[ABCDGISTW]' ;; hpux*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; @@ -6570,44 +6537,14 @@ symcode='[ABCDGIRSTW]' ;; esac -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - # 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"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" +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"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" +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= @@ -6625,24 +6562,21 @@ # 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, - # D for any global variable and I for any imported variable. + # 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" {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'" @@ -6690,11 +6624,11 @@ 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 can't be const, because runtime +#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__ +#elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else @@ -6720,7 +6654,7 @@ { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -6740,13 +6674,13 @@ mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext + 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 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -6767,7 +6701,7 @@ rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then + if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= @@ -6820,16 +6754,6 @@ - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } @@ -6842,9 +6766,9 @@ lt_sysroot= -case $with_sysroot in #( +case ${with_sysroot} in #( yes) - if test yes = "$GCC"; then + if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -6854,8 +6778,8 @@ no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { $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 @@ -6867,99 +6791,18 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_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 dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi -test no = "$enable_libtool_lock" || enable_libtool_lock=yes +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 what ABI is being produced by ac_compile, and set mode - # options accordingly. + # 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 @@ -6968,25 +6811,24 @@ test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE=32 + HPUX_IA64_MODE="32" ;; *ELF-64*) - HPUX_IA64_MODE=64 + HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # 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 yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -7015,50 +6857,9 @@ rm -rf conftest* ;; -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - 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 - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. + # 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 @@ -7072,19 +6873,9 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac + LD="${LD-ld} -m elf_i386" ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) + ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -7103,10 +6894,7 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) + ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -7124,7 +6912,7 @@ *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS + 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; } @@ -7164,14 +6952,13 @@ 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 yes != "$lt_cv_cc_needs_belf"; then + 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 + CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # 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 @@ -7183,7 +6970,7 @@ case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*|x86_64-*-solaris*) + i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -7192,7 +6979,7 @@ esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 + LD="${LD-ld}_sol2" fi ;; *) @@ -7208,7 +6995,7 @@ ;; esac -need_locks=$enable_libtool_lock +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. @@ -7319,7 +7106,7 @@ 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 yes != "$lt_cv_path_mainfest_tool"; then +if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi @@ -7822,7 +7609,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then + 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 @@ -7840,7 +7627,7 @@ cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -7879,7 +7666,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 @@ -7908,7 +7695,7 @@ _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -7921,32 +7708,32 @@ $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _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' ;; + _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' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test yes = "$lt_cv_apple_cc_single_mod"; then + if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + 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' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -7954,41 +7741,6 @@ ;; esac -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8288,14 +8040,14 @@ *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8319,14 +8071,14 @@ *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8350,14 +8102,14 @@ *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8365,6 +8117,8 @@ fi +test -z "$pic_mode" && pic_mode=default + @@ -8380,14 +8134,14 @@ *) 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, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac else @@ -8401,63 +8155,11 @@ - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - # This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain +LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -8506,7 +8208,7 @@ -if test -n "${ZSH_VERSION+set}"; then +if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi @@ -8545,7 +8247,7 @@ # 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 set != "${COLLECT_NAMES+set}"; then + if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -8556,14 +8258,14 @@ ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, +# 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 +with_gnu_ld="$lt_cv_prog_gnu_ld" -old_CC=$CC -old_CFLAGS=$CFLAGS +old_CC="$CC" +old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -8572,8 +8274,15 @@ test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o -func_cc_basename $compiler -cc_basename=$func_cc_basename_result +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 @@ -8588,22 +8297,22 @@ else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + 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 + 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 + 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 -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 + 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 : @@ -8626,13 +8335,13 @@ break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +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; } @@ -8654,22 +8363,22 @@ else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + 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 + 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 + 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 -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 + 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 : @@ -8692,13 +8401,13 @@ break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +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; } @@ -8719,7 +8428,7 @@ # Use C for the default configuration in the libtool script -lt_save_CC=$CC +lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8781,7 +8490,7 @@ lt_prog_compiler_no_builtin_flag= -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; @@ -8797,7 +8506,7 @@ 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" ## exclude from sc_useless_quotes_in_assignment + 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 @@ -8827,7 +8536,7 @@ { $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 yes = "$lt_cv_prog_compiler_rtti_exceptions"; then +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 : @@ -8845,18 +8554,17 @@ lt_prog_compiler_static= - if test yes = "$GCC"; then + 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 ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi - lt_prog_compiler_pic='-fPIC' ;; amigaos*) @@ -8867,8 +8575,8 @@ ;; 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'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -8884,11 +8592,6 @@ # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac ;; darwin* | rhapsody*) @@ -8959,7 +8662,7 @@ case $host_os in aix*) lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -8967,29 +8670,10 @@ fi ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - 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' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac ;; hpux9* | hpux10* | hpux11*) @@ -9005,7 +8689,7 @@ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' + lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -9014,9 +8698,9 @@ lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. + # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' @@ -9041,12 +8725,6 @@ lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -9144,7 +8822,7 @@ ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi @@ -9173,7 +8851,7 @@ fi case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; @@ -9205,7 +8883,7 @@ 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" ## exclude from sc_useless_quotes_in_assignment + 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 @@ -9235,7 +8913,7 @@ { $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 yes = "$lt_cv_prog_compiler_pic_works"; then +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" ;; @@ -9267,7 +8945,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS + 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 @@ -9286,13 +8964,13 @@ fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + 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 yes = "$lt_cv_prog_compiler_static_works"; then +if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= @@ -9412,8 +9090,8 @@ -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then +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; } @@ -9425,9 +9103,9 @@ 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 no = "$hard_links"; 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;} + 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 @@ -9470,9 +9148,9 @@ # 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'. + # 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 @@ -9487,7 +9165,7 @@ # 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 yes != "$GCC"; then + if test "$GCC" != yes; then with_gnu_ld=no fi ;; @@ -9495,7 +9173,7 @@ # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd* | bitrig*) + openbsd*) with_gnu_ld=no ;; esac @@ -9505,7 +9183,7 @@ # 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 yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -9527,24 +9205,24 @@ esac fi - if test yes = "$lt_use_gnu_ld_interface"; then + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' + 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' + 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' + 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 | $SED -e 's/(^)\+)\s\+//' 2>&1` in + 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 ... @@ -9557,7 +9235,7 @@ case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then + if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -9576,7 +9254,7 @@ 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_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -9592,7 +9270,7 @@ allow_undefined_flag=unsupported # Joseph Beckenbach 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' + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi @@ -9602,7 +9280,7 @@ # _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' + export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -9610,89 +9288,61 @@ 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, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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' + 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' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' + 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' + 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 linux-dietlibc = "$host_os"; then + 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 no = "$tmp_diet" + && 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' + 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' + 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' ;; @@ -9703,47 +9353,42 @@ lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-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' + 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' + 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' + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + 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' + 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 - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; 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='$wl-rpath $wl$libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then + 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' + 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 @@ -9757,8 +9402,8 @@ 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' + 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 ;; @@ -9776,8 +9421,8 @@ _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' + 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 @@ -9789,7 +9434,7 @@ ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** 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 @@ -9804,9 +9449,9 @@ # 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' + 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 @@ -9823,15 +9468,15 @@ *) 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' + 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 no = "$ld_shlibs"; then + if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= @@ -9847,7 +9492,7 @@ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + 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 @@ -9855,57 +9500,34 @@ ;; aix[4-9]*) - if test ia64 = "$host_cpu"; then + 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= + no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. + # -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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + 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='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive + # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi ;; esac @@ -9924,21 +9546,13 @@ hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac + file_list_spec='${wl}-f,' - if test yes = "$GCC"; then + 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` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -9957,42 +9571,35 @@ ;; esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' else # not using gcc - if test ia64 = "$host_cpu"; then + 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec='$wl-bexpall' + 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + 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 set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10027,7 +9634,7 @@ 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 + lt_cv_aix_libpath_="/usr/lib:/lib" fi fi @@ -10035,17 +9642,17 @@ 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + 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 ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + 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" + 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 set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10080,7 +9687,7 @@ 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 + lt_cv_aix_libpath_="/usr/lib:/lib" fi fi @@ -10088,33 +9695,21 @@ aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + 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 yes = "$with_gnu_ld"; then + 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' + 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 - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + # 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 ;; @@ -10123,7 +9718,7 @@ 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_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -10153,17 +9748,16 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $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=' + 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 @@ -10172,18 +9766,18 @@ # 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' + 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 @@ -10192,7 +9786,7 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + 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. @@ -10211,24 +9805,24 @@ hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; 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\"`' + 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 + allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + 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" + 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 @@ -10270,33 +9864,33 @@ ;; hpux9*) - if test yes = "$GCC"; 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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_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' + export_dynamic_flag_spec='${wl}-E' ;; hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + 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 no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' + 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 @@ -10304,25 +9898,25 @@ ;; hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then + 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' + 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}+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' + 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' + 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}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) @@ -10334,7 +9928,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS + 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 @@ -10353,14 +9947,14 @@ fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + 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 yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +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 @@ -10368,8 +9962,8 @@ ;; esac fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in @@ -10380,7 +9974,7 @@ *) hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' + export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -10391,8 +9985,8 @@ ;; irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; 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' + 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. @@ -10402,8 +9996,8 @@ 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" + 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; } @@ -10415,34 +10009,24 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS + 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 yes = "$lt_cv_irix_exported_symbol"; 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' + 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' + 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_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -10457,7 +10041,7 @@ 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_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -10465,19 +10049,27 @@ *nto* | *qnx*) ;; - openbsd* | bitrig*) + 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__`"; then + 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' + 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 - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' + 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 @@ -10488,53 +10080,33 @@ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes + 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 yes = "$GCC"; 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' + 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' + 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_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; 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' + 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_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' + $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' @@ -10545,24 +10117,24 @@ solaris*) no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + 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' + $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_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' + $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' + 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' + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -10572,11 +10144,11 @@ 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 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 yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + 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 @@ -10586,10 +10158,10 @@ ;; sunos4*) - if test sequent = "$host_vendor"; then + 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' + 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 @@ -10638,43 +10210,43 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' + no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; 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' + 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' + 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 CANNOT use -z defs as we might desire, because we do not + # 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' + 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_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' + export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; 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' + 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' + 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 ;; @@ -10689,10 +10261,10 @@ ;; esac - if test sni = "$host_vendor"; then + if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' + export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi @@ -10700,7 +10272,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no +test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -10726,7 +10298,7 @@ # Assume -lc should be added archive_cmds_need_lc=yes - if test yes,yes = "$GCC,$enable_shared"; then + if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -10941,14 +10513,14 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; + 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' ;; + 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 @@ -10964,35 +10536,28 @@ ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... + # 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` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac + 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" - elif test -n "$lt_multi_os_dir"; then + 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; +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; + lt_foo="/" $lt_i lt_foo; } else { lt_count--; } @@ -11006,7 +10571,7 @@ # 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'` ;; + $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -11015,7 +10580,7 @@ library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -11032,16 +10597,14 @@ # flags to be left without arguments need_version=unknown - - case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + 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' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) @@ -11049,91 +10612,41 @@ need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + 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' + 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 + # 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 + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # 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. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.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' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' + 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' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi shlibpath_var=LIBPATH fi ;; @@ -11143,18 +10656,18 @@ 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' + 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%'\''`; $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' + 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' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -11162,8 +10675,8 @@ bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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" @@ -11175,7 +10688,7 @@ cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -11184,8 +10697,8 @@ # 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'\''`~ + 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~ @@ -11201,17 +10714,17 @@ 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' + 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' + 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' + 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' @@ -11220,8 +10733,8 @@ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -11248,7 +10761,7 @@ 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 + 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'` @@ -11261,8 +10774,8 @@ 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'\''`~ + 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' @@ -11275,7 +10788,7 @@ *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -11288,8 +10801,8 @@ 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' + 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`' @@ -11302,8 +10815,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 ;; @@ -11321,13 +10834,12 @@ version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -11352,15 +10864,26 @@ esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 # correct to gnu/linux during the next big refactor 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' + 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=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -11378,15 +10901,14 @@ 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 32 = "$HPUX_IA64_MODE"; then + 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" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -11394,8 +10916,8 @@ 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' + 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 ;; @@ -11404,8 +10926,8 @@ 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' + 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, ... @@ -11418,8 +10940,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -11430,7 +10952,7 @@ case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -11438,8 +10960,8 @@ 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' + 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= @@ -11458,8 +10980,8 @@ 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" + 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 ;; @@ -11468,33 +10990,13 @@ dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # 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 - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -11538,15 +11040,14 @@ # before this can be enabled. hardcode_into_libs=yes - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # 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" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -11563,12 +11064,12 @@ 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' + 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' + 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 @@ -11578,7 +11079,7 @@ newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 ;; @@ -11587,68 +11088,58 @@ 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' + 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* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # 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 - shlibpath_overrides_runpath=yes + 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' - version_type=windows - shrext_cmds=.dll - need_version=no + shrext_cmds=".dll" need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - 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_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' + 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 + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -11659,8 +11150,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -11670,11 +11161,11 @@ sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + 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 yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -11682,8 +11173,8 @@ sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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) @@ -11704,24 +11195,24 @@ ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + 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=sco + 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' + 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 yes = "$with_gnu_ld"; then + 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' @@ -11739,7 +11230,7 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 @@ -11747,8 +11238,8 @@ uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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 ;; @@ -11758,35 +11249,20 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +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 set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +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 -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - @@ -11883,15 +11359,15 @@ hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then + test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && + 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else @@ -11906,12 +11382,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -11921,7 +11397,7 @@ - if test yes != "$enable_dlopen"; then + if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -11931,23 +11407,23 @@ case $host_os in beos*) - lt_cv_dlopen=load_add_on + 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="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen=dlopen + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # 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 : @@ -11985,10 +11461,10 @@ { $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 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - lt_cv_dlopen=dyld + lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes @@ -11996,18 +11472,10 @@ ;; - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - *) 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 + 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; } @@ -12046,11 +11514,11 @@ { $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 + 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 + 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; } @@ -12089,7 +11557,7 @@ { $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 + 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; } @@ -12128,7 +11596,7 @@ { $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 + 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; } @@ -12167,7 +11635,7 @@ { $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 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -12188,21 +11656,21 @@ ;; esac - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else + 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 yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS=$LIBS + save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 @@ -12210,7 +11678,7 @@ if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else - if test yes = "$cross_compiling"; then : + if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12257,9 +11725,9 @@ # endif #endif -/* When -fvisibility=hidden is used, assume the code has been annotated +/* 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)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12289,7 +11757,7 @@ (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 + 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 @@ -12309,14 +11777,14 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } - if test yes = "$lt_cv_dlopen_self"; then + 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 yes = "$cross_compiling"; then : + if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12363,9 +11831,9 @@ # endif #endif -/* When -fvisibility=hidden is used, assume the code has been annotated +/* 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)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12395,7 +11863,7 @@ (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 + 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 @@ -12416,9 +11884,9 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; } fi - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" ;; esac @@ -12462,7 +11930,7 @@ # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP"; then + if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -12490,7 +11958,7 @@ - # Report what library types will actually be built + # 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 @@ -12498,13 +11966,13 @@ { $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 no = "$can_build_shared" && enable_shared=no + 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 yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -12512,12 +11980,8 @@ ;; aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -12527,7 +11991,7 @@ { $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 yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } @@ -12541,7 +12005,7 @@ 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 +CC="$lt_save_CC" @@ -12955,15 +12419,15 @@ 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\$%%"`;; + 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 no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then + 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' @@ -13142,7 +12606,7 @@ # 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 yes != "$_lt_caught_CXX_error"; then +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;" @@ -13203,39 +12667,46 @@ CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC - func_cc_basename $compiler -cc_basename=$func_cc_basename_result + 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 yes = "$GXX"; then + 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 yes = "$GXX"; then + 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 no = "$withval" || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test yes = "$GCC"; then +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 + # 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` ;; @@ -13249,7 +12720,7 @@ 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 + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -13260,7 +12731,7 @@ with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +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 @@ -13271,32 +12742,32 @@ $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + 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 + 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 &5 $as_echo "$LD" >&6; } @@ -13332,22 +12803,22 @@ # 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 yes = "$with_gnu_ld"; 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' + 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' + 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' + 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' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi @@ -13384,30 +12855,18 @@ ld_shlibs_CXX=no ;; aix[4-9]*) - if test ia64 = "$host_cpu"; then + 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= + 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive + # 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 @@ -13417,13 +12876,6 @@ ;; esac done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi ;; esac @@ -13442,21 +12894,13 @@ hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - file_list_spec_CXX='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct_CXX=no - hardcode_direct_absolute_CXX=no - ;; - esac + file_list_spec_CXX='${wl}-f,' - if test yes = "$GXX"; then + 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` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -13474,44 +12918,36 @@ fi esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' else # not using gcc - if test ia64 = "$host_cpu"; then + 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec_CXX='$wl-bexpall' + 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + 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. - # The "-G" linker flag allows undefined symbols. - no_undefined_flag_CXX='-bernotok' + allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. - if test set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -13546,7 +12982,7 @@ 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 + lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi @@ -13554,18 +12990,18 @@ aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + 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 ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + 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" + 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 set = "${lt_cv_aix_libpath+set}"; then + if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -13600,7 +13036,7 @@ 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 + lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi @@ -13608,34 +13044,22 @@ aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + 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 yes = "$with_gnu_ld"; then + 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' + 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 - archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + # 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 ;; @@ -13645,7 +13069,7 @@ allow_undefined_flag_CXX=unsupported # Joseph Beckenbach 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' + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi @@ -13673,58 +13097,57 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $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=' + 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' + 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' + 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, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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' + 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 @@ -13738,27 +13161,27 @@ hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - if test yes = "$lt_cv_ld_force_load"; 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\"`' + 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 + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + 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 yes != "$lt_cv_apple_cc_single_mod"; 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" + 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 @@ -13767,34 +13190,6 @@ ;; - os2*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_minus_L_CXX=yes - allow_undefined_flag_CXX=unsupported - shrext_cmds=.dll - archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes_CXX=yes - ;; - dgux*) case $cc_basename in ec++*) @@ -13829,15 +13224,18 @@ ld_shlibs_CXX=yes ;; + gnu*) + ;; + haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + 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_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='$wl-E' + 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 @@ -13849,7 +13247,7 @@ 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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. @@ -13858,11 +13256,11 @@ # 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"' + 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 yes = "$GXX"; 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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 @@ -13872,15 +13270,15 @@ ;; hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + 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' + export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi @@ -13906,13 +13304,13 @@ 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' + 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}+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' + 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 @@ -13923,20 +13321,20 @@ # 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"' + 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 yes = "$GXX"; then - if test no = "$with_gnu_ld"; then + 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' + 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}+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' + 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 @@ -13951,22 +13349,22 @@ 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' + 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' + 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' + 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 @@ -13975,22 +13373,22 @@ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; 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' + 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' + 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_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -13998,8 +13396,8 @@ # 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' + 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. @@ -14008,10 +13406,10 @@ # 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"' + 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' + 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. @@ -14025,59 +13423,59 @@ # 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' + 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' + 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' + 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`"' + 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' + 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' + 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' + 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' + 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' + 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' + 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' @@ -14091,18 +13489,18 @@ # 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' + 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 yes = "$supports_anon_versioning"; then + 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' + 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 ;; *) @@ -14110,10 +13508,10 @@ *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' + 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' + 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 @@ -14171,17 +13569,22 @@ ld_shlibs_CXX=yes ;; - openbsd* | bitrig*) + 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__`"; 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' + 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 @@ -14197,9 +13600,9 @@ # 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_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_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using @@ -14217,17 +13620,17 @@ 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=' ${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_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' + 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 @@ -14242,21 +13645,21 @@ # 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"' + 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 yes,no = "$GXX,$with_gnu_ld"; then - allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + 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 -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' + 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_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists @@ -14302,9 +13705,9 @@ # 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_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' + $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 @@ -14312,7 +13715,7 @@ solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. + # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; @@ -14329,30 +13732,30 @@ ;; gcx*) # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + 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 yes,no = "$GXX,$with_gnu_ld"; then - no_undefined_flag_CXX=' $wl-z ${wl}defs' + 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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + 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 $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $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 + # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. - archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + 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 $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $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 @@ -14360,11 +13763,11 @@ 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' + 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' + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi @@ -14373,52 +13776,52 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='$wl-z,text' + 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 -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' + 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 CANNOT use -z defs as we might desire, because we do not + # 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' + 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_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='$wl-Bexport' + 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' + 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" + '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" + '"$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' + 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 ;; @@ -14450,10 +13853,10 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } - test no = "$ld_shlibs_CXX" && can_build_shared=no + test "$ld_shlibs_CXX" = no && can_build_shared=no - GCC_CXX=$GXX - LD_CXX=$LD + GCC_CXX="$GXX" + LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -14497,13 +13900,13 @@ pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test $p = "-L" || + test $p = "-R"; then prev=$p continue fi @@ -14519,16 +13922,16 @@ case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test no = "$pre_test_object_deps_done"; then - case $prev in + 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 + compiler_lib_search_path_CXX="${prev}${p}" else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being @@ -14536,9 +13939,9 @@ esac else if test -z "$postdeps_CXX"; then - postdeps_CXX=$prev$p + postdeps_CXX="${prev}${p}" else - postdeps_CXX="${postdeps_CXX} $prev$p" + postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= @@ -14553,15 +13956,15 @@ continue fi - if test no = "$pre_test_object_deps_done"; then + if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then - predep_objects_CXX=$p + 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 + postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi @@ -14591,6 +13994,51 @@ 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 @@ -14599,7 +14047,7 @@ 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!^ !!'` + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi @@ -14638,18 +14086,17 @@ # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then + 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 ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi - lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) @@ -14660,8 +14107,8 @@ ;; 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'. + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -14676,11 +14123,6 @@ # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static_CXX='$wl-static' - ;; - esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -14730,7 +14172,7 @@ case $host_os in aix[4-9]*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else @@ -14770,14 +14212,14 @@ case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then + 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' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -14806,7 +14248,7 @@ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -14814,7 +14256,7 @@ lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. + # 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' @@ -14959,7 +14401,7 @@ fi case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; @@ -14991,7 +14433,7 @@ 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" ## exclude from sc_useless_quotes_in_assignment + 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 @@ -15021,7 +14463,7 @@ { $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 yes = "$lt_cv_prog_compiler_pic_works_CXX"; then +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" ;; @@ -15047,7 +14489,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS=$LDFLAGS + 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 @@ -15066,13 +14508,13 @@ fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + 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 yes = "$lt_cv_prog_compiler_static_works_CXX"; then +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= @@ -15186,8 +14628,8 @@ -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then +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; } @@ -15199,9 +14641,9 @@ 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 no = "$hard_links"; 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;} + 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 @@ -15218,21 +14660,17 @@ 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 GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. + # -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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + 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='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + 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 + export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -15252,7 +14690,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } -test no = "$ld_shlibs_CXX" && can_build_shared=no +test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld @@ -15269,7 +14707,7 @@ # Assume -lc should be added archive_cmds_need_lc_CXX=yes - if test yes,yes = "$GCC,$enable_shared"; then + if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -15397,7 +14835,7 @@ library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -15414,16 +14852,14 @@ # flags to be left without arguments need_version=unknown - - case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + 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' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) @@ -15431,91 +14867,41 @@ need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + 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' + 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 + # 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 + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # 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. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.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' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' + 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' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi shlibpath_var=LIBPATH fi ;; @@ -15525,18 +14911,18 @@ 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' + 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%'\''`; $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' + 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' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -15544,8 +14930,8 @@ bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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" @@ -15557,7 +14943,7 @@ cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -15566,8 +14952,8 @@ # 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'\''`~ + 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~ @@ -15583,16 +14969,16 @@ 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' + 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' + 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' + 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' @@ -15601,8 +14987,8 @@ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -15629,7 +15015,7 @@ 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 + 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'` @@ -15642,8 +15028,8 @@ 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'\''`~ + 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' @@ -15656,7 +15042,7 @@ *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -15669,8 +15055,8 @@ 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' + 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`' @@ -15682,8 +15068,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 ;; @@ -15701,13 +15087,12 @@ version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -15732,15 +15117,26 @@ esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 # correct to gnu/linux during the next big refactor 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' + 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=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -15758,15 +15154,14 @@ 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 32 = "$HPUX_IA64_MODE"; then + 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" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -15774,8 +15169,8 @@ 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' + 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 ;; @@ -15784,8 +15179,8 @@ 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' + 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, ... @@ -15798,8 +15193,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -15810,7 +15205,7 @@ case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -15818,8 +15213,8 @@ 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' + 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= @@ -15838,8 +15233,8 @@ 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" + 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 ;; @@ -15848,33 +15243,13 @@ dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # 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 - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -15918,15 +15293,14 @@ # before this can be enabled. hardcode_into_libs=yes - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # 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" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -15943,12 +15317,12 @@ 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' + 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' + 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 @@ -15958,7 +15332,7 @@ newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 ;; @@ -15967,68 +15341,58 @@ 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' + 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* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # 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 - shlibpath_overrides_runpath=yes + 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' - version_type=windows - shrext_cmds=.dll - need_version=no + shrext_cmds=".dll" need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - 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_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' + 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 + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -16039,8 +15403,8 @@ version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -16050,11 +15414,11 @@ sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + 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 yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -16062,8 +15426,8 @@ sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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) @@ -16084,24 +15448,24 @@ ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + 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=sco + 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' + 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 yes = "$with_gnu_ld"; then + 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' @@ -16119,7 +15483,7 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 @@ -16127,8 +15491,8 @@ uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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 ;; @@ -16138,32 +15502,20 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +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 set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +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 -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - @@ -16206,15 +15558,15 @@ hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || - test yes = "$hardcode_automatic_CXX"; then + test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$hardcode_direct_CXX" && + 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && - test no != "$hardcode_minus_L_CXX"; then + ## 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 @@ -16229,12 +15581,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } -if test relink = "$hardcode_action_CXX" || - test yes = "$inherit_rpath_CXX"; then +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -16257,7 +15609,7 @@ 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 yes != "$_lt_caught_CXX_error" +fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -18236,7 +17588,7 @@ dummy_cv_pedantic=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-pedantic" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="-pedantic" # 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 @@ -18266,7 +17618,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_pedantic" >&5 $as_echo "$dummy_cv_pedantic" >&6; } -if test yes = "$dummy_cv_pedantic"; then +if test x"$dummy_cv_pedantic" = xyes; then WARNFLAGS="$WARNFLAGS -pedantic" else : @@ -18280,7 +17632,7 @@ dummy_cv_wall=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-Wall" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="-Wall" # 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 @@ -18310,7 +17662,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_wall" >&5 $as_echo "$dummy_cv_wall" >&6; } -if test yes = "$dummy_cv_wall"; then +if test x"$dummy_cv_wall" = xyes; then WARNFLAGS="$WARNFLAGS -Wall" else : @@ -18324,7 +17676,7 @@ dummy_cv_wno_long_long=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-Wno-long-long" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="-Wno-long-long" # 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 @@ -18354,7 +17706,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_wno_long_long" >&5 $as_echo "$dummy_cv_wno_long_long" >&6; } -if test yes = "$dummy_cv_wno_long_long"; then +if test x"$dummy_cv_wno_long_long" = xyes; then WARNFLAGS="$WARNFLAGS -Wno-long-long" else : @@ -18371,7 +17723,7 @@ dummy_cv_ffloat_store=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-ffloat-store" ## exclude from sc_useless_quotes_in_assignment + lt_compiler_flag="-ffloat-store" # 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 @@ -18401,7 +17753,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_ffloat_store" >&5 $as_echo "$dummy_cv_ffloat_store" >&6; } -if test yes = "$dummy_cv_ffloat_store"; then +if test x"$dummy_cv_ffloat_store" = xyes; then NUMERICFLAGS="$NUMERICFLAGS -ffloat-store" else : @@ -19438,10 +18790,7 @@ - - - -ac_config_files="$ac_config_files Makefile capi/Makefile capi/geos_c.h doc/Doxyfile doc/Makefile macros/Makefile src/Makefile src/algorithm/Makefile src/algorithm/locate/Makefile src/algorithm/distance/Makefile src/geom/Makefile src/geom/prep/Makefile src/geom/util/Makefile src/geomgraph/Makefile src/geomgraph/index/Makefile include/Makefile include/geos/Makefile include/geos/algorithm/Makefile include/geos/algorithm/locate/Makefile include/geos/algorithm/distance/Makefile include/geos/geom/Makefile include/geos/geom/prep/Makefile include/geos/geom/util/Makefile include/geos/geomgraph/Makefile include/geos/geomgraph/index/Makefile include/geos/index/Makefile include/geos/index/bintree/Makefile include/geos/index/chain/Makefile include/geos/index/intervalrtree/Makefile include/geos/index/quadtree/Makefile include/geos/index/strtree/Makefile include/geos/index/sweepline/Makefile include/geos/io/Makefile include/geos/linearref/Makefile include/geos/noding/Makefile include/geos/noding/snapround/Makefile include/geos/operation/Makefile include/geos/operation/buffer/Makefile include/geos/operation/distance/Makefile include/geos/operation/intersection/Makefile include/geos/operation/linemerge/Makefile include/geos/operation/overlay/Makefile include/geos/operation/overlay/snap/Makefile include/geos/operation/polygonize/Makefile include/geos/operation/predicate/Makefile include/geos/operation/relate/Makefile include/geos/operation/sharedpaths/Makefile include/geos/operation/union/Makefile include/geos/operation/valid/Makefile include/geos/planargraph/Makefile include/geos/planargraph/algorithm/Makefile include/geos/precision/Makefile include/geos/simplify/Makefile include/geos/triangulate/Makefile include/geos/triangulate/quadedge/Makefile include/geos/util/Makefile include/geos/version.h src/index/Makefile src/index/bintree/Makefile src/index/chain/Makefile src/index/intervalrtree/Makefile src/index/quadtree/Makefile src/index/strtree/Makefile src/index/sweepline/Makefile src/io/Makefile src/linearref/Makefile src/noding/Makefile src/noding/snapround/Makefile src/operation/Makefile src/operation/buffer/Makefile src/operation/distance/Makefile src/operation/intersection/Makefile src/operation/linemerge/Makefile src/operation/overlay/Makefile src/operation/polygonize/Makefile src/operation/predicate/Makefile src/operation/relate/Makefile src/operation/sharedpaths/Makefile src/operation/union/Makefile src/operation/valid/Makefile src/planargraph/Makefile src/precision/Makefile src/simplify/Makefile src/triangulate/Makefile src/triangulate/quadedge/Makefile src/util/Makefile swig/geos.i swig/Makefile swig/python/Makefile swig/python/tests/Makefile swig/ruby/Makefile swig/ruby/test/Makefile tests/Makefile tests/bigtest/Makefile tests/unit/Makefile tests/perf/Makefile tests/perf/operation/Makefile tests/perf/operation/buffer/Makefile tests/perf/operation/predicate/Makefile tests/perf/capi/Makefile tests/xmltester/Makefile tests/geostest/Makefile tests/thread/Makefile tools/Makefile tools/geos-config" +ac_config_files="$ac_config_files Makefile capi/Makefile capi/geos_c.h doc/Doxyfile doc/Makefile macros/Makefile src/Makefile src/algorithm/Makefile src/algorithm/locate/Makefile src/algorithm/distance/Makefile src/geom/Makefile src/geom/prep/Makefile src/geom/util/Makefile src/geomgraph/Makefile src/geomgraph/index/Makefile include/Makefile include/geos/Makefile include/geos/algorithm/Makefile include/geos/algorithm/locate/Makefile include/geos/algorithm/distance/Makefile include/geos/algorithm/ttmath/Makefile include/geos/geom/Makefile include/geos/geom/prep/Makefile include/geos/geom/util/Makefile include/geos/geomgraph/Makefile include/geos/geomgraph/index/Makefile include/geos/index/Makefile include/geos/index/bintree/Makefile include/geos/index/chain/Makefile include/geos/index/intervalrtree/Makefile include/geos/index/quadtree/Makefile include/geos/index/strtree/Makefile include/geos/index/sweepline/Makefile include/geos/io/Makefile include/geos/linearref/Makefile include/geos/noding/Makefile include/geos/noding/snapround/Makefile include/geos/operation/Makefile include/geos/operation/buffer/Makefile include/geos/operation/distance/Makefile include/geos/operation/intersection/Makefile include/geos/operation/linemerge/Makefile include/geos/operation/overlay/Makefile include/geos/operation/overlay/snap/Makefile include/geos/operation/polygonize/Makefile include/geos/operation/predicate/Makefile include/geos/operation/relate/Makefile include/geos/operation/sharedpaths/Makefile include/geos/operation/union/Makefile include/geos/operation/valid/Makefile include/geos/planargraph/Makefile include/geos/planargraph/algorithm/Makefile include/geos/precision/Makefile include/geos/simplify/Makefile include/geos/triangulate/Makefile include/geos/triangulate/quadedge/Makefile include/geos/util/Makefile include/geos/version.h src/index/Makefile src/index/bintree/Makefile src/index/chain/Makefile src/index/intervalrtree/Makefile src/index/quadtree/Makefile src/index/strtree/Makefile src/index/sweepline/Makefile src/io/Makefile src/linearref/Makefile src/noding/Makefile src/noding/snapround/Makefile src/operation/Makefile src/operation/buffer/Makefile src/operation/distance/Makefile src/operation/intersection/Makefile src/operation/linemerge/Makefile src/operation/overlay/Makefile src/operation/polygonize/Makefile src/operation/predicate/Makefile src/operation/relate/Makefile src/operation/sharedpaths/Makefile src/operation/union/Makefile src/operation/valid/Makefile src/planargraph/Makefile src/precision/Makefile src/simplify/Makefile src/triangulate/Makefile src/triangulate/quadedge/Makefile src/util/Makefile swig/geos.i swig/Makefile swig/python/Makefile swig/python/tests/Makefile swig/ruby/Makefile swig/ruby/test/Makefile tests/Makefile tests/bigtest/Makefile tests/unit/Makefile benchmarks/Makefile benchmarks/algorithm/Makefile benchmarks/operation/Makefile benchmarks/operation/buffer/Makefile benchmarks/operation/predicate/Makefile benchmarks/capi/Makefile tests/xmltester/Makefile tests/geostest/Makefile tests/thread/Makefile tools/Makefile tools/geos-config tools/astyle/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20020,6 +19369,7 @@ # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" +config_links="$ac_config_links" config_commands="$ac_config_commands" _ACEOF @@ -20050,6 +19400,9 @@ Configuration headers: $config_headers +Configuration links: +$config_links + Configuration commands: $config_commands @@ -20178,7 +19531,7 @@ # # INIT-COMMANDS # -AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout @@ -20197,7 +19550,6 @@ 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"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' @@ -20245,13 +19597,10 @@ 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_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $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"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $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"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $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"`' @@ -20316,8 +19665,7 @@ 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"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $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"`' @@ -20423,12 +19771,9 @@ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ nm_file_list_spec \ -lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ @@ -20494,7 +19839,7 @@ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20521,8 +19866,7 @@ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path \ +sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ @@ -20536,7 +19880,7 @@ 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20545,16 +19889,19 @@ 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 that allow our +# 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 +if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' @@ -20572,8 +19919,8 @@ do case $ac_config_target in "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; - "include/geos/platform.h") CONFIG_HEADERS="$CONFIG_HEADERS include/geos/platform.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "tools/astyle.sh") CONFIG_LINKS="$CONFIG_LINKS tools/astyle.sh:tools/astyle.sh" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "capi/Makefile") CONFIG_FILES="$CONFIG_FILES capi/Makefile" ;; @@ -20595,6 +19942,7 @@ "include/geos/algorithm/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/algorithm/Makefile" ;; "include/geos/algorithm/locate/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/algorithm/locate/Makefile" ;; "include/geos/algorithm/distance/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/algorithm/distance/Makefile" ;; + "include/geos/algorithm/ttmath/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/algorithm/ttmath/Makefile" ;; "include/geos/geom/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/geom/Makefile" ;; "include/geos/geom/prep/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/geom/prep/Makefile" ;; "include/geos/geom/util/Makefile") CONFIG_FILES="$CONFIG_FILES include/geos/geom/util/Makefile" ;; @@ -20670,16 +20018,18 @@ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/bigtest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/bigtest/Makefile" ;; "tests/unit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; - "tests/perf/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/Makefile" ;; - "tests/perf/operation/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/operation/Makefile" ;; - "tests/perf/operation/buffer/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/operation/buffer/Makefile" ;; - "tests/perf/operation/predicate/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/operation/predicate/Makefile" ;; - "tests/perf/capi/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/capi/Makefile" ;; + "benchmarks/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/Makefile" ;; + "benchmarks/algorithm/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/algorithm/Makefile" ;; + "benchmarks/operation/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/operation/Makefile" ;; + "benchmarks/operation/buffer/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/operation/buffer/Makefile" ;; + "benchmarks/operation/predicate/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/operation/predicate/Makefile" ;; + "benchmarks/capi/Makefile") CONFIG_FILES="$CONFIG_FILES benchmarks/capi/Makefile" ;; "tests/xmltester/Makefile") CONFIG_FILES="$CONFIG_FILES tests/xmltester/Makefile" ;; "tests/geostest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/geostest/Makefile" ;; "tests/thread/Makefile") CONFIG_FILES="$CONFIG_FILES tests/thread/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "tools/geos-config") CONFIG_FILES="$CONFIG_FILES tools/geos-config" ;; + "tools/astyle/Makefile") CONFIG_FILES="$CONFIG_FILES tools/astyle/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -20693,6 +20043,7 @@ 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_LINKS+set}" = set || CONFIG_LINKS=$config_links test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi @@ -20990,7 +20341,7 @@ fi # test -n "$CONFIG_HEADERS" -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" shift for ac_tag do @@ -21267,7 +20618,38 @@ } s/.*/./; q'`/stamp-h$_am_stamp_count ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +$as_echo "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$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;} ;; @@ -21279,35 +20661,29 @@ # Older Autoconf 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. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - case $CONFIG_FILES in #( - *\'*) : - eval set x "$CONFIG_FILES" ;; #( - *) : - set x $CONFIG_FILES ;; #( - *) : - ;; -esac + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf + for mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line + 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. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`$as_dirname -- "$am_mf" || -$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$am_mf" : 'X\(//\)[^/]' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | + 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 @@ -21325,99 +20701,106 @@ q } s/.*/./; q'` - am_filepart=`$as_basename -- "$am_mf" || -$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ + 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"` + # 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'`; 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\/\(\/\/\)$/{ + /^X\(\/\/\)[^/].*/{ s//\1/ q } - /^X\/\(\/\).*/{ + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` - { echo "$as_me:$LINENO: cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles" >&5 - (cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } || am_rc=$? + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done done - if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking). -See \`config.log' for more details" "$LINENO" 5; } - fi - { am_dirpart=; unset am_dirpart;} - { am_filepart=; unset am_filepart;} - { am_mf=; unset am_mf;} - { am_rc=; unset am_rc;} - rm -f conftest-deps.mk } ;; "libtool":C) - # See if we are running on zsh, and set the options that allow our + # 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 + if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi - cfgfile=${ofile}T + cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION + +# `$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. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 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 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. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 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. # -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of +# 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 this program. If not, see . +# 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 ' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} +available_tags="CXX " # ### BEGIN LIBTOOL CONFIG @@ -21446,9 +20829,6 @@ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - # Shell to use when invoking shell scripts. SHELL=$lt_SHELL @@ -21560,27 +20940,18 @@ # 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 into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - # 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 lister interface. -nm_interface=$lt_lt_cv_nm_interface - # 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 where our libraries should be installed. +# The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -21671,11 +21042,8 @@ # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path +# 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 @@ -21768,13 +21136,13 @@ # 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 +# 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 +# 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 +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute @@ -21840,72 +21208,13 @@ _LT_EOF - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_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 set != "${COLLECT_NAMES+set}"; then +if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -21914,7 +21223,7 @@ esac -ltmain=$ac_aux_dir/ltmain.sh +ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if @@ -21924,6 +21233,165 @@ 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" @@ -22010,13 +21478,13 @@ # 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 +# 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 +# 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 +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX diff -Nru geos-3.7.1/configure.ac geos-3.8.0/configure.ac --- geos-3.7.1/configure.ac 2018-11-29 23:04:39.000000000 +0000 +++ geos-3.8.0/configure.ac 2019-10-08 16:20:34.000000000 +0000 @@ -10,24 +10,27 @@ AC_CONFIG_MACRO_DIR([macros]) -dnl -- JTS_PORT: the version of JTS this release is bound to -JTS_PORT=1.13.0 - -dnl -- Version info for the CAPI -CAPI_INTERFACE_CURRENT=12 -CAPI_INTERFACE_REVISION=1 -CAPI_INTERFACE_AGE=11 - dnl dnl -- Release versions / C++ library SONAME will use these dnl -- encoding ABI break at every release dnl -VERSION_MAJOR=3 -VERSION_MINOR=7 -VERSION_PATCH=1 +VERTXT=${srcdir}/Version.txt +VERSION_MAJOR=`cat $VERTXT | awk -F= '/^GEOS_VERSION_MAJOR/ {print $2}'` +VERSION_MINOR=`cat $VERTXT | awk -F= '/^GEOS_VERSION_MINOR/ {print $2}'` +VERSION_PATCH=`cat $VERTXT | awk -F= '/^GEOS_VERSION_PATCH/ {print $2}'` +PATCH_WORD=`cat $VERTXT | awk -F= '/^GEOS_PATCH_WORD/ {print $2}'` + +VERSION_PATCH=${VERSION_PATCH}${PATCH_WORD} VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" VERSION_RELEASE=`echo "$VERSION" | sed -E 's/^([[0-9]+\.[0-9]+\.[0-9]+]).*$/\1/'` +AC_MSG_CHECKING([for GEOS version]) +AC_MSG_RESULT(["$VERSION"]) + +CAPI_INTERFACE_CURRENT=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_CURRENT/ {print $2}'` +CAPI_INTERFACE_REVISION=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_REVISION/ {print $2}'` +CAPI_INTERFACE_AGE=`cat $VERTXT | awk -F= '/^CAPI_INTERFACE_AGE/ {print $2}'` + dnl CAPI_VERSION_MAJOR=$(($CAPI_INTERFACE_CURRENT-$CAPI_INTERFACE_AGE)) dnl the following should be more portable CAPI_VERSION_MAJOR=`expr $CAPI_INTERFACE_CURRENT - $CAPI_INTERFACE_AGE` @@ -35,11 +38,23 @@ CAPI_VERSION_PATCH=$CAPI_INTERFACE_REVISION CAPI_VERSION="$CAPI_VERSION_MAJOR.$CAPI_VERSION_MINOR.$CAPI_VERSION_PATCH" +AC_MSG_CHECKING([for GEOS CAPI version]) +AC_MSG_RESULT(["$CAPI_VERSION"]) + AM_INIT_AUTOMAKE([geos], [$VERSION], [no-define]) AM_MAINTAINER_MODE -AC_CONFIG_HEADERS([include/config.h] [include/geos/platform.h]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) +AC_CONFIG_HEADERS([include/config.h]) AC_PROG_CC +AC_CONFIG_LINKS([tools/astyle.sh:tools/astyle.sh]) + +dnl -- JTS_PORT: the version of JTS this release is bound to +dnl JTS_PORT=1.13.0 +JTS_PORT=`cat $VERTXT | awk -F= '/^JTS_PORT/ {print $2}'` + +DOXYGEN_LOGFILE= +AC_SUBST(DOXYGEN_LOGFILE) dnl Hush warnings AC_DEFINE(USE_UNSTABLE_GEOS_CPP_API, [1], [We know]) @@ -374,9 +389,6 @@ AC_SUBST(VERSION_MINOR) AC_SUBST(VERSION_PATCH) AC_SUBST(VERSION_RELEASE) -AC_SUBST(INTERFACE_CURRENT) -AC_SUBST(INTERFACE_REVISION) -AC_SUBST(INTERFACE_AGE) AC_SUBST(JTS_PORT) AC_SUBST(CAPI_VERSION) AC_SUBST(CAPI_VERSION_MAJOR) @@ -409,6 +421,7 @@ include/geos/algorithm/Makefile include/geos/algorithm/locate/Makefile include/geos/algorithm/distance/Makefile + include/geos/algorithm/ttmath/Makefile include/geos/geom/Makefile include/geos/geom/prep/Makefile include/geos/geom/util/Makefile @@ -484,16 +497,18 @@ tests/Makefile tests/bigtest/Makefile tests/unit/Makefile - tests/perf/Makefile - tests/perf/operation/Makefile - tests/perf/operation/buffer/Makefile - tests/perf/operation/predicate/Makefile - tests/perf/capi/Makefile + benchmarks/Makefile + benchmarks/algorithm/Makefile + benchmarks/operation/Makefile + benchmarks/operation/buffer/Makefile + benchmarks/operation/predicate/Makefile + benchmarks/capi/Makefile tests/xmltester/Makefile tests/geostest/Makefile tests/thread/Makefile tools/Makefile tools/geos-config + tools/astyle/Makefile ]) dnl -- echo "---------------------------------------" diff -Nru geos-3.7.1/debian/changelog geos-3.8.0/debian/changelog --- geos-3.7.1/debian/changelog 2019-07-14 13:06:54.000000000 +0000 +++ geos-3.8.0/debian/changelog 2019-11-24 15:59:06.000000000 +0000 @@ -1,8 +1,81 @@ -geos (3.7.1-1~bionic0) bionic; urgency=medium +geos (3.8.0-1~bionic0) bionic; urgency=medium * No change rebuild for Bionic. - -- Angelos Tzotsos Sun, 14 Jul 2019 16:00:00 +0200 + -- Angelos Tzotsos Sun, 24 Nov 2019 18:00:00 +0200 + +geos (3.8.0-1) unstable; urgency=medium + + * Update symbols for other architectures. + * Strip pre-release from symbols version. + * Move from experimental to unstable. + + -- Bas Couwenberg Sun, 13 Oct 2019 12:01:18 +0200 + +geos (3.8.0-1~exp1) experimental; urgency=medium + + * New upstream release. + * Drop ruby package, has no users in popcon. + + -- Bas Couwenberg Fri, 11 Oct 2019 06:50:28 +0200 + +geos (3.8.0~rc3-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + + -- Bas Couwenberg Tue, 08 Oct 2019 19:47:31 +0200 + +geos (3.8.0~rc2-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + * Drop check-local.patch, fixed upstream. + + -- Bas Couwenberg Thu, 03 Oct 2019 20:53:25 +0200 + +geos (3.8.0~rc1-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + * Bump Standards-Version to 4.4.1, no changes. + * Add patch to ignore OSX cruft. + + -- Bas Couwenberg Thu, 03 Oct 2019 06:36:22 +0200 + +geos (3.8.0~beta1-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update copyright file, changes: + - Update copyright years for existing copyright holders + - Add new copyright holders + - Add license & copyright for ttmath sources + - Add license & copyright for tinyxml2 sources + - Add license & copyright for astyle sources + * Rename C++ library package for SONAME bump. + * Refresh patches. + * Don't install TODO in docs, removed upstream. + * Remove .asm files. + * Add lintian override for hardening-no-fortify-functions. + * Update symbols for amd64. + + -- Bas Couwenberg Sat, 28 Sep 2019 08:06:26 +0200 + +geos (3.7.2-1) unstable; urgency=medium + + * Update gbp.conf to use --source-only-changes by default. + * Bump Standards-Version to 4.4.0, no changes. + * Add copyright holders for debian/*. + * Update symbols for other architectures. + * Move from experimental to unstable. + + -- Bas Couwenberg Tue, 23 Jul 2019 07:12:24 +0200 + +geos (3.7.2-1~exp1) experimental; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.3.0, no changes. + * Rename library package for SONAME bump. + * Update symbols for amd64. + + -- Bas Couwenberg Fri, 03 May 2019 06:10:50 +0200 geos (3.7.1-1) unstable; urgency=medium diff -Nru geos-3.7.1/debian/control geos-3.8.0/debian/control --- geos-3.7.1/debian/control 2018-12-05 18:55:57.000000000 +0000 +++ geos-3.8.0/debian/control 2019-10-13 09:59:13.000000000 +0000 @@ -7,10 +7,8 @@ Build-Depends: debhelper (>= 9.20160114), dh-autoreconf, doxygen, - pkg-kde-tools, - ruby-all-dev, - swig -Standards-Version: 4.2.1 + pkg-kde-tools +Standards-Version: 4.4.1 Vcs-Browser: https://salsa.debian.org/debian-gis-team/geos Vcs-Git: https://salsa.debian.org/debian-gis-team/geos.git Homepage: https://trac.osgeo.org/geos/ @@ -32,7 +30,7 @@ Package: libgeos++-dev Architecture: any Section: libdevel -Depends: libgeos-3.7.1 (= ${binary:Version}), +Depends: libgeos-3.8.0 (= ${binary:Version}), libgeos-dev, ${misc:Depends} Suggests: libgdal-doc @@ -72,7 +70,7 @@ This package contains the C library. A C++ library is provided by the libgeos-* package. -Package: libgeos-3.7.1 +Package: libgeos-3.8.0 Architecture: any Multi-Arch: same Section: libs @@ -108,20 +106,3 @@ OpenGIS Consortium Simple Features Specification for SQL. . This package contains the documentation for the GEOS API. - -Package: ruby-geos -Architecture: any -Multi-Arch: same -Section: ruby -Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, - ${misc:Depends} -Breaks: libgeos-ruby1.8 (<< 3.4.2-2~) -Provides: libgeos-ruby1.8 -Replaces: libgeos-ruby1.8 (<< 3.4.2-2~) -Description: GEOS bindings for Ruby - GEOS provides a spatial object model and fundamental geometric - functions. It implements the geometry model defined in the - OpenGIS Consortium Simple Features Specification for SQL. - . - This package contains the Ruby bindings for GEOS. diff -Nru geos-3.7.1/debian/copyright geos-3.8.0/debian/copyright --- geos-3.7.1/debian/copyright 2018-09-11 05:30:31.000000000 +0000 +++ geos-3.8.0/debian/copyright 2019-10-13 09:59:02.000000000 +0000 @@ -4,37 +4,50 @@ Source: https://download.osgeo.org/geos/ Files: * -Copyright: 2018, Vicky Vergara - 2017, Mateusz Loskot - 2016, Daniel Baston - 2016, Shinichi SUGIYAMA - 2015, Nyall Dawson - 2014, Mika Heiskanen - 2009-2013, Sandro Santilli - 2012, Excensus LLC - 2005-2011, Refractions Research Inc - 2008-2010, Safe Software Inc - 2001-2009, Vivid Solutions Inc - 2009, Ragi Y. Burhum - 2004, 2008, Sean Gillies - 1995, INRIA Prisme Project - 1995, Olivier Devillers +Copyright: 2019, Martin Davis + 2019, Even Rouault + 2018-2019, Paul Ramsey + 2016, 2018-2019, Daniel Baston + 2018, Vicky Vergara + 2009, 2014, 2017, Mateusz Loskot + 2016, Shinichi SUGIYAMA + 2015, Nyall Dawson + 2014, Mika Heiskanen + 2009-2013, Sandro Santilli + 2012, Excensus LLC + 2005-2011, Refractions Research Inc + 2008-2010, Safe Software Inc + 2001-2009, Vivid Solutions Inc + 2009, Ragi Y. Burhum + 2004, 2008, Sean Gillies + 1995, INRIA Prisme Project + 1995, Olivier Devillers License: LGPL-2.1+ Comment: The upstream contributors are listed in the AUTHORS file. -Files: ltmain.sh -Copyright: 1996-2015, Free Software Foundation, Inc -License: GPL-2+ with Libtool exception +Files: include/geos/algorithm/ttmath/* +Copyright: 2006-2017, Tomasz Sowa + 2009-2017, Christian Kaiser +License: BSD-3-Clause -Files: tests/xmltester/tinyxml/* +Files: tests/xmltester/tinyxml2/* Copyright: 2000-2006, Lee Thomason (www.grinninglizard.com) License: zlib -Files: include/geos/timeval.h -Copyright: 2006, Wu Yongwei -License: public-domain - All code here is considered in the public domain though I do wish - my name could be retained if anyone uses them. :-) +Files: tools/astyle/* +Copyright: 2018, Jim Pattee +License: Expat + +Files: debian/* +Copyright: Steve Halasz + Alan Boudreault + Bas Couwenberg + Fabio Tranchitella + Francesco Paolo Lovergine + Jerome Villeneuve Larouche + Markus Wanner + Paul Wise +License: LGPL-2.1+ License: LGPL-2.1+ This library is free software; you can redistribute it and/or @@ -51,31 +64,52 @@ License version 2.1 can be found in the file `/usr/share/common-licenses/LGPL-2.1'. -License: GPL-2+ with Libtool exception - 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. - . - On Debian systems, the full text of the GNU General Public - License version 2 can be found in the file - `/usr/share/common-licenses/GPL-2'. +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1) Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2) Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + 3) Neither the name of the ORGANIZATION nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: Expat + 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. License: zlib This software is provided 'as-is', without any express or implied diff -Nru geos-3.7.1/debian/docs geos-3.8.0/debian/docs --- geos-3.7.1/debian/docs 2018-09-11 05:30:31.000000000 +0000 +++ geos-3.8.0/debian/docs 2019-10-13 09:59:02.000000000 +0000 @@ -1,4 +1,3 @@ AUTHORS NEWS README.md -TODO diff -Nru geos-3.7.1/debian/gbp.conf geos-3.8.0/debian/gbp.conf --- geos-3.7.1/debian/gbp.conf 2018-12-05 18:55:57.000000000 +0000 +++ geos-3.8.0/debian/gbp.conf 2019-10-13 09:59:12.000000000 +0000 @@ -14,3 +14,6 @@ # Always use pristine-tar. pristine-tar = True + +[buildpackage] +pbuilder-options = --source-only-changes diff -Nru geos-3.7.1/debian/libgeos-3.7.1.dirs geos-3.8.0/debian/libgeos-3.7.1.dirs --- geos-3.7.1/debian/libgeos-3.7.1.dirs 2018-12-05 18:55:38.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.7.1.dirs 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib diff -Nru geos-3.7.1/debian/libgeos-3.7.1.install geos-3.8.0/debian/libgeos-3.7.1.install --- geos-3.7.1/debian/libgeos-3.7.1.install 2018-12-05 18:55:38.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.7.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgeos-* diff -Nru geos-3.7.1/debian/libgeos-3.7.1.symbols geos-3.8.0/debian/libgeos-3.7.1.symbols --- geos-3.7.1/debian/libgeos-3.7.1.symbols 2018-12-05 18:59:27.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.7.1.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,4528 +0,0 @@ -# SymbolsHelper-Confirmed: 3.7.1 amd64 hppa i386 m68k powerpc powerpcspe ppc64 ppc64el riscv64 s390x sh4 sparc64 -libgeos-3.7.1.so #PACKAGE# #MINVER# -* Build-Depends-Package: libgeos++-dev - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEj@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEjRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEm@Base 3.7.0 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEmRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.7.0 - _ZN4geos11planargraph11PlanarGraph3addEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraph6removeEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraph6removeEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraph6removeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraphD0Ev@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraphD1Ev@Base 3.4.2 - _ZN4geos11planargraph11PlanarGraphD2Ev@Base 3.4.2 - _ZN4geos11planargraph11pdeLessThanEPNS0_12DirectedEdgeES2_@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdge6setSymEPS1_@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdge7setEdgeEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdge7toEdgesERSt6vectorIPS1_SaIS3_EE@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdge7toEdgesERSt6vectorIPS1_SaIS3_EERS2_IPNS0_4EdgeESaIS8_EE@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdgeC1EPNS0_4NodeES3_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdgeC2EPNS0_4NodeES3_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdgeD0Ev@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdgeD1Ev@Base 3.4.2 - _ZN4geos11planargraph12DirectedEdgeD2Ev@Base 3.4.2 - _ZN4geos11planargraph14GraphComponent10setVisitedEb@Base 3.4.2 - _ZN4geos11planargraph14GraphComponent9setMarkedEb@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar11getNextEdgeEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar3addEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar3endEv@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar5beginEv@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar6removeEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar8getEdgesEv@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar8getIndexEPKNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStar8getIndexEPKNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStarD0Ev@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStarD1Ev@Base 3.4.2 - _ZN4geos11planargraph16DirectedEdgeStarD2Ev@Base 3.4.2 - _ZN4geos11planargraph4Edge10getDirEdgeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos11planargraph4Edge10getDirEdgeEi@Base 3.4.2 - _ZN4geos11planargraph4Edge15getOppositeNodeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos11planargraph4Edge16setDirectedEdgesEPNS0_12DirectedEdgeES3_@Base 3.4.2 - _ZN4geos11planargraph4EdgeD0Ev@Base 3.4.2 - _ZN4geos11planargraph4EdgeD1Ev@Base 3.4.2 - _ZN4geos11planargraph4EdgeD2Ev@Base 3.4.2 - _ZN4geos11planargraph4Node15getEdgesBetweenEPS1_S2_@Base 3.4.2 - _ZN4geos11planargraph4NodeD0Ev@Base 3.4.2 - _ZN4geos11planargraph4NodeD1Ev@Base 3.4.2 - _ZN4geos11planargraph4NodeD2Ev@Base 3.4.2 - _ZN4geos11planargraph7NodeMap10getNodeMapEv@Base 3.4.2 - _ZN4geos11planargraph7NodeMap3addEPNS0_4NodeE@Base 3.4.2 - _ZN4geos11planargraph7NodeMap4findERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos11planargraph7NodeMap6removeERNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos11planargraph7NodeMap8getNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 - _ZN4geos11planargraph7NodeMapC1Ev@Base 3.4.2 - _ZN4geos11planargraph7NodeMapC2Ev@Base 3.4.2 - _ZN4geos11planargraph7NodeMapD0Ev@Base 3.4.2 - _ZN4geos11planargraph7NodeMapD1Ev@Base 3.4.2 - _ZN4geos11planargraph7NodeMapD2Ev@Base 3.4.2 - _ZN4geos11planargraph8Subgraph3addEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder12addReachableEPNS0_4NodeEPNS0_8SubgraphE@Base 3.4.2 - _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder12findSubgraphEPNS0_4NodeE@Base 3.4.2 - _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder21getConnectedSubgraphsERSt6vectorIPNS0_8SubgraphESaIS5_EE@Base 3.4.2 - _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder8addEdgesEPNS0_4NodeERSt5stackIS4_St5dequeIS4_SaIS4_EEEPNS0_8SubgraphE@Base 3.4.2 - _ZN4geos11planargraphlsERSoRKNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos11planargraphlsERSoRKNS0_4EdgeE@Base 3.4.2 - _ZN4geos11planargraphlsERSoRKNS0_4NodeE@Base 3.4.2 - _ZN4geos11triangulate21VoronoiDiagramBuilder10getDiagramERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder12setToleranceEd@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder14getSubdivisionEv@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder15getDiagramEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder15setClipEnvelopeEPKNS_4geom8EnvelopeE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder22clipGeometryCollectionERKNS_4geom18GeometryCollectionERKNS2_8EnvelopeE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder6createEv@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder8setSitesERKNS_4geom18CoordinateSequenceE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilder8setSitesERKNS_4geom8GeometryE@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilderC1Ev@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilderC2Ev@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilderD1Ev@Base 3.5.0 - _ZN4geos11triangulate21VoronoiDiagramBuilderD2Ev@Base 3.5.0 - _ZN4geos11triangulate28DelaunayTriangulationBuilder10toVerticesB5cxx11ERKNS_4geom18CoordinateSequenceE@Base 3.5.1 - _ZN4geos11triangulate28DelaunayTriangulationBuilder12getTrianglesERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder14getSubdivisionEv@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder24extractUniqueCoordinatesERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder6createEv@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder6uniqueERNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder8envelopeERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder8getEdgesERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder8setSitesERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilder8setSitesERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilderC1Ev@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilderC2Ev@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilderD1Ev@Base 3.4.2 - _ZN4geos11triangulate28DelaunayTriangulationBuilderD2Ev@Base 3.4.2 - _ZN4geos11triangulate31IncrementalDelaunayTriangulator10insertSiteERKNS0_8quadedge6VertexE@Base 3.4.2 - _ZN4geos11triangulate31IncrementalDelaunayTriangulator11insertSitesERKNSt7__cxx114listINS0_8quadedge6VertexESaIS5_EEE@Base 3.5.1 - _ZN4geos11triangulate31IncrementalDelaunayTriangulatorC1EPNS0_8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 - _ZN4geos11triangulate31IncrementalDelaunayTriangulatorC2EPNS0_8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 - _ZN4geos11triangulate8quadedge15QuadEdgeLocatorD0Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge15QuadEdgeLocatorD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge15QuadEdgeLocatorD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge15TriangleVisitorD0Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge15TriangleVisitorD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge15TriangleVisitorD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision10initSubdivEPPNS1_8QuadEdgeE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision10insertSiteERKNS1_6VertexE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision11createFrameERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision12getTrianglesERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision14visitTrianglesEPNS1_15TriangleVisitorEb@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision15getPrimaryEdgesEb@Base 3.5.1 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision16getTriangleEdgesERKNS1_8QuadEdgeEPPS4_@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision17getVoronoiDiagramERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision18getVoronoiCellEdgeEPNS1_8QuadEdgeERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision19getVoronoiCellEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision20fetchTriangleToVisitEPNS1_8QuadEdgeERSt5stackIS4_St5dequeIS4_SaIS4_EEEbRSt3setIS4_St4lessIS4_ES7_E@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision20getVertexUniqueEdgesEb@Base 3.5.1 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision21getVoronoiCellPolygonEPNS1_8QuadEdgeERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getTriangleCoordinatesEPNSt7__cxx114listIPNS_4geom18CoordinateSequenceESaIS7_EEEb@Base 3.5.1 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getVoronoiCellPolygonsERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getVoronoiDiagramEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitor5visitEPPNS1_8QuadEdgeE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD0Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitor5visitEPPNS1_8QuadEdgeE@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD0Ev@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD1Ev@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD2Ev@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision6locateERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision6removeERNS1_8QuadEdgeE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision7connectERNS1_8QuadEdgeES4_@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision8getEdgesERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision8makeEdgeERKNS1_6VertexES5_@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionC1ERKNS_4geom8EnvelopeEd@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionC2ERKNS_4geom8EnvelopeEd@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD0Ev@Base 3.5.0 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge22LocateFailureExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos11triangulate8quadedge22LocateFailureExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos11triangulate8quadedge22LocateFailureExceptionD0Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge22LocateFailureExceptionD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge22LocateFailureExceptionD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator4initEv@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator6locateERKNS1_6VertexE@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator8findEdgeEv@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorC1EPNS1_19QuadEdgeSubdivisionE@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorC2EPNS1_19QuadEdgeSubdivisionE@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD0Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex12interpolateZERKNS_4geom10CoordinateES6_S6_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex12interpolateZERKNS_4geom10CoordinateES6_S6_S6_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex17circumRadiusRatioERKS2_S4_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex8bisectorERKS2_S4_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex8classifyERKS2_S4_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6Vertex8midPointERKS2_@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC1ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC1Edd@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC1Eddd@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC2ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC2Edd@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC2Eddd@Base 3.4.2 - _ZN4geos11triangulate8quadedge6VertexC2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge4freeEv@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge4swapERS2_@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge6removeEv@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge6spliceERS2_S3_@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge7connectERS2_S3_@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge7getDataEv@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge7setDataEPv@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdge8makeEdgeERKNS1_6VertexES5_@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdgeC1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdgeC2Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdgeD0Ev@Base 3.5.0 - _ZN4geos11triangulate8quadedge8QuadEdgeD1Ev@Base 3.4.2 - _ZN4geos11triangulate8quadedge8QuadEdgeD2Ev@Base 3.4.2 - _ZN4geos2io10CLocalizerC1Ev@Base 3.4.2 - _ZN4geos2io10CLocalizerC2Ev@Base 3.4.2 - _ZN4geos2io10CLocalizerD1Ev@Base 3.4.2 - _ZN4geos2io10CLocalizerD2Ev@Base 3.4.2 - _ZN4geos2io14ParseException9stringifyB5cxx11Ed@Base 3.5.1 - _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd@Base 3.5.1 - _ZN4geos2io14ParseExceptionC1Ev@Base 3.4.2 - _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd@Base 3.5.1 - _ZN4geos2io14ParseExceptionC2Ev@Base 3.4.2 - _ZN4geos2io14ParseExceptionD0Ev@Base 3.4.2 - _ZN4geos2io14ParseExceptionD1Ev@Base 3.4.2 - _ZN4geos2io14ParseExceptionD2Ev@Base 3.4.2 - _ZN4geos2io15ByteOrderValues6getIntEPKhi@Base 3.4.2 - _ZN4geos2io15ByteOrderValues6putIntEiPhi@Base 3.4.2 - _ZN4geos2io15ByteOrderValues7getLongEPKhi@Base 3.4.2 - _ZN4geos2io15ByteOrderValues7putLongExPhi@Base 3.5.0 - _ZN4geos2io15ByteOrderValues9getDoubleEPKhi@Base 3.4.2 - _ZN4geos2io15ByteOrderValues9putDoubleEdPhi@Base 3.4.2 - _ZN4geos2io15StringTokenizer13peekNextTokenEv@Base 3.4.2 - _ZN4geos2io15StringTokenizer7getNValEv@Base 3.4.2 - _ZN4geos2io15StringTokenizer7getSValB5cxx11Ev@Base 3.5.1 - _ZN4geos2io15StringTokenizer9nextTokenEv@Base 3.4.2 - _ZN4geos2io15StringTokenizerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos2io15StringTokenizerC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos2io18strtod_with_vc_fixEPKcPPc@Base 3.5.0 - _ZN4geos2io21ByteOrderDataInStream10readDoubleEv@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStream11setInStreamEPSi@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStream7readIntEv@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStream8readByteEv@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStream8readLongEv@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStream8setOrderEi@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStreamC1EPSi@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStreamC2EPSi@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStreamD1Ev@Base 3.4.2 - _ZN4geos2io21ByteOrderDataInStreamD2Ev@Base 3.4.2 - _ZN4geos2io6Unload7ReleaseEv@Base 3.4.2 - _ZN4geos2io6Writer5writeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos2io6Writer7reserveEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos2io6Writer7reserveEm@Base 3.7.0 - _ZN4geos2io6Writer8toStringB5cxx11Ev@Base 3.5.1 - _ZN4geos2io6WriterC1Ev@Base 3.4.2 - _ZN4geos2io6WriterC2Ev@Base 3.4.2 - _ZN4geos2io6WriterD1Ev@Base 3.4.2 - _ZN4geos2io6WriterD2Ev@Base 3.4.2 - _ZN4geos2io9WKBReader11readPolygonEv@Base 3.4.2 - _ZN4geos2io9WKBReader12readGeometryEv@Base 3.4.2 - _ZN4geos2io9WKBReader14readCoordinateEv@Base 3.4.2 - _ZN4geos2io9WKBReader14readLineStringEv@Base 3.4.2 - _ZN4geos2io9WKBReader14readLinearRingEv@Base 3.4.2 - _ZN4geos2io9WKBReader14readMultiPointEv@Base 3.4.2 - _ZN4geos2io9WKBReader16readMultiPolygonEv@Base 3.4.2 - _ZN4geos2io9WKBReader19readMultiLineStringEv@Base 3.4.2 - _ZN4geos2io9WKBReader22readCoordinateSequenceEi@Base 3.4.2 - _ZN4geos2io9WKBReader22readGeometryCollectionEv@Base 3.4.2 - _ZN4geos2io9WKBReader4readERSi@Base 3.4.2 - _ZN4geos2io9WKBReader7readHEXERSi@Base 3.4.2 - _ZN4geos2io9WKBReader8printHEXERSiRSo@Base 3.4.2 - _ZN4geos2io9WKBReader9readPointEv@Base 3.4.2 - _ZN4geos2io9WKBReaderC1Ev@Base 3.4.2 - _ZN4geos2io9WKBReaderC2Ev@Base 3.4.2 - _ZN4geos2io9WKBWriter10writePointERKNS_4geom5PointE@Base 3.4.2 - _ZN4geos2io9WKBWriter12setByteOrderEi@Base 3.4.2 - _ZN4geos2io9WKBWriter12writePolygonERKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos2io9WKBWriter14setIncludeSRIDEi@Base 3.4.2 - _ZN4geos2io9WKBWriter14writeByteOrderEv@Base 3.4.2 - _ZN4geos2io9WKBWriter15writeCoordinateERKNS_4geom18CoordinateSequenceEib@Base 3.4.2 - _ZN4geos2io9WKBWriter15writeLineStringERKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos2io9WKBWriter17writeGeometryTypeEii@Base 3.4.2 - _ZN4geos2io9WKBWriter18setOutputDimensionEi@Base 3.4.2 - _ZN4geos2io9WKBWriter23writeCoordinateSequenceERKNS_4geom18CoordinateSequenceEb@Base 3.4.2 - _ZN4geos2io9WKBWriter23writeGeometryCollectionERKNS_4geom18GeometryCollectionEi@Base 3.4.2 - _ZN4geos2io9WKBWriter5writeERKNS_4geom8GeometryERSo@Base 3.4.2 - _ZN4geos2io9WKBWriter8writeHEXERKNS_4geom8GeometryERSo@Base 3.4.2 - _ZN4geos2io9WKBWriter8writeIntEi@Base 3.4.2 - _ZN4geos2io9WKBWriter9writeSRIDEi@Base 3.4.2 - _ZN4geos2io9WKBWriterC1Eiib@Base 3.4.2 - _ZN4geos2io9WKBWriterC2Eiib@Base 3.4.2 - _ZN4geos2io9WKBWriterD0Ev@Base 3.4.2 - _ZN4geos2io9WKBWriterD1Ev@Base 3.4.2 - _ZN4geos2io9WKBWriterD2Ev@Base 3.4.2 - _ZN4geos2io9WKTReader11getNextWordB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 - _ZN4geos2io9WKTReader12isNumberNextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader13getNextCloserB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 - _ZN4geos2io9WKTReader13getNextNumberEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader13readPointTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader14getCoordinatesEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader15readPolygonTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader18readLineStringTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader18readLinearRingTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader18readMultiPointTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader20getNextCloserOrCommaB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 - _ZN4geos2io9WKTReader20getNextEmptyOrOpenerB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERm@Base 3.7.0 - _ZN4geos2io9WKTReader20readMultiPolygonTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader22readGeometryTaggedTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader23readMultiLineStringTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader26readGeometryCollectionTextEPNS0_15StringTokenizerE@Base 3.4.2 - _ZN4geos2io9WKTReader4readERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos2io9WKTReaderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos2io9WKTReaderC1ERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos2io9WKTReaderC1Ev@Base 3.4.2 - _ZN4geos2io9WKTReaderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos2io9WKTReaderC2ERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos2io9WKTReaderC2Ev@Base 3.4.2 - _ZN4geos2io9WKTReaderD1Ev@Base 3.4.2 - _ZN4geos2io9WKTReaderD2Ev@Base 3.4.2 - _ZN4geos2io9WKTWriter11writeNumberB5cxx11Ed@Base 3.5.1 - _ZN4geos2io9WKTWriter12toLineStringB5cxx11ERKNS_4geom10CoordinateES5_@Base 3.5.1 - _ZN4geos2io9WKTWriter12toLineStringB5cxx11ERKNS_4geom18CoordinateSequenceE@Base 3.5.1 - _ZN4geos2io9WKTWriter14writeFormattedB5cxx11EPKNS_4geom8GeometryE@Base 3.5.1 - _ZN4geos2io9WKTWriter14writeFormattedEPKNS_4geom8GeometryEPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter14writeFormattedEPKNS_4geom8GeometryEbPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter15appendPointTextEPKNS_4geom10CoordinateEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter16appendCoordinateEPKNS_4geom10CoordinateEPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter17appendPolygonTextEPKNS_4geom7PolygonEibPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter18setOutputDimensionEi@Base 3.4.2 - _ZN4geos2io9WKTWriter20appendLineStringTextEPKNS_4geom10LineStringEibPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter20appendMultiPointTextEPKNS_4geom10MultiPointEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter20setRoundingPrecisionEi@Base 3.4.2 - _ZN4geos2io9WKTWriter21appendPointTaggedTextEPKNS_4geom10CoordinateEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter22appendMultiPolygonTextEPKNS_4geom12MultiPolygonEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter23appendPolygonTaggedTextEPKNS_4geom7PolygonEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter24appendGeometryTaggedTextEPKNS_4geom8GeometryEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter25appendMultiLineStringTextEPKNS_4geom15MultiLineStringEibPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter26appendLineStringTaggedTextEPKNS_4geom10LineStringEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter26appendLinearRingTaggedTextEPKNS_4geom10LinearRingEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter26appendMultiPointTaggedTextEPKNS_4geom10MultiPointEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter28appendGeometryCollectionTextEPKNS_4geom18GeometryCollectionEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter28appendMultiPolygonTaggedTextEPKNS_4geom12MultiPolygonEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter31appendMultiLineStringTaggedTextEPKNS_4geom15MultiLineStringEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter34appendGeometryCollectionTaggedTextEPKNS_4geom18GeometryCollectionEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter5writeB5cxx11EPKNS_4geom8GeometryE@Base 3.5.1 - _ZN4geos2io9WKTWriter5writeEPKNS_4geom8GeometryEPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter6indentEiPNS0_6WriterE@Base 3.4.2 - _ZN4geos2io9WKTWriter7setTrimEb@Base 3.4.2 - _ZN4geos2io9WKTWriter7toPointB5cxx11ERKNS_4geom10CoordinateE@Base 3.5.1 - _ZN4geos2io9WKTWriterC1Ev@Base 3.4.2 - _ZN4geos2io9WKTWriterC2Ev@Base 3.4.2 - _ZN4geos2io9WKTWriterD1Ev@Base 3.4.2 - _ZN4geos2io9WKTWriterD2Ev@Base 3.4.2 - _ZN4geos4geom10Coordinate10_nullCoordE@Base 3.6.0 - _ZN4geos4geom10Coordinate7getNullEv@Base 3.4.2 - _ZN4geos4geom10Coordinate7setNullEv@Base 3.4.2 - _ZN4geos4geom10Coordinate8hashCodeEd@Base 3.4.2 - _ZN4geos4geom10CoordinateC1Eddd@Base 3.4.2 - _ZN4geos4geom10CoordinateC2Eddd@Base 3.4.2 - _ZN4geos4geom10LineString20validateConstructionEv@Base 3.4.2 - _ZN4geos4geom10LineString8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 - _ZN4geos4geom10LineString8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 - _ZN4geos4geom10LineString8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZN4geos4geom10LineString8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZN4geos4geom10LineString9normalizeEv@Base 3.4.2 - _ZN4geos4geom10LineStringC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10LineStringC1ERKS1_@Base 3.4.2 - _ZN4geos4geom10LineStringC1ESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EEPKNS0_15GeometryFactoryE@Base 3.7.0 - _ZN4geos4geom10LineStringC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10LineStringC2ERKS1_@Base 3.4.2 - _ZN4geos4geom10LineStringC2ESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EEPKNS0_15GeometryFactoryE@Base 3.7.0 - _ZN4geos4geom10LineStringD0Ev@Base 3.4.2 - _ZN4geos4geom10LineStringD1Ev@Base 3.4.2 - _ZN4geos4geom10LineStringD2Ev@Base 3.4.2 - _ZN4geos4geom10LinearRing20validateConstructionEv@Base 3.4.2 - _ZN4geos4geom10LinearRing9setPointsEPNS0_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos4geom10LinearRingC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10LinearRingC1ERKS1_@Base 3.4.2 - _ZN4geos4geom10LinearRingC1ESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EEPKNS0_15GeometryFactoryE@Base 3.7.0 - _ZN4geos4geom10LinearRingC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10LinearRingC2ERKS1_@Base 3.4.2 - _ZN4geos4geom10LinearRingC2ESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EEPKNS0_15GeometryFactoryE@Base 3.7.0 - _ZN4geos4geom10LinearRingD0Ev@Base 3.4.2 - _ZN4geos4geom10LinearRingD1Ev@Base 3.4.2 - _ZN4geos4geom10LinearRingD2Ev@Base 3.4.2 - _ZN4geos4geom10MultiPointC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10MultiPointC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom10MultiPointD0Ev@Base 3.4.2 - _ZN4geos4geom10MultiPointD1Ev@Base 3.4.2 - _ZN4geos4geom10MultiPointD2Ev@Base 3.4.2 - _ZN4geos4geom11GeomPtrPairD1Ev@Base 3.4.2 - _ZN4geos4geom11GeomPtrPairD2Ev@Base 3.4.2 - _ZN4geos4geom11LineSegment13closestPointsEPKS1_@Base 3.4.2 - _ZN4geos4geom11LineSegment13closestPointsERKS1_@Base 3.4.2 - _ZN4geos4geom11LineSegment14setCoordinatesERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom11LineSegment14setCoordinatesERKS1_@Base 3.4.2 - _ZN4geos4geom11LineSegment7reverseEv@Base 3.4.2 - _ZN4geos4geom11LineSegment9normalizeEv@Base 3.4.2 - _ZN4geos4geom11LineSegmentC1ERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom11LineSegmentC1ERKS1_@Base 3.4.2 - _ZN4geos4geom11LineSegmentC1Edddd@Base 3.4.2 - _ZN4geos4geom11LineSegmentC1Ev@Base 3.4.2 - _ZN4geos4geom11LineSegmentC2ERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom11LineSegmentC2ERKS1_@Base 3.4.2 - _ZN4geos4geom11LineSegmentC2Edddd@Base 3.4.2 - _ZN4geos4geom11LineSegmentC2Ev@Base 3.4.2 - _ZN4geos4geom11LineSegmentD0Ev@Base 3.4.2 - _ZN4geos4geom11LineSegmentD1Ev@Base 3.4.2 - _ZN4geos4geom11LineSegmentD2Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom11LineSegmentixEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom11LineSegmentixEm@Base 3.7.0 - _ZN4geos4geom11check_validERKNS0_8GeometryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb@Base 3.5.1 - _ZN4geos4geom11geosversionB5cxx11Ev@Base 3.5.1 - _ZN4geos4geom12MultiPolygonC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom12MultiPolygonC1ERKS1_@Base 3.4.2 - _ZN4geos4geom12MultiPolygonC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom12MultiPolygonC2ERKS1_@Base 3.4.2 - _ZN4geos4geom12MultiPolygonD0Ev@Base 3.4.2 - _ZN4geos4geom12MultiPolygonD1Ev@Base 3.4.2 - _ZN4geos4geom12MultiPolygonD2Ev@Base 3.4.2 - _ZN4geos4geom14GeometryFilter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom14PrecisionModel19maximumPreciseValueE@Base 3.4.2 - _ZN4geos4geom14PrecisionModel8setScaleEd@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC1ENS1_4TypeE@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC1ERKS1_@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC1Ed@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC1Eddd@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC1Ev@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC2ENS1_4TypeE@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC2ERKS1_@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC2Ed@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC2Eddd@Base 3.4.2 - _ZN4geos4geom14PrecisionModelC2Ev@Base 3.4.2 - _ZN4geos4geom14PrecisionModelD1Ev@Base 3.4.2 - _ZN4geos4geom14PrecisionModelD2Ev@Base 3.4.2 - _ZN4geos4geom15GeometryFactory18getDefaultInstanceEv@Base 3.4.2 - _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelE@Base 3.6.0 - _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelEi@Base 3.6.0 - _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.6.0 - _ZN4geos4geom15GeometryFactory6createEPNS0_25CoordinateSequenceFactoryE@Base 3.6.0 - _ZN4geos4geom15GeometryFactory6createERKS1_@Base 3.6.0 - _ZN4geos4geom15GeometryFactory6createEv@Base 3.6.0 - _ZN4geos4geom15GeometryFactory7destroyEv@Base 3.6.0 - _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelEi@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC1EPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC1ERKS1_@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC1Ev@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelEi@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2EPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2ERKS1_@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryC2Ev@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryD0Ev@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryD1Ev@Base 3.4.2 - _ZN4geos4geom15GeometryFactoryD2Ev@Base 3.4.2 - _ZN4geos4geom15MultiLineStringC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom15MultiLineStringC1ERKS1_@Base 3.4.2 - _ZN4geos4geom15MultiLineStringC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom15MultiLineStringC2ERKS1_@Base 3.4.2 - _ZN4geos4geom15MultiLineStringD0Ev@Base 3.4.2 - _ZN4geos4geom15MultiLineStringD1Ev@Base 3.4.2 - _ZN4geos4geom15MultiLineStringD2Ev@Base 3.4.2 - _ZN4geos4geom16CoordinateFilter9filter_roEPKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom17TrianglePredicate16isInCircleRobustERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 - _ZN4geos4geom17TrianglePredicate19isInCircleNonRobustERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 - _ZN4geos4geom17TrianglePredicate20isInCircleNormalizedERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 - _ZN4geos4geom17TrianglePredicate7triAreaERKNS0_10CoordinateES4_S4_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence13minCoordinateEPS1_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence17hasRepeatedPointsEPKS1_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence19increasingDirectionERKS1_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence20removeRepeatedPointsEPKS1_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom18CoordinateSequence28atLeastNCoordinatesOrNothingEjPS1_@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom18CoordinateSequence28atLeastNCoordinatesOrNothingEmPS1_@Base 3.7.0 - _ZN4geos4geom18CoordinateSequence3addEPKS1_bb@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence3addEPKSt6vectorINS0_10CoordinateESaIS3_EEb@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence3addERKNS0_10CoordinateEb@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence6equalsEPKS1_S3_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence6scrollEPS1_PKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence7indexOfEPKNS0_10CoordinateEPKS1_@Base 3.4.2 - _ZN4geos4geom18CoordinateSequence7reverseEPS1_@Base 3.4.2 - _ZN4geos4geom18GeometryCollection8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 - _ZN4geos4geom18GeometryCollection8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 - _ZN4geos4geom18GeometryCollection8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZN4geos4geom18GeometryCollection8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZN4geos4geom18GeometryCollection9normalizeEv@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionC1ERKS1_@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionC2ERKS1_@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionD0Ev@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionD1Ev@Base 3.4.2 - _ZN4geos4geom18GeometryCollectionD2Ev@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix10setAtLeastENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom18IntersectionMatrix10setAtLeastEiii@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix17setAtLeastIfValidEiii@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix3addEPS1_@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom18IntersectionMatrix3setEiii@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix6setAllEi@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix7matchesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos4geom18IntersectionMatrix7matchesEic@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix8firstDimE@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix9secondDimE@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrix9transposeEv@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom18IntersectionMatrixC1ERKS1_@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrixC1Ev@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrixC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom18IntersectionMatrixC2ERKS1_@Base 3.4.2 - _ZN4geos4geom18IntersectionMatrixC2Ev@Base 3.4.2 - _ZN4geos4geom19GeometryGreaterThenclEPKNS0_8GeometryES4_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence11setOrdinateEjjd@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence11setOrdinateEmmd@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequence20removeRepeatedPointsEv@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequence3addERKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequence3addERKNS0_10CoordinateEb@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence3addEjRKNS0_10CoordinateEb@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence3addEmRKNS0_10CoordinateEb@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence5setAtERKNS0_10CoordinateEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence5setAtERKNS0_10CoordinateEm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequence8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence8deleteAtEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence8deleteAtEm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequence9setPointsERKSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC1EPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC1EPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequenceC1ERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequenceC1ERKS1_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC1Ejj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC1Emm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequenceC1Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC2EPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC2EPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequenceC2ERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequenceC2ERKS1_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC2Ejj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC2Emm@Base 3.7.0 - _ZN4geos4geom23CoordinateArraySequenceC2Ev@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequenceD0Ev@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequenceD1Ev@Base 3.4.2 - _ZN4geos4geom23CoordinateArraySequenceD2Ev@Base 3.4.2 - _ZN4geos4geom23GeometryComponentFilter9filter_roEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom23GeometryComponentFilter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom23GeometryComponentFilterD0Ev@Base 3.4.2 - _ZN4geos4geom23GeometryComponentFilterD1Ev@Base 3.4.2 - _ZN4geos4geom23GeometryComponentFilterD2Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom24CoordinateSequenceFilter9filter_rwERNS0_18CoordinateSequenceEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom24CoordinateSequenceFilter9filter_rwERNS0_18CoordinateSequenceEm@Base 3.7.0 - _ZN4geos4geom25CoordinateSequenceFactoryD0Ev@Base 3.4.2 - _ZN4geos4geom25CoordinateSequenceFactoryD1Ev@Base 3.4.2 - _ZN4geos4geom25CoordinateSequenceFactoryD2Ev@Base 3.4.2 - _ZN4geos4geom30CoordinateArraySequenceFactory8instanceEv@Base 3.4.2 - _ZN4geos4geom30CoordinateArraySequenceFactoryD0Ev@Base 3.4.2 - _ZN4geos4geom30CoordinateArraySequenceFactoryD1Ev@Base 3.4.2 - _ZN4geos4geom30CoordinateArraySequenceFactoryD2Ev@Base 3.4.2 - _ZN4geos4geom4prep13PreparedPointD0Ev@Base 3.4.2 - _ZN4geos4geom4prep13PreparedPointD1Ev@Base 3.4.2 - _ZN4geos4geom4prep13PreparedPointD2Ev@Base 3.4.2 - _ZN4geos4geom4prep15PreparedPolygonC1EPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep15PreparedPolygonC2EPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep15PreparedPolygonD0Ev@Base 3.4.2 - _ZN4geos4geom4prep15PreparedPolygonD1Ev@Base 3.4.2 - _ZN4geos4geom4prep15PreparedPolygonD2Ev@Base 3.4.2 - _ZN4geos4geom4prep18PreparedLineString21getIntersectionFinderEv@Base 3.4.2 - _ZN4geos4geom4prep18PreparedLineStringD0Ev@Base 3.4.2 - _ZN4geos4geom4prep18PreparedLineStringD1Ev@Base 3.4.2 - _ZN4geos4geom4prep18PreparedLineStringD2Ev@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometry11setGeometryEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometry8toStringB5cxx11Ev@Base 3.5.1 - _ZN4geos4geom4prep21BasicPreparedGeometryC1EPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometryC2EPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometryD0Ev@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometryD1Ev@Base 3.4.2 - _ZN4geos4geom4prep21BasicPreparedGeometryD2Ev@Base 3.4.2 - _ZN4geos4geom4prep21PreparedPolygonCovers24fullTopologicalPredicateEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep21PreparedPolygonCoversD0Ev@Base 3.4.2 - _ZN4geos4geom4prep21PreparedPolygonCoversD1Ev@Base 3.4.2 - _ZN4geos4geom4prep21PreparedPolygonCoversD2Ev@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContains24fullTopologicalPredicateEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContainsC1EPKNS1_15PreparedPolygonE@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContainsC2EPKNS1_15PreparedPolygonE@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContainsD0Ev@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContainsD1Ev@Base 3.4.2 - _ZN4geos4geom4prep23PreparedPolygonContainsD2Ev@Base 3.4.2 - _ZN4geos4geom4prep25PreparedPolygonIntersects10intersectsEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep25PreparedPolygonIntersectsD0Ev@Base 3.4.2 - _ZN4geos4geom4prep25PreparedPolygonIntersectsD1Ev@Base 3.4.2 - _ZN4geos4geom4prep25PreparedPolygonIntersectsD2Ev@Base 3.4.2 - _ZN4geos4geom4prep31AbstractPreparedPolygonContains13isSingleShellERKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep31AbstractPreparedPolygonContains28findAndClassifyIntersectionsEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep31AbstractPreparedPolygonContains48isProperIntersectionImpliesNotContainedSituationEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep31AbstractPreparedPolygonContains4evalEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep31PreparedPolygonContainsProperly16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD0Ev@Base 3.4.2 - _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD1Ev@Base 3.4.2 - _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD2Ev@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditor11editPolygonEPKNS0_7PolygonEPNS1_23GeometryEditorOperationE@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditor22editGeometryCollectionEPKNS0_18GeometryCollectionEPNS1_23GeometryEditorOperationE@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditor4editEPKNS0_8GeometryEPNS1_23GeometryEditorOperationE@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditorC1EPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditorC1Ev@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditorC2EPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom4util14GeometryEditorC2Ev@Base 3.4.2 - _ZN4geos4geom4util14PointExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util14PointExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util14PointExtracter9getPointsERKNS0_8GeometryERSt6vectorIPKNS0_5PointESaIS9_EE@Base 3.5.0 - _ZN4geos4geom4util14PointExtracterC1ERSt6vectorIPKNS0_5PointESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util14PointExtracterC2ERSt6vectorIPKNS0_5PointESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util14PointExtracterD0Ev@Base 3.4.2 - _ZN4geos4geom4util14PointExtracterD1Ev@Base 3.4.2 - _ZN4geos4geom4util14PointExtracterD2Ev@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner14extractFactoryERKSt6vectorIPNS0_8GeometryESaIS5_EE@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner15extractElementsEPNS0_8GeometryERSt6vectorIS4_SaIS4_EE@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner7combineEPKNS0_8GeometryES5_@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner7combineEPKNS0_8GeometryES5_S5_@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner7combineERKSt6vectorIPNS0_8GeometryESaIS5_EE@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombiner7combineEv@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombinerC1ERKSt6vectorIPNS0_8GeometryESaIS5_EE@Base 3.4.2 - _ZN4geos4geom4util16GeometryCombinerC2ERKSt6vectorIPNS0_8GeometryESaIS5_EE@Base 3.4.2 - _ZN4geos4geom4util16PolygonExtracter11getPolygonsERKNS0_8GeometryERSt6vectorIPKNS0_7PolygonESaIS9_EE@Base 3.5.0 - _ZN4geos4geom4util16PolygonExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util16PolygonExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util16PolygonExtracterC1ERSt6vectorIPKNS0_7PolygonESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util16PolygonExtracterC2ERSt6vectorIPKNS0_7PolygonESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util16PolygonExtracterD0Ev@Base 3.4.2 - _ZN4geos4geom4util16PolygonExtracterD1Ev@Base 3.4.2 - _ZN4geos4geom4util16PolygonExtracterD2Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 - (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 - _ZN4geos4geom4util19CoordinateOperation4editEPKNS0_8GeometryEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer14transformPointEPKNS0_5PointEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer16transformPolygonEPKNS0_7PolygonEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer19transformLineStringEPKNS0_10LineStringEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer19transformLinearRingEPKNS0_10LinearRingEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer19transformMultiPointEPKNS0_10MultiPointEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer20transformCoordinatesEPKNS0_18CoordinateSequenceEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer21transformMultiPolygonEPKNS0_12MultiPolygonEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer24createCoordinateSequenceESt10unique_ptrISt6vectorINS0_10CoordinateESaIS5_EESt14default_deleteIS7_EE@Base 3.7.0 - _ZN4geos4geom4util19GeometryTransformer24transformMultiLineStringEPKNS0_15MultiLineStringEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer27transformGeometryCollectionEPKNS0_18GeometryCollectionEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformer38setSkipTransformedInvalidInteriorRingsEb@Base 3.6.1 - _ZN4geos4geom4util19GeometryTransformer9transformEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformerC1Ev@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformerC2Ev@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformerD0Ev@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformerD1Ev@Base 3.4.2 - _ZN4geos4geom4util19GeometryTransformerD2Ev@Base 3.4.2 - _ZN4geos4geom4util24LinearComponentExtracter8getLinesERKNS0_8GeometryERSt6vectorIPKNS0_10LineStringESaIS9_EE@Base 3.5.0 - _ZN4geos4geom4util24LinearComponentExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util24LinearComponentExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util24LinearComponentExtracterC1ERSt6vectorIPKNS0_10LineStringESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util24LinearComponentExtracterC2ERSt6vectorIPKNS0_10LineStringESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util24LinearComponentExtracterD0Ev@Base 3.4.2 - _ZN4geos4geom4util24LinearComponentExtracterD1Ev@Base 3.4.2 - _ZN4geos4geom4util24LinearComponentExtracterD2Ev@Base 3.4.2 - _ZN4geos4geom4util28ComponentCoordinateExtracter14getCoordinatesERKNS0_8GeometryERSt6vectorIPKNS0_10CoordinateESaIS9_EE@Base 3.5.0 - _ZN4geos4geom4util28ComponentCoordinateExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util28ComponentCoordinateExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom4util28ComponentCoordinateExtracterC1ERSt6vectorIPKNS0_10CoordinateESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util28ComponentCoordinateExtracterC2ERSt6vectorIPKNS0_10CoordinateESaIS6_EE@Base 3.5.0 - _ZN4geos4geom4util28ComponentCoordinateExtracterD0Ev@Base 3.4.2 - _ZN4geos4geom4util28ComponentCoordinateExtracterD1Ev@Base 3.4.2 - _ZN4geos4geom4util28ComponentCoordinateExtracterD2Ev@Base 3.4.2 - _ZN4geos4geom4util29ShortCircuitedGeometryVisitor7applyToERKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geom5Point8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 - _ZN4geos4geom5Point8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 - _ZN4geos4geom5Point8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZN4geos4geom5Point8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZN4geos4geom5Point9normalizeEv@Base 3.4.2 - _ZN4geos4geom5PointC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom5PointC1ERKS1_@Base 3.4.2 - _ZN4geos4geom5PointC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom5PointC2ERKS1_@Base 3.4.2 - _ZN4geos4geom5PointD0Ev@Base 3.4.2 - _ZN4geos4geom5PointD1Ev@Base 3.4.2 - _ZN4geos4geom5PointD2Ev@Base 3.4.2 - _ZN4geos4geom6SnapOpINS_9operation7overlay9overlayOpEEESt10unique_ptrINS0_8GeometryESt14default_deleteIS6_EEPKS6_SB_T_@Base 3.7.0 - _ZN4geos4geom7Polygon8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 - _ZN4geos4geom7Polygon8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 - _ZN4geos4geom7Polygon8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZN4geos4geom7Polygon8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZN4geos4geom7Polygon9normalizeEPNS0_10LinearRingEb@Base 3.4.2 - _ZN4geos4geom7Polygon9normalizeEv@Base 3.4.2 - _ZN4geos4geom7PolygonC1EPNS0_10LinearRingEPSt6vectorIPNS0_8GeometryESaIS6_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom7PolygonC1ERKS1_@Base 3.4.2 - _ZN4geos4geom7PolygonC2EPNS0_10LinearRingEPSt6vectorIPNS0_8GeometryESaIS6_EEPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom7PolygonC2ERKS1_@Base 3.4.2 - _ZN4geos4geom7PolygonD0Ev@Base 3.4.2 - _ZN4geos4geom7PolygonD1Ev@Base 3.4.2 - _ZN4geos4geom7PolygonD2Ev@Base 3.4.2 - _ZN4geos4geom7jtsportB5cxx11Ev@Base 3.5.1 - _ZN4geos4geom8BinaryOpINS_9operation7overlay9overlayOpEEESt10unique_ptrINS0_8GeometryESt14default_deleteIS6_EEPKS6_SB_T_@Base 3.7.0 - _ZN4geos4geom8Envelope10intersectsERKNS0_10CoordinateES4_S4_@Base 3.4.2 - _ZN4geos4geom8Envelope10intersectsERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 - _ZN4geos4geom8Envelope15expandToIncludeEPKS1_@Base 3.4.2 - _ZN4geos4geom8Envelope15expandToIncludeERKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom8Envelope15expandToIncludeEdd@Base 3.4.2 - _ZN4geos4geom8Envelope4initERKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom8Envelope4initERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom8Envelope4initEdddd@Base 3.4.2 - _ZN4geos4geom8Envelope4initEv@Base 3.4.2 - _ZN4geos4geom8Envelope5splitERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos4geom8Envelope8distanceEdddd@Base 3.4.2 - _ZN4geos4geom8Envelope8expandByEdd@Base 3.4.2 - _ZN4geos4geom8Envelope9setToNullEv@Base 3.4.2 - _ZN4geos4geom8Envelope9translateEdd@Base 3.4.2 - _ZN4geos4geom8EnvelopeC1ERKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom8EnvelopeC1ERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom8EnvelopeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom8EnvelopeC1ERKS1_@Base 3.4.2 - _ZN4geos4geom8EnvelopeC1Edddd@Base 3.4.2 - _ZN4geos4geom8EnvelopeC1Ev@Base 3.4.2 - _ZN4geos4geom8EnvelopeC2ERKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom8EnvelopeC2ERKNS0_10CoordinateES4_@Base 3.4.2 - _ZN4geos4geom8EnvelopeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4geom8EnvelopeC2ERKS1_@Base 3.4.2 - _ZN4geos4geom8EnvelopeC2Edddd@Base 3.4.2 - _ZN4geos4geom8EnvelopeC2Ev@Base 3.4.2 - _ZN4geos4geom8EnvelopeD1Ev@Base 3.4.2 - _ZN4geos4geom8EnvelopeD2Ev@Base 3.4.2 - _ZN4geos4geom8EnvelopeaSERKS1_@Base 3.4.2 - _ZN4geos4geom8Geometry15geometryChangedEv@Base 3.4.2 - _ZN4geos4geom8Geometry15hasNullElementsEPKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos4geom8Geometry15hasNullElementsEPKSt6vectorIPS1_SaIS3_EE@Base 3.4.2 - _ZN4geos4geom8Geometry19hasNonEmptyElementsEPKSt6vectorIPS1_SaIS3_EE@Base 3.4.2 - _ZN4geos4geom8Geometry21GeometryChangedFilter9filter_rwEPS1_@Base 3.4.2 - _ZN4geos4geom8Geometry21GeometryChangedFilterD0Ev@Base 3.4.2 - _ZN4geos4geom8Geometry21GeometryChangedFilterD1Ev@Base 3.4.2 - _ZN4geos4geom8Geometry21GeometryChangedFilterD2Ev@Base 3.4.2 - _ZN4geos4geom8Geometry21geometryChangedActionEv@Base 3.4.2 - _ZN4geos4geom8Geometry21geometryChangedFilterE@Base 3.4.2 - _ZN4geos4geom8Geometry26checkNotGeometryCollectionEPKS1_@Base 3.4.2 - _ZN4geos4geom8Geometry7setSRIDEi@Base 3.4.2 - _ZN4geos4geom8Geometry8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 - _ZN4geos4geom8Geometry8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZN4geos4geom8GeometryC1EPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom8GeometryC1ERKS1_@Base 3.4.2 - _ZN4geos4geom8GeometryC2EPKNS0_15GeometryFactoryE@Base 3.4.2 - _ZN4geos4geom8GeometryC2ERKS1_@Base 3.4.2 - _ZN4geos4geom8GeometryD0Ev@Base 3.4.2 - _ZN4geos4geom8GeometryD1Ev@Base 3.4.2 - _ZN4geos4geom8GeometryD2Ev@Base 3.4.2 - _ZN4geos4geom8Location16toLocationSymbolEi@Base 3.4.2 - _ZN4geos4geom8Triangle12circumcentreERNS0_10CoordinateE@Base 3.5.0 - _ZN4geos4geom8Triangle8inCentreERNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geom9Dimension16toDimensionValueEc@Base 3.4.2 - _ZN4geos4geom9Dimension17toDimensionSymbolEi@Base 3.4.2 - _ZN4geos4geomeqERKNS0_10CoordinateES3_@Base 3.4.2 - _ZN4geos4geomeqERKNS0_11LineSegmentES3_@Base 3.4.2 - _ZN4geos4geomeqERKNS0_14PrecisionModelES3_@Base 3.4.2 - _ZN4geos4geomeqERKNS0_18CoordinateSequenceES3_@Base 3.4.2 - _ZN4geos4geomeqERKNS0_8EnvelopeES3_@Base 3.4.2 - _ZN4geos4geomlsERSoRKNS0_10CoordinateE@Base 3.4.2 - _ZN4geos4geomlsERSoRKNS0_11LineSegmentE@Base 3.4.2 - _ZN4geos4geomlsERSoRKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos4geomlsERSoRKNS0_18IntersectionMatrixE@Base 3.4.2 - _ZN4geos4geomlsERSoRKNS0_8EnvelopeE@Base 3.7.0 - _ZN4geos4geomlsERSoRKNS0_8GeometryE@Base 3.4.2 - _ZN4geos4geomneERKNS0_10CoordinateES3_@Base 3.4.2 - _ZN4geos4geomneERKNS0_18CoordinateSequenceES3_@Base 3.4.2 - _ZN4geos4util13GEOSExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos4util13GEOSExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 - _ZN4geos4util13GEOSExceptionD0Ev@Base 3.4.2 - _ZN4geos4util13GEOSExceptionD1Ev@Base 3.4.2 - _ZN4geos4util13GEOSExceptionD2Ev@Base 3.4.2 - _ZN4geos4util15java_math_roundEd@Base 3.4.2 - _ZN4geos4util17TopologyExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util17TopologyExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4geom10CoordinateE@Base 3.5.1 - _ZN4geos4util17TopologyExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util17TopologyExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4geom10CoordinateE@Base 3.5.1 - _ZN4geos4util17TopologyExceptionD0Ev@Base 3.4.2 - _ZN4geos4util17TopologyExceptionD1Ev@Base 3.4.2 - _ZN4geos4util17TopologyExceptionD2Ev@Base 3.4.2 - _ZN4geos4util20InterruptedExceptionD0Ev@Base 3.4.2 - _ZN4geos4util20InterruptedExceptionD1Ev@Base 3.4.2 - _ZN4geos4util20InterruptedExceptionD2Ev@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10Dimensions7setBaseERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10Dimensions7setSizeEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10Dimensions8setWidthEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10Dimensions9setCentreERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10Dimensions9setHeightEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10DimensionsC1Ev@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory10DimensionsC2Ev@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory12createCircleEv@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory12setNumPointsEi@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory15createRectangleEv@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory16createArcPolygonEdd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory7setBaseERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory7setSizeEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory8setWidthEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory9createArcEdd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory9setCentreERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactory9setHeightEd@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactoryC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactoryC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactoryD0Ev@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactoryD1Ev@Base 3.4.2 - _ZN4geos4util21GeometricShapeFactoryD2Ev@Base 3.4.2 - _ZN4geos4util21IllegalStateExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util21IllegalStateExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util21IllegalStateExceptionD0Ev@Base 3.4.2 - _ZN4geos4util21IllegalStateExceptionD1Ev@Base 3.4.2 - _ZN4geos4util21IllegalStateExceptionD2Ev@Base 3.4.2 - _ZN4geos4util24AssertionFailedExceptionD0Ev@Base 3.4.2 - _ZN4geos4util24AssertionFailedExceptionD1Ev@Base 3.4.2 - _ZN4geos4util24AssertionFailedExceptionD2Ev@Base 3.4.2 - _ZN4geos4util24IllegalArgumentExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util24IllegalArgumentExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util24IllegalArgumentExceptionD0Ev@Base 3.4.2 - _ZN4geos4util24IllegalArgumentExceptionD1Ev@Base 3.4.2 - _ZN4geos4util24IllegalArgumentExceptionD2Ev@Base 3.4.2 - _ZN4geos4util27UniqueCoordinateArrayFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos4util27UniqueCoordinateArrayFilterD0Ev@Base 3.4.2 - _ZN4geos4util27UniqueCoordinateArrayFilterD1Ev@Base 3.4.2 - _ZN4geos4util27UniqueCoordinateArrayFilterD2Ev@Base 3.4.2 - _ZN4geos4util29UnsupportedOperationExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util29UnsupportedOperationExceptionC1Ev@Base 3.4.2 - _ZN4geos4util29UnsupportedOperationExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util29UnsupportedOperationExceptionC2Ev@Base 3.4.2 - _ZN4geos4util29UnsupportedOperationExceptionD0Ev@Base 3.4.2 - _ZN4geos4util29UnsupportedOperationExceptionD1Ev@Base 3.4.2 - _ZN4geos4util29UnsupportedOperationExceptionD2Ev@Base 3.4.2 - _ZN4geos4util6Assert20shouldNeverReachHereERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util6Assert6equalsERKNS_4geom10CoordinateES5_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util6Assert6isTrueEbRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util7ProfileC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util7ProfileC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util7ProfileD1Ev@Base 3.4.2 - _ZN4geos4util7ProfileD2Ev@Base 3.4.2 - _ZN4geos4util7rint_vcEd@Base 3.4.2 - _ZN4geos4util8Profiler3getENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util8Profiler4stopENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util8Profiler5startENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos4util8Profiler8instanceEv@Base 3.4.2 - _ZN4geos4util8ProfilerC1Ev@Base 3.4.2 - _ZN4geos4util8ProfilerC2Ev@Base 3.4.2 - _ZN4geos4util8ProfilerD1Ev@Base 3.4.2 - _ZN4geos4util8ProfilerD2Ev@Base 3.4.2 - _ZN4geos4util9Interrupt16registerCallbackEPFvvE@Base 3.4.2 - _ZN4geos4util9Interrupt5checkEv@Base 3.4.2 - _ZN4geos4util9Interrupt6cancelEv@Base 3.4.2 - _ZN4geos4util9Interrupt7processEv@Base 3.4.2 - _ZN4geos4util9Interrupt7requestEv@Base 3.4.2 - _ZN4geos4util9Interrupt9interruptEv@Base 3.4.2 - _ZN4geos4util9sym_roundEd@Base 3.4.2 - _ZN4geos4utillsERSoRKNS0_7ProfileE@Base 3.4.2 - _ZN4geos4utillsERSoRKNS0_8ProfilerE@Base 3.4.2 - _ZN4geos5index13intervalrtree17IntervalRTreeNode7compareEPKS2_S4_@Base 3.4.2 - _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD0Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD1Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD2Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD0Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD1Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD2Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree10buildLevelEPSt6vectorIPKNS1_17IntervalRTreeNodeESaIS6_EES9_@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree4initEv@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree5queryEddPNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree6insertEddPv@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree9buildTreeEv@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTreeC1Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTreeC2Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTreeD1Ev@Base 3.4.2 - _ZN4geos5index13intervalrtree25SortedPackedIntervalRTreeD2Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChain13computeSelectERKNS_4geom8EnvelopeEjjRNS1_25MonotoneChainSelectActionE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChain13computeSelectERKNS_4geom8EnvelopeEmmRNS1_25MonotoneChainSelectActionE@Base 3.7.0 - _ZN4geos5index5chain13MonotoneChain15computeOverlapsEPS2_PNS1_26MonotoneChainOverlapActionE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChain15computeOverlapsEjjRS2_jjRNS1_26MonotoneChainOverlapActionE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChain15computeOverlapsEmmRS2_mmRNS1_26MonotoneChainOverlapActionE@Base 3.7.0 - _ZN4geos5index5chain13MonotoneChain6selectERKNS_4geom8EnvelopeERNS1_25MonotoneChainSelectActionE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChainC1ERKNS_4geom18CoordinateSequenceEjjPv@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChainC1ERKNS_4geom18CoordinateSequenceEmmPv@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChainC2ERKNS_4geom18CoordinateSequenceEjjPv@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChainC2ERKNS_4geom18CoordinateSequenceEmmPv@Base 3.7.0 - _ZN4geos5index5chain13MonotoneChainD1Ev@Base 3.4.2 - _ZN4geos5index5chain13MonotoneChainD2Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain20MonotoneChainBuilder12findChainEndERKNS_4geom18CoordinateSequenceEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain20MonotoneChainBuilder12findChainEndERKNS_4geom18CoordinateSequenceEm@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain20MonotoneChainBuilder20getChainStartIndicesERKNS_4geom18CoordinateSequenceERSt6vectorIjSaIjEE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain20MonotoneChainBuilder20getChainStartIndicesERKNS_4geom18CoordinateSequenceERSt6vectorImSaImEE@Base 3.7.0 - _ZN4geos5index5chain20MonotoneChainBuilder9getChainsEPKNS_4geom18CoordinateSequenceEPv@Base 3.4.2 - _ZN4geos5index5chain20MonotoneChainBuilder9getChainsEPKNS_4geom18CoordinateSequenceEPvRSt6vectorIPNS1_13MonotoneChainESaISA_EE@Base 3.4.2 - _ZN4geos5index5chain25MonotoneChainSelectAction6selectERNS1_13MonotoneChainEj@Base 3.4.2 - _ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERKNS_4geom11LineSegmentES6_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERNS1_13MonotoneChainEjS4_j@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERNS1_13MonotoneChainEmS4_m@Base 3.7.0 - _ZN4geos5index5chain26MonotoneChainOverlapActionD0Ev@Base 3.4.2 - _ZN4geos5index5chain26MonotoneChainOverlapActionD1Ev@Base 3.4.2 - _ZN4geos5index5chain26MonotoneChainOverlapActionD2Ev@Base 3.4.2 - _ZN4geos5index7bintree3Key10computeKeyEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree3Key11getIntervalEv@Base 3.4.2 - _ZN4geos5index7bintree3Key12computeLevelEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree3Key15computeIntervalEiPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree3Key8getLevelEv@Base 3.4.2 - _ZN4geos5index7bintree3Key8getPointEv@Base 3.4.2 - _ZN4geos5index7bintree3KeyC1EPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree3KeyC2EPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree3KeyD1Ev@Base 3.4.2 - _ZN4geos5index7bintree3KeyD2Ev@Base 3.4.2 - _ZN4geos5index7bintree4Node10createNodeEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4Node10getSubnodeEi@Base 3.4.2 - _ZN4geos5index7bintree4Node11getIntervalEv@Base 3.4.2 - _ZN4geos5index7bintree4Node13createSubnodeEi@Base 3.4.2 - _ZN4geos5index7bintree4Node13isSearchMatchEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4Node14createExpandedEPS2_PNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4Node4findEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4Node6insertEPS2_@Base 3.4.2 - _ZN4geos5index7bintree4Node7getNodeEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4NodeC1EPNS1_8IntervalEi@Base 3.4.2 - _ZN4geos5index7bintree4NodeC2EPNS1_8IntervalEi@Base 3.4.2 - _ZN4geos5index7bintree4NodeD0Ev@Base 3.4.2 - _ZN4geos5index7bintree4NodeD1Ev@Base 3.4.2 - _ZN4geos5index7bintree4NodeD2Ev@Base 3.4.2 - _ZN4geos5index7bintree4Root13isSearchMatchEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree4Root15insertContainedEPNS1_4NodeEPNS1_8IntervalEPv@Base 3.4.2 - _ZN4geos5index7bintree4Root6insertEPNS1_8IntervalEPv@Base 3.4.2 - _ZN4geos5index7bintree4Root6originE@Base 3.4.2 - _ZN4geos5index7bintree4RootD0Ev@Base 3.4.2 - _ZN4geos5index7bintree4RootD1Ev@Base 3.4.2 - _ZN4geos5index7bintree4RootD2Ev@Base 3.4.2 - _ZN4geos5index7bintree7Bintree12collectStatsEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree7Bintree12ensureExtentEPKNS1_8IntervalEd@Base 3.4.2 - _ZN4geos5index7bintree7Bintree4sizeEv@Base 3.4.2 - _ZN4geos5index7bintree7Bintree5depthEv@Base 3.4.2 - _ZN4geos5index7bintree7Bintree5queryEPNS1_8IntervalE@Base 3.4.2 - _ZN4geos5index7bintree7Bintree5queryEPNS1_8IntervalEPSt6vectorIPvSaIS6_EE@Base 3.4.2 - _ZN4geos5index7bintree7Bintree5queryEd@Base 3.4.2 - _ZN4geos5index7bintree7Bintree6insertEPNS1_8IntervalEPv@Base 3.4.2 - _ZN4geos5index7bintree7Bintree8iteratorEv@Base 3.4.2 - _ZN4geos5index7bintree7Bintree8nodeSizeEv@Base 3.4.2 - _ZN4geos5index7bintree7BintreeC1Ev@Base 3.4.2 - _ZN4geos5index7bintree7BintreeC2Ev@Base 3.4.2 - _ZN4geos5index7bintree7BintreeD1Ev@Base 3.4.2 - _ZN4geos5index7bintree7BintreeD2Ev@Base 3.4.2 - _ZN4geos5index7bintree8Interval15expandToIncludeEPS2_@Base 3.4.2 - _ZN4geos5index7bintree8Interval4initEdd@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC1EPKS2_@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC1Edd@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC1Ev@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC2EPKS2_@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC2Edd@Base 3.4.2 - _ZN4geos5index7bintree8IntervalC2Ev@Base 3.4.2 - _ZN4geos5index7bintree8IntervalD1Ev@Base 3.4.2 - _ZN4geos5index7bintree8IntervalD2Ev@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase11addAllItemsEPSt6vectorIPvSaIS4_EE@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase15getSubnodeIndexEPNS1_8IntervalEd@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase26addAllItemsFromOverlappingEPNS1_8IntervalEPSt6vectorIPvSaIS6_EE@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase3addEPv@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase4sizeEv@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase5depthEv@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase8getItemsEv@Base 3.4.2 - _ZN4geos5index7bintree8NodeBase8nodeSizeEv@Base 3.4.2 - _ZN4geos5index7bintree8NodeBaseC1Ev@Base 3.4.2 - _ZN4geos5index7bintree8NodeBaseC2Ev@Base 3.4.2 - _ZN4geos5index7bintree8NodeBaseD0Ev@Base 3.4.2 - _ZN4geos5index7bintree8NodeBaseD1Ev@Base 3.4.2 - _ZN4geos5index7bintree8NodeBaseD2Ev@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNode17addChildBoundableEPNS1_9BoundableE@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNode8getLevelEv@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNodeC1Eii@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNodeC2Eii@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNodeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNodeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree12AbstractNodeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree13BoundablePair11isCompositeEPKNS1_9BoundableE@Base 3.6.0 - _ZN4geos5index7strtree13BoundablePair13expandToQueueERSt14priority_queueIPS2_St6vectorIS4_SaIS4_EENS2_25BoundablePairQueueCompareEEd@Base 3.6.0 - _ZN4geos5index7strtree13BoundablePair4areaEPKNS1_9BoundableE@Base 3.6.0 - _ZN4geos5index7strtree13BoundablePair6expandEPKNS1_9BoundableES5_RSt14priority_queueIPS2_St6vectorIS7_SaIS7_EENS2_25BoundablePairQueueCompareEEd@Base 3.6.0 - _ZN4geos5index7strtree13BoundablePairC1EPKNS1_9BoundableES5_PNS1_12ItemDistanceE@Base 3.6.0 - _ZN4geos5index7strtree13BoundablePairC2EPKNS1_9BoundableES5_PNS1_12ItemDistanceE@Base 3.6.0 - _ZN4geos5index7strtree13ItemBoundableC1EPKvPv@Base 3.4.2 - _ZN4geos5index7strtree13ItemBoundableC2EPKvPv@Base 3.4.2 - _ZN4geos5index7strtree13ItemBoundableD0Ev@Base 3.4.2 - _ZN4geos5index7strtree13ItemBoundableD1Ev@Base 3.4.2 - _ZN4geos5index7strtree13ItemBoundableD2Ev@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree10removeItemERNS1_12AbstractNodeEPv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree15getNodeCapacityEv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree17boundablesAtLevelEi@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree17boundablesAtLevelEiPNS1_12AbstractNodeEPSt6vectorIPNS1_9BoundableESaIS7_EE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree18createHigherLevelsEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree5buildEv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvPKNS1_12AbstractNodeEPSt6vectorIPvSaIS9_EE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRKNS1_12AbstractNodeERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRSt6vectorIPvSaIS6_EE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree6insertEPKvPv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree6removeEPKvPv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree6removeEPKvRNS1_12AbstractNodeEPv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree7getRootEv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree7iterateERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree8lastNodeEPSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree9itemsTreeEPNS1_12AbstractNodeE@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtree9itemsTreeEv@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtreeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtreeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree15AbstractSTRtreeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree15SIRAbstractNodeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree15SIRAbstractNodeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree15SIRAbstractNodeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree15STRAbstractNodeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree15STRAbstractNodeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree15STRAbstractNodeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree20GeometryItemDistance8distanceEPKNS1_13ItemBoundableES5_@Base 3.6.0 - _ZN4geos5index7strtree7SIRtree10createNodeEi@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree14sortBoundablesEPKSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree15SIRIntersectsOp10intersectsEPKvS5_@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD0Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD1Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD2Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree15getIntersectsOpEv@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 - _ZN4geos5index7strtree7SIRtree6insertEddPv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7SIRtreeC1Ej@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7SIRtreeC1Em@Base 3.7.0 - _ZN4geos5index7strtree7SIRtreeC1Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7SIRtreeC2Ej@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7SIRtreeC2Em@Base 3.7.0 - _ZN4geos5index7strtree7SIRtreeC2Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtreeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtreeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree7SIRtreeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtree10createNodeEi@Base 3.4.2 - _ZN4geos5index7strtree7STRtree14sortBoundablesEPKSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtree14verticalSlicesEPSt6vectorIPNS1_9BoundableESaIS5_EEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtree14verticalSlicesEPSt6vectorIPNS1_9BoundableESaIS5_EEm@Base 3.7.0 - _ZN4geos5index7strtree7STRtree15STRIntersectsOp10intersectsEPKvS5_@Base 3.4.2 - _ZN4geos5index7strtree7STRtree15STRIntersectsOpD0Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtree15STRIntersectsOpD1Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtree15STRIntersectsOpD2Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtree15getIntersectsOpEv@Base 3.4.2 - _ZN4geos5index7strtree7STRtree16nearestNeighbourEPKNS_4geom8EnvelopeEPKvPNS1_12ItemDistanceE@Base 3.6.0 - _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_12ItemDistanceE@Base 3.6.0 - _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_13BoundablePairE@Base 3.6.0 - _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_13BoundablePairEd@Base 3.6.0 - _ZN4geos5index7strtree7STRtree16nearestNeighbourEPS2_PNS1_12ItemDistanceE@Base 3.7.0 - _ZN4geos5index7strtree7STRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 - _ZN4geos5index7strtree7STRtree39createParentBoundablesFromVerticalSliceEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 - _ZN4geos5index7strtree7STRtree40createParentBoundablesFromVerticalSlicesEPSt6vectorIPS3_IPNS1_9BoundableESaIS5_EESaIS8_EEi@Base 3.4.2 - _ZN4geos5index7strtree7STRtree5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index7strtree7STRtree5queryEPKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 - _ZN4geos5index7strtree7STRtree6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index7strtree7STRtree6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtreeC1Ej@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtreeC1Em@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtreeC2Ej@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtreeC2Em@Base 3.7.0 - _ZN4geos5index7strtree7STRtreeD0Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtreeD1Ev@Base 3.4.2 - _ZN4geos5index7strtree7STRtreeD2Ev@Base 3.4.2 - _ZN4geos5index7strtree8Interval15expandToIncludeEPKS2_@Base 3.5.0 - _ZN4geos5index7strtree8Interval9getCentreEv@Base 3.4.2 - _ZN4geos5index7strtree8IntervalC1Edd@Base 3.4.2 - _ZN4geos5index7strtree8IntervalC2Edd@Base 3.4.2 - _ZN4geos5index7strtree9ItemsListD1Ev@Base 3.4.2 - _ZN4geos5index7strtree9ItemsListD2Ev@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBits13zeroLowerBitsEi@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBits14toBinaryStringB5cxx11Ed@Base 3.5.1 - _ZN4geos5index8quadtree10DoubleBits20truncateToPowerOfTwoEd@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBits21maximumCommonMantissaEdd@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBits8exponentEd@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBits8powerOf2Ei@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBitsC1Ed@Base 3.4.2 - _ZN4geos5index8quadtree10DoubleBitsC2Ed@Base 3.4.2 - _ZN4geos5index8quadtree12IntervalSize11isZeroWidthEdd@Base 3.4.2 - _ZN4geos5index8quadtree3Key10computeKeyERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree3Key10computeKeyEiRKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree3Key16computeQuadLevelERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree3KeyC1ERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree3KeyC2ERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree3KeyD1Ev@Base 3.4.2 - _ZN4geos5index8quadtree3KeyD2Ev@Base 3.4.2 - _ZN4geos5index8quadtree4Node10createNodeERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree4Node10getSubnodeEi@Base 3.4.2 - _ZN4geos5index8quadtree4Node10insertNodeESt10unique_ptrIS2_St14default_deleteIS2_EE@Base 3.7.0 - _ZN4geos5index8quadtree4Node13createSubnodeEi@Base 3.4.2 - _ZN4geos5index8quadtree4Node14createExpandedESt10unique_ptrIS2_St14default_deleteIS2_EERKNS_4geom8EnvelopeE@Base 3.7.0 - _ZN4geos5index8quadtree4Node4findEPKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree4Node7getNodeEPKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree4NodeD0Ev@Base 3.4.2 - _ZN4geos5index8quadtree4NodeD1Ev@Base 3.4.2 - _ZN4geos5index8quadtree4NodeD2Ev@Base 3.4.2 - _ZN4geos5index8quadtree4Root15insertContainedEPNS1_4NodeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index8quadtree4Root6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index8quadtree4Root6originE@Base 3.4.2 - _ZN4geos5index8quadtree4RootD0Ev@Base 3.4.2 - _ZN4geos5index8quadtree4RootD1Ev@Base 3.4.2 - _ZN4geos5index8quadtree4RootD2Ev@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase10visitItemsEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase15getSubnodeIndexEPKNS_4geom8EnvelopeERKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase3addEPv@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase5visitEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBase8getItemsEv@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBaseC1Ev@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBaseC2Ev@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBaseD0Ev@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBaseD1Ev@Base 3.4.2 - _ZN4geos5index8quadtree8NodeBaseD2Ev@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree12collectStatsERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree12ensureExtentEPKNS_4geom8EnvelopeEd@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree4sizeEv@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree5depthEv@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree5queryEPKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 - _ZN4geos5index8quadtree8Quadtree8queryAllEv@Base 3.4.2 - _ZN4geos5index8quadtree8QuadtreeD0Ev@Base 3.4.2 - _ZN4geos5index8quadtree8QuadtreeD1Ev@Base 3.4.2 - _ZN4geos5index8quadtree8QuadtreeD2Ev@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent11getIntervalEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent14getInsertEventEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent19getDeleteEventIndexEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent19setDeleteEventIndexEi@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent8isDeleteEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEvent8isInsertEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEventC1EdPS2_PNS1_17SweepLineIntervalE@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineEventC2EdPS2_PNS1_17SweepLineIntervalE@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndex10buildIndexEv@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndex15computeOverlapsEPNS1_22SweepLineOverlapActionE@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndex15processOverlapsEiiPNS1_17SweepLineIntervalEPNS1_22SweepLineOverlapActionE@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndex3addEPNS1_17SweepLineIntervalE@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndexC1Ev@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndexC2Ev@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndexD1Ev@Base 3.4.2 - _ZN4geos5index9sweepline14SweepLineIndexD2Ev@Base 3.4.2 - _ZN4geos5index9sweepline17SweepLineInterval6getMaxEv@Base 3.4.2 - _ZN4geos5index9sweepline17SweepLineInterval6getMinEv@Base 3.4.2 - _ZN4geos5index9sweepline17SweepLineInterval7getItemEv@Base 3.4.2 - _ZN4geos5index9sweepline17SweepLineIntervalC1EddPv@Base 3.4.2 - _ZN4geos5index9sweepline17SweepLineIntervalC2EddPv@Base 3.4.2 - _ZN4geos6noding11ScaledNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding11ScaledNoder6ScalerD0Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoder6ScalerD1Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoder6ScalerD2Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoder8ReScaler9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos6noding11ScaledNoder8ReScalerD0Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoder8ReScalerD1Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoder8ReScalerD2Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoderD0Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoderD1Ev@Base 3.4.2 - _ZN4geos6noding11ScaledNoderD2Ev@Base 3.4.2 - _ZN4geos6noding11SegmentNode9compareToERKS1_@Base 3.4.2 - _ZN4geos6noding11SegmentNodeC1ERKNS0_18NodedSegmentStringERKNS_4geom10CoordinateEji@Base 3.4.2 - _ZN4geos6noding11SegmentNodeC2ERKNS0_18NodedSegmentStringERKNS_4geom10CoordinateEji@Base 3.4.2 - _ZN4geos6noding11SimpleNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding11SimpleNoder17computeIntersectsEPNS0_13SegmentStringES3_@Base 3.4.2 - _ZN4geos6noding11SimpleNoderD0Ev@Base 3.4.2 - _ZN4geos6noding11SimpleNoderD1Ev@Base 3.4.2 - _ZN4geos6noding11SimpleNoderD2Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder15intersectChainsEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding12MCIndexNoder20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEjS6_j@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding12MCIndexNoder20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEmS6_m@Base 3.7.0 - _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD0Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD1Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD2Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder3addEPNS0_13SegmentStringE@Base 3.4.2 - _ZN4geos6noding12MCIndexNoder8getIndexEv@Base 3.4.2 - _ZN4geos6noding12MCIndexNoderD0Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoderD1Ev@Base 3.4.2 - _ZN4geos6noding12MCIndexNoderD2Ev@Base 3.4.2 - _ZN4geos6noding13GeometryNoder10toGeometryERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding13GeometryNoder21extractSegmentStringsERKNS_4geom8GeometryERSt6vectorIPNS0_13SegmentStringESaIS8_EE@Base 3.4.2 - _ZN4geos6noding13GeometryNoder4nodeERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos6noding13GeometryNoder8getNodedEv@Base 3.4.2 - _ZN4geos6noding13GeometryNoder8getNoderEv@Base 3.4.2 - _ZN4geos6noding13GeometryNoderC1ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos6noding13GeometryNoderC2ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos6noding13IteratedNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding13IteratedNoder4nodeEPSt6vectorIPNS0_13SegmentStringESaIS4_EEPi@Base 3.4.2 - _ZN4geos6noding13IteratedNoderD0Ev@Base 3.4.2 - _ZN4geos6noding13IteratedNoderD1Ev@Base 3.4.2 - _ZN4geos6noding13IteratedNoderD2Ev@Base 3.4.2 - _ZN4geos6noding15NodingValidator10checkValidEv@Base 3.4.2 - _ZN4geos6noding15NodingValidator26checkInteriorIntersectionsERKNS0_13SegmentStringES4_@Base 3.4.2 - _ZN4geos6noding15NodingValidator26checkInteriorIntersectionsERKNS0_13SegmentStringEjS4_j@Base 3.4.2 - _ZN4geos6noding15NodingValidator26checkInteriorIntersectionsEv@Base 3.4.2 - _ZN4geos6noding15SegmentNodeList12addEndpointsEv@Base 3.4.2 - _ZN4geos6noding15SegmentNodeList13addSplitEdgesERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding15SegmentNodeList15createSplitEdgeEPNS0_11SegmentNodeES3_@Base 3.4.2 - _ZN4geos6noding15SegmentNodeList17addCollapsedNodesEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList17findCollapseIndexERNS0_11SegmentNodeES3_Rj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList17findCollapseIndexERNS0_11SegmentNodeES3_Rm@Base 3.7.0 - _ZN4geos6noding15SegmentNodeList26checkSplitEdgesCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList30findCollapsesFromInsertedNodesERSt6vectorIjSaIjEE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList30findCollapsesFromInsertedNodesERSt6vectorImSaImEE@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList33findCollapsesFromExistingVerticesERSt6vectorIjSaIjEE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList33findCollapsesFromExistingVerticesERSt6vectorImSaImEE@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList3addERKNS_4geom10CoordinateEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList3addERKNS_4geom10CoordinateEm@Base 3.7.0 - _ZN4geos6noding15SegmentNodeListD0Ev@Base 3.4.2 - _ZN4geos6noding15SegmentNodeListD1Ev@Base 3.4.2 - _ZN4geos6noding15SegmentNodeListD2Ev@Base 3.4.2 - _ZN4geos6noding15SinglePassNoder21setSegmentIntersectorEPNS0_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos6noding17IntersectionAdder20processIntersectionsEPNS0_13SegmentStringEiS3_i@Base 3.4.2 - _ZN4geos6noding17IntersectionAdder21isTrivialIntersectionEPKNS0_13SegmentStringEiS4_i@Base 3.4.2 - _ZN4geos6noding17IntersectionAdderD0Ev@Base 3.4.2 - _ZN4geos6noding17IntersectionAdderD1Ev@Base 3.4.2 - _ZN4geos6noding17IntersectionAdderD2Ev@Base 3.4.2 - _ZN4geos6noding18BasicSegmentStringD0Ev@Base 3.4.2 - _ZN4geos6noding18BasicSegmentStringD1Ev@Base 3.4.2 - _ZN4geos6noding18BasicSegmentStringD2Ev@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString10safeOctantERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString11getNodeListEv@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString15addIntersectionEPNS_9algorithm15LineIntersectorEjii@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString15addIntersectionERKNS_4geom10CoordinateEj@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString16addIntersectionsEPNS_9algorithm15LineIntersectorEji@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString18getNodedSubstringsERKSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZN4geos6noding18NodedSegmentString18getNodedSubstringsERKSt6vectorIPNS0_13SegmentStringESaIS4_EEPS6_@Base 3.4.2 - _ZN4geos6noding18NodedSegmentStringD0Ev@Base 3.4.2 - _ZN4geos6noding18NodedSegmentStringD1Ev@Base 3.4.2 - _ZN4geos6noding18NodedSegmentStringD2Ev@Base 3.4.2 - _ZN4geos6noding19FastNodingValidator10checkValidEv@Base 3.4.2 - _ZN4geos6noding19FastNodingValidator26checkInteriorIntersectionsEv@Base 3.4.2 - _ZN4geos6noding23IntersectionFinderAdder20processIntersectionsEPNS0_13SegmentStringEiS3_i@Base 3.4.2 - _ZN4geos6noding23IntersectionFinderAdderD0Ev@Base 3.4.2 - _ZN4geos6noding23IntersectionFinderAdderD1Ev@Base 3.4.2 - _ZN4geos6noding23IntersectionFinderAdderD2Ev@Base 3.4.2 - _ZN4geos6noding23OrientedCoordinateArray11orientationERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos6noding23OrientedCoordinateArray15compareOrientedERKNS_4geom18CoordinateSequenceEbS5_b@Base 3.4.2 - _ZN4geos6noding27SegmentIntersectionDetector20processIntersectionsEPNS0_13SegmentStringEiS3_i@Base 3.4.2 - _ZN4geos6noding27SegmentIntersectionDetectorD0Ev@Base 3.4.2 - _ZN4geos6noding27SegmentIntersectionDetectorD1Ev@Base 3.4.2 - _ZN4geos6noding27SegmentIntersectionDetectorD2Ev@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinder10intersectsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinder10intersectsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EEPNS0_27SegmentIntersectionDetectorE@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinderC1EPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinderC2EPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinderD1Ev@Base 3.4.2 - _ZN4geos6noding32FastSegmentSetIntersectionFinderD2Ev@Base 3.4.2 - _ZN4geos6noding32SingleInteriorIntersectionFinder20processIntersectionsEPNS0_13SegmentStringEiS3_i@Base 3.4.2 - _ZN4geos6noding32SingleInteriorIntersectionFinderD0Ev@Base 3.4.2 - _ZN4geos6noding32SingleInteriorIntersectionFinderD1Ev@Base 3.4.2 - _ZN4geos6noding32SingleInteriorIntersectionFinderD2Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector10addToIndexEPNS0_13SegmentStringE@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15addToMonoChainsEPNS0_13SegmentStringE@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15intersectChainsEv@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15setBaseSegmentsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEjS6_j@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEmS6_m@Base 3.7.0 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD0Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD1Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD2Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersector7processEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorC1Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorC2Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD0Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD1Ev@Base 3.4.2 - _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD2Ev@Base 3.4.2 - _ZN4geos6noding6Octant6octantERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos6noding6Octant6octantEdd@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder12computeSnapsEPNS0_18NodedSegmentStringERSt6vectorINS_4geom10CoordinateESaIS7_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder12computeSnapsERKSt6vectorIPNS0_13SegmentStringESaIS5_EERS3_INS_4geom10CoordinateESaISB_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder16checkCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder18computeVertexSnapsEPNS0_18NodedSegmentStringES4_@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder18computeVertexSnapsERKSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder25findInteriorIntersectionsERSt6vectorIPNS0_13SegmentStringESaIS5_EERNS_9algorithm15LineIntersectorERS3_INS_4geom10CoordinateESaISD_EE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounder9snapRoundEPSt6vectorIPNS0_13SegmentStringESaIS5_EERNS_9algorithm15LineIntersectorE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounderC1ERKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounderC2ERKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounderD0Ev@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounderD1Ev@Base 3.4.2 - _ZN4geos6noding9snapround17SimpleSnapRounderD2Ev@Base 3.4.2 - _ZN4geos6noding9snapround18HotPixelSnapAction6selectERKNS_4geom11LineSegmentE@Base 3.4.2 - _ZN4geos6noding9snapround18HotPixelSnapAction6selectERNS_5index5chain13MonotoneChainEj@Base 3.4.2 - _ZN4geos6noding9snapround18HotPixelSnapActionD0Ev@Base 3.4.2 - _ZN4geos6noding9snapround18HotPixelSnapActionD1Ev@Base 3.4.2 - _ZN4geos6noding9snapround18HotPixelSnapActionD2Ev@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder16checkCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder18computeVertexSnapsEPNS0_18NodedSegmentStringE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder18computeVertexSnapsERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder24computeIntersectionSnapsERSt6vectorINS_4geom10CoordinateESaIS5_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder25findInteriorIntersectionsERNS0_12MCIndexNoderEPSt6vectorIPNS0_13SegmentStringESaIS7_EERS5_INS_4geom10CoordinateESaISC_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounder9snapRoundERNS0_12MCIndexNoderEPSt6vectorIPNS0_13SegmentStringESaIS7_EE@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounderD0Ev@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounderD1Ev@Base 3.4.2 - _ZN4geos6noding9snapround18MCIndexSnapRounderD2Ev@Base 3.4.2 - _ZN4geos6noding9snapround19MCIndexPointSnapper4snapERNS1_8HotPixelEPNS0_13SegmentStringEj@Base 3.4.2 - _ZN4geos6noding9snapround26MCIndexPointSnapperVisitor9visitItemEPv@Base 3.4.2 - _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD0Ev@Base 3.4.2 - _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD1Ev@Base 3.4.2 - _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD2Ev@Base 3.4.2 - _ZN4geos6noding9snapround8HotPixel11initCornersERKNS_4geom10CoordinateE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding9snapround8HotPixel14addSnappedNodeERNS0_18NodedSegmentStringEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding9snapround8HotPixel14addSnappedNodeERNS0_18NodedSegmentStringEm@Base 3.7.0 - _ZN4geos6noding9snapround8HotPixel22intersectsPixelClosureERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZN4geos6noding9snapround8HotPixelC1ERKNS_4geom10CoordinateEdRNS_9algorithm15LineIntersectorE@Base 3.4.2 - _ZN4geos6noding9snapround8HotPixelC2ERKNS_4geom10CoordinateEdRNS_9algorithm15LineIntersectorE@Base 3.4.2 - _ZN4geos6noding9snapround8HotPixelD1Ev@Base 3.4.2 - _ZN4geos6noding9snapround8HotPixelD2Ev@Base 3.4.2 - _ZN4geos6nodinglsERSoRKNS0_11SegmentNodeE@Base 3.4.2 - _ZN4geos6nodinglsERSoRKNS0_13SegmentStringE@Base 3.4.2 - _ZN4geos6nodinglsERSoRKNS0_15SegmentNodeListE@Base 3.4.2 - _ZN4geos8simplify13DPTransformer15createValidAreaEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos8simplify13DPTransformer16transformPolygonEPKNS_4geom7PolygonEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos8simplify13DPTransformer20transformCoordinatesEPKNS_4geom18CoordinateSequenceEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos8simplify13DPTransformer21transformMultiPolygonEPKNS_4geom12MultiPolygonEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos8simplify13DPTransformerC1Ed@Base 3.4.2 - _ZN4geos8simplify13DPTransformerC2Ed@Base 3.4.2 - _ZN4geos8simplify13DPTransformerD0Ev@Base 3.4.2 - _ZN4geos8simplify13DPTransformerD1Ev@Base 3.4.2 - _ZN4geos8simplify13DPTransformerD2Ev@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndex3addEPKNS_4geom11LineSegmentE@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndex3addERKNS0_16TaggedLineStringE@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndex6removeEPKNS_4geom11LineSegmentE@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndexC1Ev@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndexC2Ev@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndexD1Ev@Base 3.4.2 - _ZN4geos8simplify16LineSegmentIndexD2Ev@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineString10getSegmentEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineString10getSegmentEm@Base 3.7.0 - _ZN4geos8simplify16TaggedLineString11addToResultESt10unique_ptrINS0_17TaggedLineSegmentESt14default_deleteIS3_EE@Base 3.7.0 - _ZN4geos8simplify16TaggedLineString11getSegmentsEv@Base 3.4.2 - _ZN4geos8simplify16TaggedLineString18extractCoordinatesERKSt6vectorIPNS0_17TaggedLineSegmentESaIS4_EE@Base 3.4.2 - _ZN4geos8simplify16TaggedLineString4initEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineStringC1EPKNS_4geom10LineStringEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineStringC1EPKNS_4geom10LineStringEm@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineStringC2EPKNS_4geom10LineStringEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineStringC2EPKNS_4geom10LineStringEm@Base 3.7.0 - _ZN4geos8simplify16TaggedLineStringD1Ev@Base 3.4.2 - _ZN4geos8simplify16TaggedLineStringD2Ev@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC1ERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC1ERKNS_4geom10CoordinateES5_PKNS2_8GeometryEj@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC1ERKS1_@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC2ERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC2ERKNS_4geom10CoordinateES5_PKNS2_8GeometryEj@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentC2ERKS1_@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentD0Ev@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentD1Ev@Base 3.4.2 - _ZN4geos8simplify17TaggedLineSegmentD2Ev@Base 3.4.2 - _ZN4geos8simplify18LineSegmentVisitor9visitItemEPv@Base 3.4.2 - _ZN4geos8simplify18LineSegmentVisitorD0Ev@Base 3.4.2 - _ZN4geos8simplify18LineSegmentVisitorD1Ev@Base 3.4.2 - _ZN4geos8simplify18LineSegmentVisitorD2Ev@Base 3.4.2 - _ZN4geos8simplify21TaggedLinesSimplifier20setDistanceToleranceEd@Base 3.4.2 - _ZN4geos8simplify21TaggedLinesSimplifier8simplifyERNS0_16TaggedLineStringE@Base 3.4.2 - _ZN4geos8simplify21TaggedLinesSimplifierC1Ev@Base 3.4.2 - _ZN4geos8simplify21TaggedLinesSimplifierC2Ev@Base 3.4.2 - _ZN4geos8simplify24DouglasPeuckerSimplifier17getResultGeometryEv@Base 3.4.2 - _ZN4geos8simplify24DouglasPeuckerSimplifier20setDistanceToleranceEd@Base 3.4.2 - _ZN4geos8simplify24DouglasPeuckerSimplifier8simplifyEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos8simplify24DouglasPeuckerSimplifierC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos8simplify24DouglasPeuckerSimplifierC2EPKNS_4geom8GeometryE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15isInLineSectionEPKNS0_16TaggedLineStringERKSt6vectorIjSaIjEEPKNS0_17TaggedLineSegmentE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15isInLineSectionEPKNS0_16TaggedLineStringERKSt6vectorImSaImEEPKNS0_17TaggedLineSegmentE@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15simplifySectionEjjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15simplifySectionEmmm@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier17findFurthestPointEPKNS_4geom18CoordinateSequenceEjjRd@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier17findFurthestPointEPKNS_4geom18CoordinateSequenceEmmRd@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier18hasBadIntersectionEPKNS0_16TaggedLineStringERKSt6vectorIjSaIjEERKNS_4geom11LineSegmentE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier18hasBadIntersectionEPKNS0_16TaggedLineStringERKSt6vectorImSaImEERKNS_4geom11LineSegmentE@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier23hasBadInputIntersectionEPKNS0_16TaggedLineStringERKSt6vectorIjSaIjEERKNS_4geom11LineSegmentE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier23hasBadInputIntersectionEPKNS0_16TaggedLineStringERKSt6vectorImSaImEERKNS_4geom11LineSegmentE@Base 3.7.0 - _ZN4geos8simplify26TaggedLineStringSimplifier24hasBadOutputIntersectionERKNS_4geom11LineSegmentE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier6removeEPKNS0_16TaggedLineStringEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier6removeEPKNS0_16TaggedLineStringEmm@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier7flattenEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier7flattenEmm@Base 3.7.0 - _ZN4geos8simplify26TaggedLineStringSimplifier8simplifyEPNS0_16TaggedLineStringE@Base 3.4.2 - _ZN4geos8simplify26TaggedLineStringSimplifierC1EPNS0_16LineSegmentIndexES3_@Base 3.4.2 - _ZN4geos8simplify26TaggedLineStringSimplifierC2EPNS0_16LineSegmentIndexES3_@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify28DouglasPeuckerLineSimplifier15simplifySectionEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify28DouglasPeuckerLineSimplifier15simplifySectionEmm@Base 3.7.0 - _ZN4geos8simplify28DouglasPeuckerLineSimplifier20setDistanceToleranceEd@Base 3.4.2 - _ZN4geos8simplify28DouglasPeuckerLineSimplifier8simplifyERKSt6vectorINS_4geom10CoordinateESaIS4_EEd@Base 3.4.2 - _ZN4geos8simplify28DouglasPeuckerLineSimplifier8simplifyEv@Base 3.4.2 - _ZN4geos8simplify28DouglasPeuckerLineSimplifierC1ERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.4.2 - _ZN4geos8simplify28DouglasPeuckerLineSimplifierC2ERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.4.2 - _ZN4geos8simplify28TopologyPreservingSimplifier17getResultGeometryEv@Base 3.4.2 - _ZN4geos8simplify28TopologyPreservingSimplifier20setDistanceToleranceEd@Base 3.4.2 - _ZN4geos8simplify28TopologyPreservingSimplifier8simplifyEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos8simplify28TopologyPreservingSimplifierC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos8simplify28TopologyPreservingSimplifierC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull10grahamScanERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull13computeOctPtsERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull13getConvexHullEv@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull13lineOrPolygonERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull14computeOctRingERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull18extractCoordinatesEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull20toCoordinateSequenceERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull6reduceERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull7preSortERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull9cleanRingERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull9isBetweenERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm10ConvexHull9padArray3ERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHullC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHullC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm10ConvexHullD1Ev@Base 3.4.2 - _ZN4geos9algorithm10ConvexHullD2Ev@Base 3.4.2 - _ZN4geos9algorithm11HCoordinate12intersectionERKNS_4geom10CoordinateES5_S5_S5_RS3_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1ERKS1_S3_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1Eddd@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC1Ev@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2ERKS1_S3_@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2Eddd@Base 3.4.2 - _ZN4geos9algorithm11HCoordinateC2Ev@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms10signedAreaEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms13isPointInRingERKNS_4geom10CoordinateEPKNS2_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms13isPointInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms16distanceLineLineERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms16orientationIndexERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms17distancePointLineERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms17locatePointInRingERKNS_4geom10CoordinateERKNS2_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms17locatePointInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms18computeOrientationERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms30distancePointLinePerpendicularERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms5isCCWEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms6lengthEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CGAlgorithms8isOnLineERKNS_4geom10CoordinateEPKNS2_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea11addTriangleERKNS_4geom10CoordinateES5_S5_b@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea12setBasePointERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea17addLinearSegmentsERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea3addEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea3addEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea5area2ERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea7addHoleEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea8addShellEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidArea9centroid3ERKNS_4geom10CoordinateES5_S5_RS3_@Base 3.4.2 - _ZN4geos9algorithm12CentroidLine3addEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm12CentroidLine3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm12PointLocator15computeLocationERKNS_4geom10CoordinateEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos9algorithm12PointLocator18updateLocationInfoEi@Base 3.4.2 - _ZN4geos9algorithm12PointLocator19locateInPolygonRingERKNS_4geom10CoordinateEPKNS2_10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_10LineStringE@Base 3.4.2 - _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_5PointE@Base 3.5.1 - _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_7PolygonE@Base 3.4.2 - _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos9algorithm13CentroidPoint3addEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm13CentroidPoint3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecter6selectERKNS_4geom11LineSegmentE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecterC1ERKNS_4geom10CoordinateEPS1_@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecterC2ERKNS_4geom10CoordinateEPS1_@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecterD0Ev@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecterD1Ev@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10MCSelecterD2Ev@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing10buildIndexEv@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing15testLineSegmentERKNS_4geom10CoordinateERKNS2_11LineSegmentE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing17testMonotoneChainEPNS_4geom8EnvelopeEPNS1_10MCSelecterEPNS_5index5chain13MonotoneChainE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRing8isInsideERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRingC1EPKNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRingC2EPKNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRingD0Ev@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRingD1Ev@Base 3.4.2 - _ZN4geos9algorithm13MCPointInRingD2Ev@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector12interpolateZERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector15hasIntersectionERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector16computeIntersectERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector19computeEdgeDistanceERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector19computeIntLineIndexEi@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector19computeIntLineIndexEv@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector19computeIntersectionERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector19computeIntersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector20getIndexAlongSegmentEii@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector20isSameSignAndNonZeroEdd@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector22isInteriorIntersectionEi@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector22isInteriorIntersectionEv@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector27getIntersectionAlongSegmentEii@Base 3.4.2 - _ZN4geos9algorithm15LineIntersector28computeCollinearIntersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter11getDiameterEv@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter12getNextIndexEPKNS_4geom18CoordinateSequenceEj@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter18computeWidthConvexEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter18getMinimumDiameterEPNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9algorithm15MinimumDiameter18getWidthCoordinateEv@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter19findMaxPerpDistanceEPKNS_4geom18CoordinateSequenceEPNS2_11LineSegmentEj@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter19getMinimumRectangleEPNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9algorithm15MinimumDiameter19getMinimumRectangleEv@Base 3.6.0 - _ZN4geos9algorithm15MinimumDiameter20getSupportingSegmentEv@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter21computeSegmentForLineEddd@Base 3.6.0 - _ZN4geos9algorithm15MinimumDiameter22computeMinimumDiameterEv@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter28computeConvexRingMinDiameterEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameter8computeCEddRKNS_4geom10CoordinateE@Base 3.6.0 - _ZN4geos9algorithm15MinimumDiameter9getLengthEv@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterC1EPKNS_4geom8GeometryEb@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterC2EPKNS_4geom8GeometryEb@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterD1Ev@Base 3.4.2 - _ZN4geos9algorithm15MinimumDiameterD2Ev@Base 3.4.2 - _ZN4geos9algorithm16BoundaryNodeRule17getBoundaryOGCSFSEv@Base 3.4.2 - _ZN4geos9algorithm16BoundaryNodeRule19getBoundaryEndPointEv@Base 3.4.2 - _ZN4geos9algorithm16BoundaryNodeRule19getBoundaryRuleMod2Ev@Base 3.4.2 - _ZN4geos9algorithm16BoundaryNodeRule29getBoundaryMonovalentEndPointEv@Base 3.4.2 - _ZN4geos9algorithm16BoundaryNodeRule30getBoundaryMultivalentEndPointEv@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointArea10addPolygonEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointArea14widestGeometryEPKNS_4geom18GeometryCollectionE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointArea14widestGeometryEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointArea18horizontalBisectorEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointArea3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointAreaC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointAreaC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointAreaD1Ev@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointAreaD2Ev@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLine11addInteriorEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLine11addInteriorEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLine12addEndpointsEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLine12addEndpointsEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLine3addERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLineC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLineC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLineD1Ev@Base 3.4.2 - _ZN4geos9algorithm17InteriorPointLineD2Ev@Base 3.4.2 - _ZN4geos9algorithm17RobustDeterminant12signOfDet2x2Edddd@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRing8isInsideERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRingC1EPNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRingC2EPNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRingD0Ev@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRingD1Ev@Base 3.4.2 - _ZN4geos9algorithm17SimplePointInRingD2Ev@Base 3.4.2 - _ZN4geos9algorithm18InteriorPointPoint3addEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm18InteriorPointPoint3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm18InteriorPointPointC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm18InteriorPointPointC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm18RayCrossingCounter11getLocationEv@Base 3.4.2 - _ZN4geos9algorithm18RayCrossingCounter12countSegmentERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9algorithm18RayCrossingCounter16isPointInPolygonEv@Base 3.4.2 - _ZN4geos9algorithm18RayCrossingCounter16orientationIndexERKNS_4geom10CoordinateES5_S5_@Base 3.5.0 - _ZN4geos9algorithm18RayCrossingCounter17locatePointInRingERKNS_4geom10CoordinateERKNS2_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm18RayCrossingCounter17locatePointInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRing10buildIndexEv@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRing15testLineSegmentERKNS_4geom10CoordinateEPNS2_11LineSegmentE@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRing8isInsideERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRingC1EPNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRingC2EPNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRingD0Ev@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRingD1Ev@Base 3.4.2 - _ZN4geos9algorithm18SIRtreePointInRingD2Ev@Base 3.4.2 - _ZN4geos9algorithm25NotRepresentableExceptionC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos9algorithm25NotRepresentableExceptionC1Ev@Base 3.4.2 - _ZN4geos9algorithm25NotRepresentableExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos9algorithm25NotRepresentableExceptionC2Ev@Base 3.4.2 - _ZN4geos9algorithm25NotRepresentableExceptionD0Ev@Base 3.4.2 - _ZN4geos9algorithm25NotRepresentableExceptionD1Ev@Base 3.4.2 - _ZN4geos9algorithm25NotRepresentableExceptionD2Ev@Base 3.4.2 - _ZN4geos9algorithm5Angle10PI_TIMES_2E@Base 3.4.2 - _ZN4geos9algorithm5Angle12angleBetweenERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm5Angle13interiorAngleERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm5Angle17normalizePositiveEd@Base 3.4.2 - _ZN4geos9algorithm5Angle20angleBetweenOrientedERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm5Angle4diffEdd@Base 3.4.2 - _ZN4geos9algorithm5Angle5angleERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm5Angle5angleERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9algorithm5Angle7getTurnEdd@Base 3.4.2 - _ZN4geos9algorithm5Angle7isAcuteERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm5Angle8isObtuseERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm5Angle9PI_OVER_2E@Base 3.4.2 - _ZN4geos9algorithm5Angle9PI_OVER_4E@Base 3.4.2 - _ZN4geos9algorithm5Angle9normalizeEd@Base 3.4.2 - _ZN4geos9algorithm5Angle9toDegreesEd@Base 3.4.2 - _ZN4geos9algorithm5Angle9toRadiansEd@Base 3.4.2 - _ZN4geos9algorithm6locate24SimplePointInAreaLocator13containsPointERKNS_4geom10CoordinateEPKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate24SimplePointInAreaLocator22containsPointInPolygonERKNS_4geom10CoordinateEPKNS3_7PolygonE@Base 3.4.2 - _ZN4geos9algorithm6locate24SimplePointInAreaLocator6locateEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm6locate24SimplePointInAreaLocator6locateERKNS_4geom10CoordinateEPKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator10buildIndexERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitor9visitItemEPv@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD0Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD1Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD2Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry4initERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry5queryEddPNS_5index11ItemVisitorE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry7addLineEPNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryC1ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryC2ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryD1Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryD2Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocator6locateEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorC1ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorC2ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD0Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD1Ev@Base 3.4.2 - _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD2Ev@Base 3.4.2 - _ZN4geos9algorithm8Centroid11addTriangleERKNS_4geom10CoordinateES5_S5_b@Base 3.4.2 - _ZN4geos9algorithm8Centroid11getCentroidERKNS_4geom8GeometryERNS2_10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm8Centroid12setBasePointERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm8Centroid15addLineSegmentsERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm8Centroid3addERKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9algorithm8Centroid3addERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9algorithm8Centroid5area2ERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZN4geos9algorithm8Centroid7addHoleERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm8Centroid8addPointERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm8Centroid8addShellERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9algorithm8Centroid9centroid3ERKNS_4geom10CoordinateES5_S5_RS3_@Base 3.4.2 - _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom10LineStringERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 - _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom11LineSegmentERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 - _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom7PolygonERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 - _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom8GeometryERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 - (subst)_ZN4geos9algorithm8distance23DiscreteFrechetDistance13getSegementAtERKNS_4geom18CoordinateSequenceE{size_t}@Base 3.7.0 - (subst)_ZN4geos9algorithm8distance23DiscreteFrechetDistance17getFrecheDistanceERSt6vectorIS3_INS1_17PointPairDistanceESaIS4_EESaIS6_EE{size_t}{size_t}RKNS_4geom18CoordinateSequenceESD_@Base 3.7.0 - _ZN4geos9algorithm8distance23DiscreteFrechetDistance7computeERKNS_4geom8GeometryES6_@Base 3.7.0 - _ZN4geos9algorithm8distance23DiscreteFrechetDistance8distanceERKNS_4geom8GeometryES6_@Base 3.7.0 - _ZN4geos9algorithm8distance23DiscreteFrechetDistance8distanceERKNS_4geom8GeometryES6_d@Base 3.7.0 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD0Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD1Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD2Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance23computeOrientedDistanceERKNS_4geom8GeometryES6_RNS1_17PointPairDistanceE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter9filter_roERKNS_4geom18CoordinateSequenceEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter9filter_roERKNS_4geom18CoordinateSequenceEm@Base 3.7.0 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD0Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD1Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD2Ev@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance8distanceERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9algorithm8distance25DiscreteHausdorffDistance8distanceERKNS_4geom8GeometryES6_d@Base 3.4.2 - _ZN4geos9algorithmlsERSoRKNS0_11HCoordinateE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar11getLocationEiRKNS_4geom10CoordinateEPSt6vectorIPNS0_13GeometryGraphESaIS8_EE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar13getCoordinateEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar13insertEdgeEndEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar16computeLabellingEPSt6vectorIPNS0_13GeometryGraphESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar19propagateSideLabelsEi@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar20computeEdgeEndLabelsERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar22isAreaLabelsConsistentERKNS0_13GeometryGraphE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar25checkAreaLabelsConsistentEi@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar3endEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar4findEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar4rendEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar5beginEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar6rbeginEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar8getEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar9getDegreeEv@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStar9getNextCWEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStarC1Ev@Base 3.4.2 - _ZN4geos9geomgraph11EdgeEndStarC2Ev@Base 3.4.2 - _ZN4geos9geomgraph11NodeFactory8instanceEv@Base 3.4.2 - _ZN4geos9geomgraph11NodeFactoryD0Ev@Base 3.4.2 - _ZN4geos9geomgraph11NodeFactoryD1Ev@Base 3.4.2 - _ZN4geos9geomgraph11NodeFactoryD2Ev@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph10getNodeMapEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph10insertEdgeEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph10printEdgesB5cxx11Ev@Base 3.5.1 - _ZN4geos9geomgraph11PlanarGraph11findEdgeEndEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph11getEdgeEndsEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph14isBoundaryNodeEiRKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph15getEdgeIteratorEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph15getNodeIteratorEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph20linkAllDirectedEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph20matchInSameDirectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph23findEdgeInSameDirectionERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph23linkResultDirectedEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph3addEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph4findERNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph7addNodeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph7addNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph8addEdgesERKSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph8findEdgeERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraph8getNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphC1ERKNS0_11NodeFactoryE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphC1Ev@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphC2ERKNS0_11NodeFactoryE@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphC2Ev@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphD0Ev@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphD1Ev@Base 3.4.2 - _ZN4geos9geomgraph11PlanarGraphD2Ev@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge10getNextMinEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge10isInResultEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge10isLineEdgeEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge10setNextMinEPS1_@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge10setVisitedEb@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge11depthFactorEii@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge11getEdgeRingEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge11setEdgeRingEPNS0_8EdgeRingE@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge11setInResultEb@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge13setEdgeDepthsEii@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge14getMinEdgeRingEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge14setMinEdgeRingEPNS0_8EdgeRingE@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge14setVisitedEdgeEb@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge18isInteriorAreaEdgeEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge20computeDirectedLabelEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge6getSymEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge6setSymEPS1_@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge7getNextEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge7setNextEPS1_@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge8getDepthEi@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge8setDepthEii@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge9isForwardEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge9isVisitedEv@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdge9printEdgeB5cxx11Ev@Base 3.5.1 - _ZN4geos9geomgraph12DirectedEdgeC1EPNS0_4EdgeEb@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdgeC2EPNS0_4EdgeEb@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdgeD0Ev@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdgeD1Ev@Base 3.4.2 - _ZN4geos9geomgraph12DirectedEdgeD2Ev@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph10addPolygonEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph11getGeometryEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph11insertPointEiRKNS_4geom10CoordinateEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph12isInBoundaryEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph13addCollectionEPKNS_4geom18GeometryCollectionE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph13addLineStringEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph14addPolygonRingEPKNS_4geom10LinearRingEii@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph15getInvalidPointEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph15hasTooFewPointsEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph16computeSelfNodesERNS_9algorithm15LineIntersectorEbPKNS_4geom8EnvelopeE@Base 3.5.0 - _ZN4geos9geomgraph13GeometryGraph16computeSelfNodesERNS_9algorithm15LineIntersectorEbbPKNS_4geom8EnvelopeE@Base 3.5.1 - _ZN4geos9geomgraph13GeometryGraph16getBoundaryNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph16getBoundaryNodesEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph17computeSplitEdgesEPSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph17determineBoundaryERKNS_9algorithm16BoundaryNodeRuleEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph17determineBoundaryEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph17getBoundaryPointsEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph19insertBoundaryPointEiRKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph23addSelfIntersectionNodeEiRKNS_4geom10CoordinateEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph24addSelfIntersectionNodesEi@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph24computeEdgeIntersectionsEPS1_PNS_9algorithm15LineIntersectorEbPKNS_4geom8EnvelopeE@Base 3.5.0 - _ZN4geos9geomgraph13GeometryGraph24createEdgeSetIntersectorEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph7addEdgeEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph8addPointEPKNS_4geom5PointE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph8addPointERNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph8findEdgeEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraph8getEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC1EiPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC1EiPKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC1Ev@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC2EiPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC2EiPKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphC2Ev@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphD0Ev@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphD1Ev@Base 3.4.2 - _ZN4geos9geomgraph13GeometryGraphD2Ev@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponent10setCoveredEb@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponent10setVisitedEb@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponent11setInResultEb@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponent8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentC1ERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentC1Ev@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentC2ERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentC2Ev@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentD0Ev@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentD1Ev@Base 3.4.2 - _ZN4geos9geomgraph14GraphComponentD2Ev@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar13computeDepthsEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar13computeDepthsESt23_Rb_tree_const_iteratorIPNS0_7EdgeEndEES5_i@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar14mergeSymLabelsEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar15updateLabellingERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar16computeLabellingEPSt6vectorIPNS0_13GeometryGraphESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar16getRightmostEdgeEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar17getOutgoingDegreeEPNS0_8EdgeRingE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar17getOutgoingDegreeEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar18getResultAreaEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar20findCoveredLineEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar20linkAllDirectedEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar23linkResultDirectedEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar24linkMinimalDirectedEdgesEPNS0_8EdgeRingE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStar6insertEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStarD0Ev@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStarD1Ev@Base 3.4.2 - _ZN4geos9geomgraph16DirectedEdgeStarD2Ev@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocation11setLocationEi@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9geomgraph16TopologyLocation11setLocationEji@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9geomgraph16TopologyLocation11setLocationEmi@Base 3.7.0 - _ZN4geos9geomgraph16TopologyLocation12setLocationsEiii@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocation15setAllLocationsEi@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocation21setAllLocationsIfNullEi@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocation4flipEv@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocation5mergeERKS1_@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC1ERKS1_@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC1ERKSt6vectorIiSaIiEE@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC1Ei@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC1Eiii@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC1Ev@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC2ERKS1_@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC2ERKSt6vectorIiSaIiEE@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC2Ei@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC2Eiii@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationC2Ev@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationD1Ev@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationD2Ev@Base 3.4.2 - _ZN4geos9geomgraph16TopologyLocationaSERKS1_@Base 3.4.2 - _ZN4geos9geomgraph19EdgeNodingValidator16toSegmentStringsERSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph19EdgeNodingValidatorD1Ev@Base 3.4.2 - _ZN4geos9geomgraph19EdgeNodingValidatorD2Ev@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionList12addEndpointsEv@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionList13addSplitEdgesEPSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionList15createSplitEdgeEPNS0_16EdgeIntersectionES3_@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionList3addERKNS_4geom10CoordinateEid@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionListC1EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionListC2EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionListD1Ev@Base 3.4.2 - _ZN4geos9geomgraph20EdgeIntersectionListD2Ev@Base 3.4.2 - (optional=templinst)_ZN4geos9geomgraph26collect_intersecting_edgesIN9__gnu_cxx17__normal_iteratorIPPNS0_4EdgeESt6vectorIS5_SaIS5_EEEES9_EEvPKNS_4geom8EnvelopeET_SF_RT0_@Base 3.5.0 - _ZN4geos9geomgraph4Edge11getEnvelopeEv@Base 3.4.2 - _ZN4geos9geomgraph4Edge11setIsolatedEb@Base 3.4.2 - _ZN4geos9geomgraph4Edge13setDepthDeltaEi@Base 3.4.2 - _ZN4geos9geomgraph4Edge15addIntersectionEPNS_9algorithm15LineIntersectorEiii@Base 3.4.2 - _ZN4geos9geomgraph4Edge16addIntersectionsEPNS_9algorithm15LineIntersectorEii@Base 3.4.2 - _ZN4geos9geomgraph4Edge16getCollapsedEdgeEv@Base 3.4.2 - _ZN4geos9geomgraph4Edge20getMonotoneChainEdgeEv@Base 3.4.2 - _ZN4geos9geomgraph4Edge23getEdgeIntersectionListEv@Base 3.4.2 - _ZN4geos9geomgraph4Edge7setNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZN4geos9geomgraph4Edge8getDepthEv@Base 3.4.2 - _ZN4geos9geomgraph4Edge8updateIMERKNS0_5LabelERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9geomgraph4Edge9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9geomgraph4EdgeC1EPNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9geomgraph4EdgeC1EPNS_4geom18CoordinateSequenceERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph4EdgeC2EPNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9geomgraph4EdgeC2EPNS_4geom18CoordinateSequenceERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph4EdgeD0Ev@Base 3.4.2 - _ZN4geos9geomgraph4EdgeD1Ev@Base 3.4.2 - _ZN4geos9geomgraph4EdgeD2Ev@Base 3.4.2 - _ZN4geos9geomgraph4Node10mergeLabelERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph4Node10mergeLabelERKS1_@Base 3.4.2 - _ZN4geos9geomgraph4Node16setLabelBoundaryEi@Base 3.4.2 - _ZN4geos9geomgraph4Node21computeMergedLocationERKNS0_5LabelEi@Base 3.4.2 - _ZN4geos9geomgraph4Node3addEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph4Node4addZEd@Base 3.4.2 - _ZN4geos9geomgraph4Node5printB5cxx11Ev@Base 3.5.1 - _ZN4geos9geomgraph4Node8getEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph4Node8setLabelEii@Base 3.4.2 - _ZN4geos9geomgraph4Node9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9geomgraph4NodeC1ERKNS_4geom10CoordinateEPNS0_11EdgeEndStarE@Base 3.4.2 - _ZN4geos9geomgraph4NodeC2ERKNS_4geom10CoordinateEPNS0_11EdgeEndStarE@Base 3.4.2 - _ZN4geos9geomgraph4NodeD0Ev@Base 3.4.2 - _ZN4geos9geomgraph4NodeD1Ev@Base 3.4.2 - _ZN4geos9geomgraph4NodeD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5Depth15depthAtLocationEi@Base 3.4.2 - _ZN4geos9geomgraph5Depth3addERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph5Depth3addEiii@Base 3.4.2 - _ZN4geos9geomgraph5Depth8setDepthEiii@Base 3.4.2 - _ZN4geos9geomgraph5Depth9normalizeEv@Base 3.4.2 - _ZN4geos9geomgraph5DepthC1Ev@Base 3.4.2 - _ZN4geos9geomgraph5DepthC2Ev@Base 3.4.2 - _ZN4geos9geomgraph5DepthD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5DepthD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5DepthD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5Label11setLocationEii@Base 3.4.2 - _ZN4geos9geomgraph5Label11setLocationEiii@Base 3.4.2 - _ZN4geos9geomgraph5Label11toLineLabelERKS1_@Base 3.4.2 - _ZN4geos9geomgraph5Label15setAllLocationsEii@Base 3.4.2 - _ZN4geos9geomgraph5Label21setAllLocationsIfNullEi@Base 3.4.2 - _ZN4geos9geomgraph5Label21setAllLocationsIfNullEii@Base 3.4.2 - _ZN4geos9geomgraph5Label4flipEv@Base 3.4.2 - _ZN4geos9geomgraph5Label5mergeERKS1_@Base 3.4.2 - _ZN4geos9geomgraph5Label6toLineEi@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1ERKS1_@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1Ei@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1Eii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1Eiii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1Eiiii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC1Ev@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2ERKS1_@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2Ei@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2Eii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2Eiii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2Eiiii@Base 3.4.2 - _ZN4geos9geomgraph5LabelC2Ev@Base 3.4.2 - _ZN4geos9geomgraph5LabelaSERKS1_@Base 3.4.2 - _ZN4geos9geomgraph5index13MonotoneChainD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index13MonotoneChainD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index13MonotoneChainD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEvent5printB5cxx11Ev@Base 3.5.1 - _ZN4geos9geomgraph5index14SweepLineEvent9compareToEPS2_@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEventC1EPvdPS2_PNS1_17SweepLineEventOBJE@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEventC2EPvdPS2_PNS1_17SweepLineEventOBJE@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEventD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEventD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index14SweepLineEventD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegment20computeIntersectionsEPS2_PNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegment7getMaxXEv@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegment7getMinXEv@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegmentC1EPNS0_4EdgeEi@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegmentC2EPNS0_4EdgeEi@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegmentD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegmentD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index16SweepLineSegmentD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge14getCoordinatesEv@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge15getStartIndexesEv@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge17computeIntersectsERKS2_RNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge25computeIntersectsForChainEiRKS2_iRNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge25computeIntersectsForChainEiiRKS2_iiRNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge7getMaxXEi@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdge7getMinXEi@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdgeC1EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdgeC2EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdgeD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index17MonotoneChainEdgeD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index17SweepLineEventOBJD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index17SweepLineEventOBJD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index17SweepLineEventOBJD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector15hasIntersectionEv@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector15isBoundaryPointEPNS_9algorithm15LineIntersectorEPSt6vectorIPNS0_4NodeESaIS8_EE@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector15isBoundaryPointEPNS_9algorithm15LineIntersectorERSt6vectorIPS6_IPNS0_4NodeESaIS8_EESaISB_EE@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector16addIntersectionsEPNS0_4EdgeEiS4_i@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector16setBoundaryNodesEPSt6vectorIPNS0_4NodeESaIS5_EES8_@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector18isAdjacentSegmentsEii@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector20setIsDoneIfProperIntEb@Base 3.5.1 - _ZN4geos9geomgraph5index18SegmentIntersector21hasProperIntersectionEv@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector21isTrivialIntersectionEPNS0_4EdgeEiS4_i@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector26getProperIntersectionPointEv@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector29hasProperInteriorIntersectionEv@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersector9getIsDoneEv@Base 3.5.1 - _ZN4geos9geomgraph5index18SegmentIntersectorD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersectorD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index18SegmentIntersectorD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index20MonotoneChainIndexer12findChainEndEPKNS_4geom18CoordinateSequenceEi@Base 3.4.2 - _ZN4geos9geomgraph5index20MonotoneChainIndexer20getChainStartIndicesEPKNS_4geom18CoordinateSequenceERSt6vectorIiSaIiEE@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector17computeIntersectsEPNS0_4EdgeES4_PNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorC1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorC2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector13prepareEventsEv@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector15processOverlapsEiiPNS1_14SweepLineEventEPNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPNS0_4EdgeEPv@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EE@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EEPv@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorC1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorC2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector13prepareEventsEv@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector15processOverlapsEiiPNS1_14SweepLineEventEPNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPNS0_4EdgeEPv@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EE@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EEPv@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorC1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorC2Ev@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD0Ev@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD1Ev@Base 3.4.2 - _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD2Ev@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd11getQuadrantEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd12computeLabelERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd13getCoordinateEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd21getDirectedCoordinateEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd4initERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd5getDxEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd5getDyEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd7getNodeEv@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEnd7setNodeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeERKNS_4geom10CoordinateES7_@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeERKNS_4geom10CoordinateES7_RKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC1Ev@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeERKNS_4geom10CoordinateES7_@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeERKNS_4geom10CoordinateES7_RKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndC2Ev@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndD0Ev@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndD1Ev@Base 3.4.2 - _ZN4geos9geomgraph7EdgeEndD2Ev@Base 3.4.2 - _ZN4geos9geomgraph7NodeMap3addEPNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraph7NodeMap7addNodeEPNS0_4NodeE@Base 3.4.2 - _ZN4geos9geomgraph7NodeMap7addNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph7NodeMapC1ERKNS0_11NodeFactoryE@Base 3.4.2 - _ZN4geos9geomgraph7NodeMapC2ERKNS0_11NodeFactoryE@Base 3.4.2 - _ZN4geos9geomgraph7NodeMapD0Ev@Base 3.4.2 - _ZN4geos9geomgraph7NodeMapD1Ev@Base 3.4.2 - _ZN4geos9geomgraph7NodeMapD2Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList13findEdgeIndexEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList13findEqualEdgeEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList3addEPNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList3getEi@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList5printB5cxx11Ev@Base 3.5.1 - _ZN4geos9geomgraph8EdgeList6addAllERKSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeList9clearListEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeListD0Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeListD1Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeListD2Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing10isIsolatedEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing10mergeLabelERKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing10mergeLabelERKNS0_5LabelEi@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing11computeRingEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing11setInResultEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing13computePointsEPNS0_12DirectedEdgeE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing13containsPointERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing13getLinearRingEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing16getMaxNodeDegreeEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing20computeMaxNodeDegreeEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing6isHoleEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing7addHoleEPS1_@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing7isShellEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing8getEdgesEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing8getLabelEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing8getShellEv@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing8setShellEPS1_@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing9addPointsEPNS0_4EdgeEbb@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRing9toPolygonEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRingC1EPNS0_12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRingC2EPNS0_12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRingD0Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRingD1Ev@Base 3.4.2 - _ZN4geos9geomgraph8EdgeRingD2Ev@Base 3.4.2 - _ZN4geos9geomgraph8Position8oppositeEi@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant10isNorthernEi@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant10isOppositeEii@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant13isInHalfPlaneEii@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant15commonHalfPlaneEii@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant8quadrantERKNS_4geom10CoordinateES5_@Base 3.4.2 - _ZN4geos9geomgraph8Quadrant8quadrantEdd@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_11EdgeEndStarE@Base 3.6.0 - _ZN4geos9geomgraphlsERSoRKNS0_16TopologyLocationE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_20EdgeIntersectionListE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_4EdgeE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_4NodeE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_5LabelE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_7EdgeEndE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_8EdgeListE@Base 3.4.2 - _ZN4geos9geomgraphlsERSoRKNS0_8EdgeRingE@Base 3.4.2 - _ZN4geos9linearref14LinearIterator15loadCurrentLineEv@Base 3.4.2 - _ZN4geos9linearref14LinearIterator21segmentEndVertexIndexERKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9linearref14LinearIterator4nextEv@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryEjj@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryEjj@Base 3.4.2 - _ZN4geos9linearref14LinearLocation12snapToVertexEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9linearref14LinearLocation14getEndLocationEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref14LinearLocation21compareLocationValuesEjjdjjd@Base 3.4.2 - _ZN4geos9linearref14LinearLocation27pointAlongSegmentByFractionERKNS_4geom10CoordinateES5_d@Base 3.4.2 - _ZN4geos9linearref14LinearLocation5clampEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref14LinearLocation8setToEndEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref14LinearLocation9normalizeEv@Base 3.4.2 - _ZN4geos9linearref14LinearLocationC1Ejd@Base 3.4.2 - _ZN4geos9linearref14LinearLocationC1Ejjd@Base 3.4.2 - _ZN4geos9linearref14LinearLocationC2Ejd@Base 3.4.2 - _ZN4geos9linearref14LinearLocationC2Ejjd@Base 3.4.2 - _ZN4geos9linearref17LengthIndexedLineC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref17LengthIndexedLineC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref17LengthLocationMap9getLengthEPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9linearref17LengthLocationMapC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref17LengthLocationMapC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref18LengthIndexOfPoint12indexOfAfterEPKNS_4geom8GeometryERKNS2_10CoordinateEd@Base 3.4.2 - _ZN4geos9linearref18LengthIndexOfPoint7indexOfEPKNS_4geom8GeometryERKNS2_10CoordinateE@Base 3.4.2 - _ZN4geos9linearref18LengthIndexOfPointC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref18LengthIndexOfPointC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref19LocationIndexOfLine9indicesOfEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9linearref19LocationIndexOfLineC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref19LocationIndexOfLineC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref20LocationIndexOfPoint12indexOfAfterEPKNS_4geom8GeometryERKNS2_10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9linearref20LocationIndexOfPoint7indexOfEPKNS_4geom8GeometryERKNS2_10CoordinateE@Base 3.4.2 - _ZN4geos9linearref20LocationIndexOfPointC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref20LocationIndexOfPointC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocation11computeLineERKNS0_14LinearLocationES4_@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocation13computeLinearERKNS0_14LinearLocationES4_@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocation7extractEPKNS_4geom8GeometryERKNS0_14LinearLocationES8_@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocation7extractERKNS0_14LinearLocationES4_@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocation7reverseEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocationC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref21ExtractLineByLocationC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder11getGeometryEv@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder18setFixInvalidLinesEb@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder21setIgnoreInvalidLinesEb@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder3addERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder3addERKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilder7endLineEv@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilderD1Ev@Base 3.4.2 - _ZN4geos9linearref21LinearGeometryBuilderD2Ev@Base 3.4.2 - _ZN4geos9linearreflsERSoRKNS0_14LinearLocationE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp11addEndpointERSt3mapIPKNS_4geom10CoordinateEPNS0_12EndpointInfoENS3_18CoordinateLessThenESaISt4pairIKS6_S8_EEES6_b@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp18isSimpleMultiPointERKNS_4geom10MultiPointE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp22isSimpleLinearGeometryEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp26hasNonEndpointIntersectionERNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp29hasClosedEndpointIntersectionERNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom10MultiPointE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom15MultiLineStringE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOp8isSimpleEv@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC1ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC1ERKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC1Ev@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC2ERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC2ERKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation10IsSimpleOpC2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer10getDanglesEv@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer10polygonizeEv@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer11getCutEdgesEv@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer11getPolygonsEv@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer14findValidRingsERKSt6vectorIPNS1_8EdgeRingESaIS5_EERS7_RS3_IPNS_4geom10LineStringESaISD_EE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdder9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderC1EPS2_@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderC2EPS2_@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD0Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer17assignHoleToShellEPNS1_8EdgeRingERSt6vectorIS4_SaIS4_EE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer18findShellsAndHolesERKSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer19assignHolesToShellsERKSt6vectorIPNS1_8EdgeRingESaIS5_EERS7_@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer19getInvalidRingLinesEv@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer3addEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer3addEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer3addEPSt6vectorIPKNS_4geom8GeometryESaIS7_EE@Base 3.4.2 - _ZN4geos9operation10polygonize11Polygonizer3addEPSt6vectorIPNS_4geom8GeometryESaIS6_EE@Base 3.4.2 - _ZN4geos9operation10polygonize11PolygonizerC1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11PolygonizerC2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11PolygonizerD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize11PolygonizerD2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdge7getLineEv@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdgeC1EPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdgeC2EPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdgeD0Ev@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdgeD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize14PolygonizeEdgeD2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph12findEdgeRingEPNS1_22PolygonizeDirectedEdgeE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph12getEdgeRingsERSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph13deleteDanglesERSt6vectorIPKNS_4geom10LineStringESaIS7_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph14deleteAllEdgesEPNS_11planargraph4NodeE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph14deleteCutEdgesERSt6vectorIPKNS_4geom10LineStringESaIS7_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph18computeNextCWEdgesEPNS_11planargraph4NodeE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph18computeNextCWEdgesEv@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph18findDirEdgesInRingEPNS1_22PolygonizeDirectedEdgeERSt6vectorIPNS_11planargraph12DirectedEdgeESaIS8_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph19computeNextCCWEdgesEPNS_11planargraph4NodeEl@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph19getDegreeNonDeletedEPNS_11planargraph4NodeE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph20findLabeledEdgeRingsERSt6vectorIPNS_11planargraph12DirectedEdgeESaIS6_EERS3_IPNS1_22PolygonizeDirectedEdgeESaISB_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph21findIntersectionNodesEPNS1_22PolygonizeDirectedEdgeElRSt6vectorIPNS_11planargraph4NodeESaIS8_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph32convertMaximalToMinimalEdgeRingsERSt6vectorIPNS1_22PolygonizeDirectedEdgeESaIS5_EE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph5labelERSt6vectorIPNS_11planargraph12DirectedEdgeESaIS6_EEl@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph7addEdgeEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph7getNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraph9getDegreeEPNS_11planargraph4NodeEl@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraphC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraphC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraphD0Ev@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraphD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize15PolygonizeGraphD2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdge7setNextEPS2_@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdge7setRingEPNS1_8EdgeRingE@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdge8setLabelEl@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeC1EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeC2EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD0Ev@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD2Ev@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing10getPolygonEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing11ptNotInListEPKNS_4geom18CoordinateSequenceES6_@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing13getLineStringEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing14getCoordinatesEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing15getRingInternalEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing16getRingOwnershipEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing22findEdgeRingContainingEPS2_PSt6vectorIS3_SaIS3_EE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing3addEPKNS_11planargraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing6isHoleEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing7addEdgeEPKNS_4geom18CoordinateSequenceEbPS4_@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing7addHoleEPNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing7isValidEv@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRing8isInListERKNS_4geom10CoordinateEPKNS3_18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRingC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRingC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRingD1Ev@Base 3.4.2 - _ZN4geos9operation10polygonize8EdgeRingD2Ev@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp10clearEdgesERSt6vectorIPNS_4geom10LineStringESaIS6_EE@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp13sharedPathsOpERKNS_4geom8GeometryES6_RSt6vectorIPNS3_10LineStringESaIS9_EESC_@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp14getSharedPathsERSt6vectorIPNS_4geom10LineStringESaIS6_EES9_@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp16checkLinealInputERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp23findLinearIntersectionsERSt6vectorIPNS_4geom10LineStringESaIS6_EE@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOp9isForwardERKNS_4geom10LineStringERKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOpC1ERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation11sharedpaths13SharedPathsOpC2ERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation12EndpointInfoC1ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation12EndpointInfoC2ERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation12intersection13clip_to_edgesERdS2_ddRKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection14normalize_ringERSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.5.0 - _ZN4geos9operation12intersection14reverse_pointsERSt6vectorINS_4geom10CoordinateESaIS4_EEii@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection10clip_pointEPKNS_4geom5PointERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection12clipBoundaryERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection12clipBoundaryEv@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection12clip_polygonEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection15clip_linestringEPKNS_4geom10LineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection15clip_multipointEPKNS_4geom10MultiPointERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection17clip_multipolygonEPKNS_4geom12MultiPolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection20clip_multilinestringEPKNS_4geom15MultiLineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection21clip_linestring_partsEPKNS_4geom10LineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection23clip_geometrycollectionEPKNS_4geom18GeometryCollectionERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection24clip_polygon_to_polygonsEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection27clip_polygon_to_linestringsEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection4clipERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection4clipEv@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersection9clip_geomEPKNS_4geom8GeometryERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersectionC1ERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection21RectangleIntersectionC2ERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder10close_ringERKNS1_9RectangleEPSt6vectorINS_4geom10CoordinateESaIS8_EE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder12reverseLinesEv@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder14close_boundaryERKNS1_9RectangleEPSt6vectorINS_4geom10CoordinateESaIS8_EEdddd@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder17reconnectPolygonsERKNS1_9RectangleE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom10LineStringE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom5PointE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom7PolygonE@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder5buildEv@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder5clearEv@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder7releaseERS2_@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilder9reconnectEv@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilderD1Ev@Base 3.5.0 - _ZN4geos9operation12intersection28RectangleIntersectionBuilderD2Ev@Base 3.5.0 - _ZN4geos9operation12intersection8distanceERKNS1_9RectangleERKSt6vectorINS_4geom10CoordinateESaIS7_EE@Base 3.5.0 - _ZN4geos9operation12intersection8distanceERKNS1_9RectangleERKSt6vectorINS_4geom10CoordinateESaIS7_EEPKNS6_10LineStringE@Base 3.5.0 - _ZN4geos9operation12intersection8distanceERKNS1_9RectangleEdddd@Base 3.5.0 - _ZN4geos9operation12intersection9RectangleC1Edddd@Base 3.5.0 - _ZN4geos9operation12intersection9RectangleC2Edddd@Base 3.5.0 - _ZN4geos9operation22GeometryGraphOperation23setComputationPrecisionEPKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryES5_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryES5_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationD0Ev@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationD1Ev@Base 3.4.2 - _ZN4geos9operation22GeometryGraphOperationD2Ev@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester13getCoordinateEv@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom12MultiPolygonE@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom15MultiLineStringE@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom18GeometryCollectionE@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTester15getInvalidPointEv@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTester17hasDuplicateRingsEv@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTester20isNodeConsistentAreaEv@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTester30isNodeEdgeAreaLabelsConsistentEv@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTesterC1EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTesterC2EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTesterD1Ev@Base 3.4.2 - _ZN4geos9operation5valid20ConsistentAreaTesterD2Ev@Base 3.4.2 - _ZN4geos9operation5valid22SimpleNestedRingTester11isNonNestedEv@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester13getCoordinateEv@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester14buildEdgeRingsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EERS3_IPNS4_8EdgeRingESaISB_EE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester17visitInteriorRingEPKNS_4geom10LineStringERNS_9geomgraph11PlanarGraphE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester18findDifferentPointEPKNS_4geom18CoordinateSequenceERKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester19visitShellInteriorsEPKNS_4geom8GeometryERNS_9geomgraph11PlanarGraphE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester20isInteriorsConnectedEv@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester21hasUnvisitedShellEdgeEPSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester24setInteriorEdgesInResultERNS_9geomgraph11PlanarGraphE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTester24visitLinkedDirectedEdgesEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTesterC1ERNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTesterC2ERNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTesterD1Ev@Base 3.4.2 - _ZN4geos9operation5valid23ConnectedInteriorTesterD2Ev@Base 3.4.2 - _ZN4geos9operation5valid23IndexedNestedRingTester10buildIndexEv@Base 3.4.2 - _ZN4geos9operation5valid23IndexedNestedRingTester11isNonNestedEv@Base 3.4.2 - _ZN4geos9operation5valid23IndexedNestedRingTesterD1Ev@Base 3.4.2 - _ZN4geos9operation5valid23IndexedNestedRingTesterD2Ev@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationError10getMessageB5cxx11Ev@Base 3.5.1 - _ZN4geos9operation5valid23TopologyValidationError12getErrorTypeEv@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationError13getCoordinateEv@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationError6errMsgE@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationError8toStringB5cxx11Ev@Base 3.5.1 - _ZN4geos9operation5valid23TopologyValidationErrorC1Ei@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationErrorC1EiRKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationErrorC2Ei@Base 3.4.2 - _ZN4geos9operation5valid23TopologyValidationErrorC2EiRKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTester11isNonNestedEv@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTester13buildQuadtreeEv@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTester14getNestedPointEv@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTester3addEPKNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTesterC1EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTesterC2EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTesterD1Ev@Base 3.4.2 - _ZN4geos9operation5valid24QuadtreeNestedRingTesterD2Ev@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester10buildIndexEv@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester11isNonNestedEv@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapAction7overlapEPNS_5index9sweepline17SweepLineIntervalES7_@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionC1EPS2_@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionC2EPS2_@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD0Ev@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD1Ev@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD2Ev@Base 3.4.2 - _ZN4geos9operation5valid25SweeplineNestedRingTester8isInsideEPNS_4geom10LinearRingES5_@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom12MultiPolygonE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom18GeometryCollectionE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom5PointE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp10checkValidEv@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp13findPtNotNodeEPKNS_4geom18CoordinateSequenceEPKNS3_10LinearRingEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp15checkClosedRingEPKNS_4geom10LinearRingE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp16checkClosedRingsEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp17checkHolesInShellEPKNS_4geom7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp17checkTooFewPointsEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp18getValidationErrorEv@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp19checkConsistentAreaEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp19checkHolesNotNestedEPKNS_4geom7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp19checkShellNotNestedEPKNS_4geom10LinearRingEPKNS3_7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp20checkShellInsideHoleEPKNS_4geom10LinearRingES6_PNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp20checkShellsNotNestedEPKNS_4geom12MultiPolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp23checkConnectedInteriorsERNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp23checkInvalidCoordinatesEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp23checkInvalidCoordinatesEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp27checkNoSelfIntersectingRingERNS_9geomgraph20EdgeIntersectionListE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp28checkNoSelfIntersectingRingsEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp7isValidERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp7isValidERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOp7isValidEv@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOpD0Ev@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOpD1Ev@Base 3.4.2 - _ZN4geos9operation5valid9IsValidOpD2Ev@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder10depthDeltaERKNS_9geomgraph5LabelE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder14buildSubgraphsERKSt6vectorIPNS1_14BufferSubgraphESaIS5_EERNS0_7overlay14PolygonBuilderE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder15createSubgraphsEPNS_9geomgraph11PlanarGraphERSt6vectorIPNS1_14BufferSubgraphESaIS8_EE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder16insertUniqueEdgeEPNS_9geomgraph4EdgeE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder17computeNodedEdgesERSt6vectorIPNS_6noding13SegmentStringESaIS6_EEPKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder21bufferLineSingleSidedEPKNS_4geom8GeometryEdb@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilder8getNoderEPKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilderD1Ev@Base 3.4.2 - _ZN4geos9operation6buffer13BufferBuilderD2Ev@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph11getEnvelopeEv@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph12addReachableEPNS_9geomgraph4NodeE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph12computeDepthEi@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph13computeDepthsEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph13copySymDepthsEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph15findResultEdgesEv@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph16computeNodeDepthEPNS_9geomgraph4NodeE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph17clearVisitedEdgesEv@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph3addEPNS_9geomgraph4NodeEPSt6vectorIS5_SaIS5_EE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph6createEPNS_9geomgraph4NodeE@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph8containsERSt3setIPNS_9geomgraph4NodeESt4lessIS6_ESaIS6_EES6_@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraph9compareToEPS2_@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraphC1Ev@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraphC2Ev@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraphD1Ev@Base 3.4.2 - _ZN4geos9operation6buffer14BufferSubgraphD2Ev@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParameters19DEFAULT_MITRE_LIMITE@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParameters19bufferDistanceErrorEi@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParameters19setQuadrantSegmentsEi@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC1Ei@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC1EiNS2_11EndCapStyleE@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC1EiNS2_11EndCapStyleENS2_9JoinStyleEd@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC1Ev@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC2Ei@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC2EiNS2_11EndCapStyleE@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC2EiNS2_11EndCapStyleENS2_9JoinStyleEd@Base 3.4.2 - _ZN4geos9operation6buffer16BufferParametersC2Ev@Base 3.4.2 - _ZN4geos9operation6buffer16BufferSubgraphGTEPNS1_14BufferSubgraphES3_@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder12getLineCurveEPKNS_4geom18CoordinateSequenceEdRSt6vectorIPS4_SaIS8_EE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder12getRingCurveEPKNS_4geom18CoordinateSequenceEidRSt6vectorIPS4_SaIS8_EE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder15SIMPLIFY_FACTORE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder17computePointCurveERKNS_4geom10CoordinateERNS1_22OffsetSegmentGeneratorE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder17simplifyToleranceEd@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder22computeLineBufferCurveERKNS_4geom18CoordinateSequenceERNS1_22OffsetSegmentGeneratorE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder22computeRingBufferCurveERKNS_4geom18CoordinateSequenceEiRNS1_22OffsetSegmentGeneratorE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder23getSingleSidedLineCurveEPKNS_4geom18CoordinateSequenceEdRSt6vectorIPS4_SaIS8_EEbb@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder29computeSingleSidedBufferCurveERKNS_4geom18CoordinateSequenceEbRNS1_22OffsetSegmentGeneratorE@Base 3.4.2 - _ZN4geos9operation6buffer18OffsetCurveBuilder9getSegGenEd@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder16getRightmostSideEPNS_9geomgraph12DirectedEdgeEi@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder23findRightmostEdgeAtNodeEv@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder25findRightmostEdgeAtVertexEv@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder25getRightmostSideOfSegmentEPNS_9geomgraph12DirectedEdgeEi@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder27checkForRightmostCoordinateEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinder8findEdgeEPSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinderC1Ev@Base 3.4.2 - _ZN4geos9operation6buffer19RightmostEdgeFinderC2Ev@Base 3.4.2 - _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateEPNS_9geomgraph12DirectedEdgeERSt6vectorIPNS1_12DepthSegmentESaISC_EE@Base 3.4.2 - _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateEPSt6vectorIPNS_9geomgraph12DirectedEdgeESaISA_EERS7_IPNS1_12DepthSegmentESaISF_EE@Base 3.4.2 - _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateERSt6vectorIPNS1_12DepthSegmentESaIS9_EE@Base 3.4.2 - _ZN4geos9operation6buffer20SubgraphDepthLocater8getDepthERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder10addPolygonEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder13addCollectionEPKNS_4geom18GeometryCollectionE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder13addLineStringEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder14addPolygonRingEPKNS_4geom18CoordinateSequenceEdiii@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder18isErodedCompletelyEPKNS_4geom10LinearRingEd@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder26isTriangleErodedCompletelyEPKNS_4geom18CoordinateSequenceEd@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder3addERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder8addCurveEPNS_4geom18CoordinateSequenceEii@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder8addPointEPKNS_4geom5PointE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder9addCurvesERKSt6vectorIPNS_4geom18CoordinateSequenceESaIS6_EEii@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilder9getCurvesEv@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilderC1ERKNS_4geom8GeometryEdRNS1_18OffsetCurveBuilderE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilderC2ERKNS_4geom8GeometryEdRNS1_18OffsetCurveBuilderE@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilderD1Ev@Base 3.4.2 - _ZN4geos9operation6buffer21OffsetCurveSetBuilderD2Ev@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator12addBevelJoinERKNS_4geom11LineSegmentES6_@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator12addCollinearEb@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator12addMitreJoinERKNS_4geom10CoordinateERKNS3_11LineSegmentES9_d@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator12createCircleERKNS_4geom10CoordinateEd@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator12createSquareERKNS_4geom10CoordinateEd@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator13addInsideTurnEib@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator13addLineEndCapERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator14addNextSegmentERKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator14addOutsideTurnEib@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator15SIMPLIFY_FACTORE@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator16initSideSegmentsERKNS_4geom10CoordinateES6_i@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator19addLimitedMitreJoinERKNS_4geom11LineSegmentES6_dd@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator20computeOffsetSegmentERKNS_4geom11LineSegmentEidRS4_@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator2PIE@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator32OFFSET_SEGMENT_SEPARATION_FACTORE@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator33CURVE_VERTEX_SNAP_DISTANCE_FACTORE@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator39INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTORE@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator4initEd@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator9addFilletERKNS_4geom10CoordinateES6_S6_id@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGenerator9addFilletERKNS_4geom10CoordinateEddid@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGeneratorC1EPKNS_4geom14PrecisionModelERKNS1_16BufferParametersEd@Base 3.4.2 - _ZN4geos9operation6buffer22OffsetSegmentGeneratorC2EPKNS_4geom14PrecisionModelERKNS1_16BufferParametersEd@Base 3.4.2 - _ZN4geos9operation6buffer25BufferInputLineSimplifier24deleteShallowConcavitiesEv@Base 3.4.2 - _ZN4geos9operation6buffer25BufferInputLineSimplifier8simplifyERKNS_4geom18CoordinateSequenceEd@Base 3.4.2 - _ZN4geos9operation6buffer25BufferInputLineSimplifier8simplifyEd@Base 3.4.2 - _ZN4geos9operation6buffer25BufferInputLineSimplifierC1ERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation6buffer25BufferInputLineSimplifierC2ERKNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp15computeGeometryEv@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp17getResultGeometryEd@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp20bufferFixedPrecisionERKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp20precisionScaleFactorEPKNS_4geom8GeometryEdi@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp22bufferReducedPrecisionEi@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp22bufferReducedPrecisionEv@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp23bufferOriginalPrecisionEv@Base 3.4.2 - _ZN4geos9operation6buffer8BufferOp8bufferOpEPKNS_4geom8GeometryEdii@Base 3.4.2 - _ZN4geos9operation6bufferlsERSoRKNS1_14BufferSubgraphE@Base 3.4.2 - _ZN4geos9operation6relate10RelateNode17updateIMFromEdgesERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate10RelateNode9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate10RelateNodeC1ERKNS_4geom10CoordinateEPNS_9geomgraph11EdgeEndStarE@Base 3.4.2 - _ZN4geos9operation6relate10RelateNodeC2ERKNS_4geom10CoordinateEPNS_9geomgraph11EdgeEndStarE@Base 3.4.2 - _ZN4geos9operation6relate10RelateNodeD0Ev@Base 3.4.2 - _ZN4geos9operation6relate10RelateNodeD1Ev@Base 3.4.2 - _ZN4geos9operation6relate10RelateNodeD2Ev@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle11getEdgeEndsEv@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle12computeLabelERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle14computeLabelOnEiRKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle16computeLabelSideEii@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle17computeLabelSidesEi@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle6insertEPNS_9geomgraph7EdgeEndE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundle8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundleC1EPNS_9geomgraph7EdgeEndE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundleC2EPNS_9geomgraph7EdgeEndE@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundleD0Ev@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundleD1Ev@Base 3.4.2 - _ZN4geos9operation6relate13EdgeEndBundleD2Ev@Base 3.4.2 - _ZN4geos9operation6relate14EdgeEndBuilder15computeEdgeEndsEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EE@Base 3.4.2 - _ZN4geos9operation6relate14EdgeEndBuilder15computeEdgeEndsEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6relate14EdgeEndBuilder20createEdgeEndForNextEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EEPNS3_16EdgeIntersectionESD_@Base 3.4.2 - _ZN4geos9operation6relate14EdgeEndBuilder20createEdgeEndForPrevEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EEPNS3_16EdgeIntersectionESD_@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer14insertEdgeEndsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer14labelNodeEdgesEv@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer17computeDisjointIMEPNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer17labelIsolatedEdgeEPNS_9geomgraph4EdgeEiPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer17labelIsolatedNodeEPNS_9geomgraph4NodeEi@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer18copyNodesAndLabelsEi@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer18labelIsolatedEdgesEii@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer18labelIsolatedNodesEv@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer22labelIntersectionNodesEi@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer24computeIntersectionNodesEi@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer27computeProperIntersectionIMEPNS_9geomgraph5index18SegmentIntersectorEPNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputer9computeIMEv@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputerC1EPSt6vectorIPNS_9geomgraph13GeometryGraphESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputerC2EPSt6vectorIPNS_9geomgraph13GeometryGraphESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputerD1Ev@Base 3.4.2 - _ZN4geos9operation6relate14RelateComputerD2Ev@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraph10getNodeMapEv@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraph14insertEdgeEndsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EE@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraph18copyNodesAndLabelsEPNS_9geomgraph13GeometryGraphEi@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraph24computeIntersectionNodesEPNS_9geomgraph13GeometryGraphEi@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraph5buildEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraphC1Ev@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraphC2Ev@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraphD0Ev@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraphD1Ev@Base 3.4.2 - _ZN4geos9operation6relate15RelateNodeGraphD2Ev@Base 3.4.2 - _ZN4geos9operation6relate17EdgeEndBundleStar6insertEPNS_9geomgraph7EdgeEndE@Base 3.4.2 - _ZN4geos9operation6relate17EdgeEndBundleStar8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 - _ZN4geos9operation6relate17EdgeEndBundleStarD0Ev@Base 3.4.2 - _ZN4geos9operation6relate17EdgeEndBundleStarD1Ev@Base 3.4.2 - _ZN4geos9operation6relate17EdgeEndBundleStarD2Ev@Base 3.4.2 - _ZN4geos9operation6relate17RelateNodeFactory8instanceEv@Base 3.4.2 - _ZN4geos9operation6relate17RelateNodeFactoryD0Ev@Base 3.4.2 - _ZN4geos9operation6relate17RelateNodeFactoryD1Ev@Base 3.4.2 - _ZN4geos9operation6relate17RelateNodeFactoryD2Ev@Base 3.4.2 - _ZN4geos9operation6relate8RelateOp21getIntersectionMatrixEv@Base 3.4.2 - _ZN4geos9operation6relate8RelateOp6relateEPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation6relate8RelateOp6relateEPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpC1EPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpC2EPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpD0Ev@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpD1Ev@Base 3.4.2 - _ZN4geos9operation6relate8RelateOpD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder10buildLinesENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder10propagateZEPNS_4geom18CoordinateSequenceE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder12collectLinesENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder15collectLineEdgeEPNS_9geomgraph12DirectedEdgeENS1_9OverlayOp6OpCodeEPSt6vectorIPNS3_4EdgeESaISA_EE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder17labelIsolatedLineEPNS_9geomgraph4EdgeEi@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder18labelIsolatedLinesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder20findCoveredLineEdgesEv@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder24collectBoundaryTouchEdgeEPNS_9geomgraph12DirectedEdgeENS1_9OverlayOp6OpCodeEPSt6vectorIPNS3_4EdgeESaISA_EE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilder5buildENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilderC1EPNS1_9OverlayOpEPKNS_4geom15GeometryFactoryEPNS_9algorithm12PointLocatorE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilderC2EPNS1_9OverlayOpEPKNS_4geom15GeometryFactoryEPNS_9algorithm12PointLocatorE@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilderD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay11LineBuilderD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay12EdgeSetNoder13getNodedEdgesEv@Base 3.4.2 - _ZN4geos9operation7overlay12EdgeSetNoder8addEdgesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 - _ZN4geos9operation7overlay12PointBuilder24filterCoveredNodeToPointEPKNS_9geomgraph4NodeE@Base 3.4.2 - _ZN4geos9operation7overlay12PointBuilder28extractNonCoveredResultNodesENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay12PointBuilder5buildENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder11getPolygonsEv@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder13containsPointERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder14placeFreeHolesERSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EES9_@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder15computePolygonsERSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder17placePolygonHolesEPNS_9geomgraph8EdgeRingEPSt6vectorIPNS1_15MinimalEdgeRingESaIS8_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder18sortShellsAndHolesERSt6vectorIPNS1_15MaximalEdgeRingESaIS5_EERS3_IPNS_9geomgraph8EdgeRingESaISB_EESE_@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder21buildMaximalEdgeRingsEPKSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EERS3_IPNS1_15MaximalEdgeRingESaISC_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder21buildMinimalEdgeRingsERSt6vectorIPNS1_15MaximalEdgeRingESaIS5_EERS3_IPNS_9geomgraph8EdgeRingESaISB_EESE_S8_@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder22findEdgeRingContainingEPNS_9geomgraph8EdgeRingERSt6vectorIS5_SaIS5_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder3addEPKSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EEPKS3_IPNS4_4NodeESaISC_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder3addEPNS_9geomgraph11PlanarGraphE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilder9findShellEPSt6vectorIPNS1_15MinimalEdgeRingESaIS5_EE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilderD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay14PolygonBuilderD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrix3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrix3addERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrix7getCellERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrixC1ERKNS_4geom8EnvelopeEjj@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrixC2ERKNS_4geom8EnvelopeEjj@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrixD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay15ElevationMatrixD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing11setEdgeRingEPNS_9geomgraph12DirectedEdgeEPNS3_8EdgeRingE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsERSt6vectorIPNS1_15MinimalEdgeRingESaIS5_EE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsERSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsEv@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing36linkDirectedEdgesForMinimalEdgeRingsEv@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRing7getNextEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRingC1EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRingC2EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRingD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRingD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MaximalEdgeRingD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRing11setEdgeRingEPNS_9geomgraph12DirectedEdgeEPNS3_8EdgeRingE@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRing7getNextEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRingC1EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRingC2EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRingD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRingD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay15MinimalEdgeRingD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay18OverlayNodeFactory8instanceEv@Base 3.4.2 - _ZN4geos9operation7overlay18OverlayNodeFactoryD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay18OverlayNodeFactoryD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay18OverlayNodeFactoryD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCell3addERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCell3addEd@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCellC1Ev@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCellC2Ev@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCellD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay19ElevationMatrixCellD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilterC1ERNS1_15ElevationMatrixE@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilterC2ERNS1_15ElevationMatrixE@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilterD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilterD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay21ElevationMatrixFilterD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay4snap13SnapOverlayOp13prepareResultERNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay4snap13SnapOverlayOp16removeCommonBitsERKNS_4geom8GeometryES7_RNS4_11GeomPtrPairE@Base 3.4.2 - _ZN4geos9operation7overlay4snap13SnapOverlayOp17getResultGeometryENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay4snap13SnapOverlayOp20computeSnapToleranceEv@Base 3.4.2 - _ZN4geos9operation7overlay4snap13SnapOverlayOp4snapERNS_4geom11GeomPtrPairE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper10snapToSelfERKNS_4geom8GeometryEdb@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper10snapToSelfEdb@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper19snapPrecisionFactorE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper24extractTargetCoordinatesERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper27computeOverlaySnapToleranceERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper27computeOverlaySnapToleranceERKNS_4geom8GeometryES7_@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper29computeSizeBasedSnapToleranceERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper4snapERKNS_4geom8GeometryES7_dRNS4_11GeomPtrPairE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15GeometrySnapper6snapToERKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation7overlay4snap15SnapTransformer20transformCoordinatesEPKNS_4geom18CoordinateSequenceEPKNS4_8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay4snap15SnapTransformerD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay4snap15SnapTransformerD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay4snap15SnapTransformerD2Ev@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper12snapSegmentsERNS_4geom14CoordinateListERKSt6vectorIPKNS4_10CoordinateESaISA_EE@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper12snapVerticesERNS_4geom14CoordinateListERKSt6vectorIPKNS4_10CoordinateESaISA_EE@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper16findVertexToSnapERKNS_4geom10CoordinateESt14_List_iteratorIS5_ES9_@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper17findSegmentToSnapERKNS_4geom10CoordinateESt14_List_iteratorIS5_ES9_@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper17findSnapForVertexERKNS_4geom10CoordinateERKSt6vectorIPS6_SaIS9_EE@Base 3.4.2 - _ZN4geos9operation7overlay4snap17LineStringSnapper6snapToERKSt6vectorIPKNS_4geom10CoordinateESaIS8_EE@Base 3.4.2 - _ZN4geos9operation7overlay4snap21SnapIfNeededOverlayOp17getResultGeometryENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay8validate17FuzzyPointLocator11getLineWorkERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay8validate17FuzzyPointLocator11getLocationERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay8validate17FuzzyPointLocator15extractLineWorkERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay8validate17FuzzyPointLocatorC1ERKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation7overlay8validate17FuzzyPointLocatorC2ERKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation7overlay8validate20OffsetPointGenerator13extractPointsEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation7overlay8validate20OffsetPointGenerator14computeOffsetsERKNS_4geom10CoordinateES7_@Base 3.4.2 - _ZN4geos9operation7overlay8validate20OffsetPointGenerator9getPointsEv@Base 3.4.2 - _ZN4geos9operation7overlay8validate20OffsetPointGeneratorC1ERKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation7overlay8validate20OffsetPointGeneratorC2ERKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator10addTestPtsERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator11addVerticesERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator13isValidResultENS1_9OverlayOp6OpCodeERSt6vectorINS_4geom8Location5ValueESaIS9_EE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator32computeBoundaryDistanceToleranceERKNS_4geom8GeometryES7_@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator7isValidENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator7isValidERKNS_4geom8GeometryES7_NS1_9OverlayOp6OpCodeES7_@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator9testValidENS1_9OverlayOp6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidator9testValidENS1_9OverlayOp6OpCodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidatorC1ERKNS_4geom8GeometryES7_S7_@Base 3.4.2 - _ZN4geos9operation7overlay8validate22OverlayResultValidatorC2ERKNS_4geom8GeometryES7_S7_@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp10copyPointsEiPKNS_4geom8EnvelopeE@Base 3.5.0 - _ZN4geos9operation7overlay9OverlayOp11getAverageZEPKNS_4geom7PolygonE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp11getAverageZEi@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp12isCoveredByAERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp12isResultOfOpERKNS_9geomgraph5LabelENS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp12isResultOfOpEiiNS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp13isCoveredByLAERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp14computeOverlayENS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp14mergeSymLabelsEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp15computeGeometryEPSt6vectorIPNS_4geom5PointESaIS6_EEPS3_IPNS4_10LineStringESaISB_EEPS3_IPNS4_7PolygonESaISG_EE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp16computeLabellingEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp16insertUniqueEdgeEPNS_9geomgraph4EdgeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp17getResultGeometryENS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp17insertUniqueEdgesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EEPKNS_4geom8EnvelopeE@Base 3.5.0 - _ZN4geos9operation7overlay9OverlayOp19findResultAreaEdgesENS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp19labelIncompleteNodeEPNS_9geomgraph4NodeEi@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp19updateNodeLabellingEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp20labelIncompleteNodesEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp21replaceCollapsedEdgesEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp23computeLabelsFromDepthsEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp25checkObviouslyWrongResultENS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp26cancelDuplicateResultEdgesEv@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_10LineStringESaIS9_EE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_7PolygonESaIS9_EE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_8GeometryESaIS9_EE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOp9overlayOpEPKNS_4geom8GeometryES6_NS2_6OpCodeE@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOpD0Ev@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOpD1Ev@Base 3.4.2 - _ZN4geos9operation7overlay9OverlayOpD2Ev@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13closestPointsEPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13closestPointsEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13computeInsideEPNS1_16GeometryLocationEPKNS_4geom7PolygonEPSt6vectorIS4_SaIS4_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13computeInsideEPSt6vectorIPNS1_16GeometryLocationESaIS5_EERKS3_IPKNS_4geom7PolygonESaISC_EES8_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13nearestPointsEPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp13nearestPointsEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp16isWithinDistanceERKNS_4geom8GeometryES6_d@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp16nearestLocationsEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp17updateMinDistanceERSt6vectorIPNS1_16GeometryLocationESaIS5_EEb@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp18computeMinDistanceEPKNS_4geom10LineStringEPKNS3_5PointERSt6vectorIPNS1_16GeometryLocationESaISC_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp18computeMinDistanceEPKNS_4geom10LineStringES6_RSt6vectorIPNS1_16GeometryLocationESaIS9_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp18computeMinDistanceEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp20computeFacetDistanceEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp23computeMinDistanceLinesERKSt6vectorIPKNS_4geom10LineStringESaIS7_EESB_RS3_IPNS1_16GeometryLocationESaISD_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp24computeMinDistancePointsERKSt6vectorIPKNS_4geom5PointESaIS7_EESB_RS3_IPNS1_16GeometryLocationESaISD_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp26computeContainmentDistanceEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp29computeMinDistanceLinesPointsERKSt6vectorIPKNS_4geom10LineStringESaIS7_EERKS3_IPKNS4_5PointESaISE_EERS3_IPNS1_16GeometryLocationESaISK_EE@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp8distanceEPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp8distanceERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOp8distanceEv@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC1ERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC1ERKNS_4geom8GeometryES6_d@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC2ERKNS_4geom8GeometryES6_@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpC2ERKNS_4geom8GeometryES6_d@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpD1Ev@Base 3.4.2 - _ZN4geos9operation8distance10DistanceOpD2Ev@Base 3.4.2 - _ZN4geos9operation8distance13FacetSequence15computeEnvelopeEv@Base 3.6.0 - (subst)_ZN4geos9operation8distance13FacetSequenceC1EPKNS_4geom18CoordinateSequenceE{size_t}{size_t}@Base 3.6.0 - (subst)_ZN4geos9operation8distance13FacetSequenceC2EPKNS_4geom18CoordinateSequenceE{size_t}{size_t}@Base 3.6.0 - _ZN4geos9operation8distance16GeometryLocation12isInsideAreaEv@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocation13getCoordinateEv@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocation15getSegmentIndexEv@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocation20getGeometryComponentEv@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocationC1EPKNS_4geom8GeometryERKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocationC1EPKNS_4geom8GeometryEiRKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocationC2EPKNS_4geom8GeometryERKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos9operation8distance16GeometryLocationC2EPKNS_4geom8GeometryEiRKNS3_10CoordinateE@Base 3.4.2 - _ZN4geos9operation8distance20IndexedFacetDistance8distanceEPKNS_4geom8GeometryES6_@Base 3.7.0 - _ZN4geos9operation8distance20IndexedFacetDistanceD1Ev@Base 3.7.0 - _ZN4geos9operation8distance20IndexedFacetDistanceD2Ev@Base 3.7.0 - _ZN4geos9operation8distance24FacetSequenceTreeBuilder17addFacetSequencesEPKNS_4geom18CoordinateSequenceERSt6vectorIPNS1_13FacetSequenceESaIS9_EE@Base 3.6.0 - _ZN4geos9operation8distance24FacetSequenceTreeBuilder21computeFacetSequencesEPKNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9operation8distance24FacetSequenceTreeBuilder5buildEPKNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9operation8distance27ConnectedElementPointFilter14getCoordinatesEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8distance27ConnectedElementPointFilter9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8distance27ConnectedElementPointFilterD0Ev@Base 3.4.2 - _ZN4geos9operation8distance27ConnectedElementPointFilterD1Ev@Base 3.4.2 - _ZN4geos9operation8distance27ConnectedElementPointFilterD2Ev@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilter12getLocationsEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilter9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilter9filter_rwEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilterD0Ev@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilterD1Ev@Base 3.4.2 - _ZN4geos9operation8distance30ConnectedElementLocationFilterD2Ev@Base 3.4.2 - _ZN4geos9operation8distance7Deleter9visitItemEPv@Base 3.7.0 - _ZN4geos9operation8distance7DeleterD0Ev@Base 3.7.0 - _ZN4geos9operation8distance7DeleterD1Ev@Base 3.7.0 - _ZN4geos9operation8distance7DeleterD2Ev@Base 3.7.0 - _ZN4geos9operation8distance7deleterE@Base 3.7.0 - _ZN4geos9operation8geounion12UnaryUnionOp13unionWithNullESt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EES8_@Base 3.7.0 - _ZN4geos9operation8geounion12UnaryUnionOp5UnionEv@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderEmm@Base 3.7.0 - _ZN4geos9operation8geounion13CascadedUnion11unionActualEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion14unionOptimizedEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion17extractByEnvelopeERKNS_4geom8EnvelopeEPNS3_8GeometryERSt6vectorIS8_SaIS8_EE@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion18reduceToGeometriesEPNS_5index7strtree9ItemsListE@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion30unionUsingEnvelopeIntersectionEPNS_4geom8GeometryES5_RKNS3_8EnvelopeE@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion5UnionEPSt6vectorIPNS_4geom8GeometryESaIS6_EE@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion5UnionEv@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion9unionSafeEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion13CascadedUnion9unionTreeEPNS_5index7strtree9ItemsListE@Base 3.4.2 - _ZN4geos9operation8geounion18GeometryListHolder10deleteItemEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation8geounion18PointGeometryUnion5UnionERKNS_4geom6PuntalERKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9operation8geounion18PointGeometryUnionC1ERKNS_4geom6PuntalERKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9operation8geounion18PointGeometryUnionC2ERKNS_4geom6PuntalERKNS3_8GeometryE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderEmm@Base 3.7.0 - _ZN4geos9operation8geounion20CascadedPolygonUnion11unionActualEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion14unionOptimizedEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion17extractByEnvelopeERKNS_4geom8EnvelopeEPNS3_8GeometryERSt6vectorIS8_SaIS8_EE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion17extractByEnvelopeERKNS_4geom8EnvelopeEPNS3_8GeometryERSt6vectorIS8_SaIS8_EESC_@Base 3.6.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion17extractByEnvelopeERKNS_4geom8EnvelopeERSt6vectorIPNS3_8GeometryESaIS9_EESC_SC_@Base 3.6.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion18reduceToGeometriesEPNS_5index7strtree9ItemsListE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion18restrictToPolygonsESt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EE@Base 3.7.0 - _ZN4geos9operation8geounion20CascadedPolygonUnion30unionUsingEnvelopeIntersectionEPNS_4geom8GeometryES5_RKNS3_8EnvelopeE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEPKNS_4geom12MultiPolygonE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEPSt6vectorIPNS_4geom7PolygonESaIS6_EE@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEv@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion9unionSafeEPNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9operation8geounion20CascadedPolygonUnion9unionTreeEPNS_5index7strtree9ItemsListE@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeString12toLineStringEv@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeString14getCoordinatesEv@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeString3addEPNS1_21LineMergeDirectedEdgeE@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeStringC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeStringC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeStringD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge10EdgeStringD2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger20getMergedLineStringsEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger26buildEdgeStringsStartingAtEPNS_11planargraph4NodeE@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger27buildEdgeStringStartingWithEPNS1_21LineMergeDirectedEdgeE@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger32buildEdgeStringsForIsolatedLoopsEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger34buildEdgeStringsForNonDegree2NodesEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger35buildEdgeStringsForUnprocessedNodesEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger36buildEdgeStringsForObviousStartNodesEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger3addEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger3addEPSt6vectorIPNS_4geom8GeometryESaIS6_EE@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMerger5mergeEv@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMergerC1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMergerC2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMergerD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge10LineMergerD2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge13LineMergeEdgeC1EPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineMergeEdgeC2EPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineMergeEdgeD0Ev@Base 3.4.2 - _ZN4geos9operation9linemerge13LineMergeEdgeD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge13LineMergeEdgeD2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer11hasSequenceERNS_11planargraph8SubgraphE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer11isSequencedEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer12findSequenceB5cxx11ERNS_11planargraph8SubgraphE@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer13findSequencesB5cxx11Ev@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer15computeSequenceEv@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer17addReverseSubpathEPKNS_11planargraph12DirectedEdgeERNSt7__cxx114listIPS4_SaIS9_EEESt14_List_iteratorIS9_Eb@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer20findLowestDegreeNodeERKNS_11planargraph8SubgraphE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer22buildSequencedGeometryERKSt6vectorIPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS8_EEESaISB_EE@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer27findUnvisitedBestOrientedDEEPKNS_11planargraph4NodeE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer6delAllERSt6vectorIPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS8_EEESaISB_EE@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer6orientEPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS7_EEE@Base 3.5.1 - _ZN4geos9operation9linemerge13LineSequencer7addLineEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer7reverseEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge13LineSequencer7reverseERNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS7_EEE@Base 3.5.1 - _ZN4geos9operation9linemerge14LineMergeGraph7addEdgeEPKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9linemerge14LineMergeGraph7getNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation9linemerge14LineMergeGraphD0Ev@Base 3.4.2 - _ZN4geos9operation9linemerge14LineMergeGraphD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge14LineMergeGraphD2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdge7getNextEv@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdgeC1EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdgeC2EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD0Ev@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD2Ev@Base 3.4.2 - _ZN4geos9operation9linemerge25LMGeometryComponentFilterD0Ev@Base 3.4.2 - _ZN4geos9operation9linemerge25LMGeometryComponentFilterD1Ev@Base 3.4.2 - _ZN4geos9operation9linemerge25LMGeometryComponentFilterD2Ev@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains21isContainedInBoundaryERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains26isPointContainedInBoundaryERKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains26isPointContainedInBoundaryERKNS_4geom5PointE@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains31isLineStringContainedInBoundaryERKNS_4geom10LineStringE@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains32isLineSegmentContainedInBoundaryERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZN4geos9operation9predicate17RectangleContains8containsERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate19RectangleIntersects10intersectsERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate20ContainsPointVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate20ContainsPointVisitor6isDoneEv@Base 3.4.2 - _ZN4geos9operation9predicate20ContainsPointVisitorD0Ev@Base 3.4.2 - _ZN4geos9operation9predicate20ContainsPointVisitorD1Ev@Base 3.4.2 - _ZN4geos9operation9predicate20ContainsPointVisitorD2Ev@Base 3.4.2 - _ZN4geos9operation9predicate21LineIntersectsVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate21LineIntersectsVisitor6isDoneEv@Base 3.4.2 - _ZN4geos9operation9predicate21LineIntersectsVisitorD0Ev@Base 3.4.2 - _ZN4geos9operation9predicate21LineIntersectsVisitorD1Ev@Base 3.4.2 - _ZN4geos9operation9predicate21LineIntersectsVisitorD2Ev@Base 3.4.2 - _ZN4geos9operation9predicate25EnvelopeIntersectsVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9operation9predicate25EnvelopeIntersectsVisitor6isDoneEv@Base 3.4.2 - _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD0Ev@Base 3.4.2 - _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD1Ev@Base 3.4.2 - _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD2Ev@Base 3.4.2 - _ZN4geos9operation9predicate25SegmentIntersectionTester15hasIntersectionERKNS_4geom10LineStringES6_@Base 3.4.2 - _ZN4geos9operation9predicate25SegmentIntersectionTester30hasIntersectionWithLineStringsERKNS_4geom10LineStringERKSt6vectorIPS5_SaIS8_EE@Base 3.4.2 - _ZN4geos9operation9predicate25SegmentIntersectionTester33hasIntersectionWithEnvelopeFilterERKNS_4geom10LineStringES6_@Base 3.4.2 - _ZN4geos9precision10CommonBits11signExpBitsEx@Base 3.5.0 - _ZN4geos9precision10CommonBits13zeroLowerBitsExi@Base 3.5.0 - _ZN4geos9precision10CommonBits28numCommonMostSigMantissaBitsExx@Base 3.5.0 - _ZN4geos9precision10CommonBits3addEd@Base 3.4.2 - _ZN4geos9precision10CommonBits6getBitExi@Base 3.5.0 - _ZN4geos9precision10CommonBits9getCommonEv@Base 3.4.2 - _ZN4geos9precision10CommonBitsC1Ev@Base 3.4.2 - _ZN4geos9precision10CommonBitsC2Ev@Base 3.4.2 - _ZN4geos9precision10Translater9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9precision10TranslaterD0Ev@Base 3.4.2 - _ZN4geos9precision10TranslaterD1Ev@Base 3.4.2 - _ZN4geos9precision10TranslaterD2Ev@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp10differenceEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp12intersectionEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp13symDifferenceEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp16removeCommonBitsEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp16removeCommonBitsEPKNS_4geom8GeometryES5_RSt10unique_ptrIS3_St14default_deleteIS3_EESA_@Base 3.7.0 - _ZN4geos9precision12CommonBitsOp22computeResultPrecisionEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp5UnionEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision12CommonBitsOp6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9precision12CommonBitsOpC1Eb@Base 3.4.2 - _ZN4geos9precision12CommonBitsOpC1Ev@Base 3.4.2 - _ZN4geos9precision12CommonBitsOpC2Eb@Base 3.4.2 - _ZN4geos9precision12CommonBitsOpC2Ev@Base 3.4.2 - _ZN4geos9precision16MinimumClearance11getDistanceEv@Base 3.6.0 - _ZN4geos9precision16MinimumClearance7computeEv@Base 3.6.0 - _ZN4geos9precision16MinimumClearance7getLineEv@Base 3.6.0 - _ZN4geos9precision16MinimumClearanceC1EPKNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9precision16MinimumClearanceC2EPKNS_4geom8GeometryE@Base 3.6.0 - _ZN4geos9precision17CommonBitsRemover13addCommonBitsEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemover16removeCommonBitsEPNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemover19getCommonCoordinateEv@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemover3addEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemoverC1Ev@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemoverC2Ev@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemoverD1Ev@Base 3.4.2 - _ZN4geos9precision17CommonBitsRemoverD2Ev@Base 3.4.2 - _ZN4geos9precision19EnhancedPrecisionOp10differenceEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision19EnhancedPrecisionOp12intersectionEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision19EnhancedPrecisionOp13symDifferenceEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision19EnhancedPrecisionOp5UnionEPKNS_4geom8GeometryES5_@Base 3.4.2 - _ZN4geos9precision19EnhancedPrecisionOp6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 - _ZN4geos9precision22CommonCoordinateFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 - _ZN4geos9precision22CommonCoordinateFilterD0Ev@Base 3.4.2 - _ZN4geos9precision22CommonCoordinateFilterD1Ev@Base 3.4.2 - _ZN4geos9precision22CommonCoordinateFilterD2Ev@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducer13createFactoryERKNS_4geom15GeometryFactoryERKNS2_14PrecisionModelE@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducer15reducePointwiseERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducer20fixPolygonalTopologyERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducer6reduceERKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducerC1ERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9precision24GeometryPrecisionReducerC2ERKNS_4geom15GeometryFactoryE@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducer17getPrecisionModelEv@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducer18getRemoveCollapsedEv@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducer28setRemoveCollapsedComponentsEb@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducer6reduceEPKNS_4geom8GeometryE@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducerC1EPKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9precision30SimpleGeometryPrecisionReducerC2EPKNS_4geom14PrecisionModelE@Base 3.4.2 - _ZN4geos9precision35PrecisionReducerCoordinateOperation4editEPKNS_4geom18CoordinateSequenceEPKNS2_8GeometryE@Base 3.4.2 - _ZN4geos9precision35PrecisionReducerCoordinateOperationD0Ev@Base 3.4.2 - _ZN4geos9precision35PrecisionReducerCoordinateOperationD1Ev@Base 3.4.2 - _ZN4geos9precision35PrecisionReducerCoordinateOperationD2Ev@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge11getFromNodeEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge11getQuadrantEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge13getCoordinateEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge14getDirectionPtEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge16compareDirectionEPKS1_@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge16getEdgeDirectionEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos11planargraph12DirectedEdge6getSymEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge7getEdgeEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge8getAngleEv@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge9compareToEPKS1_@Base 3.4.2 - _ZNK4geos11planargraph12DirectedEdge9getToNodeEv@Base 3.4.2 - _ZNK4geos11planargraph14GraphComponent8isMarkedEv@Base 3.4.2 - _ZNK4geos11planargraph14GraphComponent9isVisitedEv@Base 3.4.2 - _ZNK4geos11planargraph16DirectedEdgeStar13getCoordinateEv@Base 3.4.2 - _ZNK4geos11planargraph16DirectedEdgeStar3endEv@Base 3.4.2 - _ZNK4geos11planargraph16DirectedEdgeStar5beginEv@Base 3.4.2 - _ZNK4geos11planargraph16DirectedEdgeStar8getIndexEi@Base 3.4.2 - _ZNK4geos11planargraph16DirectedEdgeStar9sortEdgesEv@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision11isFrameEdgeERKNS1_8QuadEdgeE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision13isFrameVertexERKNS1_6VertexE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision14isVertexOfEdgeERKNS1_8QuadEdgeERKNS1_6VertexE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision14locateFromEdgeERKNS1_6VertexERKNS1_8QuadEdgeE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision17isFrameBorderEdgeERKNS1_8QuadEdgeE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision8isOnEdgeERKNS1_8QuadEdgeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge6Vertex10isInCircleERKS2_S4_S4_@Base 3.4.2 - _ZNK4geos11triangulate8quadedge6Vertex12circleCenterERKS2_S4_@Base 3.4.2 - _ZNK4geos11triangulate8quadedge6Vertex17interpolateZValueERKS2_S4_S4_@Base 3.4.2 - _ZNK4geos11triangulate8quadedge6Vertex6leftOfERKNS1_8QuadEdgeE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge6Vertex7rightOfERKNS1_8QuadEdgeE@Base 3.4.2 - _ZNK4geos11triangulate8quadedge8QuadEdge10getPrimaryEv@Base 3.4.2 - _ZNK4geos11triangulate8quadedge8QuadEdge13toLineSegmentEv@Base 3.4.2 - _ZNK4geos11triangulate8quadedge8QuadEdge14equalsOrientedERKS2_@Base 3.4.2 - _ZNK4geos11triangulate8quadedge8QuadEdge17equalsNonOrientedERKS2_@Base 3.4.2 - _ZNK4geos2io9WKBWriter12getByteOrderEv@Base 3.4.2 - _ZNK4geos2io9WKBWriter14getIncludeSRIDEv@Base 3.4.2 - _ZNK4geos2io9WKBWriter18getOutputDimensionEv@Base 3.4.2 - _ZNK4geos4geom10Coordinate6equalsERKS1_@Base 3.4.2 - _ZNK4geos4geom10Coordinate6isNullEv@Base 3.4.2 - _ZNK4geos4geom10Coordinate8distanceERKS1_@Base 3.4.2 - _ZNK4geos4geom10Coordinate8equals2DERKS1_@Base 3.4.2 - _ZNK4geos4geom10Coordinate8equals3DERKS1_@Base 3.4.2 - _ZNK4geos4geom10Coordinate8hashCodeEv@Base 3.4.2 - _ZNK4geos4geom10Coordinate8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom10Coordinate9compareToERKS1_@Base 3.4.2 - _ZNK4geos4geom10LineString11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom10LineString11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom10LineString11getEndPointEv@Base 3.4.2 - _ZNK4geos4geom10LineString12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom10LineString12getNumPointsEv@Base 3.4.2 - _ZNK4geos4geom10LineString12isCoordinateERNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom10LineString13getCoordinateEv@Base 3.4.2 - _ZNK4geos4geom10LineString13getStartPointEv@Base 3.4.2 - _ZNK4geos4geom10LineString14getCoordinateNEi@Base 3.4.2 - _ZNK4geos4geom10LineString14getCoordinatesEv@Base 3.4.2 - _ZNK4geos4geom10LineString15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom10LineString16getCoordinatesROEv@Base 3.4.2 - _ZNK4geos4geom10LineString17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom10LineString18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom10LineString20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom10LineString22getCoordinateDimensionEv@Base 3.4.2 - _ZNK4geos4geom10LineString23computeEnvelopeInternalEv@Base 3.4.2 - _ZNK4geos4geom10LineString5cloneEv@Base 3.4.2 - _ZNK4geos4geom10LineString6isRingEv@Base 3.4.2 - _ZNK4geos4geom10LineString7isEmptyEv@Base 3.4.2 - _ZNK4geos4geom10LineString7reverseEv@Base 3.4.2 - _ZNK4geos4geom10LineString8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 - _ZNK4geos4geom10LineString8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 - _ZNK4geos4geom10LineString8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZNK4geos4geom10LineString8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZNK4geos4geom10LineString8isClosedEv@Base 3.4.2 - _ZNK4geos4geom10LineString9getLengthEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom10LineString9getPointNEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom10LineString9getPointNEm@Base 3.7.0 - _ZNK4geos4geom10LinearRing15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom10LinearRing17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom10LinearRing20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom10LinearRing5cloneEv@Base 3.4.2 - _ZNK4geos4geom10LinearRing7reverseEv@Base 3.4.2 - _ZNK4geos4geom10LinearRing8isClosedEv@Base 3.4.2 - _ZNK4geos4geom10LinearRing8isSimpleEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom10MultiPoint11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint14getCoordinateNEi@Base 3.4.2 - _ZNK4geos4geom10MultiPoint15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom10MultiPoint17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint5cloneEv@Base 3.4.2 - _ZNK4geos4geom10MultiPoint7reverseEv@Base 3.7.0 - _ZNK4geos4geom11LineSegment10equalsTopoERKS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment10isVerticalEv@Base 3.4.2 - _ZNK4geos4geom11LineSegment10pointAlongEdRNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment10toGeometryERKNS0_15GeometryFactoryE@Base 3.4.2 - _ZNK4geos4geom11LineSegment12closestPointERKNS0_10CoordinateERS2_@Base 3.4.2 - _ZNK4geos4geom11LineSegment12intersectionERKS1_RNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment12isHorizontalEv@Base 3.4.2 - _ZNK4geos4geom11LineSegment15segmentFractionERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment16lineIntersectionERKS1_RNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment16orientationIndexEPKS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment16orientationIndexERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment16orientationIndexERKS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment16pointAlongOffsetEddRNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment16projectionFactorERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment21distancePerpendicularERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment5angleEv@Base 3.4.2 - _ZNK4geos4geom11LineSegment7projectERKNS0_10CoordinateERS2_@Base 3.4.2 - _ZNK4geos4geom11LineSegment7projectERKS1_RS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment8distanceERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment8distanceERKS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment8midPointERNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom11LineSegment9compareToERKS1_@Base 3.4.2 - _ZNK4geos4geom11LineSegment9getLengthEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom11LineSegmentixEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom11LineSegmentixEm@Base 3.7.0 - _ZNK4geos4geom12MultiPolygon11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom12MultiPolygon17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon5cloneEv@Base 3.4.2 - _ZNK4geos4geom12MultiPolygon7reverseEv@Base 3.7.0 - _ZNK4geos4geom12MultiPolygon8isSimpleEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel10getOffsetXEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel10getOffsetYEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel10isFloatingEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel11makePreciseEPNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel11makePreciseERNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel11makePreciseEd@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel27getMaximumSignificantDigitsEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel7getTypeEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel8getScaleEv@Base 3.4.2 - _ZNK4geos4geom14PrecisionModel8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom14PrecisionModel9compareToEPKS1_@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory10toGeometryEPKNS0_8EnvelopeE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory11createPointEPNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory11createPointERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory11createPointERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory11createPointEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory13buildGeometryEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory13buildGeometryERKSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory13createPolygonEPNS0_10LinearRingEPSt6vectorIPNS0_8GeometryESaIS6_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory13createPolygonERKNS0_10LinearRingERKSt6vectorIPNS0_8GeometryESaIS7_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory13createPolygonEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory14createGeometryEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory15destroyGeometryEPNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLineStringEPNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLineStringERKNS0_10LineStringE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLineStringERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLineStringESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EE@Base 3.7.0 - _ZNK4geos4geom15GeometryFactory16createLineStringEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLinearRingEPNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLinearRingERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createLinearRingESt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EE@Base 3.7.0 - _ZNK4geos4geom15GeometryFactory16createLinearRingEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createMultiPointEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createMultiPointERKNS0_18CoordinateSequenceE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createMultiPointERKSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createMultiPointERKSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory16createMultiPointEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory17getPrecisionModelEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory18createMultiPolygonEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory18createMultiPolygonERKSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory18createMultiPolygonEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory19createEmptyGeometryEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory21createMultiLineStringEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory21createMultiLineStringERKSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory21createMultiLineStringEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory24createGeometryCollectionEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory24createGeometryCollectionERKSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory24createGeometryCollectionEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory28createPointFromInternalCoordEPKNS0_10CoordinateEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory28getCoordinateSequenceFactoryEv@Base 3.4.2 - _ZNK4geos4geom15GeometryFactory6addRefEv@Base 3.6.0 - _ZNK4geos4geom15GeometryFactory7dropRefEv@Base 3.6.0 - _ZNK4geos4geom15GeometryFactory7getSRIDEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom15MultiLineString11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString15getGeometryTypeB5cxx11Ev@Base 3.4.2 - _ZNK4geos4geom15MultiLineString17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString5cloneEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString7reverseEv@Base 3.4.2 - _ZNK4geos4geom15MultiLineString8isClosedEv@Base 3.4.2 - _ZNK4geos4geom16CoordinateFilter9filter_rwEPNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom18CoordinateLessThenclEPKNS0_10CoordinateES4_@Base 3.4.2 - _ZNK4geos4geom18CoordinateLessThenclERKNS0_10CoordinateES4_@Base 3.4.2 - _ZNK4geos4geom18CoordinateSequence13minCoordinateEv@Base 3.4.2 - _ZNK4geos4geom18CoordinateSequence14expandEnvelopeERNS0_8EnvelopeE@Base 3.4.2 - _ZNK4geos4geom18CoordinateSequence17hasRepeatedPointsEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18CoordinateSequence4getXEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18CoordinateSequence4getXEm@Base 3.7.0 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18CoordinateSequence4getYEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18CoordinateSequence4getYEm@Base 3.7.0 - _ZNK4geos4geom18GeometryCollection11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection12getDimensionEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18GeometryCollection12getGeometryNEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18GeometryCollection12getGeometryNEm@Base 3.7.0 - _ZNK4geos4geom18GeometryCollection12getNumPointsEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection13getCoordinateEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection14getCoordinatesEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom18GeometryCollection16getNumGeometriesEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection22getCoordinateDimensionEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection23computeEnvelopeInternalEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection3endEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection5beginEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection5cloneEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection7getAreaEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection7isEmptyEv@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection7reverseEv@Base 3.7.0 - _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZNK4geos4geom18GeometryCollection9getLengthEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix10isContainsEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix10isDisjointEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix10isOverlapsEii@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix11isCoveredByEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix12isIntersectsEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix3getEii@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix7matchesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZNK4geos4geom18IntersectionMatrix8isCoversEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix8isEqualsEii@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix8isWithinEv@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom18IntersectionMatrix9isCrossesEii@Base 3.4.2 - _ZNK4geos4geom18IntersectionMatrix9isTouchesEii@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom23CoordinateArraySequence11getOrdinateEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom23CoordinateArraySequence11getOrdinateEmm@Base 3.7.0 - _ZNK4geos4geom23CoordinateArraySequence12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence14expandEnvelopeERNS0_8EnvelopeE@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence5cloneEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEj@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEjRNS0_10CoordinateE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEm@Base 3.7.0 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEmRNS0_10CoordinateE@Base 3.7.0 - _ZNK4geos4geom23CoordinateArraySequence7getSizeEv@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence7isEmptyEv@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom23CoordinateArraySequence8toVectorERSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 - _ZNK4geos4geom23CoordinateArraySequence8toVectorEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 - _ZNK4geos4geom30CoordinateArraySequenceFactory6createERKNS0_18CoordinateSequenceE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEjj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEmm@Base 3.7.0 - _ZNK4geos4geom30CoordinateArraySequenceFactory6createEv@Base 3.5.0 - _ZNK4geos4geom4prep13PreparedPoint10intersectsEPKNS0_8GeometryE@Base 3.5.0 - _ZNK4geos4geom4prep15PreparedPolygon10intersectsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep15PreparedPolygon15getPointLocatorEv@Base 3.4.2 - _ZNK4geos4geom4prep15PreparedPolygon16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep15PreparedPolygon21getIntersectionFinderEv@Base 3.4.2 - _ZNK4geos4geom4prep15PreparedPolygon6coversEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep15PreparedPolygon8containsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep18PreparedLineString10intersectsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry10intersectsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry11getGeometryEv@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry14envelopeCoversEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry18envelopesIntersectEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry26isAnyTargetComponentInTestEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry6coversEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry6withinEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry7crossesEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry7touchesEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry8containsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry8disjointEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry8overlapsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep21BasicPreparedGeometry9coveredByEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep23PreparedGeometryFactory6createEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep24PreparedPolygonPredicate26isAnyTestComponentInTargetEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep24PreparedPolygonPredicate27isAllTestComponentsInTargetEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep24PreparedPolygonPredicate30isAnyTargetComponentInAreaTestEPKNS0_8GeometryEPKSt6vectorIPKNS0_10CoordinateESaIS9_EE@Base 3.4.2 - _ZNK4geos4geom4prep24PreparedPolygonPredicate34isAnyTestComponentInTargetInteriorEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep24PreparedPolygonPredicate35isAllTestComponentsInTargetInteriorEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep28PreparedLineStringIntersects10intersectsEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4prep28PreparedLineStringIntersects22isAnyTestPointInTargetEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom4util15SineStarFactory14createSineStarEv@Base 3.4.2 - _ZNK4geos4geom5Point11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom5Point11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom5Point12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom5Point12getNumPointsEv@Base 3.4.2 - _ZNK4geos4geom5Point13getCoordinateEv@Base 3.4.2 - _ZNK4geos4geom5Point14getCoordinatesEv@Base 3.4.2 - _ZNK4geos4geom5Point15getGeometryTypeB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom5Point16getCoordinatesROEv@Base 3.4.2 - _ZNK4geos4geom5Point17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom5Point18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom5Point20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom5Point22getCoordinateDimensionEv@Base 3.4.2 - _ZNK4geos4geom5Point23computeEnvelopeInternalEv@Base 3.4.2 - _ZNK4geos4geom5Point4getXEv@Base 3.4.2 - _ZNK4geos4geom5Point4getYEv@Base 3.4.2 - _ZNK4geos4geom5Point4getZEv@Base 3.7.0 - _ZNK4geos4geom5Point5cloneEv@Base 3.4.2 - _ZNK4geos4geom5Point7isEmptyEv@Base 3.4.2 - _ZNK4geos4geom5Point7reverseEv@Base 3.7.0 - _ZNK4geos4geom5Point8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 - _ZNK4geos4geom5Point8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 - _ZNK4geos4geom5Point8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZNK4geos4geom5Point8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZNK4geos4geom5Point8isSimpleEv@Base 3.4.2 - _ZNK4geos4geom7Polygon10convexHullEv@Base 3.4.2 - _ZNK4geos4geom7Polygon11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 - _ZNK4geos4geom7Polygon11getBoundaryEv@Base 3.4.2 - _ZNK4geos4geom7Polygon11isRectangleEv@Base 3.4.2 - _ZNK4geos4geom7Polygon12getDimensionEv@Base 3.4.2 - _ZNK4geos4geom7Polygon12getNumPointsEv@Base 3.4.2 - _ZNK4geos4geom7Polygon13getCoordinateEv@Base 3.4.2 - _ZNK4geos4geom7Polygon14getCoordinatesEv@Base 3.4.2 - _ZNK4geos4geom7Polygon15getExteriorRingEv@Base 3.4.2 - _ZNK4geos4geom7Polygon15getGeometryTypeB5cxx11Ev@Base 3.5.1 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom7Polygon16getInteriorRingNEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom7Polygon16getInteriorRingNEm@Base 3.7.0 - _ZNK4geos4geom7Polygon17getGeometryTypeIdEv@Base 3.4.2 - _ZNK4geos4geom7Polygon18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 - _ZNK4geos4geom7Polygon18getNumInteriorRingEv@Base 3.4.2 - _ZNK4geos4geom7Polygon20getBoundaryDimensionEv@Base 3.4.2 - _ZNK4geos4geom7Polygon22getCoordinateDimensionEv@Base 3.4.2 - _ZNK4geos4geom7Polygon23computeEnvelopeInternalEv@Base 3.4.2 - _ZNK4geos4geom7Polygon5cloneEv@Base 3.4.2 - _ZNK4geos4geom7Polygon7getAreaEv@Base 3.4.2 - _ZNK4geos4geom7Polygon7isEmptyEv@Base 3.4.2 - _ZNK4geos4geom7Polygon7reverseEv@Base 3.7.0 - _ZNK4geos4geom7Polygon8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 - _ZNK4geos4geom7Polygon8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 - _ZNK4geos4geom7Polygon8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZNK4geos4geom7Polygon8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 - _ZNK4geos4geom7Polygon8isSimpleEv@Base 3.4.2 - _ZNK4geos4geom7Polygon9getLengthEv@Base 3.4.2 - _ZNK4geos4geom8Envelope10intersectsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope10intersectsERKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom8Envelope10intersectsERKS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope10intersectsEdd@Base 3.4.2 - _ZNK4geos4geom8Envelope12intersectionERKS1_RS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope6centreERNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom8Envelope6coversEPKNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom8Envelope6coversERKS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope6coversEdd@Base 3.4.2 - _ZNK4geos4geom8Envelope6equalsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope6isNullEv@Base 3.4.2 - _ZNK4geos4geom8Envelope7getMaxXEv@Base 3.4.2 - _ZNK4geos4geom8Envelope7getMaxYEv@Base 3.4.2 - _ZNK4geos4geom8Envelope7getMinXEv@Base 3.4.2 - _ZNK4geos4geom8Envelope7getMinYEv@Base 3.4.2 - _ZNK4geos4geom8Envelope8distanceEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Envelope8getWidthEv@Base 3.4.2 - _ZNK4geos4geom8Envelope8hashCodeEv@Base 3.4.2 - _ZNK4geos4geom8Envelope8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom8Envelope9getHeightEv@Base 3.4.2 - _ZNK4geos4geom8Geometry10convexHullEv@Base 3.4.2 - _ZNK4geos4geom8Geometry10differenceEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry10intersectsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry11getCentroidERNS0_10CoordinateE@Base 3.4.2 - _ZNK4geos4geom8Geometry11getCentroidEv@Base 3.4.2 - _ZNK4geos4geom8Geometry11getEnvelopeEv@Base 3.4.2 - _ZNK4geos4geom8Geometry11isRectangleEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom8Geometry12getGeometryNEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom8Geometry12getGeometryNEm@Base 3.7.0 - _ZNK4geos4geom8Geometry12intersectionEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry13symDifferenceEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry16getInteriorPointEv@Base 3.4.2 - _ZNK4geos4geom8Geometry16getNumGeometriesEv@Base 3.4.2 - _ZNK4geos4geom8Geometry16isWithinDistanceEPKS1_d@Base 3.4.2 - _ZNK4geos4geom8Geometry17getClassSortIndexEv@Base 3.4.2 - _ZNK4geos4geom8Geometry17getPrecisionModelEv@Base 3.4.2 - _ZNK4geos4geom8Geometry17isEquivalentClassEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry19getEnvelopeInternalEv@Base 3.4.2 - _ZNK4geos4geom8Geometry5UnionEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry5UnionEv@Base 3.4.2 - _ZNK4geos4geom8Geometry5equalERKNS0_10CoordinateES4_d@Base 3.4.2 - _ZNK4geos4geom8Geometry6bufferEd@Base 3.4.2 - _ZNK4geos4geom8Geometry6bufferEdi@Base 3.4.2 - _ZNK4geos4geom8Geometry6bufferEdii@Base 3.4.2 - _ZNK4geos4geom8Geometry6coversEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry6equalsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry6relateEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry6relateEPKS1_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 - _ZNK4geos4geom8Geometry6toTextB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom8Geometry6withinEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry7compareESt6vectorINS0_10CoordinateESaIS3_EES5_@Base 3.4.2 - _ZNK4geos4geom8Geometry7compareESt6vectorIPS1_SaIS3_EES5_@Base 3.4.2 - _ZNK4geos4geom8Geometry7crossesEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry7getAreaEv@Base 3.4.2 - _ZNK4geos4geom8Geometry7getSRIDEv@Base 3.4.2 - _ZNK4geos4geom8Geometry7isValidEv@Base 3.4.2 - _ZNK4geos4geom8Geometry7touchesEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 - _ZNK4geos4geom8Geometry8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 - _ZNK4geos4geom8Geometry8containsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry8disjointEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry8distanceEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry8isSimpleEv@Base 3.4.2 - _ZNK4geos4geom8Geometry8overlapsEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos4geom8Geometry9compareToEPKS1_@Base 3.4.2 - _ZNK4geos4geom8Geometry9getLengthEv@Base 3.4.2 - _ZNK4geos4geom8Triangle3detEdddd@Base 3.5.0 - _ZNK4geos4util21GeometricShapeFactory10Dimensions11getEnvelopeEv@Base 3.4.2 - _ZNK4geos4util21GeometricShapeFactory5coordEdd@Base 3.4.2 - _ZNK4geos4util7Profile13getNumTimingsEv@Base 3.4.2 - _ZNK4geos4util7Profile6getAvgEv@Base 3.4.2 - _ZNK4geos4util7Profile6getMaxEv@Base 3.4.2 - _ZNK4geos4util7Profile6getMinEv@Base 3.4.2 - _ZNK4geos4util7Profile6getTotEv@Base 3.4.2 - _ZNK4geos5index13intervalrtree21IntervalRTreeLeafNode5queryEddPNS0_11ItemVisitorE@Base 3.4.2 - _ZNK4geos5index13intervalrtree23IntervalRTreeBranchNode5queryEddPNS0_11ItemVisitorE@Base 3.4.2 - _ZNK4geos5index5chain13MonotoneChain11getEnvelopeEv@Base 3.4.2 - _ZNK4geos5index5chain13MonotoneChain14getCoordinatesEv@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos5index5chain13MonotoneChain14getLineSegmentEjRNS_4geom11LineSegmentE@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos5index5chain13MonotoneChain14getLineSegmentEmRNS_4geom11LineSegmentE@Base 3.7.0 - _ZNK4geos5index7bintree8Interval6getMaxEv@Base 3.4.2 - _ZNK4geos5index7bintree8Interval6getMinEv@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8containsEPKS2_@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8containsEd@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8containsEdd@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8getWidthEv@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8overlapsEPKS2_@Base 3.4.2 - _ZNK4geos5index7bintree8Interval8overlapsEdd@Base 3.4.2 - _ZNK4geos5index7strtree12AbstractNode9getBoundsEv@Base 3.4.2 - _ZNK4geos5index7strtree13BoundablePair11getDistanceEv@Base 3.6.0 - _ZNK4geos5index7strtree13BoundablePair12getBoundableEi@Base 3.6.0 - _ZNK4geos5index7strtree13BoundablePair8distanceEv@Base 3.6.0 - _ZNK4geos5index7strtree13BoundablePair8isLeavesEv@Base 3.6.0 - _ZNK4geos5index7strtree13ItemBoundable7getItemEv@Base 3.4.2 - _ZNK4geos5index7strtree13ItemBoundable9getBoundsEv@Base 3.4.2 - _ZNK4geos5index7strtree15SIRAbstractNode13computeBoundsEv@Base 3.4.2 - _ZNK4geos5index7strtree15STRAbstractNode13computeBoundsEv@Base 3.4.2 - _ZNK4geos5index7strtree8Interval10intersectsEPKS2_@Base 3.5.0 - _ZNK4geos5index7strtree8Interval6equalsEPKS2_@Base 3.5.0 - _ZNK4geos5index8quadtree10DoubleBits11getExponentEv@Base 3.4.2 - _ZNK4geos5index8quadtree10DoubleBits14biasedExponentEv@Base 3.4.2 - _ZNK4geos5index8quadtree10DoubleBits21numCommonMantissaBitsERKS2_@Base 3.4.2 - _ZNK4geos5index8quadtree10DoubleBits6getBitEi@Base 3.4.2 - _ZNK4geos5index8quadtree10DoubleBits8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos5index8quadtree10DoubleBits9getDoubleEv@Base 3.4.2 - _ZNK4geos5index8quadtree3Key11getEnvelopeEv@Base 3.4.2 - _ZNK4geos5index8quadtree3Key8getLevelEv@Base 3.4.2 - _ZNK4geos5index8quadtree3Key8getPointEv@Base 3.4.2 - _ZNK4geos5index8quadtree3Key9getCentreEv@Base 3.4.2 - _ZNK4geos5index8quadtree4Node13isSearchMatchERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZNK4geos5index8quadtree4Node8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos5index8quadtree4Root13isSearchMatchERKNS_4geom8EnvelopeE@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase11addAllItemsERSt6vectorIPvSaIS4_EE@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase12getNodeCountEv@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase26addAllItemsFromOverlappingERKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase4sizeEv@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase5depthEv@Base 3.4.2 - _ZNK4geos5index8quadtree8NodeBase8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos5index8quadtree8Quadtree8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos5index9sweepline14SweepLineEvent9compareToEPKS2_@Base 3.4.2 - _ZNK4geos5index9sweepline22SweepLineEventLessThenclEPKNS1_14SweepLineEventES5_@Base 3.4.2 - _ZNK4geos6noding11ScaledNoder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding11ScaledNoder5scaleERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZNK4geos6noding11ScaledNoder6Scaler9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos6noding11ScaledNoder7rescaleERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 - _ZNK4geos6noding11ScaledNoder8ReScaler9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos6noding11SegmentNode10isEndPointEj@Base 3.4.2 - _ZNK4geos6noding11SimpleNoder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding12MCIndexNoder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding13IteratedNoder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding13SegmentString5printERSo@Base 3.4.2 - _ZNK4geos6noding15NodingValidator13checkCollapseERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 - _ZNK4geos6noding15NodingValidator14checkCollapsesERKNS0_13SegmentStringE@Base 3.4.2 - _ZNK4geos6noding15NodingValidator14checkCollapsesEv@Base 3.4.2 - _ZNK4geos6noding15NodingValidator23hasInteriorIntersectionERKNS_9algorithm15LineIntersectorERKNS_4geom10CoordinateES9_@Base 3.4.2 - _ZNK4geos6noding15NodingValidator29checkEndPtVertexIntersectionsERKNS_4geom10CoordinateERKSt6vectorIPNS0_13SegmentStringESaIS8_EE@Base 3.4.2 - _ZNK4geos6noding15NodingValidator29checkEndPtVertexIntersectionsEv@Base 3.4.2 - _ZNK4geos6noding17IntersectionAdder6isDoneEv@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString13getCoordinateEj@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString14getCoordinatesEv@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString16getSegmentOctantEj@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString4sizeEv@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString5printERSo@Base 3.4.2 - _ZNK4geos6noding18BasicSegmentString8isClosedEv@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString11getNodeListEv@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString13getCoordinateEj@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString14getCoordinatesEv@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString16getSegmentOctantEj@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString4sizeEv@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString5printERSo@Base 3.4.2 - _ZNK4geos6noding18NodedSegmentString8isClosedEv@Base 3.4.2 - _ZNK4geos6noding18SegmentIntersector6isDoneEv@Base 3.4.2 - _ZNK4geos6noding19FastNodingValidator15getErrorMessageB5cxx11Ev@Base 3.5.1 - _ZNK4geos6noding23IntersectionFinderAdder6isDoneEv@Base 3.4.2 - _ZNK4geos6noding23OrientedCoordinateArray9compareToERKS1_@Base 3.4.2 - _ZNK4geos6noding27SegmentIntersectionDetector6isDoneEv@Base 3.4.2 - _ZNK4geos6noding32SingleInteriorIntersectionFinder6isDoneEv@Base 3.4.2 - _ZNK4geos6noding9snapround17SimpleSnapRounder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding9snapround18MCIndexSnapRounder18getNodedSubstringsEv@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel10copyScaledERKNS_4geom10CoordinateERS4_@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel10intersectsERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel15getSafeEnvelopeEv@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel16intersectsScaledERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel25intersectsToleranceSquareERKNS_4geom10CoordinateES6_@Base 3.4.2 - _ZNK4geos6noding9snapround8HotPixel5scaleEd@Base 3.4.2 - _ZNK4geos8simplify16LineSegmentIndex5queryEPKNS_4geom11LineSegmentE@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos8simplify16TaggedLineString10getSegmentEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos8simplify16TaggedLineString10getSegmentEm@Base 3.7.0 - _ZNK4geos8simplify16TaggedLineString11getSegmentsEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString12asLineStringEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString12asLinearRingEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString13getResultSizeEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString14getMinimumSizeEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString20getParentCoordinatesEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString20getResultCoordinatesEv@Base 3.4.2 - _ZNK4geos8simplify16TaggedLineString9getParentEv@Base 3.4.2 - _ZNK4geos8simplify17TaggedLineSegment8getIndexEv@Base 3.4.2 - _ZNK4geos8simplify17TaggedLineSegment9getParentEv@Base 3.4.2 - _ZNK4geos8simplify26TaggedLineStringSimplifier23hasInteriorIntersectionERKNS_4geom11LineSegmentES5_@Base 3.4.2 - _ZNK4geos9algorithm11HCoordinate13getCoordinateERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm11HCoordinate4getXEv@Base 3.4.2 - _ZNK4geos9algorithm11HCoordinate4getYEv@Base 3.4.2 - _ZNK4geos9algorithm12CentroidArea11getCentroidERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm12CentroidArea11getCentroidEv@Base 3.4.2 - _ZNK4geos9algorithm12CentroidLine11getCentroidERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm12CentroidLine11getCentroidEv@Base 3.4.2 - _ZNK4geos9algorithm13CentroidPoint11getCentroidERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm13CentroidPoint11getCentroidEv@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector12intersectionERKNS_4geom10CoordinateES5_S5_S5_RS3_@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector14isIntersectionERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector15getEdgeDistanceEii@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector18smallestInAbsValueEdddd@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector20isInSegmentEnvelopesERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector20normalizeToEnvCentreERNS_4geom10CoordinateES4_S4_S4_S4_@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector27safeHCoordinateIntersectionERKNS_4geom10CoordinateES5_S5_S5_RS3_@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector29intersectionWithNormalizationERKNS_4geom10CoordinateES5_S5_S5_RS3_@Base 3.4.2 - _ZNK4geos9algorithm15LineIntersector8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos9algorithm17InteriorPointArea16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm17InteriorPointLine16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm18InteriorPointPoint16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm8Centroid11getCentroidERNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter17isGeometryChangedEv@Base 3.4.2 - _ZNK4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter6isDoneEv@Base 3.4.2 - _ZNK4geos9geomgraph11EdgeEndStar13getCoordinateEv@Base 3.6.0 - _ZNK4geos9geomgraph11EdgeEndStar3endEv@Base 3.6.0 - _ZNK4geos9geomgraph11EdgeEndStar5beginEv@Base 3.6.0 - _ZNK4geos9geomgraph11EdgeEndStar5printB5cxx11Ev@Base 3.6.0 - _ZNK4geos9geomgraph11NodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9geomgraph12DirectedEdge13getDepthDeltaEv@Base 3.6.2 - _ZNK4geos9geomgraph12DirectedEdge5printB5cxx11Ev@Base 3.6.2 - _ZNK4geos9geomgraph14GraphComponent10isInResultEv@Base 3.4.2 - _ZNK4geos9geomgraph14GraphComponent12isCoveredSetEv@Base 3.4.2 - _ZNK4geos9geomgraph14GraphComponent9isCoveredEv@Base 3.4.2 - _ZNK4geos9geomgraph14GraphComponent9isVisitedEv@Base 3.4.2 - _ZNK4geos9geomgraph16DirectedEdgeStar5printB5cxx11Ev@Base 3.6.2 - _ZNK4geos9geomgraph16TopologyLocation12getLocationsEv@Base 3.4.2 - _ZNK4geos9geomgraph16TopologyLocation13isEqualOnSideERKS1_i@Base 3.4.2 - _ZNK4geos9geomgraph16TopologyLocation17allPositionsEqualEi@Base 3.4.2 - (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos9geomgraph16TopologyLocation3getEj@Base 3.4.2 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos9geomgraph16TopologyLocation3getEm@Base 3.7.0 - _ZNK4geos9geomgraph16TopologyLocation6isAreaEv@Base 3.4.2 - _ZNK4geos9geomgraph16TopologyLocation6isLineEv@Base 3.4.2 - _ZNK4geos9geomgraph16TopologyLocation6isNullEv@Base 3.4.2 - _ZNK4geos9geomgraph16TopologyLocation8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph16TopologyLocation9isAnyNullEv@Base 3.4.2 - _ZNK4geos9geomgraph20EdgeIntersectionList14isIntersectionERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9geomgraph20EdgeIntersectionList5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph20EdgeIntersectionList7isEmptyEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge10isIsolatedEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge11isCollapsedEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge12getNumPointsEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge12printReverseB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph4Edge13getCoordinateEi@Base 3.4.2 - _ZNK4geos9geomgraph4Edge13getCoordinateEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge13getDepthDeltaEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge14getCoordinatesEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge16isPointwiseEqualEPKS1_@Base 3.4.2 - _ZNK4geos9geomgraph4Edge22getMaximumSegmentIndexEv@Base 3.4.2 - _ZNK4geos9geomgraph4Edge5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph4Edge6equalsEPKS1_@Base 3.4.2 - _ZNK4geos9geomgraph4Edge6equalsERKS1_@Base 3.4.2 - _ZNK4geos9geomgraph4Edge8isClosedEv@Base 3.4.2 - _ZNK4geos9geomgraph4Node10isIsolatedEv@Base 3.4.2 - _ZNK4geos9geomgraph4Node13getCoordinateEv@Base 3.4.2 - _ZNK4geos9geomgraph4Node22isIncidentEdgeInResultEv@Base 3.4.2 - _ZNK4geos9geomgraph4Node4getZEv@Base 3.4.2 - _ZNK4geos9geomgraph5Depth11getLocationEii@Base 3.4.2 - _ZNK4geos9geomgraph5Depth6isNullEi@Base 3.4.2 - _ZNK4geos9geomgraph5Depth6isNullEii@Base 3.4.2 - _ZNK4geos9geomgraph5Depth6isNullEv@Base 3.4.2 - _ZNK4geos9geomgraph5Depth8getDeltaEi@Base 3.4.2 - _ZNK4geos9geomgraph5Depth8getDepthEii@Base 3.4.2 - _ZNK4geos9geomgraph5Depth8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph5Label11getLocationEi@Base 3.4.2 - _ZNK4geos9geomgraph5Label11getLocationEii@Base 3.4.2 - _ZNK4geos9geomgraph5Label13isEqualOnSideERKS1_i@Base 3.4.2 - _ZNK4geos9geomgraph5Label16getGeometryCountEv@Base 3.4.2 - _ZNK4geos9geomgraph5Label17allPositionsEqualEii@Base 3.4.2 - _ZNK4geos9geomgraph5Label6isAreaEi@Base 3.4.2 - _ZNK4geos9geomgraph5Label6isAreaEv@Base 3.4.2 - _ZNK4geos9geomgraph5Label6isLineEi@Base 3.4.2 - _ZNK4geos9geomgraph5Label6isNullEi@Base 3.4.2 - _ZNK4geos9geomgraph5Label6isNullEv@Base 3.4.2 - _ZNK4geos9geomgraph5Label8toStringB5cxx11Ev@Base 3.5.1 - _ZNK4geos9geomgraph5Label9isAnyNullEi@Base 3.4.2 - _ZNK4geos9geomgraph7EdgeEnd16compareDirectionEPKS1_@Base 3.4.2 - _ZNK4geos9geomgraph7EdgeEnd5printB5cxx11Ev@Base 3.6.0 - _ZNK4geos9geomgraph7EdgeEnd9compareToEPKS1_@Base 3.4.2 - _ZNK4geos9geomgraph7NodeMap16getBoundaryNodesEiRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 - _ZNK4geos9geomgraph7NodeMap4findERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9geomgraph7NodeMap5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos9linearref14LinearIterator11isEndOfLineEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator13getSegmentEndEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator14getVertexIndexEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator15getSegmentStartEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator17getComponentIndexEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator7getLineEv@Base 3.4.2 - _ZNK4geos9linearref14LinearIterator7hasNextEv@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation10getSegmentEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation10isEndpointERKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation13getCoordinateEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation15getSegmentIndexEv@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation15isOnSameSegmentERKS1_@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation16getSegmentLengthEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation17getComponentIndexEv@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation18getSegmentFractionEv@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation21compareLocationValuesEjjd@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation7isValidEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation8isVertexEv@Base 3.4.2 - _ZNK4geos9linearref14LinearLocation9compareToERKS1_@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine10clampIndexEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine10locationOfEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine10locationOfEdb@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine11extractLineEdd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine11getEndIndexEv@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine12extractPointEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine12extractPointEdd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine12indexOfAfterERKNS_4geom10CoordinateEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine12isValidIndexEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine13getStartIndexEv@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine13positiveIndexEd@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine7projectERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9linearref17LengthIndexedLine9indicesOfEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref17LengthLocationMap11getLocationEd@Base 3.4.2 - _ZNK4geos9linearref17LengthLocationMap11getLocationEdb@Base 3.4.2 - _ZNK4geos9linearref17LengthLocationMap13resolveHigherERKNS0_14LinearLocationE@Base 3.4.2 - _ZNK4geos9linearref17LengthLocationMap18getLocationForwardEd@Base 3.4.2 - _ZNK4geos9linearref17LengthLocationMap9getLengthERKNS0_14LinearLocationE@Base 3.4.2 - _ZNK4geos9linearref18LengthIndexOfPoint12indexOfAfterERKNS_4geom10CoordinateEd@Base 3.4.2 - _ZNK4geos9linearref18LengthIndexOfPoint16indexOfFromStartERKNS_4geom10CoordinateEd@Base 3.4.2 - _ZNK4geos9linearref18LengthIndexOfPoint21segmentNearestMeasureEPKNS_4geom11LineSegmentERKNS2_10CoordinateEd@Base 3.4.2 - _ZNK4geos9linearref18LengthIndexOfPoint7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9linearref19LocationIndexOfLine9indicesOfEPKNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9linearref20LocationIndexOfPoint12indexOfAfterERKNS_4geom10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 - _ZNK4geos9linearref20LocationIndexOfPoint16indexOfFromStartERKNS_4geom10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 - _ZNK4geos9linearref20LocationIndexOfPoint7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9linearref21LinearGeometryBuilder17getLastCoordinateEv@Base 3.4.2 - _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge7getNextEv@Base 3.4.2 - _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge8getLabelEv@Base 3.4.2 - _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge8isInRingEv@Base 3.4.2 - _ZNK4geos9operation12intersection28RectangleIntersectionBuilder5emptyEv@Base 3.5.0 - _ZNK4geos9operation12intersection9Rectangle12toLinearRingERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZNK4geos9operation12intersection9Rectangle9toPolygonERKNS_4geom15GeometryFactoryE@Base 3.5.0 - _ZNK4geos9operation22GeometryGraphOperation14getArgGeometryEj@Base 3.4.2 - _ZNK4geos9operation6buffer13BufferBuilder25createEmptyResultGeometryEv@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier11isDeletableEiiid@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier12collapseLineEv@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier16isShallowSampledERKNS_4geom10CoordinateES6_iid@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier18isShallowConcavityERKNS_4geom10CoordinateES6_S6_d@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier23findNextNonDeletedIndexEj@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier9isConcaveERKNS_4geom10CoordinateES6_S6_@Base 3.4.2 - _ZNK4geos9operation6buffer25BufferInputLineSimplifier9isShallowERKNS_4geom10CoordinateES6_S6_d@Base 3.4.2 - _ZNK4geos9operation6relate13EdgeEndBundle5printB5cxx11Ev@Base 3.7.0 - _ZNK4geos9operation6relate17RelateNodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9operation7overlay15ElevationMatrix15getAvgElevationEv@Base 3.4.2 - _ZNK4geos9operation7overlay15ElevationMatrix5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos9operation7overlay15ElevationMatrix7elevateEPNS_4geom8GeometryE@Base 3.4.2 - _ZNK4geos9operation7overlay15ElevationMatrix7getCellERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9operation7overlay18OverlayNodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9operation7overlay19ElevationMatrixCell5printB5cxx11Ev@Base 3.5.1 - _ZNK4geos9operation7overlay19ElevationMatrixCell6getAvgEv@Base 3.4.2 - _ZNK4geos9operation7overlay19ElevationMatrixCell8getTotalEv@Base 3.4.2 - _ZNK4geos9operation7overlay21ElevationMatrixFilter9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9operation7overlay9OverlayOp6mergeZEPNS_9geomgraph4NodeEPKNS_4geom10LineStringE@Base 3.4.2 - _ZNK4geos9operation7overlay9OverlayOp6mergeZEPNS_9geomgraph4NodeEPKNS_4geom7PolygonE@Base 3.4.2 - _ZNK4geos9operation8distance13FacetSequence11getEnvelopeEv@Base 3.6.0 - (subst)_ZNK4geos9operation8distance13FacetSequence13getCoordinateE{size_t}@Base 3.6.0 - _ZNK4geos9operation8distance13FacetSequence23computeLineLineDistanceERKS2_@Base 3.6.0 - _ZNK4geos9operation8distance13FacetSequence24computePointLineDistanceERKNS_4geom10CoordinateERKS2_@Base 3.6.0 - _ZNK4geos9operation8distance13FacetSequence4sizeEv@Base 3.6.0 - _ZNK4geos9operation8distance13FacetSequence7isPointEv@Base 3.6.0 - _ZNK4geos9operation8distance13FacetSequence8distanceERKS2_@Base 3.7.0 - _ZNK4geos9operation8distance20IndexedFacetDistance11getDistanceEPKNS_4geom8GeometryE@Base 3.7.0 - _ZNK4geos9operation8geounion18PointGeometryUnion5UnionEv@Base 3.4.2 - _ZNK4geos9operation9linemerge13LineMergeEdge7getLineEv@Base 3.4.2 - _ZNK4geos9precision10Translater9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 - _ZNK4geos9precision22CommonCoordinateFilter9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 - (optional=templinst)_ZNKSt5ctypeIcE8do_widenEc@Base 3.4.2 - (optional=templinst)_ZNSt11_Deque_baseIPN4geos11planargraph4NodeESaIS3_EED1Ev@Base 3.4.2 - (optional=templinst)_ZNSt11_Deque_baseIPN4geos11planargraph4NodeESaIS3_EED2Ev@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_initialize_mapEj@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_initialize_mapEm@Base 3.4.2 - (optional=templinst)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EED1Ev@Base 3.4.2 - (optional=templinst)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EED2Ev@Base 3.4.2 - _ZNSt5dequeIPN4geos11planargraph4NodeESaIS3_EE16_M_push_back_auxIJRKS3_EEEvDpOT_@Base 3.7.0 - _ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE16_M_push_back_auxIJRKS4_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE16_M_push_back_auxIJS4_EEEvDpOT_@Base 3.7.0 - (subst)_ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_reallocate_mapE{size_t}b@Base 3.7.0 - _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE12emplace_backIJS2_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvT_SB_St20forward_iterator_tag@Base 3.6.2 - (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE13_M_assign_auxISt20_List_const_iteratorIS2_EEEvT_S8_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag@Base 3.4.2 - (arch=!ia64|subst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_default_appendE{size_t}@Base 3.7.0 - _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!amd64)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.7.1 - (optional=templinst|arch=hppa ia64 mips mips64el mipsel riscv64 sparc64)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS2_S4_EERS7_@Base 3.7.0 - (optional=templinst|arch=!alpha !amd64 !arm64 !hppa !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64 !x32)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE7reserveEj@Base 3.4.2 - (optional=templinst|arch=alpha ppc64 ppc64el s390x)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE7reserveEm@Base 3.5.0 - _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EEaSERKS4_@Base 3.7.0 - _ZNSt6vectorIN4geos5index7strtree13ItemsListItemESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 - _ZNSt6vectorIN4geos5index7strtree13ItemsListItemESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIN4geos9algorithm8distance17PointPairDistanceESaIS3_EED1Ev@Base 3.7.0 - _ZNSt6vectorIN4geos9algorithm8distance17PointPairDistanceESaIS3_EED2Ev@Base 3.7.0 - _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 3.4.2 - (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev@Base 3.4.2 - _ZNSt6vectorIPKN4geos11planargraph12DirectedEdgeESaIS4_EE12emplace_backIJS4_EEEvDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos11planargraph12DirectedEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos11planargraph12DirectedEdgeESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE13_M_assign_auxISt23_Rb_tree_const_iteratorIS4_EEEvT_SA_St20forward_iterator_tag@Base 3.4.2 - (subst)_ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_default_appendE{size_t}@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom10LineStringESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom10LineStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom10LinearRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom5PointESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos4geom7PolygonESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos5index13intervalrtree17IntervalRTreeNodeESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPKN4geos6noding13SegmentStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos11planargraph12DirectedEdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!alpha !hurd-i386 !i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos11planargraph12DirectedEdgeESaIS3_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS3_S5_EE@Base 3.4.2 - _ZNSt6vectorIPN4geos11planargraph4EdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!alpha !hurd-i386 !i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos11planargraph4EdgeESaIS3_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS3_S5_EE@Base 3.4.2 - _ZNSt6vectorIPN4geos11planargraph4NodeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos11planargraph8SubgraphESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom10CoordinateESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom10LineStringESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom10LineStringESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom11LineSegmentESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom18CoordinateSequenceESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom18CoordinateSequenceESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom18CoordinateSequenceESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom5PointESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom7PolygonESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom8EnvelopeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_10LineStringES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_5PointES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_7PolygonES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS3_S5_EEEEvSA_T_SB_St20forward_iterator_tag@Base 3.4.2 - _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEj@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEm@Base 3.4.2 - _ZNSt6vectorIPN4geos5index5chain13MonotoneChainESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIPN4geos5index5chain13MonotoneChainESaIS4_EE7reserveEj@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIPN4geos5index5chain13MonotoneChainESaIS4_EE7reserveEm@Base 3.4.2 - _ZNSt6vectorIPN4geos5index7bintree8IntervalESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index7strtree12AbstractNodeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index7strtree13BoundablePairESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index7strtree13BoundablePairESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE12emplace_backIJS4_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS4_S6_EEEEvSB_T_SC_St20forward_iterator_tag@Base 3.4.2 - _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!alpha !hurd-i386 !i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS4_S6_EE@Base 3.4.2 - _ZNSt6vectorIPN4geos5index9sweepline14SweepLineEventESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos5index9sweepline14SweepLineEventESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos6noding13SegmentStringESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos6noding13SegmentStringESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos8simplify17TaggedLineSegmentESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9geomgraph12DirectedEdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=armel armhf)_ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS3_S5_EEEEvSA_T_SB_St20forward_iterator_tag@Base 3.4.2 - _ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (arch=!armel !armhf)_ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9geomgraph4NodeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9geomgraph5LabelESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph5index14SweepLineEventESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph5index14SweepLineEventESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9geomgraph7EdgeEndESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS0_9operation7overlay15MinimalEdgeRingES_ISC_SaISC_EEEEEEvNS8_IPS3_S5_EET_SJ_St20forward_iterator_tag@Base 3.4.2 - _ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation10polygonize22PolygonizeDirectedEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation10polygonize8EdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation6buffer12DepthSegmentESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation6buffer14BufferSubgraphESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation7overlay15MaximalEdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation7overlay15MinimalEdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation8distance13FacetSequenceESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation8distance16GeometryLocationESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation9linemerge10EdgeStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPN4geos9operation9linemerge21LineMergeDirectedEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 - _ZNSt6vectorIPNSt7__cxx114listIPN4geos11planargraph12DirectedEdgeESaIS5_EEESaIS8_EE17_M_realloc_insertIJRKS8_EEEvN9__gnu_cxx17__normal_iteratorIPS8_SA_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPvSaIS0_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS0_S2_EEEEvNS5_IPS0_S2_EET_SB_St20forward_iterator_tag@Base 3.4.2 - (optional=templinst)_ZNSt6vectorIPvSaIS0_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS0_S2_EEEEvS7_T_S8_St20forward_iterator_tag@Base 3.4.2 - _ZNSt6vectorIPvSaIS0_EE17_M_realloc_insertIJS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index7strtree8IntervalESt14default_deleteIS4_EESaIS7_EE17_M_realloc_insertIJS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_@Base 3.7.1 - (subst)_ZNSt6vectorIdSaIdEE17_M_default_appendE{size_t}@Base 3.7.0 - _ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_@Base 3.7.0 - (optional=templinst|arch=!ia64|subst)_ZNSt6vectorIiSaIiEE14_M_fill_assignE{size_t}RKi@Base 3.7.0 - (optional=templinst|arch=!ia64|subst)_ZNSt6vectorIiSaIiEE17_M_default_appendE{size_t}@Base 3.7.0 - _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIiSaIiEEaSERKS1_@Base 3.4.2 - (subst)_ZNSt6vectorI{size_t}SaI{size_t}EE17_M_realloc_insertIJRK{size_t}EEEvN9__gnu_cxx17__normal_iteratorIP{size_t}S1_EEDpOT_@Base 3.7.0 - (subst)_ZNSt6vectorI{size_t}SaI{size_t}EE17_M_realloc_insertIJ{size_t}EEEvN9__gnu_cxx17__normal_iteratorIP{size_t}S1_EEDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@Base 3.7.0 - (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@Base 3.7.0 - (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@Base 3.4.2 - (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@Base 3.4.2 - (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@Base 3.4.2 - (arch=amd64 arm64 hppa ia64 mips64el riscv64 sparc64 x32)_ZNSt7__cxx114listIN4geos4geom10CoordinateESaIS3_EE6insertESt20_List_const_iteratorIS3_ERKS3_@Base 3.7.0 - _ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE4findERKS3_@Base 3.5.0 - (optional=templinst)_ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.5.0 - (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIRKS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E@Base 3.4.2 - (optional=templinst|arch=amd64 arm64 hppa kfreebsd-amd64 m68k sh4 x32)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE11equal_rangeERS4_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE17_M_emplace_uniqueIJS3_IS2_S7_EEEES3_ISt17_Rb_tree_iteratorIS8_EbEDpOT_@Base 3.7.1 - (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E@Base 3.4.2 - (optional=templinst|arch=amd64 arm64 hppa ia64 mips64el riscv64 sh4 sparc64 x32)_ZNSt8_Rb_treeIN4geos6noding23OrientedCoordinateArrayES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueIRKS2_EESt4pairISt17_Rb_tree_iteratorIS2_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIN4geos6noding23OrientedCoordinateArrayES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN4geos4util7ProfileEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE17_M_emplace_uniqueIJS6_IS5_SB_EEEES6_ISt17_Rb_tree_iteratorISC_EbEDpOT_@Base 3.7.1 - (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN4geos4util7ProfileEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE4findERS7_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN4geos4util7ProfileEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE8_M_eraseEPSt13_Rb_tree_nodeISC_E@Base 3.4.2 - (optional=templinst|arch=!hurd-i386 !i386 !m68k !mips !mipsel !powerpc !powerpcspe)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE16_M_insert_uniqueIRKS4_EESt4pairISt17_Rb_tree_iteratorIS4_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE24_M_get_insert_unique_posERKS4_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS4_ERKS4_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE4findERKS4_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 - (optional=templinst|arch=armel armhf)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_EPSt18_Rb_tree_node_baseRS6_@Base 3.5.1 - (optional=templinst|arch=armel armhf hurd-i386 i386 mips mipsel powerpc powerpcspe)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS6_EESK_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE24_M_get_insert_unique_posERS6_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS6_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE16_M_insert_uniqueIRKS4_EESt4pairISt17_Rb_tree_iteratorIS4_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 - _ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE24_M_get_insert_unique_posERS6_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS6_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom8GeometryESt4pairIKS4_PNS0_8simplify16TaggedLineStringEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE17_M_emplace_uniqueIJS5_IS4_S9_EEEES5_ISt17_Rb_tree_iteratorISA_EbEDpOT_@Base 3.7.1 - (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom8GeometryESt4pairIKS4_PNS0_8simplify16TaggedLineStringEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E@Base 3.4.2 - _ZNSt8_Rb_treeIPN4geos11planargraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos11planargraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 - _ZNSt8_Rb_treeIPN4geos11triangulate8quadedge8QuadEdgeES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE16_M_insert_uniqueIRKS4_EESt4pairISt17_Rb_tree_iteratorIS4_EbEOT_@Base 3.7.0 - (optional=templinst|arch=amd64 arm64 hppa sh4 x32)_ZNSt8_Rb_treeIPN4geos11triangulate8quadedge8QuadEdgeES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE16_M_insert_uniqueIS4_EESt4pairISt17_Rb_tree_iteratorIS4_EbEOT_@Base 3.7.0 - _ZNSt8_Rb_treeIPN4geos11triangulate8quadedge8QuadEdgeES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE24_M_get_insert_unique_posERKS4_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos11triangulate8quadedge8QuadEdgeES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE4findERKS4_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos11triangulate8quadedge8QuadEdgeES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS5_EESJ_IJEEEEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE24_M_get_insert_unique_posERS5_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS9_ERS5_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E@Base 3.4.2 - (optional=templinst|arch=amd64 arm64 hppa sh4 x32)_ZNSt8_Rb_treeIPN4geos6noding11SegmentNodeES3_St9_IdentityIS3_ENS1_13SegmentNodeLTESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos6noding11SegmentNodeES3_St9_IdentityIS3_ENS1_13SegmentNodeLTESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 - _ZNSt8_Rb_treeIPN4geos6noding23OrientedCoordinateArrayESt4pairIKS3_PNS0_9geomgraph4EdgeEESt10_Select1stIS9_ENS6_8EdgeList6OcaCmpESaIS9_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS5_EESK_IJEEEEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos6noding23OrientedCoordinateArrayESt4pairIKS3_PNS0_9geomgraph4EdgeEESt10_Select1stIS9_ENS6_8EdgeList6OcaCmpESaIS9_EE24_M_get_insert_unique_posERS5_@Base 3.4.2 - (optional=templinst|arch=amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64el riscv64 sh4 sparc64 x32)_ZNSt8_Rb_treeIPN4geos6noding23OrientedCoordinateArrayESt4pairIKS3_PNS0_9geomgraph4EdgeEESt10_Select1stIS9_ENS6_8EdgeList6OcaCmpESaIS9_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS9_ERS5_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos6noding23OrientedCoordinateArrayESt4pairIKS3_PNS0_9geomgraph4EdgeEESt10_Select1stIS9_ENS6_8EdgeList6OcaCmpESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph16EdgeIntersectionES3_St9_IdentityIS3_ENS1_24EdgeIntersectionLessThenESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 - _ZNSt8_Rb_treeIPN4geos9geomgraph4NodeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph4NodeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 - _ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE4findERKS3_@Base 3.4.2 - (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 - _ZNSt8_Rb_treeIddSt9_IdentityIdESt4lessIdESaIdEE16_M_insert_uniqueIRKdEESt4pairISt17_Rb_tree_iteratorIdEbEOT_@Base 3.7.0 - (optional=templinst)_ZNSt8_Rb_treeIddSt9_IdentityIdESt4lessIdESaIdEE8_M_eraseEPSt13_Rb_tree_nodeIdE@Base 3.4.2 - (optional=templinst|arch=armel armhf hppa hurd-i386 i386 m68k mips mipsel powerpc powerpcspe sh4 x32)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops14_Iter_comp_valINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_RT2_@Base 3.6.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops14_Iter_comp_valINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_RT2_@Base 3.6.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_SF_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_SF_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEEiS7_NS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_T0_SJ_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEElS7_NS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_T0_SJ_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_comp_iterINS3_19GeometryGreaterThenEEEEvT_T0_SG_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterINS3_19GeometryGreaterThenEEEEvT_T0_SG_T1_T2_@Base 3.4.2 - (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEE{ssize_t}S6_NS0_5__ops15_Iter_comp_iterINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_T2_@Base 3.6.0 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer12DepthSegmentESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterINS4_20DepthSegmentLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer12DepthSegmentESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterINS4_20DepthSegmentLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 - (optional=templinst|arch=!alpha !mips !mipsel !ppc64 !ppc64el !s390x !sh4)_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_SE_T0_@Base 3.6.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterINS3_19GeometryGreaterThenEEEEvT_SF_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_@Base 3.4.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer12DepthSegmentESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_20DepthSegmentLessThenEEEEvT_SG_T0_@Base 3.6.2 - (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|subst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEE{ssize_t}NS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_@Base 3.7.0 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEEiNS0_5__ops15_Iter_comp_iterINS3_19GeometryGreaterThenEEEEvT_SF_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterINS3_19GeometryGreaterThenEEEEvT_SF_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer12DepthSegmentESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterINS4_20DepthSegmentLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer12DepthSegmentESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterINS4_20DepthSegmentLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 - (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 - (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 - (optional=templinst)_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 3.7.0 - (optional=templinst|arch=!alpha !armel !armhf !hurd-i386 !i386 !m68k !mips !mipsel !powerpc !powerpcspe !ppc64 !ppc64el !s390x !sh4)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_SE_SE_T0_@Base 3.4.2 - (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_@Base 3.6.2 - (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom8GeometryESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_comp_iterINS3_19GeometryGreaterThenEEEEvT_T0_@Base 3.4.2 - (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops14_Val_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_@Base 3.4.2 - (optional=templinst|arch=armel armhf hurd-i386 i386 m68k mips mipsel powerpc powerpcspe)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops14_Val_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_@Base 3.7.0 - (optional=templinst|arch=kfreebsd-i386 m68k)_ZSt8__uniqueIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops19_Iter_equal_to_iterEET_SC_SC_T0_@Base 3.5.0 - (optional=templinst|arch=armel armhf m68k)_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS0_5__ops16_Iter_equals_valIKdEEET_SB_SB_T0_St26random_access_iterator_tag@Base 3.4.2 - _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_@Base 3.7.0 - (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@Base 3.4.2 - (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_@Base 3.4.2 - _ZTIN4geos11planargraph11PlanarGraphE@Base 3.4.2 - _ZTIN4geos11planargraph12DirectedEdgeE@Base 3.4.2 - _ZTIN4geos11planargraph14GraphComponentE@Base 3.4.2 - _ZTIN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 - _ZTIN4geos11planargraph4EdgeE@Base 3.4.2 - _ZTIN4geos11planargraph4NodeE@Base 3.4.2 - _ZTIN4geos11planargraph7NodeMapE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge15QuadEdgeLocatorE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge15TriangleVisitorE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 - _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge6VertexE@Base 3.4.2 - _ZTIN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 - _ZTIN4geos2io14ParseExceptionE@Base 3.4.2 - _ZTIN4geos2io9WKBWriterE@Base 3.4.2 - _ZTIN4geos4geom10LineStringE@Base 3.4.2 - _ZTIN4geos4geom10LinearRingE@Base 3.4.2 - _ZTIN4geos4geom10MultiPointE@Base 3.4.2 - _ZTIN4geos4geom11LineSegmentE@Base 3.4.2 - _ZTIN4geos4geom12MultiPolygonE@Base 3.4.2 - _ZTIN4geos4geom14GeometryFilterE@Base 3.4.2 - _ZTIN4geos4geom15GeometryFactoryE@Base 3.4.2 - _ZTIN4geos4geom15MultiLineStringE@Base 3.4.2 - _ZTIN4geos4geom16CoordinateFilterE@Base 3.4.2 - _ZTIN4geos4geom18CoordinateSequenceE@Base 3.4.2 - _ZTIN4geos4geom18GeometryCollectionE@Base 3.4.2 - _ZTIN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 - _ZTIN4geos4geom23GeometryComponentFilterE@Base 3.4.2 - _ZTIN4geos4geom24CoordinateSequenceFilterE@Base 3.4.2 - _ZTIN4geos4geom25CoordinateSequenceFactoryE@Base 3.4.2 - _ZTIN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 - _ZTIN4geos4geom4prep13PreparedPointE@Base 3.4.2 - _ZTIN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 - _ZTIN4geos4geom4prep16PreparedGeometryE@Base 3.4.2 - _ZTIN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 - _ZTIN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 - _ZTIN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 - _ZTIN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 - _ZTIN4geos4geom4prep24PreparedPolygonPredicateE@Base 3.4.2 - _ZTIN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 - _ZTIN4geos4geom4prep31AbstractPreparedPolygonContainsE@Base 3.4.2 - _ZTIN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 - _ZTIN4geos4geom4util14PointExtracterE@Base 3.4.2 - _ZTIN4geos4geom4util16PolygonExtracterE@Base 3.4.2 - _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTIN4geos4geom4util19CoordinateOperationE@Base 3.4.2 - _ZTIN4geos4geom4util19GeometryTransformerE@Base 3.4.2 - _ZTIN4geos4geom4util23GeometryEditorOperationE@Base 3.4.2 - _ZTIN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 - _ZTIN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 - _ZTIN4geos4geom4util29ShortCircuitedGeometryVisitorE@Base 3.4.2 - _ZTIN4geos4geom5PointE@Base 3.4.2 - _ZTIN4geos4geom6LinealE@Base 3.4.2 - _ZTIN4geos4geom6PuntalE@Base 3.4.2 - _ZTIN4geos4geom7PolygonE@Base 3.4.2 - _ZTIN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 - _ZTIN4geos4geom8GeometryE@Base 3.4.2 - _ZTIN4geos4geom9PolygonalE@Base 3.4.2 - _ZTIN4geos4util13GEOSExceptionE@Base 3.4.2 - _ZTIN4geos4util17TopologyExceptionE@Base 3.4.2 - _ZTIN4geos4util20InterruptedExceptionE@Base 3.4.2 - _ZTIN4geos4util21GeometricShapeFactoryE@Base 3.4.2 - _ZTIN4geos4util21IllegalStateExceptionE@Base 3.4.2 - _ZTIN4geos4util24AssertionFailedExceptionE@Base 3.4.2 - _ZTIN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 - _ZTIN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 - _ZTIN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 - _ZTIN4geos5index11ItemVisitorE@Base 3.4.2 - _ZTIN4geos5index12SpatialIndexE@Base 3.4.2 - _ZTIN4geos5index13intervalrtree17IntervalRTreeNodeE@Base 3.4.2 - _ZTIN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 - _ZTIN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 - _ZTIN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 - _ZTIN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 - _ZTIN4geos5index7bintree4NodeE@Base 3.4.2 - _ZTIN4geos5index7bintree4RootE@Base 3.4.2 - _ZTIN4geos5index7bintree8NodeBaseE@Base 3.4.2 - _ZTIN4geos5index7strtree12AbstractNodeE@Base 3.4.2 - _ZTIN4geos5index7strtree12ItemDistanceE@Base 3.6.0 - _ZTIN4geos5index7strtree13ItemBoundableE@Base 3.4.2 - _ZTIN4geos5index7strtree15AbstractSTRtree12IntersectsOpE@Base 3.4.2 - _ZTIN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 - _ZTIN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 - _ZTIN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 - _ZTIN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 - _ZTIN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 - _ZTIN4geos5index7strtree7SIRtreeE@Base 3.4.2 - _ZTIN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 - _ZTIN4geos5index7strtree7STRtreeE@Base 3.4.2 - _ZTIN4geos5index7strtree9BoundableE@Base 3.4.2 - _ZTIN4geos5index8quadtree4NodeE@Base 3.4.2 - _ZTIN4geos5index8quadtree4RootE@Base 3.4.2 - _ZTIN4geos5index8quadtree8NodeBaseE@Base 3.4.2 - _ZTIN4geos5index8quadtree8QuadtreeE@Base 3.4.2 - _ZTIN4geos5index9sweepline22SweepLineOverlapActionE@Base 3.4.2 - _ZTIN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 - _ZTIN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 - _ZTIN4geos6noding11ScaledNoderE@Base 3.4.2 - _ZTIN4geos6noding11SimpleNoderE@Base 3.4.2 - _ZTIN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 - _ZTIN4geos6noding12MCIndexNoderE@Base 3.4.2 - _ZTIN4geos6noding13IteratedNoderE@Base 3.4.2 - _ZTIN4geos6noding13SegmentStringE@Base 3.4.2 - _ZTIN4geos6noding15SegmentNodeListE@Base 3.4.2 - _ZTIN4geos6noding15SinglePassNoderE@Base 3.4.2 - _ZTIN4geos6noding17IntersectionAdderE@Base 3.4.2 - _ZTIN4geos6noding18BasicSegmentStringE@Base 3.4.2 - _ZTIN4geos6noding18NodedSegmentStringE@Base 3.4.2 - _ZTIN4geos6noding18SegmentIntersectorE@Base 3.4.2 - _ZTIN4geos6noding20NodableSegmentStringE@Base 3.4.2 - _ZTIN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 - _ZTIN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 - _ZTIN4geos6noding27SegmentSetMutualIntersectorE@Base 3.4.2 - _ZTIN4geos6noding32SingleInteriorIntersectionFinderE@Base 3.4.2 - _ZTIN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 - _ZTIN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 - _ZTIN4geos6noding5NoderE@Base 3.4.2 - _ZTIN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 - _ZTIN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 - _ZTIN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 - _ZTIN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 - _ZTIN4geos8simplify13DPTransformerE@Base 3.4.2 - _ZTIN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 - _ZTIN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 - _ZTIN4geos9algorithm11PointInRingE@Base 3.4.2 - _ZTIN4geos9algorithm13MCPointInRing10MCSelecterE@Base 3.4.2 - _ZTIN4geos9algorithm13MCPointInRingE@Base 3.4.2 - _ZTIN4geos9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZTIN4geos9algorithm17SimplePointInRingE@Base 3.4.2 - _ZTIN4geos9algorithm18SIRtreePointInRingE@Base 3.4.2 - _ZTIN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 - _ZTIN4geos9algorithm6locate22PointOnGeometryLocatorE@Base 3.4.2 - _ZTIN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 - _ZTIN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 - _ZTIN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 - _ZTIN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 - _ZTIN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 - _ZTIN4geos9geomgraph11NodeFactoryE@Base 3.4.2 - _ZTIN4geos9geomgraph11PlanarGraphE@Base 3.4.2 - _ZTIN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZTIN4geos9geomgraph13GeometryGraphE@Base 3.4.2 - _ZTIN4geos9geomgraph14GraphComponentE@Base 3.4.2 - _ZTIN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 - _ZTIN4geos9geomgraph4EdgeE@Base 3.4.2 - _ZTIN4geos9geomgraph4NodeE@Base 3.4.2 - _ZTIN4geos9geomgraph5DepthE@Base 3.4.2 - _ZTIN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 - _ZTIN4geos9geomgraph5index14SweepLineEventE@Base 3.4.2 - _ZTIN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 - _ZTIN4geos9geomgraph5index17SweepLineEventOBJE@Base 3.4.2 - _ZTIN4geos9geomgraph5index18EdgeSetIntersectorE@Base 3.4.2 - _ZTIN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 - _ZTIN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 - _ZTIN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 - _ZTIN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 - _ZTIN4geos9geomgraph7EdgeEndE@Base 3.4.2 - _ZTIN4geos9geomgraph7NodeMapE@Base 3.4.2 - _ZTIN4geos9geomgraph8EdgeListE@Base 3.4.2 - _ZTIN4geos9geomgraph8EdgeRingE@Base 3.4.2 - _ZTIN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 - _ZTIN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 - _ZTIN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 - _ZTIN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 - _ZTIN4geos9operation22GeometryGraphOperationE@Base 3.4.2 - _ZTIN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 - _ZTIN4geos9operation5valid9IsValidOpE@Base 3.4.2 - _ZTIN4geos9operation6relate10RelateNodeE@Base 3.4.2 - _ZTIN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 - _ZTIN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 - _ZTIN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 - _ZTIN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 - _ZTIN4geos9operation6relate8RelateOpE@Base 3.4.2 - _ZTIN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 - _ZTIN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 - _ZTIN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 - _ZTIN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 - _ZTIN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 - _ZTIN4geos9operation7overlay9OverlayOpE@Base 3.4.2 - _ZTIN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 - _ZTIN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 - _ZTIN4geos9operation8distance7DeleterE@Base 3.7.0 - _ZTIN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 - _ZTIN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 - _ZTIN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 - _ZTIN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 - _ZTIN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 - _ZTIN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 - _ZTIN4geos9precision10TranslaterE@Base 3.4.2 - _ZTIN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 - _ZTIN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 - _ZTIPN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 - _ZTIPN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 - _ZTSN4geos11planargraph11PlanarGraphE@Base 3.4.2 - _ZTSN4geos11planargraph12DirectedEdgeE@Base 3.4.2 - _ZTSN4geos11planargraph14GraphComponentE@Base 3.4.2 - _ZTSN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 - _ZTSN4geos11planargraph4EdgeE@Base 3.4.2 - _ZTSN4geos11planargraph4NodeE@Base 3.4.2 - _ZTSN4geos11planargraph7NodeMapE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge15QuadEdgeLocatorE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge15TriangleVisitorE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 - _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge6VertexE@Base 3.4.2 - _ZTSN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 - _ZTSN4geos2io14ParseExceptionE@Base 3.4.2 - _ZTSN4geos2io9WKBWriterE@Base 3.4.2 - _ZTSN4geos4geom10LineStringE@Base 3.4.2 - _ZTSN4geos4geom10LinearRingE@Base 3.4.2 - _ZTSN4geos4geom10MultiPointE@Base 3.4.2 - _ZTSN4geos4geom11LineSegmentE@Base 3.4.2 - _ZTSN4geos4geom12MultiPolygonE@Base 3.4.2 - _ZTSN4geos4geom14GeometryFilterE@Base 3.4.2 - _ZTSN4geos4geom15GeometryFactoryE@Base 3.4.2 - _ZTSN4geos4geom15MultiLineStringE@Base 3.4.2 - _ZTSN4geos4geom16CoordinateFilterE@Base 3.4.2 - _ZTSN4geos4geom18CoordinateSequenceE@Base 3.4.2 - _ZTSN4geos4geom18GeometryCollectionE@Base 3.4.2 - _ZTSN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 - _ZTSN4geos4geom23GeometryComponentFilterE@Base 3.4.2 - _ZTSN4geos4geom24CoordinateSequenceFilterE@Base 3.4.2 - _ZTSN4geos4geom25CoordinateSequenceFactoryE@Base 3.4.2 - _ZTSN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 - _ZTSN4geos4geom4prep13PreparedPointE@Base 3.4.2 - _ZTSN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 - _ZTSN4geos4geom4prep16PreparedGeometryE@Base 3.4.2 - _ZTSN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 - _ZTSN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 - _ZTSN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 - _ZTSN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 - _ZTSN4geos4geom4prep24PreparedPolygonPredicateE@Base 3.4.2 - _ZTSN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 - _ZTSN4geos4geom4prep31AbstractPreparedPolygonContainsE@Base 3.4.2 - _ZTSN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 - _ZTSN4geos4geom4util14PointExtracterE@Base 3.4.2 - _ZTSN4geos4geom4util16PolygonExtracterE@Base 3.4.2 - _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTSN4geos4geom4util19CoordinateOperationE@Base 3.4.2 - _ZTSN4geos4geom4util19GeometryTransformerE@Base 3.4.2 - _ZTSN4geos4geom4util23GeometryEditorOperationE@Base 3.4.2 - _ZTSN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 - _ZTSN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 - _ZTSN4geos4geom4util29ShortCircuitedGeometryVisitorE@Base 3.4.2 - _ZTSN4geos4geom5PointE@Base 3.4.2 - _ZTSN4geos4geom6LinealE@Base 3.4.2 - _ZTSN4geos4geom6PuntalE@Base 3.4.2 - _ZTSN4geos4geom7PolygonE@Base 3.4.2 - _ZTSN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 - _ZTSN4geos4geom8GeometryE@Base 3.4.2 - _ZTSN4geos4geom9PolygonalE@Base 3.4.2 - _ZTSN4geos4util13GEOSExceptionE@Base 3.4.2 - _ZTSN4geos4util17TopologyExceptionE@Base 3.4.2 - _ZTSN4geos4util20InterruptedExceptionE@Base 3.4.2 - _ZTSN4geos4util21GeometricShapeFactoryE@Base 3.4.2 - _ZTSN4geos4util21IllegalStateExceptionE@Base 3.4.2 - _ZTSN4geos4util24AssertionFailedExceptionE@Base 3.4.2 - _ZTSN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 - _ZTSN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 - _ZTSN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 - _ZTSN4geos5index11ItemVisitorE@Base 3.4.2 - _ZTSN4geos5index12SpatialIndexE@Base 3.4.2 - _ZTSN4geos5index13intervalrtree17IntervalRTreeNodeE@Base 3.4.2 - _ZTSN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 - _ZTSN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 - _ZTSN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 - _ZTSN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 - _ZTSN4geos5index7bintree4NodeE@Base 3.4.2 - _ZTSN4geos5index7bintree4RootE@Base 3.4.2 - _ZTSN4geos5index7bintree8NodeBaseE@Base 3.4.2 - _ZTSN4geos5index7strtree12AbstractNodeE@Base 3.4.2 - _ZTSN4geos5index7strtree12ItemDistanceE@Base 3.6.0 - _ZTSN4geos5index7strtree13ItemBoundableE@Base 3.4.2 - _ZTSN4geos5index7strtree15AbstractSTRtree12IntersectsOpE@Base 3.4.2 - _ZTSN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 - _ZTSN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 - _ZTSN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 - _ZTSN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 - _ZTSN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 - _ZTSN4geos5index7strtree7SIRtreeE@Base 3.4.2 - _ZTSN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 - _ZTSN4geos5index7strtree7STRtreeE@Base 3.4.2 - _ZTSN4geos5index7strtree9BoundableE@Base 3.4.2 - _ZTSN4geos5index8quadtree4NodeE@Base 3.4.2 - _ZTSN4geos5index8quadtree4RootE@Base 3.4.2 - _ZTSN4geos5index8quadtree8NodeBaseE@Base 3.4.2 - _ZTSN4geos5index8quadtree8QuadtreeE@Base 3.4.2 - _ZTSN4geos5index9sweepline22SweepLineOverlapActionE@Base 3.4.2 - _ZTSN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 - _ZTSN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 - _ZTSN4geos6noding11ScaledNoderE@Base 3.4.2 - _ZTSN4geos6noding11SimpleNoderE@Base 3.4.2 - _ZTSN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 - _ZTSN4geos6noding12MCIndexNoderE@Base 3.4.2 - _ZTSN4geos6noding13IteratedNoderE@Base 3.4.2 - _ZTSN4geos6noding13SegmentStringE@Base 3.4.2 - _ZTSN4geos6noding15SegmentNodeListE@Base 3.4.2 - _ZTSN4geos6noding15SinglePassNoderE@Base 3.4.2 - _ZTSN4geos6noding17IntersectionAdderE@Base 3.4.2 - _ZTSN4geos6noding18BasicSegmentStringE@Base 3.4.2 - _ZTSN4geos6noding18NodedSegmentStringE@Base 3.4.2 - _ZTSN4geos6noding18SegmentIntersectorE@Base 3.4.2 - _ZTSN4geos6noding20NodableSegmentStringE@Base 3.4.2 - _ZTSN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 - _ZTSN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 - _ZTSN4geos6noding27SegmentSetMutualIntersectorE@Base 3.4.2 - _ZTSN4geos6noding32SingleInteriorIntersectionFinderE@Base 3.4.2 - _ZTSN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 - _ZTSN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 - _ZTSN4geos6noding5NoderE@Base 3.4.2 - _ZTSN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 - _ZTSN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 - _ZTSN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 - _ZTSN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 - _ZTSN4geos8simplify13DPTransformerE@Base 3.4.2 - _ZTSN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 - _ZTSN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 - _ZTSN4geos9algorithm11PointInRingE@Base 3.4.2 - _ZTSN4geos9algorithm13MCPointInRing10MCSelecterE@Base 3.4.2 - _ZTSN4geos9algorithm13MCPointInRingE@Base 3.4.2 - _ZTSN4geos9algorithm16BoundaryNodeRuleE@Base 3.4.2 - _ZTSN4geos9algorithm17SimplePointInRingE@Base 3.4.2 - _ZTSN4geos9algorithm18SIRtreePointInRingE@Base 3.4.2 - _ZTSN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 - _ZTSN4geos9algorithm6locate22PointOnGeometryLocatorE@Base 3.4.2 - _ZTSN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 - _ZTSN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 - _ZTSN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 - _ZTSN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 - _ZTSN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 - _ZTSN4geos9geomgraph11NodeFactoryE@Base 3.4.2 - _ZTSN4geos9geomgraph11PlanarGraphE@Base 3.4.2 - _ZTSN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZTSN4geos9geomgraph13GeometryGraphE@Base 3.4.2 - _ZTSN4geos9geomgraph14GraphComponentE@Base 3.4.2 - _ZTSN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 - _ZTSN4geos9geomgraph4EdgeE@Base 3.4.2 - _ZTSN4geos9geomgraph4NodeE@Base 3.4.2 - _ZTSN4geos9geomgraph5DepthE@Base 3.4.2 - _ZTSN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 - _ZTSN4geos9geomgraph5index14SweepLineEventE@Base 3.4.2 - _ZTSN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 - _ZTSN4geos9geomgraph5index17SweepLineEventOBJE@Base 3.4.2 - _ZTSN4geos9geomgraph5index18EdgeSetIntersectorE@Base 3.4.2 - _ZTSN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 - _ZTSN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 - _ZTSN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 - _ZTSN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 - _ZTSN4geos9geomgraph7EdgeEndE@Base 3.4.2 - _ZTSN4geos9geomgraph7NodeMapE@Base 3.4.2 - _ZTSN4geos9geomgraph8EdgeListE@Base 3.4.2 - _ZTSN4geos9geomgraph8EdgeRingE@Base 3.4.2 - _ZTSN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 - _ZTSN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 - _ZTSN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 - _ZTSN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 - _ZTSN4geos9operation22GeometryGraphOperationE@Base 3.4.2 - _ZTSN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 - _ZTSN4geos9operation5valid9IsValidOpE@Base 3.4.2 - _ZTSN4geos9operation6relate10RelateNodeE@Base 3.4.2 - _ZTSN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 - _ZTSN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 - _ZTSN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 - _ZTSN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 - _ZTSN4geos9operation6relate8RelateOpE@Base 3.4.2 - _ZTSN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 - _ZTSN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 - _ZTSN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 - _ZTSN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 - _ZTSN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 - _ZTSN4geos9operation7overlay9OverlayOpE@Base 3.4.2 - _ZTSN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 - _ZTSN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 - _ZTSN4geos9operation8distance7DeleterE@Base 3.7.0 - _ZTSN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 - _ZTSN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 - _ZTSN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 - _ZTSN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 - _ZTSN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 - _ZTSN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 - _ZTSN4geos9precision10TranslaterE@Base 3.4.2 - _ZTSN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 - _ZTSN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 - _ZTSPN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 - _ZTSPN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 - _ZTTN4geos4geom10LineStringE@Base 3.4.2 - _ZTTN4geos4geom10LinearRingE@Base 3.4.2 - _ZTTN4geos4geom10MultiPointE@Base 3.4.2 - _ZTTN4geos4geom12MultiPolygonE@Base 3.4.2 - _ZTTN4geos4geom15MultiLineStringE@Base 3.4.2 - _ZTTN4geos4geom18GeometryCollectionE@Base 3.4.2 - _ZTTN4geos4geom5PointE@Base 3.4.2 - _ZTTN4geos4geom7PolygonE@Base 3.4.2 - _ZTVN4geos11planargraph11PlanarGraphE@Base 3.4.2 - _ZTVN4geos11planargraph12DirectedEdgeE@Base 3.4.2 - _ZTVN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 - _ZTVN4geos11planargraph4EdgeE@Base 3.4.2 - _ZTVN4geos11planargraph4NodeE@Base 3.4.2 - _ZTVN4geos11planargraph7NodeMapE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 - _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge6VertexE@Base 3.4.2 - _ZTVN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 - _ZTVN4geos2io14ParseExceptionE@Base 3.4.2 - _ZTVN4geos2io9WKBWriterE@Base 3.4.2 - _ZTVN4geos4geom10LineStringE@Base 3.4.2 - _ZTVN4geos4geom10LinearRingE@Base 3.4.2 - _ZTVN4geos4geom10MultiPointE@Base 3.4.2 - _ZTVN4geos4geom11LineSegmentE@Base 3.4.2 - _ZTVN4geos4geom12MultiPolygonE@Base 3.4.2 - _ZTVN4geos4geom15GeometryFactoryE@Base 3.4.2 - _ZTVN4geos4geom15MultiLineStringE@Base 3.4.2 - _ZTVN4geos4geom18CoordinateSequenceE@Base 3.4.2 - _ZTVN4geos4geom18GeometryCollectionE@Base 3.4.2 - _ZTVN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 - _ZTVN4geos4geom23GeometryComponentFilterE@Base 3.4.2 - _ZTVN4geos4geom25CoordinateSequenceFactoryE@Base 3.4.2 - _ZTVN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 - _ZTVN4geos4geom4prep13PreparedPointE@Base 3.4.2 - _ZTVN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 - _ZTVN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 - _ZTVN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 - _ZTVN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 - _ZTVN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 - _ZTVN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 - _ZTVN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 - _ZTVN4geos4geom4util14PointExtracterE@Base 3.4.2 - _ZTVN4geos4geom4util16PolygonExtracterE@Base 3.4.2 - _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 - _ZTVN4geos4geom4util19CoordinateOperationE@Base 3.4.2 - _ZTVN4geos4geom4util19GeometryTransformerE@Base 3.4.2 - _ZTVN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 - _ZTVN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 - _ZTVN4geos4geom5PointE@Base 3.4.2 - _ZTVN4geos4geom7PolygonE@Base 3.4.2 - _ZTVN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 - _ZTVN4geos4geom8GeometryE@Base 3.4.2 - _ZTVN4geos4util13GEOSExceptionE@Base 3.4.2 - _ZTVN4geos4util17TopologyExceptionE@Base 3.4.2 - _ZTVN4geos4util20InterruptedExceptionE@Base 3.4.2 - _ZTVN4geos4util21GeometricShapeFactoryE@Base 3.4.2 - _ZTVN4geos4util21IllegalStateExceptionE@Base 3.4.2 - _ZTVN4geos4util24AssertionFailedExceptionE@Base 3.4.2 - _ZTVN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 - _ZTVN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 - _ZTVN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 - _ZTVN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 - _ZTVN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 - _ZTVN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 - _ZTVN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 - _ZTVN4geos5index7bintree4NodeE@Base 3.4.2 - _ZTVN4geos5index7bintree4RootE@Base 3.4.2 - _ZTVN4geos5index7bintree8NodeBaseE@Base 3.4.2 - _ZTVN4geos5index7strtree12AbstractNodeE@Base 3.4.2 - _ZTVN4geos5index7strtree13ItemBoundableE@Base 3.4.2 - _ZTVN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 - _ZTVN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 - _ZTVN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 - _ZTVN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 - _ZTVN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 - _ZTVN4geos5index7strtree7SIRtreeE@Base 3.4.2 - _ZTVN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 - _ZTVN4geos5index7strtree7STRtreeE@Base 3.4.2 - _ZTVN4geos5index8quadtree4NodeE@Base 3.4.2 - _ZTVN4geos5index8quadtree4RootE@Base 3.4.2 - _ZTVN4geos5index8quadtree8NodeBaseE@Base 3.4.2 - _ZTVN4geos5index8quadtree8QuadtreeE@Base 3.4.2 - _ZTVN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 - _ZTVN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 - _ZTVN4geos6noding11ScaledNoderE@Base 3.4.2 - _ZTVN4geos6noding11SimpleNoderE@Base 3.4.2 - _ZTVN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 - _ZTVN4geos6noding12MCIndexNoderE@Base 3.4.2 - _ZTVN4geos6noding13IteratedNoderE@Base 3.4.2 - _ZTVN4geos6noding13SegmentStringE@Base 3.4.2 - _ZTVN4geos6noding15SegmentNodeListE@Base 3.4.2 - _ZTVN4geos6noding17IntersectionAdderE@Base 3.4.2 - _ZTVN4geos6noding18BasicSegmentStringE@Base 3.4.2 - _ZTVN4geos6noding18NodedSegmentStringE@Base 3.4.2 - _ZTVN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 - _ZTVN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 - _ZTVN4geos6noding32SingleInteriorIntersectionFinderE@Base 3.4.2 - _ZTVN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 - _ZTVN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 - _ZTVN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 - _ZTVN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 - _ZTVN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 - _ZTVN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 - _ZTVN4geos8simplify13DPTransformerE@Base 3.4.2 - _ZTVN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 - _ZTVN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 - _ZTVN4geos9algorithm13MCPointInRing10MCSelecterE@Base 3.4.2 - _ZTVN4geos9algorithm13MCPointInRingE@Base 3.4.2 - _ZTVN4geos9algorithm17SimplePointInRingE@Base 3.4.2 - _ZTVN4geos9algorithm18SIRtreePointInRingE@Base 3.4.2 - _ZTVN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 - _ZTVN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 - _ZTVN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 - _ZTVN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 - _ZTVN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 - _ZTVN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 - _ZTVN4geos9geomgraph11NodeFactoryE@Base 3.4.2 - _ZTVN4geos9geomgraph11PlanarGraphE@Base 3.4.2 - _ZTVN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 - _ZTVN4geos9geomgraph13GeometryGraphE@Base 3.4.2 - _ZTVN4geos9geomgraph14GraphComponentE@Base 3.4.2 - _ZTVN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 - _ZTVN4geos9geomgraph4EdgeE@Base 3.4.2 - _ZTVN4geos9geomgraph4NodeE@Base 3.4.2 - _ZTVN4geos9geomgraph5DepthE@Base 3.4.2 - _ZTVN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 - _ZTVN4geos9geomgraph5index14SweepLineEventE@Base 3.4.2 - _ZTVN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 - _ZTVN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 - _ZTVN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 - _ZTVN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 - _ZTVN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 - _ZTVN4geos9geomgraph7EdgeEndE@Base 3.4.2 - _ZTVN4geos9geomgraph7NodeMapE@Base 3.4.2 - _ZTVN4geos9geomgraph8EdgeListE@Base 3.4.2 - _ZTVN4geos9geomgraph8EdgeRingE@Base 3.4.2 - _ZTVN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 - _ZTVN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 - _ZTVN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 - _ZTVN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 - _ZTVN4geos9operation22GeometryGraphOperationE@Base 3.4.2 - _ZTVN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 - _ZTVN4geos9operation5valid9IsValidOpE@Base 3.4.2 - _ZTVN4geos9operation6relate10RelateNodeE@Base 3.4.2 - _ZTVN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 - _ZTVN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 - _ZTVN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 - _ZTVN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 - _ZTVN4geos9operation6relate8RelateOpE@Base 3.4.2 - _ZTVN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 - _ZTVN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 - _ZTVN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 - _ZTVN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 - _ZTVN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 - _ZTVN4geos9operation7overlay9OverlayOpE@Base 3.4.2 - _ZTVN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 - _ZTVN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 - _ZTVN4geos9operation8distance7DeleterE@Base 3.7.0 - _ZTVN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 - _ZTVN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 - _ZTVN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 - _ZTVN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 - _ZTVN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 - _ZTVN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 - _ZTVN4geos9precision10TranslaterE@Base 3.4.2 - _ZTVN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 - _ZTVN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 - _ZZ19getMachineByteOrdervE12endian_check@Base 3.4.2 - (c++)"non-virtual thunk to geos::geom::MultiLineString::~MultiLineString()@Base" 3.4.2 - (c++)"non-virtual thunk to geos::geom::MultiPoint::~MultiPoint()@Base" 3.4.2 - (c++)"non-virtual thunk to geos::geom::MultiPolygon::~MultiPolygon()@Base" 3.4.2 - (c++)"non-virtual thunk to geos::index::strtree::STRtree::insert(geos::geom::Envelope const*, void*)@Base" 3.4.2 - (c++)"non-virtual thunk to geos::index::strtree::STRtree::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)@Base" 3.4.2 - (c++)"non-virtual thunk to geos::index::strtree::STRtree::query(geos::geom::Envelope const*, std::vector >&)@Base" 3.4.2 - (c++)"non-virtual thunk to geos::index::strtree::STRtree::remove(geos::geom::Envelope const*, void*)@Base" 3.4.2 - (c++)"non-virtual thunk to geos::index::strtree::STRtree::~STRtree()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_ro(geos::geom::CoordinateFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_ro(geos::geom::CoordinateSequenceFilter&) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_ro(geos::geom::GeometryComponentFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_ro(geos::geom::GeometryFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_rw(geos::geom::CoordinateFilter const*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_rw(geos::geom::CoordinateSequenceFilter&)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_rw(geos::geom::GeometryComponentFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::apply_rw(geos::geom::GeometryFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::compareToSameClass(geos::geom::Geometry const*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::computeEnvelopeInternal() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getArea() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getCoordinate() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getCoordinateDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getCoordinates() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getDimension() const@Base" 3.4.2 - (c++|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)"virtual thunk to geos::geom::GeometryCollection::getGeometryN(unsigned int) const@Base" 3.4.2 - (c++|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)"virtual thunk to geos::geom::GeometryCollection::getGeometryN(unsigned long) const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::GeometryCollection::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getLength() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getNumGeometries() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::getNumPoints() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::isEmpty() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::normalize()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::GeometryCollection::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::GeometryCollection::~GeometryCollection()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_ro(geos::geom::CoordinateFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_ro(geos::geom::CoordinateSequenceFilter&) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_ro(geos::geom::GeometryComponentFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_ro(geos::geom::GeometryFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_rw(geos::geom::CoordinateFilter const*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_rw(geos::geom::CoordinateSequenceFilter&)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_rw(geos::geom::GeometryComponentFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::apply_rw(geos::geom::GeometryFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::compareToSameClass(geos::geom::Geometry const*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::computeEnvelopeInternal() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getCoordinate() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getCoordinateDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getCoordinates() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::LineString::getLength() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::getNumPoints() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::isEmpty() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::normalize()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LineString::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::LineString::~LineString()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LinearRing::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LinearRing::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LinearRing::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LinearRing::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::LinearRing::isSimple() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::LinearRing::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::LinearRing::~LinearRing()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiLineString::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::MultiLineString::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::MultiLineString::~MultiLineString()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPoint::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::MultiPoint::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::MultiPoint::~MultiPoint()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::isSimple() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::MultiPolygon::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::MultiPolygon::~MultiPolygon()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_ro(geos::geom::CoordinateFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_ro(geos::geom::CoordinateSequenceFilter&) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_ro(geos::geom::GeometryComponentFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_ro(geos::geom::GeometryFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_rw(geos::geom::CoordinateFilter const*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_rw(geos::geom::CoordinateSequenceFilter&)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_rw(geos::geom::GeometryComponentFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::apply_rw(geos::geom::GeometryFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::compareToSameClass(geos::geom::Geometry const*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::computeEnvelopeInternal() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getCoordinate() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getCoordinateDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getCoordinates() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::Point::getNumPoints() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::isEmpty() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::isSimple() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::normalize()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Point::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::Point::~Point()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_ro(geos::geom::CoordinateFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_ro(geos::geom::CoordinateSequenceFilter&) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_ro(geos::geom::GeometryComponentFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_ro(geos::geom::GeometryFilter*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_rw(geos::geom::CoordinateFilter const*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_rw(geos::geom::CoordinateSequenceFilter&)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_rw(geos::geom::GeometryComponentFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::apply_rw(geos::geom::GeometryFilter*)@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::clone() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::compareToSameClass(geos::geom::Geometry const*) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::computeEnvelopeInternal() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::convexHull() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::equalsExact(geos::geom::Geometry const*, double) const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getArea() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getBoundary() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getBoundaryDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getCoordinate() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getCoordinateDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getCoordinates() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getDimension() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getGeometryTypeId() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getGeometryType[abi:cxx11]() const@Base" 3.6.2 - (c++)"virtual thunk to geos::geom::Polygon::getLength() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::getNumPoints() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::isEmpty() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::isRectangle() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::isSimple() const@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::normalize()@Base" 3.4.2 - (c++)"virtual thunk to geos::geom::Polygon::reverse() const@Base" 3.7.0 - (c++)"virtual thunk to geos::geom::Polygon::~Polygon()@Base" 3.4.2 diff -Nru geos-3.7.1/debian/libgeos-3.8.0.install geos-3.8.0/debian/libgeos-3.8.0.install --- geos-3.7.1/debian/libgeos-3.8.0.install 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.8.0.install 2019-10-13 09:59:02.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgeos-* diff -Nru geos-3.7.1/debian/libgeos-3.8.0.lintian-overrides geos-3.8.0/debian/libgeos-3.8.0.lintian-overrides --- geos-3.7.1/debian/libgeos-3.8.0.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.8.0.lintian-overrides 2019-10-13 09:59:02.000000000 +0000 @@ -0,0 +1,4 @@ +# Build uses -D_FORTIFY_SOURCE=2, but hardening-check reports: +# Fortify Source functions: no, only unprotected functions found! +hardening-no-fortify-functions * + diff -Nru geos-3.7.1/debian/libgeos-3.8.0.symbols geos-3.8.0/debian/libgeos-3.8.0.symbols --- geos-3.7.1/debian/libgeos-3.8.0.symbols 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/debian/libgeos-3.8.0.symbols 2019-10-13 10:01:18.000000000 +0000 @@ -0,0 +1,4547 @@ +# SymbolsHelper-Confirmed: 3.8.0 amd64 arm64 armel armhf hurd-i386 i386 ia64 powerpc ppc64 riscv64 s390x sh4 +libgeos-3.8.0.so #PACKAGE# #MINVER# +* Build-Depends-Package: libgeos++-dev + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEj@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEjRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEm@Base 3.7.0 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos11planargraph11PlanarGraph17findNodesOfDegreeEmRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.7.0 + _ZN4geos11planargraph11PlanarGraph3addEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraph6removeEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraph6removeEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraph6removeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraphD0Ev@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraphD1Ev@Base 3.4.2 + _ZN4geos11planargraph11PlanarGraphD2Ev@Base 3.4.2 + _ZN4geos11planargraph11pdeLessThanEPNS0_12DirectedEdgeES2_@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdge6setSymEPS1_@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdge7setEdgeEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdge7toEdgesERSt6vectorIPS1_SaIS3_EE@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdge7toEdgesERSt6vectorIPS1_SaIS3_EERS2_IPNS0_4EdgeESaIS8_EE@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdgeC1EPNS0_4NodeES3_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdgeC2EPNS0_4NodeES3_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdgeD0Ev@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdgeD1Ev@Base 3.4.2 + _ZN4geos11planargraph12DirectedEdgeD2Ev@Base 3.4.2 + _ZN4geos11planargraph14GraphComponent10setVisitedEb@Base 3.4.2 + _ZN4geos11planargraph14GraphComponent9setMarkedEb@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar11getNextEdgeEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar3addEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar3endEv@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar5beginEv@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar6removeEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar8getEdgesEv@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar8getIndexEPKNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStar8getIndexEPKNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStarD0Ev@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStarD1Ev@Base 3.4.2 + _ZN4geos11planargraph16DirectedEdgeStarD2Ev@Base 3.4.2 + _ZN4geos11planargraph4Edge10getDirEdgeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos11planargraph4Edge10getDirEdgeEi@Base 3.4.2 + _ZN4geos11planargraph4Edge15getOppositeNodeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos11planargraph4Edge16setDirectedEdgesEPNS0_12DirectedEdgeES3_@Base 3.4.2 + _ZN4geos11planargraph4EdgeD0Ev@Base 3.4.2 + _ZN4geos11planargraph4EdgeD1Ev@Base 3.4.2 + _ZN4geos11planargraph4EdgeD2Ev@Base 3.4.2 + _ZN4geos11planargraph4Node15getEdgesBetweenEPS1_S2_@Base 3.4.2 + _ZN4geos11planargraph4NodeD0Ev@Base 3.4.2 + _ZN4geos11planargraph4NodeD1Ev@Base 3.4.2 + _ZN4geos11planargraph4NodeD2Ev@Base 3.4.2 + _ZN4geos11planargraph7NodeMap10getNodeMapEv@Base 3.4.2 + _ZN4geos11planargraph7NodeMap3addEPNS0_4NodeE@Base 3.4.2 + _ZN4geos11planargraph7NodeMap4findERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos11planargraph7NodeMap6removeERNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos11planargraph7NodeMap8getNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 + _ZN4geos11planargraph7NodeMapC1Ev@Base 3.4.2 + _ZN4geos11planargraph7NodeMapC2Ev@Base 3.4.2 + _ZN4geos11planargraph7NodeMapD0Ev@Base 3.4.2 + _ZN4geos11planargraph7NodeMapD1Ev@Base 3.4.2 + _ZN4geos11planargraph7NodeMapD2Ev@Base 3.4.2 + _ZN4geos11planargraph8Subgraph3addEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder12addReachableEPNS0_4NodeEPNS0_8SubgraphE@Base 3.4.2 + _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder12findSubgraphEPNS0_4NodeE@Base 3.4.2 + _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder21getConnectedSubgraphsERSt6vectorIPNS0_8SubgraphESaIS5_EE@Base 3.4.2 + _ZN4geos11planargraph9algorithm23ConnectedSubgraphFinder8addEdgesEPNS0_4NodeERSt5stackIS4_St5dequeIS4_SaIS4_EEEPNS0_8SubgraphE@Base 3.4.2 + _ZN4geos11planargraphlsERSoRKNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos11planargraphlsERSoRKNS0_4EdgeE@Base 3.4.2 + _ZN4geos11planargraphlsERSoRKNS0_4NodeE@Base 3.4.2 + _ZN4geos11triangulate21VoronoiDiagramBuilder10getDiagramERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder12setToleranceEd@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder14getSubdivisionEv@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder15getDiagramEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder15setClipEnvelopeEPKNS_4geom8EnvelopeE@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder22clipGeometryCollectionERSt6vectorISt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EESaIS8_EERKNS4_8EnvelopeE@Base 3.8.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder6createEv@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder8setSitesERKNS_4geom18CoordinateSequenceE@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilder8setSitesERKNS_4geom8GeometryE@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilderC1Ev@Base 3.5.0 + _ZN4geos11triangulate21VoronoiDiagramBuilderC2Ev@Base 3.5.0 + _ZN4geos11triangulate28DelaunayTriangulationBuilder10toVerticesERKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos11triangulate28DelaunayTriangulationBuilder12getTrianglesERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder14getSubdivisionEv@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder24extractUniqueCoordinatesERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder6createEv@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder6uniqueEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos11triangulate28DelaunayTriangulationBuilder8envelopeERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder8getEdgesERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder8setSitesERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilder8setSitesERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilderC1Ev@Base 3.4.2 + _ZN4geos11triangulate28DelaunayTriangulationBuilderC2Ev@Base 3.4.2 + _ZN4geos11triangulate31IncrementalDelaunayTriangulator10insertSiteERKNS0_8quadedge6VertexE@Base 3.4.2 + _ZN4geos11triangulate31IncrementalDelaunayTriangulator11insertSitesERKSt6vectorINS0_8quadedge6VertexESaIS4_EE@Base 3.8.0 + _ZN4geos11triangulate31IncrementalDelaunayTriangulatorC1EPNS0_8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 + _ZN4geos11triangulate31IncrementalDelaunayTriangulatorC2EPNS0_8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision10initSubdivEPPNS1_8QuadEdgeE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision10insertSiteERKNS1_6VertexE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision11createFrameERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision12getTrianglesERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision12prepareVisitEv@Base 3.8.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision14visitTrianglesEPNS1_15TriangleVisitorEb@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision15getPrimaryEdgesEb@Base 3.5.1 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision16getTriangleEdgesERKNS1_8QuadEdgeEPPS4_@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision17getVoronoiDiagramERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision18getVoronoiCellEdgeEPKNS1_8QuadEdgeERKNS_4geom15GeometryFactoryE@Base 3.8.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision19getVoronoiCellEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision20fetchTriangleToVisitEPNS1_8QuadEdgeERSt5stackIS4_St5dequeIS4_SaIS4_EEEb@Base 3.8.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision20getVertexUniqueEdgesEb@Base 3.5.1 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision21getVoronoiCellPolygonEPKNS1_8QuadEdgeERKNS_4geom15GeometryFactoryE@Base 3.8.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getTriangleCoordinatesEPSt6vectorISt10unique_ptrINS_4geom18CoordinateSequenceESt14default_deleteIS6_EESaIS9_EEb@Base 3.8.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getVoronoiCellPolygonsERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision22getVoronoiDiagramEdgesERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitor5visitEPPNS1_8QuadEdgeE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD0Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorD2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitor5visitEPPNS1_8QuadEdgeE@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD0Ev@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD1Ev@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorD2Ev@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision6locateERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision6removeERNS1_8QuadEdgeE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision7connectERNS1_8QuadEdgeES4_@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision8getEdgesERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivision8makeEdgeERKNS1_6VertexES5_@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionC1ERKNS_4geom8EnvelopeEd@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionC2ERKNS_4geom8EnvelopeEd@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD0Ev@Base 3.5.0 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge19QuadEdgeSubdivisionD2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge22LocateFailureExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos11triangulate8quadedge22LocateFailureExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos11triangulate8quadedge22LocateFailureExceptionD0Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge22LocateFailureExceptionD1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge22LocateFailureExceptionD2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator4initEv@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator6locateERKNS1_6VertexE@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocator8findEdgeEv@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorC1EPNS1_19QuadEdgeSubdivisionE@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorC2EPNS1_19QuadEdgeSubdivisionE@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD0Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorD2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex12interpolateZERKNS_4geom10CoordinateES6_S6_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex12interpolateZERKNS_4geom10CoordinateES6_S6_S6_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex17circumRadiusRatioERKS2_S4_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex8bisectorERKS2_S4_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex8classifyERKS2_S4_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6Vertex8midPointERKS2_@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC1ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC1Edd@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC1Eddd@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC2ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC2Edd@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC2Eddd@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexC2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge6VertexD0Ev@Base 3.8.0 + _ZN4geos11triangulate8quadedge6VertexD1Ev@Base 3.8.0 + _ZN4geos11triangulate8quadedge6VertexD2Ev@Base 3.8.0 + _ZN4geos11triangulate8quadedge8QuadEdge4freeEv@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge4swapERS2_@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge6removeEv@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge6spliceERS2_S3_@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge7connectERS2_S3_@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge7getDataEv@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge7setDataEPv@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdge8makeEdgeERKNS1_6VertexES5_@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdgeC1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdgeC2Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdgeD0Ev@Base 3.5.0 + _ZN4geos11triangulate8quadedge8QuadEdgeD1Ev@Base 3.4.2 + _ZN4geos11triangulate8quadedge8QuadEdgeD2Ev@Base 3.4.2 + _ZN4geos2io10CLocalizerC1Ev@Base 3.4.2 + _ZN4geos2io10CLocalizerC2Ev@Base 3.4.2 + _ZN4geos2io10CLocalizerD1Ev@Base 3.4.2 + _ZN4geos2io10CLocalizerD2Ev@Base 3.4.2 + _ZN4geos2io14ParseException9stringifyB5cxx11Ed@Base 3.5.1 + _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos2io14ParseExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd@Base 3.5.1 + _ZN4geos2io14ParseExceptionC1Ev@Base 3.4.2 + _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos2io14ParseExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd@Base 3.5.1 + _ZN4geos2io14ParseExceptionC2Ev@Base 3.4.2 + _ZN4geos2io14ParseExceptionD0Ev@Base 3.4.2 + _ZN4geos2io14ParseExceptionD1Ev@Base 3.4.2 + _ZN4geos2io14ParseExceptionD2Ev@Base 3.4.2 + _ZN4geos2io15ByteOrderValues6getIntEPKhi@Base 3.4.2 + _ZN4geos2io15ByteOrderValues6putIntEiPhi@Base 3.4.2 + _ZN4geos2io15ByteOrderValues7getLongEPKhi@Base 3.4.2 + (subst)_ZN4geos2io15ByteOrderValues7putLongE{int64_t}Phi@Base 3.8.0 + _ZN4geos2io15ByteOrderValues9getDoubleEPKhi@Base 3.4.2 + _ZN4geos2io15ByteOrderValues9putDoubleEdPhi@Base 3.4.2 + _ZN4geos2io15StringTokenizer13peekNextTokenEv@Base 3.4.2 + _ZN4geos2io15StringTokenizer7getNValEv@Base 3.4.2 + _ZN4geos2io15StringTokenizer7getSValB5cxx11Ev@Base 3.5.1 + _ZN4geos2io15StringTokenizer9nextTokenEv@Base 3.4.2 + _ZN4geos2io15StringTokenizerC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos2io15StringTokenizerC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos2io18strtod_with_vc_fixEPKcPPc@Base 3.5.0 + _ZN4geos2io21ByteOrderDataInStream10readDoubleEv@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStream11setInStreamEPSi@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStream7readIntEv@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStream8readByteEv@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStream8readLongEv@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStream8setOrderEi@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStreamC1EPSi@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStreamC2EPSi@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStreamD1Ev@Base 3.4.2 + _ZN4geos2io21ByteOrderDataInStreamD2Ev@Base 3.4.2 + _ZN4geos2io6Unload7ReleaseEv@Base 3.4.2 + _ZN4geos2io6Writer5writeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos2io6Writer7reserveEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos2io6Writer7reserveEm@Base 3.7.0 + _ZN4geos2io6Writer8toStringB5cxx11Ev@Base 3.5.1 + _ZN4geos2io6WriterC1Ev@Base 3.4.2 + _ZN4geos2io6WriterC2Ev@Base 3.4.2 + _ZN4geos2io9WKBReader11readPolygonEv@Base 3.4.2 + _ZN4geos2io9WKBReader12readGeometryEv@Base 3.4.2 + _ZN4geos2io9WKBReader14readCoordinateEv@Base 3.4.2 + _ZN4geos2io9WKBReader14readLineStringEv@Base 3.4.2 + _ZN4geos2io9WKBReader14readLinearRingEv@Base 3.4.2 + _ZN4geos2io9WKBReader14readMultiPointEv@Base 3.4.2 + _ZN4geos2io9WKBReader16readMultiPolygonEv@Base 3.4.2 + _ZN4geos2io9WKBReader19readMultiLineStringEv@Base 3.4.2 + _ZN4geos2io9WKBReader22readCoordinateSequenceEi@Base 3.4.2 + _ZN4geos2io9WKBReader22readGeometryCollectionEv@Base 3.4.2 + _ZN4geos2io9WKBReader4readERSi@Base 3.4.2 + _ZN4geos2io9WKBReader7readHEXERSi@Base 3.4.2 + _ZN4geos2io9WKBReader8printHEXERSiRSo@Base 3.4.2 + _ZN4geos2io9WKBReader9readPointEv@Base 3.4.2 + _ZN4geos2io9WKBReaderC1Ev@Base 3.4.2 + _ZN4geos2io9WKBReaderC2Ev@Base 3.4.2 + _ZN4geos2io9WKBWriter10writePointERKNS_4geom5PointE@Base 3.4.2 + _ZN4geos2io9WKBWriter12setByteOrderEi@Base 3.4.2 + _ZN4geos2io9WKBWriter12writePolygonERKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos2io9WKBWriter14setIncludeSRIDEi@Base 3.4.2 + _ZN4geos2io9WKBWriter14writeByteOrderEv@Base 3.4.2 + (subst)_ZN4geos2io9WKBWriter15writeCoordinateERKNS_4geom18CoordinateSequenceE{size_t}b@Base 3.8.0 + _ZN4geos2io9WKBWriter15writeLineStringERKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos2io9WKBWriter17writeGeometryTypeEii@Base 3.4.2 + _ZN4geos2io9WKBWriter18setOutputDimensionEi@Base 3.4.2 + _ZN4geos2io9WKBWriter23writeCoordinateSequenceERKNS_4geom18CoordinateSequenceEb@Base 3.4.2 + _ZN4geos2io9WKBWriter23writeGeometryCollectionERKNS_4geom18GeometryCollectionEi@Base 3.4.2 + _ZN4geos2io9WKBWriter5writeERKNS_4geom8GeometryERSo@Base 3.4.2 + _ZN4geos2io9WKBWriter8writeHEXERKNS_4geom8GeometryERSo@Base 3.4.2 + _ZN4geos2io9WKBWriter8writeIntEi@Base 3.4.2 + _ZN4geos2io9WKBWriter9writeSRIDEi@Base 3.4.2 + _ZN4geos2io9WKBWriterC1Eiib@Base 3.4.2 + _ZN4geos2io9WKBWriterC2Eiib@Base 3.4.2 + _ZN4geos2io9WKBWriterD0Ev@Base 3.4.2 + _ZN4geos2io9WKBWriterD1Ev@Base 3.4.2 + _ZN4geos2io9WKBWriterD2Ev@Base 3.4.2 + _ZN4geos2io9WKTReader11getNextWordB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 + _ZN4geos2io9WKTReader12isNumberNextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader13getNextCloserB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 + _ZN4geos2io9WKTReader13getNextNumberEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader13readPointTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader14getCoordinatesEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader15readPolygonTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader18readLineStringTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader18readLinearRingTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader18readMultiPointTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader20getNextCloserOrCommaB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 + _ZN4geos2io9WKTReader20getNextEmptyOrOpenerB5cxx11EPNS0_15StringTokenizerE@Base 3.5.1 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos2io9WKTReader20getPreciseCoordinateEPNS0_15StringTokenizerERNS_4geom10CoordinateERm@Base 3.7.0 + _ZN4geos2io9WKTReader20readMultiPolygonTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader22readGeometryTaggedTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader23readMultiLineStringTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader26readGeometryCollectionTextEPNS0_15StringTokenizerE@Base 3.4.2 + _ZN4geos2io9WKTReader4readERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos2io9WKTReaderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos2io9WKTReaderC1ERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos2io9WKTReaderC1Ev@Base 3.4.2 + _ZN4geos2io9WKTReaderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos2io9WKTReaderC2ERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos2io9WKTReaderC2Ev@Base 3.4.2 + _ZN4geos2io9WKTReaderD1Ev@Base 3.4.2 + _ZN4geos2io9WKTReaderD2Ev@Base 3.4.2 + _ZN4geos2io9WKTWriter11writeNumberB5cxx11Ed@Base 3.5.1 + _ZN4geos2io9WKTWriter12toLineStringB5cxx11ERKNS_4geom10CoordinateES5_@Base 3.5.1 + _ZN4geos2io9WKTWriter12toLineStringB5cxx11ERKNS_4geom18CoordinateSequenceE@Base 3.5.1 + _ZN4geos2io9WKTWriter14writeFormattedB5cxx11EPKNS_4geom8GeometryE@Base 3.5.1 + _ZN4geos2io9WKTWriter14writeFormattedEPKNS_4geom8GeometryEPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter14writeFormattedEPKNS_4geom8GeometryEbPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter15appendPointTextEPKNS_4geom10CoordinateEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter16appendCoordinateEPKNS_4geom10CoordinateEPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter17appendPolygonTextEPKNS_4geom7PolygonEibPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter18setOutputDimensionEi@Base 3.4.2 + _ZN4geos2io9WKTWriter20appendLineStringTextEPKNS_4geom10LineStringEibPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter20appendMultiPointTextEPKNS_4geom10MultiPointEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter20setRoundingPrecisionEi@Base 3.4.2 + _ZN4geos2io9WKTWriter21appendPointTaggedTextEPKNS_4geom10CoordinateEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter22appendMultiPolygonTextEPKNS_4geom12MultiPolygonEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter23appendPolygonTaggedTextEPKNS_4geom7PolygonEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter24appendGeometryTaggedTextEPKNS_4geom8GeometryEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter25appendMultiLineStringTextEPKNS_4geom15MultiLineStringEibPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter26appendLineStringTaggedTextEPKNS_4geom10LineStringEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter26appendLinearRingTaggedTextEPKNS_4geom10LinearRingEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter26appendMultiPointTaggedTextEPKNS_4geom10MultiPointEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter28appendGeometryCollectionTextEPKNS_4geom18GeometryCollectionEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter28appendMultiPolygonTaggedTextEPKNS_4geom12MultiPolygonEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter31appendMultiLineStringTaggedTextEPKNS_4geom15MultiLineStringEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter34appendGeometryCollectionTaggedTextEPKNS_4geom18GeometryCollectionEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter5writeB5cxx11EPKNS_4geom8GeometryE@Base 3.5.1 + _ZN4geos2io9WKTWriter5writeEPKNS_4geom8GeometryEPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter6indentEiPNS0_6WriterE@Base 3.4.2 + _ZN4geos2io9WKTWriter7setTrimEb@Base 3.4.2 + _ZN4geos2io9WKTWriter7toPointB5cxx11ERKNS_4geom10CoordinateE@Base 3.5.1 + _ZN4geos2io9WKTWriterC1Ev@Base 3.4.2 + _ZN4geos2io9WKTWriterC2Ev@Base 3.4.2 + _ZN4geos4geom10Coordinate10_nullCoordE@Base 3.6.0 + _ZN4geos4geom10Coordinate7getNullEv@Base 3.4.2 + _ZN4geos4geom10Coordinate7setNullEv@Base 3.4.2 + _ZN4geos4geom10CoordinateC1Eddd@Base 3.4.2 + _ZN4geos4geom10CoordinateC2Eddd@Base 3.4.2 + _ZN4geos4geom10LineString20validateConstructionEv@Base 3.4.2 + _ZN4geos4geom10LineString8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 + _ZN4geos4geom10LineString8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 + _ZN4geos4geom10LineString8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZN4geos4geom10LineString8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZN4geos4geom10LineString9normalizeEv@Base 3.4.2 + _ZN4geos4geom10LineStringC1EOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10LineStringC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10LineStringC1ERKS1_@Base 3.4.2 + _ZN4geos4geom10LineStringC2EOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10LineStringC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10LineStringC2ERKS1_@Base 3.4.2 + _ZN4geos4geom10LineStringD0Ev@Base 3.4.2 + _ZN4geos4geom10LineStringD1Ev@Base 3.4.2 + _ZN4geos4geom10LineStringD2Ev@Base 3.4.2 + _ZN4geos4geom10LinearRing20validateConstructionEv@Base 3.4.2 + _ZN4geos4geom10LinearRing9setPointsEPKNS0_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos4geom10LinearRingC1EOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10LinearRingC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10LinearRingC1ERKS1_@Base 3.4.2 + _ZN4geos4geom10LinearRingC2EOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10LinearRingC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10LinearRingC2ERKS1_@Base 3.4.2 + _ZN4geos4geom10LinearRingD0Ev@Base 3.4.2 + _ZN4geos4geom10LinearRingD1Ev@Base 3.4.2 + _ZN4geos4geom10LinearRingD2Ev@Base 3.4.2 + _ZN4geos4geom10MultiPointC1EOSt6vectorISt10unique_ptrINS0_5PointESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10MultiPointC1EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10MultiPointC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10MultiPointC2EOSt6vectorISt10unique_ptrINS0_5PointESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10MultiPointC2EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom10MultiPointC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom10MultiPointD0Ev@Base 3.4.2 + _ZN4geos4geom10MultiPointD1Ev@Base 3.4.2 + _ZN4geos4geom10MultiPointD2Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom10commonTypeISt6vectorIPKNS0_8GeometryESaIS5_EEEENS0_14GeometryTypeIdERKT_@Base 3.8.0 + (optional=templinst)_ZN4geos4geom10commonTypeISt6vectorIPNS0_8GeometryESaIS4_EEEENS0_14GeometryTypeIdERKT_@Base 3.8.0 + (optional=templinst)_ZN4geos4geom10commonTypeISt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EEEENS0_14GeometryTypeIdERKT_@Base 3.8.0 + _ZN4geos4geom11GeomPtrPairD1Ev@Base 3.4.2 + _ZN4geos4geom11GeomPtrPairD2Ev@Base 3.4.2 + _ZN4geos4geom11LineSegment13closestPointsEPKS1_@Base 3.4.2 + _ZN4geos4geom11LineSegment13closestPointsERKS1_@Base 3.4.2 + _ZN4geos4geom11LineSegment14setCoordinatesERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom11LineSegment14setCoordinatesERKS1_@Base 3.4.2 + _ZN4geos4geom11LineSegment7reverseEv@Base 3.4.2 + _ZN4geos4geom11LineSegment9normalizeEv@Base 3.4.2 + _ZN4geos4geom11LineSegmentC1ERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom11LineSegmentC1ERKS1_@Base 3.4.2 + _ZN4geos4geom11LineSegmentC1Edddd@Base 3.4.2 + _ZN4geos4geom11LineSegmentC1Ev@Base 3.4.2 + _ZN4geos4geom11LineSegmentC2ERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom11LineSegmentC2ERKS1_@Base 3.4.2 + _ZN4geos4geom11LineSegmentC2Edddd@Base 3.4.2 + _ZN4geos4geom11LineSegmentC2Ev@Base 3.4.2 + _ZN4geos4geom11LineSegmentD0Ev@Base 3.4.2 + _ZN4geos4geom11LineSegmentD1Ev@Base 3.4.2 + _ZN4geos4geom11LineSegmentD2Ev@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom11LineSegmentixEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom11LineSegmentixEm@Base 3.7.0 + _ZN4geos4geom11check_validERKNS0_8GeometryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbb@Base 3.5.1 + _ZN4geos4geom11geosversionB5cxx11Ev@Base 3.5.1 + _ZN4geos4geom12MultiPolygonC1EOSt6vectorISt10unique_ptrINS0_7PolygonESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom12MultiPolygonC1EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom12MultiPolygonC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom12MultiPolygonC1ERKS1_@Base 3.4.2 + _ZN4geos4geom12MultiPolygonC2EOSt6vectorISt10unique_ptrINS0_7PolygonESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom12MultiPolygonC2EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom12MultiPolygonC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom12MultiPolygonC2ERKS1_@Base 3.4.2 + _ZN4geos4geom12MultiPolygonD0Ev@Base 3.4.2 + _ZN4geos4geom12MultiPolygonD1Ev@Base 3.4.2 + _ZN4geos4geom12MultiPolygonD2Ev@Base 3.4.2 + _ZN4geos4geom14GeometryFilter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom14PrecisionModel19maximumPreciseValueE@Base 3.4.2 + _ZN4geos4geom14PrecisionModel8setScaleEd@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC1ENS1_4TypeE@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC1ERKS1_@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC1Ed@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC1Eddd@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC1Ev@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC2ENS1_4TypeE@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC2ERKS1_@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC2Ed@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC2Eddd@Base 3.4.2 + _ZN4geos4geom14PrecisionModelC2Ev@Base 3.4.2 + _ZN4geos4geom14PrecisionModelD1Ev@Base 3.4.2 + _ZN4geos4geom14PrecisionModelD2Ev@Base 3.4.2 + _ZN4geos4geom15GeometryFactory18getDefaultInstanceEv@Base 3.4.2 + _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelE@Base 3.6.0 + _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelEi@Base 3.6.0 + _ZN4geos4geom15GeometryFactory6createEPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.6.0 + _ZN4geos4geom15GeometryFactory6createEPNS0_25CoordinateSequenceFactoryE@Base 3.6.0 + _ZN4geos4geom15GeometryFactory6createERKS1_@Base 3.6.0 + _ZN4geos4geom15GeometryFactory6createEv@Base 3.6.0 + _ZN4geos4geom15GeometryFactory7destroyEv@Base 3.6.0 + _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelEi@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC1EPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC1EPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC1ERKS1_@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC1Ev@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelEi@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2EPKNS0_14PrecisionModelEiPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2EPNS0_25CoordinateSequenceFactoryE@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2ERKS1_@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryC2Ev@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryD0Ev@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryD1Ev@Base 3.4.2 + _ZN4geos4geom15GeometryFactoryD2Ev@Base 3.4.2 + _ZN4geos4geom15MultiLineStringC1EOSt6vectorISt10unique_ptrINS0_10LineStringESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom15MultiLineStringC1EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom15MultiLineStringC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom15MultiLineStringC1ERKS1_@Base 3.4.2 + _ZN4geos4geom15MultiLineStringC2EOSt6vectorISt10unique_ptrINS0_10LineStringESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom15MultiLineStringC2EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom15MultiLineStringC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom15MultiLineStringC2ERKS1_@Base 3.4.2 + _ZN4geos4geom15MultiLineStringD0Ev@Base 3.4.2 + _ZN4geos4geom15MultiLineStringD1Ev@Base 3.4.2 + _ZN4geos4geom15MultiLineStringD2Ev@Base 3.4.2 + _ZN4geos4geom16CoordinateFilter9filter_roEPKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom17TrianglePredicate16isInCircleRobustERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 + _ZN4geos4geom17TrianglePredicate19isInCircleNonRobustERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 + _ZN4geos4geom17TrianglePredicate20isInCircleNormalizedERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 + _ZN4geos4geom17TrianglePredicate7triAreaERKNS0_10CoordinateES4_S4_@Base 3.4.2 + _ZN4geos4geom18CoordinateSequence17hasRepeatedPointsEPKS1_@Base 3.4.2 + _ZN4geos4geom18CoordinateSequence19increasingDirectionERKS1_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom18CoordinateSequence28atLeastNCoordinatesOrNothingEjPS1_@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom18CoordinateSequence28atLeastNCoordinatesOrNothingEmPS1_@Base 3.7.0 + _ZN4geos4geom18CoordinateSequence6equalsEPKS1_S3_@Base 3.4.2 + _ZN4geos4geom18CoordinateSequence6scrollEPS1_PKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom18CoordinateSequence7indexOfEPKNS0_10CoordinateEPKS1_@Base 3.4.2 + _ZN4geos4geom18CoordinateSequence7reverseEPS1_@Base 3.4.2 + _ZN4geos4geom18GeometryCollection7setSRIDEi@Base 3.8.0 + _ZN4geos4geom18GeometryCollection8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 + _ZN4geos4geom18GeometryCollection8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 + _ZN4geos4geom18GeometryCollection8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZN4geos4geom18GeometryCollection8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZN4geos4geom18GeometryCollection9normalizeEv@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionC1EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom18GeometryCollectionC1EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionC1ERKS1_@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionC2EOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom18GeometryCollectionC2EPSt6vectorIPNS0_8GeometryESaIS4_EEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionC2ERKS1_@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionD0Ev@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionD1Ev@Base 3.4.2 + _ZN4geos4geom18GeometryCollectionD2Ev@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix10setAtLeastENS0_8LocationES2_i@Base 3.8.0 + _ZN4geos4geom18IntersectionMatrix10setAtLeastENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom18IntersectionMatrix17setAtLeastIfValidENS0_8LocationES2_i@Base 3.8.0 + _ZN4geos4geom18IntersectionMatrix3addEPS1_@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix3setENS0_8LocationES2_i@Base 3.8.0 + _ZN4geos4geom18IntersectionMatrix3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom18IntersectionMatrix6setAllEi@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix7matchesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos4geom18IntersectionMatrix7matchesEic@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix8firstDimE@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix9secondDimE@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrix9transposeEv@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom18IntersectionMatrixC1ERKS1_@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrixC1Ev@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrixC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom18IntersectionMatrixC2ERKS1_@Base 3.4.2 + _ZN4geos4geom18IntersectionMatrixC2Ev@Base 3.4.2 + _ZN4geos4geom19GeometryGreaterThenclEPKNS0_8GeometryES4_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence11setOrdinateEjjd@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence11setOrdinateEmmd@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequence3addEPKNS0_18CoordinateSequenceEbb@Base 3.8.0 + _ZN4geos4geom23CoordinateArraySequence3addERKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequence3addERKNS0_10CoordinateEb@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence3addEjRKNS0_10CoordinateEb@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence3addEmRKNS0_10CoordinateEb@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequence5setAtERKNS0_10CoordinateEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequence5setAtERKNS0_10CoordinateEm@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequence8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequence9setPointsERKSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 + (subst)_ZN4geos4geom23CoordinateArraySequenceC1EOSt6vectorINS0_10CoordinateESaIS3_EE{size_t}@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC1EPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC1EPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequenceC1ERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequenceC1ERKS1_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC1Ejj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC1Emm@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequenceC1Ev@Base 3.4.2 + (subst)_ZN4geos4geom23CoordinateArraySequenceC2EOSt6vectorINS0_10CoordinateESaIS3_EE{size_t}@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC2EPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC2EPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequenceC2ERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequenceC2ERKS1_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom23CoordinateArraySequenceC2Ejj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom23CoordinateArraySequenceC2Emm@Base 3.7.0 + _ZN4geos4geom23CoordinateArraySequenceC2Ev@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequenceD0Ev@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequenceD1Ev@Base 3.4.2 + _ZN4geos4geom23CoordinateArraySequenceD2Ev@Base 3.4.2 + _ZN4geos4geom23GeometryComponentFilter6isDoneEv@Base 3.8.0 + _ZN4geos4geom23GeometryComponentFilter9filter_roEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom23GeometryComponentFilter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom23GeometryComponentFilterD0Ev@Base 3.4.2 + _ZN4geos4geom23GeometryComponentFilterD1Ev@Base 3.4.2 + _ZN4geos4geom23GeometryComponentFilterD2Ev@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos4geom24CoordinateSequenceFilter9filter_rwERNS0_18CoordinateSequenceEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos4geom24CoordinateSequenceFilter9filter_rwERNS0_18CoordinateSequenceEm@Base 3.7.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EED2Ev@Base 3.8.0 + _ZN4geos4geom30CoordinateArraySequenceFactory8instanceEv@Base 3.4.2 + _ZN4geos4geom30CoordinateArraySequenceFactoryD0Ev@Base 3.4.2 + _ZN4geos4geom30CoordinateArraySequenceFactoryD1Ev@Base 3.4.2 + _ZN4geos4geom30CoordinateArraySequenceFactoryD2Ev@Base 3.4.2 + _ZN4geos4geom32DefaultCoordinateSequenceFactory8instanceEv@Base 3.8.0 + _ZN4geos4geom32DefaultCoordinateSequenceFactoryD0Ev@Base 3.8.0 + _ZN4geos4geom32DefaultCoordinateSequenceFactoryD1Ev@Base 3.8.0 + _ZN4geos4geom32DefaultCoordinateSequenceFactoryD2Ev@Base 3.8.0 + _ZN4geos4geom4prep13PreparedPointD0Ev@Base 3.4.2 + _ZN4geos4geom4prep13PreparedPointD1Ev@Base 3.4.2 + _ZN4geos4geom4prep13PreparedPointD2Ev@Base 3.4.2 + _ZN4geos4geom4prep15PreparedPolygonC1EPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep15PreparedPolygonC2EPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep15PreparedPolygonD0Ev@Base 3.4.2 + _ZN4geos4geom4prep15PreparedPolygonD1Ev@Base 3.4.2 + _ZN4geos4geom4prep15PreparedPolygonD2Ev@Base 3.4.2 + _ZN4geos4geom4prep18PreparedLineString21getIntersectionFinderEv@Base 3.4.2 + _ZN4geos4geom4prep18PreparedLineStringD0Ev@Base 3.4.2 + _ZN4geos4geom4prep18PreparedLineStringD1Ev@Base 3.4.2 + _ZN4geos4geom4prep18PreparedLineStringD2Ev@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometry11setGeometryEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometry8toStringB5cxx11Ev@Base 3.5.1 + _ZN4geos4geom4prep21BasicPreparedGeometryC1EPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometryC2EPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometryD0Ev@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometryD1Ev@Base 3.4.2 + _ZN4geos4geom4prep21BasicPreparedGeometryD2Ev@Base 3.4.2 + _ZN4geos4geom4prep21PreparedPolygonCovers24fullTopologicalPredicateEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep21PreparedPolygonCoversD0Ev@Base 3.4.2 + _ZN4geos4geom4prep21PreparedPolygonCoversD1Ev@Base 3.4.2 + _ZN4geos4geom4prep21PreparedPolygonCoversD2Ev@Base 3.4.2 + _ZN4geos4geom4prep22LocationMatchingFilter6isDoneEv@Base 3.8.0 + _ZN4geos4geom4prep22LocationMatchingFilter9filter_roEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4prep22LocationMatchingFilterD0Ev@Base 3.8.0 + _ZN4geos4geom4prep22LocationMatchingFilterD1Ev@Base 3.8.0 + _ZN4geos4geom4prep22LocationMatchingFilterD2Ev@Base 3.8.0 + _ZN4geos4geom4prep23OutermostLocationFilter6isDoneEv@Base 3.8.0 + _ZN4geos4geom4prep23OutermostLocationFilter9filter_roEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4prep23OutermostLocationFilterD0Ev@Base 3.8.0 + _ZN4geos4geom4prep23OutermostLocationFilterD1Ev@Base 3.8.0 + _ZN4geos4geom4prep23OutermostLocationFilterD2Ev@Base 3.8.0 + _ZN4geos4geom4prep23PreparedPolygonContains24fullTopologicalPredicateEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep23PreparedPolygonContainsC1EPKNS1_15PreparedPolygonE@Base 3.4.2 + _ZN4geos4geom4prep23PreparedPolygonContainsC2EPKNS1_15PreparedPolygonE@Base 3.4.2 + _ZN4geos4geom4prep23PreparedPolygonContainsD0Ev@Base 3.4.2 + _ZN4geos4geom4prep23PreparedPolygonContainsD1Ev@Base 3.4.2 + _ZN4geos4geom4prep23PreparedPolygonContainsD2Ev@Base 3.4.2 + _ZN4geos4geom4prep25LocationNotMatchingFilter6isDoneEv@Base 3.8.0 + _ZN4geos4geom4prep25LocationNotMatchingFilter9filter_roEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4prep25LocationNotMatchingFilterD0Ev@Base 3.8.0 + _ZN4geos4geom4prep25LocationNotMatchingFilterD1Ev@Base 3.8.0 + _ZN4geos4geom4prep25LocationNotMatchingFilterD2Ev@Base 3.8.0 + _ZN4geos4geom4prep25PreparedPolygonIntersects10intersectsEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep25PreparedPolygonIntersectsD0Ev@Base 3.4.2 + _ZN4geos4geom4prep25PreparedPolygonIntersectsD1Ev@Base 3.4.2 + _ZN4geos4geom4prep25PreparedPolygonIntersectsD2Ev@Base 3.4.2 + _ZN4geos4geom4prep31AbstractPreparedPolygonContains13isSingleShellERKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep31AbstractPreparedPolygonContains17evalPointTestGeomEPKNS0_8GeometryENS0_8LocationE@Base 3.8.0 + _ZN4geos4geom4prep31AbstractPreparedPolygonContains28findAndClassifyIntersectionsEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep31AbstractPreparedPolygonContains48isProperIntersectionImpliesNotContainedSituationEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep31AbstractPreparedPolygonContains4evalEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep31PreparedPolygonContainsProperly16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD0Ev@Base 3.4.2 + _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD1Ev@Base 3.4.2 + _ZN4geos4geom4prep31PreparedPolygonContainsProperlyD2Ev@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditor11editPolygonEPKNS0_7PolygonEPNS1_23GeometryEditorOperationE@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditor22editGeometryCollectionEPKNS0_18GeometryCollectionEPNS1_23GeometryEditorOperationE@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditor4editEPKNS0_8GeometryEPNS1_23GeometryEditorOperationE@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditorC1EPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditorC1Ev@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditorC2EPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom4util14GeometryEditorC2Ev@Base 3.4.2 + _ZN4geos4geom4util14PointExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util14PointExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util14PointExtracter9getPointsERKNS0_8GeometryERSt6vectorIPKNS0_5PointESaIS9_EE@Base 3.5.0 + _ZN4geos4geom4util14PointExtracterC1ERSt6vectorIPKNS0_5PointESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util14PointExtracterC2ERSt6vectorIPKNS0_5PointESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util14PointExtracterD0Ev@Base 3.4.2 + _ZN4geos4geom4util14PointExtracterD1Ev@Base 3.4.2 + _ZN4geos4geom4util14PointExtracterD2Ev@Base 3.4.2 + _ZN4geos4geom4util16GeometryCombiner14extractFactoryERKSt6vectorIPKNS0_8GeometryESaIS6_EE@Base 3.8.0 + _ZN4geos4geom4util16GeometryCombiner15extractElementsEPKNS0_8GeometryERSt6vectorIS5_SaIS5_EE@Base 3.8.0 + _ZN4geos4geom4util16GeometryCombiner7combineEPKNS0_8GeometryES5_@Base 3.4.2 + _ZN4geos4geom4util16GeometryCombiner7combineEPKNS0_8GeometryES5_S5_@Base 3.4.2 + _ZN4geos4geom4util16GeometryCombiner7combineERKSt6vectorIPKNS0_8GeometryESaIS6_EE@Base 3.8.0 + _ZN4geos4geom4util16GeometryCombiner7combineERKSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS5_EESaIS8_EE@Base 3.8.0 + _ZN4geos4geom4util16GeometryCombiner7combineEv@Base 3.4.2 + _ZN4geos4geom4util16GeometryCombinerC1ERKSt6vectorIPKNS0_8GeometryESaIS6_EE@Base 3.8.0 + _ZN4geos4geom4util16GeometryCombinerC2ERKSt6vectorIPKNS0_8GeometryESaIS6_EE@Base 3.8.0 + _ZN4geos4geom4util16PolygonExtracter11getPolygonsERKNS0_8GeometryERSt6vectorIPKNS0_7PolygonESaIS9_EE@Base 3.5.0 + _ZN4geos4geom4util16PolygonExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util16PolygonExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util16PolygonExtracterC1ERSt6vectorIPKNS0_7PolygonESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util16PolygonExtracterC2ERSt6vectorIPKNS0_7PolygonESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util16PolygonExtracterD0Ev@Base 3.4.2 + _ZN4geos4geom4util16PolygonExtracterD1Ev@Base 3.4.2 + _ZN4geos4geom4util16PolygonExtracterD2Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEE9filter_roEPKNS0_8GeometryE@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED0Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED1Ev@Base 3.4.2 + (optional=templinst)_ZN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEED2Ev@Base 3.4.2 + _ZN4geos4geom4util19CoordinateOperation4editEPKNS0_8GeometryEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer14transformPointEPKNS0_5PointEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer16transformPolygonEPKNS0_7PolygonEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer19transformLineStringEPKNS0_10LineStringEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer19transformLinearRingEPKNS0_10LinearRingEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer19transformMultiPointEPKNS0_10MultiPointEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer20transformCoordinatesEPKNS0_18CoordinateSequenceEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer21transformMultiPolygonEPKNS0_12MultiPolygonEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer24createCoordinateSequenceESt10unique_ptrISt6vectorINS0_10CoordinateESaIS5_EESt14default_deleteIS7_EE@Base 3.7.0 + _ZN4geos4geom4util19GeometryTransformer24transformMultiLineStringEPKNS0_15MultiLineStringEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer27transformGeometryCollectionEPKNS0_18GeometryCollectionEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformer38setSkipTransformedInvalidInteriorRingsEb@Base 3.6.1 + _ZN4geos4geom4util19GeometryTransformer9transformEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformerC1Ev@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformerC2Ev@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformerD0Ev@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformerD1Ev@Base 3.4.2 + _ZN4geos4geom4util19GeometryTransformerD2Ev@Base 3.4.2 + _ZN4geos4geom4util24LinearComponentExtracter8getLinesERKNS0_8GeometryERSt6vectorIPKNS0_10LineStringESaIS9_EE@Base 3.5.0 + _ZN4geos4geom4util24LinearComponentExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util24LinearComponentExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util24LinearComponentExtracterC1ERSt6vectorIPKNS0_10LineStringESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util24LinearComponentExtracterC2ERSt6vectorIPKNS0_10LineStringESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util24LinearComponentExtracterD0Ev@Base 3.4.2 + _ZN4geos4geom4util24LinearComponentExtracterD1Ev@Base 3.4.2 + _ZN4geos4geom4util24LinearComponentExtracterD2Ev@Base 3.4.2 + _ZN4geos4geom4util28ComponentCoordinateExtracter14getCoordinatesERKNS0_8GeometryERSt6vectorIPKNS0_10CoordinateESaIS9_EE@Base 3.5.0 + _ZN4geos4geom4util28ComponentCoordinateExtracter9filter_roEPKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util28ComponentCoordinateExtracter9filter_rwEPNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util28ComponentCoordinateExtracterC1ERSt6vectorIPKNS0_10CoordinateESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util28ComponentCoordinateExtracterC2ERSt6vectorIPKNS0_10CoordinateESaIS6_EE@Base 3.5.0 + _ZN4geos4geom4util28ComponentCoordinateExtracterD0Ev@Base 3.4.2 + _ZN4geos4geom4util28ComponentCoordinateExtracterD1Ev@Base 3.4.2 + _ZN4geos4geom4util28ComponentCoordinateExtracterD2Ev@Base 3.4.2 + _ZN4geos4geom4util29ShortCircuitedGeometryVisitor7applyToERKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geom4util9Densifier13densifyPointsESt6vectorINS0_10CoordinateESaIS4_EEdPKNS0_14PrecisionModelE@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformer15createValidAreaEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformer16transformPolygonEPKNS0_7PolygonEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformer20transformCoordinatesEPKNS0_18CoordinateSequenceEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformer21transformMultiPolygonEPKNS0_12MultiPolygonEPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformerC1Ed@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformerC2Ed@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformerD0Ev@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformerD1Ev@Base 3.8.0 + _ZN4geos4geom4util9Densifier18DensifyTransformerD2Ev@Base 3.8.0 + _ZN4geos4geom4util9Densifier20setDistanceToleranceEd@Base 3.8.0 + _ZN4geos4geom4util9Densifier7densifyEPKNS0_8GeometryEd@Base 3.8.0 + _ZN4geos4geom4util9DensifierC1EPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom4util9DensifierC2EPKNS0_8GeometryE@Base 3.8.0 + _ZN4geos4geom5Point8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 + _ZN4geos4geom5Point8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 + _ZN4geos4geom5Point8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZN4geos4geom5Point8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZN4geos4geom5Point9normalizeEv@Base 3.4.2 + _ZN4geos4geom5PointC1EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom5PointC1ERKNS0_10CoordinateEPKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom5PointC1ERKS1_@Base 3.4.2 + _ZN4geos4geom5PointC2EPNS0_18CoordinateSequenceEPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom5PointC2ERKNS0_10CoordinateEPKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom5PointC2ERKS1_@Base 3.4.2 + _ZN4geos4geom5PointD0Ev@Base 3.4.2 + _ZN4geos4geom5PointD1Ev@Base 3.4.2 + _ZN4geos4geom5PointD2Ev@Base 3.4.2 + _ZN4geos4geom6SnapOpINS_9operation7overlay9overlayOpEEESt10unique_ptrINS0_8GeometryESt14default_deleteIS6_EEPKS6_SB_T_@Base 3.7.0 + _ZN4geos4geom7Polygon8apply_rwEPKNS0_16CoordinateFilterE@Base 3.4.2 + _ZN4geos4geom7Polygon8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 + _ZN4geos4geom7Polygon8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZN4geos4geom7Polygon8apply_rwERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZN4geos4geom7Polygon9normalizeEPNS0_10LinearRingEb@Base 3.4.2 + _ZN4geos4geom7Polygon9normalizeEv@Base 3.4.2 + _ZN4geos4geom7PolygonC1EOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EEOSt6vectorIS6_SaIS6_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC1EOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC1EPNS0_10LinearRingEPSt6vectorIS3_SaIS3_EEPKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC1ERKS1_@Base 3.4.2 + _ZN4geos4geom7PolygonC2EOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EEOSt6vectorIS6_SaIS6_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC2EOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EERKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC2EPNS0_10LinearRingEPSt6vectorIS3_SaIS3_EEPKNS0_15GeometryFactoryE@Base 3.8.0 + _ZN4geos4geom7PolygonC2ERKS1_@Base 3.4.2 + _ZN4geos4geom7PolygonD0Ev@Base 3.4.2 + _ZN4geos4geom7PolygonD1Ev@Base 3.4.2 + _ZN4geos4geom7PolygonD2Ev@Base 3.4.2 + _ZN4geos4geom7jtsportB5cxx11Ev@Base 3.5.1 + _ZN4geos4geom8BinaryOpINS_9operation7overlay9overlayOpEEESt10unique_ptrINS0_8GeometryESt14default_deleteIS6_EEPKS6_SB_T_@Base 3.7.0 + _ZN4geos4geom8Envelope10intersectsERKNS0_10CoordinateES4_S4_@Base 3.4.2 + _ZN4geos4geom8Envelope10intersectsERKNS0_10CoordinateES4_S4_S4_@Base 3.4.2 + _ZN4geos4geom8Envelope15expandToIncludeEPKS1_@Base 3.4.2 + _ZN4geos4geom8Envelope15expandToIncludeERKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom8Envelope15expandToIncludeEdd@Base 3.4.2 + _ZN4geos4geom8Envelope4initERKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom8Envelope4initERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom8Envelope4initEdddd@Base 3.4.2 + _ZN4geos4geom8Envelope4initEv@Base 3.4.2 + _ZN4geos4geom8Envelope5splitERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos4geom8Envelope8distanceEdddd@Base 3.4.2 + _ZN4geos4geom8Envelope8expandByEdd@Base 3.4.2 + _ZN4geos4geom8Envelope9setToNullEv@Base 3.4.2 + _ZN4geos4geom8Envelope9translateEdd@Base 3.4.2 + _ZN4geos4geom8EnvelopeC1ERKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom8EnvelopeC1ERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom8EnvelopeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom8EnvelopeC1ERKS1_@Base 3.4.2 + _ZN4geos4geom8EnvelopeC1Edddd@Base 3.4.2 + _ZN4geos4geom8EnvelopeC1Ev@Base 3.4.2 + _ZN4geos4geom8EnvelopeC2ERKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom8EnvelopeC2ERKNS0_10CoordinateES4_@Base 3.4.2 + _ZN4geos4geom8EnvelopeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4geom8EnvelopeC2ERKS1_@Base 3.4.2 + _ZN4geos4geom8EnvelopeC2Edddd@Base 3.4.2 + _ZN4geos4geom8EnvelopeC2Ev@Base 3.4.2 + _ZN4geos4geom8EnvelopeaSERKS1_@Base 3.4.2 + _ZN4geos4geom8Geometry15geometryChangedEv@Base 3.4.2 + _ZN4geos4geom8Geometry15hasNullElementsEPKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos4geom8Geometry21GeometryChangedFilter9filter_rwEPS1_@Base 3.4.2 + _ZN4geos4geom8Geometry21GeometryChangedFilterD0Ev@Base 3.4.2 + _ZN4geos4geom8Geometry21GeometryChangedFilterD1Ev@Base 3.4.2 + _ZN4geos4geom8Geometry21GeometryChangedFilterD2Ev@Base 3.4.2 + _ZN4geos4geom8Geometry21geometryChangedActionEv@Base 3.4.2 + _ZN4geos4geom8Geometry21geometryChangedFilterE@Base 3.4.2 + _ZN4geos4geom8Geometry26checkNotGeometryCollectionEPKS1_@Base 3.4.2 + _ZN4geos4geom8Geometry7setSRIDEi@Base 3.4.2 + _ZN4geos4geom8Geometry8apply_rwEPNS0_14GeometryFilterE@Base 3.4.2 + _ZN4geos4geom8Geometry8apply_rwEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZN4geos4geom8GeometryC1EPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom8GeometryC1ERKS1_@Base 3.4.2 + _ZN4geos4geom8GeometryC2EPKNS0_15GeometryFactoryE@Base 3.4.2 + _ZN4geos4geom8GeometryC2ERKS1_@Base 3.4.2 + _ZN4geos4geom8GeometryD0Ev@Base 3.4.2 + _ZN4geos4geom8GeometryD1Ev@Base 3.4.2 + _ZN4geos4geom8GeometryD2Ev@Base 3.4.2 + _ZN4geos4geom8Triangle10isIsocelesEv@Base 3.8.0 + _ZN4geos4geom8Triangle12circumcentreERKNS0_10CoordinateES4_S4_@Base 3.8.0 + _ZN4geos4geom8Triangle12circumcentreERNS0_10CoordinateE@Base 3.5.0 + _ZN4geos4geom8Triangle14circumcentreDDERNS0_10CoordinateE@Base 3.8.0 + _ZN4geos4geom8Triangle8inCentreERNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geom9Dimension16toDimensionValueEc@Base 3.4.2 + _ZN4geos4geom9Dimension17toDimensionSymbolEi@Base 3.4.2 + _ZN4geos4geomeqERKNS0_10CoordinateES3_@Base 3.4.2 + _ZN4geos4geomeqERKNS0_11LineSegmentES3_@Base 3.4.2 + _ZN4geos4geomeqERKNS0_14PrecisionModelES3_@Base 3.4.2 + _ZN4geos4geomeqERKNS0_18CoordinateSequenceES3_@Base 3.4.2 + _ZN4geos4geomeqERKNS0_8EnvelopeES3_@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_10CoordinateE@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_11LineSegmentE@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_18IntersectionMatrixE@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_8EnvelopeE@Base 3.7.0 + _ZN4geos4geomlsERSoRKNS0_8GeometryE@Base 3.4.2 + _ZN4geos4geomlsERSoRKNS0_8LocationE@Base 3.8.0 + _ZN4geos4geomneERKNS0_10CoordinateES3_@Base 3.4.2 + _ZN4geos4geomneERKNS0_18CoordinateSequenceES3_@Base 3.4.2 + _ZN4geos4util13GEOSExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos4util13GEOSExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_@Base 3.5.1 + _ZN4geos4util13GEOSExceptionD0Ev@Base 3.4.2 + _ZN4geos4util13GEOSExceptionD1Ev@Base 3.4.2 + _ZN4geos4util13GEOSExceptionD2Ev@Base 3.4.2 + _ZN4geos4util15java_math_roundEd@Base 3.4.2 + _ZN4geos4util17TopologyExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util17TopologyExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4geom10CoordinateE@Base 3.5.1 + _ZN4geos4util17TopologyExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util17TopologyExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4geom10CoordinateE@Base 3.5.1 + _ZN4geos4util17TopologyExceptionD0Ev@Base 3.4.2 + _ZN4geos4util17TopologyExceptionD1Ev@Base 3.4.2 + _ZN4geos4util17TopologyExceptionD2Ev@Base 3.4.2 + _ZN4geos4util20InterruptedExceptionC1Ev@Base 3.8.0 + _ZN4geos4util20InterruptedExceptionC2Ev@Base 3.8.0 + _ZN4geos4util20InterruptedExceptionD0Ev@Base 3.4.2 + _ZN4geos4util20InterruptedExceptionD1Ev@Base 3.4.2 + _ZN4geos4util20InterruptedExceptionD2Ev@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10Dimensions7setBaseERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10Dimensions7setSizeEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10Dimensions8setWidthEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10Dimensions9setCentreERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10Dimensions9setHeightEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10DimensionsC1Ev@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory10DimensionsC2Ev@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory12createCircleEv@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory12setNumPointsEi@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory15createRectangleEv@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory16createArcPolygonEdd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory7setBaseERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory7setSizeEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory8setWidthEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory9createArcEdd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory9setCentreERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactory9setHeightEd@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactoryC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactoryC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactoryD0Ev@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactoryD1Ev@Base 3.4.2 + _ZN4geos4util21GeometricShapeFactoryD2Ev@Base 3.4.2 + _ZN4geos4util21IllegalStateExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util21IllegalStateExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util21IllegalStateExceptionD0Ev@Base 3.4.2 + _ZN4geos4util21IllegalStateExceptionD1Ev@Base 3.4.2 + _ZN4geos4util21IllegalStateExceptionD2Ev@Base 3.4.2 + _ZN4geos4util24AssertionFailedExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.8.0 + _ZN4geos4util24AssertionFailedExceptionC1Ev@Base 3.8.0 + _ZN4geos4util24AssertionFailedExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.8.0 + _ZN4geos4util24AssertionFailedExceptionC2Ev@Base 3.8.0 + _ZN4geos4util24AssertionFailedExceptionD0Ev@Base 3.4.2 + _ZN4geos4util24AssertionFailedExceptionD1Ev@Base 3.4.2 + _ZN4geos4util24AssertionFailedExceptionD2Ev@Base 3.4.2 + _ZN4geos4util24IllegalArgumentExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util24IllegalArgumentExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util24IllegalArgumentExceptionD0Ev@Base 3.4.2 + _ZN4geos4util24IllegalArgumentExceptionD1Ev@Base 3.4.2 + _ZN4geos4util24IllegalArgumentExceptionD2Ev@Base 3.4.2 + _ZN4geos4util27UniqueCoordinateArrayFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos4util27UniqueCoordinateArrayFilterD0Ev@Base 3.4.2 + _ZN4geos4util27UniqueCoordinateArrayFilterD1Ev@Base 3.4.2 + _ZN4geos4util27UniqueCoordinateArrayFilterD2Ev@Base 3.4.2 + _ZN4geos4util29UnsupportedOperationExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util29UnsupportedOperationExceptionC1Ev@Base 3.4.2 + _ZN4geos4util29UnsupportedOperationExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util29UnsupportedOperationExceptionC2Ev@Base 3.4.2 + _ZN4geos4util29UnsupportedOperationExceptionD0Ev@Base 3.4.2 + _ZN4geos4util29UnsupportedOperationExceptionD1Ev@Base 3.4.2 + _ZN4geos4util29UnsupportedOperationExceptionD2Ev@Base 3.4.2 + _ZN4geos4util6Assert20shouldNeverReachHereERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util6Assert6equalsERKNS_4geom10CoordinateES5_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util6Assert6isTrueEbRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util7ProfileC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util7ProfileC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util7rint_vcEd@Base 3.4.2 + _ZN4geos4util8Profiler3getENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util8Profiler4stopENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util8Profiler5startENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos4util8Profiler8instanceEv@Base 3.4.2 + _ZN4geos4util8ProfilerD1Ev@Base 3.4.2 + _ZN4geos4util8ProfilerD2Ev@Base 3.4.2 + _ZN4geos4util9Interrupt16registerCallbackEPFvvE@Base 3.4.2 + _ZN4geos4util9Interrupt5checkEv@Base 3.4.2 + _ZN4geos4util9Interrupt6cancelEv@Base 3.4.2 + _ZN4geos4util9Interrupt7processEv@Base 3.4.2 + _ZN4geos4util9Interrupt7requestEv@Base 3.4.2 + _ZN4geos4util9Interrupt9interruptEv@Base 3.4.2 + _ZN4geos4util9sym_roundEd@Base 3.4.2 + _ZN4geos4utillsERSoRKNS0_7ProfileE@Base 3.4.2 + _ZN4geos4utillsERSoRKNS0_8ProfilerE@Base 3.4.2 + _ZN4geos5index13intervalrtree17IntervalRTreeNode7compareEPKS2_S4_@Base 3.4.2 + _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD0Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD1Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree21IntervalRTreeLeafNodeD2Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD0Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD1Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree23IntervalRTreeBranchNodeD2Ev@Base 3.4.2 + _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree10buildLevelERSt6vectorIPKNS1_17IntervalRTreeNodeESaIS6_EES9_@Base 3.8.0 + _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree4initEv@Base 3.4.2 + _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree5queryEddPNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree6insertEddPv@Base 3.4.2 + _ZN4geos5index13intervalrtree25SortedPackedIntervalRTree9buildTreeEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChain13computeSelectERKNS_4geom8EnvelopeEjjRNS1_25MonotoneChainSelectActionE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChain13computeSelectERKNS_4geom8EnvelopeEmmRNS1_25MonotoneChainSelectActionE@Base 3.7.0 + _ZN4geos5index5chain13MonotoneChain15computeOverlapsEPS2_PNS1_26MonotoneChainOverlapActionE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChain15computeOverlapsEjjRS2_jjRNS1_26MonotoneChainOverlapActionE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChain15computeOverlapsEmmRS2_mmRNS1_26MonotoneChainOverlapActionE@Base 3.7.0 + _ZN4geos5index5chain13MonotoneChain6selectERKNS_4geom8EnvelopeERNS1_25MonotoneChainSelectActionE@Base 3.4.2 + (subst)_ZN4geos5index5chain13MonotoneChain8overlapsE{size_t}{size_t}RKS2_{size_t}{size_t}@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChainC1ERKNS_4geom18CoordinateSequenceEjjPv@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChainC1ERKNS_4geom18CoordinateSequenceEmmPv@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain13MonotoneChainC2ERKNS_4geom18CoordinateSequenceEjjPv@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain13MonotoneChainC2ERKNS_4geom18CoordinateSequenceEmmPv@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain20MonotoneChainBuilder12findChainEndERKNS_4geom18CoordinateSequenceEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain20MonotoneChainBuilder12findChainEndERKNS_4geom18CoordinateSequenceEm@Base 3.7.0 + _ZN4geos5index5chain20MonotoneChainBuilder9getChainsEPKNS_4geom18CoordinateSequenceEPv@Base 3.4.2 + _ZN4geos5index5chain20MonotoneChainBuilder9getChainsEPKNS_4geom18CoordinateSequenceEPvRSt6vectorISt10unique_ptrINS1_13MonotoneChainESt14default_deleteISA_EESaISD_EE@Base 3.8.0 + (subst)_ZN4geos5index5chain25MonotoneChainSelectAction6selectERNS1_13MonotoneChainE{size_t}@Base 3.8.0 + _ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERKNS_4geom11LineSegmentES6_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERNS1_13MonotoneChainEjS4_j@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index5chain26MonotoneChainOverlapAction7overlapERNS1_13MonotoneChainEmS4_m@Base 3.7.0 + _ZN4geos5index5chain26MonotoneChainOverlapActionD0Ev@Base 3.4.2 + _ZN4geos5index5chain26MonotoneChainOverlapActionD1Ev@Base 3.4.2 + _ZN4geos5index5chain26MonotoneChainOverlapActionD2Ev@Base 3.4.2 + _ZN4geos5index7bintree3Key10computeKeyEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree3Key11getIntervalEv@Base 3.4.2 + _ZN4geos5index7bintree3Key12computeLevelEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree3Key15computeIntervalEiPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree3Key8getLevelEv@Base 3.4.2 + _ZN4geos5index7bintree3Key8getPointEv@Base 3.4.2 + _ZN4geos5index7bintree3KeyC1EPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree3KeyC2EPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree3KeyD1Ev@Base 3.4.2 + _ZN4geos5index7bintree3KeyD2Ev@Base 3.4.2 + _ZN4geos5index7bintree4Node10createNodeEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4Node10getSubnodeEi@Base 3.4.2 + _ZN4geos5index7bintree4Node11getIntervalEv@Base 3.4.2 + _ZN4geos5index7bintree4Node13createSubnodeEi@Base 3.4.2 + _ZN4geos5index7bintree4Node13isSearchMatchEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4Node14createExpandedEPS2_PNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4Node4findEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4Node6insertEPS2_@Base 3.4.2 + _ZN4geos5index7bintree4Node7getNodeEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4NodeC1EPNS1_8IntervalEi@Base 3.4.2 + _ZN4geos5index7bintree4NodeC2EPNS1_8IntervalEi@Base 3.4.2 + _ZN4geos5index7bintree4NodeD0Ev@Base 3.4.2 + _ZN4geos5index7bintree4NodeD1Ev@Base 3.4.2 + _ZN4geos5index7bintree4NodeD2Ev@Base 3.4.2 + _ZN4geos5index7bintree4Root13isSearchMatchEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree4Root15insertContainedEPNS1_4NodeEPNS1_8IntervalEPv@Base 3.4.2 + _ZN4geos5index7bintree4Root6insertEPNS1_8IntervalEPv@Base 3.4.2 + _ZN4geos5index7bintree4Root6originE@Base 3.4.2 + _ZN4geos5index7bintree4RootD0Ev@Base 3.4.2 + _ZN4geos5index7bintree4RootD1Ev@Base 3.4.2 + _ZN4geos5index7bintree4RootD2Ev@Base 3.4.2 + _ZN4geos5index7bintree7Bintree12collectStatsEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree7Bintree12ensureExtentEPKNS1_8IntervalEd@Base 3.4.2 + _ZN4geos5index7bintree7Bintree4sizeEv@Base 3.4.2 + _ZN4geos5index7bintree7Bintree5depthEv@Base 3.4.2 + _ZN4geos5index7bintree7Bintree5queryEPNS1_8IntervalE@Base 3.4.2 + _ZN4geos5index7bintree7Bintree5queryEPNS1_8IntervalEPSt6vectorIPvSaIS6_EE@Base 3.4.2 + _ZN4geos5index7bintree7Bintree5queryEd@Base 3.4.2 + _ZN4geos5index7bintree7Bintree6insertEPNS1_8IntervalEPv@Base 3.4.2 + _ZN4geos5index7bintree7Bintree8iteratorEv@Base 3.4.2 + _ZN4geos5index7bintree7Bintree8nodeSizeEv@Base 3.4.2 + _ZN4geos5index7bintree7BintreeC1Ev@Base 3.4.2 + _ZN4geos5index7bintree7BintreeC2Ev@Base 3.4.2 + _ZN4geos5index7bintree7BintreeD1Ev@Base 3.4.2 + _ZN4geos5index7bintree7BintreeD2Ev@Base 3.4.2 + _ZN4geos5index7bintree8Interval15expandToIncludeEPS2_@Base 3.4.2 + _ZN4geos5index7bintree8Interval4initEdd@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC1EPKS2_@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC1Edd@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC1Ev@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC2EPKS2_@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC2Edd@Base 3.4.2 + _ZN4geos5index7bintree8IntervalC2Ev@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase11addAllItemsEPSt6vectorIPvSaIS4_EE@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase15getSubnodeIndexEPNS1_8IntervalEd@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase26addAllItemsFromOverlappingEPNS1_8IntervalEPSt6vectorIPvSaIS6_EE@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase3addEPv@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase4sizeEv@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase5depthEv@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase8getItemsEv@Base 3.4.2 + _ZN4geos5index7bintree8NodeBase8nodeSizeEv@Base 3.4.2 + _ZN4geos5index7bintree8NodeBaseC1Ev@Base 3.4.2 + _ZN4geos5index7bintree8NodeBaseC2Ev@Base 3.4.2 + _ZN4geos5index7bintree8NodeBaseD0Ev@Base 3.4.2 + _ZN4geos5index7bintree8NodeBaseD1Ev@Base 3.4.2 + _ZN4geos5index7bintree8NodeBaseD2Ev@Base 3.4.2 + _ZN4geos5index7strtree12EnvelopeUtil15maximumDistanceEPKNS_4geom8EnvelopeES6_@Base 3.8.0 + _ZN4geos5index7strtree13BoundablePair11isCompositeEPKNS1_9BoundableE@Base 3.6.0 + _ZN4geos5index7strtree13BoundablePair13expandToQueueERSt14priority_queueIPS2_St6vectorIS4_SaIS4_EENS2_25BoundablePairQueueCompareEEd@Base 3.6.0 + _ZN4geos5index7strtree13BoundablePair15maximumDistanceEv@Base 3.8.0 + _ZN4geos5index7strtree13BoundablePair4areaEPKNS1_9BoundableE@Base 3.6.0 + _ZN4geos5index7strtree13BoundablePair6expandEPKNS1_9BoundableES5_bRSt14priority_queueIPS2_St6vectorIS7_SaIS7_EENS2_25BoundablePairQueueCompareEEd@Base 3.8.0 + _ZN4geos5index7strtree13BoundablePairC1EPKNS1_9BoundableES5_PNS1_12ItemDistanceE@Base 3.6.0 + _ZN4geos5index7strtree13BoundablePairC2EPKNS1_9BoundableES5_PNS1_12ItemDistanceE@Base 3.6.0 + _ZN4geos5index7strtree13ItemBoundableD0Ev@Base 3.4.2 + _ZN4geos5index7strtree13ItemBoundableD1Ev@Base 3.4.2 + _ZN4geos5index7strtree13ItemBoundableD2Ev@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree10removeItemERNS1_12AbstractNodeEPv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree15getNodeCapacityEv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree17boundablesAtLevelEi@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree17boundablesAtLevelEiPNS1_12AbstractNodeEPSt6vectorIPNS1_9BoundableESaIS7_EE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree18createHigherLevelsEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree5buildEv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvPKNS1_12AbstractNodeEPSt6vectorIPvSaIS9_EE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRKNS1_12AbstractNodeERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree5queryEPKvRSt6vectorIPvSaIS6_EE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree6insertEPKvPv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree6removeEPKvPv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree6removeEPKvRNS1_12AbstractNodeEPv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree7getRootEv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree7iterateERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree8lastNodeEPSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree9itemsTreeEPNS1_12AbstractNodeE@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtree9itemsTreeEv@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtreeD0Ev@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtreeD1Ev@Base 3.4.2 + _ZN4geos5index7strtree15AbstractSTRtreeD2Ev@Base 3.4.2 + _ZN4geos5index7strtree15SIRAbstractNodeD0Ev@Base 3.4.2 + _ZN4geos5index7strtree15SIRAbstractNodeD1Ev@Base 3.4.2 + _ZN4geos5index7strtree15SIRAbstractNodeD2Ev@Base 3.4.2 + _ZN4geos5index7strtree15STRAbstractNodeD0Ev@Base 3.4.2 + _ZN4geos5index7strtree15STRAbstractNodeD1Ev@Base 3.4.2 + _ZN4geos5index7strtree15STRAbstractNodeD2Ev@Base 3.4.2 + _ZN4geos5index7strtree20GeometryItemDistance8distanceEPKNS1_13ItemBoundableES5_@Base 3.6.0 + _ZN4geos5index7strtree7SIRtree10createNodeEi@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree14sortBoundablesEPKSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree15SIRIntersectsOp10intersectsEPKvS5_@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD0Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD1Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree15SIRIntersectsOpD2Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree15getIntersectsOpEv@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 + _ZN4geos5index7strtree7SIRtree6insertEddPv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7SIRtreeC1Ej@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7SIRtreeC1Em@Base 3.7.0 + _ZN4geos5index7strtree7SIRtreeC1Ev@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7SIRtreeC2Ej@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7SIRtreeC2Em@Base 3.7.0 + _ZN4geos5index7strtree7SIRtreeC2Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtreeD0Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtreeD1Ev@Base 3.4.2 + _ZN4geos5index7strtree7SIRtreeD2Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtree10createNodeEi@Base 3.4.2 + _ZN4geos5index7strtree7STRtree14sortBoundablesEPKSt6vectorIPNS1_9BoundableESaIS5_EE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtree14verticalSlicesEPSt6vectorIPNS1_9BoundableESaIS5_EEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtree14verticalSlicesEPSt6vectorIPNS1_9BoundableESaIS5_EEm@Base 3.7.0 + _ZN4geos5index7strtree7STRtree15STRIntersectsOp10intersectsEPKvS5_@Base 3.4.2 + _ZN4geos5index7strtree7STRtree15STRIntersectsOpD0Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtree15STRIntersectsOpD1Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtree15STRIntersectsOpD2Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtree15getIntersectsOpEv@Base 3.4.2 + _ZN4geos5index7strtree7STRtree16isWithinDistanceEPNS1_13BoundablePairEd@Base 3.8.0 + _ZN4geos5index7strtree7STRtree16isWithinDistanceEPS2_PNS1_12ItemDistanceEd@Base 3.8.0 + _ZN4geos5index7strtree7STRtree16nearestNeighbourEPKNS_4geom8EnvelopeEPKvPNS1_12ItemDistanceE@Base 3.6.0 + _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_12ItemDistanceE@Base 3.6.0 + _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_13BoundablePairE@Base 3.6.0 + _ZN4geos5index7strtree7STRtree16nearestNeighbourEPNS1_13BoundablePairEd@Base 3.6.0 + _ZN4geos5index7strtree7STRtree16nearestNeighbourEPS2_PNS1_12ItemDistanceE@Base 3.7.0 + _ZN4geos5index7strtree7STRtree22createParentBoundablesEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 + _ZN4geos5index7strtree7STRtree39createParentBoundablesFromVerticalSliceEPSt6vectorIPNS1_9BoundableESaIS5_EEi@Base 3.4.2 + _ZN4geos5index7strtree7STRtree40createParentBoundablesFromVerticalSlicesEPSt6vectorIPS3_IPNS1_9BoundableESaIS5_EESaIS8_EEi@Base 3.4.2 + _ZN4geos5index7strtree7STRtree5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index7strtree7STRtree5queryEPKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 + _ZN4geos5index7strtree7STRtree6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index7strtree7STRtree6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtreeC1Ej@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtreeC1Em@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos5index7strtree7STRtreeC2Ej@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos5index7strtree7STRtreeC2Em@Base 3.7.0 + _ZN4geos5index7strtree7STRtreeD0Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtreeD1Ev@Base 3.4.2 + _ZN4geos5index7strtree7STRtreeD2Ev@Base 3.4.2 + _ZN4geos5index7strtree8Interval15expandToIncludeEPKS2_@Base 3.5.0 + _ZN4geos5index7strtree8Interval9getCentreEv@Base 3.4.2 + _ZN4geos5index7strtree8IntervalC1Edd@Base 3.4.2 + _ZN4geos5index7strtree8IntervalC2Edd@Base 3.4.2 + _ZN4geos5index7strtree9ItemsListD1Ev@Base 3.4.2 + _ZN4geos5index7strtree9ItemsListD2Ev@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBits13zeroLowerBitsEi@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBits14toBinaryStringB5cxx11Ed@Base 3.5.1 + _ZN4geos5index8quadtree10DoubleBits20truncateToPowerOfTwoEd@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBits21maximumCommonMantissaEdd@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBits8exponentEd@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBits8powerOf2Ei@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBitsC1Ed@Base 3.4.2 + _ZN4geos5index8quadtree10DoubleBitsC2Ed@Base 3.4.2 + _ZN4geos5index8quadtree12IntervalSize11isZeroWidthEdd@Base 3.4.2 + _ZN4geos5index8quadtree3Key10computeKeyERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree3Key10computeKeyEiRKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree3Key16computeQuadLevelERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree3KeyC1ERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree3KeyC2ERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree4Node10createNodeERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree4Node10getSubnodeEi@Base 3.4.2 + _ZN4geos5index8quadtree4Node10insertNodeESt10unique_ptrIS2_St14default_deleteIS2_EE@Base 3.7.0 + _ZN4geos5index8quadtree4Node13createSubnodeEi@Base 3.4.2 + _ZN4geos5index8quadtree4Node14createExpandedESt10unique_ptrIS2_St14default_deleteIS2_EERKNS_4geom8EnvelopeE@Base 3.7.0 + _ZN4geos5index8quadtree4Node4findEPKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree4Node7getNodeEPKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree4NodeD0Ev@Base 3.4.2 + _ZN4geos5index8quadtree4NodeD1Ev@Base 3.4.2 + _ZN4geos5index8quadtree4NodeD2Ev@Base 3.4.2 + _ZN4geos5index8quadtree4Root15insertContainedEPNS1_4NodeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index8quadtree4Root6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index8quadtree4Root6originE@Base 3.4.2 + _ZN4geos5index8quadtree4RootD0Ev@Base 3.4.2 + _ZN4geos5index8quadtree4RootD1Ev@Base 3.4.2 + _ZN4geos5index8quadtree4RootD2Ev@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase10visitItemsEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase15getSubnodeIndexEPKNS_4geom8EnvelopeERKNS3_10CoordinateE@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase3addEPv@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase5visitEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBase8getItemsEv@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBaseC1Ev@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBaseC2Ev@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBaseD0Ev@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBaseD1Ev@Base 3.4.2 + _ZN4geos5index8quadtree8NodeBaseD2Ev@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree12collectStatsERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree12ensureExtentEPKNS_4geom8EnvelopeEd@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree4sizeEv@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree5depthEv@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree5queryEPKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree6insertEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index8quadtree8Quadtree8queryAllEv@Base 3.4.2 + _ZN4geos5index8quadtree8QuadtreeD0Ev@Base 3.4.2 + _ZN4geos5index8quadtree8QuadtreeD1Ev@Base 3.4.2 + _ZN4geos5index8quadtree8QuadtreeD2Ev@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEvent11getIntervalEv@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEvent14getInsertEventEv@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEvent19getDeleteEventIndexEv@Base 3.4.2 + (subst)_ZN4geos5index9sweepline14SweepLineEvent19setDeleteEventIndexE{size_t}@Base 3.8.0 + _ZN4geos5index9sweepline14SweepLineEvent8isDeleteEv@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEvent8isInsertEv@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEventC1EdPS2_PNS1_17SweepLineIntervalE@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineEventC2EdPS2_PNS1_17SweepLineIntervalE@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndex10buildIndexEv@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndex15computeOverlapsEPNS1_22SweepLineOverlapActionE@Base 3.4.2 + (subst)_ZN4geos5index9sweepline14SweepLineIndex15processOverlapsE{size_t}{size_t}PNS1_17SweepLineIntervalEPNS1_22SweepLineOverlapActionE@Base 3.8.0 + _ZN4geos5index9sweepline14SweepLineIndex3addEPNS1_17SweepLineIntervalE@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndexC1Ev@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndexC2Ev@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndexD1Ev@Base 3.4.2 + _ZN4geos5index9sweepline14SweepLineIndexD2Ev@Base 3.4.2 + _ZN4geos5index9sweepline17SweepLineInterval6getMaxEv@Base 3.4.2 + _ZN4geos5index9sweepline17SweepLineInterval6getMinEv@Base 3.4.2 + _ZN4geos5index9sweepline17SweepLineInterval7getItemEv@Base 3.4.2 + _ZN4geos5index9sweepline17SweepLineIntervalC1EddPv@Base 3.4.2 + _ZN4geos5index9sweepline17SweepLineIntervalC2EddPv@Base 3.4.2 + _ZN4geos6noding11ScaledNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding11ScaledNoder6ScalerD0Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoder6ScalerD1Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoder6ScalerD2Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoder8ReScaler9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos6noding11ScaledNoder8ReScalerD0Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoder8ReScalerD1Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoder8ReScalerD2Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoderD0Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoderD1Ev@Base 3.4.2 + _ZN4geos6noding11ScaledNoderD2Ev@Base 3.4.2 + _ZN4geos6noding11SegmentNode9compareToERKS1_@Base 3.4.2 + (subst)_ZN4geos6noding11SegmentNodeC1ERKNS0_18NodedSegmentStringERKNS_4geom10CoordinateE{size_t}i@Base 3.8.0 + (subst)_ZN4geos6noding11SegmentNodeC2ERKNS0_18NodedSegmentStringERKNS_4geom10CoordinateE{size_t}i@Base 3.8.0 + _ZN4geos6noding11SimpleNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding11SimpleNoder17computeIntersectsEPNS0_13SegmentStringES3_@Base 3.4.2 + _ZN4geos6noding11SimpleNoderD0Ev@Base 3.4.2 + _ZN4geos6noding11SimpleNoderD1Ev@Base 3.4.2 + _ZN4geos6noding11SimpleNoderD2Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder15intersectChainsEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding12MCIndexNoder20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEjS6_j@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding12MCIndexNoder20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEmS6_m@Base 3.7.0 + _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD0Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD1Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder20SegmentOverlapActionD2Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder3addEPNS0_13SegmentStringE@Base 3.4.2 + _ZN4geos6noding12MCIndexNoder8getIndexEv@Base 3.4.2 + _ZN4geos6noding12MCIndexNoderD0Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoderD1Ev@Base 3.4.2 + _ZN4geos6noding12MCIndexNoderD2Ev@Base 3.4.2 + _ZN4geos6noding13GeometryNoder10toGeometryERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding13GeometryNoder21extractSegmentStringsERKNS_4geom8GeometryERSt6vectorIPNS0_13SegmentStringESaIS8_EE@Base 3.4.2 + _ZN4geos6noding13GeometryNoder4nodeERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos6noding13GeometryNoder8getNodedEv@Base 3.4.2 + _ZN4geos6noding13GeometryNoder8getNoderEv@Base 3.4.2 + _ZN4geos6noding13GeometryNoderC1ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos6noding13GeometryNoderC2ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos6noding13IteratedNoder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding13IteratedNoder4nodeEPSt6vectorIPNS0_13SegmentStringESaIS4_EEPi@Base 3.4.2 + _ZN4geos6noding13IteratedNoderD0Ev@Base 3.4.2 + _ZN4geos6noding13IteratedNoderD1Ev@Base 3.4.2 + _ZN4geos6noding13IteratedNoderD2Ev@Base 3.4.2 + _ZN4geos6noding15NodingValidator10checkValidEv@Base 3.4.2 + _ZN4geos6noding15NodingValidator26checkInteriorIntersectionsERKNS0_13SegmentStringES4_@Base 3.4.2 + (subst)_ZN4geos6noding15NodingValidator26checkInteriorIntersectionsERKNS0_13SegmentStringE{size_t}S4_{size_t}@Base 3.8.0 + _ZN4geos6noding15NodingValidator26checkInteriorIntersectionsEv@Base 3.4.2 + _ZN4geos6noding15SegmentNodeList12addEndpointsEv@Base 3.4.2 + _ZN4geos6noding15SegmentNodeList13addSplitEdgesERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding15SegmentNodeList15createSplitEdgeEPNS0_11SegmentNodeES3_@Base 3.4.2 + _ZN4geos6noding15SegmentNodeList17addCollapsedNodesEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList17findCollapseIndexERNS0_11SegmentNodeES3_Rj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList17findCollapseIndexERNS0_11SegmentNodeES3_Rm@Base 3.7.0 + _ZN4geos6noding15SegmentNodeList26checkSplitEdgesCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList30findCollapsesFromInsertedNodesERSt6vectorIjSaIjEE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList30findCollapsesFromInsertedNodesERSt6vectorImSaImEE@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList33findCollapsesFromExistingVerticesERSt6vectorIjSaIjEE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList33findCollapsesFromExistingVerticesERSt6vectorImSaImEE@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding15SegmentNodeList3addERKNS_4geom10CoordinateEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding15SegmentNodeList3addERKNS_4geom10CoordinateEm@Base 3.7.0 + _ZN4geos6noding15SegmentNodeListD0Ev@Base 3.4.2 + _ZN4geos6noding15SegmentNodeListD1Ev@Base 3.4.2 + _ZN4geos6noding15SegmentNodeListD2Ev@Base 3.4.2 + _ZN4geos6noding15SinglePassNoder21setSegmentIntersectorEPNS0_18SegmentIntersectorE@Base 3.4.2 + (subst)_ZN4geos6noding17IntersectionAdder20processIntersectionsEPNS0_13SegmentStringE{size_t}S3_{size_t}@Base 3.8.0 + (subst)_ZN4geos6noding17IntersectionAdder21isTrivialIntersectionEPKNS0_13SegmentStringE{size_t}S4_{size_t}@Base 3.8.0 + _ZN4geos6noding17IntersectionAdderD0Ev@Base 3.4.2 + _ZN4geos6noding17IntersectionAdderD1Ev@Base 3.4.2 + _ZN4geos6noding17IntersectionAdderD2Ev@Base 3.4.2 + _ZN4geos6noding18BasicSegmentStringD0Ev@Base 3.4.2 + _ZN4geos6noding18BasicSegmentStringD1Ev@Base 3.4.2 + _ZN4geos6noding18BasicSegmentStringD2Ev@Base 3.4.2 + _ZN4geos6noding18NodedSegmentString10safeOctantERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos6noding18NodedSegmentString11getNodeListEv@Base 3.4.2 + (subst)_ZN4geos6noding18NodedSegmentString15addIntersectionEPNS_9algorithm15LineIntersectorE{size_t}{size_t}{size_t}@Base 3.8.0 + (subst)_ZN4geos6noding18NodedSegmentString15addIntersectionERKNS_4geom10CoordinateE{size_t}@Base 3.8.0 + (subst)_ZN4geos6noding18NodedSegmentString16addIntersectionsEPNS_9algorithm15LineIntersectorE{size_t}{size_t}@Base 3.8.0 + _ZN4geos6noding18NodedSegmentString18getNodedSubstringsERKSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZN4geos6noding18NodedSegmentString18getNodedSubstringsERKSt6vectorIPNS0_13SegmentStringESaIS4_EEPS6_@Base 3.4.2 + _ZN4geos6noding18NodedSegmentStringD0Ev@Base 3.4.2 + _ZN4geos6noding18NodedSegmentStringD1Ev@Base 3.4.2 + _ZN4geos6noding18NodedSegmentStringD2Ev@Base 3.4.2 + _ZN4geos6noding19FastNodingValidator10checkValidEv@Base 3.4.2 + _ZN4geos6noding19FastNodingValidator26checkInteriorIntersectionsEv@Base 3.4.2 + (subst)_ZN4geos6noding23IntersectionFinderAdder20processIntersectionsEPNS0_13SegmentStringE{size_t}S3_{size_t}@Base 3.8.0 + _ZN4geos6noding23IntersectionFinderAdderD0Ev@Base 3.4.2 + _ZN4geos6noding23IntersectionFinderAdderD1Ev@Base 3.4.2 + _ZN4geos6noding23IntersectionFinderAdderD2Ev@Base 3.4.2 + _ZN4geos6noding23OrientedCoordinateArray11orientationERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos6noding23OrientedCoordinateArray15compareOrientedERKNS_4geom18CoordinateSequenceEbS5_b@Base 3.4.2 + (subst)_ZN4geos6noding24NodingIntersectionFinder12isEndSegmentEPKNS0_13SegmentStringE{size_t}@Base 3.8.0 + (subst)_ZN4geos6noding24NodingIntersectionFinder20processIntersectionsEPNS0_13SegmentStringE{size_t}S3_{size_t}@Base 3.8.0 + _ZN4geos6noding24NodingIntersectionFinder28isInteriorVertexIntersectionERKNS_4geom10CoordinateES5_S5_S5_bbbb@Base 3.8.0 + _ZN4geos6noding24NodingIntersectionFinder28isInteriorVertexIntersectionERKNS_4geom10CoordinateES5_bb@Base 3.8.0 + _ZN4geos6noding24NodingIntersectionFinderD0Ev@Base 3.8.0 + _ZN4geos6noding24NodingIntersectionFinderD1Ev@Base 3.8.0 + _ZN4geos6noding24NodingIntersectionFinderD2Ev@Base 3.8.0 + (subst)_ZN4geos6noding27SegmentIntersectionDetector20processIntersectionsEPNS0_13SegmentStringE{size_t}S3_{size_t}@Base 3.8.0 + _ZN4geos6noding27SegmentIntersectionDetectorD0Ev@Base 3.4.2 + _ZN4geos6noding27SegmentIntersectionDetectorD1Ev@Base 3.4.2 + _ZN4geos6noding27SegmentIntersectionDetectorD2Ev@Base 3.4.2 + _ZN4geos6noding32FastSegmentSetIntersectionFinder10intersectsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding32FastSegmentSetIntersectionFinder10intersectsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EEPNS0_27SegmentIntersectionDetectorE@Base 3.4.2 + _ZN4geos6noding32FastSegmentSetIntersectionFinderC1EPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding32FastSegmentSetIntersectionFinderC2EPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector10addToIndexEPNS0_13SegmentStringE@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15addToMonoChainsEPNS0_13SegmentStringE@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15intersectChainsEv@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector15setBaseSegmentsEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEjS6_j@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapAction7overlapERNS_5index5chain13MonotoneChainEmS6_m@Base 3.7.0 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD0Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD1Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionD2Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersector7processEPSt6vectorIPKNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorC1Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorC2Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD0Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD1Ev@Base 3.4.2 + _ZN4geos6noding34MCIndexSegmentSetMutualIntersectorD2Ev@Base 3.4.2 + _ZN4geos6noding6Octant6octantERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos6noding6Octant6octantEdd@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder12computeSnapsEPNS0_18NodedSegmentStringERSt6vectorINS_4geom10CoordinateESaIS7_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder12computeSnapsERKSt6vectorIPNS0_13SegmentStringESaIS5_EERS3_INS_4geom10CoordinateESaISB_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder16checkCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder18computeVertexSnapsEPNS0_18NodedSegmentStringES4_@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder18computeVertexSnapsERKSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder25findInteriorIntersectionsERSt6vectorIPNS0_13SegmentStringESaIS5_EERNS_9algorithm15LineIntersectorERS3_INS_4geom10CoordinateESaISD_EE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounder9snapRoundEPSt6vectorIPNS0_13SegmentStringESaIS5_EERNS_9algorithm15LineIntersectorE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounderC1ERKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounderC2ERKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounderD0Ev@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounderD1Ev@Base 3.4.2 + _ZN4geos6noding9snapround17SimpleSnapRounderD2Ev@Base 3.4.2 + _ZN4geos6noding9snapround18HotPixelSnapAction6selectERKNS_4geom11LineSegmentE@Base 3.4.2 + (subst)_ZN4geos6noding9snapround18HotPixelSnapAction6selectERNS_5index5chain13MonotoneChainE{size_t}@Base 3.8.0 + _ZN4geos6noding9snapround18HotPixelSnapActionD0Ev@Base 3.4.2 + _ZN4geos6noding9snapround18HotPixelSnapActionD1Ev@Base 3.4.2 + _ZN4geos6noding9snapround18HotPixelSnapActionD2Ev@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder12computeNodesEPSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder16checkCorrectnessERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder18computeVertexSnapsEPNS0_18NodedSegmentStringE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder18computeVertexSnapsERSt6vectorIPNS0_13SegmentStringESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder24computeIntersectionSnapsERSt6vectorINS_4geom10CoordinateESaIS5_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder25findInteriorIntersectionsERNS0_12MCIndexNoderEPSt6vectorIPNS0_13SegmentStringESaIS7_EERS5_INS_4geom10CoordinateESaISC_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounder9snapRoundERNS0_12MCIndexNoderEPSt6vectorIPNS0_13SegmentStringESaIS7_EE@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounderD0Ev@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounderD1Ev@Base 3.4.2 + _ZN4geos6noding9snapround18MCIndexSnapRounderD2Ev@Base 3.4.2 + (subst)_ZN4geos6noding9snapround19MCIndexPointSnapper4snapERNS1_8HotPixelEPNS0_13SegmentStringE{size_t}@Base 3.8.0 + _ZN4geos6noding9snapround26MCIndexPointSnapperVisitor9visitItemEPv@Base 3.4.2 + _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD0Ev@Base 3.4.2 + _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD1Ev@Base 3.4.2 + _ZN4geos6noding9snapround26MCIndexPointSnapperVisitorD2Ev@Base 3.4.2 + _ZN4geos6noding9snapround8HotPixel11initCornersERKNS_4geom10CoordinateE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos6noding9snapround8HotPixel14addSnappedNodeERNS0_18NodedSegmentStringEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos6noding9snapround8HotPixel14addSnappedNodeERNS0_18NodedSegmentStringEm@Base 3.7.0 + _ZN4geos6noding9snapround8HotPixel22intersectsPixelClosureERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZN4geos6noding9snapround8HotPixelC1ERKNS_4geom10CoordinateEdRNS_9algorithm15LineIntersectorE@Base 3.4.2 + _ZN4geos6noding9snapround8HotPixelC2ERKNS_4geom10CoordinateEdRNS_9algorithm15LineIntersectorE@Base 3.4.2 + _ZN4geos6noding9snapround8HotPixelD1Ev@Base 3.4.2 + _ZN4geos6noding9snapround8HotPixelD2Ev@Base 3.4.2 + _ZN4geos6nodinglsERSoRKNS0_11SegmentNodeE@Base 3.4.2 + _ZN4geos6nodinglsERSoRKNS0_13SegmentStringE@Base 3.4.2 + _ZN4geos6nodinglsERSoRKNS0_15SegmentNodeListE@Base 3.4.2 + _ZN4geos8simplify13DPTransformer15createValidAreaEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos8simplify13DPTransformer16transformPolygonEPKNS_4geom7PolygonEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos8simplify13DPTransformer20transformCoordinatesEPKNS_4geom18CoordinateSequenceEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos8simplify13DPTransformer21transformMultiPolygonEPKNS_4geom12MultiPolygonEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos8simplify13DPTransformerC1Ed@Base 3.4.2 + _ZN4geos8simplify13DPTransformerC2Ed@Base 3.4.2 + _ZN4geos8simplify13DPTransformerD0Ev@Base 3.4.2 + _ZN4geos8simplify13DPTransformerD1Ev@Base 3.4.2 + _ZN4geos8simplify13DPTransformerD2Ev@Base 3.4.2 + _ZN4geos8simplify16LineSegmentIndex3addEPKNS_4geom11LineSegmentE@Base 3.4.2 + _ZN4geos8simplify16LineSegmentIndex3addERKNS0_16TaggedLineStringE@Base 3.4.2 + _ZN4geos8simplify16LineSegmentIndex5queryEPKNS_4geom11LineSegmentE@Base 3.8.0 + _ZN4geos8simplify16LineSegmentIndex6removeEPKNS_4geom11LineSegmentE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineString10getSegmentEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineString10getSegmentEm@Base 3.7.0 + _ZN4geos8simplify16TaggedLineString11addToResultESt10unique_ptrINS0_17TaggedLineSegmentESt14default_deleteIS3_EE@Base 3.7.0 + _ZN4geos8simplify16TaggedLineString11getSegmentsEv@Base 3.4.2 + _ZN4geos8simplify16TaggedLineString18extractCoordinatesERKSt6vectorIPNS0_17TaggedLineSegmentESaIS4_EE@Base 3.4.2 + _ZN4geos8simplify16TaggedLineString4initEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineStringC1EPKNS_4geom10LineStringEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineStringC1EPKNS_4geom10LineStringEm@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify16TaggedLineStringC2EPKNS_4geom10LineStringEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify16TaggedLineStringC2EPKNS_4geom10LineStringEm@Base 3.7.0 + _ZN4geos8simplify16TaggedLineStringD1Ev@Base 3.4.2 + _ZN4geos8simplify16TaggedLineStringD2Ev@Base 3.4.2 + _ZN4geos8simplify17TaggedLineSegmentC1ERKNS_4geom10CoordinateES5_@Base 3.4.2 + (subst)_ZN4geos8simplify17TaggedLineSegmentC1ERKNS_4geom10CoordinateES5_PKNS2_8GeometryE{size_t}@Base 3.8.0 + _ZN4geos8simplify17TaggedLineSegmentC1ERKS1_@Base 3.4.2 + _ZN4geos8simplify17TaggedLineSegmentC2ERKNS_4geom10CoordinateES5_@Base 3.4.2 + (subst)_ZN4geos8simplify17TaggedLineSegmentC2ERKNS_4geom10CoordinateES5_PKNS2_8GeometryE{size_t}@Base 3.8.0 + _ZN4geos8simplify17TaggedLineSegmentC2ERKS1_@Base 3.4.2 + _ZN4geos8simplify17TaggedLineSegmentD0Ev@Base 3.4.2 + _ZN4geos8simplify17TaggedLineSegmentD1Ev@Base 3.4.2 + _ZN4geos8simplify17TaggedLineSegmentD2Ev@Base 3.4.2 + _ZN4geos8simplify18LineSegmentVisitor9visitItemEPv@Base 3.4.2 + _ZN4geos8simplify18LineSegmentVisitorD0Ev@Base 3.4.2 + _ZN4geos8simplify18LineSegmentVisitorD1Ev@Base 3.4.2 + _ZN4geos8simplify18LineSegmentVisitorD2Ev@Base 3.4.2 + _ZN4geos8simplify21TaggedLinesSimplifier20setDistanceToleranceEd@Base 3.4.2 + _ZN4geos8simplify21TaggedLinesSimplifier8simplifyERNS0_16TaggedLineStringE@Base 3.4.2 + _ZN4geos8simplify21TaggedLinesSimplifierC1Ev@Base 3.4.2 + _ZN4geos8simplify21TaggedLinesSimplifierC2Ev@Base 3.4.2 + _ZN4geos8simplify24DouglasPeuckerSimplifier17getResultGeometryEv@Base 3.4.2 + _ZN4geos8simplify24DouglasPeuckerSimplifier20setDistanceToleranceEd@Base 3.4.2 + _ZN4geos8simplify24DouglasPeuckerSimplifier8simplifyEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos8simplify24DouglasPeuckerSimplifierC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos8simplify24DouglasPeuckerSimplifierC2EPKNS_4geom8GeometryE@Base 3.4.2 + (subst)_ZN4geos8simplify26TaggedLineStringSimplifier15isInLineSectionEPKNS0_16TaggedLineStringERKSt4pairI{size_t}{size_t}EPKNS0_17TaggedLineSegmentE@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15simplifySectionEjjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier15simplifySectionEmmm@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier17findFurthestPointEPKNS_4geom18CoordinateSequenceEjjRd@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier17findFurthestPointEPKNS_4geom18CoordinateSequenceEmmRd@Base 3.7.0 + (subst)_ZN4geos8simplify26TaggedLineStringSimplifier18hasBadIntersectionEPKNS0_16TaggedLineStringERKSt4pairI{size_t}{size_t}ERKNS_4geom11LineSegmentE@Base 3.8.0 + (subst)_ZN4geos8simplify26TaggedLineStringSimplifier23hasBadInputIntersectionEPKNS0_16TaggedLineStringERKSt4pairI{size_t}{size_t}ERKNS_4geom11LineSegmentE@Base 3.8.0 + _ZN4geos8simplify26TaggedLineStringSimplifier24hasBadOutputIntersectionERKNS_4geom11LineSegmentE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier6removeEPKNS0_16TaggedLineStringEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier6removeEPKNS0_16TaggedLineStringEmm@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier7flattenEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify26TaggedLineStringSimplifier7flattenEmm@Base 3.7.0 + _ZN4geos8simplify26TaggedLineStringSimplifier8simplifyEPNS0_16TaggedLineStringE@Base 3.4.2 + _ZN4geos8simplify26TaggedLineStringSimplifierC1EPNS0_16LineSegmentIndexES3_@Base 3.4.2 + _ZN4geos8simplify26TaggedLineStringSimplifierC2EPNS0_16LineSegmentIndexES3_@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos8simplify28DouglasPeuckerLineSimplifier15simplifySectionEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos8simplify28DouglasPeuckerLineSimplifier15simplifySectionEmm@Base 3.7.0 + _ZN4geos8simplify28DouglasPeuckerLineSimplifier20setDistanceToleranceEd@Base 3.4.2 + _ZN4geos8simplify28DouglasPeuckerLineSimplifier8simplifyERKSt6vectorINS_4geom10CoordinateESaIS4_EEd@Base 3.4.2 + _ZN4geos8simplify28DouglasPeuckerLineSimplifier8simplifyEv@Base 3.4.2 + _ZN4geos8simplify28DouglasPeuckerLineSimplifierC1ERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.4.2 + _ZN4geos8simplify28DouglasPeuckerLineSimplifierC2ERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.4.2 + _ZN4geos8simplify28TopologyPreservingSimplifier17getResultGeometryEv@Base 3.4.2 + _ZN4geos8simplify28TopologyPreservingSimplifier20setDistanceToleranceEd@Base 3.4.2 + _ZN4geos8simplify28TopologyPreservingSimplifier8simplifyEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos8simplify28TopologyPreservingSimplifierC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos8simplify28TopologyPreservingSimplifierC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull10grahamScanERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull13computeOctPtsERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull13getConvexHullEv@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull13lineOrPolygonERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull14computeOctRingERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull18extractCoordinatesEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull20toCoordinateSequenceERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull6reduceERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull7preSortERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull9cleanRingERKSt6vectorIPKNS_4geom10CoordinateESaIS6_EERS8_@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull9isBetweenERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm10ConvexHull9padArray3ERSt6vectorIPKNS_4geom10CoordinateESaIS6_EE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHullC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHullC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm10ConvexHullD1Ev@Base 3.4.2 + _ZN4geos9algorithm10ConvexHullD2Ev@Base 3.4.2 + _ZN4geos9algorithm11HCoordinate12intersectionERKNS_4geom10CoordinateES5_S5_S5_RS3_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1ERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1ERKS1_S3_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1Eddd@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC1Ev@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2ERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2ERKS1_S3_@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2Eddd@Base 3.4.2 + _ZN4geos9algorithm11HCoordinateC2Ev@Base 3.4.2 + _ZN4geos9algorithm11Orientation5indexERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm11Orientation5isCCWEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm12Intersection12intersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.8.0 + _ZN4geos9algorithm12PointLocator15computeLocationERKNS_4geom10CoordinateEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos9algorithm12PointLocator18updateLocationInfoENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9algorithm12PointLocator19locateInPolygonRingERKNS_4geom10CoordinateEPKNS2_10LinearRingE@Base 3.4.2 + _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_10LineStringE@Base 3.4.2 + _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_5PointE@Base 3.5.1 + _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_7PolygonE@Base 3.4.2 + _ZN4geos9algorithm12PointLocator6locateERKNS_4geom10CoordinateEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos9algorithm13PointLocation12locateInRingERKNS_4geom10CoordinateERKNS2_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm13PointLocation12locateInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.8.0 + _ZN4geos9algorithm13PointLocation8isInRingERKNS_4geom10CoordinateEPKNS2_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm13PointLocation8isInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.8.0 + _ZN4geos9algorithm13PointLocation8isOnLineERKNS_4geom10CoordinateEPKNS2_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD12intersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD12signOfDet2x2ERKN6ttmath3BigILj1ELj4EEES6_S6_S6_@Base 3.8.0 + (arch=amd64)_ZN4geos9algorithm14CGAlgorithmsDD12signOfDet2x2ERKN6ttmath3BigILm1ELm2EEES6_S6_S6_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD12signOfDet2x2Edddd@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD14circumcentreDDERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD16orientationIndexERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD22orientationIndexFilterERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD5detDDERKN6ttmath3BigILj1ELj4EEES6_S6_S6_@Base 3.8.0 + (arch=amd64)_ZN4geos9algorithm14CGAlgorithmsDD5detDDERKN6ttmath3BigILm1ELm2EEES6_S6_S6_@Base 3.8.0 + _ZN4geos9algorithm14CGAlgorithmsDD5detDDEdddd@Base 3.8.0 + _ZN4geos9algorithm15LineIntersector12interpolateZERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector15hasIntersectionERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector16computeIntersectERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector19computeEdgeDistanceERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector19computeIntLineIndexEi@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector19computeIntLineIndexEv@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector19computeIntersectionERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector19computeIntersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector20getIndexAlongSegmentEii@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector20isSameSignAndNonZeroEdd@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector22isInteriorIntersectionEi@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector22isInteriorIntersectionEv@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector27getIntersectionAlongSegmentEii@Base 3.4.2 + _ZN4geos9algorithm15LineIntersector28computeCollinearIntersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter11getDiameterEv@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter12getNextIndexEPKNS_4geom18CoordinateSequenceEj@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter18computeWidthConvexEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter18getMinimumDiameterEPNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9algorithm15MinimumDiameter18getWidthCoordinateEv@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter19findMaxPerpDistanceEPKNS_4geom18CoordinateSequenceEPKNS2_11LineSegmentEj@Base 3.8.0 + _ZN4geos9algorithm15MinimumDiameter19getMinimumRectangleEPNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9algorithm15MinimumDiameter19getMinimumRectangleEv@Base 3.6.0 + _ZN4geos9algorithm15MinimumDiameter20getSupportingSegmentEv@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter21computeSegmentForLineEddd@Base 3.6.0 + _ZN4geos9algorithm15MinimumDiameter22computeMinimumDiameterEv@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter28computeConvexRingMinDiameterEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameter8computeCEddRKNS_4geom10CoordinateE@Base 3.6.0 + _ZN4geos9algorithm15MinimumDiameter9getLengthEv@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameterC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameterC1EPKNS_4geom8GeometryEb@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameterC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm15MinimumDiameterC2EPKNS_4geom8GeometryEb@Base 3.4.2 + (arch=armel armhf)_ZN4geos9algorithm15MinimumDiameterD1Ev@Base 3.8.0 + (arch=armel armhf)_ZN4geos9algorithm15MinimumDiameterD2Ev@Base 3.8.0 + _ZN4geos9algorithm16BoundaryNodeRule17getBoundaryOGCSFSEv@Base 3.4.2 + _ZN4geos9algorithm16BoundaryNodeRule19getBoundaryEndPointEv@Base 3.4.2 + _ZN4geos9algorithm16BoundaryNodeRule19getBoundaryRuleMod2Ev@Base 3.4.2 + _ZN4geos9algorithm16BoundaryNodeRule29getBoundaryMonovalentEndPointEv@Base 3.4.2 + _ZN4geos9algorithm16BoundaryNodeRule30getBoundaryMultivalentEndPointEv@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointArea14processPolygonEPKNS_4geom7PolygonE@Base 3.8.0 + _ZN4geos9algorithm17InteriorPointArea7processEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9algorithm17InteriorPointAreaC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointAreaC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLine11addInteriorEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLine11addInteriorEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLine12addEndpointsEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLine12addEndpointsEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLine3addERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLineC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17InteriorPointLineC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm17RobustDeterminant12signOfDet2x2Edddd@Base 3.4.2 + _ZN4geos9algorithm18InteriorPointPoint3addEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm18InteriorPointPoint3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm18InteriorPointPointC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm18InteriorPointPointC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm18RayCrossingCounter11getLocationEv@Base 3.4.2 + _ZN4geos9algorithm18RayCrossingCounter12countSegmentERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9algorithm18RayCrossingCounter16isPointInPolygonEv@Base 3.4.2 + _ZN4geos9algorithm18RayCrossingCounter17locatePointInRingERKNS_4geom10CoordinateERKNS2_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm18RayCrossingCounter17locatePointInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.4.2 + _ZN4geos9algorithm20RayCrossingCounterDD11getLocationEv@Base 3.8.0 + _ZN4geos9algorithm20RayCrossingCounterDD12countSegmentERKNS_4geom10CoordinateES5_@Base 3.8.0 + _ZN4geos9algorithm20RayCrossingCounterDD16isPointInPolygonEv@Base 3.8.0 + _ZN4geos9algorithm20RayCrossingCounterDD16orientationIndexERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm20RayCrossingCounterDD17locatePointInRingERKNS_4geom10CoordinateERKNS2_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm20RayCrossingCounterDD17locatePointInRingERKNS_4geom10CoordinateERKSt6vectorIPS4_SaIS7_EE@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle11getDiameterEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle11lowestPointERSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle13computeCentreEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle17getExtremalPointsEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle17getFarthestPointsEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle19computeCirclePointsEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle21pointWitMinAngleWithXERSt6vectorINS_4geom10CoordinateESaIS4_EERS4_@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle28pointWithMinAngleWithSegmentERSt6vectorINS_4geom10CoordinateESaIS4_EERS4_S8_@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle7computeEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle9getCentreEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle9getCircleEv@Base 3.8.0 + _ZN4geos9algorithm21MinimumBoundingCircle9getRadiusEv@Base 3.8.0 + _ZN4geos9algorithm25NotRepresentableExceptionC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos9algorithm25NotRepresentableExceptionC1Ev@Base 3.4.2 + _ZN4geos9algorithm25NotRepresentableExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZN4geos9algorithm25NotRepresentableExceptionC2Ev@Base 3.4.2 + _ZN4geos9algorithm25NotRepresentableExceptionD0Ev@Base 3.4.2 + _ZN4geos9algorithm25NotRepresentableExceptionD1Ev@Base 3.4.2 + _ZN4geos9algorithm25NotRepresentableExceptionD2Ev@Base 3.4.2 + _ZN4geos9algorithm4Area12ofRingSignedEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm4Area12ofRingSignedERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.8.0 + _ZN4geos9algorithm4Area6ofRingEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm4Area6ofRingERKSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.8.0 + _ZN4geos9algorithm5Angle10PI_TIMES_2E@Base 3.4.2 + _ZN4geos9algorithm5Angle12angleBetweenERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm5Angle13interiorAngleERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm5Angle17normalizePositiveEd@Base 3.4.2 + _ZN4geos9algorithm5Angle20angleBetweenOrientedERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm5Angle4diffEdd@Base 3.4.2 + _ZN4geos9algorithm5Angle5angleERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm5Angle5angleERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9algorithm5Angle7getTurnEdd@Base 3.4.2 + _ZN4geos9algorithm5Angle7isAcuteERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm5Angle8isObtuseERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm5Angle9PI_OVER_2E@Base 3.4.2 + _ZN4geos9algorithm5Angle9PI_OVER_4E@Base 3.4.2 + _ZN4geos9algorithm5Angle9normalizeEd@Base 3.4.2 + _ZN4geos9algorithm5Angle9toDegreesEd@Base 3.4.2 + _ZN4geos9algorithm5Angle9toRadiansEd@Base 3.4.2 + _ZN4geos9algorithm6Length6ofLineEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm6locate24SimplePointInAreaLocator11isContainedERKNS_4geom10CoordinateEPKNS3_8GeometryE@Base 3.8.0 + _ZN4geos9algorithm6locate24SimplePointInAreaLocator16locateInGeometryERKNS_4geom10CoordinateEPKNS3_8GeometryE@Base 3.8.0 + _ZN4geos9algorithm6locate24SimplePointInAreaLocator20locatePointInPolygonERKNS_4geom10CoordinateEPKNS3_7PolygonE@Base 3.8.0 + _ZN4geos9algorithm6locate24SimplePointInAreaLocator6locateEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm6locate24SimplePointInAreaLocator6locateERKNS_4geom10CoordinateEPKNS3_8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator10buildIndexERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitor9visitItemEPv@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD0Ev@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD1Ev@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorD2Ev@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry4initERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry5queryEddPNS_5index11ItemVisitorE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometry7addLineEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryC1ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator23IntervalIndexedGeometryC2ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocator6locateEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorC1ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorC2ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD0Ev@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD1Ev@Base 3.4.2 + _ZN4geos9algorithm6locate25IndexedPointInAreaLocatorD2Ev@Base 3.4.2 + _ZN4geos9algorithm8Centroid11addTriangleERKNS_4geom10CoordinateES5_S5_b@Base 3.4.2 + _ZN4geos9algorithm8Centroid11getCentroidERKNS_4geom8GeometryERNS2_10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm8Centroid15addLineSegmentsERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm8Centroid16setAreaBasePointERKNS_4geom10CoordinateE@Base 3.8.0 + _ZN4geos9algorithm8Centroid3addERKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9algorithm8Centroid3addERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9algorithm8Centroid5area2ERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZN4geos9algorithm8Centroid7addHoleERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm8Centroid8addPointERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm8Centroid8addShellERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9algorithm8Centroid9centroid3ERKNS_4geom10CoordinateES5_S5_RS3_@Base 3.4.2 + _ZN4geos9algorithm8Distance14pointToSegmentERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm8Distance16segmentToSegmentERKNS_4geom10CoordinateES5_S5_S5_@Base 3.8.0 + _ZN4geos9algorithm8Distance20pointToSegmentStringERKNS_4geom10CoordinateEPKNS2_18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9algorithm8Distance24pointToLinePerpendicularERKNS_4geom10CoordinateES5_S5_@Base 3.8.0 + _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom10LineStringERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 + _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom11LineSegmentERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 + _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom7PolygonERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 + _ZN4geos9algorithm8distance15DistanceToPoint15computeDistanceERKNS_4geom8GeometryERKNS3_10CoordinateERNS1_17PointPairDistanceE@Base 3.4.2 + (subst)_ZN4geos9algorithm8distance23DiscreteFrechetDistance13getSegementAtERKNS_4geom18CoordinateSequenceE{size_t}@Base 3.7.0 + (subst)_ZN4geos9algorithm8distance23DiscreteFrechetDistance17getFrecheDistanceERSt6vectorIS3_INS1_17PointPairDistanceESaIS4_EESaIS6_EE{size_t}{size_t}RKNS_4geom18CoordinateSequenceESD_@Base 3.7.0 + _ZN4geos9algorithm8distance23DiscreteFrechetDistance7computeERKNS_4geom8GeometryES6_@Base 3.7.0 + _ZN4geos9algorithm8distance23DiscreteFrechetDistance8distanceERKNS_4geom8GeometryES6_@Base 3.7.0 + _ZN4geos9algorithm8distance23DiscreteFrechetDistance8distanceERKNS_4geom8GeometryES6_d@Base 3.7.0 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD0Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD1Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterD2Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance23computeOrientedDistanceERKNS_4geom8GeometryES6_RNS1_17PointPairDistanceE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter9filter_roERKNS_4geom18CoordinateSequenceEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter9filter_roERKNS_4geom18CoordinateSequenceEm@Base 3.7.0 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD0Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD1Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterD2Ev@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance8distanceERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9algorithm8distance25DiscreteHausdorffDistance8distanceERKNS_4geom8GeometryES6_d@Base 3.4.2 + _ZN4geos9algorithmlsERSoRKNS0_11HCoordinateE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar11getLocationEiRKNS_4geom10CoordinateEPSt6vectorIPNS0_13GeometryGraphESaIS8_EE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar13getCoordinateEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar13insertEdgeEndEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar16computeLabellingEPSt6vectorIPNS0_13GeometryGraphESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar19propagateSideLabelsEi@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar20computeEdgeEndLabelsERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar22isAreaLabelsConsistentERKNS0_13GeometryGraphE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar25checkAreaLabelsConsistentEi@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar3endEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar4findEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar4rendEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar5beginEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar6rbeginEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar8getEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar9getDegreeEv@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStar9getNextCWEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStarC1Ev@Base 3.4.2 + _ZN4geos9geomgraph11EdgeEndStarC2Ev@Base 3.4.2 + _ZN4geos9geomgraph11NodeFactory8instanceEv@Base 3.4.2 + _ZN4geos9geomgraph11NodeFactoryD0Ev@Base 3.4.2 + _ZN4geos9geomgraph11NodeFactoryD1Ev@Base 3.4.2 + _ZN4geos9geomgraph11NodeFactoryD2Ev@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph10getNodeMapEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph10insertEdgeEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph10printEdgesB5cxx11Ev@Base 3.5.1 + _ZN4geos9geomgraph11PlanarGraph11findEdgeEndEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph11getEdgeEndsEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph14isBoundaryNodeEiRKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph15getEdgeIteratorEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph15getNodeIteratorEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph20linkAllDirectedEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph20matchInSameDirectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph23findEdgeInSameDirectionERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph23linkResultDirectedEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph3addEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph4findERNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph7addNodeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph7addNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph8addEdgesERKSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph8findEdgeERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraph8getNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphC1ERKNS0_11NodeFactoryE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphC1Ev@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphC2ERKNS0_11NodeFactoryE@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphC2Ev@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphD0Ev@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphD1Ev@Base 3.4.2 + _ZN4geos9geomgraph11PlanarGraphD2Ev@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge10getNextMinEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge10isInResultEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge10isLineEdgeEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge10setNextMinEPS1_@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge10setVisitedEb@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge11depthFactorENS_4geom8LocationES3_@Base 3.8.0 + _ZN4geos9geomgraph12DirectedEdge11getEdgeRingEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge11setEdgeRingEPNS0_8EdgeRingE@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge11setInResultEb@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge13setEdgeDepthsEii@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge14getMinEdgeRingEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge14setMinEdgeRingEPNS0_8EdgeRingE@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge14setVisitedEdgeEb@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge18isInteriorAreaEdgeEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge20computeDirectedLabelEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge6getSymEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge6setSymEPS1_@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge7getNextEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge7setNextEPS1_@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge8getDepthEi@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge8setDepthEii@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge9isForwardEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge9isVisitedEv@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdge9printEdgeB5cxx11Ev@Base 3.5.1 + _ZN4geos9geomgraph12DirectedEdgeC1EPNS0_4EdgeEb@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdgeC2EPNS0_4EdgeEb@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdgeD0Ev@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdgeD1Ev@Base 3.4.2 + _ZN4geos9geomgraph12DirectedEdgeD2Ev@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph10addPolygonEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph11getGeometryEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph11insertPointEiRKNS_4geom10CoordinateENS2_8LocationE@Base 3.8.0 + _ZN4geos9geomgraph13GeometryGraph12isInBoundaryEi@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph13addCollectionEPKNS_4geom18GeometryCollectionE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph13addLineStringEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph14addPolygonRingEPKNS_4geom10LinearRingENS2_8LocationES6_@Base 3.8.0 + _ZN4geos9geomgraph13GeometryGraph15getInvalidPointEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph15hasTooFewPointsEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph16computeSelfNodesERNS_9algorithm15LineIntersectorEbPKNS_4geom8EnvelopeE@Base 3.5.0 + _ZN4geos9geomgraph13GeometryGraph16computeSelfNodesERNS_9algorithm15LineIntersectorEbbPKNS_4geom8EnvelopeE@Base 3.5.1 + _ZN4geos9geomgraph13GeometryGraph16getBoundaryNodesERSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph16getBoundaryNodesEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph17computeSplitEdgesEPSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph17determineBoundaryERKNS_9algorithm16BoundaryNodeRuleEi@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph17determineBoundaryEi@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph17getBoundaryPointsEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph19insertBoundaryPointEiRKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph23addSelfIntersectionNodeEiRKNS_4geom10CoordinateENS2_8LocationE@Base 3.8.0 + _ZN4geos9geomgraph13GeometryGraph24addSelfIntersectionNodesEi@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph24computeEdgeIntersectionsEPS1_PNS_9algorithm15LineIntersectorEbPKNS_4geom8EnvelopeE@Base 3.5.0 + _ZN4geos9geomgraph13GeometryGraph24createEdgeSetIntersectorEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph7addEdgeEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph8addPointEPKNS_4geom5PointE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph8addPointERNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph8findEdgeEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraph8getEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC1EiPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC1EiPKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC1Ev@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC2EiPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC2EiPKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphC2Ev@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphD0Ev@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphD1Ev@Base 3.4.2 + _ZN4geos9geomgraph13GeometryGraphD2Ev@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponent10setCoveredEb@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponent10setVisitedEb@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponent11setInResultEb@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponent8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponentC1ERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponentC1Ev@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponentC2ERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph14GraphComponentC2Ev@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar13computeDepthsEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar13computeDepthsESt23_Rb_tree_const_iteratorIPNS0_7EdgeEndEES5_i@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar14mergeSymLabelsEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar15updateLabellingERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar16computeLabellingEPSt6vectorIPNS0_13GeometryGraphESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar16getRightmostEdgeEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar17getOutgoingDegreeEPNS0_8EdgeRingE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar17getOutgoingDegreeEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar18getResultAreaEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar20findCoveredLineEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar20linkAllDirectedEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar23linkResultDirectedEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar24linkMinimalDirectedEdgesEPNS0_8EdgeRingE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStar6insertEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStarD0Ev@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStarD1Ev@Base 3.4.2 + _ZN4geos9geomgraph16DirectedEdgeStarD2Ev@Base 3.4.2 + _ZN4geos9geomgraph16TopologyLocation11setLocationENS_4geom8LocationE@Base 3.8.0 + (subst)_ZN4geos9geomgraph16TopologyLocation11setLocationE{size_t}NS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocation12setLocationsENS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocation15setAllLocationsENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocation21setAllLocationsIfNullENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocation4flipEv@Base 3.4.2 + _ZN4geos9geomgraph16TopologyLocation5mergeERKS1_@Base 3.4.2 + _ZN4geos9geomgraph16TopologyLocationC1ENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocationC1ENS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocationC1ERKS1_@Base 3.4.2 + _ZN4geos9geomgraph16TopologyLocationC2ENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocationC2ENS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph16TopologyLocationC2ERKS1_@Base 3.4.2 + _ZN4geos9geomgraph16TopologyLocationaSERKS1_@Base 3.4.2 + _ZN4geos9geomgraph19EdgeNodingValidator16toSegmentStringsERSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph19EdgeNodingValidatorD1Ev@Base 3.4.2 + _ZN4geos9geomgraph19EdgeNodingValidatorD2Ev@Base 3.4.2 + _ZN4geos9geomgraph20EdgeIntersectionList12addEndpointsEv@Base 3.4.2 + _ZN4geos9geomgraph20EdgeIntersectionList13addSplitEdgesEPSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph20EdgeIntersectionList15createSplitEdgeEPKNS0_16EdgeIntersectionES4_@Base 3.8.0 + (subst)_ZN4geos9geomgraph20EdgeIntersectionList3addERKNS_4geom10CoordinateE{size_t}d@Base 3.8.0 + _ZN4geos9geomgraph20EdgeIntersectionListC1EPKNS0_4EdgeE@Base 3.8.0 + _ZN4geos9geomgraph20EdgeIntersectionListC2EPKNS0_4EdgeE@Base 3.8.0 + (optional=templinst)_ZN4geos9geomgraph26collect_intersecting_edgesIN9__gnu_cxx17__normal_iteratorIPPNS0_4EdgeESt6vectorIS5_SaIS5_EEEES9_EEvPKNS_4geom8EnvelopeET_SF_RT0_@Base 3.5.0 + _ZN4geos9geomgraph4Edge11getEnvelopeEv@Base 3.4.2 + _ZN4geos9geomgraph4Edge11setIsolatedEb@Base 3.4.2 + _ZN4geos9geomgraph4Edge13setDepthDeltaEi@Base 3.4.2 + (subst)_ZN4geos9geomgraph4Edge15addIntersectionEPNS_9algorithm15LineIntersectorE{size_t}{size_t}{size_t}@Base 3.8.0 + (subst)_ZN4geos9geomgraph4Edge16addIntersectionsEPNS_9algorithm15LineIntersectorE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9geomgraph4Edge16getCollapsedEdgeEv@Base 3.4.2 + _ZN4geos9geomgraph4Edge20getMonotoneChainEdgeEv@Base 3.4.2 + _ZN4geos9geomgraph4Edge23getEdgeIntersectionListEv@Base 3.4.2 + _ZN4geos9geomgraph4Edge8getDepthEv@Base 3.4.2 + _ZN4geos9geomgraph4Edge8updateIMERKNS0_5LabelERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9geomgraph4Edge9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9geomgraph4EdgeC1EPNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9geomgraph4EdgeC1EPNS_4geom18CoordinateSequenceERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph4EdgeC2EPNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9geomgraph4EdgeC2EPNS_4geom18CoordinateSequenceERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph4EdgeD0Ev@Base 3.4.2 + _ZN4geos9geomgraph4EdgeD1Ev@Base 3.4.2 + _ZN4geos9geomgraph4EdgeD2Ev@Base 3.4.2 + _ZN4geos9geomgraph4Node10mergeLabelERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph4Node10mergeLabelERKS1_@Base 3.4.2 + _ZN4geos9geomgraph4Node16setLabelBoundaryEi@Base 3.4.2 + _ZN4geos9geomgraph4Node21computeMergedLocationERKNS0_5LabelEi@Base 3.4.2 + _ZN4geos9geomgraph4Node3addEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph4Node4addZEd@Base 3.4.2 + _ZN4geos9geomgraph4Node5printB5cxx11Ev@Base 3.5.1 + _ZN4geos9geomgraph4Node8getEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph4Node8setLabelEiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph4Node9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9geomgraph4NodeC1ERKNS_4geom10CoordinateEPNS0_11EdgeEndStarE@Base 3.4.2 + _ZN4geos9geomgraph4NodeC2ERKNS_4geom10CoordinateEPNS0_11EdgeEndStarE@Base 3.4.2 + _ZN4geos9geomgraph4NodeD0Ev@Base 3.4.2 + _ZN4geos9geomgraph4NodeD1Ev@Base 3.4.2 + _ZN4geos9geomgraph4NodeD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5Depth15depthAtLocationENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Depth3addERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph5Depth3addEiiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Depth8setDepthEiii@Base 3.4.2 + _ZN4geos9geomgraph5Depth9normalizeEv@Base 3.4.2 + _ZN4geos9geomgraph5DepthC1Ev@Base 3.4.2 + _ZN4geos9geomgraph5DepthC2Ev@Base 3.4.2 + _ZN4geos9geomgraph5DepthD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5DepthD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5DepthD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5Label11setLocationEiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Label11setLocationEiiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Label11toLineLabelERKS1_@Base 3.4.2 + _ZN4geos9geomgraph5Label15setAllLocationsEiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Label21setAllLocationsIfNullENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Label21setAllLocationsIfNullEiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5Label4flipEv@Base 3.4.2 + _ZN4geos9geomgraph5Label5mergeERKS1_@Base 3.4.2 + _ZN4geos9geomgraph5Label6toLineEi@Base 3.4.2 + _ZN4geos9geomgraph5LabelC1ENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5LabelC1ENS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph5LabelC1ERKS1_@Base 3.4.2 + _ZN4geos9geomgraph5LabelC1EiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5LabelC1EiNS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph5LabelC1Ev@Base 3.4.2 + _ZN4geos9geomgraph5LabelC2ENS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5LabelC2ENS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph5LabelC2ERKS1_@Base 3.4.2 + _ZN4geos9geomgraph5LabelC2EiNS_4geom8LocationE@Base 3.8.0 + _ZN4geos9geomgraph5LabelC2EiNS_4geom8LocationES3_S3_@Base 3.8.0 + _ZN4geos9geomgraph5LabelC2Ev@Base 3.4.2 + _ZN4geos9geomgraph5LabelaSERKS1_@Base 3.4.2 + _ZN4geos9geomgraph5index13MonotoneChainD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index13MonotoneChainD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index13MonotoneChainD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index14SweepLineEvent5printB5cxx11Ev@Base 3.5.1 + _ZN4geos9geomgraph5index14SweepLineEvent9compareToEPS2_@Base 3.4.2 + _ZN4geos9geomgraph5index14SweepLineEventC1EPvdPS2_PNS1_17SweepLineEventOBJE@Base 3.4.2 + _ZN4geos9geomgraph5index14SweepLineEventC2EPvdPS2_PNS1_17SweepLineEventOBJE@Base 3.4.2 + _ZN4geos9geomgraph5index16SweepLineSegment20computeIntersectionsEPS2_PNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index16SweepLineSegment7getMaxXEv@Base 3.4.2 + _ZN4geos9geomgraph5index16SweepLineSegment7getMinXEv@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index16SweepLineSegmentC1EPNS0_4EdgeE{size_t}@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index16SweepLineSegmentC2EPNS0_4EdgeE{size_t}@Base 3.8.0 + _ZN4geos9geomgraph5index16SweepLineSegmentD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index16SweepLineSegmentD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index16SweepLineSegmentD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index17MonotoneChainEdge14getCoordinatesEv@Base 3.4.2 + _ZN4geos9geomgraph5index17MonotoneChainEdge15getStartIndexesEv@Base 3.4.2 + _ZN4geos9geomgraph5index17MonotoneChainEdge17computeIntersectsERKS2_RNS1_18SegmentIntersectorE@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index17MonotoneChainEdge25computeIntersectsForChainE{size_t}RKS2_{size_t}RNS1_18SegmentIntersectorE@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index17MonotoneChainEdge25computeIntersectsForChainE{size_t}{size_t}RKS2_{size_t}{size_t}RNS1_18SegmentIntersectorE@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index17MonotoneChainEdge7getMaxXE{size_t}@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index17MonotoneChainEdge7getMinXE{size_t}@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index17MonotoneChainEdge8overlapsE{size_t}{size_t}RKS2_{size_t}{size_t}@Base 3.8.0 + _ZN4geos9geomgraph5index17MonotoneChainEdgeC1EPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph5index17MonotoneChainEdgeC2EPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersector15hasIntersectionEv@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersector15isBoundaryPointEPNS_9algorithm15LineIntersectorEPSt6vectorIPNS0_4NodeESaIS8_EE@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index18SegmentIntersector15isBoundaryPointEPNS_9algorithm15LineIntersectorERSt5arrayIPSt6vectorIPNS0_4NodeESaIS9_EEL{size_t}2EE@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index18SegmentIntersector16addIntersectionsEPNS0_4EdgeE{size_t}S4_{size_t}@Base 3.8.0 + _ZN4geos9geomgraph5index18SegmentIntersector16setBoundaryNodesEPSt6vectorIPNS0_4NodeESaIS5_EES8_@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index18SegmentIntersector18isAdjacentSegmentsE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9geomgraph5index18SegmentIntersector20setIsDoneIfProperIntEb@Base 3.5.1 + _ZN4geos9geomgraph5index18SegmentIntersector21hasProperIntersectionEv@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index18SegmentIntersector21isTrivialIntersectionEPNS0_4EdgeE{size_t}S4_{size_t}@Base 3.8.0 + _ZN4geos9geomgraph5index18SegmentIntersector26getProperIntersectionPointEv@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersector29hasProperInteriorIntersectionEv@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersector9getIsDoneEv@Base 3.5.1 + _ZN4geos9geomgraph5index18SegmentIntersectorD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersectorD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index18SegmentIntersectorD2Ev@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index20MonotoneChainIndexer12findChainEndEPKNS_4geom18CoordinateSequenceE{size_t}@Base 3.8.0 + (subst)_ZN4geos9geomgraph5index20MonotoneChainIndexer20getChainStartIndicesEPKNS_4geom18CoordinateSequenceERSt6vectorI{size_t}SaI{size_t}EE@Base 3.8.0 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector17computeIntersectsEPNS0_4EdgeES4_PNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorC1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorC2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index24SimpleEdgeSetIntersectorD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector13prepareEventsEv@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index26SimpleSweepLineIntersector15processOverlapsE{size_t}{size_t}PNS1_14SweepLineEventEPNS1_18SegmentIntersectorE@Base 3.8.0 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPNS0_4EdgeEPv@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EE@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EEPv@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorC1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorC2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index26SimpleSweepLineIntersectorD2Ev@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector13prepareEventsEv@Base 3.4.2 + (subst)_ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector15processOverlapsE{size_t}{size_t}PNS1_14SweepLineEventEPNS1_18SegmentIntersectorE@Base 3.8.0 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EEPNS1_18SegmentIntersectorEb@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector20computeIntersectionsEPSt6vectorIPNS0_4EdgeESaIS5_EES8_PNS1_18SegmentIntersectorE@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPNS0_4EdgeEPv@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EE@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersector3addEPSt6vectorIPNS0_4EdgeESaIS5_EEPv@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD0Ev@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD1Ev@Base 3.4.2 + _ZN4geos9geomgraph5index28SimpleMCSweepLineIntersectorD2Ev@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd11getQuadrantEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd12computeLabelERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd13getCoordinateEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd21getDirectedCoordinateEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd4initERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd5getDxEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd5getDyEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd7getNodeEv@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEnd7setNodeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeERKNS_4geom10CoordinateES7_@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC1EPNS0_4EdgeERKNS_4geom10CoordinateES7_RKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC1Ev@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeERKNS_4geom10CoordinateES7_@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC2EPNS0_4EdgeERKNS_4geom10CoordinateES7_RKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndC2Ev@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndD0Ev@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndD1Ev@Base 3.4.2 + _ZN4geos9geomgraph7EdgeEndD2Ev@Base 3.4.2 + _ZN4geos9geomgraph7NodeMap3addEPNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraph7NodeMap7addNodeEPNS0_4NodeE@Base 3.4.2 + _ZN4geos9geomgraph7NodeMap7addNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph7NodeMapC1ERKNS0_11NodeFactoryE@Base 3.4.2 + _ZN4geos9geomgraph7NodeMapC2ERKNS0_11NodeFactoryE@Base 3.4.2 + _ZN4geos9geomgraph7NodeMapD0Ev@Base 3.4.2 + _ZN4geos9geomgraph7NodeMapD1Ev@Base 3.4.2 + _ZN4geos9geomgraph7NodeMapD2Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeList3addEPNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeList3getEi@Base 3.4.2 + _ZN4geos9geomgraph8EdgeList5printB5cxx11Ev@Base 3.5.1 + _ZN4geos9geomgraph8EdgeList6addAllERKSt6vectorIPNS0_4EdgeESaIS4_EE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeList9clearListEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeListD0Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeListD1Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeListD2Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing10isIsolatedEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing10mergeLabelERKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing10mergeLabelERKNS0_5LabelEi@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing11computeRingEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing11setInResultEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing13computePointsEPNS0_12DirectedEdgeE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing13containsPointERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing13getLinearRingEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing16getMaxNodeDegreeEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing20computeMaxNodeDegreeEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing6isHoleEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing7addHoleEPS1_@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing7isShellEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing8getEdgesEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing8getLabelEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing8getShellEv@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing8setShellEPS1_@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing9addPointsEPNS0_4EdgeEbb@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRing9toPolygonEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRingC1EPNS0_12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRingC2EPNS0_12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRingD0Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRingD1Ev@Base 3.4.2 + _ZN4geos9geomgraph8EdgeRingD2Ev@Base 3.4.2 + _ZN4geos9geomgraph8Position8oppositeEi@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant10isNorthernEi@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant10isOppositeEii@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant13isInHalfPlaneEii@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant15commonHalfPlaneEii@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant8quadrantERKNS_4geom10CoordinateES5_@Base 3.4.2 + _ZN4geos9geomgraph8Quadrant8quadrantEdd@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_11EdgeEndStarE@Base 3.6.0 + _ZN4geos9geomgraphlsERSoRKNS0_16TopologyLocationE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_20EdgeIntersectionListE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_4EdgeE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_4NodeE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_5LabelE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_7EdgeEndE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_8EdgeListE@Base 3.4.2 + _ZN4geos9geomgraphlsERSoRKNS0_8EdgeRingE@Base 3.4.2 + _ZN4geos9linearref14LinearIterator15loadCurrentLineEv@Base 3.4.2 + _ZN4geos9linearref14LinearIterator21segmentEndVertexIndexERKNS0_14LinearLocationE@Base 3.4.2 + _ZN4geos9linearref14LinearIterator4nextEv@Base 3.4.2 + _ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 + (subst)_ZN4geos9linearref14LinearIteratorC1EPKNS_4geom8GeometryE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 + (subst)_ZN4geos9linearref14LinearIteratorC2EPKNS_4geom8GeometryE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9linearref14LinearLocation12snapToVertexEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9linearref14LinearLocation14getEndLocationEPKNS_4geom8GeometryE@Base 3.4.2 + (subst)_ZN4geos9linearref14LinearLocation21compareLocationValuesE{size_t}{size_t}d{size_t}{size_t}d@Base 3.8.0 + _ZN4geos9linearref14LinearLocation27pointAlongSegmentByFractionERKNS_4geom10CoordinateES5_d@Base 3.4.2 + _ZN4geos9linearref14LinearLocation5clampEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref14LinearLocation8setToEndEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref14LinearLocation9normalizeEv@Base 3.4.2 + (subst)_ZN4geos9linearref14LinearLocationC1E{size_t}d@Base 3.8.0 + (subst)_ZN4geos9linearref14LinearLocationC1E{size_t}{size_t}d@Base 3.8.0 + (subst)_ZN4geos9linearref14LinearLocationC2E{size_t}d@Base 3.8.0 + (subst)_ZN4geos9linearref14LinearLocationC2E{size_t}{size_t}d@Base 3.8.0 + _ZN4geos9linearref17LengthIndexedLineC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref17LengthIndexedLineC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref17LengthLocationMap9getLengthEPKNS_4geom8GeometryERKNS0_14LinearLocationE@Base 3.4.2 + _ZN4geos9linearref17LengthLocationMapC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref17LengthLocationMapC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref18LengthIndexOfPoint12indexOfAfterEPKNS_4geom8GeometryERKNS2_10CoordinateEd@Base 3.4.2 + _ZN4geos9linearref18LengthIndexOfPoint7indexOfEPKNS_4geom8GeometryERKNS2_10CoordinateE@Base 3.4.2 + _ZN4geos9linearref18LengthIndexOfPointC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref18LengthIndexOfPointC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref19LocationIndexOfLine9indicesOfEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9linearref19LocationIndexOfLineC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref19LocationIndexOfLineC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref20LocationIndexOfPoint12indexOfAfterEPKNS_4geom8GeometryERKNS2_10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 + _ZN4geos9linearref20LocationIndexOfPoint7indexOfEPKNS_4geom8GeometryERKNS2_10CoordinateE@Base 3.4.2 + _ZN4geos9linearref20LocationIndexOfPointC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref20LocationIndexOfPointC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocation11computeLineERKNS0_14LinearLocationES4_@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocation13computeLinearERKNS0_14LinearLocationES4_@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocation7extractEPKNS_4geom8GeometryERKNS0_14LinearLocationES8_@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocation7extractERKNS0_14LinearLocationES4_@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocation7reverseEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocationC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref21ExtractLineByLocationC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder11getGeometryEv@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder18setFixInvalidLinesEb@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder21setIgnoreInvalidLinesEb@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder3addERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder3addERKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilder7endLineEv@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilderD1Ev@Base 3.4.2 + _ZN4geos9linearref21LinearGeometryBuilderD2Ev@Base 3.4.2 + _ZN4geos9linearreflsERSoRKNS0_14LinearLocationE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp11addEndpointERSt3mapIPKNS_4geom10CoordinateEPNS0_12EndpointInfoENS3_18CoordinateLessThenESaISt4pairIKS6_S8_EEES6_b@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp13computeSimpleEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation10IsSimpleOp17isSimplePolygonalEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation10IsSimpleOp18isSimpleMultiPointERKNS_4geom10MultiPointE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp22isSimpleLinearGeometryEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp26hasNonEndpointIntersectionERNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp26isSimpleGeometryCollectionEPKNS_4geom18GeometryCollectionE@Base 3.8.0 + _ZN4geos9operation10IsSimpleOp29hasClosedEndpointIntersectionERNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom10MultiPointE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp8isSimpleEPKNS_4geom15MultiLineStringE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOp8isSimpleEv@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC1ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC1ERKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC1Ev@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC2ERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC2ERKNS_4geom8GeometryERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation10IsSimpleOpC2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer10getDanglesEv@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer10hasDanglesEv@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer10polygonizeEv@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer11getCutEdgesEv@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer11getPolygonsEv@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer11hasCutEdgesEv@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer14findValidRingsERKSt6vectorIPNS1_8EdgeRingESaIS5_EERS7_RS3_ISt10unique_ptrINS_4geom10LineStringESt14default_deleteISD_EESaISG_EE@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdder9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderC1EPS2_@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderC2EPS2_@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD0Ev@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD1Ev@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15LineStringAdderD2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer15extractPolygonsERSt6vectorIPNS1_8EdgeRingESaIS5_EEb@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer15findOuterShellsERSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer18findDisjointShellsEv@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer18findShellsAndHolesERKSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer19getInvalidRingLinesEv@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer19hasInvalidRingLinesEv@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer21allInputsFormPolygonsEv@Base 3.8.0 + _ZN4geos9operation10polygonize11Polygonizer3addEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer3addEPNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer3addEPSt6vectorIPKNS_4geom8GeometryESaIS7_EE@Base 3.4.2 + _ZN4geos9operation10polygonize11Polygonizer3addEPSt6vectorIPNS_4geom8GeometryESaIS6_EE@Base 3.4.2 + _ZN4geos9operation10polygonize11PolygonizerC1Eb@Base 3.8.0 + _ZN4geos9operation10polygonize11PolygonizerC2Eb@Base 3.8.0 + _ZN4geos9operation10polygonize11PolygonizerD1Ev@Base 3.4.2 + _ZN4geos9operation10polygonize11PolygonizerD2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize12HoleAssigner10buildIndexEv@Base 3.8.0 + _ZN4geos9operation10polygonize12HoleAssigner10findShellsERKNS_4geom8EnvelopeE@Base 3.8.0 + _ZN4geos9operation10polygonize12HoleAssigner17assignHoleToShellEPNS1_8EdgeRingE@Base 3.8.0 + _ZN4geos9operation10polygonize12HoleAssigner19assignHolesToShellsERSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.8.0 + _ZN4geos9operation10polygonize12HoleAssigner19assignHolesToShellsERSt6vectorIPNS1_8EdgeRingESaIS5_EES8_@Base 3.8.0 + _ZN4geos9operation10polygonize12HoleAssigner22findEdgeRingContainingEPNS1_8EdgeRingE@Base 3.8.0 + _ZN4geos9operation10polygonize14PolygonizeEdge7getLineEv@Base 3.4.2 + _ZN4geos9operation10polygonize14PolygonizeEdgeC1EPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation10polygonize14PolygonizeEdgeC2EPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation10polygonize14PolygonizeEdgeD0Ev@Base 3.4.2 + _ZN4geos9operation10polygonize14PolygonizeEdgeD1Ev@Base 3.4.2 + _ZN4geos9operation10polygonize14PolygonizeEdgeD2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph12findEdgeRingEPNS1_22PolygonizeDirectedEdgeE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph12getEdgeRingsERSt6vectorIPNS1_8EdgeRingESaIS5_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph13deleteDanglesERSt6vectorIPKNS_4geom10LineStringESaIS7_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph14deleteAllEdgesEPNS_11planargraph4NodeE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph14deleteCutEdgesERSt6vectorIPKNS_4geom10LineStringESaIS7_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph18computeNextCWEdgesEPNS_11planargraph4NodeE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph18computeNextCWEdgesEv@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph19computeNextCCWEdgesEPNS_11planargraph4NodeEl@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph19getDegreeNonDeletedEPNS_11planargraph4NodeE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph20findLabeledEdgeRingsERSt6vectorIPNS_11planargraph12DirectedEdgeESaIS6_EERS3_IPNS1_22PolygonizeDirectedEdgeESaISB_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph21findIntersectionNodesEPNS1_22PolygonizeDirectedEdgeElRSt6vectorIPNS_11planargraph4NodeESaIS8_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph32convertMaximalToMinimalEdgeRingsERSt6vectorIPNS1_22PolygonizeDirectedEdgeESaIS5_EE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph5labelERSt6vectorIPNS1_22PolygonizeDirectedEdgeESaIS5_EEl@Base 3.8.0 + _ZN4geos9operation10polygonize15PolygonizeGraph5labelERSt6vectorIPNS_11planargraph12DirectedEdgeESaIS6_EEl@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph7addEdgeEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph7getNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraph9getDegreeEPNS_11planargraph4NodeEl@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraphC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraphC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraphD0Ev@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraphD1Ev@Base 3.4.2 + _ZN4geos9operation10polygonize15PolygonizeGraphD2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdge7setNextEPS2_@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdge7setRingEPNS1_8EdgeRingE@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdge8setLabelEl@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeC1EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeC2EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD0Ev@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD1Ev@Base 3.4.2 + _ZN4geos9operation10polygonize22PolygonizeDirectedEdgeD2Ev@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing10getPolygonEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing11computeHoleEv@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing11ptNotInListEPKNS_4geom18CoordinateSequenceES6_@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing13getLineStringEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing14getCoordinatesEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing15getRingInternalEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing16getRingOwnershipEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing18findDirEdgesInRingEPNS1_22PolygonizeDirectedEdgeE@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing22findEdgeRingContainingERKSt6vectorIPS2_SaIS4_EE@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing23updateIncludedRecursiveEv@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing3addEPKNS1_22PolygonizeDirectedEdgeE@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing5buildEPNS1_22PolygonizeDirectedEdgeE@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing7addEdgeEPKNS_4geom18CoordinateSequenceEbPNS3_23CoordinateArraySequenceE@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing7addHoleEPNS_4geom10LinearRingE@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing7addHoleEPS2_@Base 3.8.0 + _ZN4geos9operation10polygonize8EdgeRing7isValidEv@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRing8isInListERKNS_4geom10CoordinateEPKNS3_18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRingC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation10polygonize8EdgeRingC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation10polygonize9BuildArea5buildEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation11sharedpaths13SharedPathsOp10clearEdgesERSt6vectorIPNS_4geom10LineStringESaIS6_EE@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOp13sharedPathsOpERKNS_4geom8GeometryES6_RSt6vectorIPNS3_10LineStringESaIS9_EESC_@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOp14getSharedPathsERSt6vectorIPNS_4geom10LineStringESaIS6_EES9_@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOp16checkLinealInputERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOp23findLinearIntersectionsERSt6vectorIPNS_4geom10LineStringESaIS6_EE@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOp9isForwardERKNS_4geom10LineStringERKNS3_8GeometryE@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOpC1ERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation11sharedpaths13SharedPathsOpC2ERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation12EndpointInfoC1ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation12EndpointInfoC2ERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation12intersection13clip_to_edgesERdS2_ddRKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection14normalize_ringERSt6vectorINS_4geom10CoordinateESaIS4_EE@Base 3.5.0 + (subst)_ZN4geos9operation12intersection14reverse_pointsERSt6vectorINS_4geom10CoordinateESaIS4_EE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9operation12intersection21RectangleIntersection10clip_pointEPKNS_4geom5PointERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection12clipBoundaryERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection12clipBoundaryEv@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection12clip_polygonEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection15clip_linestringEPKNS_4geom10LineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection15clip_multipointEPKNS_4geom10MultiPointERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection17clip_multipolygonEPKNS_4geom12MultiPolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection20clip_multilinestringEPKNS_4geom15MultiLineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection21clip_linestring_partsEPKNS_4geom10LineStringERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection23clip_geometrycollectionEPKNS_4geom18GeometryCollectionERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection24clip_polygon_to_polygonsEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection27clip_polygon_to_linestringsEPKNS_4geom7PolygonERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection4clipERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection4clipEv@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersection9clip_geomEPKNS_4geom8GeometryERNS1_28RectangleIntersectionBuilderERKNS1_9RectangleEb@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersectionC1ERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection21RectangleIntersectionC2ERKNS_4geom8GeometryERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder10close_ringERKNS1_9RectangleEPSt6vectorINS_4geom10CoordinateESaIS8_EE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder12reverseLinesEv@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder14close_boundaryERKNS1_9RectangleEPSt6vectorINS_4geom10CoordinateESaIS8_EEdddd@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder17reconnectPolygonsERKNS1_9RectangleE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom10LineStringE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom5PointE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder3addEPNS_4geom7PolygonE@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder5buildEv@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder5clearEv@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder7releaseERS2_@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilder9reconnectEv@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilderD1Ev@Base 3.5.0 + _ZN4geos9operation12intersection28RectangleIntersectionBuilderD2Ev@Base 3.5.0 + _ZN4geos9operation12intersection8distanceERKNS1_9RectangleERKSt6vectorINS_4geom10CoordinateESaIS7_EE@Base 3.5.0 + _ZN4geos9operation12intersection8distanceERKNS1_9RectangleERKSt6vectorINS_4geom10CoordinateESaIS7_EEPKNS6_10LineStringE@Base 3.5.0 + _ZN4geos9operation12intersection8distanceERKNS1_9RectangleEdddd@Base 3.5.0 + _ZN4geos9operation12intersection9RectangleC1Edddd@Base 3.5.0 + _ZN4geos9operation12intersection9RectangleC2Edddd@Base 3.5.0 + _ZN4geos9operation22GeometryGraphOperation23setComputationPrecisionEPKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC1EPKNS_4geom8GeometryES5_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationC2EPKNS_4geom8GeometryES5_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationD0Ev@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationD1Ev@Base 3.4.2 + _ZN4geos9operation22GeometryGraphOperationD2Ev@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester13getCoordinateEv@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom12MultiPolygonE@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom15MultiLineStringE@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom18GeometryCollectionE@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation5valid19RepeatedPointTester16hasRepeatedPointEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTester15getInvalidPointEv@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTester17hasDuplicateRingsEv@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTester20isNodeConsistentAreaEv@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTester30isNodeEdgeAreaLabelsConsistentEv@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTesterC1EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid20ConsistentAreaTesterC2EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid20RepeatedPointRemover20removeRepeatedPointsEPKNS_4geom18CoordinateSequenceE@Base 3.8.0 + _ZN4geos9operation5valid22SimpleNestedRingTester11isNonNestedEv@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester13getCoordinateEv@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester14buildEdgeRingsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EERS3_IPNS4_8EdgeRingESaISB_EE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester17visitInteriorRingEPKNS_4geom10LineStringERNS_9geomgraph11PlanarGraphE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester18findDifferentPointEPKNS_4geom18CoordinateSequenceERKNS3_10CoordinateE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester19visitShellInteriorsEPKNS_4geom8GeometryERNS_9geomgraph11PlanarGraphE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester20isInteriorsConnectedEv@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester21hasUnvisitedShellEdgeEPSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester24setInteriorEdgesInResultERNS_9geomgraph11PlanarGraphE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTester24visitLinkedDirectedEdgesEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTesterC1ERNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid23ConnectedInteriorTesterC2ERNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid23IndexedNestedRingTester10buildIndexEv@Base 3.4.2 + _ZN4geos9operation5valid23IndexedNestedRingTester11isNonNestedEv@Base 3.4.2 + _ZN4geos9operation5valid23IndexedNestedRingTesterD1Ev@Base 3.4.2 + _ZN4geos9operation5valid23IndexedNestedRingTesterD2Ev@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationError10getMessageB5cxx11Ev@Base 3.5.1 + _ZN4geos9operation5valid23TopologyValidationError12getErrorTypeEv@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationError13getCoordinateEv@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationError6errMsgE@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationError8toStringB5cxx11Ev@Base 3.5.1 + _ZN4geos9operation5valid23TopologyValidationErrorC1Ei@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationErrorC1EiRKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationErrorC2Ei@Base 3.4.2 + _ZN4geos9operation5valid23TopologyValidationErrorC2EiRKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTester11isNonNestedEv@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTester13buildQuadtreeEv@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTester14getNestedPointEv@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTester3addEPKNS_4geom10LinearRingE@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTesterC1EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTesterC2EPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTesterD1Ev@Base 3.4.2 + _ZN4geos9operation5valid24QuadtreeNestedRingTesterD2Ev@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester10buildIndexEv@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester11isNonNestedEv@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapAction7overlapEPNS_5index9sweepline17SweepLineIntervalES7_@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionC1EPS2_@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionC2EPS2_@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD0Ev@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD1Ev@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionD2Ev@Base 3.4.2 + _ZN4geos9operation5valid25SweeplineNestedRingTester8isInsideEPNS_4geom10LinearRingES5_@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom10LinearRingE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom12MultiPolygonE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom18GeometryCollectionE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom5PointE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp10checkValidEv@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp13findPtNotNodeEPKNS_4geom18CoordinateSequenceEPKNS3_10LinearRingEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp15checkClosedRingEPKNS_4geom10LinearRingE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp16checkClosedRingsEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp17checkHolesInShellEPKNS_4geom7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp17checkTooFewPointsEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp18getValidationErrorEv@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp19checkConsistentAreaEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp19checkHolesNotNestedEPKNS_4geom7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp19checkShellNotNestedEPKNS_4geom10LinearRingEPKNS3_7PolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp20checkShellInsideHoleEPKNS_4geom10LinearRingES6_PNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp20checkShellsNotNestedEPKNS_4geom12MultiPolygonEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp23checkConnectedInteriorsERNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp23checkInvalidCoordinatesEPKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp23checkInvalidCoordinatesEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp27checkNoSelfIntersectingRingERNS_9geomgraph20EdgeIntersectionListE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp28checkNoSelfIntersectingRingsEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp7isValidERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp7isValidERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOp7isValidEv@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOpD0Ev@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOpD1Ev@Base 3.4.2 + _ZN4geos9operation5valid9IsValidOpD2Ev@Base 3.4.2 + _ZN4geos9operation5valid9MakeValid5buildEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation6buffer13BufferBuilder10depthDeltaERKNS_9geomgraph5LabelE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder14buildSubgraphsERKSt6vectorIPNS1_14BufferSubgraphESaIS5_EERNS0_7overlay14PolygonBuilderE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder15createSubgraphsEPNS_9geomgraph11PlanarGraphERSt6vectorIPNS1_14BufferSubgraphESaIS8_EE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder16insertUniqueEdgeEPNS_9geomgraph4EdgeE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder17computeNodedEdgesERSt6vectorIPNS_6noding13SegmentStringESaIS6_EEPKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder21bufferLineSingleSidedEPKNS_4geom8GeometryEdb@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilder8getNoderEPKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilderD1Ev@Base 3.4.2 + _ZN4geos9operation6buffer13BufferBuilderD2Ev@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph11getEnvelopeEv@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph12addReachableEPNS_9geomgraph4NodeE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph12computeDepthEi@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph13computeDepthsEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph13copySymDepthsEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph15findResultEdgesEv@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph16computeNodeDepthEPNS_9geomgraph4NodeE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph17clearVisitedEdgesEv@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph3addEPNS_9geomgraph4NodeEPSt6vectorIS5_SaIS5_EE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph6createEPNS_9geomgraph4NodeE@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph8containsERSt3setIPNS_9geomgraph4NodeESt4lessIS6_ESaIS6_EES6_@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraph9compareToEPS2_@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraphC1Ev@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraphC2Ev@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraphD1Ev@Base 3.4.2 + _ZN4geos9operation6buffer14BufferSubgraphD2Ev@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParameters19DEFAULT_MITRE_LIMITE@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParameters19bufferDistanceErrorEi@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParameters19setQuadrantSegmentsEi@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC1Ei@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC1EiNS2_11EndCapStyleE@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC1EiNS2_11EndCapStyleENS2_9JoinStyleEd@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC1Ev@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC2Ei@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC2EiNS2_11EndCapStyleE@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC2EiNS2_11EndCapStyleENS2_9JoinStyleEd@Base 3.4.2 + _ZN4geos9operation6buffer16BufferParametersC2Ev@Base 3.4.2 + _ZN4geos9operation6buffer16BufferSubgraphGTEPNS1_14BufferSubgraphES3_@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder12getLineCurveEPKNS_4geom18CoordinateSequenceEdRSt6vectorIPS4_SaIS8_EE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder12getRingCurveEPKNS_4geom18CoordinateSequenceEidRSt6vectorIPS4_SaIS8_EE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder15SIMPLIFY_FACTORE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder17computePointCurveERKNS_4geom10CoordinateERNS1_22OffsetSegmentGeneratorE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder17simplifyToleranceEd@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder22computeLineBufferCurveERKNS_4geom18CoordinateSequenceERNS1_22OffsetSegmentGeneratorE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder22computeRingBufferCurveERKNS_4geom18CoordinateSequenceEiRNS1_22OffsetSegmentGeneratorE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder23getSingleSidedLineCurveEPKNS_4geom18CoordinateSequenceEdRSt6vectorIPS4_SaIS8_EEbb@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder29computeSingleSidedBufferCurveERKNS_4geom18CoordinateSequenceEbRNS1_22OffsetSegmentGeneratorE@Base 3.4.2 + _ZN4geos9operation6buffer18OffsetCurveBuilder9getSegGenEd@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder16getRightmostSideEPNS_9geomgraph12DirectedEdgeEi@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder23findRightmostEdgeAtNodeEv@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder25findRightmostEdgeAtVertexEv@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder25getRightmostSideOfSegmentEPNS_9geomgraph12DirectedEdgeEi@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder27checkForRightmostCoordinateEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinder8findEdgeEPSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinderC1Ev@Base 3.4.2 + _ZN4geos9operation6buffer19RightmostEdgeFinderC2Ev@Base 3.4.2 + _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateEPNS_9geomgraph12DirectedEdgeERSt6vectorIPNS1_12DepthSegmentESaISC_EE@Base 3.4.2 + _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateEPSt6vectorIPNS_9geomgraph12DirectedEdgeESaISA_EERS7_IPNS1_12DepthSegmentESaISF_EE@Base 3.4.2 + _ZN4geos9operation6buffer20SubgraphDepthLocater19findStabbedSegmentsERKNS_4geom10CoordinateERSt6vectorIPNS1_12DepthSegmentESaIS9_EE@Base 3.4.2 + _ZN4geos9operation6buffer20SubgraphDepthLocater8getDepthERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder10addPolygonEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder13addCollectionEPKNS_4geom18GeometryCollectionE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder13addLineStringEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder14addPolygonRingEPKNS_4geom18CoordinateSequenceEdiNS3_8LocationES7_@Base 3.8.0 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder18isErodedCompletelyEPKNS_4geom10LinearRingEd@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder26isTriangleErodedCompletelyEPKNS_4geom18CoordinateSequenceEd@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder3addERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder8addCurveEPNS_4geom18CoordinateSequenceENS3_8LocationES6_@Base 3.8.0 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder8addPointEPKNS_4geom5PointE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder9addCurvesERKSt6vectorIPNS_4geom18CoordinateSequenceESaIS6_EENS4_8LocationESB_@Base 3.8.0 + _ZN4geos9operation6buffer21OffsetCurveSetBuilder9getCurvesEv@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilderC1ERKNS_4geom8GeometryEdRNS1_18OffsetCurveBuilderE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilderC2ERKNS_4geom8GeometryEdRNS1_18OffsetCurveBuilderE@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilderD1Ev@Base 3.4.2 + _ZN4geos9operation6buffer21OffsetCurveSetBuilderD2Ev@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator12addBevelJoinERKNS_4geom11LineSegmentES6_@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator12addCollinearEb@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator12addMitreJoinERKNS_4geom10CoordinateERKNS3_11LineSegmentES9_d@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator12createCircleERKNS_4geom10CoordinateEd@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator12createSquareERKNS_4geom10CoordinateEd@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator13addInsideTurnEib@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator13addLineEndCapERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator14addNextSegmentERKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator14addOutsideTurnEib@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator15SIMPLIFY_FACTORE@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator16initSideSegmentsERKNS_4geom10CoordinateES6_i@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator19addLimitedMitreJoinERKNS_4geom11LineSegmentES6_dd@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator20computeOffsetSegmentERKNS_4geom11LineSegmentEidRS4_@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator2PIE@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator32OFFSET_SEGMENT_SEPARATION_FACTORE@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator33CURVE_VERTEX_SNAP_DISTANCE_FACTORE@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator39INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTORE@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator4initEd@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator9addFilletERKNS_4geom10CoordinateES6_S6_id@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGenerator9addFilletERKNS_4geom10CoordinateEddid@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGeneratorC1EPKNS_4geom14PrecisionModelERKNS1_16BufferParametersEd@Base 3.4.2 + _ZN4geos9operation6buffer22OffsetSegmentGeneratorC2EPKNS_4geom14PrecisionModelERKNS1_16BufferParametersEd@Base 3.4.2 + _ZN4geos9operation6buffer25BufferInputLineSimplifier24deleteShallowConcavitiesEv@Base 3.4.2 + _ZN4geos9operation6buffer25BufferInputLineSimplifier8simplifyERKNS_4geom18CoordinateSequenceEd@Base 3.4.2 + _ZN4geos9operation6buffer25BufferInputLineSimplifier8simplifyEd@Base 3.4.2 + _ZN4geos9operation6buffer25BufferInputLineSimplifierC1ERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation6buffer25BufferInputLineSimplifierC2ERKNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp15computeGeometryEv@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp17getResultGeometryEd@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp20bufferFixedPrecisionERKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp20precisionScaleFactorEPKNS_4geom8GeometryEdi@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp22bufferReducedPrecisionEi@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp22bufferReducedPrecisionEv@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp23bufferOriginalPrecisionEv@Base 3.4.2 + _ZN4geos9operation6buffer8BufferOp8bufferOpEPKNS_4geom8GeometryEdii@Base 3.4.2 + _ZN4geos9operation6bufferlsERSoRKNS1_14BufferSubgraphE@Base 3.4.2 + _ZN4geos9operation6relate10RelateNode17updateIMFromEdgesERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate10RelateNode9computeIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate10RelateNodeC1ERKNS_4geom10CoordinateEPNS_9geomgraph11EdgeEndStarE@Base 3.4.2 + _ZN4geos9operation6relate10RelateNodeC2ERKNS_4geom10CoordinateEPNS_9geomgraph11EdgeEndStarE@Base 3.4.2 + _ZN4geos9operation6relate10RelateNodeD0Ev@Base 3.4.2 + _ZN4geos9operation6relate10RelateNodeD1Ev@Base 3.4.2 + _ZN4geos9operation6relate10RelateNodeD2Ev@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle11getEdgeEndsEv@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle12computeLabelERKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle14computeLabelOnEiRKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle16computeLabelSideEii@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle17computeLabelSidesEi@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle6insertEPNS_9geomgraph7EdgeEndE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundle8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundleC1EPNS_9geomgraph7EdgeEndE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundleC2EPNS_9geomgraph7EdgeEndE@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundleD0Ev@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundleD1Ev@Base 3.4.2 + _ZN4geos9operation6relate13EdgeEndBundleD2Ev@Base 3.4.2 + _ZN4geos9operation6relate14EdgeEndBuilder15computeEdgeEndsEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EE@Base 3.4.2 + _ZN4geos9operation6relate14EdgeEndBuilder15computeEdgeEndsEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6relate14EdgeEndBuilder20createEdgeEndForNextEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EEPKNS3_16EdgeIntersectionESE_@Base 3.8.0 + _ZN4geos9operation6relate14EdgeEndBuilder20createEdgeEndForPrevEPNS_9geomgraph4EdgeEPSt6vectorIPNS3_7EdgeEndESaIS8_EEPKNS3_16EdgeIntersectionESE_@Base 3.8.0 + _ZN4geos9operation6relate14RelateComputer14insertEdgeEndsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer14labelNodeEdgesEv@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer17computeDisjointIMEPNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer17labelIsolatedEdgeEPNS_9geomgraph4EdgeEiPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer17labelIsolatedNodeEPNS_9geomgraph4NodeEi@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer18copyNodesAndLabelsEi@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer18labelIsolatedEdgesEii@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer18labelIsolatedNodesEv@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer22labelIntersectionNodesEi@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer24computeIntersectionNodesEi@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer27computeProperIntersectionIMEPNS_9geomgraph5index18SegmentIntersectorEPNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputer9computeIMEv@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputerC1EPSt6vectorIPNS_9geomgraph13GeometryGraphESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputerC2EPSt6vectorIPNS_9geomgraph13GeometryGraphESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputerD1Ev@Base 3.4.2 + _ZN4geos9operation6relate14RelateComputerD2Ev@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraph10getNodeMapEv@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraph14insertEdgeEndsEPSt6vectorIPNS_9geomgraph7EdgeEndESaIS6_EE@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraph18copyNodesAndLabelsEPNS_9geomgraph13GeometryGraphEi@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraph24computeIntersectionNodesEPNS_9geomgraph13GeometryGraphEi@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraph5buildEPNS_9geomgraph13GeometryGraphE@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraphC1Ev@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraphC2Ev@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraphD0Ev@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraphD1Ev@Base 3.4.2 + _ZN4geos9operation6relate15RelateNodeGraphD2Ev@Base 3.4.2 + _ZN4geos9operation6relate17EdgeEndBundleStar6insertEPNS_9geomgraph7EdgeEndE@Base 3.4.2 + _ZN4geos9operation6relate17EdgeEndBundleStar8updateIMERNS_4geom18IntersectionMatrixE@Base 3.4.2 + _ZN4geos9operation6relate17EdgeEndBundleStarD0Ev@Base 3.4.2 + _ZN4geos9operation6relate17EdgeEndBundleStarD1Ev@Base 3.4.2 + _ZN4geos9operation6relate17EdgeEndBundleStarD2Ev@Base 3.4.2 + _ZN4geos9operation6relate17RelateNodeFactory8instanceEv@Base 3.4.2 + _ZN4geos9operation6relate17RelateNodeFactoryD0Ev@Base 3.4.2 + _ZN4geos9operation6relate17RelateNodeFactoryD1Ev@Base 3.4.2 + _ZN4geos9operation6relate17RelateNodeFactoryD2Ev@Base 3.4.2 + _ZN4geos9operation6relate8RelateOp21getIntersectionMatrixEv@Base 3.4.2 + _ZN4geos9operation6relate8RelateOp6relateEPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation6relate8RelateOp6relateEPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpC1EPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpC2EPKNS_4geom8GeometryES6_RKNS_9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpD0Ev@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpD1Ev@Base 3.4.2 + _ZN4geos9operation6relate8RelateOpD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder10buildLinesENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder10propagateZEPNS_4geom18CoordinateSequenceE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder12collectLinesENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder15collectLineEdgeEPNS_9geomgraph12DirectedEdgeENS1_9OverlayOp6OpCodeEPSt6vectorIPNS3_4EdgeESaISA_EE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder17labelIsolatedLineEPNS_9geomgraph4EdgeEi@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder18labelIsolatedLinesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder20findCoveredLineEdgesEv@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder24collectBoundaryTouchEdgeEPNS_9geomgraph12DirectedEdgeENS1_9OverlayOp6OpCodeEPSt6vectorIPNS3_4EdgeESaISA_EE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilder5buildENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilderC1EPNS1_9OverlayOpEPKNS_4geom15GeometryFactoryEPNS_9algorithm12PointLocatorE@Base 3.4.2 + _ZN4geos9operation7overlay11LineBuilderC2EPNS1_9OverlayOpEPKNS_4geom15GeometryFactoryEPNS_9algorithm12PointLocatorE@Base 3.4.2 + _ZN4geos9operation7overlay12EdgeSetNoder13getNodedEdgesEv@Base 3.4.2 + _ZN4geos9operation7overlay12EdgeSetNoder8addEdgesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EE@Base 3.4.2 + _ZN4geos9operation7overlay12PointBuilder24filterCoveredNodeToPointEPKNS_9geomgraph4NodeE@Base 3.4.2 + _ZN4geos9operation7overlay12PointBuilder28extractNonCoveredResultNodesENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay12PointBuilder5buildENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder11getPolygonsEv@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder14placeFreeHolesERSt6vectorINS2_11FastPIPRingESaIS4_EERS3_IPNS_9geomgraph8EdgeRingESaISA_EE@Base 3.8.0 + _ZN4geos9operation7overlay14PolygonBuilder15computePolygonsERSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder17placePolygonHolesEPNS_9geomgraph8EdgeRingEPSt6vectorIPNS1_15MinimalEdgeRingESaIS8_EE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder18sortShellsAndHolesERSt6vectorIPNS1_15MaximalEdgeRingESaIS5_EERS3_IPNS_9geomgraph8EdgeRingESaISB_EESE_@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder21buildMaximalEdgeRingsEPKSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EERS3_IPNS1_15MaximalEdgeRingESaISC_EE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder21buildMinimalEdgeRingsERSt6vectorIPNS1_15MaximalEdgeRingESaIS5_EERS3_IPNS_9geomgraph8EdgeRingESaISB_EESE_S8_@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder22findEdgeRingContainingEPNS_9geomgraph8EdgeRingERSt6vectorINS2_11FastPIPRingESaIS7_EE@Base 3.8.0 + _ZN4geos9operation7overlay14PolygonBuilder3addEPKSt6vectorIPNS_9geomgraph12DirectedEdgeESaIS6_EEPKS3_IPNS4_4NodeESaISC_EE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder3addEPNS_9geomgraph11PlanarGraphE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilder9findShellEPSt6vectorIPNS1_15MinimalEdgeRingESaIS5_EE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilderC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilderC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilderD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay14PolygonBuilderD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay15ElevationMatrix3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay15ElevationMatrix3addERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay15ElevationMatrix7getCellERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay15ElevationMatrixC1ERKNS_4geom8EnvelopeEjj@Base 3.4.2 + _ZN4geos9operation7overlay15ElevationMatrixC2ERKNS_4geom8EnvelopeEjj@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing11setEdgeRingEPNS_9geomgraph12DirectedEdgeEPNS3_8EdgeRingE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsERSt6vectorIPNS1_15MinimalEdgeRingESaIS5_EE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsERSt6vectorIPNS_9geomgraph8EdgeRingESaIS6_EE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing17buildMinimalRingsEv@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing36linkDirectedEdgesForMinimalEdgeRingsEv@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRing7getNextEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRingC1EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRingC2EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRingD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRingD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay15MaximalEdgeRingD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRing11setEdgeRingEPNS_9geomgraph12DirectedEdgeEPNS3_8EdgeRingE@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRing7getNextEPNS_9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRingC1EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRingC2EPNS_9geomgraph12DirectedEdgeEPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRingD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRingD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay15MinimalEdgeRingD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay18OverlayNodeFactory8instanceEv@Base 3.4.2 + _ZN4geos9operation7overlay18OverlayNodeFactoryD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay18OverlayNodeFactoryD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay18OverlayNodeFactoryD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay19ElevationMatrixCell3addERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay19ElevationMatrixCell3addEd@Base 3.4.2 + _ZN4geos9operation7overlay19ElevationMatrixCellC1Ev@Base 3.4.2 + _ZN4geos9operation7overlay19ElevationMatrixCellC2Ev@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilterC1ERNS1_15ElevationMatrixE@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilterC2ERNS1_15ElevationMatrixE@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilterD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilterD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay21ElevationMatrixFilterD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay4snap13SnapOverlayOp13prepareResultERNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay4snap13SnapOverlayOp16removeCommonBitsERKNS_4geom8GeometryES7_RNS4_11GeomPtrPairE@Base 3.4.2 + _ZN4geos9operation7overlay4snap13SnapOverlayOp17getResultGeometryENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay4snap13SnapOverlayOp20computeSnapToleranceEv@Base 3.4.2 + _ZN4geos9operation7overlay4snap13SnapOverlayOp4snapERNS_4geom11GeomPtrPairE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper10snapToSelfERKNS_4geom8GeometryEdb@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper10snapToSelfEdb@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper19snapPrecisionFactorE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper24extractTargetCoordinatesERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper27computeOverlaySnapToleranceERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper27computeOverlaySnapToleranceERKNS_4geom8GeometryES7_@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper29computeSizeBasedSnapToleranceERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper4snapERKNS_4geom8GeometryES7_dRNS4_11GeomPtrPairE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15GeometrySnapper6snapToERKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation7overlay4snap15SnapTransformer20transformCoordinatesEPKNS_4geom18CoordinateSequenceEPKNS4_8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay4snap15SnapTransformerD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay4snap15SnapTransformerD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay4snap15SnapTransformerD2Ev@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper12snapSegmentsERNS_4geom14CoordinateListERKSt6vectorIPKNS4_10CoordinateESaISA_EE@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper12snapVerticesERNS_4geom14CoordinateListERKSt6vectorIPKNS4_10CoordinateESaISA_EE@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper16findVertexToSnapERKNS_4geom10CoordinateESt14_List_iteratorIS5_ES9_@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper17findSegmentToSnapERKNS_4geom10CoordinateESt14_List_iteratorIS5_ES9_@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper17findSnapForVertexERKNS_4geom10CoordinateERKSt6vectorIPS6_SaIS9_EE@Base 3.4.2 + _ZN4geos9operation7overlay4snap17LineStringSnapper6snapToERKSt6vectorIPKNS_4geom10CoordinateESaIS8_EE@Base 3.4.2 + _ZN4geos9operation7overlay4snap21SnapIfNeededOverlayOp17getResultGeometryENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay8validate17FuzzyPointLocator11getLineWorkERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay8validate17FuzzyPointLocator11getLocationERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay8validate17FuzzyPointLocator15extractLineWorkERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay8validate17FuzzyPointLocatorC1ERKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation7overlay8validate17FuzzyPointLocatorC2ERKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation7overlay8validate20OffsetPointGenerator13extractPointsEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation7overlay8validate20OffsetPointGenerator14computeOffsetsERKNS_4geom10CoordinateES7_@Base 3.4.2 + _ZN4geos9operation7overlay8validate20OffsetPointGenerator9getPointsEv@Base 3.4.2 + _ZN4geos9operation7overlay8validate20OffsetPointGeneratorC1ERKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation7overlay8validate20OffsetPointGeneratorC2ERKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator10addTestPtsERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator11addVerticesERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator13isValidResultENS1_9OverlayOp6OpCodeERSt6vectorINS_4geom8LocationESaIS8_EE@Base 3.8.0 + _ZN4geos9operation7overlay8validate22OverlayResultValidator32computeBoundaryDistanceToleranceERKNS_4geom8GeometryES7_@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator7isValidENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator7isValidERKNS_4geom8GeometryES7_NS1_9OverlayOp6OpCodeES7_@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator9testValidENS1_9OverlayOp6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidator9testValidENS1_9OverlayOp6OpCodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidatorC1ERKNS_4geom8GeometryES7_S7_@Base 3.4.2 + _ZN4geos9operation7overlay8validate22OverlayResultValidatorC2ERKNS_4geom8GeometryES7_S7_@Base 3.4.2 + (arch=armel armhf)_ZN4geos9operation7overlay8validate22OverlayResultValidatorD1Ev@Base 3.8.0 + (arch=armel armhf)_ZN4geos9operation7overlay8validate22OverlayResultValidatorD2Ev@Base 3.8.0 + _ZN4geos9operation7overlay9OverlayOp10copyPointsEiPKNS_4geom8EnvelopeE@Base 3.5.0 + _ZN4geos9operation7overlay9OverlayOp11getAverageZEPKNS_4geom7PolygonE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp11getAverageZEi@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp12isCoveredByAERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp12isResultOfOpENS_4geom8LocationES4_NS2_6OpCodeE@Base 3.8.0 + _ZN4geos9operation7overlay9OverlayOp12isResultOfOpERKNS_9geomgraph5LabelENS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp13isCoveredByLAERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp14computeOverlayENS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp14mergeSymLabelsEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp15computeGeometryEPSt6vectorIPNS_4geom5PointESaIS6_EEPS3_IPNS4_10LineStringESaISB_EEPS3_IPNS4_7PolygonESaISG_EENS2_6OpCodeE@Base 3.8.0 + _ZN4geos9operation7overlay9OverlayOp15resultDimensionENS2_6OpCodeEPKNS_4geom8GeometryES7_@Base 3.8.0 + _ZN4geos9operation7overlay9OverlayOp16computeLabellingEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp16insertUniqueEdgeEPNS_9geomgraph4EdgeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp17createEmptyResultENS2_6OpCodeEPKNS_4geom8GeometryES7_PKNS4_15GeometryFactoryE@Base 3.8.0 + _ZN4geos9operation7overlay9OverlayOp17getResultGeometryENS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp17insertUniqueEdgesEPSt6vectorIPNS_9geomgraph4EdgeESaIS6_EEPKNS_4geom8EnvelopeE@Base 3.5.0 + _ZN4geos9operation7overlay9OverlayOp19findResultAreaEdgesENS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp19labelIncompleteNodeEPNS_9geomgraph4NodeEi@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp19updateNodeLabellingEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp20labelIncompleteNodesEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp21replaceCollapsedEdgesEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp23computeLabelsFromDepthsEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp25checkObviouslyWrongResultENS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp26cancelDuplicateResultEdgesEv@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_10LineStringESaIS9_EE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_7PolygonESaIS9_EE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp9isCoveredERKNS_4geom10CoordinateEPSt6vectorIPNS3_8GeometryESaIS9_EE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOp9overlayOpEPKNS_4geom8GeometryES6_NS2_6OpCodeE@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOpD0Ev@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOpD1Ev@Base 3.4.2 + _ZN4geos9operation7overlay9OverlayOpD2Ev@Base 3.4.2 + (subst)_ZN4geos9operation8distance10DistanceOp13computeInsideERSt10unique_ptrINS1_16GeometryLocationESt14default_deleteIS4_EEPKNS_4geom7PolygonERSt5arrayIS7_L{size_t}2EE@Base 3.8.0 + (subst)_ZN4geos9operation8distance10DistanceOp13computeInsideERSt6vectorISt10unique_ptrINS1_16GeometryLocationESt14default_deleteIS5_EESaIS8_EERKS3_IPKNS_4geom7PolygonESaISF_EERSt5arrayIS8_L{size_t}2EE@Base 3.8.0 + _ZN4geos9operation8distance10DistanceOp13nearestPointsEPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOp13nearestPointsEv@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOp16isWithinDistanceERKNS_4geom8GeometryES6_d@Base 3.4.2 + (subst)_ZN4geos9operation8distance10DistanceOp17updateMinDistanceERSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteIS5_EEL{size_t}2EEb@Base 3.8.0 + (subst)_ZN4geos9operation8distance10DistanceOp18computeMinDistanceEPKNS_4geom10LineStringEPKNS3_5PointERSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteISC_EEL{size_t}2EE@Base 3.8.0 + (subst)_ZN4geos9operation8distance10DistanceOp18computeMinDistanceEPKNS_4geom10LineStringES6_RSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteIS9_EEL{size_t}2EE@Base 3.8.0 + _ZN4geos9operation8distance10DistanceOp18computeMinDistanceEv@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOp20computeFacetDistanceEv@Base 3.4.2 + (subst)_ZN4geos9operation8distance10DistanceOp23computeMinDistanceLinesERKSt6vectorIPKNS_4geom10LineStringESaIS7_EESB_RSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteISE_EEL{size_t}2EE@Base 3.8.0 + (subst)_ZN4geos9operation8distance10DistanceOp24computeMinDistancePointsERKSt6vectorIPKNS_4geom5PointESaIS7_EESB_RSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteISE_EEL{size_t}2EE@Base 3.8.0 + _ZN4geos9operation8distance10DistanceOp26computeContainmentDistanceEv@Base 3.4.2 + (subst)_ZN4geos9operation8distance10DistanceOp29computeMinDistanceLinesPointsERKSt6vectorIPKNS_4geom10LineStringESaIS7_EERKS3_IPKNS4_5PointESaISE_EERSt5arrayISt10unique_ptrINS1_16GeometryLocationESt14default_deleteISL_EEL{size_t}2EE@Base 3.8.0 + _ZN4geos9operation8distance10DistanceOp8distanceEPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOp8distanceERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOp8distanceEv@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC1EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC1ERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC1ERKNS_4geom8GeometryES6_d@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC2EPKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC2ERKNS_4geom8GeometryES6_@Base 3.4.2 + _ZN4geos9operation8distance10DistanceOpC2ERKNS_4geom8GeometryES6_d@Base 3.4.2 + _ZN4geos9operation8distance13FacetSequence15computeEnvelopeEv@Base 3.6.0 + (subst)_ZN4geos9operation8distance13FacetSequenceC1EPKNS_4geom18CoordinateSequenceE{size_t}{size_t}@Base 3.6.0 + (subst)_ZN4geos9operation8distance13FacetSequenceC1EPKNS_4geom8GeometryEPKNS3_18CoordinateSequenceE{size_t}{size_t}@Base 3.8.0 + (subst)_ZN4geos9operation8distance13FacetSequenceC2EPKNS_4geom18CoordinateSequenceE{size_t}{size_t}@Base 3.6.0 + (subst)_ZN4geos9operation8distance13FacetSequenceC2EPKNS_4geom8GeometryEPKNS3_18CoordinateSequenceE{size_t}{size_t}@Base 3.8.0 + _ZN4geos9operation8distance16GeometryLocation12isInsideAreaEv@Base 3.4.2 + _ZN4geos9operation8distance16GeometryLocation13getCoordinateEv@Base 3.4.2 + _ZN4geos9operation8distance16GeometryLocation15getSegmentIndexEv@Base 3.4.2 + _ZN4geos9operation8distance16GeometryLocation20getGeometryComponentEv@Base 3.4.2 + _ZN4geos9operation8distance16GeometryLocation8toStringB5cxx11Ev@Base 3.8.0 + _ZN4geos9operation8distance16GeometryLocationC1EPKNS_4geom8GeometryERKNS3_10CoordinateE@Base 3.4.2 + (subst)_ZN4geos9operation8distance16GeometryLocationC1EPKNS_4geom8GeometryE{size_t}RKNS3_10CoordinateE@Base 3.8.0 + _ZN4geos9operation8distance16GeometryLocationC2EPKNS_4geom8GeometryERKNS3_10CoordinateE@Base 3.4.2 + (subst)_ZN4geos9operation8distance16GeometryLocationC2EPKNS_4geom8GeometryE{size_t}RKNS3_10CoordinateE@Base 3.8.0 + _ZN4geos9operation8distance20IndexedFacetDistance13nearestPointsEPKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8distance20IndexedFacetDistance8distanceEPKNS_4geom8GeometryES6_@Base 3.7.0 + _ZN4geos9operation8distance20IndexedFacetDistanceD1Ev@Base 3.7.0 + _ZN4geos9operation8distance20IndexedFacetDistanceD2Ev@Base 3.7.0 + _ZN4geos9operation8distance24FacetSequenceTreeBuilder17addFacetSequencesEPKNS_4geom8GeometryEPKNS3_18CoordinateSequenceERSt6vectorIPNS1_13FacetSequenceESaISC_EE@Base 3.8.0 + _ZN4geos9operation8distance24FacetSequenceTreeBuilder21computeFacetSequencesEPKNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9operation8distance24FacetSequenceTreeBuilder5buildEPKNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9operation8distance27ConnectedElementPointFilter14getCoordinatesEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8distance27ConnectedElementPointFilter9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8distance27ConnectedElementPointFilterD0Ev@Base 3.4.2 + _ZN4geos9operation8distance27ConnectedElementPointFilterD1Ev@Base 3.4.2 + _ZN4geos9operation8distance27ConnectedElementPointFilterD2Ev@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilter12getLocationsEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilter9filter_roEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilter9filter_rwEPNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilterD0Ev@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilterD1Ev@Base 3.4.2 + _ZN4geos9operation8distance30ConnectedElementLocationFilterD2Ev@Base 3.4.2 + _ZN4geos9operation8distance7Deleter9visitItemEPv@Base 3.7.0 + _ZN4geos9operation8distance7DeleterD0Ev@Base 3.7.0 + _ZN4geos9operation8distance7DeleterD1Ev@Base 3.7.0 + _ZN4geos9operation8distance7DeleterD2Ev@Base 3.7.0 + _ZN4geos9operation8distance7deleterE@Base 3.7.0 + _ZN4geos9operation8geounion12OverlapUnion11unionBufferEPKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion15overlapEnvelopeEPKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion17extractByEnvelopeERKNS_4geom8EnvelopeEPKNS3_8GeometryERSt6vectorISt10unique_ptrIS7_St14default_deleteIS7_EESaISE_EE@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion20isBorderSegmentsSameEPKNS_4geom8GeometryERKNS3_8EnvelopeE@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion21extractBorderSegmentsEPKNS_4geom8GeometryERKNS3_8EnvelopeERSt6vectorIPNS3_11LineSegmentESaISC_EE@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion21extractBorderSegmentsEPKNS_4geom8GeometryES6_RKNS3_8EnvelopeE@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion7combineERSt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EERSt6vectorIS8_SaIS8_EE@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion7doUnionEv@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion7isEqualERSt6vectorIPNS_4geom11LineSegmentESaIS6_EES9_@Base 3.8.0 + _ZN4geos9operation8geounion12OverlapUnion9unionFullEPKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion12UnaryUnionOp13unionWithNullESt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EES8_@Base 3.7.0 + _ZN4geos9operation8geounion12UnaryUnionOp5UnionEv@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9operation8geounion13CascadedUnion11binaryUnionEPNS1_18GeometryListHolderEmm@Base 3.7.0 + _ZN4geos9operation8geounion13CascadedUnion11unionActualEPNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion14unionOptimizedEPNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion17extractByEnvelopeERKNS_4geom8EnvelopeEPNS3_8GeometryERSt6vectorIPKS7_SaISB_EE@Base 3.8.0 + _ZN4geos9operation8geounion13CascadedUnion18reduceToGeometriesEPNS_5index7strtree9ItemsListE@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion30unionUsingEnvelopeIntersectionEPNS_4geom8GeometryES5_RKNS3_8EnvelopeE@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion5UnionEPSt6vectorIPNS_4geom8GeometryESaIS6_EE@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion5UnionEv@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion9unionSafeEPNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation8geounion13CascadedUnion9unionTreeEPNS_5index7strtree9ItemsListE@Base 3.4.2 + _ZN4geos9operation8geounion13CoverageUnion10polygonizeEPKNS_4geom15GeometryFactoryE@Base 3.8.0 + _ZN4geos9operation8geounion13CoverageUnion15extractSegmentsEPKNS_4geom10LineStringE@Base 3.8.0 + _ZN4geos9operation8geounion13CoverageUnion15extractSegmentsEPKNS_4geom7PolygonE@Base 3.8.0 + _ZN4geos9operation8geounion13CoverageUnion15extractSegmentsEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation8geounion13CoverageUnion5UnionEPKNS_4geom8GeometryE@Base 3.8.0 + _ZN4geos9operation8geounion18GeometryListHolder10deleteItemEPNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation8geounion18PointGeometryUnion5UnionERKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion18PointGeometryUnionC1ERKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion18PointGeometryUnionC2ERKNS_4geom8GeometryES6_@Base 3.8.0 + _ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZN4geos9operation8geounion20CascadedPolygonUnion11binaryUnionEPNS1_18GeometryListHolderEmm@Base 3.7.0 + _ZN4geos9operation8geounion20CascadedPolygonUnion11unionActualEPNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion18reduceToGeometriesEPNS_5index7strtree9ItemsListE@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion18restrictToPolygonsESt10unique_ptrINS_4geom8GeometryESt14default_deleteIS5_EE@Base 3.7.0 + _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEPKNS_4geom12MultiPolygonE@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEPSt6vectorIPNS_4geom7PolygonESaIS6_EE@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion5UnionEv@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion9unionSafeEPNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9operation8geounion20CascadedPolygonUnion9unionTreeEPNS_5index7strtree9ItemsListE@Base 3.4.2 + _ZN4geos9operation9linemerge10EdgeString12toLineStringEv@Base 3.4.2 + _ZN4geos9operation9linemerge10EdgeString14getCoordinatesEv@Base 3.4.2 + _ZN4geos9operation9linemerge10EdgeString3addEPNS1_21LineMergeDirectedEdgeE@Base 3.4.2 + _ZN4geos9operation9linemerge10EdgeStringC1EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation9linemerge10EdgeStringC2EPKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger20getMergedLineStringsEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger26buildEdgeStringsStartingAtEPNS_11planargraph4NodeE@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger27buildEdgeStringStartingWithEPNS1_21LineMergeDirectedEdgeE@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger32buildEdgeStringsForIsolatedLoopsEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger34buildEdgeStringsForNonDegree2NodesEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger35buildEdgeStringsForUnprocessedNodesEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger36buildEdgeStringsForObviousStartNodesEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger3addEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMerger3addEPSt6vectorIPKNS_4geom8GeometryESaIS7_EE@Base 3.8.0 + _ZN4geos9operation9linemerge10LineMerger5mergeEv@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMergerC1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMergerC2Ev@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMergerD1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge10LineMergerD2Ev@Base 3.4.2 + _ZN4geos9operation9linemerge13LineMergeEdgeC1EPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineMergeEdgeC2EPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineMergeEdgeD0Ev@Base 3.4.2 + _ZN4geos9operation9linemerge13LineMergeEdgeD1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge13LineMergeEdgeD2Ev@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer11hasSequenceERNS_11planargraph8SubgraphE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer11isSequencedEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer12findSequenceB5cxx11ERNS_11planargraph8SubgraphE@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer13findSequencesB5cxx11Ev@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer15computeSequenceEv@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer17addReverseSubpathEPKNS_11planargraph12DirectedEdgeERNSt7__cxx114listIPS4_SaIS9_EEESt14_List_iteratorIS9_Eb@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer20findLowestDegreeNodeERKNS_11planargraph8SubgraphE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer22buildSequencedGeometryERKSt6vectorIPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS8_EEESaISB_EE@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer27findUnvisitedBestOrientedDEEPKNS_11planargraph4NodeE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer6delAllERSt6vectorIPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS8_EEESaISB_EE@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer6orientEPNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS7_EEE@Base 3.5.1 + _ZN4geos9operation9linemerge13LineSequencer7addLineEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer7reverseEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge13LineSequencer7reverseERNSt7__cxx114listIPNS_11planargraph12DirectedEdgeESaIS7_EEE@Base 3.5.1 + _ZN4geos9operation9linemerge14LineMergeGraph7addEdgeEPKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9linemerge14LineMergeGraph7getNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation9linemerge14LineMergeGraphD0Ev@Base 3.4.2 + _ZN4geos9operation9linemerge14LineMergeGraphD1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge14LineMergeGraphD2Ev@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdge7getNextEv@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdgeC1EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdgeC2EPNS_11planargraph4NodeES5_RKNS_4geom10CoordinateEb@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD0Ev@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge21LineMergeDirectedEdgeD2Ev@Base 3.4.2 + _ZN4geos9operation9linemerge25LMGeometryComponentFilterD0Ev@Base 3.4.2 + _ZN4geos9operation9linemerge25LMGeometryComponentFilterD1Ev@Base 3.4.2 + _ZN4geos9operation9linemerge25LMGeometryComponentFilterD2Ev@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains21isContainedInBoundaryERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains26isPointContainedInBoundaryERKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains26isPointContainedInBoundaryERKNS_4geom5PointE@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains31isLineStringContainedInBoundaryERKNS_4geom10LineStringE@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains32isLineSegmentContainedInBoundaryERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZN4geos9operation9predicate17RectangleContains8containsERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate19RectangleIntersects10intersectsERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate20ContainsPointVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate20ContainsPointVisitor6isDoneEv@Base 3.4.2 + _ZN4geos9operation9predicate20ContainsPointVisitorD0Ev@Base 3.4.2 + _ZN4geos9operation9predicate20ContainsPointVisitorD1Ev@Base 3.4.2 + _ZN4geos9operation9predicate20ContainsPointVisitorD2Ev@Base 3.4.2 + _ZN4geos9operation9predicate21LineIntersectsVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate21LineIntersectsVisitor6isDoneEv@Base 3.4.2 + _ZN4geos9operation9predicate21LineIntersectsVisitorD0Ev@Base 3.4.2 + _ZN4geos9operation9predicate21LineIntersectsVisitorD1Ev@Base 3.4.2 + _ZN4geos9operation9predicate21LineIntersectsVisitorD2Ev@Base 3.4.2 + _ZN4geos9operation9predicate25EnvelopeIntersectsVisitor5visitERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9operation9predicate25EnvelopeIntersectsVisitor6isDoneEv@Base 3.4.2 + _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD0Ev@Base 3.4.2 + _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD1Ev@Base 3.4.2 + _ZN4geos9operation9predicate25EnvelopeIntersectsVisitorD2Ev@Base 3.4.2 + _ZN4geos9operation9predicate25SegmentIntersectionTester15hasIntersectionERKNS_4geom10LineStringES6_@Base 3.4.2 + _ZN4geos9operation9predicate25SegmentIntersectionTester30hasIntersectionWithLineStringsERKNS_4geom10LineStringERKSt6vectorIPS5_SaIS8_EE@Base 3.4.2 + _ZN4geos9operation9predicate25SegmentIntersectionTester33hasIntersectionWithEnvelopeFilterERKNS_4geom10LineStringES6_@Base 3.4.2 + (subst)_ZN4geos9precision10CommonBits11signExpBitsE{int64_t}@Base 3.8.0 + (subst)_ZN4geos9precision10CommonBits13zeroLowerBitsE{int64_t}i@Base 3.8.0 + (subst)_ZN4geos9precision10CommonBits28numCommonMostSigMantissaBitsE{int64_t}{int64_t}@Base 3.8.0 + _ZN4geos9precision10CommonBits3addEd@Base 3.4.2 + (subst)_ZN4geos9precision10CommonBits6getBitE{int64_t}i@Base 3.8.0 + _ZN4geos9precision10CommonBits9getCommonEv@Base 3.4.2 + _ZN4geos9precision10CommonBitsC1Ev@Base 3.4.2 + _ZN4geos9precision10CommonBitsC2Ev@Base 3.4.2 + _ZN4geos9precision10Translater9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9precision10TranslaterD0Ev@Base 3.4.2 + _ZN4geos9precision10TranslaterD1Ev@Base 3.4.2 + _ZN4geos9precision10TranslaterD2Ev@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp10differenceEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp12intersectionEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp13symDifferenceEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp16removeCommonBitsEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp16removeCommonBitsEPKNS_4geom8GeometryES5_RSt10unique_ptrIS3_St14default_deleteIS3_EESA_@Base 3.7.0 + _ZN4geos9precision12CommonBitsOp22computeResultPrecisionESt10unique_ptrINS_4geom8GeometryESt14default_deleteIS4_EE@Base 3.8.0 + _ZN4geos9precision12CommonBitsOp5UnionEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision12CommonBitsOp6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9precision12CommonBitsOpC1Eb@Base 3.4.2 + _ZN4geos9precision12CommonBitsOpC1Ev@Base 3.4.2 + _ZN4geos9precision12CommonBitsOpC2Eb@Base 3.4.2 + _ZN4geos9precision12CommonBitsOpC2Ev@Base 3.4.2 + _ZN4geos9precision16MinimumClearance11getDistanceEv@Base 3.6.0 + _ZN4geos9precision16MinimumClearance7computeEv@Base 3.6.0 + _ZN4geos9precision16MinimumClearance7getLineEv@Base 3.6.0 + _ZN4geos9precision16MinimumClearanceC1EPKNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9precision16MinimumClearanceC2EPKNS_4geom8GeometryE@Base 3.6.0 + _ZN4geos9precision17CommonBitsRemover13addCommonBitsEPNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemover16removeCommonBitsEPNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemover19getCommonCoordinateEv@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemover3addEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemoverC1Ev@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemoverC2Ev@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemoverD1Ev@Base 3.4.2 + _ZN4geos9precision17CommonBitsRemoverD2Ev@Base 3.4.2 + _ZN4geos9precision19EnhancedPrecisionOp10differenceEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision19EnhancedPrecisionOp12intersectionEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision19EnhancedPrecisionOp13symDifferenceEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision19EnhancedPrecisionOp5UnionEPKNS_4geom8GeometryES5_@Base 3.4.2 + _ZN4geos9precision19EnhancedPrecisionOp6bufferEPKNS_4geom8GeometryEd@Base 3.4.2 + _ZN4geos9precision22CommonCoordinateFilter9filter_roEPKNS_4geom10CoordinateE@Base 3.4.2 + _ZN4geos9precision22CommonCoordinateFilterD0Ev@Base 3.4.2 + _ZN4geos9precision22CommonCoordinateFilterD1Ev@Base 3.4.2 + _ZN4geos9precision22CommonCoordinateFilterD2Ev@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducer13createFactoryERKNS_4geom15GeometryFactoryERKNS2_14PrecisionModelE@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducer15reducePointwiseERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducer20fixPolygonalTopologyERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducer6reduceERKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducerC1ERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9precision24GeometryPrecisionReducerC2ERKNS_4geom15GeometryFactoryE@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducer17getPrecisionModelEv@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducer18getRemoveCollapsedEv@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducer28setRemoveCollapsedComponentsEb@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducer6reduceEPKNS_4geom8GeometryE@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducerC1EPKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9precision30SimpleGeometryPrecisionReducerC2EPKNS_4geom14PrecisionModelE@Base 3.4.2 + _ZN4geos9precision35PrecisionReducerCoordinateOperation4editEPKNS_4geom18CoordinateSequenceEPKNS2_8GeometryE@Base 3.4.2 + _ZN4geos9precision35PrecisionReducerCoordinateOperationD0Ev@Base 3.4.2 + _ZN4geos9precision35PrecisionReducerCoordinateOperationD1Ev@Base 3.4.2 + _ZN4geos9precision35PrecisionReducerCoordinateOperationD2Ev@Base 3.4.2 + (optional=templinst)_ZN6ttmath3BigILj1ELj4EE3AddES1_bb@Base 3.8.0 + (optional=templinst)_ZN6ttmath3BigILj1ELj4EE6DivRefERKS1_b@Base 3.8.0 + (optional=templinst)_ZN6ttmath3BigILj1ELj4EE6MulRefERKS1_b@Base 3.8.0 + (optional=templinst)_ZN6ttmath3BigILj1ELj4EED1Ev@Base 3.8.0 + (optional=templinst)_ZN6ttmath3BigILj1ELj4EED2Ev@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE10FromDoubleEd@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE13StandardizingEv@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE15RoundHalfToEvenEbb@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE3AddES1_bb@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE6DivRefERKS1_b@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EE6MulRefERKS1_b@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EED1Ev@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath3BigILm1ELm2EED2Ev@Base 3.8.0 + (optional=templinst|arch=hurd-i386 i386)_ZN6ttmath4UIntILj4EE4Rcr2Ejj@Base 3.8.0 + (optional=templinst|arch=powerpc ppc64 riscv64 s390x)_ZN6ttmath4UIntILj4EE8Mul3Big3ILj2ELj2ELj8EEEvPKjS4_S4_S4_Pj@Base 3.8.0 + (optional=templinst)_ZN6ttmath4UIntILj4EE9AddVectorEPKjS3_jjPj@Base 3.8.0 + (optional=templinst)_ZN6ttmath4UIntILj4EE9SubVectorEPKjS3_jjPj@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath4UIntILm2EE3RcrEmm@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath4UIntILm2EE4Rcr2Emm@Base 3.8.0 + (optional=templinst|arch=amd64)_ZN6ttmath4UIntILm4EE3RclEmm@Base 3.8.0 + (optional=templinst|arch=sh4)_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_jPKS8_13__va_list_tagEjSB_z@Base 3.8.0 + (optional=templinst|arch=ia64 riscv64)_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_mPKS8_PvEmSB_z@Base 3.8.0 + (optional=templinst|arch=amd64 powerpc s390x|subst)_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_{size_t}PKS8_P13__va_list_tagE{size_t}SB_z@Base 3.8.0 + (optional=templinst|arch=hurd-i386 i386 ppc64|subst)_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_{size_t}PKS8_PcE{size_t}SB_z@Base 3.8.0 + (optional=templinst|arch=arm64 armel armhf|subst)_ZN9__gnu_cxx12__to_xstringINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEET_PFiPT0_{size_t}PKS8_St9__va_listE{size_t}SB_z@Base 3.8.0 + _ZNK4geos11planargraph12DirectedEdge11getFromNodeEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge11getQuadrantEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge13getCoordinateEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge14getDirectionPtEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge16compareDirectionEPKS1_@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge16getEdgeDirectionEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos11planargraph12DirectedEdge6getSymEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge7getEdgeEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge8getAngleEv@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge9compareToEPKS1_@Base 3.4.2 + _ZNK4geos11planargraph12DirectedEdge9getToNodeEv@Base 3.4.2 + _ZNK4geos11planargraph14GraphComponent8isMarkedEv@Base 3.4.2 + _ZNK4geos11planargraph14GraphComponent9isVisitedEv@Base 3.4.2 + _ZNK4geos11planargraph16DirectedEdgeStar13getCoordinateEv@Base 3.4.2 + _ZNK4geos11planargraph16DirectedEdgeStar3endEv@Base 3.4.2 + _ZNK4geos11planargraph16DirectedEdgeStar5beginEv@Base 3.4.2 + _ZNK4geos11planargraph16DirectedEdgeStar8getIndexEi@Base 3.4.2 + _ZNK4geos11planargraph16DirectedEdgeStar9sortEdgesEv@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision11isFrameEdgeERKNS1_8QuadEdgeE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision13isFrameVertexERKNS1_6VertexE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision14isVertexOfEdgeERKNS1_8QuadEdgeERKNS1_6VertexE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision14locateFromEdgeERKNS1_6VertexERKNS1_8QuadEdgeE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision17isFrameBorderEdgeERKNS1_8QuadEdgeE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge19QuadEdgeSubdivision8isOnEdgeERKNS1_8QuadEdgeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge6Vertex10isInCircleERKS2_S4_S4_@Base 3.4.2 + _ZNK4geos11triangulate8quadedge6Vertex12circleCenterERKS2_S4_@Base 3.4.2 + _ZNK4geos11triangulate8quadedge6Vertex17interpolateZValueERKS2_S4_S4_@Base 3.4.2 + _ZNK4geos11triangulate8quadedge6Vertex6leftOfERKNS1_8QuadEdgeE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge6Vertex7rightOfERKNS1_8QuadEdgeE@Base 3.4.2 + _ZNK4geos11triangulate8quadedge8QuadEdge10getPrimaryEv@Base 3.4.2 + _ZNK4geos11triangulate8quadedge8QuadEdge13toLineSegmentEv@Base 3.4.2 + _ZNK4geos11triangulate8quadedge8QuadEdge14equalsOrientedERKS2_@Base 3.4.2 + _ZNK4geos11triangulate8quadedge8QuadEdge17equalsNonOrientedERKS2_@Base 3.4.2 + _ZNK4geos2io9WKBWriter12getByteOrderEv@Base 3.4.2 + _ZNK4geos2io9WKBWriter14getIncludeSRIDEv@Base 3.4.2 + _ZNK4geos2io9WKBWriter18getOutputDimensionEv@Base 3.4.2 + _ZNK4geos4geom10Coordinate15distanceSquaredERKS1_@Base 3.8.0 + _ZNK4geos4geom10Coordinate6equalsERKS1_@Base 3.4.2 + _ZNK4geos4geom10Coordinate6isNullEv@Base 3.4.2 + _ZNK4geos4geom10Coordinate8HashCodeclERKS1_@Base 3.8.0 + _ZNK4geos4geom10Coordinate8distanceERKS1_@Base 3.4.2 + _ZNK4geos4geom10Coordinate8equals2DERKS1_@Base 3.4.2 + _ZNK4geos4geom10Coordinate8equals3DERKS1_@Base 3.4.2 + _ZNK4geos4geom10Coordinate8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom10Coordinate9compareToERKS1_@Base 3.4.2 + _ZNK4geos4geom10LineString11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom10LineString11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom10LineString11getEndPointEv@Base 3.4.2 + _ZNK4geos4geom10LineString12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom10LineString12getNumPointsEv@Base 3.4.2 + _ZNK4geos4geom10LineString12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom10LineString12isCoordinateERNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom10LineString13getCoordinateEv@Base 3.4.2 + _ZNK4geos4geom10LineString13getStartPointEv@Base 3.4.2 + (subst)_ZNK4geos4geom10LineString14getCoordinateNE{size_t}@Base 3.8.0 + _ZNK4geos4geom10LineString14getCoordinatesEv@Base 3.4.2 + _ZNK4geos4geom10LineString15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom10LineString16getCoordinatesROEv@Base 3.4.2 + _ZNK4geos4geom10LineString17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom10LineString18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom10LineString20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom10LineString22getCoordinateDimensionEv@Base 3.4.2 + _ZNK4geos4geom10LineString23computeEnvelopeInternalEv@Base 3.4.2 + _ZNK4geos4geom10LineString5cloneEv@Base 3.4.2 + _ZNK4geos4geom10LineString6isRingEv@Base 3.4.2 + _ZNK4geos4geom10LineString7isEmptyEv@Base 3.4.2 + _ZNK4geos4geom10LineString7reverseEv@Base 3.4.2 + _ZNK4geos4geom10LineString8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 + _ZNK4geos4geom10LineString8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 + _ZNK4geos4geom10LineString8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZNK4geos4geom10LineString8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZNK4geos4geom10LineString8isClosedEv@Base 3.4.2 + _ZNK4geos4geom10LineString9getLengthEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom10LineString9getPointNEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom10LineString9getPointNEm@Base 3.7.0 + _ZNK4geos4geom10LinearRing12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom10LinearRing15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom10LinearRing17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom10LinearRing20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom10LinearRing5cloneEv@Base 3.4.2 + _ZNK4geos4geom10LinearRing7reverseEv@Base 3.4.2 + _ZNK4geos4geom10LinearRing8isClosedEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom10MultiPoint11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint12getSortIndexEv@Base 3.8.0 + (subst)_ZNK4geos4geom10MultiPoint14getCoordinateNE{size_t}@Base 3.8.0 + _ZNK4geos4geom10MultiPoint15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom10MultiPoint17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 + _ZNK4geos4geom10MultiPoint20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint5cloneEv@Base 3.4.2 + _ZNK4geos4geom10MultiPoint7reverseEv@Base 3.7.0 + _ZNK4geos4geom11LineSegment10equalsTopoERKS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment10isVerticalEv@Base 3.4.2 + _ZNK4geos4geom11LineSegment10pointAlongEdRNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment10toGeometryERKNS0_15GeometryFactoryE@Base 3.4.2 + _ZNK4geos4geom11LineSegment12closestPointERKNS0_10CoordinateERS2_@Base 3.4.2 + _ZNK4geos4geom11LineSegment12intersectionERKS1_@Base 3.8.0 + _ZNK4geos4geom11LineSegment12isHorizontalEv@Base 3.4.2 + _ZNK4geos4geom11LineSegment15segmentFractionERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment16lineIntersectionERKS1_@Base 3.8.0 + _ZNK4geos4geom11LineSegment16orientationIndexEPKS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment16orientationIndexERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment16orientationIndexERKS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment16pointAlongOffsetEddRNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment16projectionFactorERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment21distancePerpendicularERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment5angleEv@Base 3.4.2 + _ZNK4geos4geom11LineSegment7projectERKNS0_10CoordinateERS2_@Base 3.4.2 + _ZNK4geos4geom11LineSegment7projectERKS1_RS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment8distanceERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment8distanceERKS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment8midPointERNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom11LineSegment9compareToERKS1_@Base 3.4.2 + _ZNK4geos4geom11LineSegment9getLengthEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom11LineSegmentixEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom11LineSegmentixEm@Base 3.7.0 + _ZNK4geos4geom12MultiPolygon11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom12MultiPolygon15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom12MultiPolygon17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 + _ZNK4geos4geom12MultiPolygon20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon5cloneEv@Base 3.4.2 + _ZNK4geos4geom12MultiPolygon7reverseEv@Base 3.7.0 + _ZNK4geos4geom14PrecisionModel10getOffsetXEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel10getOffsetYEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel10isFloatingEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel11makePreciseEPNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel11makePreciseERNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel11makePreciseEd@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel27getMaximumSignificantDigitsEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel7getTypeEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel8getScaleEv@Base 3.4.2 + _ZNK4geos4geom14PrecisionModel8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom14PrecisionModel9compareToEPKS1_@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory10toGeometryEPKNS0_8EnvelopeE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory11createPointEPNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory11createPointERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory11createPointERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory11createPointEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory13buildGeometryEOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13buildGeometryEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory13buildGeometryERKSt6vectorIPKNS0_8GeometryESaIS5_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13createPolygonEOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13createPolygonEOSt10unique_ptrINS0_10LinearRingESt14default_deleteIS3_EEOSt6vectorIS6_SaIS6_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13createPolygonEPNS0_10LinearRingEPSt6vectorIS3_SaIS3_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13createPolygonERKNS0_10LinearRingERKSt6vectorIPS2_SaIS6_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory13createPolygonEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory14createGeometryEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory15destroyGeometryEPNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLineStringEOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory16createLineStringEPNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLineStringERKNS0_10LineStringE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLineStringERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLineStringEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLinearRingEOSt10unique_ptrINS0_18CoordinateSequenceESt14default_deleteIS3_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory16createLinearRingEPNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLinearRingERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createLinearRingEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createMultiPointEOSt6vectorISt10unique_ptrINS0_5PointESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory16createMultiPointEOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory16createMultiPointEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createMultiPointERKNS0_18CoordinateSequenceE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createMultiPointERKSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory16createMultiPointERKSt6vectorIPKNS0_8GeometryESaIS5_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory16createMultiPointEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory17getPrecisionModelEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory18createMultiPolygonEOSt6vectorISt10unique_ptrINS0_7PolygonESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory18createMultiPolygonEOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory18createMultiPolygonEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory18createMultiPolygonERKSt6vectorIPKNS0_8GeometryESaIS5_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory18createMultiPolygonEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory19createEmptyGeometryEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory21createMultiLineStringEOSt6vectorISt10unique_ptrINS0_10LineStringESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory21createMultiLineStringEOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory21createMultiLineStringEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory21createMultiLineStringERKSt6vectorIPKNS0_8GeometryESaIS5_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory21createMultiLineStringEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory24createGeometryCollectionEOSt6vectorISt10unique_ptrINS0_8GeometryESt14default_deleteIS4_EESaIS7_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory24createGeometryCollectionEPSt6vectorIPNS0_8GeometryESaIS4_EE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory24createGeometryCollectionERKSt6vectorIPKNS0_8GeometryESaIS5_EE@Base 3.8.0 + _ZNK4geos4geom15GeometryFactory24createGeometryCollectionEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory28createPointFromInternalCoordEPKNS0_10CoordinateEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory28getCoordinateSequenceFactoryEv@Base 3.4.2 + _ZNK4geos4geom15GeometryFactory6addRefEv@Base 3.6.0 + _ZNK4geos4geom15GeometryFactory7dropRefEv@Base 3.6.0 + _ZNK4geos4geom15GeometryFactory7getSRIDEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom15MultiLineString11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom15MultiLineString15getGeometryTypeB5cxx11Ev@Base 3.4.2 + _ZNK4geos4geom15MultiLineString17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 + _ZNK4geos4geom15MultiLineString20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString5cloneEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString7reverseEv@Base 3.4.2 + _ZNK4geos4geom15MultiLineString8isClosedEv@Base 3.4.2 + _ZNK4geos4geom16CoordinateFilter9filter_rwEPNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom18CoordinateLessThenclEPKNS0_10CoordinateES4_@Base 3.4.2 + _ZNK4geos4geom18CoordinateLessThenclERKNS0_10CoordinateES4_@Base 3.4.2 + _ZNK4geos4geom18CoordinateSequence11getEnvelopeEv@Base 3.8.0 + (subst)_ZNK4geos4geom18CoordinateSequence11getOrdinateE{size_t}{size_t}@Base 3.8.0 + _ZNK4geos4geom18CoordinateSequence13minCoordinateEv@Base 3.4.2 + _ZNK4geos4geom18CoordinateSequence14expandEnvelopeERNS0_8EnvelopeE@Base 3.4.2 + _ZNK4geos4geom18CoordinateSequence17hasRepeatedPointsEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18CoordinateSequence4getXEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18CoordinateSequence4getXEm@Base 3.7.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18CoordinateSequence4getYEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18CoordinateSequence4getYEm@Base 3.7.0 + _ZNK4geos4geom18CoordinateSequence8toStringB5cxx11Ev@Base 3.8.0 + _ZNK4geos4geom18GeometryCollection11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection12getDimensionEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom18GeometryCollection12getGeometryNEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom18GeometryCollection12getGeometryNEm@Base 3.7.0 + _ZNK4geos4geom18GeometryCollection12getNumPointsEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom18GeometryCollection13getCoordinateEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection14getCoordinatesEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom18GeometryCollection16getNumGeometriesEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 + _ZNK4geos4geom18GeometryCollection18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection22getCoordinateDimensionEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection23computeEnvelopeInternalEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection3endEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection5beginEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection5cloneEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection7getAreaEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection7isEmptyEv@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection7reverseEv@Base 3.7.0 + _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZNK4geos4geom18GeometryCollection9getLengthEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix10isContainsEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix10isDisjointEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix10isOverlapsEii@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix11isCoveredByEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix12isIntersectsEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix7matchesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZNK4geos4geom18IntersectionMatrix8isCoversEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix8isEqualsEii@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix8isWithinEv@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom18IntersectionMatrix9isCrossesEii@Base 3.4.2 + _ZNK4geos4geom18IntersectionMatrix9isTouchesEii@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence14expandEnvelopeERNS0_8EnvelopeE@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence5cloneEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEj@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEjRNS0_10CoordinateE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEm@Base 3.7.0 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom23CoordinateArraySequence5getAtEmRNS0_10CoordinateE@Base 3.7.0 + _ZNK4geos4geom23CoordinateArraySequence7getSizeEv@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence7isEmptyEv@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 + _ZNK4geos4geom23CoordinateArraySequence8toVectorERSt6vectorINS0_10CoordinateESaIS3_EE@Base 3.4.2 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (subst)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEOSt6vectorINS0_10CoordinateESaIS3_EE{size_t}@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEPSt6vectorINS0_10CoordinateESaIS3_EEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEPSt6vectorINS0_10CoordinateESaIS3_EEm@Base 3.7.0 + _ZNK4geos4geom30CoordinateArraySequenceFactory6createERKNS0_18CoordinateSequenceE@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEjj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom30CoordinateArraySequenceFactory6createEmm@Base 3.7.0 + _ZNK4geos4geom30CoordinateArraySequenceFactory6createEv@Base 3.5.0 + (subst)_ZNK4geos4geom32DefaultCoordinateSequenceFactory6createEOSt6vectorINS0_10CoordinateESaIS3_EE{size_t}@Base 3.8.0 + (subst)_ZNK4geos4geom32DefaultCoordinateSequenceFactory6createEPSt6vectorINS0_10CoordinateESaIS3_EE{size_t}@Base 3.8.0 + _ZNK4geos4geom32DefaultCoordinateSequenceFactory6createERKNS0_18CoordinateSequenceE@Base 3.8.0 + _ZNK4geos4geom32DefaultCoordinateSequenceFactory6createEv@Base 3.8.0 + (subst)_ZNK4geos4geom32DefaultCoordinateSequenceFactory6createE{size_t}{size_t}@Base 3.8.0 + _ZNK4geos4geom4prep13PreparedPoint10intersectsEPKNS0_8GeometryE@Base 3.5.0 + _ZNK4geos4geom4prep15PreparedPolygon10intersectsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep15PreparedPolygon15getPointLocatorEv@Base 3.4.2 + _ZNK4geos4geom4prep15PreparedPolygon16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep15PreparedPolygon21getIntersectionFinderEv@Base 3.4.2 + _ZNK4geos4geom4prep15PreparedPolygon6coversEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep15PreparedPolygon8containsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep18PreparedLineString10intersectsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry10intersectsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry11getGeometryEv@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry14envelopeCoversEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry16containsProperlyEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry18envelopesIntersectEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry26isAnyTargetComponentInTestEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry6coversEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry6withinEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry7crossesEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry7touchesEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry8containsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry8disjointEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry8overlapsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep21BasicPreparedGeometry9coveredByEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep23PreparedGeometryFactory6createEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep24PreparedPolygonPredicate26isAnyTestComponentInTargetEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep24PreparedPolygonPredicate30isAnyTargetComponentInAreaTestEPKNS0_8GeometryEPKSt6vectorIPKNS0_10CoordinateESaIS9_EE@Base 3.4.2 + _ZNK4geos4geom4prep24PreparedPolygonPredicate33getOutermostTestComponentLocationEPKNS0_8GeometryE@Base 3.8.0 + _ZNK4geos4geom4prep24PreparedPolygonPredicate34isAnyTestComponentInTargetInteriorEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep24PreparedPolygonPredicate35isAllTestComponentsInTargetInteriorEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep28PreparedLineStringIntersects10intersectsEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4prep28PreparedLineStringIntersects22isAnyTestPointInTargetEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom4util15SineStarFactory14createSineStarEv@Base 3.4.2 + _ZNK4geos4geom4util9Densifier17getResultGeometryEv@Base 3.8.0 + _ZNK4geos4geom5Point11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom5Point11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom5Point12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom5Point12getNumPointsEv@Base 3.4.2 + _ZNK4geos4geom5Point12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom5Point13getCoordinateEv@Base 3.4.2 + _ZNK4geos4geom5Point14getCoordinatesEv@Base 3.4.2 + _ZNK4geos4geom5Point15getGeometryTypeB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom5Point16getCoordinatesROEv@Base 3.4.2 + _ZNK4geos4geom5Point17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom5Point18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom5Point20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom5Point22getCoordinateDimensionEv@Base 3.4.2 + _ZNK4geos4geom5Point23computeEnvelopeInternalEv@Base 3.4.2 + _ZNK4geos4geom5Point4getXEv@Base 3.4.2 + _ZNK4geos4geom5Point4getYEv@Base 3.4.2 + _ZNK4geos4geom5Point4getZEv@Base 3.7.0 + _ZNK4geos4geom5Point5cloneEv@Base 3.4.2 + _ZNK4geos4geom5Point7isEmptyEv@Base 3.4.2 + _ZNK4geos4geom5Point7reverseEv@Base 3.7.0 + _ZNK4geos4geom5Point8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 + _ZNK4geos4geom5Point8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 + _ZNK4geos4geom5Point8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZNK4geos4geom5Point8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZNK4geos4geom5Point8isSimpleEv@Base 3.4.2 + _ZNK4geos4geom7Polygon10convexHullEv@Base 3.4.2 + _ZNK4geos4geom7Polygon11equalsExactEPKNS0_8GeometryEd@Base 3.4.2 + _ZNK4geos4geom7Polygon11getBoundaryEv@Base 3.4.2 + _ZNK4geos4geom7Polygon11isRectangleEv@Base 3.4.2 + _ZNK4geos4geom7Polygon12getDimensionEv@Base 3.4.2 + _ZNK4geos4geom7Polygon12getNumPointsEv@Base 3.4.2 + _ZNK4geos4geom7Polygon12getSortIndexEv@Base 3.8.0 + _ZNK4geos4geom7Polygon13getCoordinateEv@Base 3.4.2 + _ZNK4geos4geom7Polygon14getCoordinatesEv@Base 3.4.2 + _ZNK4geos4geom7Polygon15getExteriorRingEv@Base 3.4.2 + _ZNK4geos4geom7Polygon15getGeometryTypeB5cxx11Ev@Base 3.5.1 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom7Polygon16getInteriorRingNEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom7Polygon16getInteriorRingNEm@Base 3.7.0 + _ZNK4geos4geom7Polygon17getGeometryTypeIdEv@Base 3.4.2 + _ZNK4geos4geom7Polygon18compareToSameClassEPKNS0_8GeometryE@Base 3.4.2 + _ZNK4geos4geom7Polygon18getNumInteriorRingEv@Base 3.4.2 + _ZNK4geos4geom7Polygon20getBoundaryDimensionEv@Base 3.4.2 + _ZNK4geos4geom7Polygon22getCoordinateDimensionEv@Base 3.4.2 + _ZNK4geos4geom7Polygon23computeEnvelopeInternalEv@Base 3.4.2 + _ZNK4geos4geom7Polygon5cloneEv@Base 3.4.2 + _ZNK4geos4geom7Polygon7getAreaEv@Base 3.4.2 + _ZNK4geos4geom7Polygon7isEmptyEv@Base 3.4.2 + _ZNK4geos4geom7Polygon7reverseEv@Base 3.7.0 + _ZNK4geos4geom7Polygon8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 + _ZNK4geos4geom7Polygon8apply_roEPNS0_16CoordinateFilterE@Base 3.4.2 + _ZNK4geos4geom7Polygon8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZNK4geos4geom7Polygon8apply_roERNS0_24CoordinateSequenceFilterE@Base 3.4.2 + _ZNK4geos4geom7Polygon9getLengthEv@Base 3.4.2 + _ZNK4geos4geom8Envelope10intersectsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope10intersectsERKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom8Envelope10intersectsERKNS0_10CoordinateES4_@Base 3.8.0 + _ZNK4geos4geom8Envelope10intersectsERKS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope10intersectsEdd@Base 3.4.2 + _ZNK4geos4geom8Envelope12intersectionERKS1_RS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope6centreERNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom8Envelope6coversEPKNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom8Envelope6coversERKS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope6coversEdd@Base 3.4.2 + _ZNK4geos4geom8Envelope6equalsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope6isNullEv@Base 3.4.2 + _ZNK4geos4geom8Envelope7getMaxXEv@Base 3.4.2 + _ZNK4geos4geom8Envelope7getMaxYEv@Base 3.4.2 + _ZNK4geos4geom8Envelope7getMinXEv@Base 3.4.2 + _ZNK4geos4geom8Envelope7getMinYEv@Base 3.4.2 + _ZNK4geos4geom8Envelope8distanceEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Envelope8getWidthEv@Base 3.4.2 + _ZNK4geos4geom8Envelope8hashCodeEv@Base 3.4.2 + _ZNK4geos4geom8Envelope8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom8Envelope9getHeightEv@Base 3.4.2 + _ZNK4geos4geom8Geometry10convexHullEv@Base 3.4.2 + _ZNK4geos4geom8Geometry10differenceEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry10intersectsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry11getCentroidERNS0_10CoordinateE@Base 3.4.2 + _ZNK4geos4geom8Geometry11getCentroidEv@Base 3.4.2 + _ZNK4geos4geom8Geometry11getEnvelopeEv@Base 3.4.2 + _ZNK4geos4geom8Geometry11isRectangleEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos4geom8Geometry12getGeometryNEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos4geom8Geometry12getGeometryNEm@Base 3.7.0 + _ZNK4geos4geom8Geometry12intersectionEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry13symDifferenceEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry16getInteriorPointEv@Base 3.4.2 + _ZNK4geos4geom8Geometry16getNumGeometriesEv@Base 3.4.2 + _ZNK4geos4geom8Geometry16isWithinDistanceEPKS1_d@Base 3.4.2 + _ZNK4geos4geom8Geometry17getPrecisionModelEv@Base 3.4.2 + _ZNK4geos4geom8Geometry17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 + _ZNK4geos4geom8Geometry17isEquivalentClassEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry19getEnvelopeInternalEv@Base 3.4.2 + _ZNK4geos4geom8Geometry5UnionEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry5UnionEv@Base 3.4.2 + _ZNK4geos4geom8Geometry5equalERKNS0_10CoordinateES4_d@Base 3.4.2 + _ZNK4geos4geom8Geometry6bufferEd@Base 3.4.2 + _ZNK4geos4geom8Geometry6bufferEdi@Base 3.4.2 + _ZNK4geos4geom8Geometry6bufferEdii@Base 3.4.2 + _ZNK4geos4geom8Geometry6coversEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry6equalsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry6relateEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry6relateEPKS1_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 3.5.1 + _ZNK4geos4geom8Geometry6toTextB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom8Geometry6withinEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry7compareERKSt6vectorISt10unique_ptrIS1_St14default_deleteIS1_EESaIS6_EESA_@Base 3.8.0 + _ZNK4geos4geom8Geometry7compareESt6vectorINS0_10CoordinateESaIS3_EES5_@Base 3.4.2 + _ZNK4geos4geom8Geometry7compareESt6vectorIPS1_SaIS3_EES5_@Base 3.4.2 + _ZNK4geos4geom8Geometry7crossesEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry7getAreaEv@Base 3.4.2 + _ZNK4geos4geom8Geometry7getSRIDEv@Base 3.4.2 + _ZNK4geos4geom8Geometry7isValidEv@Base 3.4.2 + _ZNK4geos4geom8Geometry7touchesEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry8apply_roEPNS0_14GeometryFilterE@Base 3.4.2 + _ZNK4geos4geom8Geometry8apply_roEPNS0_23GeometryComponentFilterE@Base 3.4.2 + _ZNK4geos4geom8Geometry8containsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry8disjointEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry8distanceEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry8isSimpleEv@Base 3.4.2 + _ZNK4geos4geom8Geometry8overlapsEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos4geom8Geometry9compareToEPKS1_@Base 3.4.2 + _ZNK4geos4geom8Geometry9getLengthEv@Base 3.4.2 + _ZNK4geos4geom8Triangle3detEdddd@Base 3.5.0 + _ZNK4geos4util21GeometricShapeFactory10Dimensions11getEnvelopeEv@Base 3.4.2 + _ZNK4geos4util21GeometricShapeFactory5coordEdd@Base 3.4.2 + _ZNK4geos4util7Profile13getNumTimingsEv@Base 3.4.2 + _ZNK4geos4util7Profile15getTotFormattedB5cxx11Ev@Base 3.8.0 + _ZNK4geos4util7Profile6getAvgEv@Base 3.4.2 + _ZNK4geos4util7Profile6getMaxEv@Base 3.4.2 + _ZNK4geos4util7Profile6getMinEv@Base 3.4.2 + _ZNK4geos4util7Profile6getTotEv@Base 3.4.2 + _ZNK4geos5index13intervalrtree21IntervalRTreeLeafNode5queryEddPNS0_11ItemVisitorE@Base 3.4.2 + _ZNK4geos5index13intervalrtree23IntervalRTreeBranchNode5queryEddPNS0_11ItemVisitorE@Base 3.4.2 + _ZNK4geos5index5chain13MonotoneChain11getEnvelopeEv@Base 3.4.2 + _ZNK4geos5index5chain13MonotoneChain14getCoordinatesEv@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos5index5chain13MonotoneChain14getLineSegmentEjRNS_4geom11LineSegmentE@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos5index5chain13MonotoneChain14getLineSegmentEmRNS_4geom11LineSegmentE@Base 3.7.0 + _ZNK4geos5index7bintree8Interval6getMaxEv@Base 3.4.2 + _ZNK4geos5index7bintree8Interval6getMinEv@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8containsEPKS2_@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8containsEd@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8containsEdd@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8getWidthEv@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8overlapsEPKS2_@Base 3.4.2 + _ZNK4geos5index7bintree8Interval8overlapsEdd@Base 3.4.2 + _ZNK4geos5index7strtree12AbstractNode6isLeafEv@Base 3.8.0 + _ZNK4geos5index7strtree12AbstractNode9getBoundsEv@Base 3.4.2 + _ZNK4geos5index7strtree13BoundablePair11getDistanceEv@Base 3.6.0 + _ZNK4geos5index7strtree13BoundablePair12getBoundableEi@Base 3.6.0 + _ZNK4geos5index7strtree13BoundablePair8distanceEv@Base 3.6.0 + _ZNK4geos5index7strtree13BoundablePair8isLeavesEv@Base 3.6.0 + _ZNK4geos5index7strtree13ItemBoundable6isLeafEv@Base 3.8.0 + _ZNK4geos5index7strtree13ItemBoundable9getBoundsEv@Base 3.4.2 + _ZNK4geos5index7strtree15SIRAbstractNode13computeBoundsEv@Base 3.4.2 + _ZNK4geos5index7strtree15STRAbstractNode13computeBoundsEv@Base 3.4.2 + _ZNK4geos5index7strtree8Interval10intersectsEPKS2_@Base 3.5.0 + _ZNK4geos5index7strtree8Interval6equalsEPKS2_@Base 3.5.0 + _ZNK4geos5index8quadtree10DoubleBits11getExponentEv@Base 3.4.2 + _ZNK4geos5index8quadtree10DoubleBits14biasedExponentEv@Base 3.4.2 + _ZNK4geos5index8quadtree10DoubleBits21numCommonMantissaBitsERKS2_@Base 3.4.2 + _ZNK4geos5index8quadtree10DoubleBits6getBitEi@Base 3.4.2 + _ZNK4geos5index8quadtree10DoubleBits8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos5index8quadtree10DoubleBits9getDoubleEv@Base 3.4.2 + _ZNK4geos5index8quadtree3Key11getEnvelopeEv@Base 3.4.2 + _ZNK4geos5index8quadtree3Key8getLevelEv@Base 3.4.2 + _ZNK4geos5index8quadtree3Key8getPointEv@Base 3.4.2 + _ZNK4geos5index8quadtree3Key9getCentreEv@Base 3.4.2 + _ZNK4geos5index8quadtree4Node13isSearchMatchERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZNK4geos5index8quadtree4Node8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos5index8quadtree4Root13isSearchMatchERKNS_4geom8EnvelopeE@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase11addAllItemsERSt6vectorIPvSaIS4_EE@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase12getNodeCountEv@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase26addAllItemsFromOverlappingERKNS_4geom8EnvelopeERSt6vectorIPvSaIS8_EE@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase4sizeEv@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase5depthEv@Base 3.4.2 + _ZNK4geos5index8quadtree8NodeBase8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos5index8quadtree8Quadtree8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos5index9sweepline14SweepLineEvent9compareToEPKS2_@Base 3.4.2 + _ZNK4geos5index9sweepline22SweepLineEventLessThenclEPKNS1_14SweepLineEventES5_@Base 3.4.2 + _ZNK4geos6noding11ScaledNoder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding11ScaledNoder5scaleERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZNK4geos6noding11ScaledNoder6Scaler9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos6noding11ScaledNoder7rescaleERSt6vectorIPNS0_13SegmentStringESaIS4_EE@Base 3.4.2 + _ZNK4geos6noding11ScaledNoder8ReScaler9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos6noding11SegmentNode10isEndPointEj@Base 3.4.2 + _ZNK4geos6noding11SimpleNoder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding12MCIndexNoder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding13IteratedNoder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding13SegmentString5printERSo@Base 3.4.2 + _ZNK4geos6noding15NodingValidator13checkCollapseERKNS_4geom10CoordinateES5_S5_@Base 3.4.2 + _ZNK4geos6noding15NodingValidator14checkCollapsesERKNS0_13SegmentStringE@Base 3.4.2 + _ZNK4geos6noding15NodingValidator14checkCollapsesEv@Base 3.4.2 + _ZNK4geos6noding15NodingValidator23hasInteriorIntersectionERKNS_9algorithm15LineIntersectorERKNS_4geom10CoordinateES9_@Base 3.4.2 + _ZNK4geos6noding15NodingValidator29checkEndPtVertexIntersectionsERKNS_4geom10CoordinateERKSt6vectorIPNS0_13SegmentStringESaIS8_EE@Base 3.4.2 + _ZNK4geos6noding15NodingValidator29checkEndPtVertexIntersectionsEv@Base 3.4.2 + _ZNK4geos6noding17IntersectionAdder6isDoneEv@Base 3.4.2 + (subst)_ZNK4geos6noding18BasicSegmentString13getCoordinateE{size_t}@Base 3.8.0 + _ZNK4geos6noding18BasicSegmentString14getCoordinatesEv@Base 3.4.2 + (subst)_ZNK4geos6noding18BasicSegmentString16getSegmentOctantE{size_t}@Base 3.8.0 + _ZNK4geos6noding18BasicSegmentString4sizeEv@Base 3.4.2 + _ZNK4geos6noding18BasicSegmentString5printERSo@Base 3.4.2 + _ZNK4geos6noding18BasicSegmentString8isClosedEv@Base 3.4.2 + _ZNK4geos6noding18NodedSegmentString11getNodeListEv@Base 3.4.2 + (subst)_ZNK4geos6noding18NodedSegmentString13getCoordinateE{size_t}@Base 3.8.0 + _ZNK4geos6noding18NodedSegmentString14getCoordinatesEv@Base 3.4.2 + (subst)_ZNK4geos6noding18NodedSegmentString16getSegmentOctantE{size_t}@Base 3.8.0 + _ZNK4geos6noding18NodedSegmentString4sizeEv@Base 3.4.2 + _ZNK4geos6noding18NodedSegmentString5printERSo@Base 3.4.2 + _ZNK4geos6noding18NodedSegmentString8isClosedEv@Base 3.4.2 + _ZNK4geos6noding18SegmentIntersector6isDoneEv@Base 3.4.2 + _ZNK4geos6noding19FastNodingValidator15getErrorMessageB5cxx11Ev@Base 3.5.1 + _ZNK4geos6noding23IntersectionFinderAdder6isDoneEv@Base 3.4.2 + _ZNK4geos6noding23OrientedCoordinateArray8HashCodeclERKS1_@Base 3.8.0 + _ZNK4geos6noding23OrientedCoordinateArray9compareToERKS1_@Base 3.4.2 + _ZNK4geos6noding23OrientedCoordinateArrayeqERKS1_@Base 3.8.0 + _ZNK4geos6noding24NodingIntersectionFinder6isDoneEv@Base 3.8.0 + _ZNK4geos6noding27SegmentIntersectionDetector6isDoneEv@Base 3.4.2 + _ZNK4geos6noding9snapround17SimpleSnapRounder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding9snapround18MCIndexSnapRounder18getNodedSubstringsEv@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel10copyScaledERKNS_4geom10CoordinateERS4_@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel10intersectsERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel15getSafeEnvelopeEv@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel16intersectsScaledERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel25intersectsToleranceSquareERKNS_4geom10CoordinateES6_@Base 3.4.2 + _ZNK4geos6noding9snapround8HotPixel5scaleEd@Base 3.4.2 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos8simplify16TaggedLineString10getSegmentEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos8simplify16TaggedLineString10getSegmentEm@Base 3.7.0 + _ZNK4geos8simplify16TaggedLineString11getSegmentsEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString12asLineStringEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString12asLinearRingEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString13getResultSizeEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString14getMinimumSizeEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString20getParentCoordinatesEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString20getResultCoordinatesEv@Base 3.4.2 + _ZNK4geos8simplify16TaggedLineString9getParentEv@Base 3.4.2 + _ZNK4geos8simplify17TaggedLineSegment8getIndexEv@Base 3.4.2 + _ZNK4geos8simplify17TaggedLineSegment9getParentEv@Base 3.4.2 + _ZNK4geos8simplify26TaggedLineStringSimplifier23hasInteriorIntersectionERKNS_4geom11LineSegmentES5_@Base 3.4.2 + _ZNK4geos9algorithm11HCoordinate13getCoordinateERNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm11HCoordinate4getXEv@Base 3.4.2 + _ZNK4geos9algorithm11HCoordinate4getYEv@Base 3.4.2 + _ZNK4geos9algorithm15LineIntersector12intersectionERKNS_4geom10CoordinateES5_S5_S5_@Base 3.8.0 + _ZNK4geos9algorithm15LineIntersector14isIntersectionERKNS_4geom10CoordinateE@Base 3.4.2 + (subst)_ZNK4geos9algorithm15LineIntersector15getEdgeDistanceE{size_t}{size_t}@Base 3.8.0 + _ZNK4geos9algorithm15LineIntersector16intersectionSafeERKNS_4geom10CoordinateES5_S5_S5_@Base 3.8.0 + _ZNK4geos9algorithm15LineIntersector20isInSegmentEnvelopesERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm15LineIntersector8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos9algorithm17InteriorPointArea16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm17InteriorPointLine16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm18InteriorPointPoint16getInteriorPointERNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm8Centroid11getCentroidERNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter17isGeometryChangedEv@Base 3.4.2 + _ZNK4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilter6isDoneEv@Base 3.4.2 + _ZNK4geos9geomgraph11EdgeEndStar13getCoordinateEv@Base 3.6.0 + _ZNK4geos9geomgraph11EdgeEndStar3endEv@Base 3.6.0 + _ZNK4geos9geomgraph11EdgeEndStar5beginEv@Base 3.6.0 + _ZNK4geos9geomgraph11EdgeEndStar5printB5cxx11Ev@Base 3.6.0 + _ZNK4geos9geomgraph11NodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9geomgraph12DirectedEdge13getDepthDeltaEv@Base 3.6.2 + _ZNK4geos9geomgraph12DirectedEdge5printB5cxx11Ev@Base 3.6.2 + _ZNK4geos9geomgraph14GraphComponent10isInResultEv@Base 3.4.2 + _ZNK4geos9geomgraph14GraphComponent12isCoveredSetEv@Base 3.4.2 + _ZNK4geos9geomgraph14GraphComponent9isCoveredEv@Base 3.4.2 + _ZNK4geos9geomgraph14GraphComponent9isVisitedEv@Base 3.4.2 + _ZNK4geos9geomgraph16DirectedEdgeStar5printB5cxx11Ev@Base 3.6.2 + _ZNK4geos9geomgraph16TopologyLocation12getLocationsEv@Base 3.4.2 + _ZNK4geos9geomgraph16TopologyLocation13isEqualOnSideERKS1_i@Base 3.4.2 + _ZNK4geos9geomgraph16TopologyLocation17allPositionsEqualENS_4geom8LocationE@Base 3.8.0 + (arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNK4geos9geomgraph16TopologyLocation3getEj@Base 3.4.2 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNK4geos9geomgraph16TopologyLocation3getEm@Base 3.7.0 + _ZNK4geos9geomgraph16TopologyLocation6isAreaEv@Base 3.4.2 + _ZNK4geos9geomgraph16TopologyLocation6isLineEv@Base 3.4.2 + _ZNK4geos9geomgraph16TopologyLocation6isNullEv@Base 3.4.2 + _ZNK4geos9geomgraph16TopologyLocation8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph16TopologyLocation9isAnyNullEv@Base 3.4.2 + _ZNK4geos9geomgraph20EdgeIntersectionList14isIntersectionERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9geomgraph20EdgeIntersectionList5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph20EdgeIntersectionList7isEmptyEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge10isIsolatedEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge11isCollapsedEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge12getNumPointsEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge12printReverseB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph4Edge13getCoordinateEv@Base 3.4.2 + (subst)_ZNK4geos9geomgraph4Edge13getCoordinateE{size_t}@Base 3.8.0 + _ZNK4geos9geomgraph4Edge13getDepthDeltaEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge14getCoordinatesEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge16isPointwiseEqualEPKS1_@Base 3.4.2 + _ZNK4geos9geomgraph4Edge22getMaximumSegmentIndexEv@Base 3.4.2 + _ZNK4geos9geomgraph4Edge5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph4Edge6equalsEPKS1_@Base 3.4.2 + _ZNK4geos9geomgraph4Edge6equalsERKS1_@Base 3.4.2 + _ZNK4geos9geomgraph4Edge8isClosedEv@Base 3.4.2 + _ZNK4geos9geomgraph4Node10isIsolatedEv@Base 3.4.2 + _ZNK4geos9geomgraph4Node13getCoordinateEv@Base 3.4.2 + _ZNK4geos9geomgraph4Node22isIncidentEdgeInResultEv@Base 3.4.2 + _ZNK4geos9geomgraph4Node4getZEv@Base 3.4.2 + _ZNK4geos9geomgraph5Depth11getLocationEii@Base 3.4.2 + _ZNK4geos9geomgraph5Depth6isNullEi@Base 3.4.2 + _ZNK4geos9geomgraph5Depth6isNullEii@Base 3.4.2 + _ZNK4geos9geomgraph5Depth6isNullEv@Base 3.4.2 + _ZNK4geos9geomgraph5Depth8getDeltaEi@Base 3.4.2 + _ZNK4geos9geomgraph5Depth8getDepthEii@Base 3.4.2 + _ZNK4geos9geomgraph5Depth8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph5Label11getLocationEi@Base 3.4.2 + _ZNK4geos9geomgraph5Label11getLocationEii@Base 3.4.2 + _ZNK4geos9geomgraph5Label13isEqualOnSideERKS1_i@Base 3.4.2 + _ZNK4geos9geomgraph5Label16getGeometryCountEv@Base 3.4.2 + _ZNK4geos9geomgraph5Label17allPositionsEqualEiNS_4geom8LocationE@Base 3.8.0 + _ZNK4geos9geomgraph5Label6isAreaEi@Base 3.4.2 + _ZNK4geos9geomgraph5Label6isAreaEv@Base 3.4.2 + _ZNK4geos9geomgraph5Label6isLineEi@Base 3.4.2 + _ZNK4geos9geomgraph5Label6isNullEi@Base 3.4.2 + _ZNK4geos9geomgraph5Label6isNullEv@Base 3.4.2 + _ZNK4geos9geomgraph5Label8toStringB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph5Label9isAnyNullEi@Base 3.4.2 + _ZNK4geos9geomgraph7EdgeEnd16compareDirectionEPKS1_@Base 3.4.2 + _ZNK4geos9geomgraph7EdgeEnd5printB5cxx11Ev@Base 3.6.0 + _ZNK4geos9geomgraph7EdgeEnd9compareToEPKS1_@Base 3.4.2 + _ZNK4geos9geomgraph7NodeMap16getBoundaryNodesEiRSt6vectorIPNS0_4NodeESaIS4_EE@Base 3.4.2 + _ZNK4geos9geomgraph7NodeMap4findERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9geomgraph7NodeMap5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos9geomgraph8EdgeList13findEdgeIndexEPKNS0_4EdgeE@Base 3.8.0 + _ZNK4geos9geomgraph8EdgeList13findEqualEdgeEPKNS0_4EdgeE@Base 3.8.0 + _ZNK4geos9linearref14LinearIterator11isEndOfLineEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator13getSegmentEndEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator14getVertexIndexEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator15getSegmentStartEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator17getComponentIndexEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator7getLineEv@Base 3.4.2 + _ZNK4geos9linearref14LinearIterator7hasNextEv@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation10getSegmentEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation10isEndpointERKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation13getCoordinateEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation15getSegmentIndexEv@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation15isOnSameSegmentERKS1_@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation16getSegmentLengthEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation17getComponentIndexEv@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation18getSegmentFractionEv@Base 3.4.2 + (subst)_ZNK4geos9linearref14LinearLocation21compareLocationValuesE{size_t}{size_t}d@Base 3.8.0 + _ZNK4geos9linearref14LinearLocation7isValidEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation8isVertexEv@Base 3.4.2 + _ZNK4geos9linearref14LinearLocation9compareToERKS1_@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine10clampIndexEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine10locationOfEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine10locationOfEdb@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine11extractLineEdd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine11getEndIndexEv@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine12extractPointEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine12extractPointEdd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine12indexOfAfterERKNS_4geom10CoordinateEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine12isValidIndexEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine13getStartIndexEv@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine13positiveIndexEd@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine7projectERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9linearref17LengthIndexedLine9indicesOfEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref17LengthLocationMap11getLocationEd@Base 3.4.2 + _ZNK4geos9linearref17LengthLocationMap11getLocationEdb@Base 3.4.2 + _ZNK4geos9linearref17LengthLocationMap13resolveHigherERKNS0_14LinearLocationE@Base 3.4.2 + _ZNK4geos9linearref17LengthLocationMap18getLocationForwardEd@Base 3.4.2 + _ZNK4geos9linearref17LengthLocationMap9getLengthERKNS0_14LinearLocationE@Base 3.4.2 + _ZNK4geos9linearref18LengthIndexOfPoint12indexOfAfterERKNS_4geom10CoordinateEd@Base 3.4.2 + _ZNK4geos9linearref18LengthIndexOfPoint16indexOfFromStartERKNS_4geom10CoordinateEd@Base 3.4.2 + _ZNK4geos9linearref18LengthIndexOfPoint21segmentNearestMeasureEPKNS_4geom11LineSegmentERKNS2_10CoordinateEd@Base 3.4.2 + _ZNK4geos9linearref18LengthIndexOfPoint7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9linearref19LocationIndexOfLine9indicesOfEPKNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9linearref20LocationIndexOfPoint12indexOfAfterERKNS_4geom10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 + _ZNK4geos9linearref20LocationIndexOfPoint16indexOfFromStartERKNS_4geom10CoordinateEPKNS0_14LinearLocationE@Base 3.4.2 + _ZNK4geos9linearref20LocationIndexOfPoint7indexOfERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9linearref21LinearGeometryBuilder17getLastCoordinateEv@Base 3.4.2 + _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge7getNextEv@Base 3.4.2 + _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge8getLabelEv@Base 3.4.2 + _ZNK4geos9operation10polygonize22PolygonizeDirectedEdge8isInRingEv@Base 3.4.2 + _ZNK4geos9operation10polygonize8EdgeRing12getOuterHoleEv@Base 3.8.0 + _ZNK4geos9operation12intersection28RectangleIntersectionBuilder5emptyEv@Base 3.5.0 + _ZNK4geos9operation12intersection9Rectangle12toLinearRingERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZNK4geos9operation12intersection9Rectangle9toPolygonERKNS_4geom15GeometryFactoryE@Base 3.5.0 + _ZNK4geos9operation22GeometryGraphOperation14getArgGeometryEj@Base 3.4.2 + _ZNK4geos9operation6buffer13BufferBuilder25createEmptyResultGeometryEv@Base 3.4.2 + (subst)_ZNK4geos9operation6buffer25BufferInputLineSimplifier11isDeletableE{size_t}{size_t}{size_t}d@Base 3.8.0 + _ZNK4geos9operation6buffer25BufferInputLineSimplifier12collapseLineEv@Base 3.4.2 + (subst)_ZNK4geos9operation6buffer25BufferInputLineSimplifier16isShallowSampledERKNS_4geom10CoordinateES6_{size_t}{size_t}d@Base 3.8.0 + _ZNK4geos9operation6buffer25BufferInputLineSimplifier18isShallowConcavityERKNS_4geom10CoordinateES6_S6_d@Base 3.4.2 + (subst)_ZNK4geos9operation6buffer25BufferInputLineSimplifier23findNextNonDeletedIndexE{size_t}@Base 3.8.0 + _ZNK4geos9operation6buffer25BufferInputLineSimplifier9isConcaveERKNS_4geom10CoordinateES6_S6_@Base 3.4.2 + _ZNK4geos9operation6buffer25BufferInputLineSimplifier9isShallowERKNS_4geom10CoordinateES6_S6_d@Base 3.4.2 + _ZNK4geos9operation6relate13EdgeEndBundle5printB5cxx11Ev@Base 3.7.0 + _ZNK4geos9operation6relate17RelateNodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9operation7overlay15ElevationMatrix15getAvgElevationEv@Base 3.4.2 + _ZNK4geos9operation7overlay15ElevationMatrix5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos9operation7overlay15ElevationMatrix7elevateEPNS_4geom8GeometryE@Base 3.4.2 + _ZNK4geos9operation7overlay15ElevationMatrix7getCellERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9operation7overlay18OverlayNodeFactory10createNodeERKNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9operation7overlay19ElevationMatrixCell5printB5cxx11Ev@Base 3.5.1 + _ZNK4geos9operation7overlay19ElevationMatrixCell6getAvgEv@Base 3.4.2 + _ZNK4geos9operation7overlay19ElevationMatrixCell8getTotalEv@Base 3.4.2 + _ZNK4geos9operation7overlay21ElevationMatrixFilter9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9operation7overlay9OverlayOp6mergeZEPNS_9geomgraph4NodeEPKNS_4geom10LineStringE@Base 3.4.2 + _ZNK4geos9operation7overlay9OverlayOp6mergeZEPNS_9geomgraph4NodeEPKNS_4geom7PolygonE@Base 3.4.2 + _ZNK4geos9operation8distance13FacetSequence11getEnvelopeEv@Base 3.6.0 + (subst)_ZNK4geos9operation8distance13FacetSequence13getCoordinateE{size_t}@Base 3.6.0 + _ZNK4geos9operation8distance13FacetSequence16nearestLocationsERKS2_@Base 3.8.0 + _ZNK4geos9operation8distance13FacetSequence23computeDistanceLineLineERKS2_PSt6vectorINS1_16GeometryLocationESaIS6_EE@Base 3.8.0 + _ZNK4geos9operation8distance13FacetSequence24computeDistancePointLineERKNS_4geom10CoordinateERKS2_PSt6vectorINS1_16GeometryLocationESaISA_EE@Base 3.8.0 + (subst)_ZNK4geos9operation8distance13FacetSequence30updateNearestLocationsLineLineE{size_t}RKNS_4geom10CoordinateES6_RKS2_{size_t}S6_S6_PSt6vectorINS1_16GeometryLocationESaISA_EE@Base 3.8.0 + (subst)_ZNK4geos9operation8distance13FacetSequence31updateNearestLocationsPointLineERKNS_4geom10CoordinateERKS2_{size_t}S6_S6_PSt6vectorINS1_16GeometryLocationESaISA_EE@Base 3.8.0 + _ZNK4geos9operation8distance13FacetSequence4sizeEv@Base 3.6.0 + _ZNK4geos9operation8distance13FacetSequence7isPointEv@Base 3.6.0 + _ZNK4geos9operation8distance13FacetSequence8distanceERKS2_@Base 3.7.0 + _ZNK4geos9operation8distance20IndexedFacetDistance13nearestPointsEPKNS_4geom8GeometryE@Base 3.8.0 + _ZNK4geos9operation8distance20IndexedFacetDistance16nearestLocationsEPKNS_4geom8GeometryE@Base 3.8.0 + _ZNK4geos9operation8distance20IndexedFacetDistance8distanceEPKNS_4geom8GeometryE@Base 3.8.0 + _ZNK4geos9operation8geounion18PointGeometryUnion5UnionEv@Base 3.4.2 + _ZNK4geos9operation9linemerge13LineMergeEdge7getLineEv@Base 3.4.2 + _ZNK4geos9precision10Translater9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 + _ZNK4geos9precision22CommonCoordinateFilter9filter_rwEPNS_4geom10CoordinateE@Base 3.4.2 + (optional=templinst)_ZNK6ttmath3BigILj1ELj4EE8ToDoubleERd@Base 3.8.0 + (optional=templinst|subst)_ZNKSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE19_M_find_before_nodeE{size_t}RKS2_{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNKSt10_HashtableIN4geos6noding23OrientedCoordinateArrayESt4pairIKS2_PNS0_9geomgraph4EdgeEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS2_8HashCodeENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE19_M_find_before_nodeE{size_t}RS4_{size_t}@Base 3.8.0 + (optional=templinst)_ZNKSt5ctypeIcE8do_widenEc@Base 3.4.2 + (optional=templinst|arch=!armel !armhf)_ZNSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE10_M_emplaceIJS2_EEESt4pairINS4_14_Node_iteratorIS2_Lb1ELb1EEEbESt17integral_constantIbLb1EEDpOT_@Base 3.8.0 + (optional=templinst|arch=armel armhf riscv64|subst)_ZNSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE21_M_insert_unique_nodeE{size_t}{size_t}PNS4_10_Hash_nodeIS2_Lb1EEE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE9_M_rehashE{size_t}RK{size_t}@Base 3.8.0 + (optional=templinst)_ZNSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt10_HashtableIN4geos4geom11LineSegmentES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ENS2_8HashCodeENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZNSt10_HashtableIN4geos6noding23OrientedCoordinateArrayESt4pairIKS2_PNS0_9geomgraph4EdgeEESaIS8_ENSt8__detail10_Select1stESt8equal_toIS2_ENS2_8HashCodeENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_rehashE{size_t}RK{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNSt10_HashtableIPKN4geos4geom8GeometryESt4pairIKS4_PNS0_8simplify16TaggedLineStringEESaISA_ENSt8__detail10_Select1stESt8equal_toIS4_ESt4hashIS4_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashE{size_t}RK{size_t}@Base 3.8.0 + (optional=templinst)_ZNSt10_HashtableIPKN4geos4geom8GeometryESt4pairIKS4_PNS0_8simplify16TaggedLineStringEESaISA_ENSt8__detail10_Select1stESt8equal_toIS4_ESt4hashIS4_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb0ELb0ELb1EEEED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt10_HashtableIPKN4geos4geom8GeometryESt4pairIKS4_PNS0_8simplify16TaggedLineStringEESaISA_ENSt8__detail10_Select1stESt8equal_toIS4_ESt4hashIS4_ENSC_18_Mod_range_hashingENSC_20_Default_ranged_hashENSC_20_Prime_rehash_policyENSC_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt11_Deque_baseIPN4geos11planargraph4NodeESaIS3_EED1Ev@Base 3.4.2 + (optional=templinst)_ZNSt11_Deque_baseIPN4geos11planargraph4NodeESaIS3_EED2Ev@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_initialize_mapEj@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_initialize_mapEm@Base 3.4.2 + (optional=templinst)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EED1Ev@Base 3.4.2 + (optional=templinst)_ZNSt11_Deque_baseIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EED2Ev@Base 3.4.2 + (optional=templinst|subst)_ZNSt5dequeIN4geos9geomgraph5index14SweepLineEventESaIS3_EE17_M_reallocate_mapE{size_t}b@Base 3.8.0 + _ZNSt5dequeIPN4geos11planargraph4NodeESaIS3_EE16_M_push_back_auxIJRKS3_EEEvDpOT_@Base 3.7.0 + _ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE16_M_push_back_auxIJRKS4_EEEvDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE16_M_push_back_auxIJS4_EEEvDpOT_@Base 3.7.0 + (subst)_ZNSt5dequeIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_reallocate_mapE{size_t}b@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIN4geos11triangulate8quadedge6VertexESaIS3_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIN4geos11triangulate8quadedge6VertexESaIS3_EED2Ev@Base 3.8.0 + _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE12emplace_backIJS2_EEEvDpOT_@Base 3.7.0 + (optional=templinst|arch=!arm64)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvT_SB_St20forward_iterator_tag@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE13_M_assign_auxISt20_List_const_iteratorIS2_EEEvT_S8_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIPKS2_EEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EET_SC_St20forward_iterator_tag@Base 3.8.0 + (subst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_default_appendE{size_t}@Base 3.7.2 + _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.7.1 + _ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EEaSERKS4_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIN4geos4geom11LineSegmentESaIS2_EE17_M_realloc_insertIJRKNS1_10CoordinateES8_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.8.0 + (optional=templinst|arch=!armel !armhf !hurd-i386 !i386 !powerpc)_ZNSt6vectorIN4geos5index13intervalrtree21IntervalRTreeLeafNodeESaIS3_EE17_M_realloc_insertIJRdS7_RPvEEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + (optional=templinst|arch=!armel !armhf !hurd-i386 !i386 !powerpc)_ZNSt6vectorIN4geos5index13intervalrtree23IntervalRTreeBranchNodeESaIS3_EE17_M_realloc_insertIJRPKNS2_17IntervalRTreeNodeESA_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + (optional=templinst|arch=!armel !armhf !hurd-i386 !i386 !powerpc|subst)_ZNSt6vectorIN4geos5index13intervalrtree23IntervalRTreeBranchNodeESaIS3_EE7reserveE{size_t}@Base 3.8.0 + _ZNSt6vectorIN4geos5index7strtree13ItemsListItemESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 + _ZNSt6vectorIN4geos5index7strtree13ItemsListItemESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst|subst)_ZNSt6vectorIN4geos9geomgraph16EdgeIntersectionESaIS2_EE12emplace_backIJRKNS0_4geom10CoordinateER{size_t}RdEEEvDpOT_@Base 3.8.0 + (optional=templinst|subst)_ZNSt6vectorIN4geos9geomgraph16EdgeIntersectionESaIS2_EE17_M_realloc_insertIJRKNS0_4geom10CoordinateER{size_t}RdEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIN4geos9geomgraph16EdgeIntersectionESaIS2_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS2_S4_EES8_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIN4geos9operation7overlay14PolygonBuilder11FastPIPRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIN4geos9operation8distance16GeometryLocationESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + (optional=templinst|subst)_ZNSt6vectorINSt6chrono8durationI{int64_t}St5ratioIL{int64_t}1EL{int64_t}1000000EEEESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 3.7.0 + (optional=templinst|arch=armel armhf)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 3.8.0 + (optional=templinst|arch=armel armhf)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev@Base 3.8.0 + _ZNSt6vectorIPKN4geos11planargraph12DirectedEdgeESaIS4_EE12emplace_backIJS4_EEEvDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos11planargraph12DirectedEdgeESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE13_M_assign_auxISt23_Rb_tree_const_iteratorIS4_EEEvT_SA_St20forward_iterator_tag@Base 3.4.2 + (subst)_ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_default_appendE{size_t}@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom10LineStringESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom10LineStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom10LinearRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom5PointESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPKN4geos4geom7PolygonESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPKN4geos4geom8GeometryESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIPKN4geos4geom8GeometryESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPKN4geos6noding13SegmentStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPKN4geos9operation10polygonize22PolygonizeDirectedEdgeESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos11planargraph12DirectedEdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst|arch=!alpha !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos11planargraph12DirectedEdgeESaIS3_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS3_S5_EE@Base 3.4.2 + _ZNSt6vectorIPN4geos11planargraph4EdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst|arch=!alpha !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos11planargraph4EdgeESaIS3_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS3_S5_EE@Base 3.4.2 + _ZNSt6vectorIPN4geos11planargraph4NodeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos11planargraph8SubgraphESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos11triangulate8quadedge8QuadEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom10LineStringESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom10LineStringESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos4geom10LinearRingESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorIPN4geos4geom10LinearRingESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos4geom11LineSegmentESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos4geom11LineSegmentESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos4geom18CoordinateSequenceESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom18CoordinateSequenceESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom5PointESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom7PolygonESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_10LineStringES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_5PointES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS1_7PolygonES_ISA_SaISA_EEEEEEvNS8_IPS3_S5_EET_SH_St20forward_iterator_tag@Base 3.4.2 + _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEj@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEm@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIPN4geos5index5chain13MonotoneChainESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos5index7bintree8IntervalESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index7strtree12AbstractNodeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index7strtree13BoundablePairESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index7strtree13BoundablePairESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE12emplace_backIJS4_EEEvDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS4_S6_EEEEvSB_T_SC_St20forward_iterator_tag@Base 3.4.2 + _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + (optional=templinst|subst)_ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE7reserveE{size_t}@Base 3.8.0 + (optional=templinst|arch=!alpha !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !powerpc !powerpcspe !ppc64 !s390x)_ZNSt6vectorIPN4geos5index7strtree9BoundableESaIS4_EE8_M_eraseEN9__gnu_cxx17__normal_iteratorIPS4_S6_EE@Base 3.4.2 + _ZNSt6vectorIPN4geos5index9sweepline14SweepLineEventESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos5index9sweepline14SweepLineEventESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos6noding13SegmentStringESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos6noding13SegmentStringESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos8simplify17TaggedLineSegmentESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos9geomgraph12DirectedEdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS3_S5_EEEEvSA_T_SB_St20forward_iterator_tag@Base 3.4.2 + _ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9geomgraph4EdgeESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.2 + _ZNSt6vectorIPN4geos9geomgraph4NodeESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9geomgraph5LabelESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph5index14SweepLineEventESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPN4geos9geomgraph7EdgeEndESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPPNS0_9operation7overlay15MinimalEdgeRingES_ISC_SaISC_EEEEEEvNS8_IPS3_S5_EET_SJ_St20forward_iterator_tag@Base 3.4.2 + _ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9geomgraph8EdgeRingESaIS3_EE17_M_realloc_insertIJS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation10polygonize22PolygonizeDirectedEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation10polygonize8EdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation6buffer12DepthSegmentESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation6buffer14BufferSubgraphESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation7overlay15MaximalEdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation7overlay15MinimalEdgeRingESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation8distance13FacetSequenceESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation9linemerge10EdgeStringESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPN4geos9operation9linemerge21LineMergeDirectedEdgeESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 + _ZNSt6vectorIPNSt7__cxx114listIPN4geos11planargraph12DirectedEdgeESaIS5_EEESaIS8_EE17_M_realloc_insertIJRKS8_EEEvN9__gnu_cxx17__normal_iteratorIPS8_SA_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS0_S2_EEEEvNS5_IPS0_S2_EET_SB_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS0_S2_EEEEvS7_T_S8_St20forward_iterator_tag@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_realloc_insertIJRKS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@Base 3.8.0 + _ZNSt6vectorIPvSaIS0_EE17_M_realloc_insertIJS0_EEEvN9__gnu_cxx17__normal_iteratorIPS0_S2_EEDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LineStringESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJRKPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJRPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS3_EESaIS6_EED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom18CoordinateSequenceESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom5PointESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom7PolygonESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom7PolygonESt14default_deleteIS3_EESaIS6_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom7PolygonESt14default_deleteIS3_EESaIS6_EED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8EnvelopeESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJRPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8EnvelopeESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8EnvelopeESt14default_deleteIS3_EESaIS6_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8EnvelopeESt14default_deleteIS3_EESaIS6_EED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE12emplace_backIJS6_EEEvDpOT_@Base 3.8.0 + (optional=templinst|subst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE17_M_default_appendE{size_t}@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJRKPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS0_INS2_10LineStringES4_ISA_EEEEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst|subst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EE7reserveE{size_t}@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos4geom8GeometryESt14default_deleteIS3_EESaIS6_EED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index5chain13MonotoneChainESt14default_deleteIS4_EESaIS7_EE12emplace_backIJS7_EEEvDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index5chain13MonotoneChainESt14default_deleteIS4_EESaIS7_EE17_M_realloc_insertIJRPS4_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_@Base 3.8.0 + (optional=templinst|subst)_ZNSt6vectorISt10unique_ptrIN4geos5index5chain13MonotoneChainESt14default_deleteIS4_EESaIS7_EE7reserveE{size_t}@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index5chain13MonotoneChainESt14default_deleteIS4_EESaIS7_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index5chain13MonotoneChainESt14default_deleteIS4_EESaIS7_EED2Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos5index7strtree8IntervalESt14default_deleteIS4_EESaIS7_EE17_M_realloc_insertIJS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_@Base 3.7.1 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos9geomgraph8EdgeRingESt14default_deleteIS3_EESaIS6_EE17_M_realloc_insertIJRPS3_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos9operation10polygonize4FaceESt14default_deleteIS4_EESaIS7_EE17_M_realloc_insertIJS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos9operation8distance16GeometryLocationESt14default_deleteIS4_EESaIS7_EE17_M_realloc_insertIJPS4_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos9operation8distance16GeometryLocationESt14default_deleteIS4_EESaIS7_EED1Ev@Base 3.8.0 + (optional=templinst)_ZNSt6vectorISt10unique_ptrIN4geos9operation8distance16GeometryLocationESt14default_deleteIS4_EESaIS7_EED2Ev@Base 3.8.0 + (subst)_ZNSt6vectorIdSaIdEE17_M_default_appendE{size_t}@Base 3.7.0 + _ZNSt6vectorIdSaIdEE17_M_realloc_insertIJRKdEEEvN9__gnu_cxx17__normal_iteratorIPdS1_EEDpOT_@Base 3.7.0 + (optional=templinst|arch=ia64)_ZNSt6vectorIiSaIiEE14_M_fill_assignEmRKi@Base 3.8.0 + (subst)_ZNSt6vectorI{size_t}SaI{size_t}EE17_M_realloc_insertIJRK{size_t}EEEvN9__gnu_cxx17__normal_iteratorIP{size_t}S1_EEDpOT_@Base 3.7.0 + (optional=templinst|subst)_ZNSt6vectorI{size_t}SaI{size_t}EE17_M_realloc_insertIJ{size_t}EEEvN9__gnu_cxx17__normal_iteratorIP{size_t}S1_EEDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@Base 3.7.0 + (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@Base 3.7.0 + (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@Base 3.4.2 + (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@Base 3.4.2 + (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@Base 3.4.2 + (arch=amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el riscv64 sparc64 x32)_ZNSt7__cxx114listIN4geos4geom10CoordinateESaIS3_EE6insertESt20_List_const_iteratorIS3_ERKS3_@Base 3.7.2 + _ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE4findERKS3_@Base 3.5.0 + (optional=templinst)_ZNSt8_Rb_treeIN4geos11triangulate8quadedge6VertexES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.5.0 + (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E@Base 3.4.2 + (optional=templinst|arch=amd64 arm64 hppa kfreebsd-amd64 m68k sh4 x32)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE11equal_rangeERS4_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE17_M_emplace_uniqueIJS3_IS2_S7_EEEES3_ISt17_Rb_tree_iteratorIS8_EbEDpOT_@Base 3.7.1 + (optional=templinst)_ZNSt8_Rb_treeIN4geos4geom10CoordinateESt4pairIKS2_PNS0_11planargraph4NodeEESt10_Select1stIS8_ENS1_18CoordinateLessThenESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIN4geos6noding23OrientedCoordinateArrayES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St10unique_ptrIN4geos4util7ProfileESt14default_deleteISB_EEESt10_Select1stISF_ESt4lessIS5_ESaISF_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESQ_IJEEEEESt17_Rb_tree_iteratorISF_ESt23_Rb_tree_const_iteratorISF_EDpOT_@Base 3.8.0 + (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St10unique_ptrIN4geos4util7ProfileESt14default_deleteISB_EEESt10_Select1stISF_ESt4lessIS5_ESaISF_EE24_M_get_insert_unique_posERS7_@Base 3.8.0 + (optional=templinst|arch=amd64 arm64 ia64 riscv64 sh4)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St10unique_ptrIN4geos4util7ProfileESt14default_deleteISB_EEESt10_Select1stISF_ESt4lessIS5_ESaISF_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISF_ERS7_@Base 3.8.0 + (optional=templinst)_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St10unique_ptrIN4geos4util7ProfileESt14default_deleteISB_EEESt10_Select1stISF_ESt4lessIS5_ESaISF_EE8_M_eraseEPSt13_Rb_tree_nodeISF_E@Base 3.8.0 + (optional=templinst|arch=armel armhf)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE16_M_insert_uniqueIRKS4_EESt4pairISt17_Rb_tree_iteratorIS4_EbEOT_@Base 3.7.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE24_M_get_insert_unique_posERKS4_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS4_ERKS4_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE4findERKS4_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 + (optional=templinst|arch=armel armhf)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE14_M_lower_boundEPSt13_Rb_tree_nodeISA_EPSt18_Rb_tree_node_baseRS6_@Base 3.5.1 + (optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 mips mipsel powerpc powerpcspe)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS6_EESK_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE24_M_get_insert_unique_posERS6_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS6_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateESt4pairIKS4_PNS0_9operation12EndpointInfoEESt10_Select1stISA_ENS1_18CoordinateLessThenESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 + _ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE24_M_get_insert_unique_posERS6_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISA_ERS6_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10LineStringESt4pairIKS4_PNS0_9geomgraph4EdgeEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E@Base 3.4.2 + _ZNSt8_Rb_treeIPN4geos11planargraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos11planargraph4EdgeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 + (optional=templinst|arch=!m68k)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS5_EESJ_IJEEEEESt17_Rb_tree_iteratorIS9_ESt23_Rb_tree_const_iteratorIS9_EDpOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE24_M_get_insert_unique_posERS5_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 m68k mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS9_ERS5_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos4geom10CoordinateESt4pairIKS3_PNS0_9geomgraph4NodeEESt10_Select1stIS9_ENS1_18CoordinateLessThenESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E@Base 3.4.2 + (optional=templinst|arch=amd64 arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 powerpc riscv64 sh4 x32)_ZNSt8_Rb_treeIPN4geos6noding11SegmentNodeES3_St9_IdentityIS3_ENS1_13SegmentNodeLTESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos6noding11SegmentNodeES3_St9_IdentityIS3_ENS1_13SegmentNodeLTESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 + _ZNSt8_Rb_treeIPN4geos9geomgraph4NodeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph4NodeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 + _ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE16_M_insert_uniqueIRKS3_EESt4pairISt17_Rb_tree_iteratorIS3_EbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE4findERKS3_@Base 3.4.2 + (optional=templinst)_ZNSt8_Rb_treeIPN4geos9geomgraph7EdgeEndES3_St9_IdentityIS3_ENS1_9EdgeEndLTESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E@Base 3.4.2 + _ZNSt8_Rb_treeIddSt9_IdentityIdESt4lessIdESaIdEE16_M_insert_uniqueIRKdEESt4pairISt17_Rb_tree_iteratorIdEbEOT_@Base 3.7.0 + (optional=templinst)_ZNSt8_Rb_treeIddSt9_IdentityIdESt4lessIdESaIdEE8_M_eraseEPSt13_Rb_tree_nodeIdE@Base 3.4.2 + (optional=templinst|arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4 x32)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops14_Iter_comp_valINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_RT2_@Base 3.6.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops14_Iter_comp_valINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_RT2_@Base 3.6.2 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos11triangulate8quadedge6VertexESt6vectorIS5_SaIS5_EEEE{ssize_t}S5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 3.8.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_SF_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_SF_T1_T2_@Base 3.4.2 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4geos9geomgraph16EdgeIntersectionESt6vectorIS4_SaIS4_EEEE{ssize_t}S4_NS0_5__ops15_Iter_less_iterEEvT_T0_SD_T1_T2_@Base 3.8.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEEiS7_NS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_T0_SJ_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEElS7_NS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_T0_SJ_T1_T2_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEEiS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_less_iterEEvT_T0_SE_T1_T2_@Base 3.4.2 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom11LineSegmentESt6vectorIS5_SaIS5_EEEE{ssize_t}S5_NS0_5__ops15_Iter_comp_iterIPFbPKS4_SE_EEEEvT_T0_SJ_T1_T2_@Base 3.8.0 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree13BoundablePairESt6vectorIS6_SaIS6_EEEE{ssize_t}S6_NS0_5__ops15_Iter_comp_iterINS5_25BoundablePairQueueCompareEEEEvT_T0_SH_T1_T2_@Base 3.6.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_SH_T1_T2_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEEiS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEElS6_NS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_T0_SI_T1_T2_@Base 3.4.2 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN4geos9operation10polygonize4FaceESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEE{ssize_t}S9_NS0_5__ops15_Iter_comp_iterINS5_16CompareByEnvareaEEEEvT_T0_SK_T1_T2_@Base 3.8.0 + (optional=templinst|subst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEE{ssize_t}dNS0_5__ops15_Iter_less_iterEEvT_T0_SA_T1_T2_@Base 3.8.0 + (optional=templinst|arch=!alpha !armel !armhf !hurd-i386 !i386 !ia64 !kfreebsd-i386 !m68k !mips !mipsel !powerpc !ppc64 !ppc64el !riscv64 !s390x !sh4)_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_SE_T0_@Base 3.6.2 + (optional=templinst|arch=armel armhf hurd-i386 i386 powerpc)_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_SG_T0_@Base 3.8.0 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4geos11triangulate8quadedge6VertexESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 3.8.0 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4geos9geomgraph16EdgeIntersectionESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_T0_@Base 3.8.0 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom11LineSegmentESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIPFbPKS4_SE_EEEEvT_SI_T0_@Base 3.8.0 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_@Base 3.4.2 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN4geos9operation10polygonize4FaceESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEENS0_5__ops15_Iter_comp_iterINS5_16CompareByEnvareaEEEEvT_SJ_T0_@Base 3.8.0 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS0_5__ops15_Iter_less_iterEEvT_S9_T0_@Base 3.8.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_T0_T1_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN4geos5index13intervalrtree17IntervalRTreeNodeESt6vectorIS7_SaIS7_EEEElNS0_5__ops15_Iter_comp_iterIPFbS7_S7_EEEEvT_SI_T0_T1_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph12DirectedEdgeESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterIPFbS5_S5_EEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|subst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEE{ssize_t}NS0_5__ops15_Iter_less_iterEEvT_SD_T0_T1_@Base 3.7.0 + (optional=templinst|subst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom11LineSegmentESt6vectorIS5_SaIS5_EEEE{ssize_t}NS0_5__ops15_Iter_comp_iterIPFbPKS4_SE_EEEEvT_SI_T0_T1_@Base 3.8.0 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index7strtree9BoundableESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_T0_T1_@Base 3.4.2 + (optional=templinst|arch=!alpha !amd64 !arm64 !ia64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 + (optional=templinst|arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4geos9operation6buffer14BufferSubgraphESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_comp_iterIPFbS6_S6_EEEEvT_SH_T0_T1_@Base 3.4.2 + (optional=templinst|subst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN4geos9operation10polygonize4FaceESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEE{ssize_t}NS0_5__ops15_Iter_comp_iterINS5_16CompareByEnvareaEEEEvT_SJ_T0_T1_@Base 3.8.0 + (optional=templinst|arch=!armel !armhf !hurd-i386 !i386 !powerpc|subst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEE{ssize_t}NS0_5__ops15_Iter_less_iterEEvT_S9_T0_T1_@Base 3.8.0 + (optional=templinst)_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos11planargraph4EdgeESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_T0_@Base 3.7.0 + (optional=templinst)_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4geos4geom11LineSegmentESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIPFbPKS4_SE_EEEEvT_SI_T0_@Base 3.8.0 + (optional=templinst|arch=amd64 arm64 ia64 riscv64)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN4geos11triangulate8quadedge6VertexESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_less_iterEEvT_SD_SD_SD_T0_@Base 3.8.0 + (optional=templinst|arch=!alpha !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !m68k !mips !mipsel !powerpc !powerpcspe !ppc64 !ppc64el !s390x !sh4)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterINS3_18CoordinateLessThenEEEEvT_SE_SE_SE_T0_@Base 3.4.2 + (optional=templinst|arch=amd64 hurd-i386 i386)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN4geos9geomgraph16EdgeIntersectionESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_less_iterEEvT_SC_SC_SC_T0_@Base 3.8.0 + (optional=templinst)_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterINS4_22SweepLineEventLessThenEEEEvT_SG_SG_SG_T0_@Base 3.8.0 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4geos11triangulate8quadedge6VertexESt6vectorIS5_SaIS5_EEEENS0_5__ops14_Val_less_iterEEvT_T0_@Base 3.8.0 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterINS3_18CoordinateLessThenEEEEvT_T0_@Base 3.6.2 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4geos9geomgraph16EdgeIntersectionESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_@Base 3.8.0 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPN4geos5index9sweepline14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops14_Val_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_@Base 3.4.2 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPPN4geos9geomgraph5index14SweepLineEventESt6vectorIS6_SaIS6_EEEENS0_5__ops14_Val_comp_iterINS4_22SweepLineEventLessThenEEEEvT_T0_@Base 3.7.0 + (optional=templinst)_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN4geos9operation10polygonize4FaceESt14default_deleteIS6_EESt6vectorIS9_SaIS9_EEEENS0_5__ops14_Val_comp_iterINS5_16CompareByEnvareaEEEEvT_T0_@Base 3.8.0 + (optional=templinst|arch=m68k)_ZSt8__uniqueIN9__gnu_cxx17__normal_iteratorIPN4geos4geom10CoordinateESt6vectorIS4_SaIS4_EEEENS0_5__ops19_Iter_equal_to_iterEET_SC_SC_T0_@Base 3.5.0 + (optional=templinst)_ZSt8__uniqueIN9__gnu_cxx17__normal_iteratorIPN4geos9geomgraph16EdgeIntersectionESt6vectorIS4_SaIS4_EEEENS0_5__ops19_Iter_equal_to_iterEET_SC_SC_T0_@Base 3.8.0 + (optional=templinst)_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPKPN4geos4geom10LinearRingESt6vectorIS5_SaIS5_EEEENS0_5__ops10_Iter_predIZNS3_8Geometry19hasNonEmptyElementsIS5_EEbPKS8_IT_SaISG_EEEUlRS6_E_EEESG_SG_SG_T0_St26random_access_iterator_tag@Base 3.8.0 + (optional=templinst)_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN4geos4geom10LinearRingESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEENS0_5__ops10_Iter_predIZNS4_8Geometry19hasNonEmptyElementsIS8_EEbPKSB_IT_SaISJ_EEEUlRS9_E_EEESJ_SJ_SJ_T0_St26random_access_iterator_tag@Base 3.8.0 + (optional=templinst|arch=armel armhf m68k)_ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEENS0_5__ops16_Iter_equals_valIKdEEET_SB_SB_T0_St26random_access_iterator_tag@Base 3.4.2 + (optional=templinst|arch=amd64 arm64 s390x)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_@Base 3.8.0 + _ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_@Base 3.7.0 + (optional=templinst|arch=amd64 arm64 s390x)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_@Base 3.8.0 + (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@Base 3.4.2 + (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_@Base 3.4.2 + _ZTIN4geos11planargraph11PlanarGraphE@Base 3.4.2 + _ZTIN4geos11planargraph12DirectedEdgeE@Base 3.4.2 + _ZTIN4geos11planargraph14GraphComponentE@Base 3.4.2 + _ZTIN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 + _ZTIN4geos11planargraph4EdgeE@Base 3.4.2 + _ZTIN4geos11planargraph4NodeE@Base 3.4.2 + _ZTIN4geos11planargraph7NodeMapE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge15QuadEdgeLocatorE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge15TriangleVisitorE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 + _ZTIN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge6VertexE@Base 3.4.2 + _ZTIN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 + _ZTIN4geos2io14ParseExceptionE@Base 3.4.2 + _ZTIN4geos2io9WKBWriterE@Base 3.4.2 + _ZTIN4geos4geom10LineStringE@Base 3.4.2 + _ZTIN4geos4geom10LinearRingE@Base 3.4.2 + _ZTIN4geos4geom10MultiPointE@Base 3.4.2 + _ZTIN4geos4geom11LineSegmentE@Base 3.4.2 + _ZTIN4geos4geom12MultiPolygonE@Base 3.4.2 + _ZTIN4geos4geom14GeometryFilterE@Base 3.4.2 + _ZTIN4geos4geom15GeometryFactoryE@Base 3.4.2 + _ZTIN4geos4geom15MultiLineStringE@Base 3.4.2 + _ZTIN4geos4geom16CoordinateFilterE@Base 3.4.2 + _ZTIN4geos4geom18CoordinateSequenceE@Base 3.4.2 + _ZTIN4geos4geom18GeometryCollectionE@Base 3.4.2 + _ZTIN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 + _ZTIN4geos4geom23GeometryComponentFilterE@Base 3.4.2 + _ZTIN4geos4geom24CoordinateSequenceFilterE@Base 3.4.2 + _ZTIN4geos4geom25CoordinateSequenceFactoryE@Base 3.4.2 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EEE@Base 3.8.0 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EEE@Base 3.8.0 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EEE@Base 3.8.0 + _ZTIN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 + _ZTIN4geos4geom32DefaultCoordinateSequenceFactoryE@Base 3.8.0 + _ZTIN4geos4geom4prep13PreparedPointE@Base 3.4.2 + _ZTIN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 + _ZTIN4geos4geom4prep16PreparedGeometryE@Base 3.4.2 + _ZTIN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 + _ZTIN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 + _ZTIN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 + _ZTIN4geos4geom4prep22LocationMatchingFilterE@Base 3.8.0 + _ZTIN4geos4geom4prep23OutermostLocationFilterE@Base 3.8.0 + _ZTIN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 + _ZTIN4geos4geom4prep24PreparedPolygonPredicateE@Base 3.4.2 + _ZTIN4geos4geom4prep25LocationNotMatchingFilterE@Base 3.8.0 + _ZTIN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 + _ZTIN4geos4geom4prep31AbstractPreparedPolygonContainsE@Base 3.4.2 + _ZTIN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 + _ZTIN4geos4geom4util14PointExtracterE@Base 3.4.2 + _ZTIN4geos4geom4util16PolygonExtracterE@Base 3.4.2 + _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTIN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTIN4geos4geom4util19CoordinateOperationE@Base 3.4.2 + _ZTIN4geos4geom4util19GeometryTransformerE@Base 3.4.2 + _ZTIN4geos4geom4util23GeometryEditorOperationE@Base 3.4.2 + _ZTIN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 + _ZTIN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 + _ZTIN4geos4geom4util29ShortCircuitedGeometryVisitorE@Base 3.4.2 + _ZTIN4geos4geom4util9Densifier18DensifyTransformerE@Base 3.8.0 + _ZTIN4geos4geom5PointE@Base 3.4.2 + _ZTIN4geos4geom7PolygonE@Base 3.4.2 + _ZTIN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 + _ZTIN4geos4geom8GeometryE@Base 3.4.2 + _ZTIN4geos4util13GEOSExceptionE@Base 3.4.2 + _ZTIN4geos4util17TopologyExceptionE@Base 3.4.2 + _ZTIN4geos4util20InterruptedExceptionE@Base 3.4.2 + _ZTIN4geos4util21GeometricShapeFactoryE@Base 3.4.2 + _ZTIN4geos4util21IllegalStateExceptionE@Base 3.4.2 + _ZTIN4geos4util24AssertionFailedExceptionE@Base 3.4.2 + _ZTIN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 + _ZTIN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 + _ZTIN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 + _ZTIN4geos5index11ItemVisitorE@Base 3.4.2 + _ZTIN4geos5index12SpatialIndexE@Base 3.4.2 + _ZTIN4geos5index13intervalrtree17IntervalRTreeNodeE@Base 3.4.2 + _ZTIN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 + _ZTIN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 + _ZTIN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 + _ZTIN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 + _ZTIN4geos5index7bintree4NodeE@Base 3.4.2 + _ZTIN4geos5index7bintree4RootE@Base 3.4.2 + _ZTIN4geos5index7bintree8NodeBaseE@Base 3.4.2 + _ZTIN4geos5index7strtree12AbstractNodeE@Base 3.4.2 + _ZTIN4geos5index7strtree12ItemDistanceE@Base 3.6.0 + _ZTIN4geos5index7strtree13ItemBoundableE@Base 3.4.2 + _ZTIN4geos5index7strtree15AbstractSTRtree12IntersectsOpE@Base 3.4.2 + _ZTIN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 + _ZTIN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 + _ZTIN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 + _ZTIN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 + _ZTIN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 + _ZTIN4geos5index7strtree7SIRtreeE@Base 3.4.2 + _ZTIN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 + _ZTIN4geos5index7strtree7STRtreeE@Base 3.4.2 + _ZTIN4geos5index7strtree9BoundableE@Base 3.4.2 + _ZTIN4geos5index8quadtree4NodeE@Base 3.4.2 + _ZTIN4geos5index8quadtree4RootE@Base 3.4.2 + _ZTIN4geos5index8quadtree8NodeBaseE@Base 3.4.2 + _ZTIN4geos5index8quadtree8QuadtreeE@Base 3.4.2 + _ZTIN4geos5index9sweepline22SweepLineOverlapActionE@Base 3.4.2 + _ZTIN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 + _ZTIN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 + _ZTIN4geos6noding11ScaledNoderE@Base 3.4.2 + _ZTIN4geos6noding11SimpleNoderE@Base 3.4.2 + _ZTIN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 + _ZTIN4geos6noding12MCIndexNoderE@Base 3.4.2 + _ZTIN4geos6noding13IteratedNoderE@Base 3.4.2 + _ZTIN4geos6noding13SegmentStringE@Base 3.4.2 + _ZTIN4geos6noding15SegmentNodeListE@Base 3.4.2 + _ZTIN4geos6noding15SinglePassNoderE@Base 3.4.2 + _ZTIN4geos6noding17IntersectionAdderE@Base 3.4.2 + _ZTIN4geos6noding18BasicSegmentStringE@Base 3.4.2 + _ZTIN4geos6noding18NodedSegmentStringE@Base 3.4.2 + _ZTIN4geos6noding18SegmentIntersectorE@Base 3.4.2 + _ZTIN4geos6noding20NodableSegmentStringE@Base 3.4.2 + _ZTIN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 + _ZTIN4geos6noding24NodingIntersectionFinderE@Base 3.8.0 + _ZTIN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 + _ZTIN4geos6noding27SegmentSetMutualIntersectorE@Base 3.4.2 + _ZTIN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 + _ZTIN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 + _ZTIN4geos6noding5NoderE@Base 3.4.2 + _ZTIN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 + _ZTIN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 + _ZTIN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 + _ZTIN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 + _ZTIN4geos8simplify13DPTransformerE@Base 3.4.2 + _ZTIN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 + _ZTIN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 + _ZTIN4geos9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZTIN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 + _ZTIN4geos9algorithm6locate22PointOnGeometryLocatorE@Base 3.4.2 + _ZTIN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 + _ZTIN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 + _ZTIN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 + _ZTIN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 + _ZTIN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 + _ZTIN4geos9geomgraph11NodeFactoryE@Base 3.4.2 + _ZTIN4geos9geomgraph11PlanarGraphE@Base 3.4.2 + _ZTIN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZTIN4geos9geomgraph13GeometryGraphE@Base 3.4.2 + _ZTIN4geos9geomgraph14GraphComponentE@Base 3.4.2 + _ZTIN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 + _ZTIN4geos9geomgraph4EdgeE@Base 3.4.2 + _ZTIN4geos9geomgraph4NodeE@Base 3.4.2 + _ZTIN4geos9geomgraph5DepthE@Base 3.4.2 + _ZTIN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 + _ZTIN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 + _ZTIN4geos9geomgraph5index17SweepLineEventOBJE@Base 3.4.2 + _ZTIN4geos9geomgraph5index18EdgeSetIntersectorE@Base 3.4.2 + _ZTIN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 + _ZTIN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 + _ZTIN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 + _ZTIN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 + _ZTIN4geos9geomgraph7EdgeEndE@Base 3.4.2 + _ZTIN4geos9geomgraph7NodeMapE@Base 3.4.2 + _ZTIN4geos9geomgraph8EdgeListE@Base 3.4.2 + _ZTIN4geos9geomgraph8EdgeRingE@Base 3.4.2 + _ZTIN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 + _ZTIN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 + _ZTIN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 + _ZTIN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 + _ZTIN4geos9operation22GeometryGraphOperationE@Base 3.4.2 + _ZTIN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 + _ZTIN4geos9operation5valid9IsValidOpE@Base 3.4.2 + _ZTIN4geos9operation6relate10RelateNodeE@Base 3.4.2 + _ZTIN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 + _ZTIN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 + _ZTIN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 + _ZTIN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 + _ZTIN4geos9operation6relate8RelateOpE@Base 3.4.2 + _ZTIN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 + _ZTIN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 + _ZTIN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 + _ZTIN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 + _ZTIN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 + _ZTIN4geos9operation7overlay9OverlayOpE@Base 3.4.2 + _ZTIN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 + _ZTIN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 + _ZTIN4geos9operation8distance7DeleterE@Base 3.7.0 + _ZTIN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 + _ZTIN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 + _ZTIN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 + _ZTIN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 + _ZTIN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 + _ZTIN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 + _ZTIN4geos9precision10TranslaterE@Base 3.4.2 + _ZTIN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 + _ZTIN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 + _ZTSN4geos11planargraph11PlanarGraphE@Base 3.4.2 + _ZTSN4geos11planargraph12DirectedEdgeE@Base 3.4.2 + _ZTSN4geos11planargraph14GraphComponentE@Base 3.4.2 + _ZTSN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 + _ZTSN4geos11planargraph4EdgeE@Base 3.4.2 + _ZTSN4geos11planargraph4NodeE@Base 3.4.2 + _ZTSN4geos11planargraph7NodeMapE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge15QuadEdgeLocatorE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge15TriangleVisitorE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 + _ZTSN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge6VertexE@Base 3.4.2 + _ZTSN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 + _ZTSN4geos2io14ParseExceptionE@Base 3.4.2 + _ZTSN4geos2io9WKBWriterE@Base 3.4.2 + _ZTSN4geos4geom10LineStringE@Base 3.4.2 + _ZTSN4geos4geom10LinearRingE@Base 3.4.2 + _ZTSN4geos4geom10MultiPointE@Base 3.4.2 + _ZTSN4geos4geom11LineSegmentE@Base 3.4.2 + _ZTSN4geos4geom12MultiPolygonE@Base 3.4.2 + _ZTSN4geos4geom14GeometryFilterE@Base 3.4.2 + _ZTSN4geos4geom15GeometryFactoryE@Base 3.4.2 + _ZTSN4geos4geom15MultiLineStringE@Base 3.4.2 + _ZTSN4geos4geom16CoordinateFilterE@Base 3.4.2 + _ZTSN4geos4geom18CoordinateSequenceE@Base 3.4.2 + _ZTSN4geos4geom18GeometryCollectionE@Base 3.4.2 + _ZTSN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 + _ZTSN4geos4geom23GeometryComponentFilterE@Base 3.4.2 + _ZTSN4geos4geom24CoordinateSequenceFilterE@Base 3.4.2 + _ZTSN4geos4geom25CoordinateSequenceFactoryE@Base 3.4.2 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EEE@Base 3.8.0 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EEE@Base 3.8.0 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EEE@Base 3.8.0 + _ZTSN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 + _ZTSN4geos4geom32DefaultCoordinateSequenceFactoryE@Base 3.8.0 + _ZTSN4geos4geom4prep13PreparedPointE@Base 3.4.2 + _ZTSN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 + _ZTSN4geos4geom4prep16PreparedGeometryE@Base 3.4.2 + _ZTSN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 + _ZTSN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 + _ZTSN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 + _ZTSN4geos4geom4prep22LocationMatchingFilterE@Base 3.8.0 + _ZTSN4geos4geom4prep23OutermostLocationFilterE@Base 3.8.0 + _ZTSN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 + _ZTSN4geos4geom4prep24PreparedPolygonPredicateE@Base 3.4.2 + _ZTSN4geos4geom4prep25LocationNotMatchingFilterE@Base 3.8.0 + _ZTSN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 + _ZTSN4geos4geom4prep31AbstractPreparedPolygonContainsE@Base 3.4.2 + _ZTSN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 + _ZTSN4geos4geom4util14PointExtracterE@Base 3.4.2 + _ZTSN4geos4geom4util16PolygonExtracterE@Base 3.4.2 + _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTSN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTSN4geos4geom4util19CoordinateOperationE@Base 3.4.2 + _ZTSN4geos4geom4util19GeometryTransformerE@Base 3.4.2 + _ZTSN4geos4geom4util23GeometryEditorOperationE@Base 3.4.2 + _ZTSN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 + _ZTSN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 + _ZTSN4geos4geom4util29ShortCircuitedGeometryVisitorE@Base 3.4.2 + _ZTSN4geos4geom4util9Densifier18DensifyTransformerE@Base 3.8.0 + _ZTSN4geos4geom5PointE@Base 3.4.2 + _ZTSN4geos4geom7PolygonE@Base 3.4.2 + _ZTSN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 + _ZTSN4geos4geom8GeometryE@Base 3.4.2 + _ZTSN4geos4util13GEOSExceptionE@Base 3.4.2 + _ZTSN4geos4util17TopologyExceptionE@Base 3.4.2 + _ZTSN4geos4util20InterruptedExceptionE@Base 3.4.2 + _ZTSN4geos4util21GeometricShapeFactoryE@Base 3.4.2 + _ZTSN4geos4util21IllegalStateExceptionE@Base 3.4.2 + _ZTSN4geos4util24AssertionFailedExceptionE@Base 3.4.2 + _ZTSN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 + _ZTSN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 + _ZTSN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 + _ZTSN4geos5index11ItemVisitorE@Base 3.4.2 + _ZTSN4geos5index12SpatialIndexE@Base 3.4.2 + _ZTSN4geos5index13intervalrtree17IntervalRTreeNodeE@Base 3.4.2 + _ZTSN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 + _ZTSN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 + _ZTSN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 + _ZTSN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 + _ZTSN4geos5index7bintree4NodeE@Base 3.4.2 + _ZTSN4geos5index7bintree4RootE@Base 3.4.2 + _ZTSN4geos5index7bintree8NodeBaseE@Base 3.4.2 + _ZTSN4geos5index7strtree12AbstractNodeE@Base 3.4.2 + _ZTSN4geos5index7strtree12ItemDistanceE@Base 3.6.0 + _ZTSN4geos5index7strtree13ItemBoundableE@Base 3.4.2 + _ZTSN4geos5index7strtree15AbstractSTRtree12IntersectsOpE@Base 3.4.2 + _ZTSN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 + _ZTSN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 + _ZTSN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 + _ZTSN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 + _ZTSN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 + _ZTSN4geos5index7strtree7SIRtreeE@Base 3.4.2 + _ZTSN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 + _ZTSN4geos5index7strtree7STRtreeE@Base 3.4.2 + _ZTSN4geos5index7strtree9BoundableE@Base 3.4.2 + _ZTSN4geos5index8quadtree4NodeE@Base 3.4.2 + _ZTSN4geos5index8quadtree4RootE@Base 3.4.2 + _ZTSN4geos5index8quadtree8NodeBaseE@Base 3.4.2 + _ZTSN4geos5index8quadtree8QuadtreeE@Base 3.4.2 + _ZTSN4geos5index9sweepline22SweepLineOverlapActionE@Base 3.4.2 + _ZTSN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 + _ZTSN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 + _ZTSN4geos6noding11ScaledNoderE@Base 3.4.2 + _ZTSN4geos6noding11SimpleNoderE@Base 3.4.2 + _ZTSN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 + _ZTSN4geos6noding12MCIndexNoderE@Base 3.4.2 + _ZTSN4geos6noding13IteratedNoderE@Base 3.4.2 + _ZTSN4geos6noding13SegmentStringE@Base 3.4.2 + _ZTSN4geos6noding15SegmentNodeListE@Base 3.4.2 + _ZTSN4geos6noding15SinglePassNoderE@Base 3.4.2 + _ZTSN4geos6noding17IntersectionAdderE@Base 3.4.2 + _ZTSN4geos6noding18BasicSegmentStringE@Base 3.4.2 + _ZTSN4geos6noding18NodedSegmentStringE@Base 3.4.2 + _ZTSN4geos6noding18SegmentIntersectorE@Base 3.4.2 + _ZTSN4geos6noding20NodableSegmentStringE@Base 3.4.2 + _ZTSN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 + _ZTSN4geos6noding24NodingIntersectionFinderE@Base 3.8.0 + _ZTSN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 + _ZTSN4geos6noding27SegmentSetMutualIntersectorE@Base 3.4.2 + _ZTSN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 + _ZTSN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 + _ZTSN4geos6noding5NoderE@Base 3.4.2 + _ZTSN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 + _ZTSN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 + _ZTSN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 + _ZTSN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 + _ZTSN4geos8simplify13DPTransformerE@Base 3.4.2 + _ZTSN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 + _ZTSN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 + _ZTSN4geos9algorithm16BoundaryNodeRuleE@Base 3.4.2 + _ZTSN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 + _ZTSN4geos9algorithm6locate22PointOnGeometryLocatorE@Base 3.4.2 + _ZTSN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 + _ZTSN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 + _ZTSN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 + _ZTSN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 + _ZTSN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 + _ZTSN4geos9geomgraph11NodeFactoryE@Base 3.4.2 + _ZTSN4geos9geomgraph11PlanarGraphE@Base 3.4.2 + _ZTSN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZTSN4geos9geomgraph13GeometryGraphE@Base 3.4.2 + _ZTSN4geos9geomgraph14GraphComponentE@Base 3.4.2 + _ZTSN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 + _ZTSN4geos9geomgraph4EdgeE@Base 3.4.2 + _ZTSN4geos9geomgraph4NodeE@Base 3.4.2 + _ZTSN4geos9geomgraph5DepthE@Base 3.4.2 + _ZTSN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 + _ZTSN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 + _ZTSN4geos9geomgraph5index17SweepLineEventOBJE@Base 3.4.2 + _ZTSN4geos9geomgraph5index18EdgeSetIntersectorE@Base 3.4.2 + _ZTSN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 + _ZTSN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 + _ZTSN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 + _ZTSN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 + _ZTSN4geos9geomgraph7EdgeEndE@Base 3.4.2 + _ZTSN4geos9geomgraph7NodeMapE@Base 3.4.2 + _ZTSN4geos9geomgraph8EdgeListE@Base 3.4.2 + _ZTSN4geos9geomgraph8EdgeRingE@Base 3.4.2 + _ZTSN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 + _ZTSN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 + _ZTSN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 + _ZTSN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 + _ZTSN4geos9operation22GeometryGraphOperationE@Base 3.4.2 + _ZTSN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 + _ZTSN4geos9operation5valid9IsValidOpE@Base 3.4.2 + _ZTSN4geos9operation6relate10RelateNodeE@Base 3.4.2 + _ZTSN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 + _ZTSN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 + _ZTSN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 + _ZTSN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 + _ZTSN4geos9operation6relate8RelateOpE@Base 3.4.2 + _ZTSN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 + _ZTSN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 + _ZTSN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 + _ZTSN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 + _ZTSN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 + _ZTSN4geos9operation7overlay9OverlayOpE@Base 3.4.2 + _ZTSN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 + _ZTSN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 + _ZTSN4geos9operation8distance7DeleterE@Base 3.7.0 + _ZTSN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 + _ZTSN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 + _ZTSN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 + _ZTSN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 + _ZTSN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 + _ZTSN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 + _ZTSN4geos9precision10TranslaterE@Base 3.4.2 + _ZTSN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 + _ZTSN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 + _ZTVN4geos11planargraph11PlanarGraphE@Base 3.4.2 + _ZTVN4geos11planargraph12DirectedEdgeE@Base 3.4.2 + _ZTVN4geos11planargraph16DirectedEdgeStarE@Base 3.4.2 + _ZTVN4geos11planargraph4EdgeE@Base 3.4.2 + _ZTVN4geos11planargraph4NodeE@Base 3.4.2 + _ZTVN4geos11planargraph7NodeMapE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivision26TriangleCoordinatesVisitorE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivision27TriangleCircumcentreVisitorE@Base 3.5.0 + _ZTVN4geos11triangulate8quadedge19QuadEdgeSubdivisionE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge22LocateFailureExceptionE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge24LastFoundQuadEdgeLocatorE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge6VertexE@Base 3.4.2 + _ZTVN4geos11triangulate8quadedge8QuadEdgeE@Base 3.4.2 + _ZTVN4geos2io14ParseExceptionE@Base 3.4.2 + _ZTVN4geos2io9WKBWriterE@Base 3.4.2 + _ZTVN4geos4geom10LineStringE@Base 3.4.2 + _ZTVN4geos4geom10LinearRingE@Base 3.4.2 + _ZTVN4geos4geom10MultiPointE@Base 3.4.2 + _ZTVN4geos4geom11LineSegmentE@Base 3.4.2 + _ZTVN4geos4geom12MultiPolygonE@Base 3.4.2 + _ZTVN4geos4geom15GeometryFactoryE@Base 3.4.2 + _ZTVN4geos4geom15MultiLineStringE@Base 3.4.2 + _ZTVN4geos4geom18CoordinateSequenceE@Base 3.4.2 + _ZTVN4geos4geom18GeometryCollectionE@Base 3.4.2 + _ZTVN4geos4geom23CoordinateArraySequenceE@Base 3.4.2 + _ZTVN4geos4geom23GeometryComponentFilterE@Base 3.4.2 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}3EEE@Base 3.8.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}4EEE@Base 3.8.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}5EEE@Base 3.8.0 + _ZTVN4geos4geom30CoordinateArraySequenceFactoryE@Base 3.4.2 + _ZTVN4geos4geom32DefaultCoordinateSequenceFactoryE@Base 3.8.0 + _ZTVN4geos4geom4prep13PreparedPointE@Base 3.4.2 + _ZTVN4geos4geom4prep15PreparedPolygonE@Base 3.4.2 + _ZTVN4geos4geom4prep18PreparedLineStringE@Base 3.4.2 + _ZTVN4geos4geom4prep21BasicPreparedGeometryE@Base 3.4.2 + _ZTVN4geos4geom4prep21PreparedPolygonCoversE@Base 3.4.2 + _ZTVN4geos4geom4prep22LocationMatchingFilterE@Base 3.8.0 + _ZTVN4geos4geom4prep23OutermostLocationFilterE@Base 3.8.0 + _ZTVN4geos4geom4prep23PreparedPolygonContainsE@Base 3.4.2 + _ZTVN4geos4geom4prep25LocationNotMatchingFilterE@Base 3.8.0 + _ZTVN4geos4geom4prep25PreparedPolygonIntersectsE@Base 3.4.2 + _ZTVN4geos4geom4prep31PreparedPolygonContainsProperlyE@Base 3.4.2 + _ZTVN4geos4geom4util14PointExtracterE@Base 3.4.2 + _ZTVN4geos4geom4util16PolygonExtracterE@Base 3.4.2 + _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_10LineStringESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_5PointESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTVN4geos4geom4util17GeometryExtracter9ExtracterINS0_7PolygonESt6vectorIPKS4_SaIS7_EEEE@Base 3.4.2 + _ZTVN4geos4geom4util19CoordinateOperationE@Base 3.4.2 + _ZTVN4geos4geom4util19GeometryTransformerE@Base 3.4.2 + _ZTVN4geos4geom4util24LinearComponentExtracterE@Base 3.4.2 + _ZTVN4geos4geom4util28ComponentCoordinateExtracterE@Base 3.4.2 + _ZTVN4geos4geom4util9Densifier18DensifyTransformerE@Base 3.8.0 + _ZTVN4geos4geom5PointE@Base 3.4.2 + _ZTVN4geos4geom7PolygonE@Base 3.4.2 + _ZTVN4geos4geom8Geometry21GeometryChangedFilterE@Base 3.4.2 + _ZTVN4geos4geom8GeometryE@Base 3.4.2 + _ZTVN4geos4util13GEOSExceptionE@Base 3.4.2 + _ZTVN4geos4util17TopologyExceptionE@Base 3.4.2 + _ZTVN4geos4util20InterruptedExceptionE@Base 3.4.2 + _ZTVN4geos4util21GeometricShapeFactoryE@Base 3.4.2 + _ZTVN4geos4util21IllegalStateExceptionE@Base 3.4.2 + _ZTVN4geos4util24AssertionFailedExceptionE@Base 3.4.2 + _ZTVN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 + _ZTVN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 + _ZTVN4geos4util29UnsupportedOperationExceptionE@Base 3.4.2 + _ZTVN4geos5index13intervalrtree21IntervalRTreeLeafNodeE@Base 3.4.2 + _ZTVN4geos5index13intervalrtree23IntervalRTreeBranchNodeE@Base 3.4.2 + _ZTVN4geos5index5chain25MonotoneChainSelectActionE@Base 3.4.2 + _ZTVN4geos5index5chain26MonotoneChainOverlapActionE@Base 3.4.2 + _ZTVN4geos5index7bintree4NodeE@Base 3.4.2 + _ZTVN4geos5index7bintree4RootE@Base 3.4.2 + _ZTVN4geos5index7bintree8NodeBaseE@Base 3.4.2 + _ZTVN4geos5index7strtree12AbstractNodeE@Base 3.4.2 + _ZTVN4geos5index7strtree13ItemBoundableE@Base 3.4.2 + _ZTVN4geos5index7strtree15AbstractSTRtreeE@Base 3.4.2 + _ZTVN4geos5index7strtree15SIRAbstractNodeE@Base 3.4.2 + _ZTVN4geos5index7strtree15STRAbstractNodeE@Base 3.4.2 + _ZTVN4geos5index7strtree20GeometryItemDistanceE@Base 3.6.0 + _ZTVN4geos5index7strtree7SIRtree15SIRIntersectsOpE@Base 3.4.2 + _ZTVN4geos5index7strtree7SIRtreeE@Base 3.4.2 + _ZTVN4geos5index7strtree7STRtree15STRIntersectsOpE@Base 3.4.2 + _ZTVN4geos5index7strtree7STRtreeE@Base 3.4.2 + _ZTVN4geos5index8quadtree4NodeE@Base 3.4.2 + _ZTVN4geos5index8quadtree4RootE@Base 3.4.2 + _ZTVN4geos5index8quadtree8NodeBaseE@Base 3.4.2 + _ZTVN4geos5index8quadtree8QuadtreeE@Base 3.4.2 + _ZTVN4geos6noding11ScaledNoder6ScalerE@Base 3.4.2 + _ZTVN4geos6noding11ScaledNoder8ReScalerE@Base 3.4.2 + _ZTVN4geos6noding11ScaledNoderE@Base 3.4.2 + _ZTVN4geos6noding11SimpleNoderE@Base 3.4.2 + _ZTVN4geos6noding12MCIndexNoder20SegmentOverlapActionE@Base 3.4.2 + _ZTVN4geos6noding12MCIndexNoderE@Base 3.4.2 + _ZTVN4geos6noding13IteratedNoderE@Base 3.4.2 + _ZTVN4geos6noding13SegmentStringE@Base 3.4.2 + _ZTVN4geos6noding15SegmentNodeListE@Base 3.4.2 + _ZTVN4geos6noding17IntersectionAdderE@Base 3.4.2 + _ZTVN4geos6noding18BasicSegmentStringE@Base 3.4.2 + _ZTVN4geos6noding18NodedSegmentStringE@Base 3.4.2 + _ZTVN4geos6noding23IntersectionFinderAdderE@Base 3.4.2 + _ZTVN4geos6noding24NodingIntersectionFinderE@Base 3.8.0 + _ZTVN4geos6noding27SegmentIntersectionDetectorE@Base 3.4.2 + _ZTVN4geos6noding34MCIndexSegmentSetMutualIntersector20SegmentOverlapActionE@Base 3.4.2 + _ZTVN4geos6noding34MCIndexSegmentSetMutualIntersectorE@Base 3.4.2 + _ZTVN4geos6noding9snapround17SimpleSnapRounderE@Base 3.4.2 + _ZTVN4geos6noding9snapround18HotPixelSnapActionE@Base 3.4.2 + _ZTVN4geos6noding9snapround18MCIndexSnapRounderE@Base 3.4.2 + _ZTVN4geos6noding9snapround26MCIndexPointSnapperVisitorE@Base 3.4.2 + _ZTVN4geos8simplify13DPTransformerE@Base 3.4.2 + _ZTVN4geos8simplify17TaggedLineSegmentE@Base 3.4.2 + _ZTVN4geos8simplify18LineSegmentVisitorE@Base 3.4.2 + _ZTVN4geos9algorithm25NotRepresentableExceptionE@Base 3.4.2 + _ZTVN4geos9algorithm6locate25IndexedPointInAreaLocator14SegmentVisitorE@Base 3.4.2 + _ZTVN4geos9algorithm6locate25IndexedPointInAreaLocatorE@Base 3.4.2 + _ZTVN4geos9algorithm8distance25DiscreteHausdorffDistance22MaxPointDistanceFilterE@Base 3.4.2 + _ZTVN4geos9algorithm8distance25DiscreteHausdorffDistance36MaxDensifiedByFractionDistanceFilterE@Base 3.4.2 + _ZTVN4geos9geomgraph11EdgeEndStarE@Base 3.4.2 + _ZTVN4geos9geomgraph11NodeFactoryE@Base 3.4.2 + _ZTVN4geos9geomgraph11PlanarGraphE@Base 3.4.2 + _ZTVN4geos9geomgraph12DirectedEdgeE@Base 3.4.2 + _ZTVN4geos9geomgraph13GeometryGraphE@Base 3.4.2 + _ZTVN4geos9geomgraph14GraphComponentE@Base 3.4.2 + _ZTVN4geos9geomgraph16DirectedEdgeStarE@Base 3.4.2 + _ZTVN4geos9geomgraph4EdgeE@Base 3.4.2 + _ZTVN4geos9geomgraph4NodeE@Base 3.4.2 + _ZTVN4geos9geomgraph5DepthE@Base 3.4.2 + _ZTVN4geos9geomgraph5index13MonotoneChainE@Base 3.4.2 + _ZTVN4geos9geomgraph5index16SweepLineSegmentE@Base 3.4.2 + _ZTVN4geos9geomgraph5index18SegmentIntersectorE@Base 3.4.2 + _ZTVN4geos9geomgraph5index24SimpleEdgeSetIntersectorE@Base 3.4.2 + _ZTVN4geos9geomgraph5index26SimpleSweepLineIntersectorE@Base 3.4.2 + _ZTVN4geos9geomgraph5index28SimpleMCSweepLineIntersectorE@Base 3.4.2 + _ZTVN4geos9geomgraph7EdgeEndE@Base 3.4.2 + _ZTVN4geos9geomgraph7NodeMapE@Base 3.4.2 + _ZTVN4geos9geomgraph8EdgeListE@Base 3.4.2 + _ZTVN4geos9geomgraph8EdgeRingE@Base 3.4.2 + _ZTVN4geos9operation10polygonize11Polygonizer15LineStringAdderE@Base 3.4.2 + _ZTVN4geos9operation10polygonize14PolygonizeEdgeE@Base 3.4.2 + _ZTVN4geos9operation10polygonize15PolygonizeGraphE@Base 3.4.2 + _ZTVN4geos9operation10polygonize22PolygonizeDirectedEdgeE@Base 3.4.2 + _ZTVN4geos9operation22GeometryGraphOperationE@Base 3.4.2 + _ZTVN4geos9operation5valid25SweeplineNestedRingTester13OverlapActionE@Base 3.4.2 + _ZTVN4geos9operation5valid9IsValidOpE@Base 3.4.2 + _ZTVN4geos9operation6relate10RelateNodeE@Base 3.4.2 + _ZTVN4geos9operation6relate13EdgeEndBundleE@Base 3.4.2 + _ZTVN4geos9operation6relate15RelateNodeGraphE@Base 3.4.2 + _ZTVN4geos9operation6relate17EdgeEndBundleStarE@Base 3.4.2 + _ZTVN4geos9operation6relate17RelateNodeFactoryE@Base 3.4.2 + _ZTVN4geos9operation6relate8RelateOpE@Base 3.4.2 + _ZTVN4geos9operation7overlay15MaximalEdgeRingE@Base 3.4.2 + _ZTVN4geos9operation7overlay15MinimalEdgeRingE@Base 3.4.2 + _ZTVN4geos9operation7overlay18OverlayNodeFactoryE@Base 3.4.2 + _ZTVN4geos9operation7overlay21ElevationMatrixFilterE@Base 3.4.2 + _ZTVN4geos9operation7overlay4snap15SnapTransformerE@Base 3.4.2 + _ZTVN4geos9operation7overlay9OverlayOpE@Base 3.4.2 + _ZTVN4geos9operation8distance27ConnectedElementPointFilterE@Base 3.4.2 + _ZTVN4geos9operation8distance30ConnectedElementLocationFilterE@Base 3.4.2 + _ZTVN4geos9operation8distance7DeleterE@Base 3.7.0 + _ZTVN4geos9operation9linemerge13LineMergeEdgeE@Base 3.4.2 + _ZTVN4geos9operation9linemerge14LineMergeGraphE@Base 3.4.2 + _ZTVN4geos9operation9linemerge21LineMergeDirectedEdgeE@Base 3.4.2 + _ZTVN4geos9operation9predicate20ContainsPointVisitorE@Base 3.4.2 + _ZTVN4geos9operation9predicate21LineIntersectsVisitorE@Base 3.4.2 + _ZTVN4geos9operation9predicate25EnvelopeIntersectsVisitorE@Base 3.4.2 + _ZTVN4geos9precision10TranslaterE@Base 3.4.2 + _ZTVN4geos9precision22CommonCoordinateFilterE@Base 3.4.2 + _ZTVN4geos9precision35PrecisionReducerCoordinateOperationE@Base 3.4.2 + _ZZ19getMachineByteOrdervE12endian_check@Base 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::insert(geos::geom::Envelope const*, void*)@Base" 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)@Base" 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::query(geos::geom::Envelope const*, std::vector >&)@Base" 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::remove(geos::geom::Envelope const*, void*)@Base" 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::~STRtree()@Base" 3.4.2 diff -Nru geos-3.7.1/debian/libgeos-c1v5.symbols geos-3.8.0/debian/libgeos-c1v5.symbols --- geos-3.7.1/debian/libgeos-c1v5.symbols 2018-12-05 19:00:02.000000000 +0000 +++ geos-3.8.0/debian/libgeos-c1v5.symbols 2019-10-13 10:01:18.000000000 +0000 @@ -1,4 +1,4 @@ -# SymbolsHelper-Confirmed: 3.7.1 amd64 hppa i386 m68k powerpc powerpcspe sh4 +# SymbolsHelper-Confirmed: 3.8.0 armel armhf hurd-i386 i386 powerpc sh4 libgeos_c.so.1 #PACKAGE# #MINVER# * Build-Depends-Package: libgeos-dev GEOSArea@Base 3.4.2 @@ -25,6 +25,8 @@ GEOSBufferWithStyle@Base 3.4.2 GEOSBufferWithStyle_r@Base 3.4.2 GEOSBuffer_r@Base 3.4.2 + GEOSBuildArea@Base 3.8.0 + GEOSBuildArea_r@Base 3.8.0 GEOSClipByRect@Base 3.5.0 GEOSClipByRect_r@Base 3.5.0 GEOSContains@Base 3.4.2 @@ -48,6 +50,10 @@ GEOSCoordSeq_getSize@Base 3.4.2 GEOSCoordSeq_getSize_r@Base 3.4.2 GEOSCoordSeq_getX@Base 3.4.2 + GEOSCoordSeq_getXY@Base 3.8.0 + GEOSCoordSeq_getXYZ@Base 3.8.0 + GEOSCoordSeq_getXYZ_r@Base 3.8.0 + GEOSCoordSeq_getXY_r@Base 3.8.0 GEOSCoordSeq_getX_r@Base 3.4.2 GEOSCoordSeq_getY@Base 3.4.2 GEOSCoordSeq_getY_r@Base 3.4.2 @@ -58,11 +64,17 @@ GEOSCoordSeq_setOrdinate@Base 3.4.2 GEOSCoordSeq_setOrdinate_r@Base 3.4.2 GEOSCoordSeq_setX@Base 3.4.2 + GEOSCoordSeq_setXY@Base 3.8.0 + GEOSCoordSeq_setXYZ@Base 3.8.0 + GEOSCoordSeq_setXYZ_r@Base 3.8.0 + GEOSCoordSeq_setXY_r@Base 3.8.0 GEOSCoordSeq_setX_r@Base 3.4.2 GEOSCoordSeq_setY@Base 3.4.2 GEOSCoordSeq_setY_r@Base 3.4.2 GEOSCoordSeq_setZ@Base 3.4.2 GEOSCoordSeq_setZ_r@Base 3.4.2 + GEOSCoverageUnion@Base 3.8.0 + GEOSCoverageUnion_r@Base 3.8.0 GEOSCoveredBy@Base 3.4.2 GEOSCoveredBy_r@Base 3.4.2 GEOSCovers@Base 3.4.2 @@ -140,6 +152,8 @@ GEOSGeom_createLinearRing@Base 3.4.2 GEOSGeom_createLinearRing_r@Base 3.4.2 GEOSGeom_createPoint@Base 3.4.2 + GEOSGeom_createPointFromXY@Base 3.8.0 + GEOSGeom_createPointFromXY_r@Base 3.8.0 GEOSGeom_createPoint_r@Base 3.4.2 GEOSGeom_createPolygon@Base 3.4.2 GEOSGeom_createPolygon_r@Base 3.4.2 @@ -203,6 +217,10 @@ GEOSLength_r@Base 3.4.2 GEOSLineMerge@Base 3.4.2 GEOSLineMerge_r@Base 3.4.2 + GEOSMakeValid@Base 3.8.0 + GEOSMakeValid_r@Base 3.8.0 + GEOSMinimumBoundingCircle@Base 3.8.0 + GEOSMinimumBoundingCircle_r@Base 3.8.0 GEOSMinimumClearance@Base 3.6.0 GEOSMinimumClearanceLine@Base 3.6.0 GEOSMinimumClearanceLine_r@Base 3.6.0 @@ -229,6 +247,8 @@ GEOSPolygonize_full@Base 3.4.2 GEOSPolygonize_full_r@Base 3.4.2 GEOSPolygonize_r@Base 3.4.2 + GEOSPolygonize_valid@Base 3.8.0 + GEOSPolygonize_valid_r@Base 3.8.0 GEOSPolygonizer_getCutEdges@Base 3.4.2 GEOSPolygonizer_getCutEdges_r@Base 3.4.2 GEOSPrepare@Base 3.4.2 @@ -401,9 +421,38 @@ (arch=armel armhf)_ZN4geos2io9WKBReaderD1Ev@Base 3.4.2 (arch=armel armhf)_ZN4geos2io9WKBReaderD2Ev@Base 3.4.2 _ZN4geos2io9WKBWriter14setIncludeSRIDEi@Base 3.4.2 + _ZN4geos2io9WKBWriterD0Ev@Base 3.8.0 + _ZN4geos2io9WKBWriterD1Ev@Base 3.8.0 + _ZN4geos2io9WKBWriterD2Ev@Base 3.8.0 + (arch=!armel !armhf)_ZN4geos4geom10LineStringD0Ev@Base 3.8.0 + (arch=!armel !armhf)_ZN4geos4geom10LineStringD1Ev@Base 3.8.0 + (arch=!armel !armhf)_ZN4geos4geom10LineStringD2Ev@Base 3.8.0 + _ZN4geos4geom10LinearRingD0Ev@Base 3.8.0 + _ZN4geos4geom10LinearRingD1Ev@Base 3.8.0 + _ZN4geos4geom10LinearRingD2Ev@Base 3.8.0 (arch=!armel !armhf)_ZN4geos4geom11LineSegmentD0Ev@Base 3.5.0 (arch=!armel !armhf)_ZN4geos4geom11LineSegmentD1Ev@Base 3.5.0 (arch=!armel !armhf)_ZN4geos4geom11LineSegmentD2Ev@Base 3.5.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EED2Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE11setOrdinateE{size_t}{size_t}d@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5setAtERKNS0_10CoordinateE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8apply_rwEPKNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE9setPointsERKSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED0Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED1Ev@Base 3.8.0 + (optional=templinst|subst)_ZN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EED2Ev@Base 3.8.0 + _ZN4geos4geom5PointD0Ev@Base 3.8.0 + _ZN4geos4geom5PointD1Ev@Base 3.8.0 + _ZN4geos4geom5PointD2Ev@Base 3.8.0 + _ZN4geos4geom7PolygonD0Ev@Base 3.8.0 + _ZN4geos4geom7PolygonD1Ev@Base 3.8.0 + _ZN4geos4geom7PolygonD2Ev@Base 3.8.0 _ZN4geos4geom8Geometry7setSRIDEi@Base 3.4.2 _ZN4geos4util13GEOSExceptionD0Ev@Base 3.4.2 _ZN4geos4util13GEOSExceptionD1Ev@Base 3.4.2 @@ -422,6 +471,16 @@ _ZN4geos4util27UniqueCoordinateArrayFilterD2Ev@Base 3.4.2 _ZN4geos5index7strtree7STRtree5queryEPKNS_4geom8EnvelopeERNS0_11ItemVisitorE@Base 3.4.2 _ZN4geos5index7strtree7STRtree6removeEPKNS_4geom8EnvelopeEPv@Base 3.4.2 + _ZN4geos5index7strtree7STRtreeD0Ev@Base 3.8.0 + _ZN4geos5index7strtree7STRtreeD1Ev@Base 3.8.0 + _ZN4geos5index7strtree7STRtreeD2Ev@Base 3.8.0 + (arch=armel armhf)_ZN4geos9algorithm15MinimumDiameterD1Ev@Base 3.8.0 + (arch=armel armhf)_ZN4geos9algorithm15MinimumDiameterD2Ev@Base 3.8.0 + _ZN4geos9geomgraph8EdgeListD0Ev@Base 3.8.0 + _ZN4geos9geomgraph8EdgeListD1Ev@Base 3.8.0 + _ZN4geos9geomgraph8EdgeListD2Ev@Base 3.8.0 + _ZN4geos9operation10polygonize11PolygonizerD1Ev@Base 3.8.0 + _ZN4geos9operation10polygonize11PolygonizerD2Ev@Base 3.8.0 _ZN4geos9operation5valid9IsValidOpD0Ev@Base 3.4.2 _ZN4geos9operation5valid9IsValidOpD1Ev@Base 3.4.2 _ZN4geos9operation5valid9IsValidOpD2Ev@Base 3.4.2 @@ -431,12 +490,36 @@ _ZNK4geos2io9WKBWriter12getByteOrderEv@Base 3.4.2 _ZNK4geos2io9WKBWriter14getIncludeSRIDEv@Base 3.4.2 _ZNK4geos2io9WKBWriter18getOutputDimensionEv@Base 3.4.2 + (arch=!armel !armhf)_ZNK4geos4geom10LineString12getSortIndexEv@Base 3.8.0 + (arch=!armel !armhf)_ZNK4geos4geom10LineString5cloneEv@Base 3.8.0 _ZNK4geos4geom16CoordinateFilter9filter_rwEPNS0_10CoordinateE@Base 3.4.2 + (subst)_ZNK4geos4geom18CoordinateSequence4getXE{size_t}@Base 3.8.0 + (subst)_ZNK4geos4geom18CoordinateSequence4getYE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE12getDimensionEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5cloneEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5getAtE{size_t}@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE5getAtE{size_t}RNS0_10CoordinateE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE7getSizeEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE7isEmptyEv@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8apply_roEPNS0_16CoordinateFilterE@Base 3.8.0 + (optional=templinst|subst)_ZNK4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EE8toVectorERSt6vectorINS0_10CoordinateESaIS4_EE@Base 3.8.0 + (arch=!armel !armhf)_ZNK4geos4geom8Geometry11isRectangleEv@Base 3.8.0 + (arch=!armel !armhf|subst)_ZNK4geos4geom8Geometry12getGeometryNE{size_t}@Base 3.8.0 + (arch=!armel !armhf)_ZNK4geos4geom8Geometry16getNumGeometriesEv@Base 3.8.0 + (arch=!armel !armhf)_ZNK4geos4geom8Geometry17isDimensionStrictENS0_9Dimension13DimensionTypeE@Base 3.8.0 _ZNK4geos4geom8Geometry7getSRIDEv@Base 3.4.2 + (optional=templinst)_ZNSt6vectorIN4geos4geom10CoordinateESaIS2_EE15_M_range_insertIPKS2_EEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EET_SC_St20forward_iterator_tag@Base 3.8.0 _ZNSt6vectorIPKN4geos4geom10CoordinateESaIS4_EE17_M_realloc_insertIJRKS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_@Base 3.7.0 _ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE12emplace_backIJS3_EEEvDpOT_@Base 3.7.0 - (optional=templinst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEj@Base 3.7.1 - (optional=templinst|arch=amd64)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveEm@Base 3.7.1 + (optional=templinst|subst)_ZNSt6vectorIPN4geos4geom8GeometryESaIS3_EE7reserveE{size_t}@Base 3.7.1 (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@Base 3.7.0 (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@Base 3.4.2 (optional=templinst)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@Base 3.4.2 @@ -444,34 +527,46 @@ (optional=templinst)_ZNSt8_Rb_treeIPKN4geos4geom10CoordinateES4_St9_IdentityIS4_ENS1_18CoordinateLessThenESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E@Base 3.4.2 _ZTI16CAPI_ItemVisitor@Base 3.4.2 _ZTI6membuf@Base 3.4.2 + (arch=!armel !armhf)_ZTIN4geos4geom10LineStringE@Base 3.8.0 (arch=!armel !armhf)_ZTIN4geos4geom11LineSegmentE@Base 3.5.0 _ZTIN4geos4geom16CoordinateFilterE@Base 3.4.2 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTIN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 _ZTIN4geos4util13GEOSExceptionE@Base 3.4.2 _ZTIN4geos4util17TopologyExceptionE@Base 3.4.2 _ZTIN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 _ZTIN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 _ZTIN4geos5index11ItemVisitorE@Base 3.4.2 _ZTIN4geos5index7strtree12ItemDistanceE@Base 3.6.0 + _ZTIN4geos9geomgraph8EdgeListE@Base 3.8.0 _ZTIN4geos9operation5valid9IsValidOpE@Base 3.4.2 _ZTIZ29GEOSSTRtree_nearest_generic_rE18CustomItemDistance@Base 3.6.0 _ZTS16CAPI_ItemVisitor@Base 3.4.2 _ZTS6membuf@Base 3.4.2 + (arch=!armel !armhf)_ZTSN4geos4geom10LineStringE@Base 3.8.0 (arch=!armel !armhf)_ZTSN4geos4geom11LineSegmentE@Base 3.5.0 _ZTSN4geos4geom16CoordinateFilterE@Base 3.4.2 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTSN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 _ZTSN4geos4util13GEOSExceptionE@Base 3.4.2 _ZTSN4geos4util17TopologyExceptionE@Base 3.4.2 _ZTSN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 _ZTSN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 _ZTSN4geos5index11ItemVisitorE@Base 3.4.2 _ZTSN4geos5index7strtree12ItemDistanceE@Base 3.6.0 + _ZTSN4geos9geomgraph8EdgeListE@Base 3.8.0 _ZTSN4geos9operation5valid9IsValidOpE@Base 3.4.2 _ZTV16CAPI_ItemVisitor@Base 3.4.2 _ZTV6membuf@Base 3.4.2 + (arch=!armel !armhf)_ZTVN4geos4geom10LineStringE@Base 3.8.0 (arch=!armel !armhf)_ZTVN4geos4geom11LineSegmentE@Base 3.5.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}1EEE@Base 3.8.0 + (subst)_ZTVN4geos4geom27FixedSizeCoordinateSequenceIL{size_t}2EEE@Base 3.8.0 _ZTVN4geos4util13GEOSExceptionE@Base 3.4.2 _ZTVN4geos4util17TopologyExceptionE@Base 3.4.2 _ZTVN4geos4util24IllegalArgumentExceptionE@Base 3.4.2 _ZTVN4geos4util27UniqueCoordinateArrayFilterE@Base 3.4.2 + _ZTVN4geos9geomgraph8EdgeListE@Base 3.8.0 _ZTVN4geos9operation5valid9IsValidOpE@Base 3.4.2 _ZTVZ29GEOSSTRtree_nearest_generic_rE18CustomItemDistance@Base 3.6.0 _ZZ19getMachineByteOrdervE12endian_check@Base 3.4.2 @@ -482,3 +577,4 @@ initGEOS_r@Base 3.4.2 (c++)"non-virtual thunk to geos::index::strtree::STRtree::query(geos::geom::Envelope const*, geos::index::ItemVisitor&)@Base" 3.4.2 (c++)"non-virtual thunk to geos::index::strtree::STRtree::remove(geos::geom::Envelope const*, void*)@Base" 3.4.2 + (c++)"non-virtual thunk to geos::index::strtree::STRtree::~STRtree()@Base" 3.8.0 diff -Nru geos-3.7.1/debian/patches/libruby geos-3.8.0/debian/patches/libruby --- geos-3.7.1/debian/patches/libruby 2018-12-05 18:55:38.000000000 +0000 +++ geos-3.8.0/debian/patches/libruby 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -Description: RUBY_EXTENSION_DIR fix, use vendorarchdir for Debian package. -Author: Christian Hofstaedtler -Bug-Debian: https://bugs.debian.org/735652 -Forwarded: not-needed - ---- a/configure -+++ b/configure -@@ -19329,7 +19329,7 @@ fi - - RUBY_ARCH_LIB_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["archlibdir"] || Config::CONFIG["archlibdir"]'` - -- RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"] || Config::CONFIG["sitearchdir"]'` -+ RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["vendorarchdir"] || Config::CONFIG["vendorarchdir"]'` - - RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG["RUBY_SO_NAME"] || Config::CONFIG["RUBY_SO_NAME"]'` - ---- a/macros/ruby.m4 -+++ b/macros/ruby.m4 -@@ -41,7 +41,7 @@ AC_DEFUN([AC_RUBY_DEVEL], - RUBY_ARCH_LIB_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["archlibdir"]] || Config::CONFIG[["archlibdir"]]'` - - dnl Get Ruby extensions directory -- RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["sitearchdir"]] || Config::CONFIG[["sitearchdir"]]'` -+ RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["vendorarchdir"]] || Config::CONFIG[["vendorarchdir"]]'` - - dnl Get Ruby shared library name, this does not include the lib prefix or extension name - RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["RUBY_SO_NAME"]] || Config::CONFIG[["RUBY_SO_NAME"]]'` diff -Nru geos-3.7.1/debian/patches/series geos-3.8.0/debian/patches/series --- geos-3.7.1/debian/patches/series 2018-09-11 05:30:31.000000000 +0000 +++ geos-3.8.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -libruby diff -Nru geos-3.7.1/debian/ruby-geos.install geos-3.8.0/debian/ruby-geos.install --- geos-3.7.1/debian/ruby-geos.install 2018-08-27 16:58:55.000000000 +0000 +++ geos-3.8.0/debian/ruby-geos.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/*ruby/*/*/*.so diff -Nru geos-3.7.1/debian/rules geos-3.8.0/debian/rules --- geos-3.7.1/debian/rules 2018-09-11 05:30:31.000000000 +0000 +++ geos-3.8.0/debian/rules 2019-10-13 09:59:02.000000000 +0000 @@ -39,7 +39,6 @@ dh_auto_configure -- \ --host=$(DEB_HOST_GNU_TYPE) \ --build=$(DEB_BUILD_GNU_TYPE) \ - --enable-ruby \ --mandir=\$${prefix}/share/man \ --infodir=\$${prefix}/share/info \ $(CONFFLAGS) \ @@ -68,12 +67,12 @@ rm -f debian/tmp/usr/include/geos.h find debian/tmp/usr/include/geos -name "*.inl" -delete + # Remove .asm files + rm -f debian/tmp/usr/include/geos/algorithm/ttmath/ttmathuint_x86_64_msvc.asm + # Remove .la files find debian/tmp/usr/lib -name '*.la' -delete - # Remove static library for Ruby - rm -f debian/tmp/usr/lib/*/ruby/*/*/*.a - dh_install -a --list-missing # remove the library from the -dev package diff -Nru geos-3.7.1/depcomp geos-3.8.0/depcomp --- geos-3.7.1/depcomp 2018-11-29 23:05:16.000000000 +0000 +++ geos-3.8.0/depcomp 2019-10-03 17:33:32.000000000 +0000 @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2018-03-07.03; # UTC +scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 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 @@ -16,7 +16,7 @@ # 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 . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -783,9 +783,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" +# time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: diff -Nru geos-3.7.1/doc/CMakeLists.txt geos-3.8.0/doc/CMakeLists.txt --- geos-3.7.1/doc/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/doc/CMakeLists.txt 2019-10-08 16:20:34.000000000 +0000 @@ -0,0 +1,55 @@ +################################################################################ +# Part of CMake configuration for GEOS +# +# Copyright (C) 2018 Mateusz Loskot +# Copyright (C) 2019 Daniel Baston +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +################################################################################ + +add_executable(example example.cpp) + +target_link_libraries(example PRIVATE geos) +target_include_directories(test_geos_unit + PRIVATE + $) + +option(BUILD_DOCUMENTATION "Build Doxygen documentation" OFF) + +if(BUILD_DOCUMENTATION) + find_package(Doxygen) + + if(NOT DOXYGEN_FOUND) + message(FATAL_ERROR "Doxygen was not found.") + endif() + + set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}) + set(VERSION ${GEOS_VERSION_FULL}) + set(DOXYGEN_LOGFILE ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log) + set(CHECK_ERROR_SCRIPT "check_doxygen_errors.cmake") + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/${CHECK_ERROR_SCRIPT}" + "${CMAKE_CURRENT_BINARY_DIR}/${CHECK_ERROR_SCRIPT}" + COPYONLY) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + @ONLY) + unset(srcdir) + unset(VERSION) + + add_custom_target(docs + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + BYPRODUCTS ${DOXYGEN_LOGFILE} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_docs) + + add_test(NAME test_docs + COMMAND ${CMAKE_COMMAND} + -D DOXYGEN_LOGFILE="${DOXYGEN_LOGFILE}" + -P "${CMAKE_CURRENT_BINARY_DIR}/${CHECK_ERROR_SCRIPT}") + + unset(DOXYGEN_LOGFILE) + unset(CHECK_ERROR_SCRIPT) +endif() diff -Nru geos-3.7.1/doc/Doxyfile geos-3.8.0/doc/Doxyfile --- geos-3.7.1/doc/Doxyfile 2018-11-29 23:05:39.000000000 +0000 +++ geos-3.8.0/doc/Doxyfile 2019-10-10 17:21:28.000000000 +0000 @@ -1,944 +1,2450 @@ -# Doxyfile 1.2.15 +# Doxyfile 1.8.14 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project +# doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. # The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- -# General configuration options +# Project related configuration options #--------------------------------------------------------------------------- -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. -PROJECT_NAME = GEOS +DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. -PROJECT_NUMBER = 3.7.1 +PROJECT_NAME = GEOS -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. -OUTPUT_DIRECTORY = doxygen_docs +PROJECT_NUMBER = 3.8.0 -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, -# German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, -# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish. +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. -OUTPUT_LANGUAGE = English +PROJECT_BRIEF = -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO +PROJECT_LOGO = -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = NO +OUTPUT_DIRECTORY = doxygen_docs -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these class will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. -HIDE_UNDOC_CLASSES = YES +OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. +# The default value is: YES. REPEAT_BRIEF = YES -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief # description. +# The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. FULL_PATH_NAMES = NO -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - -STRIP_FROM_PATH = - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. -INTERNAL_DOCS = NO +SHORT_NAMES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. -STRIP_CODE_COMMENTS = YES +JAVADOC_AUTOBRIEF = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower case letters. If set to YES upper case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are adviced to set this option to NO. +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. -CASE_SENSE_NAMES = YES +INHERIT_DOCS = YES -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. -SHORT_NAMES = NO +TAB_SIZE = 8 -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. -HIDE_SCOPE_NAMES = NO +OPTIMIZE_OUTPUT_FOR_C = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. -VERBATIM_HEADERS = YES +OPTIMIZE_OUTPUT_JAVA = NO -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put list of the files that are included by a file in the documentation -# of that file. +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. -SHOW_INCLUDE_FILES = YES +EXTENSION_MAPPING = -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explict @brief command for a brief description. +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. -JAVADOC_AUTOBRIEF = NO +DISTRIBUTE_GROUP_DOC = NO -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. -INHERIT_DOCS = YES +EXTRACT_ALL = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. -INLINE_INFO = YES +EXTRACT_PRIVATE = NO -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. -SORT_MEMBER_DOCS = YES +EXTRACT_STATIC = NO -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. -DISTRIBUTE_GROUP_DOC = NO +EXTRACT_LOCAL_CLASSES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. -TAB_SIZE = 8 +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. GENERATE_TODOLIST = YES -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. GENERATE_TESTLIST = YES -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. GENERATE_BUGLIST = YES -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consist of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance some of the names that are used will be different. The list -# of all members will be omitted, etc. +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. -OPTIMIZE_OUTPUT_FOR_C = NO +SHOW_USED_FILES = YES -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance namespaces will be presented as packages, qualified scopes -# will look different, etc. +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. -OPTIMIZE_OUTPUT_JAVA = NO +LAYOUT_FILE = -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. -SHOW_USED_FILES = YES +CITE_BIB_FILES = #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. QUIET = NO -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ./../src ./../include ./../capi - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl *.odl +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ../../geos-git/doc/../src \ + ../../geos-git/doc/../include \ + ../../geos-git/doc/../capi + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. FILE_PATTERNS = *.h -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. RECURSIVE = YES -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. -EXCLUDE = +EXCLUDE = -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories -# that are symbolic links (a Unix filesystem feature) are excluded from the input. +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. EXCLUDE_SYMLINKS = NO -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = */examples/* */test/* */bigtest/* */io/markup/* config.h acconfig.h CoordinateList.cpp NonRobustLineIntersector.cpp RobustLineIntersector.cpp +EXCLUDE_PATTERNS = */examples/* \ + */test/* \ + */bigtest/* \ + */io/markup/* \ + */ttmath/* \ + config.h \ + acconfig.h \ + CoordinateList.cpp \ + NonRobustLineIntersector.cpp \ + RobustLineIntersector.cpp + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). +EXCLUDE_SYMBOLS = -EXAMPLE_PATH = +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +EXAMPLE_PATH = -EXAMPLE_PATTERNS = +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse. +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. FILTER_SOURCE_FILES = NO +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. SOURCE_BROWSER = NO -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. INLINE_SOURCES = NO -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. REFERENCED_BY_RELATION = YES -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. REFERENCES_RELATION = YES +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. ALPHABETICAL_INDEX = NO -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. -IGNORE_PREFIX = +IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a # standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = +HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = NO -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via Javascript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have Javascript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the Html help documentation and to the tree view. +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. -ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, -# or Internet explorer 4.0+). Note that for large projects the tree generation -# can take a very long time. In such cases it is better to disable this feature. -# Windows users are probably better off using the HTML help feature. +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = NO +ENUM_VALUES_PER_LINE = 4 -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , / + mP - repeated points + MULTIPOINT((10 10), (10 10), (10 10), (18 18)) + POINT(12 12) + + + L - single segment LINESTRING(10 10, 20 20) POINT(15 15) @@ -236,6 +242,30 @@ POINT (56.52883333335 25.21033333335) - + + A - almost degenerate MultiPolygon + + MULTIPOLYGON ((( + -92.661322 36.58994900000003, + -92.66132199999993 36.58994900000005, + -92.66132199999993 36.589949000000004, + -92.661322 36.589949, + -92.661322 36.58994900000003)), + (( + -92.65560500000008 36.58708800000005, + -92.65560499999992 36.58708800000005, + -92.65560499998745 36.587087999992576, + -92.655605 36.587088, + -92.65560500000008 36.58708800000005 + )), + (( + -92.65512450000065 36.586800000000466, + -92.65512449999994 36.58680000000004, + -92.65512449998666 36.5867999999905, + -92.65512450000065 36.586800000000466 + ))) + + POINT (-92.6553838608954 36.58695407733924) + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestConvexHull.xml geos-3.8.0/tests/xmltester/tests/general/TestConvexHull.xml --- geos-3.7.1/tests/xmltester/tests/general/TestConvexHull.xml 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestConvexHull.xml 2019-10-08 16:20:35.000000000 +0000 @@ -1,5 +1,4 @@ - Several points collinear and overlapping @@ -171,5 +170,17 @@ + + + Almost collinear points, which caused robustness failure in JTS 1.12 + +LINESTRING (0 0, -140.8859438214298 140.88594382142983, -57.309236848216706 57.30923684821671, -190.9188309203678 190.91883092036784, -60 300) + + + + POLYGON ((0 0, -57.309236848216706 57.30923684821671, -190.9188309203678 190.91883092036784, -60 300, 0 0)) + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestDensify.xml geos-3.8.0/tests/xmltester/tests/general/TestDensify.xml --- geos-3.7.1/tests/xmltester/tests/general/TestDensify.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestDensify.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,57 @@ + + + + + P - single point + POINT (10 10) + POINT (10 10) + + + + mP - multi point + MULTIPOINT ((10 10), (20 10)) + MULTIPOINT ((10 10), (20 10)) + + + + L - single segment + LINESTRING(10 10, 100 10) + + LINESTRING (10 10, 19 10, 28 10, 37 10, 46 10, 55 10, 64 10, 73 10, 82 10, 91 10, 100 10) + + + + + mL - multiple lines + MULTILINESTRING ((10 10, 30 30, 50 10, 70 30), (10 50, 40 50, 70 50)) + + MULTILINESTRING ((10 10, 15 15, 20 20, 25 25, 30 30, 35 25, 40 20, 45 15, 50 10, 55 15, 60 20, 65 25, 70 30), + (10 50, 17.5 50, 25 50, 32.5 50, 40 50, 47.5 50, 55 50, 62.5 50, 70 50)) + + + + + + A - polygon with hole + POLYGON ((0 0, 0 70, 70 70, 70 0, 0 0), (10 10, 10 60, 60 60, 10 10)) + +POLYGON ((0 0, 0 8.75, 0 17.5, 0 26.25, 0 35, 0 43.75, 0 52.5, 0 61.25, 0 70, 8.75 70, 17.5 70, 26.25 70, 35 70, 43.75 70, 52.5 70, 61.25 70, 70 70, 70 61.25, 70 52.5, 70 43.75, 70 35, 70 26.25, 70 17.5, 70 8.75, 70 0, 61.25 0, 52.5 0, 43.75 0, 35 0, 26.25 0, 17.5 0, 8.75 0, 0 0), + (10 10, 16.25 16.25, 22.5 22.5, 28.75 28.75, 35 35, 41.25 41.25, 47.5 47.5, 53.75 53.75, 60 60, 51.66666666666667 60, 43.333333333333336 60, 35 60, 26.666666666666668 60, 18.333333333333336 60, 10 60, 10 51.66666666666667, 10 43.333333333333336, 10 35, 10 26.666666666666668, 10 18.333333333333336, 10 10)) + + + + + mA - multipolygon + MULTIPOLYGON (((0 0, 0 70, 70 70, 70 0, 0 0), + (10 10, 10 60, 60 60, 10 10)), + ((80 110, 80 70, 120 70, 120 110, 80 110))) + +MULTIPOLYGON (((80 110, 88 110, 96 110, 104 110, 112 110, 120 110, 120 102, 120 94, 120 86, 120 78, 120 70, 112 70, 104 70, 96 70, 88 70, 80 70, 80 78, 80 86, 80 94, 80 102, 80 110)), + ((0 0, 0 8.75, 0 17.5, 0 26.25, 0 35, 0 43.75, 0 52.5, 0 61.25, 0 70, 8.75 70, 17.5 70, 26.25 70, 35 70, 43.75 70, 52.5 70, 61.25 70, 70 70, 70 61.25, 70 52.5, 70 43.75, 70 35, 70 26.25, 70 17.5, 70 8.75, 70 0, 61.25 0, 52.5 0, 43.75 0, 35 0, 26.25 0, 17.5 0, 8.75 0, 0 0), + (10 10, 16.25 16.25, 22.5 22.5, 28.75 28.75, 35 35, 41.25 41.25, 47.5 47.5, 53.75 53.75, 60 60, 51.66666666666667 60, 43.333333333333336 60, 35 60, 26.666666666666668 60, 18.333333333333336 60, 10 60, 10 51.66666666666667, 10 43.333333333333336, 10 35, 10 26.666666666666668, 10 18.333333333333336, 10 10))) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestEqualsExact.xml geos-3.8.0/tests/xmltester/tests/general/TestEqualsExact.xml --- geos-3.7.1/tests/xmltester/tests/general/TestEqualsExact.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestEqualsExact.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,157 @@ + + +Tests of exact equality and exact equality with normalization + + + + P - point + POINT(10 10) + POINT(10 10) + true + + + + P - point + POINT(10 10) + POINT(10 11) + false + + + + mP - MultiPoint + MULTIPOINT((10 10), (20 20)) + MULTIPOINT((10 10), (20 20)) + true + + + + mP - MultiPoint, permuted + MULTIPOINT((10 10), (20 20)) + MULTIPOINT((20 20), (10 10)) + false + true + + + + mP - MultiPoint empty + MULTIPOINT EMPTY + MULTIPOINT EMPTY + true + + + + + + L - Line + LINESTRING(10 10, 20 20, 30 30) + LINESTRING(10 10, 20 20, 30 30) + true + + + + L - Line, permuted + LINESTRING(10 10, 20 20, 30 30) + LINESTRING(30 30, 20 20, 10 10) + false + true + + + + L - closed + LINESTRING(10 10, 20 20, 20 10, 10 10) + LINESTRING(10 10, 20 20, 20 10, 10 10) + true + + + + L - empty + LINESTRING EMPTY + LINESTRING EMPTY + true + + + + mL - 2 lines with common endpoint + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 30)) + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 30)) + true + + + + mL - 2 lines with common endpoint, permuted + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 30)) + MULTILINESTRING( + (30 30, 20 20), + (10 10, 20 20)) + false + true + + + + + + A - polygon with no holes + POLYGON((40 60, 420 60, 420 320, 40 320, 40 60)) + POLYGON((40 60, 420 60, 420 320, 40 320, 40 60)) + true + + + + A - polygon with no holes, permuted + POLYGON((40 60, 420 60, 420 320, 40 320, 40 60)) + POLYGON((420 60, 420 320, 40 320, 40 60, 420 60)) + false + true + + + + A - polygon with 1 hole + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + true + + + + A - empty + POLYGON EMPTY + POLYGON EMPTY + true + + + + mA + MULTIPOLYGON (((50 100, 100 100, 100 50, 50 50, 50 100)), ((150 100, 200 100, 200 50, 150 50, 150 100))) + MULTIPOLYGON (((50 100, 100 100, 100 50, 50 50, 50 100)), ((150 100, 200 100, 200 50, 150 50, 150 100))) + true + + + + mA - permuted + MULTIPOLYGON (((50 100, 100 100, 100 50, 50 50, 50 100)), ((150 100, 200 100, 200 50, 150 50, 150 100))) + MULTIPOLYGON (((150 100, 200 100, 200 50, 150 50, 150 100)), ((50 100, 100 100, 100 50, 50 50, 50 100))) + false + true + + + + mA - empty + MULTIPOLYGON EMPTY + MULTIPOLYGON EMPTY + true + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestFunctionAA.xml geos-3.8.0/tests/xmltester/tests/general/TestFunctionAA.xml --- geos-3.7.1/tests/xmltester/tests/general/TestFunctionAA.xml 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestFunctionAA.xml 2019-10-08 16:20:35.000000000 +0000 @@ -33,7 +33,7 @@ MULTIPOLYGON( ( - (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), + (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), ( (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100))) @@ -44,7 +44,7 @@ AA - A with hole intersecting B POLYGON( - (20 20, 20 160, 160 160, 160 20, 20 20), + (20 20, 20 160, 160 160, 160 20, 20 20), (140 140, 40 140, 40 40, 140 40, 140 140)) @@ -60,14 +60,14 @@ POLYGON( - (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), + (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100)) POLYGON( - (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, 160 20, 20 20)) @@ -75,10 +75,10 @@ MULTIPOLYGON( ( - (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, - 160 20, 20 20)), + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + 160 20, 20 20)), ( - (80 100, 80 140, 140 140, 140 100, 80 100)), + (80 100, 80 140, 140 140, 140 100, 80 100)), ( (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160))) @@ -117,7 +117,7 @@ MULTIPOLYGON( ( - (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), + (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), ( (27 270, 28 260, 0 270, 27 270))) @@ -135,8 +135,8 @@ GEOMETRYCOLLECTION( - POINT(110 260), - LINESTRING(110 0, 110 60), + POINT(110 260), + LINESTRING(110 0, 110 60), POLYGON( (110 100, 40 140, 110 180, 180 140, 110 100))) @@ -144,24 +144,24 @@ POLYGON( - (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), - (110 260, 40 220, 110 180, 180 220, 110 260), + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), (110 100, 40 60, 110 60, 180 60, 110 100)) POLYGON( - (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, + (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, 110 60, 110 0)) POLYGON( - (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), - (110 260, 40 220, 110 180, 180 220, 110 260), - (110 180, 40 140, 110 100, 180 140, 110 180), + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), + (110 180, 40 140, 110 100, 180 140, 110 180), (110 100, 40 60, 110 60, 180 60, 110 100)) @@ -171,19 +171,19 @@ AA - simple polygons with two touching holes in their symDifference POLYGON( - (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, + (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, 0 0)) POLYGON( - (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, + (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, 230 0)) POLYGON( - (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), - (120 100, 50 50, 120 50, 190 50, 120 100), + (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), + (120 100, 50 50, 120 50, 190 50, 120 100), (120 100, 190 150, 120 150, 50 150, 120 100)) @@ -198,21 +198,21 @@ MULTIPOLYGON( ( - (40 20, 0 0, 20 40, 60 60, 40 20)), + (40 20, 0 0, 20 40, 60 60, 40 20)), ( - (60 90, 60 60, 90 60, 90 90, 60 90)), + (60 90, 60 60, 90 60, 90 90, 60 90)), ( - (70 120, 90 90, 100 120, 70 120)), + (70 120, 90 90, 100 120, 70 120)), ( (120 70, 90 90, 120 100, 120 70))) POLYGON( - (0 0, 0 230, 210 230, 210 0, 0 0), - (0 0, 40 20, 60 60, 20 40, 0 0), - (60 60, 90 60, 90 90, 60 90, 60 60), - (90 90, 120 70, 120 100, 90 90), + (0 0, 0 230, 210 230, 210 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), + (60 60, 90 60, 90 90, 60 90, 60 60), + (90 90, 120 70, 120 100, 90 90), (90 90, 100 120, 70 120, 90 90)) @@ -227,7 +227,7 @@ MULTIPOLYGON( ( - (40 20, 0 0, 20 40, 60 60, 40 20)), + (40 20, 0 0, 20 40, 60 60, 40 20)), ( (60 100, 60 60, 100 60, 100 100, 60 100))) @@ -235,7 +235,7 @@ MULTIPOLYGON( ( - (40 20, 0 0, 20 40, 60 60, 40 20)), + (40 20, 0 0, 20 40, 60 60, 40 20)), ( (60 60, 60 100, 100 100, 100 60, 60 60))) @@ -243,8 +243,8 @@ POLYGON( - (0 0, 0 300, 340 300, 340 0, 0 0), - (0 0, 40 20, 60 60, 20 40, 0 0), + (0 0, 0 300, 340 300, 340 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), (60 60, 100 60, 100 100, 60 100, 60 60)) @@ -259,7 +259,7 @@ MULTIPOLYGON( ( - (60 20, 0 20, 60 60, 60 20)), + (60 20, 0 20, 60 60, 60 20)), ( (60 100, 60 60, 100 60, 100 100, 60 100))) @@ -267,7 +267,7 @@ MULTIPOLYGON( ( - (60 20, 0 20, 60 60, 60 20)), + (60 20, 0 20, 60 60, 60 20)), ( (60 60, 60 100, 100 100, 100 60, 60 60))) @@ -281,16 +281,16 @@ POLYGON( - (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), - (0 20, 60 20, 60 60, 0 20), + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), (60 60, 100 60, 100 100, 60 100, 60 60)) POLYGON( - (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), - (0 20, 60 20, 60 60, 0 20), + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), (60 60, 100 60, 100 100, 60 100, 60 60)) @@ -300,18 +300,18 @@ AA - simple polygons with holes POLYGON( - (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), + (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) POLYGON( - (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), + (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) POLYGON( - (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, + (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, 263 218, 240 200, 240 110, 251 104)) @@ -319,13 +319,13 @@ MULTIPOLYGON( ( - (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, - 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), + (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, + 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), ( - (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, - 380 250, 380 50, 250 30, 217 57)), + (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, + 380 250, 380 50, 250 30, 217 57)), ( - (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), + (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), ( (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226))) @@ -338,12 +338,12 @@ POLYGON ((20 0, 20 160, 200 160, 200 0, 20 0)) - POLYGON ((220 80, 0 80, 0 240, 220 240, 220 80), + POLYGON ((220 80, 0 80, 0 240, 220 240, 220 80), (100 80, 120 120, 80 120, 100 80)) - POLYGON ((20 80, 20 160, 200 160, 200 80, 100 80, 20 80), + POLYGON ((20 80, 20 160, 200 160, 200 80, 100 80, 20 80), (100 80, 120 120, 80 120, 100 80)) @@ -354,14 +354,14 @@ - MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), + MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), ((100 80, 80 120, 120 120, 100 80))) - MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), - ((200 80, 200 160, 20 160, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80)), + MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), + ((200 80, 200 160, 20 160, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80)), ((100 80, 80 120, 120 120, 100 80))) @@ -372,29 +372,29 @@ MULTIPOLYGON( ( - (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, - 200 200, 220 200, 220 340, 120 340)), + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340)), ( - (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200))) MULTIPOLYGON( ( - (100 220, 100 200, 300 200, 300 220, 100 220)), + (100 220, 100 200, 300 200, 300 220, 100 220)), ( - (280 180, 280 160, 300 160, 300 180, 280 180)), + (280 180, 280 160, 300 160, 300 180, 280 180)), ( - (220 140, 220 120, 240 120, 240 140, 220 140)), + (220 140, 220 120, 240 120, 240 140, 220 140)), ( (180 220, 160 240, 200 240, 180 220))) MULTILINESTRING( - (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, - 200 200, 220 200, 220 340, 120 340), - (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340), + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200)) @@ -407,19 +407,19 @@ GEOMETRYCOLLECTION( - POINT(200 240), - LINESTRING(300 200, 220 200), - LINESTRING(280 180, 300 180), - LINESTRING(300 180, 300 160), - LINESTRING(300 160, 280 160), - LINESTRING(220 140, 240 140), - LINESTRING(240 120, 220 120), + POINT(200 240), + LINESTRING(300 200, 220 200), + LINESTRING(280 180, 300 180), + LINESTRING(300 180, 300 160), + LINESTRING(300 160, 280 160), + LINESTRING(220 140, 240 140), + LINESTRING(240 120, 220 120), POLYGON( - (120 200, 120 220, 140 220, 140 200, 120 200)), + (120 200, 120 220, 140 220, 140 200, 120 200)), POLYGON( - (160 200, 160 220, 180 220, 180 200, 160 200)), + (160 200, 160 220, 180 220, 180 200, 160 200)), POLYGON( - (180 240, 180 220, 160 240, 180 240)), + (180 240, 180 220, 160 240, 180 240)), POLYGON( (200 200, 200 220, 220 220, 220 200, 200 200))) @@ -427,12 +427,12 @@ POLYGON( - (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, - 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, - 140 200, 120 200, 100 200, 100 220, 120 220), - (200 240, 200 280, 180 280, 180 240, 200 240), - (200 240, 180 220, 200 220, 200 240), - (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), + (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, + 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, + 140 200, 120 200, 100 200, 100 220, 120 220), + (200 240, 200 280, 180 280, 180 240, 200 240), + (200 240, 180 220, 200 220, 200 240), + (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), (240 120, 300 120, 300 140, 240 140, 240 120)) @@ -440,12 +440,12 @@ MULTIPOLYGON( ( - (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, - 160 240, 160 280, 140 280, 140 220, 120 220)), + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), ( - (160 220, 160 240, 180 220, 160 220)), + (160 220, 160 240, 180 220, 160 220)), ( - (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, + (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, 220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200))) @@ -453,21 +453,21 @@ MULTIPOLYGON( ( - (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, - 160 240, 160 280, 140 280, 140 220, 120 220)), + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), ( - (120 220, 120 200, 100 200, 100 220, 120 220)), + (120 220, 120 200, 100 200, 100 220, 120 220)), ( - (140 200, 140 220, 160 220, 160 200, 140 200)), + (140 200, 140 220, 160 220, 160 200, 140 200)), ( - (160 220, 160 240, 180 220, 160 220)), + (160 220, 160 240, 180 220, 160 220)), ( - (180 200, 180 220, 200 220, 200 200, 180 200)), + (180 200, 180 220, 200 220, 200 200, 180 200)), ( - (180 220, 180 240, 200 240, 180 220)), + (180 220, 180 240, 200 240, 180 220)), ( - (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, - 220 160, 280 160, 280 180, 220 180, 220 200), + (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, + 220 160, 280 160, 280 180, 220 180, 220 200), (240 120, 300 120, 300 140, 240 140, 240 120))) @@ -478,31 +478,31 @@ MULTIPOLYGON( ( - (100 200, 100 180, 120 180, 120 200, 100 200)), + (100 200, 100 180, 120 180, 120 200, 100 200)), ( - (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, - 160 220, 220 220, 220 240, 60 240), - (80 220, 80 160, 140 160, 140 220, 80 220)), + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220)), ( (280 220, 240 180, 260 160, 300 200, 280 220))) MULTIPOLYGON( ( - (80 220, 80 160, 140 160, 140 220, 80 220), - (100 200, 100 180, 120 180, 120 200, 100 200)), + (80 220, 80 160, 140 160, 140 220, 80 220), + (100 200, 100 180, 120 180, 120 200, 100 200)), ( - (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, - 220 140, 320 140, 320 240, 220 240), + (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, + 220 140, 320 140, 320 240, 220 240), (240 220, 240 160, 300 160, 300 220, 240 220))) MULTILINESTRING( - (100 200, 100 180, 120 180, 120 200, 100 200), - (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, - 160 220, 220 220, 220 240, 60 240), - (80 220, 80 160, 140 160, 140 220, 80 220), + (100 200, 100 180, 120 180, 120 200, 100 200), + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220), (280 220, 240 180, 260 160, 300 200, 280 220)) @@ -515,25 +515,25 @@ GEOMETRYCOLLECTION( - POINT(240 180), - POINT(260 160), - POINT(280 220), - POINT(300 200), - LINESTRING(100 200, 100 180), - LINESTRING(100 180, 120 180), - LINESTRING(120 180, 120 200), - LINESTRING(120 200, 100 200), - LINESTRING(220 140, 220 160), - LINESTRING(220 160, 160 160), - LINESTRING(160 160, 160 180), - LINESTRING(160 180, 200 180), - LINESTRING(200 200, 160 200), - LINESTRING(160 200, 160 220), - LINESTRING(160 220, 220 220), - LINESTRING(220 220, 220 240), - LINESTRING(80 220, 80 160), - LINESTRING(80 160, 140 160), - LINESTRING(140 160, 140 220), + POINT(240 180), + POINT(260 160), + POINT(280 220), + POINT(300 200), + LINESTRING(100 200, 100 180), + LINESTRING(100 180, 120 180), + LINESTRING(120 180, 120 200), + LINESTRING(120 200, 100 200), + LINESTRING(220 140, 220 160), + LINESTRING(220 160, 160 160), + LINESTRING(160 160, 160 180), + LINESTRING(160 180, 200 180), + LINESTRING(200 200, 160 200), + LINESTRING(160 200, 160 220), + LINESTRING(160 220, 220 220), + LINESTRING(220 220, 220 240), + LINESTRING(80 220, 80 160), + LINESTRING(80 160, 140 160), + LINESTRING(140 160, 140 220), LINESTRING(140 220, 80 220)) @@ -541,9 +541,9 @@ MULTIPOLYGON( ( - (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), - (200 200, 200 180, 220 180, 220 200, 200 200), - (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), ( (240 180, 280 220, 300 200, 260 160, 240 180))) @@ -552,11 +552,11 @@ MULTIPOLYGON( ( - (100 180, 100 200, 120 200, 120 180, 100 180)), + (100 180, 100 200, 120 200, 120 180, 100 180)), ( - (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, - 160 180, 160 160, 220 160, 220 140), - (80 220, 80 160, 140 160, 140 220, 80 220)), + (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, + 160 180, 160 160, 220 160, 220 140), + (80 220, 80 160, 140 160, 140 220, 80 220)), ( (240 180, 280 220, 300 200, 260 160, 240 180))) @@ -565,9 +565,9 @@ MULTIPOLYGON( ( - (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), - (200 200, 200 180, 220 180, 220 200, 200 200), - (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), ( (240 180, 280 220, 300 200, 260 160, 240 180))) @@ -582,7 +582,7 @@ POLYGON( - (160 160, 100 160, 100 100, 160 100, 160 160), + (160 160, 100 160, 100 100, 160 100, 160 160), (140 140, 120 140, 120 120, 140 120, 140 140)) @@ -599,7 +599,7 @@ GEOMETRYCOLLECTION( - LINESTRING(140 140, 140 120), + LINESTRING(140 140, 140 120), POLYGON( (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160))) @@ -614,7 +614,7 @@ MULTIPOLYGON( ( - (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), ( (140 140, 140 120, 120 120, 120 140, 140 140))) @@ -623,11 +623,41 @@ MULTIPOLYGON( ( - (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), ( (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140))) + + + AA - Polygons which stress hole assignment + +POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 1 2, 2 1, 1 1), (1 2, 1 3, 2 3, 1 2), (2 3, 3 3, 3 2, 2 3)) + + +POLYGON ((2 1, 3 1, 3 2, 2 1)) + + + +POLYGON ((3 2, 3 1, 2 1, 3 2)) + + + + +POLYGON ((0 0, 0 4, 4 4, 4 0, 0 0), (1 2, 1 1, 2 1, 1 2), (1 2, 2 3, 1 3, 1 2), (2 3, 3 2, 3 3, 2 3)) + + + + +MULTIPOLYGON (((0 0, 0 4, 4 4, 4 0, 0 0), (1 2, 1 1, 2 1, 3 1, 3 2, 3 3, 2 3, 1 3, 1 2)), ((2 1, 1 2, 2 3, 3 2, 2 1))) + + + + +MULTIPOLYGON (((0 0, 0 4, 4 4, 4 0, 0 0), (1 2, 1 1, 2 1, 3 1, 3 2, 3 3, 2 3, 1 3, 1 2)), ((2 1, 1 2, 2 3, 3 2, 2 1))) + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestFunctionLA.xml geos-3.8.0/tests/xmltester/tests/general/TestFunctionLA.xml --- geos-3.7.1/tests/xmltester/tests/general/TestFunctionLA.xml 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestFunctionLA.xml 2019-10-08 16:20:35.000000000 +0000 @@ -212,7 +212,7 @@ - GEOMETRYCOLLECTION EMPTY + LINESTRING EMPTY diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestFunctionLL.xml geos-3.8.0/tests/xmltester/tests/general/TestFunctionLL.xml --- geos-3.7.1/tests/xmltester/tests/general/TestFunctionLL.xml 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestFunctionLL.xml 2019-10-08 16:20:35.000000000 +0000 @@ -97,7 +97,7 @@ - GEOMETRYCOLLECTION EMPTY + LINESTRING EMPTY @@ -249,12 +249,12 @@ - GEOMETRYCOLLECTION EMPTY + LINESTRING EMPTY - GEOMETRYCOLLECTION EMPTY + LINESTRING EMPTY diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestFunctionPP.xml geos-3.8.0/tests/xmltester/tests/general/TestFunctionPP.xml --- geos-3.7.1/tests/xmltester/tests/general/TestFunctionPP.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestFunctionPP.xml 2019-10-08 16:20:35.000000000 +0000 @@ -26,7 +26,7 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY @@ -66,7 +66,7 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY @@ -136,12 +136,12 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY - GEOMETRYCOLLECTION EMPTY + POINT EMPTY @@ -166,7 +166,7 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY @@ -206,7 +206,7 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY @@ -246,7 +246,7 @@ - GEOMETRYCOLLECTION EMPTY + POINT EMPTY diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestIntersectsPL.xml geos-3.8.0/tests/xmltester/tests/general/TestIntersectsPL.xml --- geos-3.7.1/tests/xmltester/tests/general/TestIntersectsPL.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestIntersectsPL.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,37 @@ + + Test P/L intersects cases that require robust determinant. See discussion http://trac.osgeo.org/geos/ticket/591 + + + + + + Point on segment between 3rd and 4th vertex of line + + POINT(-23.1094689600055 50.5195368635957) + + + LINESTRING(-23.122057005539 50.5201976774794,-23.1153476966995 50.5133404815199,-23.1094689600055 50.5223376452201,-23.1094689600055 50.5169177629559,-23.0961967920942 50.5330464848094,-23.0887991006034 50.5258515213185,-23.0852302622362 50.5264582238409) + + + + true + + + + + + Point on the 3rd vertex of line + + POINT(-23.1094689600055 50.5223376452201) + + + LINESTRING(-23.122057005539 50.5201976774794,-23.1153476966995 50.5133404815199,-23.1094689600055 50.5223376452201,-23.1094689600055 50.5169177629559,-23.0961967920942 50.5330464848094,-23.0887991006034 50.5258515213185,-23.0852302622362 50.5264582238409) + + + + true + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestMinimumClearance.xml geos-3.8.0/tests/xmltester/tests/general/TestMinimumClearance.xml --- geos-3.7.1/tests/xmltester/tests/general/TestMinimumClearance.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestMinimumClearance.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,89 @@ + + + + + P - empty point + POINT EMPTY + 1.7976931348623157E308 + LINESTRING EMPTY + + + + P - single point + POINT (100 100) + 1.7976931348623157E308 + LINESTRING EMPTY + + + + mP - points + MULTIPOINT ( (100 100), (10 100) ) + 90 + LINESTRING (100 100, 10 100) + + + + mP - two identical points + MULTIPOINT ( (100 100), (100 100) ) + 1.7976931348623157E308 + LINESTRING EMPTY + + + + mP - points + MULTIPOINT ((100 100), (10 100), (30 100)) + 20 + LINESTRING (10 100, 30 100) + + + + L - linestring + LINESTRING (100 100, 200 100, 200 200, 150 150) + 50 + LINESTRING (150 150, 150 100) + + + + L - empty linestring + LINESTRING EMPTY + 1.7976931348623157E308 + LINESTRING EMPTY + + + + ML - linestring + MULTILINESTRING ((100 100, 200 100, 200 200, 150 150), + (100 200, 150 170)) + 14.142135623730951 + LINESTRING (150 170, 160 160) + + + + A - empty polygon + POLYGON EMPTY + 1.7976931348623157E308 + LINESTRING EMPTY + + + + A - single polygon #1 + POLYGON ((100 100, 300 100, 200 200, 100 100)) + 100 + LINESTRING (200 200, 200 100) + + + + A - single polygon #2 + POLYGON ((300 400, 100 350, 250 320, 50 250, 298 200, 50 150, 150 100, 300 50, 300 50, 300 50, 300 400)) + 2 + LINESTRING (298 200, 300 200) + + + + mA - multiple polygons + MULTIPOLYGON (((100 100, 300 100, 200 200, 100 100)), ((150 250, 250 250, 200 220, 150 250))) + 20 + LINESTRING (200 200, 200 220) + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestPreparedIntersectsPL.xml geos-3.8.0/tests/xmltester/tests/general/TestPreparedIntersectsPL.xml --- geos-3.7.1/tests/xmltester/tests/general/TestPreparedIntersectsPL.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestPreparedIntersectsPL.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,37 @@ + + Test P/L intersects cases that require robust determinant. See discussion http://trac.osgeo.org/geos/ticket/591 + + + + com.vividsolutions.jtstest.geomop.PreparedGeometryOperation + + Point on segment between 3rd and 4th vertex of line + + POINT(-23.1094689600055 50.5195368635957) + + + LINESTRING(-23.122057005539 50.5201976774794,-23.1153476966995 50.5133404815199,-23.1094689600055 50.5223376452201,-23.1094689600055 50.5169177629559,-23.0961967920942 50.5330464848094,-23.0887991006034 50.5258515213185,-23.0852302622362 50.5264582238409) + + + + true + + + + + + Point on the 3rd vertex of line + + POINT(-23.1094689600055 50.5223376452201) + + + LINESTRING(-23.122057005539 50.5201976774794,-23.1153476966995 50.5133404815199,-23.1094689600055 50.5223376452201,-23.1094689600055 50.5169177629559,-23.0961967920942 50.5330464848094,-23.0887991006034 50.5258515213185,-23.0852302622362 50.5264582238409) + + + + true + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml geos-3.8.0/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml --- geos-3.7.1/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestPreparedPolygonPredicate.xml 2019-10-08 16:20:35.000000000 +0000 @@ -18,7 +18,21 @@ - A/P - point equal to start point of polygon + A/P - point in polygon interior + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + POINT (20 20) + + true + true + true + + + + A/P - point outside of polygon POLYGON ((10 10, 60 100, 110 10, 10 10)) @@ -32,6 +46,90 @@ + A/mP - both points equal to polygon vertices + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((10 10), (60 100)) + + false + true + true + + + + A/mP - both points in polygon interior + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((20 20), (21 21)) + + true + true + true + + + + A/mP - one point interior, one point equal to a polygon vertex + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((60 100), (21 21)) + + true + true + true + + + + A/mP - one point interior, one point exterior + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((20 20), (500 500)) + + false + false + true + + + + A/mP - one point equal to a polygon vertex, one point exterior + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((10 10), (500 500)) + + false + false + true + + + + A/mP - one point on boundary, one point interior, one point exterior + + + POLYGON ((10 10, 60 100, 110 10, 10 10)) + + + MULTIPOINT ((10 10), (20 20), (20 40)) + + false + false + true + + + mA/L A has 2 shells touching at one vertex and one non-vertex. B passes between the shells, but is wholely contained diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestRectanglePredicate.xml geos-3.8.0/tests/xmltester/tests/general/TestRectanglePredicate.xml --- geos-3.7.1/tests/xmltester/tests/general/TestRectanglePredicate.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestRectanglePredicate.xml 2019-10-08 16:20:35.000000000 +0000 @@ -12,7 +12,7 @@ (100 200, 100 140, 180 140, 180 200, 100 200)) false - false + false @@ -24,7 +24,7 @@ POLYGON((10 10, 10 90, 90 90, 90 10, 10 10)) true - true + true @@ -36,7 +36,7 @@ POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180)) true - false + false @@ -49,14 +49,14 @@ ((20 280, 0 180, 180 160, 200 280, 20 280))) true - false - true - false - true + false + true + false + true - L overlaps thru Y axis side + L overlaps through Y axis side POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) @@ -67,16 +67,81 @@ - L overlaps thru X axis side + L overlaps through X axis side POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) LINESTRING(10 10, 10 2000) - true - false - false + true + false + false + + + + L on upward diagonal crosses + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING (60 120, -20 20) + + true + false + false + + + + L on downward diagonal crosses + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING (50 120, 120 50) + + true + false + false + + + + L on downward diagonal does not intersect + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING (70 140, 150 50) + + false + false + false + + + + L with many segments crosses + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING (110 160, 150 70, 110 -20, 130 80, 90 150, 60 -20, 38 128) + + true + false + false + + + + L with many segments does not intersect + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING (110 160, 150 70, 110 -20, 130 80, 90 150, 90 110, 38 128) + + false + false + false @@ -87,8 +152,8 @@ LINESTRING( 10 10, -10 -20 ) - true - false + true + false @@ -100,9 +165,9 @@ LINESTRING( 10 0, 90 0 ) true - false - true - true + false + true + true @@ -114,9 +179,9 @@ LINESTRING( 10 0, 100 0, 100 50 ) true - false - true - true + false + true + true @@ -128,9 +193,9 @@ LINESTRING( 10 0, 100 0, 100 100, 50 100 ) true - false - true - true + false + true + true @@ -142,9 +207,9 @@ MULTILINESTRING( (10 0, 20 0), (10 10, 20 20) ) true - true - true - true + true + true + true @@ -156,7 +221,7 @@ MULTILINESTRING( (10 10, 10 20), (200 10, 200 20) ) true - false + false @@ -168,9 +233,9 @@ POINT(100 50) true - false - true - true + false + true + true @@ -182,9 +247,9 @@ POINT(50 100) true - false - true - true + false + true + true @@ -196,9 +261,9 @@ POINT(60 60) true - true - true - true + true + true + true @@ -210,9 +275,27 @@ MULTIPOINT((50 100), (60 60)) true - true - true - true + true + true + true + + + + GC as argument + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + GEOMETRYCOLLECTION ( + POLYGON((10 10, 10 90, 90 90, 90 10, 10 10)), + LINESTRING(10 10, 10 20), + MULTIPOINT((50 100), (60 60)) + ) + + true + true + true + true diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestSimple.xml geos-3.8.0/tests/xmltester/tests/general/TestSimple.xml --- geos-3.7.1/tests/xmltester/tests/general/TestSimple.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestSimple.xml 2019-10-08 16:20:35.000000000 +0000 @@ -242,9 +242,9 @@ - A + LR - valid ring - POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) + LINEARRING (100 300, 200 300, 200 200, 100 200, 100 300) @@ -254,28 +254,57 @@ - A - empty + LR - ring with self-intersection - POLYGON EMPTY + LINEARRING (100 300, 200 300, 100 200, 200 200, 100 300) - true + false - mA + A - valid polygon + + POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) + + + true + + + + + A - invalid bowtie polygon + + POLYGON ((100 100, 100 200, 200 100, 200 200, 100 100)) + + + false + + + + + + A - empty + + POLYGON EMPTY + + + true + + + + + mA - valid polygon MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) - - true - + true @@ -287,9 +316,41 @@ (120 340, 60 360, 80 320, 120 340))) - - true - + true + + + + + mA - with an invalid bowtie element + +MULTIPOLYGON (((100 100, 100 200, 200 100, 200 200, 100 100)), ((100 400, 200 400, 200 300, 100 300, 100 400))) + + + false + + + + + GC - all components simple + +GEOMETRYCOLLECTION (POLYGON ((100 200, 200 200, 200 100, 100 100, 100 200)), + LINESTRING (100 300, 200 250), + POINT (250 250), + POINT (250 150)) + + true + + + + + GC - one non-simple component + +GEOMETRYCOLLECTION (POLYGON ((100 100, 100 200, 200 100, 200 200, 100 100)), + LINESTRING (100 300, 200 250), + POINT (250 250), + POINT (250 150)) + + false diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestUnaryUnionFloating.xml geos-3.8.0/tests/xmltester/tests/general/TestUnaryUnionFloating.xml --- geos-3.7.1/tests/xmltester/tests/general/TestUnaryUnionFloating.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestUnaryUnionFloating.xml 2019-10-08 16:20:35.000000000 +0000 @@ -1,20 +1,20 @@ - - Tests for Geometry.union() method (unary union) with floating precision - - - mP - showing that non-polygonal components are discarded correctly - - GEOMETRYCOLLECTION ( - POLYGON ((-3 -2, 700 900, -6 900, -3 -2)), - POLYGON((700 900, -1.6859349853697 899.55, 0.3 -0.4, 700 900)), - POLYGON ((700 860, 700 899.5, -1.68593498537 899.55, 700 860)) - ) - - - - POLYGON ((0.2942036115049298 2.226702215615205, -3 -2, -6 900, 700 900, 699.6114719806972 899.5000276853219, 700 899.5, 700 860, 670.2204017222961 861.6785046602191, 0.3 -0.4, 0.2942036115049298 2.226702215615205)) - - - - - + + Tests for Geometry.union() method (unary union) with floating precision + + + mP - showing that non-polygonal components are discarded correctly + + GEOMETRYCOLLECTION ( + POLYGON ((-3 -2, 700 900, -6 900, -3 -2)), + POLYGON((700 900, -1.6859349853697 899.55, 0.3 -0.4, 700 900)), + POLYGON ((700 860, 700 899.5, -1.68593498537 899.55, 700 860)) + ) + + + + POLYGON ((0.2942036115049298 2.226702215615205, -3 -2, -6 900, 700 900, 699.6114719806972 899.5000276853219, 700 899.5, 700 860, 670.2204017222961 861.6785046602191, 0.3 -0.4, 0.2942036115049298 2.226702215615205)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestUnaryUnion.xml geos-3.8.0/tests/xmltester/tests/general/TestUnaryUnion.xml --- geos-3.7.1/tests/xmltester/tests/general/TestUnaryUnion.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestUnaryUnion.xml 2019-10-08 16:20:35.000000000 +0000 @@ -1,161 +1,161 @@ - - Tests for Geometry.union() method (unary union) - - - - P - point (showing merging of identical points) - - MULTIPOINT((10 10), (0 0), (10 10)) - - - - MULTIPOINT((10 10), (0 0)) - - - - - - P - point (showing merging of identical points) - - MULTIPOINT((10 10), (0 0), (10 10), (10 10), (10 10), (5 5), (5 5)) - - - - MULTIPOINT((10 10), (5 5), (0 0)) - - - - - - L - LineString (showing noding) - - LINESTRING (0 0, 10 0, 5 -5, 5 5) - - - - MULTILINESTRING ((0 0, 5 0), (5 0, 10 0, 5 -5, 5 0), (5 0, 5 5)) - - - - - - mL - multiLineString (showing noding) - - MULTILINESTRING((0 0, 10 10), (0 10, 10 0)) - - - - MULTILINESTRING ((0 0, 5 5), (5 5, 10 10), (0 10, 5 5), (5 5, 10 0)) - - - - - - GC - shows handling linear rings and linestrings - GEOMETRYCOLLECTION (LINEARRING (0 0, 0 70, 80 70, 80 0, 0 0), - LINESTRING (30 110, 30 30, 100 30)) - - - - MULTILINESTRING ((0 0, 0 70, 30 70), - (30 70, 80 70, 80 30), - (80 30, 80 0, 0 0), - (30 110, 30 70), - (30 70, 30 30, 80 30), - (80 30, 100 30)) - - - - - - mL - multiLineString (showing noding and dissolving) - MULTILINESTRING((0 0, 10 10), (5 5, 15 15)) - - - - MULTILINESTRING ((0 0, 5 5), (5 5, 10 10), (10 10, 15 15)) - - - - - - mP - multiPolygon (invalid) - MULTIPOLYGON (((0 0, 0 100, 100 100, 100 0, 0 0)), - ((70 160, 70 70, 160 70, 160 160, 70 160))) - - - - POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0)) - - - - - - GC - geometry collection (homo) - GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), - POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160))) - - - - POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0)) - - - - - - GC - geometry collection (hetero LA) - GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), - POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160)), - LINESTRING (40 70, 40 160)) - - - - GEOMETRYCOLLECTION (LINESTRING (40 100, 40 160), - POLYGON ((0 0, 0 100, 40 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0))) - - - - - - GC - geometry collection (hetero PL) - GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), - POINT (120 110), - POINT (40 60)) - - - - LINESTRING (40 60, 120 110) - - - - - - GC - geometry collection (hetero PL) - GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), - POINT (120 110), - POINT (40 60), - POINT (100 70), - POINT (80 50)) - - - - GEOMETRYCOLLECTION (POINT (80 50), POINT (100 70), LINESTRING (40 60, 120 110)) - - - - - - mP - multipolygon (invalid) with topology collapse - MULTIPOLYGON (((0 0, 150 0, 150 1, 0 0)), - ((180 0, 20 0, 20 100, 180 100, 180 0))) - - - - POLYGON ((150 0, 20 0, 20 100, 180 100, 180 0, 150 0)) - - - - - - - + + Tests for Geometry.union() method (unary union) + + + + P - point (showing merging of identical points) + + MULTIPOINT((10 10), (0 0), (10 10)) + + + + MULTIPOINT((10 10), (0 0)) + + + + + + P - point (showing merging of identical points) + + MULTIPOINT((10 10), (0 0), (10 10), (10 10), (10 10), (5 5), (5 5)) + + + + MULTIPOINT((10 10), (5 5), (0 0)) + + + + + + L - LineString (showing noding) + + LINESTRING (0 0, 10 0, 5 -5, 5 5) + + + + MULTILINESTRING ((0 0, 5 0), (5 0, 10 0, 5 -5, 5 0), (5 0, 5 5)) + + + + + + mL - multiLineString (showing noding) + + MULTILINESTRING((0 0, 10 10), (0 10, 10 0)) + + + + MULTILINESTRING ((0 0, 5 5), (5 5, 10 10), (0 10, 5 5), (5 5, 10 0)) + + + + + + GC - shows handling linear rings and linestrings + GEOMETRYCOLLECTION (LINEARRING (0 0, 0 70, 80 70, 80 0, 0 0), + LINESTRING (30 110, 30 30, 100 30)) + + + + MULTILINESTRING ((0 0, 0 70, 30 70), + (30 70, 80 70, 80 30), + (80 30, 80 0, 0 0), + (30 110, 30 70), + (30 70, 30 30, 80 30), + (80 30, 100 30)) + + + + + + mL - multiLineString (showing noding and dissolving) + MULTILINESTRING((0 0, 10 10), (5 5, 15 15)) + + + + MULTILINESTRING ((0 0, 5 5), (5 5, 10 10), (10 10, 15 15)) + + + + + + mP - multiPolygon (invalid) + MULTIPOLYGON (((0 0, 0 100, 100 100, 100 0, 0 0)), + ((70 160, 70 70, 160 70, 160 160, 70 160))) + + + + POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0)) + + + + + + GC - geometry collection (homo) + GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), + POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160))) + + + + POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0)) + + + + + + GC - geometry collection (hetero LA) + GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), + POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160)), + LINESTRING (40 70, 40 160)) + + + + GEOMETRYCOLLECTION (LINESTRING (40 100, 40 160), + POLYGON ((0 0, 0 100, 40 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0))) + + + + + + GC - geometry collection (hetero PL) + GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), + POINT (120 110), + POINT (40 60)) + + + + LINESTRING (40 60, 120 110) + + + + + + GC - geometry collection (hetero PL) + GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), + POINT (120 110), + POINT (40 60), + POINT (100 70), + POINT (80 50)) + + + + GEOMETRYCOLLECTION (POINT (80 50), POINT (100 70), LINESTRING (40 60, 120 110)) + + + + + + mP - multipolygon (invalid) with topology collapse + MULTIPOLYGON (((0 0, 150 0, 150 1, 0 0)), + ((180 0, 20 0, 20 100, 180 100, 180 0))) + + + + POLYGON ((150 0, 20 0, 20 100, 180 100, 180 0, 150 0)) + + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestValid2.xml geos-3.8.0/tests/xmltester/tests/general/TestValid2.xml --- geos-3.7.1/tests/xmltester/tests/general/TestValid2.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestValid2.xml 2019-10-08 16:20:35.000000000 +0000 @@ -2894,119 +2894,119 @@ Test 415 - MULTIPOINT (20 80, 110 160, 20 160) + MULTIPOINT ((20 80), (110 160), (20 160)) true Test 416 - MULTIPOINT (20 80, 60 120, 20 160) + MULTIPOINT ((20 80), (60 120), (20 160)) true Test 417 - MULTIPOINT (10 80, 110 170, 110 120) + MULTIPOINT ((10 80), (110 170), (110 120)) true Test 418 - MULTIPOINT (10 80, 110 170, 160 120) + MULTIPOINT ((10 80), (110 170), (160 120)) true Test 419 - MULTIPOINT (20 120, 60 120, 110 120, 160 120, 200 120) + MULTIPOINT ((20 120), (60 120), (110 120), (160 120), (200 120)) true Test 420 - MULTIPOINT (60 120, 110 120, 160 120) + MULTIPOINT ((60 120), (110 120), (160 120)) true Test 421 - MULTIPOINT (60 120, 160 120, 160 40, 60 40) + MULTIPOINT ((60 120), (160 120), (160 40), (60 40)) true Test 422 - MULTIPOINT (20 150, 60 120, 110 80) + MULTIPOINT ((20 150), (60 120), (110 80)) true Test 423 - MULTIPOINT (110 80, 160 120, 200 160) + MULTIPOINT ((110 80), (160 120), (200 160)) true Test 424 - MULTIPOINT (110 80, 110 120, 110 160) + MULTIPOINT ((110 80), (110 120), (110 160)) true Test 425 - MULTIPOINT (110 170, 110 80) + MULTIPOINT ((110 170), (110 80)) true Test 426 - MULTIPOINT (60 120, 160 120, 110 80, 110 170) + MULTIPOINT ((60 120), (160 120), (110 80), (110 170)) true Test 427 - MULTIPOINT (90 80, 130 80) + MULTIPOINT ((90 80), (130 80)) true Test 428 - MULTIPOINT (60 120, 160 120, 110 80) + MULTIPOINT ((60 120), (160 120), (110 80)) true Test 429 - MULTIPOINT (40 170, 40 90, 130 170) + MULTIPOINT ((40 170), (40 90), (130 170)) true Test 430 - MULTIPOINT (90 170, 280 170, 190 90) + MULTIPOINT ((90 170), (280 170), (190 90)) true Test 431 - MULTIPOINT (190 110, 150 70, 230 70) + MULTIPOINT ((190 110), (150 70), (230 70)) true @@ -3531,112 +3531,112 @@ Test 506 - MULTIPOINT (50 250, 90 220, 130 190) + MULTIPOINT ((50 250), (90 220), (130 190)) true Test 507 - MULTIPOINT (180 180, 230 130, 280 80) + MULTIPOINT ((180 180), (230 130), (280 80)) true Test 508 - MULTIPOINT (50 120, 90 80, 130 40) + MULTIPOINT ((50 120), (90 80), (130 40)) true Test 509 - MULTIPOINT (300 280, 340 240, 380 200) + MULTIPOINT ((300 280), (340 240), (380 200)) true Test 510 - MULTIPOINT (230 150, 260 120, 290 90) + MULTIPOINT ((230 150), (260 120), (290 90)) true Test 511 - MULTIPOINT (200 190, 240 150, 270 110) + MULTIPOINT ((200 190), (240 150), (270 110)) true Test 512 - MULTIPOINT (160 150, 190 120, 220 90) + MULTIPOINT ((160 150), (190 120), (220 90)) true Test 513 - MULTIPOINT (120 190, 160 150, 200 110) + MULTIPOINT ((120 190), (160 150), (200 110)) true Test 514 - MULTIPOINT (90 80, 160 150, 340 240) + MULTIPOINT ((90 80), (160 150), (340 240)) true Test 515 - MULTIPOINT (90 80, 160 150, 300 150) + MULTIPOINT ((90 80), (160 150), (300 150)) true Test 516 - MULTIPOINT (90 80, 160 150, 240 150) + MULTIPOINT ((90 80), (160 150), (240 150)) true Test 517 - MULTIPOINT (90 80, 130 120, 210 150) + MULTIPOINT ((90 80), (130 120), (210 150)) true Test 518 - MULTIPOINT (130 120, 210 150, 340 200) + MULTIPOINT ((130 120), (210 150), (340 200)) true Test 519 - MULTIPOINT (160 150, 240 150, 340 210) + MULTIPOINT ((160 150), (240 150), (340 210)) true Test 520 - MULTIPOINT (160 150, 300 150, 340 150) + MULTIPOINT ((160 150), (300 150), (340 150)) true Test 521 - MULTIPOINT (160 150, 240 150, 340 240) + MULTIPOINT ((160 150), (240 150), (340 240)) true @@ -3657,84 +3657,84 @@ Test 524 - MULTIPOINT (20 20, 80 80, 20 120) + MULTIPOINT ((20 20), (80 80), (20 120)) true Test 525 - MULTIPOINT (40 40, 80 60, 120 100) + MULTIPOINT ((40 40), (80 60), (120 100)) true Test 526 - MULTIPOINT (40 40, 120 100, 80 60) + MULTIPOINT ((40 40), (120 100), (80 60)) true Test 527 - MULTIPOINT (40 40, 60 100, 100 60, 120 120) + MULTIPOINT ((40 40), (60 100), (100 60), (120 120)) true Test 528 - MULTIPOINT (20 120, 60 60, 100 100, 140 40) + MULTIPOINT ((20 120), (60 60), (100 100), (140 40)) true Test 529 - MULTIPOINT (20 20, 80 70, 140 120, 200 170) + MULTIPOINT ((20 20), (80 70), (140 120), (200 170)) true Test 530 - MULTIPOINT (20 20, 140 120, 80 70, 200 170) + MULTIPOINT ((20 20), (140 120), (80 70), (200 170)) true Test 531 - MULTIPOINT (80 70, 20 20, 200 170, 140 120) + MULTIPOINT ((80 70), (20 20), (200 170), (140 120)) true Test 532 - MULTIPOINT (80 70, 140 120) + MULTIPOINT ((80 70), (140 120)) true Test 533 - MULTIPOINT (140 120, 80 70) + MULTIPOINT ((140 120), (80 70)) true Test 534 - MULTIPOINT (80 170, 140 120, 200 80) + MULTIPOINT ((80 170), (140 120), (200 80)) true Test 535 - MULTIPOINT (80 170, 140 120, 200 80, 80 70) + MULTIPOINT ((80 170), (140 120), (200 80), (80 70)) true @@ -3748,7 +3748,7 @@ Test 537 - MULTIPOINT (10 10, 20 20) + MULTIPOINT ((10 10), (20 20)) true @@ -3825,7 +3825,7 @@ Test 548 - MULTIPOINT (130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240) + MULTIPOINT ((130 240), (130 240), (130 240), (570 240), (570 240), (570 240), (650 240)) true @@ -3867,14 +3867,14 @@ Test 554 - MULTIPOINT (70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50) + MULTIPOINT ((70 340), (70 50), (430 50), (420 340), (340 120), (390 110), (390 70), (350 100), (350 50), (370 90), (320 80), (360 120), (350 80), (390 90), (420 80), (410 60), (410 100), (370 100), (380 60), (370 80), (380 100), (360 80), (370 80), (380 70), (390 80), (390 70), (410 70), (400 60), (410 60), (410 60), (410 60), (370 70), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50)) true Test 555 - MULTIPOINT (140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 260 110, 170 130) + MULTIPOINT ((140 350), (510 140), (110 140), (250 290), (250 50), (300 370), (450 310), (440 160), (290 280), (220 160), (100 260), (320 230), (200 280), (360 130), (330 210), (380 80), (220 210), (380 310), (260 150), (260 110), (170 130)) true @@ -3888,7 +3888,7 @@ Test 557 - MULTIPOINT (50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320) + MULTIPOINT ((50 320), (50 280), (50 230), (50 160), (50 120), (100 120), (160 120), (210 120), (210 180), (210 150), (180 180), (140 180), (140 210), (140 260), (160 180), (140 300), (140 320), (110 320), (80 320)) true @@ -4462,7 +4462,7 @@ Test 640 - MULTIPOINT (120 320, 180 260, 180 320, 180 200, 300 200, 200 220) + MULTIPOINT ((120 320), (180 260), (180 320), (180 200), (300 200), (200 220)) true @@ -4476,14 +4476,14 @@ Test 642 - MULTIPOINT (200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200) + MULTIPOINT ((200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200), (200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200)) true Test 643 - MULTIPOINT (40 90, 20 20, 70 70) + MULTIPOINT ((40 90), (20 20), (70 70)) true @@ -4511,7 +4511,7 @@ Test 647 - MULTIPOINT (100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) + MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320)) true @@ -4525,7 +4525,7 @@ Test 649 - MULTIPOINT (-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120) + MULTIPOINT ((-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120), (-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120)) true @@ -4546,21 +4546,21 @@ Test 652 - MULTIPOINT (100 100, 200 200) + MULTIPOINT ((100 100), (200 200)) true Test 653 - MULTIPOINT (100 100, 200 200, 300 300, 500 500) + MULTIPOINT ((100 100), (200 200), (300 300), (500 500)) true Test 654 - MULTIPOINT (100 100, 200 200, 400 400, 600 600) + MULTIPOINT ((100 100), (200 200), (400 400), (600 600)) true @@ -4980,7 +4980,7 @@ Test 714 - MULTIPOINT (0 20, 40 20) + MULTIPOINT ((0 20), (40 20)) true @@ -4994,21 +4994,21 @@ Test 716 - MULTIPOINT (0 20, 20 20) + MULTIPOINT ((0 20), (20 20)) true Test 717 - MULTIPOINT (20 20, 40 20) + MULTIPOINT ((20 20), (40 20)) true Test 718 - MULTIPOINT (80 260, 140 260, 180 260) + MULTIPOINT ((80 260), (140 260), (180 260)) true @@ -5050,7 +5050,7 @@ Test 724 - MULTIPOINT (40 40, 100 40) + MULTIPOINT ((40 40), (100 40)) true @@ -5064,14 +5064,14 @@ Test 726 - MULTIPOINT (40 40, 60 60) + MULTIPOINT ((40 40), (60 60)) true Test 727 - MULTIPOINT (60 60, 100 100) + MULTIPOINT ((60 60), (100 100)) true @@ -5092,21 +5092,21 @@ Test 730 - MULTIPOINT (40 40, 80 60, 40 100) + MULTIPOINT ((40 40), (80 60), (40 100)) true Test 731 - MULTIPOINT (80 280, 80 220, 160 220, 80 220) + MULTIPOINT ((80 280), (80 220), (160 220), (80 220)) true Test 732 - MULTIPOINT (80 280, 80 220, 160 220) + MULTIPOINT ((80 280), (80 220), (160 220)) true diff -Nru geos-3.7.1/tests/xmltester/tests/general/TestValid.xml geos-3.8.0/tests/xmltester/tests/general/TestValid.xml --- geos-3.7.1/tests/xmltester/tests/general/TestValid.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/general/TestValid.xml 2019-10-08 16:20:35.000000000 +0000 @@ -70,6 +70,16 @@ + L - empty + +LINESTRING EMPTY + + + true + + + + L - no repeated points LINESTRING (40 180, 120 120, 140 200, 200 140, 240 200) @@ -124,6 +134,14 @@ + mL - MultiLinestring with empty component + MULTILINESTRING((1 1, 0 0), EMPTY) + + true + + + + A - zero-area polygon POLYGON ((0 0, 0 0, 0 0, 0 0, 0 0)) @@ -293,13 +311,21 @@ + A - non-empty shell and empty hole (valid) + POLYGON ((60 280, 260 180, 60 80, 60 280), EMPTY) + + true + + + + A - empty shell and holes (valid) POLYGON (EMPTY, EMPTY, EMPTY) true - + A - hole overlapping shell at non-vertex @@ -742,5 +768,12 @@ + + mA - non-empty and empty polygon + MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10)), EMPTY) + + true + + diff -Nru geos-3.7.1/tests/xmltester/tests/heisenbugs.xml geos-3.8.0/tests/xmltester/tests/heisenbugs.xml --- geos-3.7.1/tests/xmltester/tests/heisenbugs.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/heisenbugs.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - - - - -Heisenbug provided by "Rene Neidt" (r.neidt at idu.de) - - - 01060000001C000000010300000001000000040000005C8FC245BCA25441F853E3DD919355419133753ABCA25441053861CD91935541E833753ABCA25441853861CD919355415C8FC245BCA25441F853E3DD91935541010300000001000000040000009133753ABCA25441053861CD91935541C520B01ABCA2544123DBF99E919355418833753ABCA25441F83761CD919355419133753ABCA25441053861CD9193554101030000000100000004000000F24283B3B4A254418422B80B87935541FD3F83B3B4A254415B1EB80B879355418FC2F508B4A25441C3F5281C86935541F24283B3B4A254418422B80B87935541010300000001000000070000007B14AE1FB2A25441B072686183935541736891E5AFA25441B81E8533809355412FDD2496AFA25441560E2DC27F9355416A184AE0AFA2544113B2FC2B809355415C8FC2E5AFA254413D0AD733809355412881420FB0A25441B1F5096F809355417B14AE1FB2A25441B07268618393554101030000000100000005000000448B6CD7A9A2544139B4C88E77935541BD7206BDA9A25441E03F2169779355415C8FC2A5A9A2544185EB514877935541AE7206BDA9A25441CB3F216977935541448B6CD7A9A2544139B4C88E7793554101030000000100000004000000AD448E189CA2544144E1C8F86393554154BF62AF9BA25441505D126363935541F6285CAF9BA254413333336363935541AD448E189CA2544144E1C8F863935541010300000001000000040000009CC420189BA2544104560E4D5B935541C74B377197A25441D122DBC15A9355416D707F0798A25441E74A3BD85A9355419CC420189BA2544104560E4D5B9355410103000000010000000400000052B81EED90A25441EC51B83E54935541C1CAA10D8FA2544148E17A7451935541E6A570C18FA2544196EE51805293554152B81EED90A25441EC51B83E5493554101030000000100000004000000ED2D96108BA25441051F3EAB4B9355418A2D96108BA25441761E3EAB4B9355413D0AD7338DA254415C8FC2C54E935541ED2D96108BA25441051F3EAB4B935541010300000001000000040000008DF47DDF8AA2544134CC05644B93554128F47DDF8AA25441A1CB05644B93554152B81E7589A25441713D0A57499355418DF47DDF8AA2544134CC05644B9355410103000000010000000400000004560E2D85A254415A643B4743935541000000D082A25441250681CD3F935541773FCC6B83A25441F25B9AB24093554104560E2D85A254415A643B474393554101030000000100000014000000819543D375A25441000000702D935541B6F3FDE471A254412DB29D5731935541FCA9F1E272A254415C8FC27D31935541C520B02275A25441250681AD34935541B6F3FD8475A254418B6CE72B35935541355EBAA975A25441BC749318359355411B2FDD1C77A2544104560E85379355412FDD243677A254416F1283A83793554139B4C8B677A254413108AC5C389355414A0C029379A254413BDF4F1D3B9355419102F4F578A25441AA6AED343A93554148E17AB477A254417B14AE573893554152B81E3577A2544148E17AA437935541B81E851B77A254410AD7A380379355419A9999A975A254413D0AD7133593554148E17A8475A25441713D0A2735935541295C8F2275A2544185EB51A83493554148E17AE472A25441A4703D7A31935541291701E871A2544182A89F5431935541819543D375A25441000000702D93554101030000000100000006000000B579E52F7FA25441B2E4F0124393554104560E557FA254410C022B57439355417593186C81A254418FC2F540469355413EC2875880A254417C5FD9C04493554152B81E557FA25441713D0A5743935541B579E52F7FA25441B2E4F01243935541010300000001000000070000007593186C81A254418FC2F54046935541DD2406F182A2544189416095489355416ABC744B85A254415839B4C84B935541E94EE8C784A254412D23CB154B93554114AE47F182A2544152B81E95489355412EF656CF81A25441B81E26D9469355417593186C81A254418FC2F5404693554101030000000100000005000000809754BF85A25441F27DDB674C9355416F12839086A254410C022B874D935541652160F887A2544191B2E8894F9355410AD7A39086A25441713D0A874D935541809754BF85A25441F27DDB674C93554101030000000100000006000000666666D688A2544191ED7CC750935541FCA9F1328AA25441AAF1D2BD5293554131A117908AA254417F880C4453935541333333338AA25441E17A14BE5293554123BD00B289A25441541EFD0352935541666666D688A2544191ED7CC7509355410103000000010000000400000031A117908AA254417F880C44539355415839B4108BA25441894160FD5393554149A117908AA25441A1880C445393554131A117908AA254417F880C4453935541010300000001000000040000005839B4108BA25441894160FD53935541FA41670E8CA25441C185F56755935541AF3E670E8CA254410C81F567559355415839B4108BA25441894160FD5393554101030000000100000009000000FA41670E8CA25441C185F56755935541EC51B8568DA25441A01A2F3D579355412FDD24468FA2544104560E0D5A9355410681958B90A2544121B072D85B93554182A07A2C91A25441514995BB5C935541B81E858B90A2544185EB51D85B935541666666468FA25441CDCCCC0C5A935541713D0A578DA25441D7A3703D57935541FA41670E8CA25441C185F567559355410103000000010000000400000082A07A2C91A25441514995BB5C935541B6F3FD6C91A254419EEFA7165D935541C4A37A2C91A25441EA4D95BB5C93554182A07A2C91A25441514995BB5C93554101030000000100000004000000A5A644AD91A25441FE677FDD64935541FCA9F1DA91A25441A245B62B6593554117A844AD91A25441776A7FDD64935541A5A644AD91A25441FE677FDD649355410103000000010000000400000056D0BCD993A25441741BC98B659355415BD2BCD993A25441D51BC98B6593554152B81E6593A254415C8FC2756593554156D0BCD993A25441741BC98B6593554101030000000100000007000000AE47E1BA98A25441DF4F8D97679355416DE7FB619AA25441EE7C3FF569935541BA490C929CA25441D578E9166D935541E8228C9C9AA25441010F13496A9355411F85EB619AA2544152B81EF569935541E90F4B049AA2544185E71F6F69935541AE47E1BA98A25441DF4F8D976793554101030000000100000004000000D34D62989CA25441000000206D9355414A0C025B9DA25441508D97366E9355412C12DF499DA25441E3DE0F1E6E935541D34D62989CA25441000000206D93554101030000000100000004000000D5F04439A0A254416BFCF05872935541E9F34439A0A25441E200F1587293554100000000A1A254418FC2F57873935541D5F04439A0A254416BFCF05872935541010300000001000000040000002FDD247EA2A25441FA7E6A8C759355417F6ABC2CA3A25441BE9F1A7F76935541D2A270D5A2A25441F18DC205769355412FDD247EA2A25441FA7E6A8C75935541010300000001000000050000007F6ABC2CA3A25441BE9F1A7F769355414D412ABFA4A2544170642EBF7893554114AE4771A5A25441E17A14BE79935541B2372ABFA4A25441AF562EBF789355417F6ABC2CA3A25441BE9F1A7F7693554101030000000100000005000000B81E85FBADA25441000000F085935541022B87DEAFA25441F2D24DA2889355417B14AEE7AFA25441F6285CAF88935541EC51B8DEAFA25441295C8FA288935541B81E85FBADA25441000000F085935541 - - - 010300000001000000090000001340670E8CA254410883F56755935541713D0A578DA25441D7A3703D57935541666666468FA25441CDCCCC0C5A935541B81E858B90A2544185EB51D85B935541CD9D7A2C91A254417E4595BB5C9355410681958B90A2544121B072D85B9355412FDD24468FA2544104560E0D5A935541EC51B8568DA25441A01A2F3D579355411340670E8CA254410883F56755935541 - - - 5 - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/hexwkb.xml geos-3.8.0/tests/xmltester/tests/hexwkb.xml --- geos-3.7.1/tests/xmltester/tests/hexwkb.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/hexwkb.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ - - - - - - HEXWKB (Little Endian) POINT(0 1) - - 01010000000000000000000000000000000000F03F - - true - - - - HEXWKB (Little Endian) LINESTRING(0 1, 2 3, 4 5) - - 0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440 - - true - - - - HEXWKB (Little Endian) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) - - 010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000 - - true - - - - HEXWKB (Little Endian) MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0) - - 010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 - - true - - - - HEXWKB (Little Endian) MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)) - - 01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440 - - true - - - - HEXWKB (Little Endian) MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))) - - 010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940 - - true - - - - HEXWKB (Little Endian) GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)) - - 010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 - - true - - - diff -Nru geos-3.7.1/tests/xmltester/tests/hole_from_shell.xml geos-3.8.0/tests/xmltester/tests/hole_from_shell.xml --- geos-3.7.1/tests/xmltester/tests/hole_from_shell.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/hole_from_shell.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - -GEOS 3.0.0_rc4 bufferReducedPrecision - -MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), - ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) - - - -MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), - ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/hole_red.xml geos-3.8.0/tests/xmltester/tests/hole_red.xml --- geos-3.7.1/tests/xmltester/tests/hole_red.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/hole_red.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - -GEOS 3.0.0_rc4 bufferReducedPrecision - -MULTIPOLYGON ( - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) -) - - - -MULTIPOLYGON ( - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) -) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-176.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-176.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-176.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-176.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,40 @@ + + + http://trac.osgeo.org/geos/ticket/176 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + Polygon 1 + + +POLYGON ((413.3999999999999773 243.0999999999999943, 607.2999999999999545 244.1999999999999886, 607.0000000000000000 294.8999999999999773, 697.8999999999999773 295.3999999999999773, 699.2000000000000455 241.8000000000000114, 416.8999999999999773 240.9000000000000057, 416.6999999999999886 162.3000000000000114, 413.1999999999999886 162.3000000000000114, 413.3999999999999773 243.0999999999999943)) + + + +POLYGON ((609.1722610376851890 243.5129929302678704, 609.2638333893902427 243.8213729820575395, 609.2999649881396635 244.2118341123558309, 609.0118040315680901 292.9110357729544489, 695.9481804295313623 293.3892336629322699, 697.1510625643339836 243.7934779510754595, 609.1722610376851890 243.5129929302678704)) + + + + + + + + + Polygon 2 + + +POLYGON ((513.3999999999999773 343.1000000000000227, 707.2999999999999545 344.1999999999999886, 707.0000000000000000 394.8999999999999773, 797.8999999999999773 395.3999999999999773, 799.2000000000000455 341.8000000000000114, 516.8999999999999773 340.8999999999999773, 516.7000000000000455 262.3000000000000114, 513.2000000000000455 262.3000000000000114, 513.3999999999999773 343.1000000000000227)) + + + +POLYGON ((709.1722610376851890 343.5129929302678988, 709.2638333893902427 343.8213729820575963, 709.2999649881396635 344.2118341123558594, 709.0118040315680901 392.9110357729544489, 795.9481804295313623 393.3892336629322699, 797.1510625643339836 343.7934779510754879, 709.1722610376851890 343.5129929302678988)) + + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-188.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-188.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-188.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-188.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + +http://trac.osgeo.org/geos/ticket/188 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + Caused crash in RightmostEdgeFinder creating BufferSubgraphs + + +0103000000010000000B000000713D0AD7C3F9C3403D0AD7A3E8B01441295C8FC255FBC340C3F5285C0BB1144153BB8CF8AD01C44092DD2F29FEB0144148E17A14AE01C4408FC2F528FEB0144148E17A146E01C440A4703D0AF0B014411F85EB517801C44085EB51B8EFB014419A999999B9FFC34066666666CBB0144133333333F3FCC340CDCCCCCCC9B01441295C8FC2F5FBC3408FC2F528CAB014413D0AD7A3F0FBC340CDCCCCCCC9B01441713D0AD7C3F9C3403D0AD7A3E8B01441 + + + +0103000000010000000F000000693B38D7C3F9C340F428D7A3E8B0144168CCA9C255FBC3400F64275C0BB11441F72C82F8AD01C440D4982E29FEB01441501A4C14AE01C4402CC9F428FEB01441FB5951146E01C440B39F3D0AF0B01441E41853146E01C44058063D0AF0B01441C8385D146E01C44060833C0AF0B01441AA97BA517801C440699851B8EFB0144145027C99B9FFC340C0A56766CBB01441F3A43233F3FCC340E51CCECCC9B01441B94391C2F5FBC340C211F728CAB014412A4F79C2F5FBC340FDDFF628CAB014412F0869C2F5FBC340D64AF628CAB01441FD95D2A3F0FBC340CFB6CFCCC9B01441693B38D7C3F9C340F428D7A3E8B01441 + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-234.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-234.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-234.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-234.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,26 @@ + + +http://trac.osgeo.org/geos/ticket/234 + + + + + +http://trac.osgeo.org/geos/ticket/234 +Assertion failed on intersecting collection with empty component + + +MULTIPOLYGON (((1 1, 1 5, 5 5, 5 1, 1 1), EMPTY)) + + +MULTIPOLYGON (((3 3, 3 4, 4 4, 4 3, 3 3))) + + + +POLYGON ((3 3, 3 4, 4 4, 4 3, 3 3)) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-244.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-244.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-244.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-244.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,23 @@ + + +http://trac.osgeo.org/geos/ticket/244 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + +http://trac.osgeo.org/geos/ticket/244 + + + MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) + + + + MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-275.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-275.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-275.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-275.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,31 @@ + + +http://trac.osgeo.org/geos/ticket/275 + + + + + +http://trac.osgeo.org/geos/ticket/275 + + +MULTIPOLYGON (((97.4196581300587923 1391.7094503287939915, 1097.3929445351700451 1659.6432199333848985, 2097.6867783781326580 1391.5243492190379584, 2829.5979618286305595 659.3760732813996128, 3097.3929252677053228 -340.6343946513263745, 2829.3203546600025220 -1340.5704802618731719, 2566.4316545475776365 -1603.3983692935935323, 2589.9586987092807249 -1691.2539814346002913, 2550.3216026895242976 -1839.1041048139375107, 2582.0225141513105882 -1957.4828931887502677, 2523.0465473393464890 -2177.4688367911371643, 2361.9813735858801920 -2338.4967531528800464, 2141.9817920466971373 -2397.4218256316030420, 1921.9931199150225893 -2338.4560374338593647, 1915.5094890288899023 -2331.9715065100085667, 1790.8032356108271870 -2365.3730474120334293, 1773.3588004956532131 -2360.6972390794344392, 1755.9014460409671301 -2365.3730474120334293, 1535.9127739092928095 -2306.4072592142892972, 1470.0174606543544087 -2240.5027985744332000, 1267.8188705444704283 -2294.6600223925997852, 1145.5500718010853234 -2750.7342254735290226, 779.4928666591022193 -3116.7067547270667092, 279.4938285436001593 -3250.6273710942414255, -220.4804154644647269 -3116.6142190040254718, -276.8825358097809044 -3060.2042690896628301, -317.8708072633123720 -3042.4487397531365787, -317.0081043084857697 -3040.4572078632113517, -353.9188796380849453 -3025.9673133506230442, -481.8759722620623052 -2952.0780561800302166, -597.3916747239470624 -2859.9435764086629206, -697.8857092860117746 -2751.6218846962374300, -781.1133376604859677 -2629.5325659449085833, -845.2155017965442312 -2496.4027329581699632, -881.7734250743712892 -2377.8616075414415718, -883.2163026251768088 -2378.2274205979942963, -915.6765245378969666 -2250.1944686487954641, -958.6488338256679071 -2176.6893024190303549, -958.3104527203266798 -2176.4914793507796276, -961.3773376604859777 -2171.9925659449086197, -1025.4795017965443549 -2038.8627329581699996, -1069.0243497161841333 -1897.6661108397263433, -1091.0392188351402183 -1751.5566128059626863, -1091.0323623564322588 -1603.7978911310922285, -1089.6762878232161711 -1594.8034867385058533, -1104.6051239273215288 -1541.4387753320572756, -1142.1697554404233870 -1500.9481685832554376, -1144.1735018958338514 -1502.8286850026515822, -1237.9475018958337387 -1402.9096850026517131, -1235.9437554404232742 -1401.0291685832553412, -1283.8694719642787732 -1349.3704336840412452, -1284.3641704239839783 -1349.7723644815778243, -1285.2860836559341351 -1348.6376690100614724, -1338.3270735958196838 -1329.0603190321844522, -1337.4416005745254097 -1326.6613035542172838, -1425.0218796380850108 -1292.2803133506229187, -1552.9789722620623706 -1218.3910561800300911, -1668.4946747239471279 -1126.2565764086627951, -1679.3254791566805579 -1114.5821415641194108, -1680.0605373265407252 -1115.3491207030931491, -1702.7503708819851909 -1093.6036172334481762, -1770.9343685341837045 -1058.4171540195427497, -1770.1722772833329600 -1056.9403807575390601, -1874.5379722620623397 -996.6740561800301066, -1895.7478836933294133 -979.7571858838782646, -1896.7182978644157174 -981.0996960943623435, -2746.6499049371641377 -366.7388744659292570, -2763.2967822031337164 -362.2768436281256186, -2790.5987539714260492 -334.9710818839997160, -2790.5987539714260492 -334.9710818839996023, -2842.3952978644156246 -297.5306960943622698, -2841.4248836933293205 -296.1881858838783614, -2935.7306747239472315 -220.9705764086628506, -3036.2247092860116027 -112.6488846962375874, -3086.2207836436286925 -39.3080148699587753, -3129.2862482014747911 3.7634279033554208, -3145.0472131318642823 62.5968530737783055, -3145.0472131318642823 62.5968530737785258, -3183.5545017965441730 142.5702670418300499, -3227.0993497161844061 283.7668891602737631, -3249.1142188351404911 429.8763871940373633, -3249.1132358283407484 451.0604139114426516, -3263.2299989295852356 503.7562690975839246, -3249.1083453730552719 556.4508704679574294, -3249.1073623564325317 577.6351088689078779, -3227.0789334334317573 723.7425631523476568, -3183.5209817488726003 864.9351434214565870, -3145.0063950996932363 944.9047260716176879, -3129.2399803399048324 1003.7367132380807107, -3086.1705453954227778 1046.8041554447745511, -3036.1675038980588397 1120.1406209104106892, -2935.6634168207938274 1228.4529856651729460, -2820.1391641855243506 1320.5767444414277634, -2801.7930339334729979 1331.1685093202834196, -2763.2166432025555878 1369.7431151977043555, -2710.5214060758321466 1383.8623258961499687, -2692.1752147154593331 1394.4541260546511694, -2554.6299030180371119 1448.4349291985654418, -2410.5755828783944708 1481.3133830416004457, -2322.0627096881689795 1487.9463092123467050, -2263.2300000000000182 1503.7100000000000364, -2204.3990753125572155 1487.9409523895812981, -2115.7029639281322488 1481.2860169705504632, -1971.6547489328795564 1448.3808253636827885, -1834.1194591345197296 1394.3744929749309449, -1815.7587157038797159 1383.7697470828661608, -1763.0830830785189391 1369.6505646428263390, -1724.5137550381382425 1331.0687426030108327, -1706.1692244587284222 1320.4733608833789731, -1685.0325693031700212 1303.6117095115282609, -1684.0647021355841844 1304.9506960943622289, -798.3848875647835257 664.7497975144585780, -668.7086314658160973 597.8301540195427606, -669.4687336638634179 596.3572351253640136, -653.9962840476707697 587.4207017476531973, -634.6270161446395832 659.6966464095463607, 97.4196581300587923 1391.7094503287939915))) + + +POLYGON ((-3138.9918179090095691 39.9929298181513317, -3195.9318721744207323 131.7765582775780331, -3194.3605115562841092 132.7513874532058367, -3212.0423376604862824 158.6894340550911124, -3276.1445017965443185 291.8192670418299599, -3319.6893497161845517 433.0158891602736730, -3341.7042188351406367 579.1253871940372164, -3341.7041685876552037 580.2082322725017320, -3341.7842797495400191 580.2023206768839145, -3358.7842797495400191 810.5783206768840046, -3358.7041685876552037 810.5842322725018221, -3358.6973623564326772 957.2601088689078779, -3336.6689334334319028 1103.3675631523476568, -3293.1109817488727458 1244.5601434214565870, -3260.5234971247000431 1312.2230153808816340, -3296.6374455479131029 1414.0631037763496352, -3294.8380822260414789 1414.7011836840215437, -3328.7143497161841879 1524.5468891602736221, -3349.7012648829327190 1663.8340056869151340, -3350.1912493926529351 1663.7938778131951949, -3510.7782493926529241 3624.6538778131953222, -3510.2882648829327081 3624.6940056869152613, -3511.3162188351402619 3631.5163871940371791, -3511.3093623564318477 3779.2751088689078642, -3489.2809334334315281 3925.3825631523477568, -3445.7229817488723711 4066.5751434214562323, -3381.6084625862131361 4199.6990267427599974, -3298.3695038980586105 4321.7806209104110167, -3197.8654168207931434 4430.0929856651728187, -3082.3411641855241214 4522.2167444414280908, -2954.3772147154591039 4596.0941260546514968, -2816.8319030180368827 4650.0749291985657692, -2672.7775828783942416 4682.9533830416003184, -2592.0441774584969608 4689.0033359847420797, -2592.2292272141212379 4691.7359415891232857, 464.5127727858784965 4898.7359415891232857, 464.6978225415029442 4896.0033359847420797, 531.3099999999999454 4900.9950805664066138, 678.8370360718679422 4889.9260169705503358, 822.8852510671204072 4857.0208253636828886, 832.4966505855577452 4853.2466926456381771, 832.7155347673275401 4853.9304792686480141, 3440.9455347673278993 4019.0204792686481596, 3440.7266505855582182 4018.3366926456378678, 3568.6505408654807070 3968.1044929749309631, 3696.6007755412720144 3894.2033608833789913, 3812.1079268348321420 3802.0581609104569907, 3912.5919080161379497 3693.7271431733465761, 3995.8082053600896870 3571.6301008898981308, 4059.8980139174327633 3438.4943193843760127, 4103.4297576971002854 3297.2936566327280161, 4111.9568486815251163 3240.6649172772094971, 4114.5449810944692217 3241.0993479430067055, 4438.8449810944684941 1309.0733479430066382, 4436.2568486815243887 1308.6389172772094298, 4449.7310668223972243 1219.1561161070862909, 4449.7104973863315536 1071.3973957048663124, 4427.6685088490185080 925.2919864301782127, 4384.0974537747060822 784.1034492265001745, 4319.9705801376658201 650.9855167172314623, 4236.7202918527709699 528.9116481847523801, 4136.2061531259496405 420.6086113205509491, 4020.6733513123099328 328.4955743328730478, 3892.7025460983149969 254.6300689133272499, 3755.1522252283625676 200.6620310892940324, 3611.0948543776285078 167.7969465530077287, 3463.7482473934069276 156.7689236912091246, 3316.4036898899316839 167.8242957839195242, 3172.3524217021254117 200.7161186505198884, 3034.8121203619148218 254.7096866493769767, 2920.2486381949101997 320.8647580300017808, 2829.5979618286305595 659.3760732813996128, 2485.1041348942267177 1003.9814942180254320, 2264.2788423241918281 2319.5541328332446938, 409.7273757065412383 2913.2071331414008455, -1458.2438853899545848 2786.7096887882385090, -1390.0104079583070416 1953.5395283355223910, -1308.4375544520867152 1723.5068962236503012, -1310.2333181418257482 1722.8700927968927772, -1276.3402423028999237 1612.9336566327281162, -1254.3389331776024846 1466.8221161070862308, -1254.3595026136681554 1319.0633957048662523, -1256.0639743336037100 1307.7652980846462469, -1255.2787938929561733 1307.6972329071288641, -1257.2316394637061876 1285.1697643588329356, -1227.2802423028999783 1188.0186566327281525, -1205.2789331776025392 1041.9071161070862672, -1205.2904919563829935 958.8756534762312640, -1684.0647021355841844 1304.9506960943622289, -1685.0325693031700212 1303.6117095115282609, -1706.1692244587284222 1320.4733608833789731, -1724.5137550381382425 1331.0687426030108327, -1763.0830830785189391 1369.6505646428263390, -1815.7587157038797159 1383.7697470828661608, -1834.1194591345197296 1394.3744929749309449, -1971.6547489328795564 1448.3808253636827885, -2115.7029639281322488 1481.2860169705504632, -2204.3990753125572155 1487.9409523895812981, -2263.2300000000000182 1503.7100000000000364, -2322.0627096881689795 1487.9463092123467050, -2410.5755828783944708 1481.3133830416004457, -2554.6299030180371119 1448.4349291985654418, -2692.1752147154593331 1394.4541260546511694, -2710.5214060758321466 1383.8623258961499687, -2763.2166432025555878 1369.7431151977043555, -2801.7930339334729979 1331.1685093202834196, -2820.1391641855243506 1320.5767444414277634, -2935.6634168207938274 1228.4529856651729460, -3036.1675038980588397 1120.1406209104106892, -3086.1705453954227778 1046.8041554447745511, -3129.2399803399048324 1003.7367132380807107, -3145.0063950996932363 944.9047260716176879, -3183.5209817488726003 864.9351434214565870, -3227.0789334334317573 723.7425631523476568, -3249.1073623564325317 577.6351088689078779, -3249.1083453730552719 556.4508704679574294, -3263.2299989295852356 503.7562690975839246, -3249.1132358283407484 451.0604139114426516, -3249.1142188351404911 429.8763871940373633, -3227.0993497161844061 283.7668891602737631, -3183.5545017965441730 142.5702670418300499, -3145.0472131318642823 62.5968530737785258, -3145.0472131318642823 62.5968530737783055, -3138.9918179090095691 39.9929298181513317)) + + + true + + + true + + + + 1.5e-08 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-350.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-350.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-350.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-350.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,50 @@ + + http://trac.osgeo.org/geos/ticket/350 + + + + +http://trac.osgeo.org/geos/ticket/350 +Original data, fails at noding after snapping + + +01060000000100000001030000000100000007000000000000005C3613C1000000000028A54000000000208D14C1000000000028A5C000000000A83F15C100000000C0A6D040981124BD63B414C1B82DC4EB7C969940CA5EE746E76814C120462E0E5B4A8A40323BFF843F4B14C1C77B5B2D590C9AC0000000005C3613C1000000000028A540 + + +01060000000100000001030000000100000005000000EF2CF4FC0ED315C1F4792E801F82B6C0477F50A83BA313C12242DCE0BE81B2C0203301B73FCE13C14FB2744AB1EBD24029062D840ECE15C161DDB50E8D6BD140EF2CF4FC0ED315C1F4792E801F82B6C0 + + + + +POLYGON ((-314775 2708, -322378.6881546058 830.7344192302963, -321742.91436957236 -4737.74561859717, -357571.7470252057 -5762.123049645208, -357251.62907800317 17838.204022852125, -324495.928715514 19374.77016942418, -322378.6881546058 830.7344192302967, -314775 2708)) + + + + + +POLYGON ((-314775 2708, -322378.6881546058 830.7344192302963, -322378.6881546058 830.7344192302967, -314775 2708)) + + + + + + + +http://trac.osgeo.org/geos/ticket/350 +Pre-snapped version of the data. + + +0103000000010000000700000000000000E0B2E9C0000000000028A540000000008034F2C0000000000028A5C000000000A0FEF4C000000000C0A6D040604690F48ED1F2C0B82DC4EB7C969940287B9D1B9DA3F1C020462E0E5B4A8A40C8ECFC13FE2CF1C0C77B5B2D590C9AC000000000E0B2E9C0000000000028A540 + + +01030000000100000005000000BCB3D0F33B4CF7C0F4792E801F82B6C038FA8342DD19EDC02242DCE0BE81B2C0009909B8FD71EEC04FB2744AB1EBD240A418B4103A38F7C061DDB50E8D6BD140BCB3D0F33B4CF7C0F4792E801F82B6C0 + + + + +POLYGON ((-52631 2708, -60234.68815460579 830.7344192302963, -59598.91436957236 -4737.74561859717, -95427.7470252057 -5762.123049645208, -95107.62907800317 17838.204022852125, -62351.92871551402 19374.77016942418, -60234.68815460579 830.7344192302967, -52631 2708)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-356.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-356.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-356.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-356.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,25 @@ + + +http://trac.osgeo.org/geos/ticket/356 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + +http://trac.osgeo.org/geos/ticket/356 +multilinestring buffer artifacts + + +MULTILINESTRING((1676339.95971128 4847443.67952346, 1676340.19 4847443.54, 1676338.44 4847440.65, 1676335.37 4847442.52, 1676337.12 4847445.4, 1676339.95971128 4847443.67952346)) + + + +POLYGON ((1676334.370908338 4847442.47738721, 1676334.381771572 4847442.672985536, 1676334.430559768 4847442.86271278, 1676334.515400594 4847443.039287834, 1676336.265400594 4847445.919287834, 1676336.383019845 4847446.075914382, 1676336.528914198 4847446.206608688, 1676336.697486246 4847446.306356514, 1676336.882268526 4847446.371330916, 1676337.07617165 4847446.399039078, 1676337.2717563 4847446.388417942, 1676337.461518643 4847446.339875002, 1676337.638178226 4847446.255272662, 1676340.477889498 4847444.534796128, 1676340.477889507 4847444.534796122, 1676340.708178227 4847444.395272662, 1676340.865054944 4847444.277767458, 1676340.995997551 4847444.13191887, 1676341.095975523 4847443.963330074, 1676341.16114793 4847443.778477878, 1676341.189010992 4847443.584463894, 1676341.178494273 4847443.388741704, 1676341.130001801 4847443.19883052, 1676341.04539655 4847443.022026312, 1676339.29539655 4847440.132026312, 1676339.177687757 4847439.974857962, 1676339.031535752 4847439.843721232, 1676338.862575756 4847439.743672394, 1676338.6773224 4847439.678569058, 1676338.482918545 4847439.650921426, 1676338.286859869 4847439.661795518, 1676338.096705855 4847439.710772058, 1676337.91978832 4847439.795962644, 1676334.84978832 4847441.665962642, 1676334.693269131 4847441.783769514, 1676334.56272065 4847441.92983049, 1676334.463152898 4847442.098540236, 1676334.398386959 4847442.283424222, 1676334.370908338 4847442.47738721), +(1676338.816753609 4847443.202781668, 1676337.455985112 4847444.027221212, 1676336.743325995 4847442.854387922, 1676338.10393518 4847442.025612946, 1676338.816753609 4847443.202781668)) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-358.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-358.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-358.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-358.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,26 @@ + + +http://trac.osgeo.org/geos/ticket/358 + + + + + +Invalid result from union +http://trac.osgeo.org/geos/ticket/358 + + +010300000001000000D60500000AD7A3306B4D39418FC2F598DE4B52410AD7A3B0794D39418FC2F5F8DC4B52410AD7A3B08E4D39418FC2F5B8DB4B52410AD7A3B0A34D39418FC2F5F8D94B52410AD7A330B24D39418FC2F558DA4B52410AD7A3B0C34D39418FC2F518DB4B52410AD7A3B0D24D39418FC2F578DA4B52410AD7A3B0E54D39418FC2F558D84B52410AD7A3B0F34D39418FC2F5F8D64B52410AD7A330044E39418FC2F5F8D34B52410AD7A330134E39418FC2F5F8D14B52410AD7A330334E39418FC2F598D04B52410AD7A3304D4E39418FC2F578CD4B52410AD7A3B05D4E39418FC2F558CA4B52410AD7A3306E4E39418FC2F518C84B52410AD7A330844E39418FC2F578C54B52410AD7A3309C4E39418FC2F5B8C24B52410AD7A330C74E39418FC2F5D8BB4B52410AD7A3B0DE4E39418FC2F578B74B52410AD7A3B0F04E39418FC2F598B34B52410AD7A330FF4E39418FC2F518B14B52410AD7A3B0154F39418FC2F558AD4B52410AD7A3B01F4F39418FC2F5F8AB4B52410AD7A3B0374F39418FC2F5B8A84B52410AD7A3B04F4F39418FC2F5B8A64B52410AD7A3B0774F39418FC2F578A44B52410AD7A3B0AA4F39418FC2F5F8A34B52410AD7A3B0C54F39418FC2F558A24B52410AD7A330DD4F39418FC2F5389C4B52410AD7A330055039418FC2F5188F4B52410AD7A3B00D5039418FC2F5F88B4B52410AD7A3B02B5039418FC2F578844B52410AD7A3B03A5039418FC2F558824B5241FDACC76E5E503941F86F7DA27F4B5241B43441705E5039411B0B79A27F4B524140A4DF6E5E503941DE718AA27F4B524140A4DF6E48503941DE718AE2814B5241D088D26E5E503941948785A27F4B52410CD7A3B03A50394190C2F558824B52410CD7A3B02B50394190C2F578844B52410CD7A3B00D50394190C2F5F88B4B52410CD7A3300550394190C2F5188F4B52410CD7A330DD4F394190C2F5389C4B52410CD7A3B0C54F394190C2F558A24B52410CD7A3B0AA4F394190C2F5F8A34B52410CD7A3B0774F394190C2F578A44B52410CD7A3B04F4F394190C2F5B8A64B52410CD7A3B0374F394190C2F5B8A84B52410CD7A3B01F4F394190C2F5F8AB4B52410CD7A3B0154F394190C2F558AD4B52410CD7A330FF4E394190C2F518B14B52410CD7A3B0F04E394190C2F598B34B52410CD7A3B0DE4E394190C2F578B74B52410CD7A330C74E394190C2F5D8BB4B52410CD7A3309C4E394190C2F5B8C24B52410CD7A330844E394190C2F578C54B52410CD7A3306E4E394190C2F518C84B52410CD7A3B05D4E394190C2F558CA4B52410CD7A3304D4E394190C2F578CD4B52410CD7A330334E394190C2F598D04B52410CD7A330134E394190C2F5F8D14B52410CD7A330044E394190C2F5F8D34B52410CD7A3B0F34D394190C2F5F8D64B52410CD7A3B0E54D394190C2F558D84B52410CD7A3B0D24D394190C2F578DA4B52410CD7A3B0C34D394190C2F518DB4B52410CD7A330B24D394190C2F558DA4B52410CD7A3B0A34D394190C2F5F8D94B5241E4F21FE2354E39419C559F87AD4C5241ACD85F063B4E39418EE4F25BAA4C52419CA22399334E394164AA60F0AE4C5241E461A126234E3941C039238AB64C5241ACFA5C2D234E3941DEE00B8BB64C5241D456EC0F234E394128ED0D96B64C524190C2F5E8224E3941703D0AC7B64C5241D456EC0F234E3941B88D06F8B64C5241B0BFEC7E234E3941287E8C21B74C524170810425244E394160984C3DB74C524190C2F5E8244E3941703D0A47B74C5241B003E7AC254E394160984C3DB74C52416CC5FE52264E3941287E8C21B74C5241708A8EA4264E3941029A0803B74C524138234AAB264E39412041F103B74C524138234A2B374E39412041F163AF4C52416C09F9904A4E3941F0F44AF1994D524144696FF0774E394192CB7F509A4D524198FF906E774E3941545227689C4D5241C442ADF96F4E39416C09F998A64D5241B003E70C704E3941D022DB99A64D524190C2F5E86F4E3941703D0AC7A64D5241D478E936704E3941923A0129A74D5241D4BCE314714E3941E0BE0E7CA74D524108CE1961724E3941E04F8DB3A74D524190C2F5E8734E3941703D0AC7A74D524118B7D170754E3941E04F8DB3A74D52414CC807BD764E3941E0BE0E7CA74D5241480C029B774E3941923A0129A74D5241708104C5774E3941105839F4A64D52415C423ED8774E394176711BF5A64D52415C423E587F4E394176711BB59C4D5241708104457F4E3941105839B49C4D5241143FC65C7F4E394140355E969C4D5241E45817677F4E3941022B87969C4D5241E4581767804E3941022B8776984D5241143FC65C804E394140355E76984D524128ED0D5E804E394110C7BA74984D5241B4A67967804E3941AC8BDB74984D524144D8F054814E3941DE718A2A944D524194A982D18B4E39412C431C0F914D5241B003E76C934E39413CDF4F25924D5241B4EA7375934E3941E00B9321924D5241884160C5934E3941441CEB2E924D52418C8EE4C2934E3941F0164830924D52418C8EE4C2A84E3941F0164890944D5241884160C5A84E3941441CEB8E944D524108CE19E1A84E3941E04F8D93944D5241F0D24D02A94E3941EA043495944D52410CE02D00A94E394176BE9F96944D524104E78C78D34E3941423EE895984D52416C09F970E64E3941E88C28759A4D5241580E2D72E64E39411E3867749A4D5241085F987CE74E39410CB5A6819A4D524168D5E77AE74E394196218E859A4D524168D5E7FAF94E394196218E059B4D5241085F98FCF94E39410CB5A6019B4D524190C2F568FA4E3941703D0A079B4D5241E8D9ACBAFB4E394112143FF69A4D524138D6C5BDFB4E394120B072F89A4D524138D6C5BD0C4F394120B07278994D5241E8D9ACBA0C4F394112143F76994D524118B7D1F00C4F3941E04F8D73994D524164EE5A520D4F394182954363994D52415CFE435A0D4F3941CE88D266994D52415CFE435A1F4F3941CE88D2E6964D524164EE5A521F4F3941829543E3964D52414CC8073D204F3941E0BE0EBC964D5241B88D06102C4F3941F2B050C7934D5241F8C2647A464F3941705F079E914D5241C4F528CC994F394154C1A8E08C4D52414082E2C7994F3941FC87F4DB8C4D524118B7D1709A4F3941E04F8DD38C4D5241D4DEE09B9A4F39411AC05BCC8C4D5241A0CDAA9F9A4F394164EE5ACE8C4D5241A0CDAA9FD44F394164EE5AEE854D5241D4DEE09BD44F39411AC05BEC854D52412497FF30D54F3941FC1873D3854D5241C4F5283CD54F394188855AD7854D5241D0F753B3E94F3941CCEEC92F824D5241D4096812055039410000001C804D52419C081B0E05503941FEF67518804D524118B7D17005503941E04F8D13804D5241283A929B05503941FA7E6A0C804D5241840D4F9F055039416666660E804D524190C2F5E82150394162A1D6B47C4D524190E4F2AF4F5039412E6EA3D9784D5241D0D556AC4F503941D8F0F4D6784D524118B7D1F04F503941E04F8DD3784D5241907571BB50503941EA73B5B1784D5241042B87C6505039416C787AB5784D5241042B8746675039416C787A95744D52419075713B67503941EA73B591744D52414CC807BD67503941E0BE0E7C744D5241E43FA4CF6750394108CE1975744D5241905CFED36750394152962176744D5241905CFE536F50394152962176724D5241E43FA44F6F50394108CE1975724D5241480C021B70503941923A0129724D5241240681357050394134A2B407724D5241BCB88D467050394162A1D608724D5241DCD781C37C503941C6FEB24B664D5241C46D34C0845039414C158C6E5F4D5241B47BF2B084503941D8A3706D5F4D5241448B6CC7845039410EBE30515F4D524168DE71DA84503941482EFF515F4D524168DE71DA88503941482EFF71594D5241448B6CC7885039410EBE3071594D524190C2F5E888503941703D0A47594D524178BE9FDA8850394100DE0235594D5241F44A59E688503941CCCCCC34594D5241F44A596687503941CCCCCCF4534D524178BE9F5A8750394100DE02F5534D5241480C021B875039414E4013A5534D5241C030999A865039414CC80775534D5241ECE236AA86503941A4703D72534D5241ECE2362A7F503941A4703DD2504D5241C030991A7F5039414CC807D5504D5241CC7F48EF7E50394118B7D1C4504D52412CB29DBF845039410EBE30854C4D524194D409B88450394128A089844C4D5241ECC039C384503941462575764C4D5241A8A44ED084503941840D4F774C4D524150FC18C38E503941DC4603E4424D52417CAEB6029250394150FC18EB404D5241587DAE36A0503941DE0209A23C4D5241708104B5AA50394170CE8882394D524158A835ADAA503941D4BCE380394D52414CA60AE6AA5039410AF9A06B394D5241F0D24DF2AA5039417268916D394D5241648863BDB65039414A9D80C2344D5241B8F3FD74C5503941FAA06753314D52415817B771C5503941022B8752314D5241DC460388C5503941849ECD4E314D524194438B9CC55039410A8A1F47314D5241A4923AA1C5503941EA263148314D524130DD2456CF503941D044D89C2E4D52416C09F9D0E1503941B6F3FDD02B4D524190C2F5A8F950394150AF9415294D5241ACCFD5A6F950394168226C14294D5241DC460388FA503941849ECDEE284D5241DCD781E3FA5039414ED191CC284D5241F41FD2EFFA503941DE718ACE284D5241F41FD2EF02513941DE718AAE254D5241DCD781E3025139414ED191AC254D5241684469FF02513941529621A2254D524188B0E109035139412A3A92A3254D52416029CBF00D513941907EFBAE204D524110A5BD5119513941D8A370D91C4D5241E461A14619513941401361D71C4D5241E4A59B641951394130992ACC1C4D52414060E57019513941764F1ECE1C4D5241DCD7819323513941F241CFD2184D5241840D4FAF2E513941B4C87616174D5241806ABCD43D513941CA32C4DD154D5241CC32C4D13D513941D85F76DB154D524140A4DF0E3E51394168226CD8154D524180FB3A303E513941F6B9DAD2154D5241C01726333E51394142F163D4154D5241C01726335351394142F16354134D524180FB3A3053513941F6B9DA52134D5241DC46030854513941849ECD2E134D5241F4FDD4385451394196438B1C134D52411C7C614254513941FC3A701E134D52411C7C61C261513941FC3A70DE0E4D5241CC3B4E71545139410C71AC0F134D524124B9FCF76A51394152B81E590E4D5241CCA145169151394116FBCB52094D524168226CC8E75139418A416041044D5241BC0512C4E7513941A223B93C044D5241345530CAE751394168226C3C044D5241081B9ECEE751394100DE0241044D5241C09F1A2F415239416CE7FBE1FE4C524100DE025976523941FEB27B8A014D5241B4847C30AB52394162A1D69C054D524194B20C91BB5239414872F907084D5241B88D0600C252394136AB3E97094D52418C1F63BED5523941B29DEFEB0F4D5241549FAB1DE05239410E4FAF7C134D52416891ED2CE0523941B0E1E979134D5241A401BC85E0523941E6D0229B134D5241504013F1E052394172F90FAD134D5241042B87E6E0523941FEF675B0134D5241A49BC440F25239410A46250D174D5241F4B0504BF25239418048BF09174D52417C832F2CF3523941840D4F2F174D5241809543CBF3523941ECC03937174D5241645DDCC6F35239413E0AD73B174D52411C5A641B0F533941CC5D4BDC184D52418004C51F0F5339417A14AED7184D5241BC7493081053394112F241E3184D524100B37B82105339417C6132DD184D5241B8FC8784105339418A4160E1184D52416C2BF6A720533941D6E76A63184D5241A4B437C81F533941ECE2365E184D5241C84B37C91F533941E04F8D5B184D5241444772E91E53394168226C50184D5241A8A44EF01D533941849ECD26184D52411895D4491D533941DCB584E8174D5241F4285C0F1D533941703D0A9F174D52411895D4491D53394104C58F55174D5241A8A44EF01D5339415EDC4617174D5241444772E91E5339417A58A8ED164D524140A4DFFE1F53394188F4DBDF164D5241F4285C0F20533941703D0ADF164D52412406815520533941022B87E2164D5241489D805620533941F697DDDF164D5241489D80D635533941F697DD5F174D5241240681D535533941022B8762174D52411826533536533941A8C64B67174D52414C59863836533941A6BDC163174D5241B8F3FDE454533941703D0A1F194D5241F4285C8F6F533941703D0A1F194D52416C567D1E705339410C242826194D5241CC3B4E2170533941DE718A22194D5241CC3B4E218F533941DE718AA21A4D52416C567D1E8F5339410C2428A61A4D5241A80A46B58F5339417A58A8AD1A4D5241E4C7980B905339412AA913BC1A4D5241AC605412905339417C6132B91A4D5241CCEEC9B3B3533941684469EB1F4D5241B88D0610C5533941C4D32B01214D5241B8AF0357D453394196900F5A214D5241CCA145A6D953394130DD24BA204D52414C6210A8D953394150FC18BB204D5241D0D556BCD953394134A2B4B7204D5241F0164880DA53394122FDF6AD204D52410044FA3DDB5339418AFD65B7204D5241FC3A703EDB5339419AE61DB7204D5241587DAE46DF53394186A7571E214D5241BC96908FE3533941CAC34215204D524114AE4791E3533941EA73B515204D524130FF217DE453394136CD3BEE1F4D5241986E122303543941FE43FAB91C4D52418841602503543941569FABB91C4D5241F4B0502B035439418A4160B91C4D52417C1D384703543941C6DCB5B41C4D5241A8C64B870354394170F085B11C4D5241C8E53F8403543941E6D022AF1C4D524174E09CC114543941BC0512501B4D5241F4B9DA4A1D54394144FAED4B194D52419CC420901D5439411AC05B40194D524110C7BA881D54394128ED0D3E194D524104C58FB131543941865AD330154D5241388941604154394144696F90114D5241287E8C294F5439414E6210A00D4D5241ACADD82F4F543941D8A370A10D4D52416C9A774C4F543941C898BB960D4D5241B09465884F543941A223B98C0D4D52414C3789814F543941304CA68A0D4D524104098AEF5C5439416C567DC20A4D524110C7BAE86B5439410EE02DA8034D524130772D016F54394194658803FF4C5241F4285C0F6F5439412E211F04FF4C524130772D316F543941E4839ED9FE4C5241A8F1D2AD6F543941907EFBAAFE4C5241A80A46A56F54394134EF38A9FE4C5241043411C67854394102BC05E2FB4C5241081B9ECE785439415E4BC8E3FB4C5241D83D79F8785439419CC420D4FB4C524140E8D9CC79543941E61DA7B0FB4C52415427A0C9795439410022FDAEFB4C52412831084C855439411C5A644BFA4C524114F2414F8554394104560E4DFA4C52414CEA047485543941D478E946FA4C5241FCCBEE9986543941CC5D4B38FA4C52414C158CAA8654394152B81E39FA4C524178BE9FAA86543941D0D55638FA4C5241341136EC9854394112A5BD51FA4C5241086822EC9854394194878552FA4C5241FC65F78499543941764F1E5AFA4C5241A4B43788995439419A779C56FA4C524110583954B3543941BE0E9CD3FB4C52416C09F950B35439410A8A1FD7FB4C524120166ACDB35439413CDF4FDDFB4C5241744694C6B45439412063EE06FC4C52412063EE5AB5543941FC3A703EFC4C5241E4361A60B5543941F4DBD73DFC4C524180FB3AB0BF543941FC1873CB014D524194A98241C7543941325530C6054D52411CA7E8F8C9543941643BDF33074D5241F0F44A69D4543941DCB584B0044D52418CFD6567D4543941B88D06B0044D5241789CA273D4543941FE43FAAD044D5241C039231AD5543941585BB16F044D5241982A1845D5543941C442AD39044D524170128350D554394190A0F839044D524170CE8872DA5439418E976ED2F74C5241287E8C49EC543941CAE53FD0F04C524110363C3DEC543941842F4CCEF04C52412085EB71EC543941E2E995BAF04C5241D066D577EC543941CC7F48BBF04C5241A8E8488EFF54394112363CA5E64C5241B0946588FF54394128A089A4E64C5241244A7B93FF543941D24D62A0E64C5241BCB88D96FF543941A223B9A0E64C5241E4A59BD40755394140A4DFF6E14C52414C3789D10755394170CE88F6E14C52410C71ACDB07553941A4DFBEF2E14C5241784F1E1608553941A60A46A9E14C5241784F1E16085539419AE61DFBD74C52413CBD52A624553941DC680017B74C5241DC460398245539415A863816B74C524118D9CEB7245539415CFE43EEB64C5241E4839EAD24553941464772E1B64C5241043411B62455394160984CE1B64C524198FF90CE205539417CF2B074A84C5241784F1EC62055394162A1D674A84C52414CEA04A4205539416CE7FB49A84C5241D0915CAE205539410EBE3049A84C5241AC6054921455394120F46C729E4C524198218E9507553941441CEB828F4C524138AB3E8707553941C6FEB2838F4C5241C0EC9E6C0755394136CD3B628F4C5241D46F5F57075539413845475A8F4C5241C8C3425D0755394150AF94598F4C5241840D4F5FF0543941DC460334834C5241D42B6559F05439413480B734834C52412C651942F0543941925CFE2B834C5241EC9E3C4CF0543941081B9E2A834C5241B09465F8CE543941E4141DCD734C524154E3A5EBC55439412CD49A4E6E4C5241A05E29EBC55439415A86384E6E4C52414C378971C5543941C6DCB5206E4C52414C158C7AC55439411CEBE21E6E4C52414C3789F1B6543941EEEBC0A1694C524158863846AE543941E8FBA931654C5241085F98DCAD543941C03923BA5F4C5241F4DBD711B2543941B4C876265C4C52412CD49A06B25439412E6EA3255C4C524194B20C31B25439415EBA49F05B4C5241287E8C09B254394176BE9FBE5B4C5241DC8AFD15B254394138D6C5BD5B4C5241F4FDD4C8B0543941F6065F8C5A4C524188635DBCB0543941C64B378D5A4C52418CB96BA9B05439411E166A755A4C524144AD693EB05439411C9E5E4D5A4C5241C84B3749B05439413E9B554B5A4C52417858A8759A543941CA32C40D534C52414060E5709E543941840D4F174B4C5241D000DEA298543941B6A6799B4A4C5241941804A68E543941666666C6494C52410C022BA7805439411895D459494C524194B20C81775439411895D459494C5241941804166F54394190A0F80D4B4C5241585BB1FF695439413C4ED1894C4C5241D8F0F4FA69543941CCCCCC884C4C5241B8F3FDE469543941DE2406914C4C5241C017266363543941DA1B7C314E4C5241905CFED362543941D42B65494E4C5241941804D6625439416ADE714A4E4C5241808CB9DB585439411A51DA7B4F4C5241345EBAD95854394116FBCB7A4F4C5241F0C9C3C2585439415405A37E4F4C5241703D0AB7585439417E1D387F4F4C5241D066D5B758543941EC2FBB7F4F4C5241686FF00536543941C2F528DC524C5241DCD7811327543941849ECD5A544C52418CDB68A01954394148BF7DC5564C52412C1895E410543941780B2494594C5241B0E1E9650E54394196438B585B4C524194A982610E543941545227585B4C52410868225C0E543941B2BFEC5E5B4C5241647FD94D0E54394114D044645B4C52413C4ED1510E5439417E6ABC645B4C5241D019516A0A543941388941745D4C5241F44A59660A5439415E4BC8735D4C5241A8A44E600A543941BA490C765D4C524198218E650A543941A067B3765D4C524174711BED06543941B2BFEC325F4C524188F4DBE706543941CAA145325F4C52414872F9CF065439413433333B5F4C524194D409D806543941D6C56D3C5F4C5241D4096812025439410EE02D30614C524140355E0A025439416A4DF32E614C524120B072D801543941C0CAA141614C5241341136DC01543941226C7842614C52411461C363FE5339413E79583C624C524100000060FE533941DCD7813B624C5241782D214FFE5339413C4ED141624C524170A301DCFD53394196B20C55624C5241E4361AE0FD53394140A4DF56624C5241A0D634EFF65339415CB1BF50634C52412C431CEBF6533941B2BFEC4E634C5241C07D1DB8F65339418E757157634C52418816D90EF653394188F4DB5F634C5241C09F1A0FF6533941923A0161634C524194B20CD1ED533941143FC67C634C52416029CBD0ED5339419C559F7B634C5241784F1EB6ED533941B27BF27C634C5241109C33F2EC533941A2D63473634C5241CCEEC9D3EC533941E4F21F6E634C524178E926D1EC53394120D26F6F634C5241C0172633DD533941EAB7AF7B614C52415C8FC235DD533941AED85F7A614C5241E07A14AEDC53394134A2B463614C5241B4A679A7DC53394112363C61614C5241F853E3A5DC53394176E09C61614C5241B0506B0AC1533941D656EC275A4C5241C486A787AF533941423EE845574C524198DD93379A533941C0EC9E80544C52414CEA047482533941EA26318C534C5241B072682162533941948785FA534C524178E92621625339413E575BF9534C5241784F1E0662533941A067B3FA534C5241A4BDC1B761533941849ECDF6534C5241CCA145B6615339412EFF21F9534C524140E8D91C41533941A245B6AF524C524108AC1C8A37533941B003E734534C52414C158C6A1E5339417E6ABCD4544C5241CC5D4B681E5339414C158CD2544C524188A757EA1D533941AA13D0D8544C5241A0D634BF1D5339417A36ABD6544C5241081B9EBE1D5339413E7958D8544C5241A0CDAA8F0E53394196B20C85544C5241388941900E533941D26F5F83544C524150FC18630E5339412EFF2181544C5241F8E461610E53394126C28683544C524160C3D33B02533941C6DCB5F8534C5241B8DA8A3D0253394160764FF6534C524164F7E4D10153394190C2F5F0534C5241984C159C01533941DACEF7E7534C524118D9CE97015339418638D6E9534C524170810485FB5239417E8CB90B534C5241F0F44A89FB523941D022DB09534C524100DE0219FB52394150FC18F7524C5241E00209AAFA523941E00B93CD524C5241345EBAA9FA523941AA8251CD524C524194CB7FD8F7523941DCD78117514C52412C90A058F752394140A4DF52514C5241D019517AE9523941705F0742584C5241E09C1175E95239418A416041584C52416C567D6EE9523941D066D543584C52411C2FDD74E9523941A0ABAD44584C524140575BE1E1523941728A8ED85B4C524140575BE1E152394104780BE45D4C524174B515DBE15239412041F1EB5D4C52411CC05BE0E1523941B88D06EC5D4C524180B74002E1523941DA3D7964614C5241201FF4FCE052394142F16364614C524160BA49DCE0523941FED4788D614C52411C0DE0BDE0523941D044D898614C5241806ABCC4E0523941A679C799614C5241DC68007FDE523941FA7E6AA4624C524194CB7FA8DF52394132C4B162644C5241E4F21F32E4523941D49AE6C9674C5241D83D7928EB5239419A779C32694C5241D0915C7EF252394152DA1BDC694C524140A4DFCEF75239415EBA49346A4C52415C4BC857FA523941F8E4614D684C5241905CFE13FC523941EA95B2F0644C524178E92661FD523941986E1203624C5241D4BCE304035339417C613209614C5241DC2406811353394132E6AEF95E4C5241B4A67997265339417E6ABC685F4C52412C1895442F53394116D9CEFF5D4C52418C28EDAD39533941827346C85D4C5241D088D29E405339417AC729EA5C4C5241BC270F5B42533941645DDC6E5E4C5241884160F544533941A223B940614C524198900F2A4A5339416EA3016C634C5241B459F5E958533941029A088B674C524164EE5AC2635339411C9E5E256A4C524134333313725339413E575BFD6B4C52413C9B558F82533941460378DB6C4C524138B4C8D68D5339412041F1A36C4C52419CC42040985339413C4ED19D6D4C5241D812F2C19E5339413433337F724C5241587DAE969C53394198BB9688754C5241F46C562D92533941F697DDB3774C524150FC18D3805339419C559FA7794C5241085F981C75533941E8D9AC167A4C52410C4625D569533941AEB662C3794C5241B459F5E958533941D881735A784C5241DCD781D3455339418E06F04A764C52415817B7F13753394160984C35754C5241E8B7AF5328533941D2DEE0DB754C524110363C3D1553394168446913764C5241ACFA5CAD00533941787AA574754C524130992AA8005339414ED19174754C52414803789B00533941BAFC8784754C524150B81EA5005339412497FF84754C524108CE1981FE5239411E166A4D784C52410CBE30A9FD523941F6B9DA927D4C5241842F4C260B533941E8482E5F854C52413C92CB5F1D533941E8482EC3884C5241D019515A1D533941DE2406C5884C524124287E6C1D533941E0BE0EC8884C524114AE47711D533941E2E995C6884C524108CE196149533941A4DFBEB6914C52410C24281E5F533941B29DEF4F934C5241FC87F41B5F533941CEAACF51934C524174E09C515F53394148E17A54934C5241EC2FBBF75F5339417EFB3A70934C52415CFE431A605339410A46257D934C52414060E520605339411A51DA7B934C524188A7577A6F53394150FC1863984C52410044FA8D855339413480B7409B4C5241EC0434E19C5339415C2041859D4C524144696FE09C53394112A5BD859D4C524170AC8BEB9C533941842F4C869D4C5241E86A2B369D5339418026C2929D4C5241D4E76A3B9D533941C6DCB5909D4C52413C4ED1B1B75339416E3480CBA14C524150D191ACB753394196218ECDA14C52414C621008B853394162A1D6DCA14C5241482EFF11B853394104E78CE0A14C5241F48E5314B85339416EA301E0A14C524128C286F7C353394130BB270FA54C52418C6CE7BBCC5339411804561AA64C5241FCCBEEB9CC53394164CC5D1BA64C52416007CE49CD5339418AFD6533A64C5241BC529681CD53394114D04448A64C5241A879C789CD53394166D5E746A64C5241A4923AD1D85339410E2DB281AA4C5241B86B09C9D85339412ACB1083AA4C524138894100D953394110E9B797AA4C52417C1D3827D9533941EA95B2C8AA4C524138894100D953394132E6AEF9AA4C5241900F7AF6D8533941621058FDAA4C5241641058F9D8533941E8FBA9FDAA4C52416C348077D25339411C0DE091AE4C52419C33A274D253394196218E91AE4C52417C36AB6ED25339415E4BC893AE4C5241B437F872D25339413A014D94AE4C5241C84B3719C8533941D24D62F8B34C524150AF9495C253394166886351B84C5241A423B9BCC15339415C8FC275BE4C52419C559F6BC6533941A01A2F81C24C52412041F163C653394112A5BD81C24C5241F41FD27FC6533941143FC6A4C24C5241F0A7C67BC6533941D022DBA9C24C52416844697FC6533941F853E3A9C24C52411CC05B10C653394124B9FC5FC54C5241A423B90CC6533941FC87F45FC54C52415CB1BFFCC553394126310874C54C5241ACD85F06C65339414A598674C54C524140A4DF1EC2533941C039233ACA4C5241EC7C3F15C25339419C11A539CA4C524154522710C253394104780B40CA4C52416419E218C253394152499D40CA4C5241BCC11706BC533941F697DD1BD04C5241ACFA5CFDBB533941166A4D1BD04C52414C7B83EFBB53394110C7BA2CD04C5241E0BE0E9CBB5339418EE4F24BD04C52415817B7A1BB533941E4141D4DD04C5241B0BFEC8EB553394108CE1925D24C524138674489B5533941B29DEF23D24C52418048BF6DB5533941A4703D2ED24C524108F9A0C7B4533941DA8AFD49D24C524138F8C2C4B45339417C3F354AD24C5241A8C64B77A95339414850FC70D34C5241D834EFF88753394190317775DC4C5241C876BE6F805339418E06F0C2DE4C524100BC05D27B53394180D93D39E24C5241186A4D4379533941E63FA46BE54C524194B20C01785339413C4ED1E1E84C5241943A016D7D533941164850C8ED4C5241F4DBD7718B533941903177D1F14C52419031776D8B533941B0506BD2F14C5241CC5D4BC88B5339418CDB68F4F14C5241B49DEFE78B53394130992A1CF24C5241D49AE6ED8B533941721B0D1CF24C52412063EE3A8D5339411C0DE08DF64C5241F875E07C8E533941B840826EFA4C524138B4C8C69653394134A2B46FFD4C5241F41FD2BF9C533941CAC34209FF4C524148BF7DBD9C5339416007CE09FF4C524170CE88229D5339412EB29D2FFF4C5241B8627F499D53394176029A60FF4C524148E17A449D5339418E06F066FF4C52416419E2489D5339416EC5FE66FF4C52416007CED99C533941CAA14592014D524140CF66D59C533941ECE23692014D524174E09CD19C53394122DBF996014D5241D83D79D89C533941782D2197014D524180B740A29B533941BEC11706054D524128C286D7A45339414C158C06074D52415CD3BCD3A4533941789CA207074D524174E09CF1A45339412E90A00C074D524198BB9660A55339419E802636074D524198DD9387A5533941E6D02267074D5241C4D32B75A5533941CAA1457E074D524114FBCB7EA55339415AF5B97E074D5241306EA331A4533941FCA9F13A094D524124B9FC27A4533941DCF97E3A094D52418838D625A453394134EF383D094D52416844692FA4533941365EBA3D094D5241244A7B73A2533941FAEDEB4C0B4D52414894F6069F53394178E926790F4D5241E43FA44F9F5339417EFB3A74124D5241C0CAA1C5AB5339417A58A845114D52415CFE435AB8533941AED85F1A0F4D5241CC32C441BC53394192CB7F200E4D52413480B770CB533941DA1B7C29084D5241884160A5D0533941B6627F51064D5241BC96905FE9533941F0F44AE5004D524198FF902EF15339414E401329FF4C5241F4285CDF065439415AF5B966FE4C524100917E5B175439414694F64AFE4C5241D0D556AC25543941AA825135FD4C524128C286973654394122DBF972FC4C524150AF94D53E543941B22E6E13FE4C5241E4D022FB4A543941C8293A4E024D5241B415FB4B5954394106F01620054D524110E9B7EF5E543941506B9A2F074D52413CBD52E65B5439414E6210D0084D524140A4DF9E50543941721B0DA80A4D52413C4ED1914054394192CB7F200E4D524164F7E4D131543941D2915CF2104D52418451493D25543941DEE00B4F144D524144D8F00413543941F4DBD789184D52416C567DEEFF533941E61DA7EC1A4D5241208E7581E8533941621058711C4D524160545267C85339412041F13F1B4D52417CD0B32994533941228E7559174D5241E02D907090533941D066D5CB174D52416C567D6E905339418026C2CA174D52418C06F0569053394132C4B1CE174D52416CC5FE928F533941B20C71D8174D524174F90F198F533941AED85FD2174D5241F441CF168F53394152499DD4174D52415C2041F182533941CAA14512174D5241DCD781F382533941B88D0610174D5241E895B2EC82533941EAB7AF0F174D5241B0506BEA825339411895D411174D524178BE9F6A65533941E27A141E154D5241F875E06C65533941B29DEF1B154D524128ED0D3E65533941083D9B19154D5241CCCCCC3C65533941B4C8761A154D5241806ABCC426533941B437F85A0F4D5241DC8AFDC526533941764F1E5A0F4D5241D42B65B92653394148BF7D590F4D5241AC8BDBB8265339418638D6590F4D5241ACD85F66F45239417CF2B05C0A4D5241D478E966F45239413E79585C0A4D524130BB275FF45239416A2BF65B0A4D5241C05B20E1F352394166D5E7460A4D524194438BDCF35239415EBA49480A4D524120166A1DD8523941C8BAB889044D5241E00B93B9C552394150FC18E7004D5241B09465289452394144D8F044FC4C524100DE021981523941BCE314A5FA4C5241CC10C71A81523941A835CDA3FA4C5241148C4AFA80523941325530A2FA4C524148E17AC4805239417C613299FA4C5241C46D34C0805239412ACB109BFA4C5241081B9EAE6B52394104E78C98F74C524174F90F393A5239419C11A5B9F34C5241A0ABAD381C52394192CB7F30F34C5241F853E3A5F9513941BCE314B9F34C52414CA60A26EC5139414E621084F54C52415405A322EC513941D8817382F54C5241C420B002EC513941CCEEC987F54C5241244A7B03EC5139415A423E88F54C5241DC240661D3513941C876BE3BF84C5241F875E0CCC9513941A4703D96F94C52410C022B57B4513941AE47E1EAFF4C5241580E2D52B4513941AAF1D2E9FF4C5241C030993AB45139415405A3F2FF4C5241083D9BA5B351394126C2860B004D52419CE61DA7B35139413E79580C004D52413CDF4FBDA25139412041F1FF014D5241B003E7DC94513941EC9E3CA0034D524158EC2FDB94513941F2B0509F034D524128C286C794513941BE3099A2034D5241C00E9C0394513941D0D556AC034D5241A0CDAA3F93513941BE3099A2034D524124E4833E93513941D40968A2034D52418CB96BF9835139418638D6C1044D52418CB96BF9945139418638D681034D52417C1D38F794513941DACEF77F034D5241B003E72C9551394160984C7D034D52416CC5FED295513941287E8C61034D5241482EFF4196513941B88D0638034D524190C2F56896513941703D0A07034D5241482EFF419651394128ED0DD6024D52416CC5FED295513941BAFC87AC024D5241B003E72C9551394182E2C790024D524130E42DB1945139411E55A18A024D5241984C150CA1513941B615FB17014D5241F063CC0DA1513941B003E718014D524160325510A151394148E17A18014D5241D088D20EA1513941302AA917014D52417CA52C93B1513941F0A7C62FFF4C52411483C0FAC6513941A8C64BDFF84C52418004C5FFC65139411AC05BE0F84C524160545217C751394172AC8BD7F84C5241E00B9389C7513941FEF675C4F84C5241FC5C6D85C751394176BE9FC2F84C524110E9B77FD1513941A089B059F74C5241F897DD83D151394126C2865BF74C524114FBCBAED15139411AC05B54F74C5241B8D100AED15139418C6CE753F74C52412CD49A56EA513941EC2FBB9FF44C5241448B6C27F8513941482EFFC9F24C52413C2CD42AF8513941506B9ACBF24C5241E8B7AF53F851394182E2C7C4F24C5241B09465F8F851394198BB96BCF24C524108F016F8F85139415EDC46BBF24C5241E4C7981B1C523941FEF67530F24C524144FAED1B1C523941CA32C431F24C5241A05E293B1C523941A2B43730F24C5241A0D6345F1C52394126750232F24C5241E43FA45F1C52394128A08930F24C5241B8DA8ABD3A523941F6285CBBF24C524130FF21BD3A523941865AD3BCF24C524190E4F22F3B523941DE718AC2F24C524100BC05323B5239416619E2C0F24C5241B4EA73156D523941D24D62A8F64C5241401361136D5239414CA60AAAF64C524144696F406D523941F01648ACF64C524114143F766D523941A60A46B5F64C52419487857A6D523941FAA067B3F64C5241CC32C491825239415AF5B9B6F94C5241443EE87995523941C8073D53FB4C5241780B247895523941DCB58454FB4C52411CEBE28695523941EE7C3F55FB4C5241DC4603889552394192CB7F54FB4C52419075716BC7523941F44A59FEFF4C5241D019516AC7523941BE9F1AFFFF4C5241E0BE0E7CC7523941B615FBFFFF4C524198BB96F0C7523941FC187313004D524130E6AEF5C75239418638D611004D5241BCE3149DDA523941CEAACFC1034D524124B9FC97DA523941448B6CC3034D524194A982A1DA52394100DE02C5034D5241BCC117A6DA5239410AF9A0C3034D5241107A362BF6523941A0F83176094D5241F87E6A2C285339415EDC466B0E4D5241F80FE98766533941780B2428144D52414CC807ED83533941E4F21F1A164D5241B415FB5B8F53394172F90FD1164D52417CAEB6D298533941AA6054AE154D52419C779C729B533941D40968E6134D5241F853E3059B5339413480B7700F4D5241780B24089B5339415839B4700F4D5241A401BC059B533941569FAB6D0F4D52416007CE199B533941B20C71540F4D52410CE02D109B5339418EE4F2530F4D52412C90A0889E53394178E926190B4D524180B740929E5339419C11A5190B4D5241F0C9C3929E53394100DE02190B4D524154302A899E533941006F81180B4D524110583944A0533941AED85F0A094D5241148C4A5AA1533941BE0E9C97074D52413CDF4F3D98533941B20C719C054D5241C05B20419853394188855A9B054D5241A44E402398533941D2915C96054D5241C8E53FB49753394162A1D66C054D52418451498D975339411A51DA3B054D5241784F1E9697533941CA54C130054D524114F2418F9753394176029A30054D5241283A92DB985339414E840D83014D52413C9B553F99533941F48E5390FF4C524144696FC093533941B6A67917FE4C5241F0C9C3C2935339412063EE16FE4C5241F0F44A9993533941448B6C07FE4C52415C20419193533941AA13D008FE4C52412C211FE48A533941C286A7E3FA4C52417C832FEC8A5339415CFE43E2FA4C524198BB96B08A533941DACEF7CBFA4C524110A5BD918A5339417C6132A5FA4C524138234A8B8A53394186C954A5FA4C52419C081B3E8953394196900FA2F64C5241708A8E4489533941FCCBEEA1F64C5241CCEEC94389533941B27BF2A0F64C5241F063CC3D8953394104560EA1F64C524104560EFD87533941A01A2F59F24C52411851DA1B7A533941168C4A5AEE4C5241388941207A533941F46C5659EE4C524140CF66C5795339411AE25837EE4C52419CA223B979533941D656EC27EE4C5241B47BF2B079533941B6847C28EE4C524110363C0D7453394198DD930FE94C524140CF661574533941B8AF030FE94C5241A067B3FA73533941228E75EDE84C5241CCEEC90374533941705F07E2E84C5241CCCCCCFC73533941AE69DEE1E84C52416CE7FB49755339417A58A84DE54C52416C09F950755339413C4ED14DE54C52414803785B755339412E90A040E54C52413C4ED15175533941780B2440E54C5241C4F528EC77533941ECC039FFE14C5241141DC9F57753394134A2B4FFE14C5241BC490C0278533941164850F0E14C52416C9A77FC775339411A51DAEFE14C52412C6519C27C533941E63FA45BDE4C5241C486A7C77C533941E2361A5CDE4C524114FBCBCE7C533941782D2153DE4C524140575B217D5339415A423E34DE4C524170AC8B1B7D533941BC270F33DE4C524104A392EA84533941388941D0DB4C52411CC05BF084533941D8A370D1DB4C5241E4F21F0285533941A857CACADB4C5241E43FA4FF845339417C3F35CADB4C5241DC8AFDD5A6533941DE0209AED24C5241D83D79D8A6533941081B9EAED24C5241C01726E3A653394176BE9FAAD24C524180D93D89A7533941AE47E18ED24C52410868228CA75339410C93A98ED24C5241A067B3CAB2533941D42B6569D14C52415CDC4643B8533941105839C0CF4C52413CBD5236BE53394106819503CA4C52411873D712C25339411C5A644BC54C5241B003E77CC2533941FA7E6AB4C24C52418C1F63CEBD533941F46C56A9BE4C5241BCC117D6BD53394182E2C7A8BE4C5241ECE236BABD53394112A5BD85BE4C5241102DB2BDBD5339413E575B81BE4C5241948785BABD53394186C95481BE4C52412C90A098BE53394126530537B84C5241A835CD9BBE533941DEE00B37B84C5241587DAEB6BE5339415C204115B84C5241388941B0BE5339415CB1BF14B84C5241905CFE53C453394120F46CA2B34C5241B0506B5AC45339412063EEA2B34C524128530563C45339419CC42098B34C5241F0C9C372C453394136CD3B92B34C5241B4C8766EC4533941C8BAB891B34C52416C787AD5CE5339415AF5B926AE4C5241F4285CDFD4533941006F81D4AA4C52412C211F84CA533941168C4AF2A64C5241B4A679E7C1533941D066D5EBA54C52418CB96BE9C1533941F241CFEAA54C5241287E8C59C1533941CC10C7D2A54C52412CB29D4FC1533941BC270FCFA54C52418451494DC1533941506B9ACFA54C5241847CD053B55339416C567D9AA24C52417C36AB3E9B533941C8073D6F9E4C5241DC240601845339413A70CE2C9C4C524184C0CA018453394186EB512C9C4C5241587DAEF6835339411461C32B9C4C524184C0CAD183533941083D9B259C4C52417C36ABCE83533941BE9F1A279C4C52418004C53F6D5339416C787A39994C52418C8EE4426D5339414872F937994C5241E8FBA9C16C5339418A1F6322994C5241782D219F6C533941FED47815994C524194CB7F986C533941EEC9C316994C5241585BB15F5D53394146B6F339944C5241ACFA5CDD475339414E4013A5924C5241BC9690DF47533941A2D634A3924C5241443EE8A947533941BAFC87A0924C524190ED7C2F47533941984C158C924C5241E8D9AC2A4753394104C58F8D924C5241088195F31A533941F831E68E894C5241E09C11550853394152DA1B18864C52414C158C5A085339415CFE4316864C5241E895B21C0853394144FAED0B864C5241580E2DB2075339412AA913E4854C52416029CBB007533941105839E4854C5241DC6800CFF9523941A089B0DD7D4C5241D44D62D0F9523941BADA8ADD7D4C52418C6CE7CBF9523941643BDFDB7D4C524144D8F0A4F95239411CEBE2AA7D4C52414850FCA8F95239416007CEA57D4C5241D0B359A5F952394138D6C5A57D4C52416CBC7483FA523941E00B9339784C5241E4581787FA523941083D9B39784C5241B0E1E995FA523941907EFB26784C5241A42C438CFA52394126E48326784C5241CC3B4EB1FC52394138F8C25C754C524174B515FBFD5239410E9C331A704C5241E8B7AF93FD5239411C0DE05D6C4C5241C48F3177F6523941900F7A266B4C5241482575E2EF52394114AE47B96A4C524180B740D2E652394150AF94B96D4C52418CDB6850E052394122DBF9C2704C5241D85F76BFE052394180B740EE724C524134333363E652394170F085F1764C5241DC8AFD75EC52394122FDF6697A4C5241B0B6627FEF523941C8BAB85D7C4C5241DC8AFD75EC5239412497FF887E4C5241CC3B4E41E75239415CB1BF7C804C52410C462525DE5239415CB1BF7C804C524164EE5A12D85239412C431C677F4C5241BC9690FFD152394112363C6D7E4C52414C621018CE5239415EBA49DC7E4C5241B84082F2C1523941666666BA7F4C524174E09C01BB523941E8D9AC167A4C524130992A58BF523941C8293A9E764C524110E9B7DFBB523941780B2410724C524188416045B9523941244A7B036B4C5241EC51B8AEC3523941F4DBD7ED694C52418048BF7DCB523941FC87F4CB6A4C5241081B9E6ED252394110E9B7E76A4C524120FDF695E05239411804563E684C52411CC05BD0DB523941E4F21FAA644C5241B0E1E9D5DB5239417A58A8A9644C5241489D80C6DB523941168C4A96644C524104560EBDDB523941C420B096644C5241643BDF6FDA5239418E06F0A2624C524164105879DA523941DE718AA2624C52411CA7E868DA52394166F7E48D624C52411CC9E58FDA5239411EA7E85C624C5241A8E848AEDA5239414C378951624C5241448B6CA7DA52394176029A50624C5241AC3E570BDD523941780B2438614C524140575BE1DD52394104780BE05D4C524140575BE1DD52394138F8C2B85B4C52413C795808DE523941F0A7C6875B4C5241ECC03923DE5239415817B77D5B4C524140E8D91CDE52394188D2DE7C5B4C52412C8716E9E5523941ECE236CE574C5241A4B437C8F3523941304CA6DE504C5241903177CDF3523941166A4DDF504C5241941804D6F3523941E2361ADC504C5241F4285CCFF3523941A2D634DB504C5241C854C1D8F6523941384547724F4C5241684469DFF65239417AA52C734F4C524194A98231F75239418E5374544F4C5241506B9AD7F75239415839B4384F4C52417C1D38F7F7523941E6D022374F4C5241DC8AFD55F8523941FCA9F10E4E4C5241E4C7987BF75239412653059B4B4C524164EE5A82F752394140A4DF9A4B4C5241482EFF81F752394120F46C9A4B4C5241D4E76A7BF7523941285C8F9A4B4C524144AD692EF652394102098AB3474C5241FCCBEEE9F4523941107A3637444C5241504013D1E3523941BC0512743B4C5241A05E297BDD523941B4C87672394C5241E4581777D6523941C0EC9E7C374C5241E4D0226BCD52394196900F9A364C524100917E9BBB52394152B81E39374C5241C898BB36AD5239415817B705394C5241D8F0F4BAA352394188635D6C3A4C5241F44A59B6A352394142AD696A3A4C5241B0506B7AA352394168226C743A4C52414060E540A3523941CC7F48773A4C5241C0172643A352394180D93D793A4C52414894F6269A52394162C3D31F3B4C5241806ABC249A523941AE69DE1D3B4C5241BC490C129A52394116FBCB1E3B4C5241807346149A52394172F90F213B4C52413CBD521683523941482EFF893C4C524174931814835239417E8CB9873C4C52416C4DF3EE82523941E00B93893C4C5241701283F0825239412041F18B3C4C52416419E22861523941388941F43D4C524194B20CC15C523941D0D556343E4C5241C0172613625239416C9A7720424C5241C017261362523941EC2FBB23464C524150FC187369523941FA7E6A80494C52415839B4386E523941705F07464E4C5241905CFE63705239414C37892D524C52410CB5A6C96D523941C420B052554C5241686FF02568523941D0D55690544C52415C2041F16252394168446927534C5241F80FE98758523941EEEBC0E9534C5241E0718A7E55523941EEEBC0E9534C524188855A93445239418AFD65FF544C524194A982113E5239418AFD65FF544C5241480C025B3252394182514921544C52415C6DC59E3052394198BB969C524C52410C93A922205239415452274C4D4C5241CC32C431195239411E3867584B4C52413C4ED1D11152394152B81E2D494C5241705F078E13523941E4839E45454C5241CC32C43119523941B615FB2F444C52416C348057295239411AC05BF4434C52410C93A92220523941B07268B1414C5241386744191D52394140355E6A3F4C524140A4DFDE215239419A779C763D4C52415CFE434A155239418A1F63BA3B4C5241744694460852394104780BF83A4C5241E00B93D9F05139415EBA4904394C52413C9B557FDF513941D26F5FC3354C52419CEFA726C8513941C264AA58304C5241C00E9C13B551394142F1636C2F4C524140CF66859B513941F831E6722E4C5241F441CF869B513941065F98702E4C52417C36AB0E9B51394176BE9F6A2E4C5241D0B359D59A51394196B20C612E4C5241A8C64B27735139419A081BA62C4C52412497FF109E5139419CA223852E4C52410C93A9129E513941A4DFBE822E4C524190C2F5689E513941703D0A872E4C5241B003E72C9F51394160984C7D2E4C52416CC5FED29F513941287E8C612E4C5241482EFF41A0513941B88D06382E4C524190C2F568A0513941703D0A072E4C5241482EFF41A051394128ED0DD62D4C52416CC5FED29F513941BAFC87AC2D4C5241057EE5429F513941AB9C74942D4C5241C07D1DB8B551394134A2B46F2E4C5241100BB5B6B5513941267502722E4C5241D01951CAB55139410022FD722E4C52417C832FCCB5513941BC7493702E4C5241E8FBA9B1D051394112A5BDBD2F4C52413C92CBAFD0513941545227C02F4C52413C014D14D151394178E926C52F4C5241C8073D3BD1513941C286A7CB2F4C524124E4833ED15139412C6519CA2F4C5241F441CFD6EA5139413AB4C826334C5241946588D3EA513941D0D55628334C52419C081BDEEA5139419A081B2A334C5241E4F21FE2EA51394116485028334C52413480B7001452394124287EE4384C524114143F562E523941F6B9DAB23B4C5241CC7F489F3B52394124B9FCFB3C4C5241D044D8B04D5239418C4AEA083E4C5241006F815460523941F263CCF93C4C52419CEFA75660523941E6AE25FC3C4C52414013617360523941EC51B8FA3C4C52413C4ED171605239411AC05BF83C4C524150B81E3582523941A2B437903B4C52418C06F0169952394100DE02293A4C5241C03099EAA1523941BE0E9C87394C524110363C3DAB523941029A0827384C5241F4DBD741AB5239414850FC28384C5241F4285C5FAB523941E0BE0E24384C52415CB1BF5CAB523941A4DFBE22384C5241787AA51CBA5239418026C24A364C524114F2411FBA523941BC05124C364C5241549FAB3DBA5239410022FD46364C524150DA1BBCBA5239415839B440364C5241F4B9DABABA523941900F7A3E364C524180B74062CD523941AE25E497354C5241DCD78163CD523941764F1E9A354C524100DE02A9CD5239410C93A996354C52418C8EE462CE5239418C6CE79F354C524108819563CE523941D85F769F354C52411C0DE05DD8523941F46C5699364C5241A01A2F5DD8523941141DC999364C524138AB3E67D8523941A8E8489A364C5241F46C560DD9523941705F07B6364C52418451491DD9523941925CFEBB364C524188D2DE20D952394156EC2FBB364C524118B7D180E0523941100BB5CA384C524110363C7DE0523941DCD781CB384C5241081B9E8EE052394102BC05D2384C524150B81E95E0523941EE0DBED0384C52418C06F016E7523941388941E03A4C5241FCF67510E75239414C3789E13A4C524150D1914CE7523941B88D06F83A4C52415C204151E7523941FC1873F73A4C524100917EABF8523941749318DC434C5241F441CFA6F85239413208ACDC434C52413C7958B8F85239415A643BE3434C5241588638D6F8523941F085C908444C524158A835DDF85239412E90A008444C5241F8C2642AFA52394162A1D69C474C5241F8A06723FA5239412497FF9C474C5241E8AE2524FA523941FCCBEE9D474C524158F5B92AFA523941F263CC9D474C524118D9CE77FB523941E09C11854B4C52418838D655FC523941684469034E4C52410412144FFC5239414EF38E034E4C52415C4BC857FC5239414A9D800E4E4C5241C876BE4FFC5239412A1895184E4C524130DD2456FC523941C6DCB5184E4C52413C4ED181FB5239417EFB3AB0504C524198999919FE52394136AB3E43524C52410022FD46035339412A189500534C524144AD69FE0E5339416C567D86534C524140A4DFBE1D533941684469D7534C5241F8A0679336533941D6C56D3C524C52417858A89536533941081B9E3E524C52411CA7E8A8365339417A58A83D524C5241ACCFD5A6365339415EDC463B524C5241C05B20A1405339418E5374B0514C5241343333A340533941AACFD5B2514C52411C0DE00D415339414C3789AD514C5241A42C435C4153394168006FB1514C52418048BF5D4153394150FC18AF514C52413480B720625339417AC729FA524C524104780B748253394162C3D38B524C52413C014D74825339414850FC8C524C52413C9B558F82533941E63FA48B524C52414C840DDF82533941BE0E9C8F524C5241E02D90E0825339413867448D524C5241C4FEB22B9B53394154742487534C52413455302A9B533941DA1B7C89534C52418C1F639E9B5339418295438F534C5241946588C39B53394190317795534C52419CEFA7C69B533941FC87F493534C5241FC187377B15339413C4ED165564C5241F48E5374B1533941CEF75367564C524120D26F9FB153394170CE886E564C524160A1D6A4B153394148E17A6C564C52415496216EC353394108AC1C5A594C524110C7BA68C3533941C2F5285C594C5241508D97BEC35339414A9D806A594C52417C6132C5C35339416C09F96C594C524138B4C8C6C3533941065F986C594C5241CCCCCC4CDF5339413208ACA0604C5241109C3322EE5339411AE2587B624C524174E09C61F55339418E06F062624C5241F4285C9FFB53394180B74082614C5241B4847CC0FE533941D634EFA0604C5241441CEB620354394198DD93BB5E4C5241A0D634CF0654394168006F055D4C52412C8716A90A543941E4141DFD5A4C524178BE9F3A0D54394188855A2B594C524194F6063F0D543941C876BE2B594C52411C3867440D5439416C09F924594C5241B88D06900D543941A0ABAD08594C5241F0F44A890D543941D26F5F07594C5241B4EA73A51654394112A5BD19564C52417C832FAC165439414E840D1B564C5241BC9690CF165439413C4ED10D564C5241AC1C5A1417543941AA605402564C524114FBCB0E1754394142F16300564C5241E02D90F0245439413C4ED181534C524130DD24F624543941A6BDC183534C5241B4A67957255439416E348073534C5241102DB25D2554394156EC2F73534C524110363C5D25543941D478E972534C52413411368C34543941ECE236EE514C5241787AA58C34543941DCF97EEE514C52419C802692345439415A8638EE514C524140575B9134543941EA73B5ED514C52410881953357543941A857CA924E4C5241BCE314CD6054394190C2F56C4D4C52416CC5FE0267543941244A7BDF4B4C5241B047E12A6C54394126E4835E4A4C52412CB29D2F6C5439419465885F4A4C524150AF94456C543941840D4F574A4C5241AC6054726C543941D066D54F4A4C52419031776D6C543941AA60544E4A4C52410CB5A6897554394186A75776484C524124E4838E75543941ACADD877484C524188F4DB077654394198DD9363484C5241A835CDCB765439411895D459484C5241043411C6805439411895D459484C5241C420B00281543941D044D85C484C5241E8B7AF03815439418026C25A484C5241B8FC87548F5439413C4ED1C9484C5241946588538F5439411EC9E5CB484C52410022FDB68F543941D044D8D0484C5241F4FDD4B88F5439416ABC74CF484C52417C36AB3E98543941A60A4685494C52415C6DC51E9E543941081B9E024A4C52413C7958589F54394152B81EB9454C524104098A4F9F543941FE65F7B8454C5241148C4A5A9F5439418E7571AB454C5241F0D24D429F54394114AE478D454C5241D44D62509F543941C6DCB58C454C5241A01A2F8D9A54394176711B353E4C5241C09F1A7F9A543941C442AD353E4C5241043411769A543941F44A592A3E4C5241105839849A543941287E8C293E4C5241686FF0F594543941D200DE02384C5241FC87F43B8C543941029A084B2E4C52411895D47987543941B6847CA4284C5241D4E76A6B87543941EE7C3FA5284C5241A879C759875439412ACB108F284C5241306EA361875439416666668E284C5241000000B07F54394184C0CAE1224C5241D4DEE0AB825439413E0AD77F1E4C5241D022DB298954394174B515DF1A4C5241D0D5560CA0543941B003E730124C5241B88D0600A054394140A4DF2E124C52410CD7A350A05439413480B710124C5241CC32C471A0543941986E12E7114C5241701B0D80A05439417A14AEE7114C5241306EA3E1A2543941567DAE6E0E4C5241401361D3A254394174D7126E0E4C5241E895B2ECA2543941A4703D4E0E4C524188A757EAA2543941A8C64B4B0E4C5241085F98ECA25439413A234A4B0E4C52410022FD86A25439415EBA49D8074C524138F8C284A2543941CC5D4BD8074C52412CD49A76A2543941B84082C6074C524148257582A2543941C4B12EC6074C5241AC8BDB289C543941E8482E63F94B5241943A011D9C543941DCD78163F94B52418451490D9C5439418204C54FF94B524170AC8B1B9C5439410022FD4EF94B52418C976EC297543941501E165EF44B5241AC8BDB3894543941BAB88DF6EE4B5241F853E34592543941029A086FE84B52415405A3129C543941645DDC8ED84B5241D49AE68DA554394190C2F5B8D34B52417C613245AC54394126530523D24B524184C95461B35439414C158C8ED04B524160BA495CB35439412EFF218DD04B52419C802682B3543941849ECD86D04B5241ECC03913B4543941BAFC8750D04B524154302A19B454394112363C51D04B5241283A92ABB75439415405A36ECE4B5241083D9BA5B7543941FCCBEE6DCE4B5241049A08BBB7543941B0E1E965CE4B5241C8293AD2B754394138F8C248CE4B524190E4F2DFB75439412CF69749CE4B5241D8CEF7D3BD543941A857CA22C84B5241588638C6BD543941B459F521C84B52413C7958E8BD543941986E12F7C74B5241FCD478E9BD543941986E12F7C74B524114FBCB4EBE5439411EA7E8B4BA4B5241482EFF11C154394166F7E431B44B524120F46C06C1543941BE529631B44B5241842F4C16C15439412E6EA31DB44B52414CF38EF3C0543941482EFFF1B34B5241B0726801C1543941C4D32BF1B34B5241ECEBC009BF543941F48E53E0B14B524180FB3A60B2543941D022DBF5A04B524100917E6BAE543941501E16C6964B524128A08960AE54394164EE5AC6964B52419C33A244AE5439413A234AA3964B52411CC9E54FAE543941B4C876A2964B5241B025E463A4543941460378338E4B5241E81DA758A4543941CC5D4B348E4B52412C90A048A454394130992A208E4B5241CCEEC9E3A3543941FC3A70FA8D4B5241E8482EEFA35439411AC05BF88D4B524138F8C2649C543941FC87F4638B4B5241D42B65599C543941DE0209668B4B5241E0E00B239C5439417CD0B3518B4B5241A401BC259C54394172F90F518B4B52412C87160986543941BEC1177E854B524188855A836F543941903177157E4B52415839B4786F54394192ED7C177E4B524130992A486F543941182653057E4B524140355E4A6F5439415E29CB047E4B5241E00B932966543941C68F31A37B4B5241D46F5F27665439417E8CB9A37B4B52410C24281E66543941827346A07B4B5241B8F3FD24655439419EEFA7767B4B5241C09F1AFF6354394196D409687B4B5241DC1B7CB15754394196D409687B4B5241D49AE69D57543941708104697B4B5241F063CC9D57543941E2361A687B4B5241F8A0672348543941240681817B4B5241DCD781234854394142AD69827B4B5241EC04341147543941E0BE0E907B4B5241A813D0F4465439415E29CB947B4B5241F0D24DF2465439416ABC74937B4B5241ECEBC039425439418E5374207C4B5241A01A2F3D3B54394134A2B45B7B4B524104A392FA3A5439413E9B551F7A4B5241480378CB3D54394188635DA0784B5241A045B6834254394174469476764B52418CB96B794254394132772D75764B5241703D0AA742543941C07D1D64764B52412C8716D9425439410EBE3025764B5241A8A44EE042543941F0F44A25764B5241B0E1E9454354394106F0165C744B524134C4B13E43543941925CFE5B744B5241E458174743543941D8A37051744B524198BB96204354394104560E21744B524120166A2D43543941C66D3420744B52419CE61D273E543941C07D1D646F4B5241701B0D10405439419EEFA7F2694B5241E895B23C445439412A1895A0664B5241B8F3FDC452543941DE938725604B5241C03923BA525439416EA30124604B5241C0EC9EEC52543941E4141D11604B5241E458172753543941E63FA4C75F4B52410868221C535439411C0DE0B95F4B5241E09C1125535439415817B7B95F4B5241182024C8525439411E143C7A5E4B52418838D6F56B5439414CC807655E4B5241CCAACFF56B543941C6DCB5645E4B52417C1D38776C543941CAA1455E5E4B5241FCD478796C543941F01648605E4B5241E81DA718835439418AB0E1C95C4B52416866661683543941643BDFC75C4B5241C8293A52835439414260E5C45C4B5241F016488083543941EA0434BD5C4B5241BC051284835439412063EEBE5C4B524140E8D98C98543941AA6054DE594B52412C87168998543941E4A59BDC594B5241C05B20019954394104E78CC8594B5241482EFF1199543941A4703DC2594B52415C8FC21599543941061214C3594B524190C2F5C8A5543941A0ABAD30564B52417C6132C5A55439413E0AD72F564B5241247502DAA5543941E0BE0E28564B52412497FFE0A5543941D42B6529564B52419C779C32B054394184C0CAC9524B5241E4C7982BB05439418E5374C8524B52418C4AEA74B0543941DE2406AD524B524130E6AE75B05439414E6210AC524B5241ACD85F76B05439410A6822AC524B5241F8C2646AB6543941623255004F4B5241C442AD69B6543941A62C43004F4B5241E0BE0E6CB6543941825149FD4E4B52415C6DC56EB6543941BADA8AFD4E4B5241FCA9F1E2BB5439414E840D634B4B52416CBC7453C4543941986E129B484B524138234A4BCF54394186EB5128464B524194D40948CF54394168446927464B5241905CFE53CF543941B0726825464B52418838D655CF543941D49AE625464B524120D26F9FDD543941842F4CC6424B52412CF6979DDD543941CEAACFC5424B5241FCCBEEA9DD543941361AC0C3424B524190C2F5F8DD543941C4B12EA6424B5241B88D0600DE54394130BB27A7424B5241083D9B55E654394146B6F3E13E4B524198FF904EE6543941DAACFAE03E4B524124E4836EE6543941DE2406D53E4B52415CD3BC73E6543941B4C876CE3E4B5241DC460378E65439418816D9CE3E4B5241083D9BD5EA5439418E7571BB3B4B524184C954D1EA5439412ACB10BB3B4B5241549FABEDEA543941FC1873973B4B524164EE5AF2EA5439414A7B83973B4B5241D0915CEEEC5439413CDF4F5D324B5241C442ADE9EC543941EE7C3F5D324B5241C09F1AEFEC543941FC3A7056324B5241C07D1DC8EC543941228E7525324B52419CA22359EC54394144FAEDFB314B5241285305B3EB5439417C832FE0314B5241C09F1AEFEA543941FC3A70D6314B5241A05E292BEA5439417C832FE0314B5241280F0B85E954394144FAEDFB314B524104341116E9543941228E7525324B5241006F81F4E8543941789CA24F324B5241F41FD2EFE85439412A3A924F324B524118D9CEF7E6543941CC7F48773B4B5241DC2406C1E2543941CEF7536F3E4B5241F44A59A6DA5439411C0DE019424B5241FC87F49BCC543941BAB88D6A454B524148E17A84C15439411AC05BE4474B5241A4BDC187C1543941A60A46E5474B5241D85F766FC154394186C954E9474B52415839B448C154394162C3D3F7474B5241BC529641C1543941FEB27BF6474B5241ACD85F86B8543941061214D74A4B5241004D848DB8543941D6C56DD84A4B5241A80A4645B85439416ABC74F34A4B52417A4EAB43B854394159FD76F54A4B5241A150AA44B8543941697C36F44A4B52414B0D4445B8543941C44375F34A4B5241DD478747B85439419C8B9CF24A4B524129CA4AFACB543941E4D53DEE3F4B52415CFD7DC5CC5439414A3CA4903B4B5241F596172FCB5439417E6FD763384B5241C263E44FD4543941B1A20AC42E4B5241F596170FDB543941E4D53DA3254B52415CFD7DD1C654394117097174234B524129CA4A0EC2543941170971E52A4B524129CA4A2AB45439417E6FD75B3C4B52418F30B1D8A95439417E6FD7D43F4B52415CFD7D299B5439417E6FD74B444B52415CFD7D418F543941E4D53DDE474B5241C263E4EB865439417E6FD73B4C4B524129CA4AA2785439414A3CA4E94E4B52418F30B1506E54394117097197514B5241F5961727505439417E6FD7AE524B5241F5961763325439414A3CA4E3514B52418F30B1FC18543941E4D53D4D504B52415CFD7D59045439411709719D4E4B5241C263E41FEE533941B1A20A0D4A4B52418F30B1B0BF53394117097134434B524129CA4A46A8533941170971BF3D4B5241F596179F955339414A3CA4903B4B5241F59617C7815339417E6FD761394B5241F596174344533941E4D53D00374B52415CFD7D092E533941170971CF354B5241C263E4DB11533941B1A20ABA334B5241C263E40BFA523941B1A20ABA334B524129CA4AC6E9523941B1A20A35364B52415CFD7DB5D8523941B1A20AA83C4B52418F30B19CCB5239414A3CA482424B52415CFD7D05B15239411709711E4E4B5241C263E4E38E523941B1A20AF1574B5241C263E4276D523941E4D53DB45C4B52415CFD7D0D2E5239414A3CA43E644B52415CFD7D91EC5139417E6FD701694B5241F596173FC9513941E4D53D966B4B5241F5961787A5513941170971DA6F4B52418F30B13482513941170971CC764B52410AD7A330645139418FC2F5387D4B52410AD7A3B0525139418FC2F5B8814B52410AD7A3B0425139418FC2F5B8844B52410AD7A330325139418FC2F5B8884B52410AD7A3B0275139418FC2F5988A4B52410AD7A330195139418FC2F5188B4B52410AD7A3300E5139418FC2F598894B52410AD7A3B0075139418FC2F578864B52410AD7A3B0035139418FC2F538824B52410AD7A3B0FC5039418FC2F5187E4B52410AD7A330F55039418FC2F5B87C4B52410AD7A330E25039418FC2F5187A4B52410AD7A3B0CB5039418FC2F5F8764B52410AD7A3B0B85039418FC2F558764B52410AD7A3309C5039418FC2F538764B52410AD7A3307F5039418FC2F578764B52410AD7A3306C5039418FC2F538764B52410AD7A3303E5039418FC2F578784B52410AD7A3B02A5039418FC2F5D87A4B52410AD7A3B0145039418FC2F5587E4B52410AD7A3B00B5039418FC2F538814B52410AD7A330FC4F39418FC2F598864B52410AD7A330F04F39418FC2F5388D4B52410AD7A330E24F39418FC2F5B8934B52410AD7A330D54F39418FC2F598974B52410AD7A3B0C24F39418FC2F5589A4B52410AD7A330AA4F39418FC2F5989D4B52410AD7A3B0894F39418FC2F5789F4B52410AD7A3305D4F39418FC2F598A14B52410AD7A3B02D4F39418FC2F5D8A44B52410AD7A330124F39418FC2F518A84B52410AD7A330FC4E39418FC2F578AB4B52410AD7A3B0E24E39418FC2F598AD4B52410AD7A330D84E39418FC2F558B14B52410AD7A3B0C44E39418FC2F538B54B52410AD7A330AB4E39418FC2F578BA4B52410AD7A3B08B4E39418FC2F5B8BE4B52410AD7A3B06A4E39418FC2F518C24B52410AD7A3305B4E39418FC2F578C34B52410AD7A3303F4E39418FC2F518C74B52410AD7A3302F4E39418FC2F558C84B52410AD7A3B0234E39418FC2F578C64B52410AD7A3301B4E39418FC2F5D8C14B52410AD7A330184E39418FC2F518BE4B52410AD7A3B0144E39418FC2F5F8B84B52410AD7A330F74D39418FC2F558B94B52410AD7A3B0FC4D39418FC2F5D8BF4B52410AD7A330F94D39418FC2F598C44B52410AD7A3B0E74D39418FC2F5B8C74B52410AD7A3B0D64D39418FC2F5D8CA4B52410AD7A330BC4D39418FC2F558CC4B52410AD7A3B0A74D39418FC2F518CE4B52410AD7A3308B4D39418FC2F538D04B52410AD7A3B0754D39418FC2F5F8D14B52410AD7A330614D39418FC2F578D54B52410AD7A330484D39418FC2F5F8D84B52410AD7A330314D39418FC2F518DC4B52410AD7A3B0444D39418FC2F5B8E34B52410AD7A3306B4D39418FC2F598DE4B5241 + + +010300000001000000280300008C06F0569053394132C4B1CE174D52416C567D6E905339418026C2CA174D5241E02D907090533941D066D5CB174D524190C2F5489B5339417A36AB7E164D52411CEBE2469B5339412CF6977D164D5241FC5C6DD59B533941A679C765164D5241D8C56D449C5339413889413C164D524120B072489C533941A2D63437164D524160C3D34B9C533941B81E8537164D524134EF38559F5339416EA30128144D52413C4ED1519F533941585BB127144D5241F085C9749F533941A6BDC1FB134D52411C7C61729F533941A223B9F8134D52419C33A2749F533941C6DCB5F8134D52414894F6069F53394178E926790F4D5241244A7B73A2533941FAEDEB4C0B4D52416844692FA4533941365EBA3D094D52418838D625A453394134EF383D094D524124B9FC27A4533941DCF97E3A094D5241306EA331A4533941FCA9F13A094D524114FBCB7EA55339415AF5B97E074D5241C4D32B75A5533941CAA1457E074D524198DD9387A5533941E6D02267074D524198BB9660A55339419E802636074D524174E09CF1A45339412E90A00C074D52415CD3BCD3A4533941789CA207074D524128C286D7A45339414C158C06074D524180B740A29B533941BEC11706054D5241D83D79D89C533941782D2197014D524174E09CD19C53394122DBF996014D524140CF66D59C533941ECE23692014D52416007CED99C533941CAA14592014D52416419E2489D5339416EC5FE66FF4C524148E17A449D5339418E06F066FF4C5241B8627F499D53394176029A60FF4C524170CE88229D5339412EB29D2FFF4C524148BF7DBD9C5339416007CE09FF4C5241F41FD2BF9C533941CAC34209FF4C524138B4C8C69653394134A2B46FFD4C5241F875E07C8E533941B840826EFA4C52412063EE3A8D5339411C0DE08DF64C5241D49AE6ED8B533941721B0D1CF24C5241B49DEFE78B53394130992A1CF24C5241CC5D4BC88B5339418CDB68F4F14C52419031776D8B533941B0506BD2F14C5241F4DBD7718B533941903177D1F14C5241943A016D7D533941164850C8ED4C524194B20C01785339413C4ED1E1E84C5241186A4D4379533941E63FA46BE54C524100BC05D27B53394180D93D39E24C5241C876BE6F805339418E06F0C2DE4C5241D834EFF88753394190317775DC4C5241A8C64B77A95339414850FC70D34C524138F8C2C4B45339417C3F354AD24C524108F9A0C7B4533941DA8AFD49D24C52418048BF6DB5533941A4703D2ED24C524138674489B5533941B29DEF23D24C5241B0BFEC8EB553394108CE1925D24C52415817B7A1BB533941E4141D4DD04C5241E0BE0E9CBB5339418EE4F24BD04C52414C7B83EFBB53394110C7BA2CD04C5241ACFA5CFDBB533941166A4D1BD04C5241BCC11706BC533941F697DD1BD04C52416419E218C253394152499D40CA4C524154522710C253394104780B40CA4C5241EC7C3F15C25339419C11A539CA4C524140A4DF1EC2533941C039233ACA4C5241ACD85F06C65339414A598674C54C52415CB1BFFCC553394126310874C54C5241A423B90CC6533941FC87F45FC54C52411CC05B10C653394124B9FC5FC54C52416844697FC6533941F853E3A9C24C5241F0A7C67BC6533941D022DBA9C24C5241F41FD27FC6533941143FC6A4C24C52412041F163C653394112A5BD81C24C52419C559F6BC6533941A01A2F81C24C5241A423B9BCC15339415C8FC275BE4C524150AF9495C253394166886351B84C5241C84B3719C8533941D24D62F8B34C5241B437F872D25339413A014D94AE4C52417C36AB6ED25339415E4BC893AE4C52419C33A274D253394196218E91AE4C52416C348077D25339411C0DE091AE4C5241641058F9D8533941E8FBA9FDAA4C5241900F7AF6D8533941621058FDAA4C524138894100D953394132E6AEF9AA4C52417C1D3827D9533941EA95B2C8AA4C524138894100D953394110E9B797AA4C5241B86B09C9D85339412ACB1083AA4C5241A4923AD1D85339410E2DB281AA4C5241A879C789CD53394166D5E746A64C5241BC529681CD53394114D04448A64C52416007CE49CD5339418AFD6533A64C5241FCCBEEB9CC53394164CC5D1BA64C52418C6CE7BBCC5339411804561AA64C524128C286F7C353394130BB270FA54C5241F48E5314B85339416EA301E0A14C5241482EFF11B853394104E78CE0A14C52414C621008B853394162A1D6DCA14C524150D191ACB753394196218ECDA14C52413C4ED1B1B75339416E3480CBA14C5241D4E76A3B9D533941C6DCB5909D4C5241E86A2B369D5339418026C2929D4C524170AC8BEB9C533941842F4C869D4C524144696FE09C53394112A5BD859D4C5241EC0434E19C5339415C2041859D4C52410044FA8D855339413480B7409B4C524188A7577A6F53394150FC1863984C52414060E520605339411A51DA7B934C52415CFE431A605339410A46257D934C5241EC2FBBF75F5339417EFB3A70934C524174E09C515F53394148E17A54934C5241FC87F41B5F533941CEAACF51934C52410C24281E5F533941B29DEF4F934C524108CE196149533941A4DFBEB6914C524114AE47711D533941E2E995C6884C524124287E6C1D533941E0BE0EC8884C5241D019515A1D533941DE2406C5884C52413C92CB5F1D533941E8482EC3884C5241842F4C260B533941E8482E5F854C52410CBE30A9FD523941F6B9DA927D4C524108CE1981FE5239411E166A4D784C524150B81EA5005339412497FF84754C52414803789B00533941BAFC8784754C524130992AA8005339414ED19174754C5241ACFA5CAD00533941787AA574754C52414C158CFA0153394134113624704C5241D0B359F5015339410A682224704C524100917EFB0153394142F1631C704C5241C854C1F801533941B27BF218704C5241F4B050FB01533941D634EF18704C5241A42C438C01533941E8FBA9156C4C52417CD0B3890153394132E6AE156C4C52416C787A6501533941780B24E86B4C5241900F7AF6005339419A779CBE6B4C5241DC4603A800533941240681B16B4C5241746891AD00533941244A7BAF6B4C524190ED7C6FF8523941BAB88D466A4C5241B459F569F8523941BC7493486A4C5241F0D24D12F8523941FCCBEE396A4C5241C0EC9ECCF7523941226C78366A4C524140A4DFCEF75239415EBA49346A4C5241D0915C7EF252394152DA1BDC694C5241D83D7928EB5239419A779C32694C5241E4F21F32E4523941D49AE6C9674C524194CB7FA8DF52394132C4B162644C5241DC68007FDE523941FA7E6AA4624C5241806ABCC4E0523941A679C799614C52411C0DE0BDE0523941D044D898614C524160BA49DCE0523941FED4788D614C5241201FF4FCE052394142F16364614C524180B74002E1523941DA3D7964614C52411CC05BE0E1523941B88D06EC5D4C524174B515DBE15239412041F1EB5D4C524140575BE1E152394104780BE45D4C524140575BE1E1523941728A8ED85B4C52411C2FDD74E9523941A0ABAD44584C52416C567D6EE9523941D066D543584C5241E09C1175E95239418A416041584C5241D019517AE9523941705F0742584C52412C90A058F752394140A4DF52514C524194CB7FD8F7523941DCD78117514C5241345EBAA9FA523941AA8251CD524C5241E00209AAFA523941E00B93CD524C524100DE0219FB52394150FC18F7524C5241F0F44A89FB523941D022DB09534C524170810485FB5239417E8CB90B534C524118D9CE97015339418638D6E9534C5241984C159C01533941DACEF7E7534C524164F7E4D10153394190C2F5F0534C5241B8DA8A3D0253394160764FF6534C524160C3D33B02533941C6DCB5F8534C5241F8E461610E53394126C28683544C524150FC18630E5339412EFF2181544C5241388941900E533941D26F5F83544C5241A0CDAA8F0E53394196B20C85544C5241081B9EBE1D5339413E7958D8544C5241A0D634BF1D5339417A36ABD6544C524188A757EA1D533941AA13D0D8544C5241CC5D4B681E5339414C158CD2544C52414C158C6A1E5339417E6ABCD4544C524108AC1C8A37533941B003E734534C524140E8D91C41533941A245B6AF524C5241CCA145B6615339412EFF21F9534C5241A4BDC1B761533941849ECDF6534C5241784F1E0662533941A067B3FA534C524178E92621625339413E575BF9534C5241B072682162533941948785FA534C52414CEA047482533941EA26318C534C524198DD93379A533941C0EC9E80544C5241C486A787AF533941423EE845574C5241B0506B0AC1533941D656EC275A4C5241F853E3A5DC53394176E09C61614C5241B4A679A7DC53394112363C61614C5241E07A14AEDC53394134A2B463614C52415C8FC235DD533941AED85F7A614C5241C0172633DD533941EAB7AF7B614C524178E926D1EC53394120D26F6F634C5241CCEEC9D3EC533941E4F21F6E634C5241109C33F2EC533941A2D63473634C5241784F1EB6ED533941B27BF27C634C52416029CBD0ED5339419C559F7B634C524194B20CD1ED533941143FC67C634C5241C09F1A0FF6533941923A0161634C52418816D90EF653394188F4DB5F634C5241C07D1DB8F65339418E757157634C52412C431CEBF6533941B2BFEC4E634C5241A0D634EFF65339415CB1BF50634C5241E4361AE0FD53394140A4DF56624C524170A301DCFD53394196B20C55624C5241782D214FFE5339413C4ED141624C524100000060FE533941DCD7813B624C52411461C363FE5339413E79583C624C5241341136DC01543941226C7842614C524120B072D801543941C0CAA141614C524140355E0A025439416A4DF32E614C5241D4096812025439410EE02D30614C524194D409D806543941D6C56D3C5F4C52414872F9CF065439413433333B5F4C524188F4DBE706543941CAA145325F4C524174711BED06543941B2BFEC325F4C524198218E650A543941A067B3765D4C5241A8A44E600A543941BA490C765D4C5241F44A59660A5439415E4BC8735D4C5241D019516A0A543941388941745D4C52413C4ED1510E5439417E6ABC645B4C5241647FD94D0E54394114D044645B4C52410868225C0E543941B2BFEC5E5B4C524194A982610E543941545227585B4C5241B0E1E9650E54394196438B585B4C52412C1895E410543941780B2494594C52418CDB68A01954394148BF7DC5564C5241DCD7811327543941849ECD5A544C5241686FF00536543941C2F528DC524C5241D066D5B758543941EC2FBB7F4F4C5241703D0AB7585439417E1D387F4F4C5241F0C9C3C2585439415405A37E4F4C5241345EBAD95854394116FBCB7A4F4C5241808CB9DB585439411A51DA7B4F4C5241941804D6625439416ADE714A4E4C5241905CFED362543941D42B65494E4C5241C017266363543941DA1B7C314E4C5241B8F3FDE469543941DE2406914C4C5241D8F0F4FA69543941CCCCCC884C4C5241585BB1FF695439413C4ED1894C4C5241941804166F54394190A0F80D4B4C524194B20C81775439411895D459494C52410C022BA7805439411895D459494C5241941804A68E543941666666C6494C52412C90A0F89E543941081B9E224B4C524130DD2446AE543941D24D62A44E4C524184E2C748AE5439419ECDAAA34E4C5241A8C64BB7AE543941E4F21FB64E4C5241A03C2CB4AE5439410AF9A0B74E4C524150FC1843C55439415C2041A5514C524158863846C5543941361AC0A3514C524174B5156BC5543941B0E1E9A9514C52416007CE89C55439418E7571AB514C5241C07D1D88C5543941C264AAAC514C524140575BB1DE5439412041F1D7534C5241E0E00BB3DE543941EC51B8D6534C5241F0384527DF54394192CB7FDC534C5241BCB88D26DF543941AA6054DE534C5241ACADD8EFF05439416688634D544C5241E02D90F0F05439414EF38E4B544C52411CEBE206F1543941C264AA4C544C52419CEFA706F15439413C4ED14D544C5241905374F4F85439414A598668544C5241D409685201553941DCB58434554C524140CF66250D553941F44A597A584C524110C7BA280D5539419A999979584C5241605452370D553941BC270F7F584C524198DD93770D553941F263CC89584C5241BC490C720D5539410C71AC8B584C5241D812F2311C55394138D6C5415B4C5241B4A679371C5539411EC9E53F5B4C5241F46C569D1C5539411EA7E8505B4C5241CCCCCCDC1C5539414E6210545B4C52414C158CDA1C553941C03923565B4C52411C5A642B2B5539414AEA04505C4C52419C11A52D2B5539416A6FF04D5C4C5241F4B0508B2B553941BE3099525C4C52413C2CD48A2B553941E6AE25545C4C5241941804763C5539418E7571A75C4C5241489D80763C553941F853E3A55C4C52418451499D3C553941F21FD2A75C4C5241A4923A613D55394174D7129E5C4C5241605452073E553941AA6054825C4C5241842F4C763E553941CCCCCC585C4C52418451499D3E553941F21FD2275C4C5241842F4C763E553941AACFD5F65B4C5241605452073E553941CE3B4ECD5B4C5241A4923A613D55394104C58FB15B4C5241BC0512C43C5539418048BFA95B4C5241708A8EC43C55394158CA32A85B4C524188B0E1092C5539418638D6555B4C52413C0AD7431E553941FA5C6D655A4C5241DCF97EFA0F55394152B81EC5574C5241A4BDC1F70355394174D71272544C5241D8C56DF403553941CE88D272544C52418838D6E5035539413E575B6D544C524110E9B73F0355394176E09C51544C524108CE1931035539416619E250544C524174D712320355394138894150544C5241F853E315FA54394130DD2472534C524144D8F014FA5439415C6DC572534C5241148C4A7AF954394174B5156B534C52419487857AF9543941FCCBEE69534C52414082E247F1543941CE19514E534C5241BCC117C6DF543941923A01E1524C524170F085F9C6543941C8BAB8BD504C524130992AC8B05439417EFB3ADC4D4C5241984C155CA1543941D85F76534A4C52418CB96B59A15439417C832F544A4C52414CA60AC6A0543941BC96903B4A4C52419C8026A2A0543941A679C7394A4C52414CEA04A4A0543941D24D62384A4C5241F4FDD4B88F5439416ABC74CF484C52410022FDB68F543941D044D8D0484C5241946588538F5439411EC9E5CB484C5241B8FC87548F5439413C4ED1C9484C5241E8B7AF03815439418026C25A484C5241C420B00281543941D044D85C484C5241043411C6805439411895D459484C5241A835CDCB765439411895D459484C524188F4DB077654394198DD9363484C524124E4838E75543941ACADD877484C52410CB5A6897554394186A75776484C52419031776D6C543941AA60544E4A4C5241AC6054726C543941D066D54F4A4C524150AF94456C543941840D4F574A4C52412CB29D2F6C5439419465885F4A4C5241B047E12A6C54394126E4835E4A4C52416CC5FE0267543941244A7BDF4B4C5241BCE314CD6054394190C2F56C4D4C52410881953357543941A857CA924E4C524140575B9134543941EA73B5ED514C52419C802692345439415A8638EE514C5241787AA58C34543941DCF97EEE514C52413411368C34543941ECE236EE514C524110363C5D25543941D478E972534C5241102DB25D2554394156EC2F73534C5241B4A67957255439416E348073534C524130DD24F624543941A6BDC183534C5241E02D90F0245439413C4ED181534C524114FBCB0E1754394142F16300564C5241AC1C5A1417543941AA605402564C5241BC9690CF165439413C4ED10D564C52417C832FAC165439414E840D1B564C5241B4EA73A51654394112A5BD19564C5241F0F44A890D543941D26F5F07594C5241B88D06900D543941A0ABAD08594C52411C3867440D5439416C09F924594C524194F6063F0D543941C876BE2B594C524178BE9F3A0D54394188855A2B594C52412C8716A90A543941E4141DFD5A4C5241A0D634CF0654394168006F055D4C5241441CEB620354394198DD93BB5E4C5241B4847CC0FE533941D634EFA0604C5241F4285C9FFB53394180B74082614C524174E09C61F55339418E06F062624C5241109C3322EE5339411AE2587B624C5241CCCCCC4CDF5339413208ACA0604C524138B4C8C6C3533941065F986C594C52417C6132C5C35339416C09F96C594C5241508D97BEC35339414A9D806A594C524110C7BA68C3533941C2F5285C594C52415496216EC353394108AC1C5A594C524160A1D6A4B153394148E17A6C564C524120D26F9FB153394170CE886E564C5241F48E5374B1533941CEF75367564C5241FC187377B15339413C4ED165564C52419CEFA7C69B533941FC87F493534C5241946588C39B53394190317795534C52418C1F639E9B5339418295438F534C52413455302A9B533941DA1B7C89534C5241C4FEB22B9B53394154742487534C5241E02D90E0825339413867448D524C52414C840DDF82533941BE0E9C8F524C52413C9B558F82533941E63FA48B524C52413C014D74825339414850FC8C524C524104780B748253394162C3D38B524C52413480B720625339417AC729FA524C52418048BF5D4153394150FC18AF514C5241A42C435C4153394168006FB1514C52411C0DE00D415339414C3789AD514C5241343333A340533941AACFD5B2514C5241C05B20A1405339418E5374B0514C5241ACCFD5A6365339415EDC463B524C52411CA7E8A8365339417A58A83D524C52417858A89536533941081B9E3E524C5241F8A0679336533941D6C56D3C524C524140A4DFBE1D533941684469D7534C524144AD69FE0E5339416C567D86534C52410022FD46035339412A189500534C524198999919FE52394136AB3E43524C52413C4ED181FB5239417EFB3AB0504C524130DD2456FC523941C6DCB5184E4C5241C876BE4FFC5239412A1895184E4C52415C4BC857FC5239414A9D800E4E4C52410412144FFC5239414EF38E034E4C52418838D655FC523941684469034E4C524118D9CE77FB523941E09C11854B4C524158F5B92AFA523941F263CC9D474C5241E8AE2524FA523941FCCBEE9D474C5241F8A06723FA5239412497FF9C474C5241F8C2642AFA52394162A1D69C474C524158A835DDF85239412E90A008444C5241588638D6F8523941F085C908444C52413C7958B8F85239415A643BE3434C5241F441CFA6F85239413208ACDC434C524100917EABF8523941749318DC434C52415C204151E7523941FC1873F73A4C524150D1914CE7523941B88D06F83A4C5241FCF67510E75239414C3789E13A4C52418C06F016E7523941388941E03A4C524150B81E95E0523941EE0DBED0384C5241081B9E8EE052394102BC05D2384C524110363C7DE0523941DCD781CB384C524118B7D180E0523941100BB5CA384C524188D2DE20D952394156EC2FBB364C52418451491DD9523941925CFEBB364C5241F46C560DD9523941705F07B6364C524138AB3E67D8523941A8E8489A364C5241A01A2F5DD8523941141DC999364C52411C0DE05DD8523941F46C5699364C524108819563CE523941D85F769F354C52418C8EE462CE5239418C6CE79F354C524100DE02A9CD5239410C93A996354C5241DCD78163CD523941764F1E9A354C524180B74062CD523941AE25E497354C5241F4B9DABABA523941900F7A3E364C524150DA1BBCBA5239415839B440364C5241549FAB3DBA5239410022FD46364C524114F2411FBA523941BC05124C364C5241787AA51CBA5239418026C24A364C52415CB1BF5CAB523941A4DFBE22384C5241F4285C5FAB523941E0BE0E24384C5241F4DBD741AB5239414850FC28384C524110363C3DAB523941029A0827384C5241C03099EAA1523941BE0E9C87394C52418C06F0169952394100DE02293A4C524150B81E3582523941A2B437903B4C52413C4ED171605239411AC05BF83C4C52414013617360523941EC51B8FA3C4C52419CEFA75660523941E6AE25FC3C4C5241006F815460523941F263CCF93C4C5241D044D8B04D5239418C4AEA083E4C5241CC7F489F3B52394124B9FCFB3C4C524114143F562E523941F6B9DAB23B4C52413480B7001452394124287EE4384C5241E4F21FE2EA51394116485028334C52419C081BDEEA5139419A081B2A334C5241946588D3EA513941D0D55628334C5241F441CFD6EA5139413AB4C826334C524124E4833ED15139412C6519CA2F4C5241C8073D3BD1513941C286A7CB2F4C52413C014D14D151394178E926C52F4C52413C92CBAFD0513941545227C02F4C5241E8FBA9B1D051394112A5BDBD2F4C52417C832FCCB5513941BC7493702E4C5241D01951CAB55139410022FD722E4C5241100BB5B6B5513941267502722E4C5241C07D1DB8B551394134A2B46F2E4C5241D000DE429F5139418E5374942D4C52416CC5FED29F513941BAFC87AC2D4C5241482EFF41A051394128ED0DD62D4C524190C2F568A0513941703D0A072E4C5241482EFF41A0513941B88D06382E4C52416CC5FED29F513941287E8C612E4C5241B003E72C9F51394160984C7D2E4C524190C2F5689E513941703D0A872E4C52410C93A9129E513941A4DFBE822E4C52412497FF109E5139419CA223852E4C5241D0B359D59A51394196B20C612E4C52417C36AB0E9B51394176BE9F6A2E4C5241F441CF869B513941065F98702E4C524140CF66859B513941F831E6722E4C5241C00E9C13B551394142F1636C2F4C52419CEFA726C8513941C264AA58304C52413C9B557FDF513941D26F5FC3354C5241E00B93D9F05139415EBA4904394C5241744694460852394104780BF83A4C52415CFE434A155239418A1F63BA3B4C524140A4DFDE215239419A779C763D4C5241386744191D52394140355E6A3F4C52410C93A92220523941B07268B1414C52416C348057295239411AC05BF4434C5241C464AAC02F5239417CF2B0DC434C524130992AA833523941D42B6589434C524174F90F993A523941946588B7404C52416C787AD543523941BA6B097D3E4C524170AC8B3B4D5239416891ED083F4C5241C8BAB83D4D523941508D97063F4C52414C7B83AF4D5239413889410C3F4C52418816D91E4E523941EC51B8063F4C52412497FF204E523941E09C11093F4C52416419E22861523941388941F43D4C5241701283F0825239412041F18B3C4C52416C4DF3EE82523941E00B93893C4C524174931814835239417E8CB9873C4C52413CBD521683523941482EFF893C4C5241807346149A52394172F90F213B4C5241BC490C129A52394116FBCB1E3B4C5241806ABC249A523941AE69DE1D3B4C52414894F6269A52394162C3D31F3B4C5241C0172643A352394180D93D793A4C52414060E540A3523941CC7F48773A4C5241B0506B7AA352394168226C743A4C5241F44A59B6A352394142AD696A3A4C5241D8F0F4BAA352394188635D6C3A4C5241C898BB36AD5239415817B705394C524100917E9BBB52394152B81E39374C5241E4D0226BCD52394196900F9A364C5241E4581777D6523941C0EC9E7C374C5241A05E297BDD523941B4C87672394C5241504013D1E3523941BC0512743B4C5241FCCBEEE9F4523941107A3637444C524144AD692EF652394102098AB3474C5241D4E76A7BF7523941285C8F9A4B4C5241482EFF81F752394120F46C9A4B4C524164EE5A82F752394140A4DF9A4B4C5241E4C7987BF75239412653059B4B4C5241DC8AFD55F8523941FCA9F10E4E4C52417C1D38F7F7523941E6D022374F4C5241506B9AD7F75239415839B4384F4C524194A98231F75239418E5374544F4C5241684469DFF65239417AA52C734F4C5241C854C1D8F6523941384547724F4C5241F4285CCFF3523941A2D634DB504C5241941804D6F3523941E2361ADC504C5241903177CDF3523941166A4DDF504C5241A4B437C8F3523941304CA6DE504C52412C8716E9E5523941ECE236CE574C524140E8D91CDE52394188D2DE7C5B4C5241ECC03923DE5239415817B77D5B4C52413C795808DE523941F0A7C6875B4C524140575BE1DD52394138F8C2B85B4C524140575BE1DD52394104780BE05D4C5241AC3E570BDD523941780B2438614C5241448B6CA7DA52394176029A50624C5241A8E848AEDA5239414C378951624C52411CC9E58FDA5239411EA7E85C624C52411CA7E868DA52394166F7E48D624C524164105879DA523941DE718AA2624C5241643BDF6FDA5239418E06F0A2624C524104560EBDDB523941C420B096644C5241489D80C6DB523941168C4A96644C5241B0E1E9D5DB5239417A58A8A9644C52411CC05BD0DB523941E4F21FAA644C524120FDF695E05239411804563E684C524170AC8B9BE0523941AE69DE3D684C52410C93A9A2E05239411873D746684C5241E8FBA911E152394188635D70684C524144AD693EE15239413E0AD777684C5241287E8C39E152394162105879684C5241EC73B555EA52394186C954516A4C524104A3925AEA52394162C3D34F6A4C52412041F1D3EA523941E2361A646A4C52410CB5A619EB523941BC9690676A4C5241D46F5F17EB5239418048BF696A4C5241C48F3177F6523941900F7A266B4C5241E8B7AF93FD5239411C0DE05D6C4C524174B515FBFD5239410E9C331A704C5241CC3B4EB1FC52394138F8C25C754C5241A42C438CFA52394126E48326784C5241B0E1E995FA523941907EFB26784C5241E4581787FA523941083D9B39784C52416CBC7483FA523941E00B9339784C5241D0B359A5F952394138D6C5A57D4C52414850FCA8F95239416007CEA57D4C524144D8F0A4F95239411CEBE2AA7D4C52418C6CE7CBF9523941643BDFDB7D4C5241D44D62D0F9523941BADA8ADD7D4C5241DC6800CFF9523941A089B0DD7D4C52416029CBB007533941105839E4854C5241580E2DB2075339412AA913E4854C5241E895B21C0853394144FAED0B864C52414C158C5A085339415CFE4316864C5241E09C11550853394152DA1B18864C5241088195F31A533941F831E68E894C5241E8D9AC2A4753394104C58F8D924C524190ED7C2F47533941984C158C924C5241443EE8A947533941BAFC87A0924C5241BC9690DF47533941A2D634A3924C5241ACFA5CDD475339414E4013A5924C5241585BB15F5D53394146B6F339944C524194CB7F986C533941EEC9C316994C5241782D219F6C533941FED47815994C5241E8FBA9C16C5339418A1F6322994C52418C8EE4426D5339414872F937994C52418004C53F6D5339416C787A39994C52417C36ABCE83533941BE9F1A279C4C524184C0CAD183533941083D9B259C4C5241587DAEF6835339411461C32B9C4C524184C0CA018453394186EB512C9C4C5241DC240601845339413A70CE2C9C4C52417C36AB3E9B533941C8073D6F9E4C5241847CD053B55339416C567D9AA24C52418451494DC1533941506B9ACFA54C52412CB29D4FC1533941BC270FCFA54C5241287E8C59C1533941CC10C7D2A54C52418CB96BE9C1533941F241CFEAA54C5241B4A679E7C1533941D066D5EBA54C52412C211F84CA533941168C4AF2A64C5241F4285CDFD4533941006F81D4AA4C52416C787AD5CE5339415AF5B926AE4C5241B4C8766EC4533941C8BAB891B34C5241F0C9C372C453394136CD3B92B34C524128530563C45339419CC42098B34C5241B0506B5AC45339412063EEA2B34C5241905CFE53C453394120F46CA2B34C5241388941B0BE5339415CB1BF14B84C5241587DAEB6BE5339415C204115B84C5241A835CD9BBE533941DEE00B37B84C52412C90A098BE53394126530537B84C5241948785BABD53394186C95481BE4C5241102DB2BDBD5339413E575B81BE4C5241ECE236BABD53394112A5BD85BE4C5241BCC117D6BD53394182E2C7A8BE4C52418C1F63CEBD533941F46C56A9BE4C5241B003E77CC2533941FA7E6AB4C24C52411873D712C25339411C5A644BC54C52413CBD5236BE53394106819503CA4C52415CDC4643B8533941105839C0CF4C5241A067B3CAB2533941D42B6569D14C52410868228CA75339410C93A98ED24C524180D93D89A7533941AE47E18ED24C5241C01726E3A653394176BE9FAAD24C5241D83D79D8A6533941081B9EAED24C5241DC8AFDD5A6533941DE0209AED24C5241E43FA4FF845339417C3F35CADB4C5241E4F21F0285533941A857CACADB4C52411CC05BF084533941D8A370D1DB4C524104A392EA84533941388941D0DB4C524170AC8B1B7D533941BC270F33DE4C524140575B217D5339415A423E34DE4C524114FBCBCE7C533941782D2153DE4C5241C486A7C77C533941E2361A5CDE4C52412C6519C27C533941E63FA45BDE4C52416C9A77FC775339411A51DAEFE14C5241BC490C0278533941164850F0E14C5241141DC9F57753394134A2B4FFE14C5241C4F528EC77533941ECC039FFE14C52413C4ED15175533941780B2440E54C52414803785B755339412E90A040E54C52416C09F950755339413C4ED14DE54C52416CE7FB49755339417A58A84DE54C5241CCCCCCFC73533941AE69DEE1E84C5241CCEEC90374533941705F07E2E84C5241A067B3FA73533941228E75EDE84C524140CF661574533941B8AF030FE94C524110363C0D7453394198DD930FE94C5241B47BF2B079533941B6847C28EE4C52419CA223B979533941D656EC27EE4C524140CF66C5795339411AE25837EE4C5241388941207A533941F46C5659EE4C52411851DA1B7A533941168C4A5AEE4C524104560EFD87533941A01A2F59F24C5241F063CC3D8953394104560EA1F64C5241CCEEC94389533941B27BF2A0F64C5241708A8E4489533941FCCBEEA1F64C52419C081B3E8953394196900FA2F64C524138234A8B8A53394186C954A5FA4C524110A5BD918A5339417C6132A5FA4C524198BB96B08A533941DACEF7CBFA4C52417C832FEC8A5339415CFE43E2FA4C52412C211FE48A533941C286A7E3FA4C52415C20419193533941AA13D008FE4C5241F0F44A9993533941448B6C07FE4C5241F0C9C3C2935339412063EE16FE4C524144696FC093533941B6A67917FE4C52413C9B553F99533941F48E5390FF4C5241283A92DB985339414E840D83014D524114F2418F9753394176029A30054D5241784F1E9697533941CA54C130054D52418451498D975339411A51DA3B054D5241C8E53FB49753394162A1D66C054D5241A44E402398533941D2915C96054D5241C05B20419853394188855A9B054D52413CDF4F3D98533941B20C719C054D5241148C4A5AA1533941BE0E9C97074D524110583944A0533941AED85F0A094D524154302A899E533941006F81180B4D5241F0C9C3929E53394100DE02190B4D524180B740929E5339419C11A5190B4D52412C90A0889E53394178E926190B4D52410CE02D109B5339418EE4F2530F4D52416007CE199B533941B20C71540F4D5241A401BC059B533941569FAB6D0F4D5241780B24089B5339415839B4700F4D5241F853E3059B5339413480B7700F4D52419C779C729B533941D40968E6134D52417CAEB6D298533941AA6054AE154D5241B415FB5B8F53394172F90FD1164D52414CC807ED83533941E4F21F1A164D5241F80FE98766533941780B2428144D5241F87E6A2C285339415EDC466B0E4D5241107A362BF6523941A0F83176094D5241BCC117A6DA5239410AF9A0C3034D524194A982A1DA52394100DE02C5034D524124B9FC97DA523941448B6CC3034D5241BCE3149DDA523941CEAACFC1034D524130E6AEF5C75239418638D611004D524198BB96F0C7523941FC187313004D5241E0BE0E7CC7523941B615FBFFFF4C5241D019516AC7523941BE9F1AFFFF4C52419075716BC7523941F44A59FEFF4C5241DC4603889552394192CB7F54FB4C52411CEBE28695523941EE7C3F55FB4C5241780B247895523941DCB58454FB4C5241443EE87995523941C8073D53FB4C5241CC32C491825239415AF5B9B6F94C52419487857A6D523941FAA067B3F64C524114143F766D523941A60A46B5F64C524144696F406D523941F01648ACF64C5241401361136D5239414CA60AAAF64C5241B4EA73156D523941D24D62A8F64C524100BC05323B5239416619E2C0F24C524190E4F22F3B523941DE718AC2F24C524130FF21BD3A523941865AD3BCF24C5241B8DA8ABD3A523941F6285CBBF24C5241E43FA45F1C52394128A08930F24C5241A0D6345F1C52394126750232F24C5241A05E293B1C523941A2B43730F24C524144FAED1B1C523941CA32C431F24C5241E4C7981B1C523941FEF67530F24C524108F016F8F85139415EDC46BBF24C5241B09465F8F851394198BB96BCF24C5241E8B7AF53F851394182E2C7C4F24C52413C2CD42AF8513941506B9ACBF24C5241448B6C27F8513941482EFFC9F24C52412CD49A56EA513941EC2FBB9FF44C5241B8D100AED15139418C6CE753F74C524114FBCBAED15139411AC05B54F74C5241F897DD83D151394126C2865BF74C524110E9B77FD1513941A089B059F74C5241FC5C6D85C751394176BE9FC2F84C5241E00B9389C7513941FEF675C4F84C524160545217C751394172AC8BD7F84C52418004C5FFC65139411AC05BE0F84C52411483C0FAC6513941A8C64BDFF84C52417CA52C93B1513941F0A7C62FFF4C5241D088D20EA1513941302AA917014D524160325510A151394148E17A18014D5241F063CC0DA1513941B003E718014D5241984C150CA1513941B615FB17014D524130772DB194513941E461A18A024D5241B003E72C9551394182E2C790024D52416CC5FED295513941BAFC87AC024D5241482EFF419651394128ED0DD6024D524190C2F56896513941703D0A07034D5241482EFF4196513941B88D0638034D52416CC5FED295513941287E8C61034D5241B003E72C9551394160984C7D034D52417C1D38F794513941DACEF77F034D52418CB96BF9945139418638D681034D524124E4833E93513941D40968A2034D5241A0CDAA3F93513941BE3099A2034D5241C00E9C0394513941D0D556AC034D524128C286C794513941BE3099A2034D524158EC2FDB94513941F2B0509F034D5241B003E7DC94513941EC9E3CA0034D52413CDF4FBDA25139412041F1FF014D52419CE61DA7B35139413E79580C004D5241083D9BA5B351394126C2860B004D5241C030993AB45139415405A3F2FF4C5241580E2D52B4513941AAF1D2E9FF4C52410C022B57B4513941AE47E1EAFF4C5241F875E0CCC9513941A4703D96F94C5241DC240661D3513941C876BE3BF84C5241244A7B03EC5139415A423E88F54C5241C420B002EC513941CCEEC987F54C52415405A322EC513941D8817382F54C52414CA60A26EC5139414E621084F54C5241F853E3A5F9513941BCE314B9F34C5241A0ABAD381C52394192CB7F30F34C524174F90F393A5239419C11A5B9F34C5241081B9EAE6B52394104E78C98F74C5241C46D34C0805239412ACB109BFA4C524148E17AC4805239417C613299FA4C5241148C4AFA80523941325530A2FA4C5241CC10C71A81523941A835CDA3FA4C524100DE021981523941BCE314A5FA4C5241B09465289452394144D8F044FC4C5241E00B93B9C552394150FC18E7004D524120166A1DD8523941C8BAB889044D524194438BDCF35239415EBA49480A4D5241C05B20E1F352394166D5E7460A4D524130BB275FF45239416A2BF65B0A4D5241D478E966F45239413E79585C0A4D5241ACD85F66F45239417CF2B05C0A4D5241AC8BDBB8265339418638D6590F4D5241D42B65B92653394148BF7D590F4D5241DC8AFDC526533941764F1E5A0F4D5241806ABCC426533941B437F85A0F4D5241CCCCCC3C65533941B4C8761A154D524128ED0D3E65533941083D9B19154D5241F875E06C65533941B29DEF1B154D524178BE9F6A65533941E27A141E154D5241B0506BEA825339411895D411174D5241E895B2EC82533941EAB7AF0F174D5241DCD781F382533941B88D0610174D52415C2041F182533941CAA14512174D5241F441CF168F53394152499DD4174D524174F90F198F533941AED85FD2174D52416CC5FE928F533941B20C71D8174D52418C06F0569053394132C4B1CE174D5241 + + + + 010300000007000000020300000AD7A330314D39418FC2F518DC4B52410AD7A3B0444D39418FC2F5B8E34B52410AD7A3306B4D39418FC2F598DE4B52410AD7A3B0794D39418FC2F5F8DC4B52410AD7A3B08E4D39418FC2F5B8DB4B52410AD7A3B0A34D39418FC2F5F8D94B52410AD7A330B24D39418FC2F558DA4B52410AD7A3B0C34D39418FC2F518DB4B52410AD7A3B0D24D39418FC2F578DA4B52410AD7A3B0E54D39418FC2F558D84B52410AD7A3B0F34D39418FC2F5F8D64B52410AD7A330044E39418FC2F5F8D34B52410AD7A330134E39418FC2F5F8D14B52410AD7A330334E39418FC2F598D04B52410AD7A3304D4E39418FC2F578CD4B52410AD7A3B05D4E39418FC2F558CA4B52410AD7A3306E4E39418FC2F518C84B52410AD7A330844E39418FC2F578C54B52410AD7A3309C4E39418FC2F5B8C24B52410AD7A330C74E39418FC2F5D8BB4B52410AD7A3B0DE4E39418FC2F578B74B52410AD7A3B0F04E39418FC2F598B34B52410AD7A330FF4E39418FC2F518B14B52410AD7A3B0154F39418FC2F558AD4B52410AD7A3B01F4F39418FC2F5F8AB4B52410AD7A3B0374F39418FC2F5B8A84B52410AD7A3B04F4F39418FC2F5B8A64B52410AD7A3B0774F39418FC2F578A44B52410AD7A3B0AA4F39418FC2F5F8A34B52410AD7A3B0C54F39418FC2F558A24B52410AD7A330DD4F39418FC2F5389C4B52410AD7A330055039418FC2F5188F4B52410AD7A3B00D5039418FC2F5F88B4B52410AD7A3B02B5039418FC2F578844B52410AD7A3B03A5039418FC2F558824B5241FDACC76E5E503941F86F7DA27F4B5241B43441705E5039411B0B79A27F4B524140A4DF6E5E503941DE718AA27F4B524140A4DF6E48503941DE718AE2814B5241D088D26E5E503941948785A27F4B52410CD7A3B03A50394190C2F558824B52410CD7A3B02B50394190C2F578844B52410CD7A3B00D50394190C2F5F88B4B52410CD7A3300550394190C2F5188F4B52410CD7A330DD4F394190C2F5389C4B52410CD7A3B0C54F394190C2F558A24B52410CD7A3B0AA4F394190C2F5F8A34B52410CD7A3B0774F394190C2F578A44B52410CD7A3B04F4F394190C2F5B8A64B52410CD7A3B0374F394190C2F5B8A84B52410CD7A3B01F4F394190C2F5F8AB4B52410CD7A3B0154F394190C2F558AD4B52410CD7A330FF4E394190C2F518B14B52410CD7A3B0F04E394190C2F598B34B52410CD7A3B0DE4E394190C2F578B74B52410CD7A330C74E394190C2F5D8BB4B52410CD7A3309C4E394190C2F5B8C24B52410CD7A330844E394190C2F578C54B52410CD7A3306E4E394190C2F518C84B52410CD7A3B05D4E394190C2F558CA4B52410CD7A3304D4E394190C2F578CD4B52410CD7A330334E394190C2F598D04B52410CD7A330134E394190C2F5F8D14B52410CD7A330044E394190C2F5F8D34B52410CD7A3B0F34D394190C2F5F8D64B52410CD7A3B0E54D394190C2F558D84B52410CD7A3B0D24D394190C2F578DA4B52410CD7A3B0C34D394190C2F518DB4B52410CD7A330B24D394190C2F558DA4B52410CD7A3B0A34D394190C2F5F8D94B5241E4F21FE2354E39419C559F87AD4C5241ACD85F063B4E39418EE4F25BAA4C52419CA22399334E394164AA60F0AE4C5241E461A126234E3941C039238AB64C5241ACFA5C2D234E3941DEE00B8BB64C5241D456EC0F234E394128ED0D96B64C524190C2F5E8224E3941703D0AC7B64C5241D456EC0F234E3941B88D06F8B64C5241B0BFEC7E234E3941287E8C21B74C524170810425244E394160984C3DB74C524190C2F5E8244E3941703D0A47B74C5241B003E7AC254E394160984C3DB74C52416CC5FE52264E3941287E8C21B74C5241708A8EA4264E3941029A0803B74C524138234AAB264E39412041F103B74C524138234A2B374E39412041F163AF4C52416C09F9904A4E3941F0F44AF1994D524144696FF0774E394192CB7F509A4D524198FF906E774E3941545227689C4D5241C442ADF96F4E39416C09F998A64D5241B003E70C704E3941D022DB99A64D524190C2F5E86F4E3941703D0AC7A64D5241D478E936704E3941923A0129A74D5241D4BCE314714E3941E0BE0E7CA74D524108CE1961724E3941E04F8DB3A74D524190C2F5E8734E3941703D0AC7A74D524118B7D170754E3941E04F8DB3A74D52414CC807BD764E3941E0BE0E7CA74D5241480C029B774E3941923A0129A74D5241708104C5774E3941105839F4A64D52415C423ED8774E394176711BF5A64D52415C423E587F4E394176711BB59C4D5241708104457F4E3941105839B49C4D5241143FC65C7F4E394140355E969C4D5241E45817677F4E3941022B87969C4D5241E4581767804E3941022B8776984D5241143FC65C804E394140355E76984D524128ED0D5E804E394110C7BA74984D5241B4A67967804E3941AC8BDB74984D524144D8F054814E3941DE718A2A944D524194A982D18B4E39412C431C0F914D5241B003E76C934E39413CDF4F25924D5241B4EA7375934E3941E00B9321924D5241884160C5934E3941441CEB2E924D52418C8EE4C2934E3941F0164830924D52418C8EE4C2A84E3941F0164890944D5241884160C5A84E3941441CEB8E944D524108CE19E1A84E3941E04F8D93944D5241F0D24D02A94E3941EA043495944D52410CE02D00A94E394176BE9F96944D524104E78C78D34E3941423EE895984D52416C09F970E64E3941E88C28759A4D5241580E2D72E64E39411E3867749A4D5241085F987CE74E39410CB5A6819A4D524168D5E77AE74E394196218E859A4D524168D5E7FAF94E394196218E059B4D5241085F98FCF94E39410CB5A6019B4D524190C2F568FA4E3941703D0A079B4D5241E8D9ACBAFB4E394112143FF69A4D524138D6C5BDFB4E394120B072F89A4D524138D6C5BD0C4F394120B07278994D5241E8D9ACBA0C4F394112143F76994D524118B7D1F00C4F3941E04F8D73994D524164EE5A520D4F394182954363994D52415CFE435A0D4F3941CE88D266994D52415CFE435A1F4F3941CE88D2E6964D524164EE5A521F4F3941829543E3964D52414CC8073D204F3941E0BE0EBC964D5241B88D06102C4F3941F2B050C7934D5241F8C2647A464F3941705F079E914D5241C4F528CC994F394154C1A8E08C4D52414082E2C7994F3941FC87F4DB8C4D524118B7D1709A4F3941E04F8DD38C4D5241D4DEE09B9A4F39411AC05BCC8C4D5241A0CDAA9F9A4F394164EE5ACE8C4D5241A0CDAA9FD44F394164EE5AEE854D5241D4DEE09BD44F39411AC05BEC854D52412497FF30D54F3941FC1873D3854D5241C4F5283CD54F394188855AD7854D5241D0F753B3E94F3941CCEEC92F824D5241D4096812055039410000001C804D52419C081B0E05503941FEF67518804D524118B7D17005503941E04F8D13804D5241283A929B05503941FA7E6A0C804D5241840D4F9F055039416666660E804D524190C2F5E82150394162A1D6B47C4D524190E4F2AF4F5039412E6EA3D9784D5241D0D556AC4F503941D8F0F4D6784D524118B7D1F04F503941E04F8DD3784D5241907571BB50503941EA73B5B1784D5241042B87C6505039416C787AB5784D5241042B8746675039416C787A95744D52419075713B67503941EA73B591744D52414CC807BD67503941E0BE0E7C744D5241E43FA4CF6750394108CE1975744D5241905CFED36750394152962176744D5241905CFE536F50394152962176724D5241E43FA44F6F50394108CE1975724D5241480C021B70503941923A0129724D5241240681357050394134A2B407724D5241BCB88D467050394162A1D608724D5241DCD781C37C503941C6FEB24B664D5241C46D34C0845039414C158C6E5F4D5241B47BF2B084503941D8A3706D5F4D5241448B6CC7845039410EBE30515F4D524168DE71DA84503941482EFF515F4D524168DE71DA88503941482EFF71594D5241448B6CC7885039410EBE3071594D524190C2F5E888503941703D0A47594D524178BE9FDA8850394100DE0235594D5241F44A59E688503941CCCCCC34594D5241F44A596687503941CCCCCCF4534D524178BE9F5A8750394100DE02F5534D5241480C021B875039414E4013A5534D5241C030999A865039414CC80775534D5241ECE236AA86503941A4703D72534D5241ECE2362A7F503941A4703DD2504D5241C030991A7F5039414CC807D5504D5241CC7F48EF7E50394118B7D1C4504D52412CB29DBF845039410EBE30854C4D524194D409B88450394128A089844C4D5241ECC039C384503941462575764C4D5241A8A44ED084503941840D4F774C4D524150FC18C38E503941DC4603E4424D52417CAEB6029250394150FC18EB404D5241587DAE36A0503941DE0209A23C4D5241708104B5AA50394170CE8882394D524158A835ADAA503941D4BCE380394D52414CA60AE6AA5039410AF9A06B394D5241F0D24DF2AA5039417268916D394D5241648863BDB65039414A9D80C2344D5241B8F3FD74C5503941FAA06753314D52415817B771C5503941022B8752314D5241DC460388C5503941849ECD4E314D524194438B9CC55039410A8A1F47314D5241A4923AA1C5503941EA263148314D524130DD2456CF503941D044D89C2E4D52416C09F9D0E1503941B6F3FDD02B4D524190C2F5A8F950394150AF9415294D5241ACCFD5A6F950394168226C14294D5241DC460388FA503941849ECDEE284D5241DCD781E3FA5039414ED191CC284D5241F41FD2EFFA503941DE718ACE284D5241F41FD2EF02513941DE718AAE254D5241DCD781E3025139414ED191AC254D5241684469FF02513941529621A2254D524188B0E109035139412A3A92A3254D52416029CBF00D513941907EFBAE204D524110A5BD5119513941D8A370D91C4D5241E461A14619513941401361D71C4D5241E4A59B641951394130992ACC1C4D52414060E57019513941764F1ECE1C4D5241DCD7819323513941F241CFD2184D5241840D4FAF2E513941B4C87616174D5241806ABCD43D513941CA32C4DD154D5241CC32C4D13D513941D85F76DB154D524140A4DF0E3E51394168226CD8154D524180FB3A303E513941F6B9DAD2154D5241C01726333E51394142F163D4154D5241C01726335351394142F16354134D524180FB3A3053513941F6B9DA52134D5241DC46030854513941849ECD2E134D5241F4FDD4385451394196438B1C134D52411C7C614254513941FC3A701E134D52411C7C61C261513941FC3A70DE0E4D5241CC3B4E71545139410C71AC0F134D524124B9FCF76A51394152B81E590E4D5241CCA145169151394116FBCB52094D524168226CC8E75139418A416041044D5241BC0512C4E7513941A223B93C044D5241345530CAE751394168226C3C044D5241081B9ECEE751394100DE0241044D5241C09F1A2F415239416CE7FBE1FE4C524100DE025976523941FEB27B8A014D5241B4847C30AB52394162A1D69C054D524194B20C91BB5239414872F907084D5241B88D0600C252394136AB3E97094D52418C1F63BED5523941B29DEFEB0F4D5241549FAB1DE05239410E4FAF7C134D52416891ED2CE0523941B0E1E979134D5241A401BC85E0523941E6D0229B134D5241504013F1E052394172F90FAD134D5241042B87E6E0523941FEF675B0134D5241A49BC440F25239410A46250D174D5241F4B0504BF25239418048BF09174D52417C832F2CF3523941840D4F2F174D5241809543CBF3523941ECC03937174D5241645DDCC6F35239413E0AD73B174D52411C5A641B0F533941CC5D4BDC184D52418004C51F0F5339417A14AED7184D5241BC7493081053394112F241E3184D524100B37B82105339417C6132DD184D5241B8FC8784105339418A4160E1184D52416C2BF6A720533941D6E76A63184D5241A4B437C81F533941ECE2365E184D5241C84B37C91F533941E04F8D5B184D5241444772E91E53394168226C50184D5241A8A44EF01D533941849ECD26184D52411895D4491D533941DCB584E8174D5241F4285C0F1D533941703D0A9F174D52411895D4491D53394104C58F55174D5241A8A44EF01D5339415EDC4617174D5241444772E91E5339417A58A8ED164D524140A4DFFE1F53394188F4DBDF164D5241F4285C0F20533941703D0ADF164D52412406815520533941022B87E2164D5241489D805620533941F697DDDF164D5241489D80D635533941F697DD5F174D5241240681D535533941022B8762174D52411826533536533941A8C64B67174D52414C59863836533941A6BDC163174D5241B8F3FDE454533941703D0A1F194D5241F4285C8F6F533941703D0A1F194D52416C567D1E705339410C242826194D5241CC3B4E2170533941DE718A22194D5241CC3B4E218F533941DE718AA21A4D52416C567D1E8F5339410C2428A61A4D5241A80A46B58F5339417A58A8AD1A4D5241E4C7980B905339412AA913BC1A4D5241AC605412905339417C6132B91A4D5241CCEEC9B3B3533941684469EB1F4D5241B88D0610C5533941C4D32B01214D5241B8AF0357D453394196900F5A214D5241CCA145A6D953394130DD24BA204D52414C6210A8D953394150FC18BB204D5241D0D556BCD953394134A2B4B7204D5241F0164880DA53394122FDF6AD204D52410044FA3DDB5339418AFD65B7204D5241FC3A703EDB5339419AE61DB7204D5241587DAE46DF53394186A7571E214D5241BC96908FE3533941CAC34215204D524114AE4791E3533941EA73B515204D524130FF217DE453394136CD3BEE1F4D5241986E122303543941FE43FAB91C4D52418841602503543941569FABB91C4D5241F4B0502B035439418A4160B91C4D52417C1D384703543941C6DCB5B41C4D5241A8C64B870354394170F085B11C4D5241C8E53F8403543941E6D022AF1C4D524174E09CC114543941BC0512501B4D5241F4B9DA4A1D54394144FAED4B194D52419CC420901D5439411AC05B40194D524110C7BA881D54394128ED0D3E194D524104C58FB131543941865AD330154D5241388941604154394144696F90114D5241287E8C294F5439414E6210A00D4D5241ACADD82F4F543941D8A370A10D4D52416C9A774C4F543941C898BB960D4D5241B09465884F543941A223B98C0D4D52414C3789814F543941304CA68A0D4D524104098AEF5C5439416C567DC20A4D524110C7BAE86B5439410EE02DA8034D524130772D016F54394194658803FF4C5241F4285C0F6F5439412E211F04FF4C524130772D316F543941E4839ED9FE4C5241A8F1D2AD6F543941907EFBAAFE4C5241A80A46A56F54394134EF38A9FE4C5241043411C67854394102BC05E2FB4C5241081B9ECE785439415E4BC8E3FB4C5241D83D79F8785439419CC420D4FB4C524140E8D9CC79543941E61DA7B0FB4C52415427A0C9795439410022FDAEFB4C52412831084C855439411C5A644BFA4C524114F2414F8554394104560E4DFA4C52414CEA047485543941D478E946FA4C5241FCCBEE9986543941CC5D4B38FA4C52414C158CAA8654394152B81E39FA4C524178BE9FAA86543941D0D55638FA4C5241341136EC9854394112A5BD51FA4C5241086822EC9854394194878552FA4C5241FC65F78499543941764F1E5AFA4C5241A4B43788995439419A779C56FA4C524110583954B3543941BE0E9CD3FB4C52416C09F950B35439410A8A1FD7FB4C524120166ACDB35439413CDF4FDDFB4C5241744694C6B45439412063EE06FC4C52412063EE5AB5543941FC3A703EFC4C5241E4361A60B5543941F4DBD73DFC4C524180FB3AB0BF543941FC1873CB014D524194A98241C7543941325530C6054D52411CA7E8F8C9543941643BDF33074D5241F0F44A69D4543941DCB584B0044D52418CFD6567D4543941B88D06B0044D5241789CA273D4543941FE43FAAD044D5241C039231AD5543941585BB16F044D5241982A1845D5543941C442AD39044D524170128350D554394190A0F839044D524170CE8872DA5439418E976ED2F74C5241287E8C49EC543941CAE53FD0F04C524110363C3DEC543941842F4CCEF04C52412085EB71EC543941E2E995BAF04C5241D066D577EC543941CC7F48BBF04C5241A8E8488EFF54394112363CA5E64C5241B0946588FF54394128A089A4E64C5241244A7B93FF543941D24D62A0E64C5241BCB88D96FF543941A223B9A0E64C5241E4A59BD40755394140A4DFF6E14C52414C3789D10755394170CE88F6E14C52410C71ACDB07553941A4DFBEF2E14C5241784F1E1608553941A60A46A9E14C5241784F1E16085539419AE61DFBD74C52413CBD52A624553941DC680017B74C5241DC460398245539415A863816B74C524118D9CEB7245539415CFE43EEB64C5241E4839EAD24553941464772E1B64C5241043411B62455394160984CE1B64C524198FF90CE205539417CF2B074A84C5241784F1EC62055394162A1D674A84C52414CEA04A4205539416CE7FB49A84C5241D0915CAE205539410EBE3049A84C5241AC6054921455394120F46C729E4C524198218E9507553941441CEB828F4C524138AB3E8707553941C6FEB2838F4C5241C0EC9E6C0755394136CD3B628F4C5241D46F5F57075539413845475A8F4C5241C8C3425D0755394150AF94598F4C5241840D4F5FF0543941DC460334834C5241D42B6559F05439413480B734834C52412C651942F0543941925CFE2B834C5241EC9E3C4CF0543941081B9E2A834C5241B09465F8CE543941E4141DCD734C524154E3A5EBC55439412CD49A4E6E4C5241A05E29EBC55439415A86384E6E4C52414C378971C5543941C6DCB5206E4C52414C158C7AC55439411CEBE21E6E4C52414C3789F1B6543941EEEBC0A1694C524158863846AE543941E8FBA931654C5241085F98DCAD543941C03923BA5F4C5241F4DBD711B2543941B4C876265C4C52412CD49A06B25439412E6EA3255C4C524194B20C31B25439415EBA49F05B4C5241287E8C09B254394176BE9FBE5B4C5241DC8AFD15B254394138D6C5BD5B4C5241F4FDD4C8B0543941F6065F8C5A4C524188635DBCB0543941C64B378D5A4C52418CB96BA9B05439411E166A755A4C524144AD693EB05439411C9E5E4D5A4C5241C84B3749B05439413E9B554B5A4C52417858A8759A543941CA32C40D534C52414060E5709E543941840D4F174B4C5241D000DEA298543941B6A6799B4A4C5241941804A68E543941666666C6494C52412C90A0F89E543941081B9E224B4C524130DD2446AE543941D24D62A44E4C524184E2C748AE5439419ECDAAA34E4C5241A8C64BB7AE543941E4F21FB64E4C5241A03C2CB4AE5439410AF9A0B74E4C524150FC1843C55439415C2041A5514C524158863846C5543941361AC0A3514C524174B5156BC5543941B0E1E9A9514C52416007CE89C55439418E7571AB514C5241C07D1D88C5543941C264AAAC514C524140575BB1DE5439412041F1D7534C5241E0E00BB3DE543941EC51B8D6534C5241F0384527DF54394192CB7FDC534C5241BCB88D26DF543941AA6054DE534C5241ACADD8EFF05439416688634D544C5241E02D90F0F05439414EF38E4B544C52411CEBE206F1543941C264AA4C544C52419CEFA706F15439413C4ED14D544C5241905374F4F85439414A598668544C5241D409685201553941DCB58434554C524140CF66250D553941F44A597A584C524110C7BA280D5539419A999979584C5241605452370D553941BC270F7F584C524198DD93770D553941F263CC89584C5241BC490C720D5539410C71AC8B584C5241D812F2311C55394138D6C5415B4C5241B4A679371C5539411EC9E53F5B4C5241F46C569D1C5539411EA7E8505B4C5241CCCCCCDC1C5539414E6210545B4C52414C158CDA1C553941C03923565B4C52411C5A642B2B5539414AEA04505C4C52419C11A52D2B5539416A6FF04D5C4C5241F4B0508B2B553941BE3099525C4C52413C2CD48A2B553941E6AE25545C4C5241941804763C5539418E7571A75C4C5241489D80763C553941F853E3A55C4C52418451499D3C553941F21FD2A75C4C5241A4923A613D55394174D7129E5C4C5241605452073E553941AA6054825C4C5241842F4C763E553941CCCCCC585C4C52418451499D3E553941F21FD2275C4C5241842F4C763E553941AACFD5F65B4C5241605452073E553941CE3B4ECD5B4C5241A4923A613D55394104C58FB15B4C5241BC0512C43C5539418048BFA95B4C5241708A8EC43C55394158CA32A85B4C524188B0E1092C5539418638D6555B4C52413C0AD7431E553941FA5C6D655A4C5241DCF97EFA0F55394152B81EC5574C5241A4BDC1F70355394174D71272544C5241D8C56DF403553941CE88D272544C52418838D6E5035539413E575B6D544C524110E9B73F0355394176E09C51544C524108CE1931035539416619E250544C524174D712320355394138894150544C5241F853E315FA54394130DD2472534C524144D8F014FA5439415C6DC572534C5241148C4A7AF954394174B5156B534C52419487857AF9543941FCCBEE69534C52414082E247F1543941CE19514E534C5241BCC117C6DF543941923A01E1524C524170F085F9C6543941C8BAB8BD504C524130992AC8B05439417EFB3ADC4D4C5241984C155CA1543941D85F76534A4C52418CB96B59A15439417C832F544A4C52414CA60AC6A0543941BC96903B4A4C52419C8026A2A0543941A679C7394A4C52414CEA04A4A0543941D24D62384A4C5241AEAFC51E9E543941E8329D024A4C52413C7958589F54394152B81EB9454C524104098A4F9F543941FE65F7B8454C5241148C4A5A9F5439418E7571AB454C5241F0D24D429F54394114AE478D454C5241D44D62509F543941C6DCB58C454C5241A01A2F8D9A54394176711B353E4C5241C09F1A7F9A543941C442AD353E4C5241043411769A543941F44A592A3E4C5241105839849A543941287E8C293E4C5241686FF0F594543941D200DE02384C5241FC87F43B8C543941029A084B2E4C52411895D47987543941B6847CA4284C5241D4E76A6B87543941EE7C3FA5284C5241A879C759875439412ACB108F284C5241306EA361875439416666668E284C5241000000B07F54394184C0CAE1224C5241D4DEE0AB825439413E0AD77F1E4C5241D022DB298954394174B515DF1A4C5241D0D5560CA0543941B003E730124C5241B88D0600A054394140A4DF2E124C52410CD7A350A05439413480B710124C5241CC32C471A0543941986E12E7114C5241701B0D80A05439417A14AEE7114C5241306EA3E1A2543941567DAE6E0E4C5241401361D3A254394174D7126E0E4C5241E895B2ECA2543941A4703D4E0E4C524188A757EAA2543941A8C64B4B0E4C5241085F98ECA25439413A234A4B0E4C52410022FD86A25439415EBA49D8074C524138F8C284A2543941CC5D4BD8074C52412CD49A76A2543941B84082C6074C524148257582A2543941C4B12EC6074C5241AC8BDB289C543941E8482E63F94B5241943A011D9C543941DCD78163F94B52418451490D9C5439418204C54FF94B524170AC8B1B9C5439410022FD4EF94B52418C976EC297543941501E165EF44B5241AC8BDB3894543941BAB88DF6EE4B5241F853E34592543941029A086FE84B52415405A3129C543941645DDC8ED84B5241D49AE68DA554394190C2F5B8D34B52417C613245AC54394126530523D24B524184C95461B35439414C158C8ED04B524160BA495CB35439412EFF218DD04B52419C802682B3543941849ECD86D04B5241ECC03913B4543941BAFC8750D04B524154302A19B454394112363C51D04B5241283A92ABB75439415405A36ECE4B5241083D9BA5B7543941FCCBEE6DCE4B5241049A08BBB7543941B0E1E965CE4B5241C8293AD2B754394138F8C248CE4B524190E4F2DFB75439412CF69749CE4B5241D8CEF7D3BD543941A857CA22C84B5241588638C6BD543941B459F521C84B52413C7958E8BD543941986E12F7C74B5241FCD478E9BD543941986E12F7C74B524114FBCB4EBE5439411EA7E8B4BA4B5241482EFF11C154394166F7E431B44B524120F46C06C1543941BE529631B44B5241842F4C16C15439412E6EA31DB44B52414CF38EF3C0543941482EFFF1B34B5241B0726801C1543941C4D32BF1B34B5241ECEBC009BF543941F48E53E0B14B524180FB3A60B2543941D022DBF5A04B524100917E6BAE543941501E16C6964B524128A08960AE54394164EE5AC6964B52419C33A244AE5439413A234AA3964B52411CC9E54FAE543941B4C876A2964B5241B025E463A4543941460378338E4B5241E81DA758A4543941CC5D4B348E4B52412C90A048A454394130992A208E4B5241CCEEC9E3A3543941FC3A70FA8D4B5241E8482EEFA35439411AC05BF88D4B524138F8C2649C543941FC87F4638B4B5241D42B65599C543941DE0209668B4B5241E0E00B239C5439417CD0B3518B4B5241A401BC259C54394172F90F518B4B52412C87160986543941BEC1177E854B524188855A836F543941903177157E4B52415839B4786F54394192ED7C177E4B524130992A486F543941182653057E4B524140355E4A6F5439415E29CB047E4B5241E00B932966543941C68F31A37B4B5241D46F5F27665439417E8CB9A37B4B52410C24281E66543941827346A07B4B5241B8F3FD24655439419EEFA7767B4B5241C09F1AFF6354394196D409687B4B5241DC1B7CB15754394196D409687B4B5241D49AE69D57543941708104697B4B5241F063CC9D57543941E2361A687B4B5241F8A0672348543941240681817B4B5241DCD781234854394142AD69827B4B5241EC04341147543941E0BE0E907B4B5241A813D0F4465439415E29CB947B4B5241F0D24DF2465439416ABC74937B4B5241ECEBC039425439418E5374207C4B5241A01A2F3D3B54394134A2B45B7B4B524104A392FA3A5439413E9B551F7A4B5241480378CB3D54394188635DA0784B5241A045B6834254394174469476764B52418CB96B794254394132772D75764B5241703D0AA742543941C07D1D64764B52412C8716D9425439410EBE3025764B5241A8A44EE042543941F0F44A25764B5241B0E1E9454354394106F0165C744B524134C4B13E43543941925CFE5B744B5241E458174743543941D8A37051744B524198BB96204354394104560E21744B524120166A2D43543941C66D3420744B52419CE61D273E543941C07D1D646F4B5241701B0D10405439419EEFA7F2694B5241E895B23C445439412A1895A0664B5241B8F3FDC452543941DE938725604B5241C03923BA525439416EA30124604B5241C0EC9EEC52543941E4141D11604B5241E458172753543941E63FA4C75F4B52410868221C535439411C0DE0B95F4B5241E09C1125535439415817B7B95F4B5241182024C8525439411E143C7A5E4B52418838D6F56B5439414CC807655E4B5241CCAACFF56B543941C6DCB5645E4B52417C1D38776C543941CAA1455E5E4B5241FCD478796C543941F01648605E4B5241E81DA718835439418AB0E1C95C4B52416866661683543941643BDFC75C4B5241C8293A52835439414260E5C45C4B5241F016488083543941EA0434BD5C4B5241BC051284835439412063EEBE5C4B524140E8D98C98543941AA6054DE594B52412C87168998543941E4A59BDC594B5241C05B20019954394104E78CC8594B5241482EFF1199543941A4703DC2594B52415C8FC21599543941061214C3594B524190C2F5C8A5543941A0ABAD30564B52417C6132C5A55439413E0AD72F564B5241247502DAA5543941E0BE0E28564B52412497FFE0A5543941D42B6529564B52419C779C32B054394184C0CAC9524B5241E4C7982BB05439418E5374C8524B52418C4AEA74B0543941DE2406AD524B524130E6AE75B05439414E6210AC524B5241ACD85F76B05439410A6822AC524B5241F8C2646AB6543941623255004F4B5241C442AD69B6543941A62C43004F4B5241E0BE0E6CB6543941825149FD4E4B52415C6DC56EB6543941BADA8AFD4E4B5241FCA9F1E2BB5439414E840D634B4B52416CBC7453C4543941986E129B484B524138234A4BCF54394186EB5128464B524194D40948CF54394168446927464B5241905CFE53CF543941B0726825464B52418838D655CF543941D49AE625464B524120D26F9FDD543941842F4CC6424B52412CF6979DDD543941CEAACFC5424B5241FCCBEEA9DD543941361AC0C3424B524190C2F5F8DD543941C4B12EA6424B5241B88D0600DE54394130BB27A7424B5241083D9B55E654394146B6F3E13E4B524198FF904EE6543941DAACFAE03E4B524124E4836EE6543941DE2406D53E4B52415CD3BC73E6543941B4C876CE3E4B5241DC460378E65439418816D9CE3E4B5241083D9BD5EA5439418E7571BB3B4B524184C954D1EA5439412ACB10BB3B4B5241549FABEDEA543941FC1873973B4B524164EE5AF2EA5439414A7B83973B4B5241D0915CEEEC5439413CDF4F5D324B5241C442ADE9EC543941EE7C3F5D324B5241C09F1AEFEC543941FC3A7056324B5241C07D1DC8EC543941228E7525324B52419CA22359EC54394144FAEDFB314B5241285305B3EB5439417C832FE0314B5241C09F1AEFEA543941FC3A70D6314B5241A05E292BEA5439417C832FE0314B5241280F0B85E954394144FAEDFB314B524104341116E9543941228E7525324B5241006F81F4E8543941789CA24F324B5241F41FD2EFE85439412A3A924F324B524118D9CEF7E6543941CC7F48773B4B5241DC2406C1E2543941CEF7536F3E4B5241F44A59A6DA5439411C0DE019424B5241FC87F49BCC543941BAB88D6A454B524148E17A84C15439411AC05BE4474B5241A4BDC187C1543941A60A46E5474B5241D85F766FC154394186C954E9474B52415839B448C154394162C3D3F7474B5241BC529641C1543941FEB27BF6474B5241ACD85F86B8543941061214D74A4B5241004D848DB8543941D6C56DD84A4B5241A80A4645B85439416ABC74F34A4B52417A4EAB43B854394159FD76F54A4B5241A150AA44B8543941697C36F44A4B52414B0D4445B8543941C44375F34A4B5241DD478747B85439419C8B9CF24A4B524129CA4AFACB543941E4D53DEE3F4B52415CFD7DC5CC5439414A3CA4903B4B5241F596172FCB5439417E6FD763384B5241C263E44FD4543941B1A20AC42E4B5241F596170FDB543941E4D53DA3254B52415CFD7DD1C654394117097174234B524129CA4A0EC2543941170971E52A4B524129CA4A2AB45439417E6FD75B3C4B52418F30B1D8A95439417E6FD7D43F4B52415CFD7D299B5439417E6FD74B444B52415CFD7D418F543941E4D53DDE474B5241C263E4EB865439417E6FD73B4C4B524129CA4AA2785439414A3CA4E94E4B52418F30B1506E54394117097197514B5241F5961727505439417E6FD7AE524B5241F5961763325439414A3CA4E3514B52418F30B1FC18543941E4D53D4D504B52415CFD7D59045439411709719D4E4B5241C263E41FEE533941B1A20A0D4A4B52418F30B1B0BF53394117097134434B524129CA4A46A8533941170971BF3D4B5241F596179F955339414A3CA4903B4B5241F59617C7815339417E6FD761394B5241F596174344533941E4D53D00374B52415CFD7D092E533941170971CF354B5241C263E4DB11533941B1A20ABA334B5241C263E40BFA523941B1A20ABA334B524129CA4AC6E9523941B1A20A35364B52415CFD7DB5D8523941B1A20AA83C4B52418F30B19CCB5239414A3CA482424B52415CFD7D05B15239411709711E4E4B5241C263E4E38E523941B1A20AF1574B5241C263E4276D523941E4D53DB45C4B52415CFD7D0D2E5239414A3CA43E644B52415CFD7D91EC5139417E6FD701694B5241F596173FC9513941E4D53D966B4B5241F5961787A5513941170971DA6F4B52418F30B13482513941170971CC764B52410AD7A330645139418FC2F5387D4B52410AD7A3B0525139418FC2F5B8814B52410AD7A3B0425139418FC2F5B8844B52410AD7A330325139418FC2F5B8884B52410AD7A3B0275139418FC2F5988A4B52410AD7A330195139418FC2F5188B4B52410AD7A3300E5139418FC2F598894B52410AD7A3B0075139418FC2F578864B52410AD7A3B0035139418FC2F538824B52410AD7A3B0FC5039418FC2F5187E4B52410AD7A330F55039418FC2F5B87C4B52410AD7A330E25039418FC2F5187A4B52410AD7A3B0CB5039418FC2F5F8764B52410AD7A3B0B85039418FC2F558764B52410AD7A3309C5039418FC2F538764B52410AD7A3307F5039418FC2F578764B52410AD7A3306C5039418FC2F538764B52410AD7A3303E5039418FC2F578784B52410AD7A3B02A5039418FC2F5D87A4B52410AD7A3B0145039418FC2F5587E4B52410AD7A3B00B5039418FC2F538814B52410AD7A330FC4F39418FC2F598864B52410AD7A330F04F39418FC2F5388D4B52410AD7A330E24F39418FC2F5B8934B52410AD7A330D54F39418FC2F598974B52410AD7A3B0C24F39418FC2F5589A4B52410AD7A330AA4F39418FC2F5989D4B52410AD7A3B0894F39418FC2F5789F4B52410AD7A3305D4F39418FC2F598A14B52410AD7A3B02D4F39418FC2F5D8A44B52410AD7A330124F39418FC2F518A84B52410AD7A330FC4E39418FC2F578AB4B52410AD7A3B0E24E39418FC2F598AD4B52410AD7A330D84E39418FC2F558B14B52410AD7A3B0C44E39418FC2F538B54B52410AD7A330AB4E39418FC2F578BA4B52410AD7A3B08B4E39418FC2F5B8BE4B52410AD7A3B06A4E39418FC2F518C24B52410AD7A3305B4E39418FC2F578C34B52410AD7A3303F4E39418FC2F518C74B52410AD7A3302F4E39418FC2F558C84B52410AD7A3B0234E39418FC2F578C64B52410AD7A3301B4E39418FC2F5D8C14B52410AD7A330184E39418FC2F518BE4B52410AD7A3B0144E39418FC2F5F8B84B52410AD7A330F74D39418FC2F558B94B52410AD7A3B0FC4D39418FC2F5D8BF4B52410AD7A330F94D39418FC2F598C44B52410AD7A3B0E74D39418FC2F5B8C74B52410AD7A3B0D64D39418FC2F5D8CA4B52410AD7A330BC4D39418FC2F558CC4B52410AD7A3B0A74D39418FC2F518CE4B52410AD7A3308B4D39418FC2F538D04B52410AD7A3B0754D39418FC2F5F8D14B52410AD7A330614D39418FC2F578D54B52410AD7A330484D39418FC2F5F8D84B52410AD7A330314D39418FC2F518DC4B52412F000000C0EC9ECCF7523941226C78366A4C524140A4DFCEF75239415EBA49346A4C52415C4BC857FA523941F8E4614D684C5241905CFE13FC523941EA95B2F0644C524178E92661FD523941986E1203624C5241D4BCE304035339417C613209614C5241DC2406811353394132E6AEF95E4C5241B4A67997265339417E6ABC685F4C52412C1895442F53394116D9CEFF5D4C52418C28EDAD39533941827346C85D4C5241D088D29E405339417AC729EA5C4C5241BC270F5B42533941645DDC6E5E4C5241884160F544533941A223B940614C524198900F2A4A5339416EA3016C634C5241B459F5E958533941029A088B674C524164EE5AC2635339411C9E5E256A4C524134333313725339413E575BFD6B4C52413C9B558F82533941460378DB6C4C524138B4C8D68D5339412041F1A36C4C52419CC42040985339413C4ED19D6D4C5241D812F2C19E5339413433337F724C5241587DAE969C53394198BB9688754C5241F46C562D92533941F697DDB3774C524150FC18D3805339419C559FA7794C5241085F981C75533941E8D9AC167A4C52410C4625D569533941AEB662C3794C5241B459F5E958533941D881735A784C5241DCD781D3455339418E06F04A764C52415817B7F13753394160984C35754C5241E8B7AF5328533941D2DEE0DB754C524110363C3D1553394168446913764C5241ACFA5CAD00533941787AA574754C52414C158CFA0153394134113624704C5241D0B359F5015339410A682224704C524100917EFB0153394142F1631C704C5241C854C1F801533941B27BF218704C5241F4B050FB01533941D634EF18704C5241A42C438C01533941E8FBA9156C4C52417CD0B3890153394132E6AE156C4C52416C787A6501533941780B24E86B4C5241900F7AF6005339419A779CBE6B4C5241DC4603A800533941240681B16B4C5241746891AD00533941244A7BAF6B4C524190ED7C6FF8523941BAB88D466A4C5241B459F569F8523941BC7493486A4C5241F0D24D12F8523941FCCBEE396A4C5241C0EC9ECCF7523941226C78366A4C524128000000E02D907090533941D066D5CB174D524190C2F5489B5339417A36AB7E164D52411CEBE2469B5339412CF6977D164D5241FC5C6DD59B533941A679C765164D5241D8C56D449C5339413889413C164D524120B072489C533941A2D63437164D524160C3D34B9C533941B81E8537164D524134EF38559F5339416EA30128144D52413C4ED1519F533941585BB127144D5241F085C9749F533941A6BDC1FB134D52411C7C61729F533941A223B9F8134D52419C33A2749F533941C6DCB5F8134D52414894F6069F53394178E926790F4D5241E43FA44F9F5339417EFB3A74124D5241C0CAA1C5AB5339417A58A845114D52415CFE435AB8533941AED85F1A0F4D5241CC32C441BC53394192CB7F200E4D52413480B770CB533941DA1B7C29084D5241884160A5D0533941B6627F51064D5241BC96905FE9533941F0F44AE5004D524198FF902EF15339414E401329FF4C5241F4285CDF065439415AF5B966FE4C524100917E5B175439414694F64AFE4C5241D0D556AC25543941AA825135FD4C524128C286973654394122DBF972FC4C524150AF94D53E543941B22E6E13FE4C5241E4D022FB4A543941C8293A4E024D5241B415FB4B5954394106F01620054D524110E9B7EF5E543941506B9A2F074D52413CBD52E65B5439414E6210D0084D524140A4DF9E50543941721B0DA80A4D52413C4ED1914054394192CB7F200E4D524164F7E4D131543941D2915CF2104D52418451493D25543941DEE00B4F144D524144D8F00413543941F4DBD789184D52416C567DEEFF533941E61DA7EC1A4D5241208E7581E8533941621058711C4D524160545267C85339412041F13F1B4D52417CD0B32994533941228E7559174D5241E02D907090533941D066D5CB174D52412100000088416045B9523941244A7B036B4C5241EC51B8AEC3523941F4DBD7ED694C52418048BF7DCB523941FC87F4CB6A4C5241081B9E6ED252394110E9B7E76A4C524120FDF695E05239411804563E684C524170AC8B9BE0523941AE69DE3D684C52410C93A9A2E05239411873D746684C5241E8FBA911E152394188635D70684C524144AD693EE15239413E0AD777684C5241287E8C39E152394162105879684C5241EC73B555EA52394186C954516A4C524104A3925AEA52394162C3D34F6A4C52412041F1D3EA523941E2361A646A4C52410CB5A619EB523941BC9690676A4C5241D46F5F17EB5239418048BF696A4C5241BEB574E2EF52394103D347B96A4C524180B740D2E652394150AF94B96D4C52418CDB6850E052394122DBF9C2704C5241D85F76BFE052394180B740EE724C524134333363E652394170F085F1764C5241DC8AFD75EC52394122FDF6697A4C5241B0B6627FEF523941C8BAB85D7C4C5241DC8AFD75EC5239412497FF887E4C5241CC3B4E41E75239415CB1BF7C804C52410C462525DE5239415CB1BF7C804C524164EE5A12D85239412C431C677F4C5241BC9690FFD152394112363C6D7E4C52414C621018CE5239415EBA49DC7E4C5241B84082F2C1523941666666BA7F4C524174E09C01BB523941E8D9AC167A4C524130992A58BF523941C8293A9E764C524110E9B7DFBB523941780B2410724C524188416045B9523941244A7B036B4C5241200000003C4ED1D11152394152B81E2D494C5241705F078E13523941E4839E45454C5241CC32C43119523941B615FB2F444C52416C348057295239411AC05BF4434C5241C464AAC02F5239417CF2B0DC434C524130992AA833523941D42B6589434C524174F90F993A523941946588B7404C52416C787AD543523941BA6B097D3E4C524170AC8B3B4D5239416891ED083F4C5241C8BAB83D4D523941508D97063F4C52414C7B83AF4D5239413889410C3F4C52418816D91E4E523941EC51B8063F4C52412497FF204E523941E09C11093F4C52416419E22861523941388941F43D4C524194B20CC15C523941D0D556343E4C5241C0172613625239416C9A7720424C5241C017261362523941EC2FBB23464C524150FC187369523941FA7E6A80494C52415839B4386E523941705F07464E4C5241905CFE63705239414C37892D524C52410CB5A6C96D523941C420B052554C5241686FF02568523941D0D55690544C52415C2041F16252394168446927534C5241F80FE98758523941EEEBC0E9534C5241E0718A7E55523941EEEBC0E9534C524188855A93445239418AFD65FF544C524194A982113E5239418AFD65FF544C5241480C025B3252394182514921544C52415C6DC59E3052394198BB969C524C52410C93A922205239415452274C4D4C5241CC32C431195239411E3867584B4C52413C4ED1D11152394152B81E2D494C5241040000008CB96BF9835139418638D6C1044D52418CB96BF9945139418638D681034D524124E4833E93513941D40968A2034D52418CB96BF9835139418638D6C1044D524104000000A8C64B27735139419A081BA62C4C52412497FF109E5139419CA223852E4C5241D0B359D59A51394196B20C612E4C5241A8C64B27735139419A081BA62C4C5241 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-360.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-360.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-360.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-360.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + +http://trac.osgeo.org/geos/ticket/360 + + + + + +Exception on CascadedUnion (JTS works!) +http://trac.osgeo.org/geos/ticket/360 + + +01060000000300000001030000000100000009000000CF94E7BC74493A4112BF8381EC1D5241719EA08059493A41D99596CB011E5241D39DCCCD7D493A41059D9A3FF51D5241045779D6A6493A41CA15FFA0E61D52415B9FCDB4AF493A41B0B05E38E31D52419C61B481AB493A4145F236A0E31D5241692E81C6A2493A4145F2361DE51D5241CF94E77E93493A41DF8BD07EE71D5241CF94E7BC74493A4112BF8381EC1D524101030000000200000009000000DF0CC8255B483A4162F13B3BE31D52419C8CC751B8483A4118E57CB8FD1D52417E74A8A5BA483A41B95FD389FF1D524144923055C1483A4131986045FD1D52413551951AB9483A41DAABCF0F001E524129DC7EE826493A41EA92F392181E52411544B4DDD8493A41E127AB26D61D52415922E39AF6493A412F2C7F40CB1D5241DF0CC8255B483A4162F13B3BE31D52410B000000CCA90B5654493A4124A21B12F11D5241A3955A9B46493A41C60FFAD6081E52413C25CEA346493A41CF8B0DD8081E5241D39DCCCD7D493A41059D9A3FF51D5241045779D6A6493A41CA15FFA0E61D52414E9FCDB4AF493A41B1B05E38E31D52419C61B481AB493A4145F236A0E31D5241692E81C6A2493A4145F2361DE51D5241CF94E77E93493A41DF8BD07EE71D5241CF94E7BC74493A4112BF8381EC1D5241CCA90B5654493A4124A21B12F11D5241010300000001000000060000009C8CC751B8483A4118E57CB8FD1D52413551951AB9483A41DAABCF0F001E52417E74A8A5BA483A41C45FD389FF1D52415374A8A5BA483A41C45FD389FF1D52417E74A8A5BA483A41B95FD389FF1D52419C8CC751B8483A4118E57CB8FD1D5241 + + +01030000000400000007000000DF0CC8255B483A4162F13B3BE31D52419C8CC751B8483A4118E57CB8FD1D52413551951AB9483A41DAABCF0F001E524129DC7EE826493A41EA92F392181E52411544B4DDD8493A41E127AB26D61D52415922E39AF6493A412F2C7F40CB1D5241DF0CC8255B483A4162F13B3BE31D524107000000A3955A9B46493A41C60FFAD6081E5241CCA90B5654493A4124A21B12F11D5241CF94E7BC74493A4112BF8381EC1D5241719EA08059493A41D99596CB011E5241D39DCCCD7D493A41059D9A3FF51D52413C25CEA346493A41CF8B0DD8081E5241A3955A9B46493A41C60FFAD6081E5241050000005374A8A5BA483A41C45FD389FF1D52417E74A8A5BA483A41B95FD389FF1D524144923055C1483A4131986045FD1D52416174A8A5BA483A41C45FD389FF1D52415374A8A5BA483A41C45FD389FF1D5241040000009C61B481AB493A4145F236A0E31D52414D9FCDB4AF493A41B1B05E38E31D52414E9FCDB4AF493A41B1B05E38E31D52419C61B481AB493A4145F236A0E31D5241 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-366.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-366.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-366.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-366.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,23 @@ + + + http://trac.osgeo.org/geos/ticket/366 + Unable to find edge to compute depths at at -200016 249553 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + http://trac.osgeo.org/geos/ticket/366 + + +010600000001000000010300000001000000430000000DD099A7C7BD05C10000000010770E41EBB1C54FEDCA05C1CCA26DE993F10D41AB1E6C42C2EF05C1D7671DD628780D41A75458319C6806C183FA179D57DB0D41FD31ACF35E0807C1F904B274BC300E41C5606C75B9B507C169C3D67252650E41643B759A4E6908C17C28D55402770E41253271484F6908C1D1B5CF70FF760E4196E03414516908C14FCABE34ED760E41105F5B3A5B6908C11996CABFCB760E414D3086B56B6908C142DC48EAAC760E41186E91E3816908C1186E91E391760E414A097E7F826908C1C9B79A6391760E414B097E7F826908C1C8B79A6391760E414F097E7F826908C1C5B79A6391760E4142DC48EA9C6908C14D3086B57B760E411996CABFBB6908C1105F5B3A6B760E414FCABE34DD6908C196E0341461760E4100000000006A08C10A25EBA65D760E41B13541CB226A08C196E0341461760E41E7693540446A08C1105F5B3A6B760E41BE23B715636A08C14D3086B57B760E41B1F681807D6A08C1C5B79A6391760E41B5F681807D6A08C1C8B79A6391760E41B6F681807D6A08C1C9B79A6391760E41E8916E1C7E6A08C1186E91E391760E41B3CF794A946A08C142DC48EAAC760E41F0A0A4C5A46A08C11996CABFCB760E416A1FCBEBAE6A08C14FCABE34ED760E415D4D7BFBB06A08C10B18742202770E41FBD26A0BB16A08C1866A376802770E416EE46313481E09C1F914B42452650E4109CC530CA1CB09C1CC05B274BC300E41926AA6CE636B0AC1437E199D57DB0D416DCB55E73DE40AC1AD54C55F29780D41154E3AB012090BC1C9A26DE993F10D41F32F665838160BC1FEFFFFFF0F770E41164E3AB012090BC1325D92168CFC0E414314D50E23E20AC128EF4FF6E67C0F41BFB02081E8A20AC17E3DB5DF31F30F414A06D995F3580AC16012EBD9A72610418E9F8F2620550AC11E07BCFEC72610414C907E56A83E0AC16309CCFE172710411CF8107737140AC1E773A4F2E32510412846506A97D909C11EA6DCE42B201041F36AD47C979A09C1B974C3DCBF141041A0BF52AC4F4609C110EDCEC737FC0F418A5C7FE1F7F408C12566D8E997C50F41685FCE0420A408C12DA67D03E08A0F4196A2521BB05208C1E0705D1328510F41DB5332BBDFFF07C1628480E23F1E0F41AB28C99197AA07C1D6FA3CEBAFF90E41F9BBEA76386C07C115B46616F0ED0E41DA4B8C67E03307C160CAD4FABFF00E41EEE724C7370C07C158AA2316F8FA0E41823F33E497F706C19548C90C00030F414F4A64F70FED06C141DC2704D8070F414240330A08E406C17D3A00FB3F0C0F41D85C1D1198D206C1B4CC22F747150F419EB0BDECFFB106C1E57C120CC0270F41AD41C30A488506C114E940F9C7430F411530CCF5BF5406C19BAF9406E8630F4166203B26D81106C14D0D57E70F8F0F410EFB351CDE0006C1F3284448F9980F41BEEB2AF1DCF105C12DEF4FF6E67C0F41EBB1C54FEDCA05C1365D92168CFC0E410DD099A7C7BD05C10000000010770E41 + + + +0103000000010000007E0000001F9B894E40160BC188CF42370F770E411F9B894E40160BC17830BDC810770E4163B25DA61A090BC1BC934FDF8CFC0E41E99D0A581A090BC1C11E13698EFC0E415F6BA5B62AE20AC15EB1D048E97C0F4136CE011D2AE20AC1F197BBBBEA7C0F41716D4D8FEFA20AC19DDE20A535F30F4150CD40B0EEA20AC1F007F2F236F30F41E920F9C4F9580AC1BA788963AA2610414792209CF8580AC1EF05C1F6AA2610412118AC3DF7580AC1E3C5C268AB26104177D036B8F5580AC19C44CEB4AB261041B914FC1BF4580AC1E232B8D7AB261041C2B0B2AC20550AC1012489FCCB2610410354825F20550AC1DEAB56FECB261041833C718FA83E0AC182A966FE1B2710411E5F8CE2A73E0AC1999427FD1B27104121CE1E0337140AC1840200F1E7251041AE0BE4EE35140AC17F40B1DFE72510414F5B23E295D909C1F672E9D12F2010415DAA2DB094D909C1EC6987A72F20104144CEB1C2949A09C1C3386E9FC31410416BDB8BB3939A09C1F4D7D062C314104160330AE34B4609C164B4E9D33EFC0F41DC5493364B4609C129D6046C3EFC0F41F3F1BF6BF3F408C11C4B0E8E9EC50F41E64AF32DF3F408C14068E2629EC50F41F713DF5A1BA408C1B7F18283E68A0F4199F5BDB1AB5208C1591EFFC02E510F4126016A0ADCFF07C18356BB01471E0F41B527923995AA07C16F43319EB7F90E41D9EA72EA376C07C171FCF51FF8ED0E41E905449DE13307C18929ECEDC7F00E411D75743C3A0C07C115EDE0B6FFFA0E41AE765E049BF706C10789FE6A07030F41A588676413ED06C1D120053FDF070F411D0247A20BE406C10FC9DA20470C0F41586C38E19BD206C1F4A8F8FF4E150F4189B1F10504B206C1ECF07CEBC6270F415EC603604C8506C12D5107B3CE430F41EE073C60C45406C1FE2955B2EE630F413FA1E84BC45406C139549DBFEE630F41B791577CDC1106C128BC5FA0168F0F41EACBD22EDC1106C1F4A8F8CF168F0F4142AACD24E20006C1A1CBE53000990F415F7CD1AEE00006C16A447ADB00990F4115504D1EDF0006C12E4CF03701990F41138A6383DD0006C1FD778E4201990F418FC6A1EEDB0006C15734E7FA00990F418D165670DA0006C11E7DDD6300990F41F211E717D90006C159E08683FF980F41969D34F3D70006C19AE4EC62FE980F419F42090ED70006C114D1AF0DFD980F41CA31FEE2D5F105C1F197BBBBEA7C0F41A1945A49D5F105C15EB1D048E97C0F411762F5A7E5CA05C1C11E13698EFC0E419D4DA259E5CA05C1BC934FDF8CFC0E41E16476B1BFBD05C17830BDC810770E41E16476B1BFBD05C188CF42370F770E419D4DA259E5CA05C1446CB02093F10D411762F5A7E5CA05C13FE1EC9691F10D4169C29B9ABAEF05C163A29C8326780D4119B03F34BBEF05C12C28B11025780D41DEE34C13BCEF05C17993DFC223780D41FFE7302FBDEF05C12408FCA622780D41A6DA027DBEEF05C10268EFC721780D41F997EEEFBFEF05C1621B4C2E21780D41BDF9B279C1EF05C18B9AF9DF20780D4194162E0BC3EF05C14B71FADF20780D41641AF294C4EF05C10CAD4E2E21780D413B29DD07C6EF05C1548CF3C721780D414A2AAE55C7EF05C1D99601A722780D415485ABA8A06806C152C202EE50DB0D41BCEC3207620807C15A2A6F07B5300E4193F5E506BBB507C1149678904A650E41EE822FD1476908C190F1D19FF9760E41D77D111E496908C10296016CEC760E41E584646C496908C1FE0A3EE2EA760E41930F8B92536908C14ECA496DC9760E41509F2E2C546908C127F15EFAC7760E41BD7559A7646908C11B2FDD24A9760E41DF156686656908C134130CD7A7760E41845671B47B6908C1BE9E54D08C760E41BE9E54D07C6908C1845671B48B760E410A3C416C7D6908C12C9E7A348B760E4134130CD7976908C1DF15668675760E411B2FDD24996908C1BD7559A774760E4127F15EFAB76908C1509F2E2C64760E414ECA496DB96908C1930F8B9263760E41FE0A3EE2DA6908C1E584646C59760E410296016CDC6908C1D77D111E59760E4188CF4237FF6908C1F4C0C7B055760E417830BDC8006A08C1F4C0C7B055760E41FE69FE93236A08C1D77D111E59760E4102F5C11D256A08C1E584646C59760E41B235B692466A08C1930F8B9263760E41D90EA105486A08C1509F2E2C64760E41E5D022DB666A08C1BD7559A774760E41CCECF328686A08C1DF15668675760E41F6C3BE93826A08C12C9E7A348B760E414261AB2F836A08C1845671B48B760E417CA98E4B846A08C1BE9E54D08C760E4121EA99799A6A08C134130CD7A7760E41438AA6589B6A08C11B2FDD24A9760E41B060D1D3AB6A08C127F15EFAC7760E416DF0746DAC6A08C14ECA496DC9760E411B7B9B93B66A08C1FE0A3EE2EA760E412982EEE1B66A08C10296016CEC760E4160A5D62FB86A08C169D837AAF9760E41D05FE881461E09C1455156424A650E41F049CCF89DCB09C1BA956F07B5300E41034356575F6B0AC17AA702EE50DB0D41D5FE18D438E40AC10234A53023780D412728EA213AE40AC1E093985122780D414F01D5943BE40AC12304F5B721780D41BF99981E3DE40AC1A9EFA16921780D41AFFA12B03EE40AC1A9EFA16921780D411F93D63940E40AC12304F5B721780D41466CC1AC41E40AC1E093985122780D41999592FA42E40AC10234A53023780D413FEB751644E40AC1A789884C24780D41608B82F544E40AC1FAB2599A25780D411D1B268F45E40AC1218C440D27780D41E99D0A581A090BC13FE1EC9691F10D4163B25DA61A090BC1446CB02093F10D411F9B894E40160BC188CF42370F770E41 + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-392.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-392.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-392.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-392.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,26 @@ + + +http://trac.osgeo.org/geos/ticket/392 + + + + + +http://trac.osgeo.org/geos/ticket/392 +TopologyException: found non-noded intersection between LINESTRING (146.593 -37.2263, 146.593 -37.2263) and LINESTRING (146.593 -37.2263, 146.593 -37.2263) at 146.593 -37.2263 + + +01050000007B00000001020000000200000035BEE5A0FA486240785C548B887F42C00619B787F34962403A8D599B6B7A42C0010200000002000000A5AE6B6A0F516240EE23B726DD9B42C01BAA5D670F516240D165B130DD9B42C00102000000040000001BAA5D670F516240D165B130DD9B42C06AB3FB9F0D516240B6F81400E39B42C01A530B800C5162405AE95A20E69B42C01336CF150C5162401D566AF4E69B42C00102000000030000001336CF150C5162401D566AF4E69B42C06BB933130C516240EFBC9EF9E69B42C062B933130C51624000BD9EF9E69B42C001020000000500000062B933130C51624000BD9EF9E69B42C0984979520B516240D6468666E89B42C07DCB9C2E0B516240CB3CA87AE89B42C084013A820A516240E80D9CD8E89B42C01820D1040A516240946B651DE99B42C001020000000A0000001820D1040A516240946B651DE99B42C09FCA694F0951624012D5004AE89B42C0E47107A00751624072593B40E69B42C0891E42A6065162404ACC58D9E39B42C09D9ACB0D065162408C930C4AE29B42C03909A52F045162409BF749FFDC9B42C0B159E48D025162401A738D85D79B42C00B7A6F0C01516240F2A32B22D49B42C0EB6F09C0FF5062403BA41820D19B42C02D3185BDFF506240DC9BDF30D19B42C00102000000040000002D3185BDFF506240DC9BDF30D19B42C059A725B1FF506240ADE93015D19B42C027744D37FF5062407BE35AA3D49B42C04562821AFE506240158843DBD69B42C001020000000B0000004562821AFE506240158843DBD69B42C0ED7E15E0FB5062404055E0BFD49B42C0B86EEFBFFA506240A654D33FD29B42C0575EF23FF950624011058E5FD39B42C0A74E513FF95062406403E962D39B42C039002C3CF950624022426D65D39B42C08DA262F7F85062409F8B2BD3D49B42C0041E1840F8506240F0355F80D89B42C03B878D0DF8506240857F6CEDD89B42C0E0BDFE7FF75062404F667220DA9B42C04333F4F4F650624017A99C9BDB9B42C00102000000350000004333F4F4F650624017A99C9BDB9B42C0E4FF441BF6506240C48A64D9DD9B42C0B2423635F5506240F3C64961DE9B42C0E1CC0AA0F35062400518963FDF9B42C081BC0D20F250624057C80160E19B42C0266CE45FF050624048BAB07FE89B42C05D8B16A0ED506240100E51E0F89B42C0D81A0060EB5062406ED113E0059C42C03B3A0900E9506240F73361A0109C42C0676902A0E55062406E6704C01D9C42C052DCA799E450624070D014F0219C42C085121C4DE45062404DF4F928239C42C09164B1A8E3506240FF64E7C8259C42C0FA6B68B9E25062407389D981299C42C0ABCC94D6DF506240F9F8DFA52F9C42C09274CDE4DB50624090436914379C42C0029EB470D9506240828F77FD389C42C097491E99D85062400CFDB8A2399C42C01426E71FD8506240950ED6FF399C42C09F038184D75062404DA48F543A9C42C08119F8F6D3506240C977842E3C9C42C0EB54F99ED1506240A68D34023B9C42C0FE55911BCF506240859BE7E3359C42C0D66C8A6CCC506240AD61D0532E9C42C04285D9BACA5062409745178A2A9C42C006E92972C850624074EB353D289C42C0264A8CAFC7506240FED478E9269C42C0C528BE90C45062407D6DA23B2D9C42C0D4EBBBC7BE506240EB556474409C42C08B0CBCA4BB506240F5E681D94E9C42C0D18547D1B95062408EB344C2529C42C025BE24DFB6506240A3C38DA5599C42C074925275B45062400A3AC6BA5D9C42C05A907758B2506240A0DFF76F5E9C42C0058DF4FDAF506240E6F516C5619C42C0081566EBAA506240D29B9B80709C42C02EA4688AA5506240443B5DCC859C42C06FF3C649A150624019575C1C959C42C09AACF6559E506240BBE70A009F9C42C028F5C0229A5062408E9B7521B19C42C0B04C09D2965062406ED5BF35C19C42C0B75D68AE9350624077D66EBBD09C42C098593AD5905062405D5727C2E19C42C0CFA67E398E5062402627C929F09C42C0C194DCBC8C50624096EB23A6FA9C42C0C19A14308B506240DE10F461079D42C09F292AD188506240F4DF394A149D42C0A0B998B08750624028DB1BD71A9D42C099428C7C83506240AC8FE2772E9D42C08E9DA68581506240A56D57433D9D42C02AE4A5F67D5062405930F147519D42C0178B95877B506240D91F8370609D42C0AD6A49477950624055F08057709D42C0010200000003000000AD6A49477950624055F08057709D42C0575EF23F79506240266CE45F709D42C042E504127950624061F426D0719D42C001020000001400000042E504127950624061F426D0719D42C0FDD071DA785062407630BD58739D42C011001C7B765062404767AA71809D42C03521527875506240791AD58E879D42C0D9CAF044755062405494A69C8A9D42C0322DFBBF745062408014D09F919D42C0217DEE5F7450624093D629A09A9D42C00CEDF71F7450624083CB1940AE9D42C0924FD9FA7350624020915B38B59D42C06BB015D973506240BED29E37BA9D42C0577FDF1A7350624083C366DBC49D42C0A8FC10C0725062408712D2BFC99D42C016EF117B72506240CD9EBAA8CC9D42C05E73FD717150624056D3F544D79D42C025242DF07050624031D7FDBEDA9D42C0266CE45F70506240B2D7BB3FDE9D42C0BE535CB06F50624045B9347EE19D42C083B174F46E506240D89AADBCE49D42C0FDB0EFD46D5062402F5E3D38E99D42C04E9702B96C506240E3BD498EEB9D42C00102000000030000004E9702B96C506240E3BD498EEB9D42C0B15EFBB86C506240B7F3588EEB9D42C0A97FE2B66C506240C7B18A92EB9D42C0010200000003000000A97FE2B66C506240C7B18A92EB9D42C0D53A16806B5062406E3B2300EE9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C002E264D16A506240A3BE767AEF9D42C05FD945CF6A506240E4AFAD7EEF9D42C00102000000030000005FD945CF6A506240E4AFAD7EEF9D42C0ACC1A0F169506240C6600F37F19D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C05F5B3FFD675062405A76D20CF39D42C0AF0008F56750624015362214F39D42C0010200000012000000AF0008F56750624015362214F39D42C0F199EC9F67506240E88CDE5FF39D42C0648918C065506240C52CC59FF29D42C0025CDABA65506240AEEAF6A3F29D42C0AE5D7FB765506240846B49A2F29D42C089B08630635062407DEA58A5F49D42C01E8D9EB661506240AAE683AFF99D42C07171546E62506240647DB905019E42C0A44808A062506240A5F04520039E42C0170912806450624013C25900099E42C0AABF14D466506240691D554D109E42C0EC0AC73D6750624033326DA4119E42C0C7A1D9D068506240B3FEE08D169E42C0E7F05A536A50624055C3D9081F9E42C094933FCE6A506240815DA857259E42C0DBFAE93F6B506240CC9A58E02B9E42C0D53A16806B5062401EDE7360399E42C028B284626B50624001BD1ABC409E42C001020000000300000028B284626B50624001BD1ABC409E42C06DDAD6606B506240C1BC1127419E42C0240012606B50624012B85B5B419E42C0010200000005000000240012606B50624012B85B5B419E42C0D81A00606B50624049A01C60419E42C0C66AF3FF6A50624069E21DE0499E42C08E7AE3FF695062402AF40BC0509E42C0B5A91501695062409456D7FC539E42C001020000000E000000B5A91501695062409456D7FC539E42C0A2F4E04966506240279AACF6559E42C0828E56B56450624099E5FC5E549E42C00839EFFF635062400B45BA9F539E42C0EBC6BB236350624041A66BDC519E42C0F2D1E28C61506240E34D7E8B4E9E42C0DE5E2DD25F506240A456F3774A9E42C0BBE70A005F5062403A92CB7F489E42C032970AE05C5062401281EA1F449E42C03B5409055B50624061527C7C429E42C0E6EB8DB55A50624061F65734429E42C0D83274475A5062409723BFD9419E42C04C16F71F595062405620C4DF409E42C0F609A01859506240809F71E1409E42C001020000000C000000F609A01859506240809F71E1409E42C085AD7E11595062406D6292DB409E42C0FDE6B45D57506240E336D032419E42C079DD223056506240F581E49D439E42C0C686133D55506240280D350A499E42C0A2F8E75854506240A8774C384F9E42C013550960545062401950148D5A9E42C01355096054506240E333D93F4F9E42C04E250340555062402E122400499E42C08615134056506240B3C068A0439E42C0D67503605750624032303C40419E42C0F609A01859506240809F71E1409E42C001020000000E000000F609A01859506240809F71E1409E42C02207DB3E5A506240F02609D3419E42C0AB460AC05A50624085701640429E42C05DC0CB0C5B5062409C0E0984429E42C0867E5CD15C5062401281EA1F449E42C058BACCFA5E506240E793707C489E42C01F20A9CF5F506240921914724A9E42C054E8178061506240C0D3BF7F4E9E42C041D3122B63506240B81E85EB519E42C066583101645062400540CBA9539E42C005114EB0645062401C68F459549E42C08DA90540665062408DD5E6FF559E42C03B3A090069506240E7543200549E42C0B5A91501695062409456D7FC539E42C0010200000007000000B5A91501695062409456D7FC539E42C0D923D40C69506240C3DA73F4539E42C0A6D3BA0D6A506240FA6F6FC8509E42C00B3A6B016B506240EC6415DB499E42C0F36ACA5F6B506240449B2D6A419E42C0D81A00606B506240731FCA61419E42C0240012606B50624012B85B5B419E42C0010200000004000000240012606B50624012B85B5B419E42C0BDCA35606B50624014E97E4E419E42C0E749E3616B506240145F48E2409E42C028B284626B50624001BD1ABC409E42C001020000001100000028B284626B50624001BD1ABC409E42C0FDB9C3816B5062404E621058399E42C0AE84494C6B506240E8E115D22B9E42C00E034CCF6A506240CF561465259E42C0A02AF05F6A506240F0879FFF1E9E42C03E1AF3DF68506240D1459E7F169E42C0184D1D9A68506240782EE7AD159E42C0C5991540675062404A743BA0119E42C0C201E3CF665062401B24E93F109E42C08E812B8F645062405A88C4F3089E42C07DD756A262506240D574E217039E42C080A0377062506240C4B30419019E42C069780EC0615062409EAE939FF99D42C0CA880B4063506240006D50A0F49D42C0E70B10BB65506240AEEAF6A3F29D42C007CEBE97675062400C079D6BF39D42C0AF0008F56750624015362214F39D42C0010200000003000000AF0008F56750624015362214F39D42C095FBD3FC675062405A76D20CF39D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C08E7AE3FF695062402B9C4940F19D42C05FD945CF6A506240E4AFAD7EEF9D42C00102000000030000005FD945CF6A506240E4AFAD7EEF9D42C0E7919AD16A5062400EFF9F79EF9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C08A66AF886B5062404FF4650EEE9D42C0A97FE2B66C506240C7B18A92EB9D42C0010200000003000000A97FE2B66C506240C7B18A92EB9D42C0BC7FE2B66C5062409FB18A92EB9D42C04E9702B96C506240E3BD498EEB9D42C00102000000140000004E9702B96C506240E3BD498EEB9D42C0711B0DE06D5062406B1ACA3FE99D42C0C17BFDFF6E5062402B9908C0E49D42C01D739EB16F506240337C5578E19D42C08294336F7050624064DE4F32DE9D42C0ABB420EF70506240D8D3B3C5DA9D42C05B7C0A8071506240D955ED3FD79D42C0AAAEE87B72506240FD2257A0CC9D42C0309B00C372506240C2CE5EC7C99D42C04850FC18735062404835ECF7C49D42C0F75C01E0735062408F4E0240BA9D42C077FF0EFB73506240BB55212FB59D42C006E8082A74506240F4103235AE9D42C0D08C8F60745062400A4F43AF9A9D42C013E63DCE74506240F78CE9AE919D42C029BB4F4475506240B9CFE0A58A9D42C0568D14807550624002A2BB7F879D42C0A7CDEE7F765062402920ED7F809D42C02A5E1BE078506240B3EC4960739D42C042E504127950624061F426D0719D42C001020000000200000042E504127950624061F426D0719D42C0AD6A49477950624055F08057709D42C0010200000024000000AD6A49477950624055F08057709D42C05E3013A081506240E3C9C91F679D42C05F01F15F85506240D746E11F5B9D42C031F20DE0885062402222EB5F489D42C0B9420E008B50624079ED2D40369D42C04473F8FF8C5062404E250340159D42C0B73302E08E506240FCE1E7BF079D42C08FE4F21F9250624013BF1880FC9C42C0756506E0955062400CEDF71FF49C42C088BA0F40AA506240F1C5CD5FD79C42C0D32B0A60AF506240C9213DA0C79C42C05B7C0A80B1506240B63643609B9C42C0EE8B95E2B4506240C89EF3098F9C42C0BB270F0BB550624074E84F768E9C42C0B2AE1B00BB5062402D3E05C0789C42C0EB6F09C0BF5062408C68965F619C42C0D1C1FA3FC7506240F5F53240589C42C068A4EF7FD1506240DC61B8DF469C42C04B451960D5506240DACE08803B9C42C01D818989D75062408F650B523A9C42C0D3646B22D8506240534D5A023A9C42C00EA8925CD95062408FC7670D399C42C0FAA6FADFDB506240B4BD2720379C42C0F5B704E0DF506240E7BB00A02F9C42C0BAB8E8BFE25062404A0A2C80299C42C0D63329AAE3506240EC2708C3259C42C07DC2D9ADE55062401A69A9BC1D9C42C02A14330CE95062405C6F9BA9109C42C0D215116AEB5062408C18D1D1059C42C0EA45FEAAED5062404BCADDE7F89B42C052F98D65F0506240D1419770E89B42C0DAD6602BF2506240F28CC756E19B42C0002BD1A3F3506240E7D0D84DDF9B42C00E547C32F55062401D46F762DE9B42C07CCD1720F65062406B871AE0DD9B42C04333F4F4F650624017A99C9BDB9B42C00102000000090000004333F4F4F650624017A99C9BDB9B42C0289B7285F750624025E7C41EDA9B42C04E098849F85062400E7D1C72D89B42C0CB55E2F0F8506240753A90F5D49B42C08CFE863FF95062406403E962D39B42C026BD14C3FA5062405F8E684CD29B42C0E14625D0FB506240FE9364C2D49B42C01CE3D418FE50624068869EDED69B42C04562821AFE506240158843DBD69B42C00102000000040000004562821AFE506240158843DBD69B42C08D3FF61FFE50624092054CE0D69B42C0DC9FE63FFF50624028E5FF9FD49B42C02D3185BDFF506240DC9BDF30D19B42C001020000000A0000002D3185BDFF506240DC9BDF30D19B42C0086C7308015162408E68F118D49B42C09A000D80025162400936AE7FD79B42C01281EA1F045162402FB72000DD9B42C08641F4FF055162409298FB3FE29B42C0382EE3A606516240724B06DBE39B42C0B1C8659207516240C5579643E69B42C03D9D2B4A0951624000982144E89B42C08152FEFF0951624053AAE91FE99B42C01820D1040A516240946B651DE99B42C00102000000050000001820D1040A516240946B651DE99B42C0A0BEC0070A516240E869C020E99B42C0E2EFCD250B51624048BAB07FE89B42C0CBF21A600B516240304AD05FE89B42C062B933130C51624000BD9EF9E69B42C001020000000300000062B933130C51624000BD9EF9E69B42C029F8B7150C516240723F96F4E69B42C01336CF150C5162401D566AF4E69B42C00102000000040000001336CF150C5162401D566AF4E69B42C035A3D57F0C5162407E63192CE69B42C09C5C9DAD0D516240B6F81400E39B42C01BAA5D670F516240D165B130DD9B42C00102000000040000001BAA5D670F516240D165B130DD9B42C010EF94690F516240AB623B29DD9B42C0DD7305800F516240184740E0DC9B42C0A5AE6B6A0F516240EE23B726DD9B42C001020000000400000073FB9B06FB5262400567953E199D42C06B72E778FB5262406CC8E479159D42C0169F0260FC52624075A334400E9D42C0169F0260FC526240E90E62670A9D42C0010200000006000000169F0260FC526240E90E62670A9D42C0525B8F67FC5262404FB2309F079D42C0383C73C5FB5262400633011A009D42C071AB2006FA526240AB76F28EF89C42C0E5A210B7F9526240E08FEC5BF79C42C0579710B7F9526240AD61EC5BF79C42C0010200000002000000579710B7F9526240AD61EC5BF79C42C09FD236B6F9526240C0AB8558F79C42C00102000000180000009FD236B6F9526240C0AB8558F79C42C0F54DF5BFF7526240B5FB5580EF9C42C0CF9AC4C5F65262409FC5F76AEC9C42C01AB7E22CF6526240D0C59569EA9C42C0C8DB0022F3526240840CE4D9E59C42C0E4C40DAEEF52624081334289E09C42C0A026440AEF526240F7C500E4DF9C42C0287BF07FEC5262405F97E13FDD9C42C0121A1C80E852624052A7A89FDC9C42C0CE4AA47EE8526240E8667FA0DC9C42C09CDB847BE5526240B4A1AC29DA9C42C0DCAEE133E3526240993E856DD59C42C06BCB25FAE15262401EB97F76D19C42C03953324AE1526240B2B15C80C79C42C0E5F27A8BE2526240D18547D1B99C42C07F52488DE4526240AA80D657B29C42C0235D33F9E65262408C721F6FA89C42C010178046E9526240B4249B06A09C42C051F70148ED526240186BC9F4959C42C0DD297865F2526240D5D6E3198F9C42C0819B2045F8526240B95917128B9C42C0BAB59613FE52624090566B17899C42C0EE4FF39FFF52624002124DA0889C42C0B4E186C20253624073FA6E54899C42C0010200000003000000B4E186C20253624073FA6E54899C42C0770778D20253624055F60258899C42C032B540D70253624065632B59899C42C001020000000500000032B540D70253624065632B59899C42C0FCED57A604536240D1FD41C9899C42C069CB14CE095362403605323B8B9C42C01A530B800C536240D6E253008C9C42C01D5B0BC90D53624083D659A48C9C42C00102000000030000001D5B0BC90D53624083D659A48C9C42C0938ECDE90D536240D6C8AEB48C9C42C07DFCE9F90D536240AEAFF2BC8C9C42C001020000000F0000007DFCE9F90D536240AEAFF2BC8C9C42C0DFEB5A31125362405C30B8E68E9C42C0102D681015536240F1A19F04919C42C028CA4A38195362406C216D88969C42C0D19D16721B536240CE3CCAD2989C42C03B037EE81D5362403ABF72CE999C42C0DCFF6C5020536240ED69E278999C42C09E5DBEF5215362404DEE1C6F979C42C0CA856F0624536240E0505326909C42C0B700D99024536240373FB445889C42C023168CA5235362405B40683D7C9C42C05F62878C22536240C6B99745729C42C093A1CFEC1F536240F4763A46689C42C08284CDA51D5362404BBB873A629C42C0D7E7209E1B5362406D0CF093599C42C0010200000013000000D7E7209E1B5362406D0CF093599C42C0E61604A01B5362407916CE7F599C42C05EC6038019536240B45318004F9C42C0F8D51C20185362402A615C60459C42C01EC6A4BF1753624025F213BD429C42C089658E4017536240AAF644323F9C42C0242A54371753624010F0FF3E3E9C42C0C3C5F6FF16536240D81D41E0379C42C08C2E6F0E17536240270FB0FB339C42C02721472917536240B8AD2D3C2F9C42C079D1B249195362404BE88942269C42C0AD93E9861C5362403868AF3E1E9C42C073C57BC41E536240EE2AFFB5179C42C0405E59B31F53624019E42EC2149C42C05AA8EB3F21536240D4D347E00F9C42C0B6F8140023536240E822CF3F0B9C42C01518570123536240412619390B9C42C059E7CE02235362405A68E7340B9C42C067919A532353624047F40262099C42C001020000000300000067919A532353624047F40262099C42C0473426692353624078CF81E5089C42C05570EB7223536240D1AE8EAD089C42C00102000000040000005570EB7223536240D1AE8EAD089C42C01AE9FB5F24536240D3D00660039C42C055B9F53F25536240FC4E3860FC9B42C0A2FEEF7325536240734F8D6AF89B42C0010200000003000000A2FEEF7325536240734F8D6AF89B42C046CF2D74255362402CCBD765F89B42C055733674255362408FF14B65F89B42C001020000000300000055733674255362408FF14B65F89B42C0F451FCCE2553624095A828A8F29B42C06903899225536240E136F4D0EA9B42C00102000000030000006903899225536240E136F4D0EA9B42C034C0609225536240D554BBCBEA9B42C028C8389225536240B1B2DCC4EA9B42C001020000000300000028C8389225536240B1B2DCC4EA9B42C06A49EC7F255362400CEAB69FE79B42C06A49EC7F25536240B5824B6CE39B42C00102000000080000006A49EC7F25536240B5824B6CE39B42C031B2648E25536240F60604DFD99B42C0E3B55C472653624031D4BC3ECE9B42C0B76DCE7726536240B5EC5A8CCB9B42C0B4E908E026536240CAB1AB7FC69B42C01FFC1FBB26536240988EEF41BE9B42C04864C4AA26536240BA49B148B89B42C033824391265362403ADE5C8CB29B42C001020000000300000033824391265362403ADE5C8CB29B42C00D912E9126536240CE28A787B29B42C014C1199126536240AA35997FB29B42C001020000000400000014C1199126536240AA35997FB29B42C0A239FC7F26536240013BEDDFAB9B42C0676902A025536240BE0864C0A39B42C068DD7F43235362408F003EB19D9B42C001020000000300000068DD7F43235362408F003EB19D9B42C09CFB613A235362407A5AD9999D9B42C08042BB382353624093B483959D9B42C00102000000060000008042BB382353624093B483959D9B42C08C344CC822536240EC2F606E9C9B42C0A72E2AF320536240F98D65B0989B42C00A48FB1F205362408F256200979B42C07F1711201E53624021E4BCFF8F9B42C02B15B7931D536240D293414A899B42C00102000000030000002B15B7931D536240D293414A899B42C0EB9FF18E1D536240549ADE0F899B42C0C2BA9F8C1D536240069CD0F2889B42C0010200000019000000C2BA9F8C1D536240069CD0F2889B42C03C061A221D5362409382B8BC839B42C01AF67B621D5362400F817E3A799B42C00BF5AA841D536240224ECC1F789B42C094A707601E53624077ACBE5F719B42C05A07ACC120536240AE122C0E679B42C0D7C633C321536240CDF5C7C5629B42C04AE9995E2253624058EB7A585E9B42C0EFC80EE0235362400B45BA9F539B42C052D90B6025536240CEE11060479B42C06A183E2226536240F2D654713E9B42C0CFC6A58526536240EE3F321D3A9B42C0E3288AA12653624026378AAC359B42C0B4E908E0265362407C9BB45F2D9B42C05DC6A8C62653624045813E91279B42C016D22BAF2653624032EDF6B41E9B42C0EC246C8926536240BFE61C3C139B42C0A239FC7F26536240A583F57F0E9B42C08D92FC2D26536240DC60A8C30A9B42C0C9C452C92553624086E5CFB7059B42C0A725564623536240466A46ABFF9A42C0CD960744235362401EEB98A9FF9A42C0CA880B4023536240B9AF5EA0FF9A42C0E407F87F1F53624066FFF27FFD9A42C002EBBBE31D536240DA0DCFDAFC9A42C001020000000300000002EBBBE31D536240DA0DCFDAFC9A42C0EE0912DB1D5362408B9356D7FC9A42C02A3B08DB1D536240257A52D7FC9A42C00102000000240000002A3B08DB1D536240257A52D7FC9A42C0B75384E519536240EFA6B62FFB9A42C0EF33D362155362409320B7BAF79A42C0BB46263B1153624019A1E936F29A42C00D4059E70E536240D26AED22F19A42C005C314400C536240FC4BF7DFEF9A42C0C286A7570A536240FDDB65BFEE9A42C061DBA2CC06536240DAAF9696EC9A42C058C9C7EE025362403B2064B4E99A42C0F4F8BD4DFF5262400E38A682E59A42C052F932ACFD526240DCB28D89DE9A42C01A6B7F67FB52624035C703DBD29A42C02D697BAAF9526240E269430FC69A42C036AD1402F95262400F153EB6C09A42C02D3E05C0F85262409FEF0280BE9A42C007FE0120F8526240311BAE1FAC9A42C0915D0E60F65262406C58F89FA19A42C0D11CFE3FF352624005C655C0989A42C0EC55BF2DF35262403B21CF89989A42C04F47B6A9F0526240E569AFF4909A42C0773469AEEE526240AD557199899A42C0B0164449ED52624034C86EB0819A42C0106734A8EC526240A5D0C31A789A42C09348EC24EC526240159161156F9A42C01CE7DB27EC526240ADB0CF52689A42C0E643ABEEEC5262402E6695E35F9A42C0D4A46F2DEE526240FD42D9A5579A42C08297CFA8EF526240D28668194E9A42C084E4AE6FF1526240F581E49D439A42C0D4B7CCE9F25262401BB226BB3E9A42C00CEDF71FF4526240D0DECFDF3A9A42C0AC826275F552624039D6C56D349A42C0C908032AF75262403693CA6F2C9A42C081C6962FF95262408625D4C21B9A42C026E88AADFB526240729648580A9A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000003000000A05FB9A5FC526240FCFCF6B4029A42C007CC43A6FC5262405268B4B0029A42C0A36B13A8FC526240F9A11DA3029A42C0010200000003000000A36B13A8FC526240F9A11DA3029A42C0554FE61FFD526240C52F0620FF9942C0D41F065FFD52624090508E5DFD9942C0010200000011000000D41F065FFD52624090508E5DFD9942C0C2C8810DFE526240C847E6ECF89942C01B6A6F4BFF5262404EB4AB90F29942C0C4FBBB880053624062314514EE9942C0387A466C01536240BFD6A546E89942C0F6B8CA6E015362407A0E76D4E29942C0F47F5880005362404CF8A57EDE9942C06616FC91FD526240944E7F51DD9942C0274D83A2F9526240C8DF0731E19942C0704D70A0F6526240FC427EECE49942C06A1D0BC0F5526240AEB9A3FFE59942C06B65C22FF5526240317E1AF7E69942C0D1EEEB1BF35262401DBF0177EA9942C046A7F809F15262407A4501ECED9942C0F96B0D00F0526240CD6B36A0EF9942C0A7FD20DCEE5262401EDA22C4F09942C0608A808AEE5262406DD76815F19942C0010200000002000000608A808AEE5262406DD76815F19942C07BB8027DEE526240B6B5D722F19942C001020000000A0000007BB8027DEE526240B6B5D722F19942C0008E3D7BEE526240FBE99A24F19942C00F4D8F5CED526240BE9D9F3DF29942C0D5207134EC52624037D43950F19942C0BA63B14DEA5262400E5BC4C1EF9942C04273428DE7526240EC489AE4EC9942C04B862D87E75262403F47F5E7EC9942C0DA290C80E7526240048B68E0EC9942C0676902A0E55262403F5B62C0ED9942C09B6053AFE3526240964FD5C0F19942C00102000000030000009B6053AFE3526240964FD5C0F19942C0417452A9E3526240D75537CDF19942C0927F37A7E3526240AC7128D1F19942C0010200000007000000927F37A7E3526240AC7128D1F19942C02C29779FE3526240A2CCABDFF19942C07A281B20E2526240DD9CA5BFF29942C02DA814E0E052624073ECEA9FF19942C0E1247266E0526240CBD58F4DF29942C043B40C27DF5262409574DE10F49942C09737634FDB5262408DBADC19F79942C00102000000030000009737634FDB5262408DBADC19F79942C0D75DEA31DB5262403A652431F79942C07D879512DB526240FAED9149F79942C00102000000080000007D879512DB526240FAED9149F79942C0388600E0D8526240277E3100F99942C0ACC8433AD752624027367A90F99942C0B771D586D4526240B504CF73FA9942C011D77B3BD3526240A2C7EF6DFA9942C08B040940D2526240C10EAD5FFA9942C05803EF3FCD526240277E3100F99942C046820420C9526240186D9F9FF39942C001020000000200000046820420C9526240186D9F9FF39942C0D57036C2C7526240A85BD141F29942C0010200000005000000D57036C2C7526240A85BD141F29942C071AE6186C65262408F7B5F01F19942C0251D8AA7C3526240FDC1C073EF9942C009FCE1E7BF526240398ABD61EC9942C00A8F5209BF52624017BA7889EB9942C00102000000030000000A8F5209BF52624017BA7889EB9942C081327CFABE52624058BD0D7BEB9942C00725EAE8BE52624076FD7669EB9942C001020000000A0000000725EAE8BE52624076FD7669EB9942C02B2FF99FBC52624053AAE91FE99942C08C6E1860BA526240142928A0E49942C007FE0120B85262407707C25FDD9942C08D77EC0CB852624018755204DD9942C0EAA5738FB6526240875DCAAFD59942C09149A187B5526240F6A79E16CD9942C05C4DE83FB5526240C2E2CB9FCA9942C01D9D0480B4526240CD3F55E0BF9942C01D9D0480B452624013DD6921B79942C001020000000F0000001D9D0480B452624013DD6921B79942C0F72B5382B45262406A0712CAB19942C091D6732DB5526240834CD7B8A39942C07610E099B55262404533AA679C9942C0F66DD27EB552624096027745959942C05F5BE443B5526240265305A3929942C0BB1006F9B4526240B583B641929942C01853FA53B45262403EDD8A0E929942C0BCB77DEAB35262405B66C7FC929942C07702AB34B35262402A60F18A969942C0B0822914B3526240B678C25C9C9942C0A54DD53DB25262407B832F4CA69942C0B365AF2DB252624063F9A9E0A69942C05E5CF45FB152624053EB5800AE9942C095804EF7B0526240DB807456B09942C001020000000400000095804EF7B0526240DB807456B09942C02891E975B05262405768D608B39942C0A68AF381AE526240E545DC52BD9942C01CDD9867AE526240774A0AF5BD9942C00102000000030000001CDD9867AE526240774A0AF5BD9942C04238B066AE5262402DF2A1FABD9942C0208BE95DAE526240E9112D30BE9942C001020000001B000000208BE95DAE526240E9112D30BE9942C04BDB0940AD52624018B14F00C59942C0FB7A1920AC526240FD2257A0CC9942C0ECAAF69FAB52624024343800D19942C034153D4BAB526240632BC313D59942C0016C9B3DAB526240335F6FACD59942C0F02EBC37AB52624074345882D69942C0C66AF3FFAA52624052A7A89FDC9942C013EBF93FAC526240828AAA5FE99942C01C125212AD526240E6852AEBED9942C01EBEF15AAE5262406532C115F59942C0ED1C14DEAF526240DE077B6EFC9942C081EDBB7DB15262400E959059079A42C0CC1D47BDB1526240FC993050089A42C0EE04FBAFB35262404B4C61EF0F9A42C040A49531B4526240080FE4EA119A42C0217DEE5FB45262409DB415A0129A42C07FAD0100B652624032970AE01C9A42C0E39DE85FB75262405DC94400269A42C018AE0E80B8526240364B13002D9A42C0922EEC1FBA526240F3AB3940309A42C02E0FE37FBC52624046EC1340319A42C013BF1880BC52624046EC1340319A42C003E0E9DFBF5262400B1C1A60309A42C0A344A6D7C15262406B589DE62E9A42C09DE0F65FC2526240D009A1832E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000053000000E98E0FC4C3526240E24680892E9A42C09A36E334C45262405F06088B2F9A42C0D11B936AC4526240D4085806309A42C049E4277AC55262401C0B0A83329A42C05FB939F0C552624066F2CD36379A42C05F5A796EC65262401CB85E2E3D9A42C094111780C65262408D3FF61F3E9A42C098F10060C65262406110FD7F419A42C0748E4B66C6526240A2410A9E429A42C053399270C652624082BA922E479A42C0ACAF09C4C6526240C15B316D499A42C0C111EEDFC6526240C8A29F5F4A9A42C0E751F17FC75262409CE337E04E9A42C0F901FEDFC752624026D6F37F589A42C0DEB133E0C7526240BB95CA80589A42C0E1911DC0C75262407D51CC8B5D9A42C0B8150CF8C65262404184132C699A42C065BE28E6C552624071A7CF69719A42C095174FF3C4526240F211E797779A42C01661D4FFC3526240959460167F9A42C010035DFBC2526240C4BF19468B9A42C058288870C2526240FC71FBE5939A42C085E6DFD3C152624053B4CDE8A29A42C0C1D31A39C15262408946D2C9AD9A42C0BB44F5D6C0526240A8120AB6B69A42C0A9F00CBFC05262407E8D2441B89A42C053CDACA5C0526240593B40E6B99A42C033D7B331C052624068EA758BC09A42C0CCE33098BF5262409FE40E9BC89A42C0B323D577BE526240665710B9CF9A42C08D11E4FBBD526240D590B8C7D29A42C066FFF27FBD5262407B25DA9FD59A42C0DF57F66EBD526240B094C041D69A42C07FA31D37BC526240CABD65F3DD9A42C0D3A7B0ADBA526240D2F1E20EE59A42C0E089B4E8B85262406AE67FA8EA9A42C03C4272D7B752624078F1D995F19A42C0C6CCF401B7526240F783CB74F99A42C01FCDA2C1B7526240D67A1A8B019B42C0E0A0BDFAB85262405070B1A2069B42C0001E51A1BA5262405890C1E50C9B42C0ED7E15E0BB526240B524F6BF129B42C0169F0260BC526240C3C5F6FF169B42C040BFEFDFBC5262400447B87F1B9B42C0A0CFEC5FBE52624013584AE0209B42C072906B9EBE5262406BB180AE229B42C0A7A32DF8BE5262403AC54F88259B42C006F1811DBF5262403C4ACA822E9B42C0C52F0620BF526240A06B5F402F9B42C0ADED3724BF526240E7A15B54309B42C00F327F3BBF5262407286E28E379B42C0FA87E3AFBF526240B177352F3D9B42C0EB6F09C0BF52624075CF15003E9B42C011B00C60C0526240EF906280449B42C049A01C60C15262400ED363004D9B42C05E3013A0C152624034E44460519B42C05E3013A0C1526240B4E6C75F5A9B42C03CF262BCC1526240ACE9D55B5E9B42C0C1A26CDBC1526240B56B425A639B42C073C009E0C15262402A3410CB669B42C073C009E0C1526240CF7A42C06B9B42C049A01C60C1526240849CF7FF719B42C03BD0F9DFC05262402D3E05C0789B42C01490F63FC05262405900AEBF809B42C000000000C05262402D414640859B42C003E0E9DFBF5262408F2221808A9B42C000000000C05262402DD4F59F909B42C011B00C60C052624015F7C4DF9B9B42C0CDF79D70C0526240AF9BAD179E9B42C0A994E876C0526240F6132928A09B42C0B2A7D370C052624072BF4351A09B42C0DC9FE63FBF5262401DC9E53FA49B42C05DE6CF12BF526240A04BDD3AA49B42C05491651CBE52624063613E0FA49B42C00417D0B0BD5262400573AA6BA39B42C03AFF1B20BD526240A728F27FA29B42C0DEAEF25FBB52624040964FA0999B42C007FE0120B8526240E613C31F8F9B42C07EECE4C2B752624088F71C588E9B42C02A39DD68B652624012B985538B9B42C0D4FCE71FB352624055E2957F889B42C0EA9BEA7FAF526240FEF0F3DF839B42C0593F0B9EAD5262409DE4954F809B42C001020000006E000000E23362A581526240000000E04F9D42C0C30C8D2782526240C0153F7C4F9D42C072A02C2184526240A891F1834E9D42C0C1E677F5855262406083CF204F9D42C09CF0B7E287526240DBFF5B24489D42C0E412471E88526240FEB220393E9D42C0430477FB8752624031F378B5379D42C0853BBC8C875262408D3CB59F319D42C0C4398F2F86526240076B52C02C9D42C088552877845262400392B06F279D42C0BB0166BE835262400B896A00259D42C09F477B728352624030E186CE219D42C081D2AB5C83526240BA5A385A1F9D42C03A0C416983526240BC440603199D42C0E946585484526240755B7DD00E9D42C0DC0BCC0A85526240D2EC702A089D42C04DD87E3286526240339C7CC4F99C42C0447DDCC8865262407BE9DCA3ED9C42C008371955865262409663682BE59C42C056BD570886526240128A085ADC9C42C021938C9C855262408CA438A2D69C42C0C4AF58C385526240D634947FD29C42C02B4CDF6B88526240B3D771B2C39C42C071659AFA8A526240D6E65A0FBA9C42C02640A8E68D52624058F047F6AD9C42C08CD99255915262402F7C8ED9A39C42C033A7261C95526240F7C374C69C9C42C02971C2299852624022F36D66999C42C0BC7DB1529C526240A8E96976939C42C0317491E79F52624064DFBA078D9C42C00CC050D1A25262404527F0F3849C42C099B3E32BA65262400A26A36F779C42C0B98C9B1AA8526240E65AB4006D9C42C00B57AC86A952624043064DA6659C42C0B1A94E62AB526240827E95325F9C42C0486E4DBAAD526240793073CB589C42C0163A6524B1526240E2A9A2D34E9C42C089E0C9B8B35262405FFE5426469C42C0C776082DB5526240DC8C89833A9C42C0F0DB10E3B552624092DF47DA329C42C0DB8D999FB6526240B926EEC2209C42C0A3F611AEB6526240ED7DAA0A0D9C42C01CBFA6BDB7526240711706D1FF9B42C04877C6ADB852624036864A6DF39B42C030044A54B95262409F55664AEB9B42C0F45B2A25BA5262404C0C1357DF9B42C09D6340F6BA5262405D3A41F6D59B42C0A09F4E1EBB526240C2EB4493D59B42C0DE639FB6BC526240298F13CBD29B42C004FD2A65BE526240AAE8B413CA9B42C0A7751BD4BE52624085CFD6C1C19B42C08A2E5EE2BE526240A01518B2BA9B42C089CF9D60BF52624033E8DF89B49B42C0A31CCC26C0526240951C661EAF9B42C0D743FB58C15262402CC0D254AA9B42C076FC1708C2526240586BCDFBA49B42C095C4FE57C2526240A83462669F9B42C06D2E4844C252624033B44B659B9B42C0C4B068DFC1526240579B5A11909B42C037ED73C6C1526240E8537D9D8A9B42C017AFC3E2C1526240201DC308869B42C05BC3561AC2526240466172FE819B42C0D8F8A7AFC2526240C1C991297A9B42C04C040539C3526240BF243A70739B42C054CF38C3C3526240E09D7C7A6C9B42C09C95A3B6C3526240B50F1E12639B42C072D1DA7EC3526240EF46301F5A9B42C075DFD682C352624071E888D7509B42C016647039C3526240569F06674B9B42C0DB4E5B23C2526240EA077591429B42C0ACFB6C89C152624088E41A553C9B42C0F7459D14C1526240CC75BFAF369B42C035E213FCC0526240EE08A7052F9B42C0B528FDCEC05262407CE82741249B42C01B50CAFFBF526240A3F08FAD1D9B42C039F9E3ACBE5262409E877F7D199B42C0343CAC26BE5262407E4D7BEF149B42C08A79B18BBD5262400F90D4E70F9B42C02D9CB525BC526240D18A146F099B42C035D5EEB2BA526240D4884FF0039B42C0B58E05E0BA526240929B3CC0EE9A42C0ACD73E2EBB526240F810F9D3EB9A42C033A1A41BBC5262400C885AE4E89A42C01C87B0D0BD5262407BB889FFE09A42C0FD1F1620C05262408E401768D29A42C06D03D259C1526240519DB3AACA9A42C0CFFF6101C2526240B48185DDC19A42C07BD058A0C2526240C50BD8C4B89A42C055E9DD0EC35262407D5061B6AE9A42C0E35B0EAAC3526240CA4054D0A39A42C0AA65C636C45262400CBD0F51969A42C0F6211400C8526240B37CB83F729A42C0DF8211A0CB526240DF180280639A42C0F885FCD8C9526240E07261495E9A42C0E603029DC9526240CA4A38995D9A42C0FE73E2BCC9526240850C3F93589A42C0C3A04CA3C95262400C231862509A42C08B57B494C7526240D79FC4E74E9A42C0171E45E7C6526240F2214D614A9A42C0750F75C4C6526240165A8C70499A42C094111780C6526240A0015020479A42C0748E4B66C652624091042B98429A42C09AFFFC63C6526240858ABB8B419A42C0E80F7283C6526240AFB9B42B3E9A42C0440AAF6EC6526240DBF6E2303D9A42C08641F4FFC5526240CC2D0840379A42C05C210780C5526240C80CAF7F329A42C03C5CBC69C452624017CAD303309A42C0B5FC76C8C3526240E24680892E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000019000000E98E0FC4C3526240E24680892E9A42C0E68013C0C35262407D0B46802E9A42C09DE0F65FC25262407D0B46802E9A42C0E40522D5C152624094D74AE82E9A42C027439FD9BF526240CF5F8D58309A42C073DE5A81BC52624034AF343A319A42C0DC195C29BA5262405EEC623F309A42C0F54A5986B8526240DD47C9062D9A42C0D277126CB7526240D4415E0F269A42C0BA698E07B6526240389CF9D51C9A42C05C397B67B45262402C6FFDAA129A42C0B1E485CFB1526240D276A796089A42C05B7C0A80B1526240B5914660079A42C0FC4BF7DFAF526240FC4E3860FC9942C09B3BFA5FAE5262405F2DD21FF59942C012E85D06AD52624062A70EA8ED9942C066E95443AC52624053060E68E99942C0F913950DAB5262402A28FB9DDC9942C00A7F8637AB52624003EF3F8DD69942C0DBFAE93FAB5262407B25DA9FD59942C0FE74A84BAB5262407B6D910FD59942C08786C5A8AB526240CF35DDFCD09942C09F69D322AC5262404A1CC3ADCC9942C09ED96443AD52624018B14F00C59942C0208BE95DAE526240E9112D30BE9942C0010200000003000000208BE95DAE526240E9112D30BE9942C04B4B9B60AE526240C2DF8A1FBE9942C01CDD9867AE526240774A0AF5BD9942C00102000000040000001CDD9867AE526240774A0AF5BD9942C0985B1080AE526240343F4860BD9942C0228CFA7FB052624086EC7200B39942C095804EF7B0526240DB807456B09942C001020000000800000095804EF7B0526240DB807456B09942C02ED85768B1526240D56D50FBAD9942C01FA6D82CB252624034750DE9A69942C0992CEE3FB2526240C3499A3FA69942C044DD0720B55262407B6649809A9942C044DD0720B5526240BE0864C0A39942C01D9D0480B45262406F0C01C0B19942C01D9D0480B452624013DD6921B79942C001020000000A0000001D9D0480B452624013DD6921B79942C0003F3E7CB452624037807EDFBF9942C0DFCFDF3AB55262405DA79196CA9942C0E1390087B5526240792A9611CD9942C0A7CDEE7FB65262407B25DA9FD59942C057D7570DB8526240D6B3D606DD9942C04BCD7921B85262407102D369DD9942C01A12F758BA5262401A2E1796E49942C064C68091BC5262407D299721E99942C00725EAE8BE52624076FD7669EB9942C00102000000030000000725EAE8BE52624076FD7669EB9942C08C5363F8BE526240997E8978EB9942C00A8F5209BF52624017BA7889EB9942C00102000000050000000A8F5209BF52624017BA7889EB9942C003E0E9DFBF526240100B1060EC9942C0E960FD9FC3526240B5FB5580EF9942C094111780C652624067FCB1FFF09942C0D57036C2C7526240A85BD141F29942C0010200000009000000D57036C2C7526240A85BD141F29942C0C50D0929C9526240FA25E2ADF39942C0F0B9B832CD52624051FDDE01F99942C078DE324CD2526240BB09BE69FA9942C061C7DA3AD3526240A2C7EF6DFA9942C02BC5E97FD45262406E3E6480FA9942C0BE1C2C52D7526240EB79ED88F99942C0F3B688DED8526240CE7AE706F99942C07D879512DB526240FAED9149F79942C00102000000030000007D879512DB526240FAED9149F79942C0191F662FDB52624064E4D132F79942C09737634FDB5262408DBADC19F79942C00102000000090000009737634FDB5262408DBADC19F79942C0D257EB1FDF5262400CEDF71FF49942C0AE92D96AE0526240B898B047F29942C07B8A77DBE052624043684EA8F19942C04B8D7516E2526240BF55E8CDF29942C0539A289DE35262401F4AB4E4F19942C04779419FE3526240378C82E0F19942C0DC3818A0E3526240A2CCABDFF19942C0927F37A7E3526240AC7128D1F19942C0010200000003000000927F37A7E3526240AC7128D1F19942C050A335ABE3526240EF9705C9F19942C09B6053AFE3526240964FD5C0F19942C00102000000090000009B6053AFE3526240964FD5C0F19942C03AF361ACE552624061D520CCED9942C066D6F786E75262403F47F5E7EC9942C088BA0F40EA526240E3DB16C0EF9942C0DD4A6540EC52624031CF4A5AF19942C0A1FE6959ED5262407EDC2340F29942C02A9D595CED526240BE9D9F3DF29942C0634BEA5FED5262407EDC2340F29942C07BB8027DEE526240B6B5D722F19942C00102000000030000007BB8027DEE526240B6B5D722F19942C0B7C7D287EE52624043B00518F19942C0608A808AEE5262406DD76815F19942C0010200000010000000608A808AEE5262406DD76815F19942C0058DF4FDEF5262405B261EABEF9942C007DD6FFEF0526240D87B4CFFED9942C0D4FCE71FF352624082FA3B80EA9942C0B2423635F5526240CB42E0EDE69942C0AFEC82C1F5526240D7385101E69942C0E1928895F6526240493CEAF9E49942C0680EFF9FF95262403F582140E19942C0631F09A0FD5262407707C25FDD9942C02920ED7F0053624076775380DE9942C065F0E65F015362409E8834E0E29942C065F0E65F0153624018DAEF3FE89942C02920ED7F0053624086AB0320EE9942C0DC9FE63FFF526240C52CC59FF29942C075CF1500FE526240100E51E0F89942C0D41F065FFD52624090508E5DFD9942C0010200000003000000D41F065FFD52624090508E5DFD9942C0F121A81AFD52624048B2FD1AFF9942C0A36B13A8FC526240F9A11DA3029A42C0010200000003000000A36B13A8FC526240F9A11DA3029A42C067EB85A7FC526240ED2C7AA7029A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000025000000A05FB9A5FC526240FCFCF6B4029A42C0F33EE99FFB526240AD52D55F0A9A42C03FEE1120F9526240C8E64FC01B9A42C0CF0DF21FF75262402B5BDA5F2C9A42C032135674F5526240B653CE72349A42C071112917F45262406BA395D63A9A42C078A686ECF2526240B676ECB13E9A42C05E5CF45FF1526240B3C068A0439A42C0E7BB00A0EF52624079831E204E9A42C086AB0320EE526240EB05FA9F579A42C0392BFDDFEC526240DB673AE05F9A42C016CBE31FEC526240FAA93B60689A42C016CBE31FEC526240A34B49206F9A42C0249B06A0EC526240224ECC1F789A42C04BDB0940ED5262403F005FC0819A42C0AECBF09FEE526240545227A0899A42C01FAC10A0F052624009E46D00919A42C0FC929E33F35262400598439C989A42C0394F2B3BF3526240B8CCE9B2989A42C00EC40D53F6526240B31E6393A19A42C075351E11F85262409C5BD71EAC9A42C06FFF80BDF85262406F6B6688BE9A42C0A1ED3D01F9526240681888AFC09A42C0680EFF9FF95262406BF12900C69A42C0DEAEF25FFB526240B2440CE0D29A42C0631F09A0FD52624076775380DE9A42C0DC9FE63FFF5262404FF92180E59A42C0ABB019E0025362405E9A22C0E99A42C0A9A10DC0065362403FEBD09FEC9A42C0F7263C570A536240FDDB65BFEE9A42C0EF13515D0A53624050DAC0C2EE9A42C0A99AC5300C536240FC4BF7DFEF9A42C001F15FC50E536240C632FD12F19A42C05314F93F115362407EDC2340F29A42C04B45196015536240109EBFBFF79A42C0707610E019536240FCDEA63FFB9A42C02A3B08DB1D536240257A52D7FC9A42C00102000000030000002A3B08DB1D536240257A52D7FC9A42C0BE8575E31D536240DE91B1DAFC9A42C002EBBBE31D536240DA0DCFDAFC9A42C001020000001700000002EBBBE31D536240DA0DCFDAFC9A42C0DBF40C861F53624061FA038AFD9A42C0E8E6D143235362401EEB98A9FF9A42C0648918C025536240566133C0059B42C00702092F26536240959A3DD00A9B42C0AB4CE77926536240873C388E0E9B42C0077536892653624020EF552B139B42C09F5912A026536240C0A7DEBF1E9B42C05DC6A8C626536240987F9994279B42C0BAEEF7D526536240FF1DAC5A2D9B42C0AD88F5A1265362405BC0159A359B42C0A239FC7F26536240AC7EB61F3A9B42C05AE95A2026536240E6CC76853E9B42C07F4FAC5325536240881BA66C479B42C056ED3FD723536240F907DB99539B42C05D26796422536240B2C0B22D5E9B42C069780EC021536240BAB8E8BF629B42C0755776C12053624042D2020F679B42C07F5C2C561E53624090EE8C5B719B42C06B14ED851D5362409393E414789B42C05CB7F75F1D53624021BE5D40799B42C0472701201D536240E68013C0839B42C0C2BA9F8C1D536240069CD0F2889B42C0010200000003000000C2BA9F8C1D536240069CD0F2889B42C0A9DE75911D536240438B112E899B42C02B15B7931D536240D293414A899B42C00102000000060000002B15B7931D536240D293414A899B42C061B94A1C1E53624027E9ABF58F9B42C01F7CCD172053624083ED71F0969B42C09CB11EAD205362402355CA21989B42C0BAB8E8BF2253624009771D609C9B42C08042BB382353624093B483959D9B42C00102000000030000008042BB382353624093B483959D9B42C029A84D4123536240AF1177AB9D9B42C068DD7F43235362408F003EB19D9B42C001020000000400000068DD7F43235362408F003EB19D9B42C06D6EF195255362407542F9CCA39B42C0B45FD27326536240543948E3AB9B42C014C1199126536240AA35997FB29B42C001020000000300000014C1199126536240AA35997FB29B42C00D912E91265362407B2A4C84B29B42C033824391265362403ADE5C8CB29B42C001020000000800000033824391265362403ADE5C8CB29B42C09F5912A026536240E9CD4D40B89B42C01FFC1FBB26536240690A534ABE9B42C0D130C6D126536240AC6AEE8DC69B42C04A2DA5782653624092729C80CB9B42C08DA9054026536240C693933FCE9B42C06A49EC7F2553624089C6DADFD99B42C06A49EC7F25536240B5824B6CE39B42C00102000000030000006A49EC7F25536240B5824B6CE39B42C08CACA1792553624054B02193E79B42C028C8389225536240B1B2DCC4EA9B42C001020000000300000028C8389225536240B1B2DCC4EA9B42C034C0609225536240AAD50DCAEA9B42C06903899225536240E136F4D0EA9B42C00102000000030000006903899225536240E136F4D0EA9B42C0648918C025536240C52CC59FF29B42C055733674255362408FF14B65F89B42C001020000000300000055733674255362408FF14B65F89B42C0611FF873255362401689096AF89B42C0A2FEEF7325536240734F8D6AF89B42C0010200000004000000A2FEEF7325536240734F8D6AF89B42C0E14ED83425536240618A7269FC9B42C04E89905F245362400455A357039C42C05570EB7223536240D1AE8EAD089C42C00102000000030000005570EB7223536240D1AE8EAD089C42C080E2B66C2353624084D95FD1089C42C067919A532353624047F40262099C42C001020000001200000067919A532353624047F40262099C42C093FF7F52235362402B8E5E68099C42C02E68210123536240D7E5EF390B9C42C015D9733E21536240AA549ADE0F9C42C013FFC1D11F5362403DD4B661149C42C0A65714C01E536240E82510C0179C42C021E7FD7F1C53624061E75C401E9C42C049360D40195362408DA90540269C42C0C0E50C2017536240A06B5F402F9C42C0A77E390E17536240210AC105349C42C06EB99FF816536240AE9E93DE379C42C08F6A7D36175362405DBB59283E9C42C0D955ED3F17536240F7EFB03F3F9C42C02CF587C11753624072EB7FCA429C42C06516461F18536240651DE967459C42C01FFC7A74195362404813EF004F9C42C0ACF545421B536240EB8F300C589C42C0D7E7209E1B5362406D0CF093599C42C0010200000006000000D7E7209E1B5362406D0CF093599C42C026D6F37F1853624074FE37407A9C42C0F8D51C20185362405C210780859C42C05105ED1F15536240742497FF909C42C08B04094012536240B73302E08E9C42C07DFCE9F90D536240AEAFF2BC8C9C42C00102000000030000007DFCE9F90D536240AEAFF2BC8C9C42C0FFB7EDD60D5362406F8D74AB8C9C42C01D5B0BC90D53624083D659A48C9C42C00102000000050000001D5B0BC90D53624083D659A48C9C42C02982EE810C53624083E4F8FC8B9C42C08432E8DF09536240B3823A408B9C42C021510DA0045362406CC207C0899C42C032B540D70253624065632B59899C42C001020000000300000032B540D70253624065632B59899C42C03A3DEFC60253624096B77E55899C42C0B4E186C20253624073FA6E54899C42C001020000001A000000B4E186C20253624073FA6E54899C42C03C32569BFF5262401F590A92889C42C04562821AFE526240D117E714899C42C0554FE61FFD52624025726660899C42C0BD5DE5BFF6526240E68013C0839C42C0392BFDDFEC526240BF6F32607F9C42C07CF9F8DFE5526240FA3F2C40809C42C0BCC7F4DFDE52624002124DA0889C42C07356FABFD95262402FF54E60959C42C023F609A0D85262408DD13AAA9A9C42C09E85F35FD65262407009C03FA59C42C0B524F6BFD2526240AA6FAAFFBD9C42C0B524F6BFD2526240AE934440CF9C42C0756506E0D5526240861854C0E29C42C00E661360D85262405B79C9FFE49C42C0BBE70A00DF52624020A9CF1FE49C42C0B2FAD97EE8526240E8667FA0DC9C42C068267387E852624024230CA8DC9C42C063207475EC526240C4D21B49DD9C42C0C17BFDFFEE526240FDCAEFD9DF9C42C0E7BB00A0EF5262401CF80780E09C42C0D4FCE71FF35262409649C3DFE59C42C07CCD1720F65262406A8A5B60EA9C42C0B44AFAC5F65262403385CE6BEC9C42C0483547B1F7526240DF7A0382EF9C42C09FD236B6F9526240C0AB8558F79C42C00102000000030000009FD236B6F9526240C0AB8558F79C42C04FE339B6F95262408D919158F79C42C0579710B7F9526240AD61EC5BF79C42C0010200000005000000579710B7F9526240AD61EC5BF79C42C07ABE0B00FA52624033FED87FF89C42C0F05EFFBFFB5262401870E01F009D42C0169F0260FC526240E47107A0079D42C0169F0260FC526240E90E62670A9D42C0010200000007000000169F0260FC526240E90E62670A9D42C037F4BB55FC526240FE2A1B310E9D42C01A828879FB5262405A8B0574159D42C0B2AE1B00FB5262402DE64240199D42C0B86EEFBFFA52624056F723A01D9D42C0350DE59FF45262401F6BA1BF2B9D42C02CAFD096E0526240000000E04F9D42C0 + + + true + + + +01050000007B00000001020000000200000035BEE5A0FA486240785C548B887F42C00619B787F34962403A8D599B6B7A42C0010200000002000000A5AE6B6A0F516240EE23B726DD9B42C01BAA5D670F516240D165B130DD9B42C00102000000040000001BAA5D670F516240D165B130DD9B42C06AB3FB9F0D516240B6F81400E39B42C01A530B800C5162405AE95A20E69B42C01336CF150C5162401D566AF4E69B42C00102000000030000001336CF150C5162401D566AF4E69B42C06BB933130C516240EFBC9EF9E69B42C062B933130C51624000BD9EF9E69B42C001020000000500000062B933130C51624000BD9EF9E69B42C0984979520B516240D6468666E89B42C07DCB9C2E0B516240CB3CA87AE89B42C084013A820A516240E80D9CD8E89B42C01820D1040A516240946B651DE99B42C001020000000A0000001820D1040A516240946B651DE99B42C09FCA694F0951624012D5004AE89B42C0E47107A00751624072593B40E69B42C0891E42A6065162404ACC58D9E39B42C09D9ACB0D065162408C930C4AE29B42C03909A52F045162409BF749FFDC9B42C0B159E48D025162401A738D85D79B42C00B7A6F0C01516240F2A32B22D49B42C0EB6F09C0FF5062403BA41820D19B42C02D3185BDFF506240DC9BDF30D19B42C00102000000040000002D3185BDFF506240DC9BDF30D19B42C059A725B1FF506240ADE93015D19B42C027744D37FF5062407BE35AA3D49B42C04562821AFE506240158843DBD69B42C001020000000B0000004562821AFE506240158843DBD69B42C0ED7E15E0FB5062404055E0BFD49B42C0B86EEFBFFA506240A654D33FD29B42C0575EF23FF950624011058E5FD39B42C0A74E513FF95062406403E962D39B42C039002C3CF950624022426D65D39B42C08DA262F7F85062409F8B2BD3D49B42C0041E1840F8506240F0355F80D89B42C03B878D0DF8506240857F6CEDD89B42C0E0BDFE7FF75062404F667220DA9B42C04333F4F4F650624017A99C9BDB9B42C00102000000350000004333F4F4F650624017A99C9BDB9B42C0E4FF441BF6506240C48A64D9DD9B42C0B2423635F5506240F3C64961DE9B42C0E1CC0AA0F35062400518963FDF9B42C081BC0D20F250624057C80160E19B42C0266CE45FF050624048BAB07FE89B42C05D8B16A0ED506240100E51E0F89B42C0D81A0060EB5062406ED113E0059C42C03B3A0900E9506240F73361A0109C42C0676902A0E55062406E6704C01D9C42C052DCA799E450624070D014F0219C42C085121C4DE45062404DF4F928239C42C09164B1A8E3506240FF64E7C8259C42C0FA6B68B9E25062407389D981299C42C0ABCC94D6DF506240F9F8DFA52F9C42C09274CDE4DB50624090436914379C42C0029EB470D9506240828F77FD389C42C097491E99D85062400CFDB8A2399C42C01426E71FD8506240950ED6FF399C42C09F038184D75062404DA48F543A9C42C08119F8F6D3506240C977842E3C9C42C0EB54F99ED1506240A68D34023B9C42C0FE55911BCF506240859BE7E3359C42C0D66C8A6CCC506240AD61D0532E9C42C04285D9BACA5062409745178A2A9C42C006E92972C850624074EB353D289C42C0264A8CAFC7506240FED478E9269C42C0C528BE90C45062407D6DA23B2D9C42C0D4EBBBC7BE506240EB556474409C42C08B0CBCA4BB506240F5E681D94E9C42C0D18547D1B95062408EB344C2529C42C025BE24DFB6506240A3C38DA5599C42C074925275B45062400A3AC6BA5D9C42C05A907758B2506240A0DFF76F5E9C42C0058DF4FDAF506240E6F516C5619C42C0081566EBAA506240D29B9B80709C42C02EA4688AA5506240443B5DCC859C42C06FF3C649A150624019575C1C959C42C09AACF6559E506240BBE70A009F9C42C028F5C0229A5062408E9B7521B19C42C0B04C09D2965062406ED5BF35C19C42C0B75D68AE9350624077D66EBBD09C42C098593AD5905062405D5727C2E19C42C0CFA67E398E5062402627C929F09C42C0C194DCBC8C50624096EB23A6FA9C42C0C19A14308B506240DE10F461079D42C09F292AD188506240F4DF394A149D42C0A0B998B08750624028DB1BD71A9D42C099428C7C83506240AC8FE2772E9D42C08E9DA68581506240A56D57433D9D42C02AE4A5F67D5062405930F147519D42C0178B95877B506240D91F8370609D42C0AD6A49477950624055F08057709D42C0010200000003000000AD6A49477950624055F08057709D42C0575EF23F79506240266CE45F709D42C042E504127950624061F426D0719D42C001020000001400000042E504127950624061F426D0719D42C0FDD071DA785062407630BD58739D42C011001C7B765062404767AA71809D42C03521527875506240791AD58E879D42C0D9CAF044755062405494A69C8A9D42C0322DFBBF745062408014D09F919D42C0217DEE5F7450624093D629A09A9D42C00CEDF71F7450624083CB1940AE9D42C0924FD9FA7350624020915B38B59D42C06BB015D973506240BED29E37BA9D42C0577FDF1A7350624083C366DBC49D42C0A8FC10C0725062408712D2BFC99D42C016EF117B72506240CD9EBAA8CC9D42C05E73FD717150624056D3F544D79D42C025242DF07050624031D7FDBEDA9D42C0266CE45F70506240B2D7BB3FDE9D42C0BE535CB06F50624045B9347EE19D42C083B174F46E506240D89AADBCE49D42C0FDB0EFD46D5062402F5E3D38E99D42C04E9702B96C506240E3BD498EEB9D42C00102000000030000004E9702B96C506240E3BD498EEB9D42C0B15EFBB86C506240B7F3588EEB9D42C0A97FE2B66C506240C7B18A92EB9D42C0010200000003000000A97FE2B66C506240C7B18A92EB9D42C0D53A16806B5062406E3B2300EE9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C002E264D16A506240A3BE767AEF9D42C05FD945CF6A506240E4AFAD7EEF9D42C00102000000030000005FD945CF6A506240E4AFAD7EEF9D42C0ACC1A0F169506240C6600F37F19D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C05F5B3FFD675062405A76D20CF39D42C0AF0008F56750624015362214F39D42C0010200000012000000AF0008F56750624015362214F39D42C0F199EC9F67506240E88CDE5FF39D42C0648918C065506240C52CC59FF29D42C0025CDABA65506240AEEAF6A3F29D42C0AE5D7FB765506240846B49A2F29D42C089B08630635062407DEA58A5F49D42C01E8D9EB661506240AAE683AFF99D42C07171546E62506240647DB905019E42C0A44808A062506240A5F04520039E42C0170912806450624013C25900099E42C0AABF14D466506240691D554D109E42C0EC0AC73D6750624033326DA4119E42C0C7A1D9D068506240B3FEE08D169E42C0E7F05A536A50624055C3D9081F9E42C094933FCE6A506240815DA857259E42C0DBFAE93F6B506240CC9A58E02B9E42C0D53A16806B5062401EDE7360399E42C028B284626B50624001BD1ABC409E42C001020000000300000028B284626B50624001BD1ABC409E42C06DDAD6606B506240C1BC1127419E42C0240012606B50624012B85B5B419E42C0010200000005000000240012606B50624012B85B5B419E42C0D81A00606B50624049A01C60419E42C0C66AF3FF6A50624069E21DE0499E42C08E7AE3FF695062402AF40BC0509E42C0B5A91501695062409456D7FC539E42C001020000000E000000B5A91501695062409456D7FC539E42C0A2F4E04966506240279AACF6559E42C0828E56B56450624099E5FC5E549E42C00839EFFF635062400B45BA9F539E42C0EBC6BB236350624041A66BDC519E42C0F2D1E28C61506240E34D7E8B4E9E42C0DE5E2DD25F506240A456F3774A9E42C0BBE70A005F5062403A92CB7F489E42C032970AE05C5062401281EA1F449E42C03B5409055B50624061527C7C429E42C0E6EB8DB55A50624061F65734429E42C0D83274475A5062409723BFD9419E42C04C16F71F595062405620C4DF409E42C0F609A01859506240809F71E1409E42C001020000000C000000F609A01859506240809F71E1409E42C085AD7E11595062406D6292DB409E42C0FDE6B45D57506240E336D032419E42C079DD223056506240F581E49D439E42C0C686133D55506240280D350A499E42C0A2F8E75854506240A8774C384F9E42C013550960545062401950148D5A9E42C01355096054506240E333D93F4F9E42C04E250340555062402E122400499E42C08615134056506240B3C068A0439E42C0D67503605750624032303C40419E42C0F609A01859506240809F71E1409E42C001020000000E000000F609A01859506240809F71E1409E42C02207DB3E5A506240F02609D3419E42C0AB460AC05A50624085701640429E42C05DC0CB0C5B5062409C0E0984429E42C0867E5CD15C5062401281EA1F449E42C058BACCFA5E506240E793707C489E42C01F20A9CF5F506240921914724A9E42C054E8178061506240C0D3BF7F4E9E42C041D3122B63506240B81E85EB519E42C066583101645062400540CBA9539E42C005114EB0645062401C68F459549E42C08DA90540665062408DD5E6FF559E42C03B3A090069506240E7543200549E42C0B5A91501695062409456D7FC539E42C0010200000007000000B5A91501695062409456D7FC539E42C0D923D40C69506240C3DA73F4539E42C0A6D3BA0D6A506240FA6F6FC8509E42C00B3A6B016B506240EC6415DB499E42C0F36ACA5F6B506240449B2D6A419E42C0D81A00606B506240731FCA61419E42C0240012606B50624012B85B5B419E42C0010200000004000000240012606B50624012B85B5B419E42C0BDCA35606B50624014E97E4E419E42C0E749E3616B506240145F48E2409E42C028B284626B50624001BD1ABC409E42C001020000001100000028B284626B50624001BD1ABC409E42C0FDB9C3816B5062404E621058399E42C0AE84494C6B506240E8E115D22B9E42C00E034CCF6A506240CF561465259E42C0A02AF05F6A506240F0879FFF1E9E42C03E1AF3DF68506240D1459E7F169E42C0184D1D9A68506240782EE7AD159E42C0C5991540675062404A743BA0119E42C0C201E3CF665062401B24E93F109E42C08E812B8F645062405A88C4F3089E42C07DD756A262506240D574E217039E42C080A0377062506240C4B30419019E42C069780EC0615062409EAE939FF99D42C0CA880B4063506240006D50A0F49D42C0E70B10BB65506240AEEAF6A3F29D42C007CEBE97675062400C079D6BF39D42C0AF0008F56750624015362214F39D42C0010200000003000000AF0008F56750624015362214F39D42C095FBD3FC675062405A76D20CF39D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C08E7AE3FF695062402B9C4940F19D42C05FD945CF6A506240E4AFAD7EEF9D42C00102000000030000005FD945CF6A506240E4AFAD7EEF9D42C0E7919AD16A5062400EFF9F79EF9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C08A66AF886B5062404FF4650EEE9D42C0A97FE2B66C506240C7B18A92EB9D42C0010200000003000000A97FE2B66C506240C7B18A92EB9D42C0BC7FE2B66C5062409FB18A92EB9D42C04E9702B96C506240E3BD498EEB9D42C00102000000140000004E9702B96C506240E3BD498EEB9D42C0711B0DE06D5062406B1ACA3FE99D42C0C17BFDFF6E5062402B9908C0E49D42C01D739EB16F506240337C5578E19D42C08294336F7050624064DE4F32DE9D42C0ABB420EF70506240D8D3B3C5DA9D42C05B7C0A8071506240D955ED3FD79D42C0AAAEE87B72506240FD2257A0CC9D42C0309B00C372506240C2CE5EC7C99D42C04850FC18735062404835ECF7C49D42C0F75C01E0735062408F4E0240BA9D42C077FF0EFB73506240BB55212FB59D42C006E8082A74506240F4103235AE9D42C0D08C8F60745062400A4F43AF9A9D42C013E63DCE74506240F78CE9AE919D42C029BB4F4475506240B9CFE0A58A9D42C0568D14807550624002A2BB7F879D42C0A7CDEE7F765062402920ED7F809D42C02A5E1BE078506240B3EC4960739D42C042E504127950624061F426D0719D42C001020000000200000042E504127950624061F426D0719D42C0AD6A49477950624055F08057709D42C0010200000024000000AD6A49477950624055F08057709D42C05E3013A081506240E3C9C91F679D42C05F01F15F85506240D746E11F5B9D42C031F20DE0885062402222EB5F489D42C0B9420E008B50624079ED2D40369D42C04473F8FF8C5062404E250340159D42C0B73302E08E506240FCE1E7BF079D42C08FE4F21F9250624013BF1880FC9C42C0756506E0955062400CEDF71FF49C42C088BA0F40AA506240F1C5CD5FD79C42C0D32B0A60AF506240C9213DA0C79C42C05B7C0A80B1506240B63643609B9C42C0EE8B95E2B4506240C89EF3098F9C42C0BB270F0BB550624074E84F768E9C42C0B2AE1B00BB5062402D3E05C0789C42C0EB6F09C0BF5062408C68965F619C42C0D1C1FA3FC7506240F5F53240589C42C068A4EF7FD1506240DC61B8DF469C42C04B451960D5506240DACE08803B9C42C01D818989D75062408F650B523A9C42C0D3646B22D8506240534D5A023A9C42C00EA8925CD95062408FC7670D399C42C0FAA6FADFDB506240B4BD2720379C42C0F5B704E0DF506240E7BB00A02F9C42C0BAB8E8BFE25062404A0A2C80299C42C0D63329AAE3506240EC2708C3259C42C07DC2D9ADE55062401A69A9BC1D9C42C02A14330CE95062405C6F9BA9109C42C0D215116AEB5062408C18D1D1059C42C0EA45FEAAED5062404BCADDE7F89B42C052F98D65F0506240D1419770E89B42C0DAD6602BF2506240F28CC756E19B42C0002BD1A3F3506240E7D0D84DDF9B42C00E547C32F55062401D46F762DE9B42C07CCD1720F65062406B871AE0DD9B42C04333F4F4F650624017A99C9BDB9B42C00102000000090000004333F4F4F650624017A99C9BDB9B42C0289B7285F750624025E7C41EDA9B42C04E098849F85062400E7D1C72D89B42C0CB55E2F0F8506240753A90F5D49B42C08CFE863FF95062406403E962D39B42C026BD14C3FA5062405F8E684CD29B42C0E14625D0FB506240FE9364C2D49B42C01CE3D418FE50624068869EDED69B42C04562821AFE506240158843DBD69B42C00102000000040000004562821AFE506240158843DBD69B42C08D3FF61FFE50624092054CE0D69B42C0DC9FE63FFF50624028E5FF9FD49B42C02D3185BDFF506240DC9BDF30D19B42C001020000000A0000002D3185BDFF506240DC9BDF30D19B42C0086C7308015162408E68F118D49B42C09A000D80025162400936AE7FD79B42C01281EA1F045162402FB72000DD9B42C08641F4FF055162409298FB3FE29B42C0382EE3A606516240724B06DBE39B42C0B1C8659207516240C5579643E69B42C03D9D2B4A0951624000982144E89B42C08152FEFF0951624053AAE91FE99B42C01820D1040A516240946B651DE99B42C00102000000050000001820D1040A516240946B651DE99B42C0A0BEC0070A516240E869C020E99B42C0E2EFCD250B51624048BAB07FE89B42C0CBF21A600B516240304AD05FE89B42C062B933130C51624000BD9EF9E69B42C001020000000300000062B933130C51624000BD9EF9E69B42C029F8B7150C516240723F96F4E69B42C01336CF150C5162401D566AF4E69B42C00102000000040000001336CF150C5162401D566AF4E69B42C035A3D57F0C5162407E63192CE69B42C09C5C9DAD0D516240B6F81400E39B42C01BAA5D670F516240D165B130DD9B42C00102000000040000001BAA5D670F516240D165B130DD9B42C010EF94690F516240AB623B29DD9B42C0DD7305800F516240184740E0DC9B42C0A5AE6B6A0F516240EE23B726DD9B42C001020000000400000073FB9B06FB5262400567953E199D42C06B72E778FB5262406CC8E479159D42C0169F0260FC52624075A334400E9D42C0169F0260FC526240E90E62670A9D42C0010200000006000000169F0260FC526240E90E62670A9D42C0525B8F67FC5262404FB2309F079D42C0383C73C5FB5262400633011A009D42C071AB2006FA526240AB76F28EF89C42C0E5A210B7F9526240E08FEC5BF79C42C0579710B7F9526240AD61EC5BF79C42C0010200000002000000579710B7F9526240AD61EC5BF79C42C09FD236B6F9526240C0AB8558F79C42C00102000000180000009FD236B6F9526240C0AB8558F79C42C0F54DF5BFF7526240B5FB5580EF9C42C0CF9AC4C5F65262409FC5F76AEC9C42C01AB7E22CF6526240D0C59569EA9C42C0C8DB0022F3526240840CE4D9E59C42C0E4C40DAEEF52624081334289E09C42C0A026440AEF526240F7C500E4DF9C42C0287BF07FEC5262405F97E13FDD9C42C0121A1C80E852624052A7A89FDC9C42C0CE4AA47EE8526240E8667FA0DC9C42C09CDB847BE5526240B4A1AC29DA9C42C0DCAEE133E3526240993E856DD59C42C06BCB25FAE15262401EB97F76D19C42C03953324AE1526240B2B15C80C79C42C0E5F27A8BE2526240D18547D1B99C42C07F52488DE4526240AA80D657B29C42C0235D33F9E65262408C721F6FA89C42C010178046E9526240B4249B06A09C42C051F70148ED526240186BC9F4959C42C0DD297865F2526240D5D6E3198F9C42C0819B2045F8526240B95917128B9C42C0BAB59613FE52624090566B17899C42C0EE4FF39FFF52624002124DA0889C42C0B4E186C20253624073FA6E54899C42C0010200000003000000B4E186C20253624073FA6E54899C42C0770778D20253624055F60258899C42C032B540D70253624065632B59899C42C001020000000500000032B540D70253624065632B59899C42C0FCED57A604536240D1FD41C9899C42C069CB14CE095362403605323B8B9C42C01A530B800C536240D6E253008C9C42C01D5B0BC90D53624083D659A48C9C42C00102000000030000001D5B0BC90D53624083D659A48C9C42C0938ECDE90D536240D6C8AEB48C9C42C07DFCE9F90D536240AEAFF2BC8C9C42C001020000000F0000007DFCE9F90D536240AEAFF2BC8C9C42C0DFEB5A31125362405C30B8E68E9C42C0102D681015536240F1A19F04919C42C028CA4A38195362406C216D88969C42C0D19D16721B536240CE3CCAD2989C42C03B037EE81D5362403ABF72CE999C42C0DCFF6C5020536240ED69E278999C42C09E5DBEF5215362404DEE1C6F979C42C0CA856F0624536240E0505326909C42C0B700D99024536240373FB445889C42C023168CA5235362405B40683D7C9C42C05F62878C22536240C6B99745729C42C093A1CFEC1F536240F4763A46689C42C08284CDA51D5362404BBB873A629C42C0D7E7209E1B5362406D0CF093599C42C0010200000013000000D7E7209E1B5362406D0CF093599C42C0E61604A01B5362407916CE7F599C42C05EC6038019536240B45318004F9C42C0F8D51C20185362402A615C60459C42C01EC6A4BF1753624025F213BD429C42C089658E4017536240AAF644323F9C42C0242A54371753624010F0FF3E3E9C42C0C3C5F6FF16536240D81D41E0379C42C08C2E6F0E17536240270FB0FB339C42C02721472917536240B8AD2D3C2F9C42C079D1B249195362404BE88942269C42C0AD93E9861C5362403868AF3E1E9C42C073C57BC41E536240EE2AFFB5179C42C0405E59B31F53624019E42EC2149C42C05AA8EB3F21536240D4D347E00F9C42C0B6F8140023536240E822CF3F0B9C42C01518570123536240412619390B9C42C059E7CE02235362405A68E7340B9C42C067919A532353624047F40262099C42C001020000000300000067919A532353624047F40262099C42C0473426692353624078CF81E5089C42C05570EB7223536240D1AE8EAD089C42C00102000000040000005570EB7223536240D1AE8EAD089C42C01AE9FB5F24536240D3D00660039C42C055B9F53F25536240FC4E3860FC9B42C0A2FEEF7325536240734F8D6AF89B42C0010200000003000000A2FEEF7325536240734F8D6AF89B42C046CF2D74255362402CCBD765F89B42C055733674255362408FF14B65F89B42C001020000000300000055733674255362408FF14B65F89B42C0F451FCCE2553624095A828A8F29B42C06903899225536240E136F4D0EA9B42C00102000000030000006903899225536240E136F4D0EA9B42C034C0609225536240D554BBCBEA9B42C028C8389225536240B1B2DCC4EA9B42C001020000000300000028C8389225536240B1B2DCC4EA9B42C06A49EC7F255362400CEAB69FE79B42C06A49EC7F25536240B5824B6CE39B42C00102000000080000006A49EC7F25536240B5824B6CE39B42C031B2648E25536240F60604DFD99B42C0E3B55C472653624031D4BC3ECE9B42C0B76DCE7726536240B5EC5A8CCB9B42C0B4E908E026536240CAB1AB7FC69B42C01FFC1FBB26536240988EEF41BE9B42C04864C4AA26536240BA49B148B89B42C033824391265362403ADE5C8CB29B42C001020000000300000033824391265362403ADE5C8CB29B42C00D912E9126536240CE28A787B29B42C014C1199126536240AA35997FB29B42C001020000000400000014C1199126536240AA35997FB29B42C0A239FC7F26536240013BEDDFAB9B42C0676902A025536240BE0864C0A39B42C068DD7F43235362408F003EB19D9B42C001020000000300000068DD7F43235362408F003EB19D9B42C09CFB613A235362407A5AD9999D9B42C08042BB382353624093B483959D9B42C00102000000060000008042BB382353624093B483959D9B42C08C344CC822536240EC2F606E9C9B42C0A72E2AF320536240F98D65B0989B42C00A48FB1F205362408F256200979B42C07F1711201E53624021E4BCFF8F9B42C02B15B7931D536240D293414A899B42C00102000000030000002B15B7931D536240D293414A899B42C0EB9FF18E1D536240549ADE0F899B42C0C2BA9F8C1D536240069CD0F2889B42C0010200000019000000C2BA9F8C1D536240069CD0F2889B42C03C061A221D5362409382B8BC839B42C01AF67B621D5362400F817E3A799B42C00BF5AA841D536240224ECC1F789B42C094A707601E53624077ACBE5F719B42C05A07ACC120536240AE122C0E679B42C0D7C633C321536240CDF5C7C5629B42C04AE9995E2253624058EB7A585E9B42C0EFC80EE0235362400B45BA9F539B42C052D90B6025536240CEE11060479B42C06A183E2226536240F2D654713E9B42C0CFC6A58526536240EE3F321D3A9B42C0E3288AA12653624026378AAC359B42C0B4E908E0265362407C9BB45F2D9B42C05DC6A8C62653624045813E91279B42C016D22BAF2653624032EDF6B41E9B42C0EC246C8926536240BFE61C3C139B42C0A239FC7F26536240A583F57F0E9B42C08D92FC2D26536240DC60A8C30A9B42C0C9C452C92553624086E5CFB7059B42C0A725564623536240466A46ABFF9A42C0CD960744235362401EEB98A9FF9A42C0CA880B4023536240B9AF5EA0FF9A42C0E407F87F1F53624066FFF27FFD9A42C002EBBBE31D536240DA0DCFDAFC9A42C001020000000300000002EBBBE31D536240DA0DCFDAFC9A42C0EE0912DB1D5362408B9356D7FC9A42C02A3B08DB1D536240257A52D7FC9A42C00102000000240000002A3B08DB1D536240257A52D7FC9A42C0B75384E519536240EFA6B62FFB9A42C0EF33D362155362409320B7BAF79A42C0BB46263B1153624019A1E936F29A42C00D4059E70E536240D26AED22F19A42C005C314400C536240FC4BF7DFEF9A42C0C286A7570A536240FDDB65BFEE9A42C061DBA2CC06536240DAAF9696EC9A42C058C9C7EE025362403B2064B4E99A42C0F4F8BD4DFF5262400E38A682E59A42C052F932ACFD526240DCB28D89DE9A42C01A6B7F67FB52624035C703DBD29A42C02D697BAAF9526240E269430FC69A42C036AD1402F95262400F153EB6C09A42C02D3E05C0F85262409FEF0280BE9A42C007FE0120F8526240311BAE1FAC9A42C0915D0E60F65262406C58F89FA19A42C0D11CFE3FF352624005C655C0989A42C0EC55BF2DF35262403B21CF89989A42C04F47B6A9F0526240E569AFF4909A42C0773469AEEE526240AD557199899A42C0B0164449ED52624034C86EB0819A42C0106734A8EC526240A5D0C31A789A42C09348EC24EC526240159161156F9A42C01CE7DB27EC526240ADB0CF52689A42C0E643ABEEEC5262402E6695E35F9A42C0D4A46F2DEE526240FD42D9A5579A42C08297CFA8EF526240D28668194E9A42C084E4AE6FF1526240F581E49D439A42C0D4B7CCE9F25262401BB226BB3E9A42C00CEDF71FF4526240D0DECFDF3A9A42C0AC826275F552624039D6C56D349A42C0C908032AF75262403693CA6F2C9A42C081C6962FF95262408625D4C21B9A42C026E88AADFB526240729648580A9A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000003000000A05FB9A5FC526240FCFCF6B4029A42C007CC43A6FC5262405268B4B0029A42C0A36B13A8FC526240F9A11DA3029A42C0010200000003000000A36B13A8FC526240F9A11DA3029A42C0554FE61FFD526240C52F0620FF9942C0D41F065FFD52624090508E5DFD9942C0010200000011000000D41F065FFD52624090508E5DFD9942C0C2C8810DFE526240C847E6ECF89942C01B6A6F4BFF5262404EB4AB90F29942C0C4FBBB880053624062314514EE9942C0387A466C01536240BFD6A546E89942C0F6B8CA6E015362407A0E76D4E29942C0F47F5880005362404CF8A57EDE9942C06616FC91FD526240944E7F51DD9942C0274D83A2F9526240C8DF0731E19942C0704D70A0F6526240FC427EECE49942C06A1D0BC0F5526240AEB9A3FFE59942C06B65C22FF5526240317E1AF7E69942C0D1EEEB1BF35262401DBF0177EA9942C046A7F809F15262407A4501ECED9942C0F96B0D00F0526240CD6B36A0EF9942C0A7FD20DCEE5262401EDA22C4F09942C0608A808AEE5262406DD76815F19942C0010200000002000000608A808AEE5262406DD76815F19942C07BB8027DEE526240B6B5D722F19942C001020000000A0000007BB8027DEE526240B6B5D722F19942C0008E3D7BEE526240FBE99A24F19942C00F4D8F5CED526240BE9D9F3DF29942C0D5207134EC52624037D43950F19942C0BA63B14DEA5262400E5BC4C1EF9942C04273428DE7526240EC489AE4EC9942C04B862D87E75262403F47F5E7EC9942C0DA290C80E7526240048B68E0EC9942C0676902A0E55262403F5B62C0ED9942C09B6053AFE3526240964FD5C0F19942C00102000000030000009B6053AFE3526240964FD5C0F19942C0417452A9E3526240D75537CDF19942C0927F37A7E3526240AC7128D1F19942C0010200000007000000927F37A7E3526240AC7128D1F19942C02C29779FE3526240A2CCABDFF19942C07A281B20E2526240DD9CA5BFF29942C02DA814E0E052624073ECEA9FF19942C0E1247266E0526240CBD58F4DF29942C043B40C27DF5262409574DE10F49942C09737634FDB5262408DBADC19F79942C00102000000030000009737634FDB5262408DBADC19F79942C0D75DEA31DB5262403A652431F79942C07D879512DB526240FAED9149F79942C00102000000080000007D879512DB526240FAED9149F79942C0388600E0D8526240277E3100F99942C0ACC8433AD752624027367A90F99942C0B771D586D4526240B504CF73FA9942C011D77B3BD3526240A2C7EF6DFA9942C08B040940D2526240C10EAD5FFA9942C05803EF3FCD526240277E3100F99942C046820420C9526240186D9F9FF39942C001020000000200000046820420C9526240186D9F9FF39942C0D57036C2C7526240A85BD141F29942C0010200000005000000D57036C2C7526240A85BD141F29942C071AE6186C65262408F7B5F01F19942C0251D8AA7C3526240FDC1C073EF9942C009FCE1E7BF526240398ABD61EC9942C00A8F5209BF52624017BA7889EB9942C00102000000030000000A8F5209BF52624017BA7889EB9942C081327CFABE52624058BD0D7BEB9942C00725EAE8BE52624076FD7669EB9942C001020000000A0000000725EAE8BE52624076FD7669EB9942C02B2FF99FBC52624053AAE91FE99942C08C6E1860BA526240142928A0E49942C007FE0120B85262407707C25FDD9942C08D77EC0CB852624018755204DD9942C0EAA5738FB6526240875DCAAFD59942C09149A187B5526240F6A79E16CD9942C05C4DE83FB5526240C2E2CB9FCA9942C01D9D0480B4526240CD3F55E0BF9942C01D9D0480B452624013DD6921B79942C001020000000F0000001D9D0480B452624013DD6921B79942C0F72B5382B45262406A0712CAB19942C091D6732DB5526240834CD7B8A39942C07610E099B55262404533AA679C9942C0F66DD27EB552624096027745959942C05F5BE443B5526240265305A3929942C0BB1006F9B4526240B583B641929942C01853FA53B45262403EDD8A0E929942C0BCB77DEAB35262405B66C7FC929942C07702AB34B35262402A60F18A969942C0B0822914B3526240B678C25C9C9942C0A54DD53DB25262407B832F4CA69942C0B365AF2DB252624063F9A9E0A69942C05E5CF45FB152624053EB5800AE9942C095804EF7B0526240DB807456B09942C001020000000400000095804EF7B0526240DB807456B09942C02891E975B05262405768D608B39942C0A68AF381AE526240E545DC52BD9942C01CDD9867AE526240774A0AF5BD9942C00102000000030000001CDD9867AE526240774A0AF5BD9942C04238B066AE5262402DF2A1FABD9942C0208BE95DAE526240E9112D30BE9942C001020000001B000000208BE95DAE526240E9112D30BE9942C04BDB0940AD52624018B14F00C59942C0FB7A1920AC526240FD2257A0CC9942C0ECAAF69FAB52624024343800D19942C034153D4BAB526240632BC313D59942C0016C9B3DAB526240335F6FACD59942C0F02EBC37AB52624074345882D69942C0C66AF3FFAA52624052A7A89FDC9942C013EBF93FAC526240828AAA5FE99942C01C125212AD526240E6852AEBED9942C01EBEF15AAE5262406532C115F59942C0ED1C14DEAF526240DE077B6EFC9942C081EDBB7DB15262400E959059079A42C0CC1D47BDB1526240FC993050089A42C0EE04FBAFB35262404B4C61EF0F9A42C040A49531B4526240080FE4EA119A42C0217DEE5FB45262409DB415A0129A42C07FAD0100B652624032970AE01C9A42C0E39DE85FB75262405DC94400269A42C018AE0E80B8526240364B13002D9A42C0922EEC1FBA526240F3AB3940309A42C02E0FE37FBC52624046EC1340319A42C013BF1880BC52624046EC1340319A42C003E0E9DFBF5262400B1C1A60309A42C0A344A6D7C15262406B589DE62E9A42C09DE0F65FC2526240D009A1832E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000053000000E98E0FC4C3526240E24680892E9A42C09A36E334C45262405F06088B2F9A42C0D11B936AC4526240D4085806309A42C049E4277AC55262401C0B0A83329A42C05FB939F0C552624066F2CD36379A42C05F5A796EC65262401CB85E2E3D9A42C094111780C65262408D3FF61F3E9A42C098F10060C65262406110FD7F419A42C0748E4B66C6526240A2410A9E429A42C053399270C652624082BA922E479A42C0ACAF09C4C6526240C15B316D499A42C0C111EEDFC6526240C8A29F5F4A9A42C0E751F17FC75262409CE337E04E9A42C0F901FEDFC752624026D6F37F589A42C0DEB133E0C7526240BB95CA80589A42C0E1911DC0C75262407D51CC8B5D9A42C0B8150CF8C65262404184132C699A42C065BE28E6C552624071A7CF69719A42C095174FF3C4526240F211E797779A42C01661D4FFC3526240959460167F9A42C010035DFBC2526240C4BF19468B9A42C058288870C2526240FC71FBE5939A42C085E6DFD3C152624053B4CDE8A29A42C0C1D31A39C15262408946D2C9AD9A42C0BB44F5D6C0526240A8120AB6B69A42C0A9F00CBFC05262407E8D2441B89A42C053CDACA5C0526240593B40E6B99A42C033D7B331C052624068EA758BC09A42C0CCE33098BF5262409FE40E9BC89A42C0B323D577BE526240665710B9CF9A42C08D11E4FBBD526240D590B8C7D29A42C066FFF27FBD5262407B25DA9FD59A42C0DF57F66EBD526240B094C041D69A42C07FA31D37BC526240CABD65F3DD9A42C0D3A7B0ADBA526240D2F1E20EE59A42C0E089B4E8B85262406AE67FA8EA9A42C03C4272D7B752624078F1D995F19A42C0C6CCF401B7526240F783CB74F99A42C01FCDA2C1B7526240D67A1A8B019B42C0E0A0BDFAB85262405070B1A2069B42C0001E51A1BA5262405890C1E50C9B42C0ED7E15E0BB526240B524F6BF129B42C0169F0260BC526240C3C5F6FF169B42C040BFEFDFBC5262400447B87F1B9B42C0A0CFEC5FBE52624013584AE0209B42C072906B9EBE5262406BB180AE229B42C0A7A32DF8BE5262403AC54F88259B42C006F1811DBF5262403C4ACA822E9B42C0C52F0620BF526240A06B5F402F9B42C0ADED3724BF526240E7A15B54309B42C00F327F3BBF5262407286E28E379B42C0FA87E3AFBF526240B177352F3D9B42C0EB6F09C0BF52624075CF15003E9B42C011B00C60C0526240EF906280449B42C049A01C60C15262400ED363004D9B42C05E3013A0C152624034E44460519B42C05E3013A0C1526240B4E6C75F5A9B42C03CF262BCC1526240ACE9D55B5E9B42C0C1A26CDBC1526240B56B425A639B42C073C009E0C15262402A3410CB669B42C073C009E0C1526240CF7A42C06B9B42C049A01C60C1526240849CF7FF719B42C03BD0F9DFC05262402D3E05C0789B42C01490F63FC05262405900AEBF809B42C000000000C05262402D414640859B42C003E0E9DFBF5262408F2221808A9B42C000000000C05262402DD4F59F909B42C011B00C60C052624015F7C4DF9B9B42C0CDF79D70C0526240AF9BAD179E9B42C0A994E876C0526240F6132928A09B42C0B2A7D370C052624072BF4351A09B42C0DC9FE63FBF5262401DC9E53FA49B42C05DE6CF12BF526240A04BDD3AA49B42C05491651CBE52624063613E0FA49B42C00417D0B0BD5262400573AA6BA39B42C03AFF1B20BD526240A728F27FA29B42C0DEAEF25FBB52624040964FA0999B42C007FE0120B8526240E613C31F8F9B42C07EECE4C2B752624088F71C588E9B42C02A39DD68B652624012B985538B9B42C0D4FCE71FB352624055E2957F889B42C0EA9BEA7FAF526240FEF0F3DF839B42C0593F0B9EAD5262409DE4954F809B42C001020000006E000000E23362A581526240000000E04F9D42C0C30C8D2782526240C0153F7C4F9D42C072A02C2184526240A891F1834E9D42C0C1E677F5855262406083CF204F9D42C09CF0B7E287526240DBFF5B24489D42C0E412471E88526240FEB220393E9D42C0430477FB8752624031F378B5379D42C0853BBC8C875262408D3CB59F319D42C0C4398F2F86526240076B52C02C9D42C088552877845262400392B06F279D42C0BB0166BE835262400B896A00259D42C09F477B728352624030E186CE219D42C081D2AB5C83526240BA5A385A1F9D42C03A0C416983526240BC440603199D42C0E946585484526240755B7DD00E9D42C0DC0BCC0A85526240D2EC702A089D42C04DD87E3286526240339C7CC4F99C42C0447DDCC8865262407BE9DCA3ED9C42C008371955865262409663682BE59C42C056BD570886526240128A085ADC9C42C021938C9C855262408CA438A2D69C42C0C4AF58C385526240D634947FD29C42C02B4CDF6B88526240B3D771B2C39C42C071659AFA8A526240D6E65A0FBA9C42C02640A8E68D52624058F047F6AD9C42C08CD99255915262402F7C8ED9A39C42C033A7261C95526240F7C374C69C9C42C02971C2299852624022F36D66999C42C0BC7DB1529C526240A8E96976939C42C0317491E79F52624064DFBA078D9C42C00CC050D1A25262404527F0F3849C42C099B3E32BA65262400A26A36F779C42C0B98C9B1AA8526240E65AB4006D9C42C00B57AC86A952624043064DA6659C42C0B1A94E62AB526240827E95325F9C42C0486E4DBAAD526240793073CB589C42C0163A6524B1526240E2A9A2D34E9C42C089E0C9B8B35262405FFE5426469C42C0C776082DB5526240DC8C89833A9C42C0F0DB10E3B552624092DF47DA329C42C0DB8D999FB6526240B926EEC2209C42C0A3F611AEB6526240ED7DAA0A0D9C42C01CBFA6BDB7526240711706D1FF9B42C04877C6ADB852624036864A6DF39B42C030044A54B95262409F55664AEB9B42C0F45B2A25BA5262404C0C1357DF9B42C09D6340F6BA5262405D3A41F6D59B42C0A09F4E1EBB526240C2EB4493D59B42C0DE639FB6BC526240298F13CBD29B42C004FD2A65BE526240AAE8B413CA9B42C0A7751BD4BE52624085CFD6C1C19B42C08A2E5EE2BE526240A01518B2BA9B42C089CF9D60BF52624033E8DF89B49B42C0A31CCC26C0526240951C661EAF9B42C0D743FB58C15262402CC0D254AA9B42C076FC1708C2526240586BCDFBA49B42C095C4FE57C2526240A83462669F9B42C06D2E4844C252624033B44B659B9B42C0C4B068DFC1526240579B5A11909B42C037ED73C6C1526240E8537D9D8A9B42C017AFC3E2C1526240201DC308869B42C05BC3561AC2526240466172FE819B42C0D8F8A7AFC2526240C1C991297A9B42C04C040539C3526240BF243A70739B42C054CF38C3C3526240E09D7C7A6C9B42C09C95A3B6C3526240B50F1E12639B42C072D1DA7EC3526240EF46301F5A9B42C075DFD682C352624071E888D7509B42C016647039C3526240569F06674B9B42C0DB4E5B23C2526240EA077591429B42C0ACFB6C89C152624088E41A553C9B42C0F7459D14C1526240CC75BFAF369B42C035E213FCC0526240EE08A7052F9B42C0B528FDCEC05262407CE82741249B42C01B50CAFFBF526240A3F08FAD1D9B42C039F9E3ACBE5262409E877F7D199B42C0343CAC26BE5262407E4D7BEF149B42C08A79B18BBD5262400F90D4E70F9B42C02D9CB525BC526240D18A146F099B42C035D5EEB2BA526240D4884FF0039B42C0B58E05E0BA526240929B3CC0EE9A42C0ACD73E2EBB526240F810F9D3EB9A42C033A1A41BBC5262400C885AE4E89A42C01C87B0D0BD5262407BB889FFE09A42C0FD1F1620C05262408E401768D29A42C06D03D259C1526240519DB3AACA9A42C0CFFF6101C2526240B48185DDC19A42C07BD058A0C2526240C50BD8C4B89A42C055E9DD0EC35262407D5061B6AE9A42C0E35B0EAAC3526240CA4054D0A39A42C0AA65C636C45262400CBD0F51969A42C0F6211400C8526240B37CB83F729A42C0DF8211A0CB526240DF180280639A42C0F885FCD8C9526240E07261495E9A42C0E603029DC9526240CA4A38995D9A42C0FE73E2BCC9526240850C3F93589A42C0C3A04CA3C95262400C231862509A42C08B57B494C7526240D79FC4E74E9A42C0171E45E7C6526240F2214D614A9A42C0750F75C4C6526240165A8C70499A42C094111780C6526240A0015020479A42C0748E4B66C652624091042B98429A42C09AFFFC63C6526240858ABB8B419A42C0E80F7283C6526240AFB9B42B3E9A42C0440AAF6EC6526240DBF6E2303D9A42C08641F4FFC5526240CC2D0840379A42C05C210780C5526240C80CAF7F329A42C03C5CBC69C452624017CAD303309A42C0B5FC76C8C3526240E24680892E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000019000000E98E0FC4C3526240E24680892E9A42C0E68013C0C35262407D0B46802E9A42C09DE0F65FC25262407D0B46802E9A42C0E40522D5C152624094D74AE82E9A42C027439FD9BF526240CF5F8D58309A42C073DE5A81BC52624034AF343A319A42C0DC195C29BA5262405EEC623F309A42C0F54A5986B8526240DD47C9062D9A42C0D277126CB7526240D4415E0F269A42C0BA698E07B6526240389CF9D51C9A42C05C397B67B45262402C6FFDAA129A42C0B1E485CFB1526240D276A796089A42C05B7C0A80B1526240B5914660079A42C0FC4BF7DFAF526240FC4E3860FC9942C09B3BFA5FAE5262405F2DD21FF59942C012E85D06AD52624062A70EA8ED9942C066E95443AC52624053060E68E99942C0F913950DAB5262402A28FB9DDC9942C00A7F8637AB52624003EF3F8DD69942C0DBFAE93FAB5262407B25DA9FD59942C0FE74A84BAB5262407B6D910FD59942C08786C5A8AB526240CF35DDFCD09942C09F69D322AC5262404A1CC3ADCC9942C09ED96443AD52624018B14F00C59942C0208BE95DAE526240E9112D30BE9942C0010200000003000000208BE95DAE526240E9112D30BE9942C04B4B9B60AE526240C2DF8A1FBE9942C01CDD9867AE526240774A0AF5BD9942C00102000000040000001CDD9867AE526240774A0AF5BD9942C0985B1080AE526240343F4860BD9942C0228CFA7FB052624086EC7200B39942C095804EF7B0526240DB807456B09942C001020000000800000095804EF7B0526240DB807456B09942C02ED85768B1526240D56D50FBAD9942C01FA6D82CB252624034750DE9A69942C0992CEE3FB2526240C3499A3FA69942C044DD0720B55262407B6649809A9942C044DD0720B5526240BE0864C0A39942C01D9D0480B45262406F0C01C0B19942C01D9D0480B452624013DD6921B79942C001020000000A0000001D9D0480B452624013DD6921B79942C0003F3E7CB452624037807EDFBF9942C0DFCFDF3AB55262405DA79196CA9942C0E1390087B5526240792A9611CD9942C0A7CDEE7FB65262407B25DA9FD59942C057D7570DB8526240D6B3D606DD9942C04BCD7921B85262407102D369DD9942C01A12F758BA5262401A2E1796E49942C064C68091BC5262407D299721E99942C00725EAE8BE52624076FD7669EB9942C00102000000030000000725EAE8BE52624076FD7669EB9942C08C5363F8BE526240997E8978EB9942C00A8F5209BF52624017BA7889EB9942C00102000000050000000A8F5209BF52624017BA7889EB9942C003E0E9DFBF526240100B1060EC9942C0E960FD9FC3526240B5FB5580EF9942C094111780C652624067FCB1FFF09942C0D57036C2C7526240A85BD141F29942C0010200000009000000D57036C2C7526240A85BD141F29942C0C50D0929C9526240FA25E2ADF39942C0F0B9B832CD52624051FDDE01F99942C078DE324CD2526240BB09BE69FA9942C061C7DA3AD3526240A2C7EF6DFA9942C02BC5E97FD45262406E3E6480FA9942C0BE1C2C52D7526240EB79ED88F99942C0F3B688DED8526240CE7AE706F99942C07D879512DB526240FAED9149F79942C00102000000030000007D879512DB526240FAED9149F79942C0191F662FDB52624064E4D132F79942C09737634FDB5262408DBADC19F79942C00102000000090000009737634FDB5262408DBADC19F79942C0D257EB1FDF5262400CEDF71FF49942C0AE92D96AE0526240B898B047F29942C07B8A77DBE052624043684EA8F19942C04B8D7516E2526240BF55E8CDF29942C0539A289DE35262401F4AB4E4F19942C04779419FE3526240378C82E0F19942C0DC3818A0E3526240A2CCABDFF19942C0927F37A7E3526240AC7128D1F19942C0010200000003000000927F37A7E3526240AC7128D1F19942C050A335ABE3526240EF9705C9F19942C09B6053AFE3526240964FD5C0F19942C00102000000090000009B6053AFE3526240964FD5C0F19942C03AF361ACE552624061D520CCED9942C066D6F786E75262403F47F5E7EC9942C088BA0F40EA526240E3DB16C0EF9942C0DD4A6540EC52624031CF4A5AF19942C0A1FE6959ED5262407EDC2340F29942C02A9D595CED526240BE9D9F3DF29942C0634BEA5FED5262407EDC2340F29942C07BB8027DEE526240B6B5D722F19942C00102000000030000007BB8027DEE526240B6B5D722F19942C0B7C7D287EE52624043B00518F19942C0608A808AEE5262406DD76815F19942C0010200000010000000608A808AEE5262406DD76815F19942C0058DF4FDEF5262405B261EABEF9942C007DD6FFEF0526240D87B4CFFED9942C0D4FCE71FF352624082FA3B80EA9942C0B2423635F5526240CB42E0EDE69942C0AFEC82C1F5526240D7385101E69942C0E1928895F6526240493CEAF9E49942C0680EFF9FF95262403F582140E19942C0631F09A0FD5262407707C25FDD9942C02920ED7F0053624076775380DE9942C065F0E65F015362409E8834E0E29942C065F0E65F0153624018DAEF3FE89942C02920ED7F0053624086AB0320EE9942C0DC9FE63FFF526240C52CC59FF29942C075CF1500FE526240100E51E0F89942C0D41F065FFD52624090508E5DFD9942C0010200000003000000D41F065FFD52624090508E5DFD9942C0F121A81AFD52624048B2FD1AFF9942C0A36B13A8FC526240F9A11DA3029A42C0010200000003000000A36B13A8FC526240F9A11DA3029A42C067EB85A7FC526240ED2C7AA7029A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000025000000A05FB9A5FC526240FCFCF6B4029A42C0F33EE99FFB526240AD52D55F0A9A42C03FEE1120F9526240C8E64FC01B9A42C0CF0DF21FF75262402B5BDA5F2C9A42C032135674F5526240B653CE72349A42C071112917F45262406BA395D63A9A42C078A686ECF2526240B676ECB13E9A42C05E5CF45FF1526240B3C068A0439A42C0E7BB00A0EF52624079831E204E9A42C086AB0320EE526240EB05FA9F579A42C0392BFDDFEC526240DB673AE05F9A42C016CBE31FEC526240FAA93B60689A42C016CBE31FEC526240A34B49206F9A42C0249B06A0EC526240224ECC1F789A42C04BDB0940ED5262403F005FC0819A42C0AECBF09FEE526240545227A0899A42C01FAC10A0F052624009E46D00919A42C0FC929E33F35262400598439C989A42C0394F2B3BF3526240B8CCE9B2989A42C00EC40D53F6526240B31E6393A19A42C075351E11F85262409C5BD71EAC9A42C06FFF80BDF85262406F6B6688BE9A42C0A1ED3D01F9526240681888AFC09A42C0680EFF9FF95262406BF12900C69A42C0DEAEF25FFB526240B2440CE0D29A42C0631F09A0FD52624076775380DE9A42C0DC9FE63FFF5262404FF92180E59A42C0ABB019E0025362405E9A22C0E99A42C0A9A10DC0065362403FEBD09FEC9A42C0F7263C570A536240FDDB65BFEE9A42C0EF13515D0A53624050DAC0C2EE9A42C0A99AC5300C536240FC4BF7DFEF9A42C001F15FC50E536240C632FD12F19A42C05314F93F115362407EDC2340F29A42C04B45196015536240109EBFBFF79A42C0707610E019536240FCDEA63FFB9A42C02A3B08DB1D536240257A52D7FC9A42C00102000000030000002A3B08DB1D536240257A52D7FC9A42C0BE8575E31D536240DE91B1DAFC9A42C002EBBBE31D536240DA0DCFDAFC9A42C001020000001700000002EBBBE31D536240DA0DCFDAFC9A42C0DBF40C861F53624061FA038AFD9A42C0E8E6D143235362401EEB98A9FF9A42C0648918C025536240566133C0059B42C00702092F26536240959A3DD00A9B42C0AB4CE77926536240873C388E0E9B42C0077536892653624020EF552B139B42C09F5912A026536240C0A7DEBF1E9B42C05DC6A8C626536240987F9994279B42C0BAEEF7D526536240FF1DAC5A2D9B42C0AD88F5A1265362405BC0159A359B42C0A239FC7F26536240AC7EB61F3A9B42C05AE95A2026536240E6CC76853E9B42C07F4FAC5325536240881BA66C479B42C056ED3FD723536240F907DB99539B42C05D26796422536240B2C0B22D5E9B42C069780EC021536240BAB8E8BF629B42C0755776C12053624042D2020F679B42C07F5C2C561E53624090EE8C5B719B42C06B14ED851D5362409393E414789B42C05CB7F75F1D53624021BE5D40799B42C0472701201D536240E68013C0839B42C0C2BA9F8C1D536240069CD0F2889B42C0010200000003000000C2BA9F8C1D536240069CD0F2889B42C0A9DE75911D536240438B112E899B42C02B15B7931D536240D293414A899B42C00102000000060000002B15B7931D536240D293414A899B42C061B94A1C1E53624027E9ABF58F9B42C01F7CCD172053624083ED71F0969B42C09CB11EAD205362402355CA21989B42C0BAB8E8BF2253624009771D609C9B42C08042BB382353624093B483959D9B42C00102000000030000008042BB382353624093B483959D9B42C029A84D4123536240AF1177AB9D9B42C068DD7F43235362408F003EB19D9B42C001020000000400000068DD7F43235362408F003EB19D9B42C06D6EF195255362407542F9CCA39B42C0B45FD27326536240543948E3AB9B42C014C1199126536240AA35997FB29B42C001020000000300000014C1199126536240AA35997FB29B42C00D912E91265362407B2A4C84B29B42C033824391265362403ADE5C8CB29B42C001020000000800000033824391265362403ADE5C8CB29B42C09F5912A026536240E9CD4D40B89B42C01FFC1FBB26536240690A534ABE9B42C0D130C6D126536240AC6AEE8DC69B42C04A2DA5782653624092729C80CB9B42C08DA9054026536240C693933FCE9B42C06A49EC7F2553624089C6DADFD99B42C06A49EC7F25536240B5824B6CE39B42C00102000000030000006A49EC7F25536240B5824B6CE39B42C08CACA1792553624054B02193E79B42C028C8389225536240B1B2DCC4EA9B42C001020000000300000028C8389225536240B1B2DCC4EA9B42C034C0609225536240AAD50DCAEA9B42C06903899225536240E136F4D0EA9B42C00102000000030000006903899225536240E136F4D0EA9B42C0648918C025536240C52CC59FF29B42C055733674255362408FF14B65F89B42C001020000000300000055733674255362408FF14B65F89B42C0611FF873255362401689096AF89B42C0A2FEEF7325536240734F8D6AF89B42C0010200000004000000A2FEEF7325536240734F8D6AF89B42C0E14ED83425536240618A7269FC9B42C04E89905F245362400455A357039C42C05570EB7223536240D1AE8EAD089C42C00102000000030000005570EB7223536240D1AE8EAD089C42C080E2B66C2353624084D95FD1089C42C067919A532353624047F40262099C42C001020000001200000067919A532353624047F40262099C42C093FF7F52235362402B8E5E68099C42C02E68210123536240D7E5EF390B9C42C015D9733E21536240AA549ADE0F9C42C013FFC1D11F5362403DD4B661149C42C0A65714C01E536240E82510C0179C42C021E7FD7F1C53624061E75C401E9C42C049360D40195362408DA90540269C42C0C0E50C2017536240A06B5F402F9C42C0A77E390E17536240210AC105349C42C06EB99FF816536240AE9E93DE379C42C08F6A7D36175362405DBB59283E9C42C0D955ED3F17536240F7EFB03F3F9C42C02CF587C11753624072EB7FCA429C42C06516461F18536240651DE967459C42C01FFC7A74195362404813EF004F9C42C0ACF545421B536240EB8F300C589C42C0D7E7209E1B5362406D0CF093599C42C0010200000006000000D7E7209E1B5362406D0CF093599C42C026D6F37F1853624074FE37407A9C42C0F8D51C20185362405C210780859C42C05105ED1F15536240742497FF909C42C08B04094012536240B73302E08E9C42C07DFCE9F90D536240AEAFF2BC8C9C42C00102000000030000007DFCE9F90D536240AEAFF2BC8C9C42C0FFB7EDD60D5362406F8D74AB8C9C42C01D5B0BC90D53624083D659A48C9C42C00102000000050000001D5B0BC90D53624083D659A48C9C42C02982EE810C53624083E4F8FC8B9C42C08432E8DF09536240B3823A408B9C42C021510DA0045362406CC207C0899C42C032B540D70253624065632B59899C42C001020000000300000032B540D70253624065632B59899C42C03A3DEFC60253624096B77E55899C42C0B4E186C20253624073FA6E54899C42C001020000001A000000B4E186C20253624073FA6E54899C42C03C32569BFF5262401F590A92889C42C04562821AFE526240D117E714899C42C0554FE61FFD52624025726660899C42C0BD5DE5BFF6526240E68013C0839C42C0392BFDDFEC526240BF6F32607F9C42C07CF9F8DFE5526240FA3F2C40809C42C0BCC7F4DFDE52624002124DA0889C42C07356FABFD95262402FF54E60959C42C023F609A0D85262408DD13AAA9A9C42C09E85F35FD65262407009C03FA59C42C0B524F6BFD2526240AA6FAAFFBD9C42C0B524F6BFD2526240AE934440CF9C42C0756506E0D5526240861854C0E29C42C00E661360D85262405B79C9FFE49C42C0BBE70A00DF52624020A9CF1FE49C42C0B2FAD97EE8526240E8667FA0DC9C42C068267387E852624024230CA8DC9C42C063207475EC526240C4D21B49DD9C42C0C17BFDFFEE526240FDCAEFD9DF9C42C0E7BB00A0EF5262401CF80780E09C42C0D4FCE71FF35262409649C3DFE59C42C07CCD1720F65262406A8A5B60EA9C42C0B44AFAC5F65262403385CE6BEC9C42C0483547B1F7526240DF7A0382EF9C42C09FD236B6F9526240C0AB8558F79C42C00102000000030000009FD236B6F9526240C0AB8558F79C42C04FE339B6F95262408D919158F79C42C0579710B7F9526240AD61EC5BF79C42C0010200000005000000579710B7F9526240AD61EC5BF79C42C07ABE0B00FA52624033FED87FF89C42C0F05EFFBFFB5262401870E01F009D42C0169F0260FC526240E47107A0079D42C0169F0260FC526240E90E62670A9D42C0010200000007000000169F0260FC526240E90E62670A9D42C037F4BB55FC526240FE2A1B310E9D42C01A828879FB5262405A8B0574159D42C0B2AE1B00FB5262402DE64240199D42C0B86EEFBFFA52624056F723A01D9D42C0350DE59FF45262401F6BA1BF2B9D42C02CAFD096E0526240000000E04F9D42C0 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-398.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-398.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-398.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-398.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,42 @@ + + +http://trac.osgeo.org/geos/ticket/398 + + + + + + +MULTIPOLYGON (((60.0 6.5105151320986412, +44.0044859469790026 11.6931320480208569, 0.0 25.9507790663861222, +0.0 26.8608278557796467, 0.0 29.8387923019253307, 60.0 10.3985283676378408, +60.0 7.8021345594223774, 60.0000000000000000 6.6570998796460161, 60.0 +6.5105151320986412)), ((43.3161197496508308 0.0, +0.0 0.0, 0.0 14.0346133423735822, 0.0 17.9226661292310787, +0.0 21.5874865260243638, 34.0258524396557860 +6.8981402622972743, 55.3161197496508308 0.0, +50.0044466166182886 0.0, 43.3161197496508308 +0.0)), ((13.4455725323347899 36.0, +60.0 36.0, 60.0 16.7944518298098018, 60.0 16.3644011555093201, +60.0 14.0439960304547569, 2.9187843276549756 +36.0, 11.8945390820010992 36.0, 13.4455725323347899 36.0))) + + +POLYGON ((50.0044466166182886 0.0, +0.0 21.5874865260243638, 0.0 +35.7392139719321804, 60.0 13.1838946818537934, +60.0 0.0, 50.0044466166182886 0.0)) + + + +MULTIPOLYGON (((0 25.950779066386122, 0 26.860827855779647, 0 29.83879230192533, 0 35.73921397193218, 60 13.183894681853793, 60 10.39852836763784, 60 7.802134559422377, 60 6.657099879646016, 60 6.510515132098641, 60 0, 55.31611974965083 0, 50.00444661661829 0, 43.31611974965083 0, 0 0, 0 14.034613342373582, 0 17.92266612923108, 0 21.587486526024364, 0 25.950779066386122), + (0 21.587486526024364, 34.025852439655786 6.898140262297274, 34.02585243965579 6.898140262297273, 0 21.587486526024364)), + ((13.44557253233479 36, 60 36, 60 16.794451829809802, 60 16.36440115550932, 60 14.043996030454757, 2.9187843276549756 36, 11.8945390820011 36, 13.44557253233479 36))) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-434.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-434.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-434.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-434.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,77 @@ + + + http://trac.osgeo.org/geos/ticket/434 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + http://trac.osgeo.org/geos/ticket/434 + + +010300000001000000260000000000000012E136C100000000584704C17CCA693DFB9437C15F3458D7B8CA0AC17CCA693DFB9437C15E3458D7B8CA0AC1A15FFC2B329E37C1BBC9994706040BC1A15FFC2B329E37C1BCC9994706040BC10000000005AD37C10000000070BE04C100000000371438C1000000003074FEC0000000004DAF38C100000000A0DFE7C000000000DA3D39C10000000000289DC000000000121639C1000000000005E54000000000900A39C100000000404AF74000000000C33B39C100000000D84A034100000000878538C10000000098A10141C50E55840D0238C1504578023004FF4028952472DBE037C1EFD75A166897FD40B301719AFEDB37C115B828D1D1A5FD40240E3BD05F0537C1FAC38571278CF740322F8AA7A60437C146F1AC8AA08BF7406F06AC4CCD0237C1A29F2ECC947EF74091E37943ACB336C1E9D63E5D7FEBF74000000000B6C435C10000000020F1F840000000000E1E35C100000000209EFA4000000000BCBB33C1000000008815014100000000CAEF33C1000000002032F74000000000EE5134C10000000000F1DB40000000008ADD34C1000000008099CBC0E42825B8ED4F35C13972434F3048EEC079DE4959ABE935C1B7656ADAE51FE0C051400DD809C635C1001FCAB19AC1AA4023302240A30436C144723E9FFB13E0C0A98D3A4CC8A436C1F7F77487DBB2DFC06E7AF552B50036C1D559460AE05EE2C07870019EB07335C1681A197BE5D2F0C0DCC23BB59DA135C1BFEB4186272FFDC014961A1FF69D35C1CDEE1C7F6F09FEC0D4BA81C7E60236C186226939A60305C10FAF8B543D0536C15716FC2B2C0D05C10000000012E136C100000000584704C1 + + + +POLYGON ((-1565260.6206011446 111732.66899895086, -1512637.4197541769 +87800.91348955338, -1511887.9553205783 87542.9550616941, +-1511879.1656611576 87539.07911020475, -1510380.224568009 +87022.64683612906, -1508816.2815230151 86762.62982427831, +-1507230.8751184365 86766.26668522462, -1487056.6518885682 +88501.80293939149, -1425965.3129563173 92682.16829688638, +-1425104.6790447247 92780.63793183706, -1382440.6790447247 +99644.63793183706, -1380883.552616635 100032.3964705434, +-1307581.025805522 125025.53084629907, -1315580.6801167233 +98046.05735775629, -1340013.0573368135 33475.88610080863, +-1374723.4937759638 -8035.814646773755, -1375540.3966797974 +-9173.749061246888, -1399420.6762844694 -48224.22717737771, +-1425311.2385910228 -29150.93862345213, -1417736.1160114263 +1117.9654269575603, -1417462.389107992 2977.2656135774496, +-1417559.9528732277 4854.072719633237, -1418024.990767285 +6674.969026049172, -1418839.3112448766 8368.723955607617, +-1419971.0593796924 9869.080500222728, -1421375.9629786243 +11117.347090073301, -1422999.064439784 12064.693514782575, +-1424776.8706067775 12674.06108384778, -1426639.8365203394 +12921.612303871138, -1428515.0859069047 12797.663363516955, +-1430329.261982915 12307.062948861332, -1432011.397055914 +11469.00257047849, -1433495.6886681858 10316.265821967412, +-1434724.073684598 8893.945937735312, -1435648.499630413 +7257.681817144551, -1449143.4561333996 -23354.810616285424, +-1483867.7348210595 -22958.05034354897, -1485776.6295743138 +-23129.542180347664, -1487612.279399581 -23680.612364703436, +-1489300.0024860846 -24588.84108720258, -1490771.1352932872 +-25817.277855075656, -1491965.8260670996 -27315.944790741232, +-1492835.4698562517 -29023.869938128897, -1493344.6859623056 +-30871.56785348871, -1493472.7573724887 -32783.86656001538, +-1493214.473613273 -34682.965854105925, -1492580.3427339422 +-36491.60253873035, -1491596.1637957809 -38136.19380915876, +-1490301.9772597842 -39549.830905140276, -1488750.4359754561 +-40675.00123540831, -1487004.6630455877 -41465.928227252676, +-1485135.683717921 -41890.43370642135, -1446007.6029769813 +-46700.584262917684, -1416423.8835601667 -72339.85858975082, +-1426885.4130973895 -117389.06894304338, -1427130.3703204703 +-119697.9017421352, -1426824.687619137 -121878.75478429934, +-1448107.0131300709 -162332.10613743018, -1498347.8261209533 +-156680.5537782484, -1500189.4513298413 -156653.02325111572, +-1502001.7906441302 -156981.3029334265, -1503716.7500390832 +-157653.05855387077, -1505269.8942919231 -158643.0506092964, +-1506602.8679708943 -159914.08267462972, -1539977.4973322283 +-198577.71596101607, -1542144.8124445549 -169234.09042439144, +-1542547.1855037627 -167113.735032329, -1543417.6618736198 +-165138.87251636875, -1569723.593278455 -120135.5955899725, +-1609322.6038058014 -44486.34486061129, -1610234.1160785698 +-43067.65041476705, -1643974.2956479487 411.9052427339163, +-1634783.2308133794 40946.81156439988, -1634563.0113663338 +42514.09863767898, -1631617.0113663338 94862.09863767898, +-1631788.403045867 97268.87409831762, -1641289.145133498 +144525.1654491555, -1610591.364441635 135570.87839490557, +-1578279.3072280572 118874.10762665431, -1570270.8915449486 +113373.9089381907, -1568640.3591467661 112475.31692187724, +-1566865.9081669166 111911.91011199991, -1565260.6206011446 +111732.66899895086)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-459.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-459.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-459.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-459.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,21 @@ + + http://trac.osgeo.org/geos/ticket/459 + + + + +0102000000080000003C0AD7E32D4E3A4152B81E250A4452412085EB91284A3A417A14AE2719445241285C8F42354A3A41A4703D6A1E445241CCCCCC0C474A3A415C8FC2851E445241C4F5289C4B4A3A415C8FC2C52B445241BE08DEAE534E3A41B1B518AB1F44524100000000604E3A419A9999C9064452413C0AD7E32D4E3A4152B81E250A445241 + + +010200000009000000B89C2EFE364A3A41DFC087291F445241545C8F42354A3A41A4703D6A1E4452418CEC6D6F354A3A41FE7E44D31D44524136C80FA4394A3A412D7F89121D445241409B06043D4A3A415860C1CC1C445241360D6849404A3A4136B46EC91C445241FC25CB4B474A3A41B72FD41F1D445241CDCCCC0C474A3A415C8FC2851E445241181E3474434A3A4116CE6F471F445241 + + + + +0105000000060000000102000000040000003C0AD7E32D4E3A4152B81E250A4452412085EB91284A3A417A14AE2719445241285C8F42354A3A41A4703D6A1E445241545C8F42354A3A41A4703D6A1E445241010200000002000000545C8F42354A3A41A4703D6A1E445241CDCCCC0C474A3A415C8FC2851E445241010200000005000000CDCCCC0C474A3A415C8FC2851E445241C4F5289C4B4A3A415C8FC2C52B445241BE08DEAE534E3A41B1B518AB1F44524100000000604E3A419A9999C9064452413C0AD7E32D4E3A4152B81E250A445241010200000002000000B89C2EFE364A3A41DFC087291F445241545C8F42354A3A41A4703D6A1E445241010200000007000000545C8F42354A3A41A4703D6A1E4452418CEC6D6F354A3A41FE7E44D31D44524136C80FA4394A3A412D7F89121D445241409B06043D4A3A415860C1CC1C445241360D6849404A3A4136B46EC91C445241FC25CB4B474A3A41B72FD41F1D445241CDCCCC0C474A3A415C8FC2851E445241010200000002000000CDCCCC0C474A3A415C8FC2851E445241181E3474434A3A4116CE6F471F445241 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-488.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-488.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-488.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-488.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,45 @@ + + + + http://trac.osgeo.org/geos/ticket/488 + + + + + + This used to be a TopologyException unioning two valid polygons. + Cause was very high precision causing almost-coincident line segments. + This causes robustness failures in noding in JTS 1.12. + Reduced version. + + +01060000000100000001030000000100000005000000DF52A140EC490340251EBD88237048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB014212704840002EF0471C4C0340EC39718803704840DF52A140EC490340251EBD8823704840 + + +01060000000200000001030000000100000004000000EF54EBB0384B03403FC50B78F36F484040B01B9F1C4C0340A9FB0142127048404F7F9BC7814D0340D9C5653E12704840EF54EBB0384B03403FC50B78F36F4840010300000001000000040000008D246CEE344E034016CFC66D597048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB0142127048408D246CEE344E034016CFC66D59704840 + + + +01030000000100000007000000DF52A140EC490340251EBD8823704840E66E8AF0484C034079579A23187048408D246CEE344E034016CFC66D597048404F7F9BC7814D0340D9C5653E12704840EF54EBB0384B03403FC50B78F36F484032DCBFEACF4B034080B385E507704840DF52A140EC490340251EBD8823704840 + + + + + + + This used to be a TopologyException unioning two valid polygons. + Cause is very high precision causing almost-coincident line segments. + This causes robustness failures in noding in JTS 1.12. + Full version, using UnaryUnion. + + + 01070000000800000001030000000100000017000000655E3A27EC4703406906F11FE66F48407285047CEC4703400D8482D9F46F484029EB1855874603407741FDDCF46F4840409518A987460340F4658E9603704840B888AA59BD43034025CD6A9D03704840D8D514ACBD4303404A9AFB5612704840806492835842034008445D5A127048408858D22659420340B8D07DCD2F704840F888EA50BE4303404E231CCA2F704840FCEE55A3BE43034025DFAB833E704840AFA238CE23450340B2D241803E7048401F486F21244503408B31D1394D704840CCCD75A45349034040D7602F4D7048406A9947F952490340C5C941BC2F704840F56B8977824D03401F3486B12F7048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB014212704840002EF0471C4C0340EC397188037048401ADA3A20B74A0340A210058C037048402798DAC9B64A0340E1F173D2F46F48406022AF17814D03403BEB43CBF46F4840CB89B9BF804D03405375B211E66F4840655E3A27EC4703406906F11FE66F4840010300000002000000160000005A59B2EB13530340E0CCA41CAB6F48405AC5D14614530340D2A637D6B96F4840E03957FF495003403886AADDB96F48400F5AE1584A50034036093D97C86F48406384CF0F804D034067788E9EC86F48404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB0142127048408A9547F61C4C0340516292FB2070484078A940254D5003408D53C4633E7048402D5DCE7E4D500340E8A2531D4D7048400E3B22D617530340FC9AE0154D704840D919463118530340228B6FCF5B70484063CDDE9B775B0340CD31DC716A704840F24C3EADAA580340574EC66603704840169AEFD40F5A034042D4DE620370484086DEF9DC735B03402ED93A32D76F4840F92E99273E5E03405720422AD76F4840F0AB1DAC07610340ED7A03AFB96F484068C81149076103404DB670F5AA6F48405AC22326A25F0340CEF481F9AA6F484025CD6488A25F0340A0BB14B3B96F48405A59B2EB13530340E0CCA41CAB6F484005000000BCF099184C500340C3421437127048403F7326724C50034076A3A4F020704840DF8DDC48E74E0340949551F42070484070EA1AF0E64E0340E032C13A12704840BCF099184C500340C3421437127048400103000000010000000500000016D36D62BC4303405943B670D76F48405807D7B4BC430340A921482AE66F48402E83F8DA214503405620DE26E66F48406F73C48721450340E3434C6DD76F484016D36D62BC4303405943B670D76F4840010300000002000000170000006A9947F952490340C5C941BC2F704840CCCD75A45349034040D7602F4D704840167F1C4D89460340FFC55E364D704840C1651EA189460340D4C7EDEF5B704840F71F96CDEE4703402BFD72EC5B704840AB496322EF470340F0A101A66A7048402387A54F5449034021787EA26A704840AAF53DA554490340CABF0C5C7970484060B64AD3B94A0340CD368158797048408A6BAE29BA4A03405C210F1288704840570D33B6E94E0340C9503A078870484009A86E5DE94E03401F6CAC4D797048402CD0AB71485703403F00213779704840E474261448570340A4CC927D6A7048402B536441AD580340F4A0B3796A704840947E14E3AC5803404A1425C05B704840D919463118530340228B6FCF5B7048400E3B22D617530340FC9AE0154D7048402D5DCE7E4D500340E8A2531D4D70484077A940254D5003408D53C4633E7048403E0361FAE74E0340AC4971673E70484023969EA1E74E0340329DE1AD2F7048406A9947F952490340C5C941BC2F704840050000002EF880CF824D034094E2156B3E70484057E87827834D0340EC35A5244D7048409097CDFB1D4C0340957341284D7048403089A0A41D4C0340491EB26E3E7048402EF880CF824D034094E2156B3E70484001030000000100000015000000F2AB10721F3E0340743421EB496E484097F444C11F3E034025AEBCA4586E4840CCF603D2843F0340765174A1586E4840835D0322853F0340C36E0F5B676E484032977910203E034040CD575E676E4840C193AE5F203E0340B791F217766E4840131F0372853F03406E31AA14766E4840803B03C2853F0340759944CE846E484078CC40E84F42034052BF9AC7846E4840EA326D8B504203401D78CE3AA26E48403A6ED4B41A450340E2230334A26E4840477DA8611A4503408878697A936E4840FEC590757F4603403745F776936E4840B66C9A217F4603400C415DBD846E4840458FB734E4470340F1B2E2B9846E4840E76F368BE34703406B9EAD46676E484031E12668194503406C569A4D676E4840156AFC14194503407040FF93586E4840B1D83E04B4430340A00F6997586E48403A83DFB1B34303402A9DCDDD496E4840F2AB10721F3E0340743421EB496E48400103000000020000000F000000C039DB99564203405A14F300BA6F484021D5163D57420340B6E51774D76F48408DB20FCD273E0340559E0A7ED76F4840676279928D3F0340BA7FE5EDF46F484016998B6B283E03406C0E2EF1F46F4840B5E7080A293E03404612506412704840D8D514ACBD4303404A9AFB5612704840B888AA59BD43034025CD6A9D037048403F9518A987460340F4658E9603704840655E3A27EC4703406906F11FE66F4840CA89B9BF804D03405375B211E66F4840380346EB1A4C034069A42AA2C86F4840C0D831A25049034034E549A9C86F4840F7F89D4C504903406558B7EFB96F4840C039DB99564203405A14F300BA6F4840050000006E73C48721450340E3434C6DD76F48402E83F8DA214503405620DE26E66F48405807D7B4BC430340A921482AE66F484016D36D62BC4303405943B670D76F48406E73C48721450340E3434C6DD76F4840010300000001000000050000009351D4474949034027C85FB6846E48406F38609D4949034086C8F96F936E48405C6047B1AE4A0340227F6E6C936E4840B7B2F05AAE4A0340B480D4B2846E48409351D4474949034027C85FB6846E4840010300000001000000050000002798DAC9B64A0340E1F173D2F46F484040B01B9F1C4C0340A9FB0142127048404F7F9BC7814D0340D9C5653E127048405F22AF17814D03403BEB43CBF46F48402798DAC9B64A0340E1F173D2F46F4840 + + + +01060000000300000001030000000100000015000000F2AB10721F3E0340743421EB496E484097F444C11F3E034025AEBCA4586E4840CCF603D2843F0340765174A1586E4840835D0322853F0340C36E0F5B676E484032977910203E034040CD575E676E4840C193AE5F203E0340B791F217766E4840131F0372853F03406E31AA14766E4840803B03C2853F0340759944CE846E484078CC40E84F42034052BF9AC7846E4840EA326D8B504203401D78CE3AA26E48403A6ED4B41A450340E2230334A26E4840477DA8611A4503408878697A936E4840FEC590757F4603403745F776936E4840B66C9A217F4603400C415DBD846E4840458FB734E4470340F1B2E2B9846E4840E76F368BE34703406B9EAD46676E484031E12668194503406C569A4D676E4840156AFC14194503407040FF93586E4840B1D83E04B4430340A00F6997586E48403A83DFB1B34303402A9DCDDD496E4840F2AB10721F3E0340743421EB496E4840010300000001000000050000009351D4474949034027C85FB6846E48406F38609D4949034086C8F96F936E48405C6047B1AE4A0340227F6E6C936E4840B7B2F05AAE4A0340B480D4B2846E48409351D4474949034027C85FB6846E484001030000000700000036000000C039DB99564203405A14F300BA6F484021D5163D57420340B6E51774D76F48408DB20FCD273E0340559E0A7ED76F4840676279928D3F0340BA7FE5EDF46F484016998B6B283E03406C0E2EF1F46F4840B5E7080A293E03404612506412704840D8D514ACBD4303404A9AFB5612704840816492835842034008445D5A127048408758D22659420340B8D07DCD2F704840F888EA50BE4303404E231CCA2F704840FDEE55A3BE43034025DFAB833E704840AFA238CE23450340B2D241803E70484020486F21244503408B31D1394D704840CCCD75A45349034040D7602F4D704840177F1C4D89460340FFC55E364D704840C2651EA189460340D3C7EDEF5B704840F91F96CDEE4703402BFD72EC5B704840AC496322EF470340F0A101A66A7048402487A54F5449034021787EA26A704840AAF53DA554490340CABF0C5C7970484061B64AD3B94A0340CD368158797048408A6BAE29BA4A03405B210F1288704840570D33B6E94E0340C9503A07887048400AA86E5DE94E03401F6CAC4D797048402DD0AB71485703403F00213779704840E474261448570340A4CC927D6A7048402C536441AD580340F5A0B3796A7048407D7FF321AD5803401D780B916570484064CDDE9B775B0340CD31DC716A704840F34C3EADAA580340574EC66603704840179AEFD40F5A034042D4DE620370484087DEF9DC735B03402ED93A32D76F4840F92E99273E5E03405720422AD76F4840F1AB1DAC07610340ED7A03AFB96F484068C81149076103404DB670F5AA6F48405BC22326A25F0340CEF481F9AA6F484025CD6488A25F0340A1BB14B3B96F48405B59B2EB13530340E0CCA41CAB6F48405AC5D14614530340D2A637D6B96F4840E13957FF495003403886AADDB96F48400F5AE1584A50034036093D97C86F48406484CF0F804D034067788E9EC86F4840507F9BC7814D0340D9C5653E127048406022AF17814D03403BEB43CBF46F4840CB89B9BF804D03405375B211E66F4840665E3A27EC4703406A06F11FE66F48407285047CEC4703400D8482D9F46F4840485227E839470340C4E33FDBF46F4840655E3A27EC4703406906F11FE66F4840CA89B9BF804D03405375B211E66F4840380346EB1A4C034069A42AA2C86F4840C0D831A25049034034E549A9C86F4840F7F89D4C504903406558B7EFB96F4840C039DB99564203405A14F300BA6F484004000000B888AA59BD43034025CD6A9D037048403F9518A987460340F4658E9603704840429518A987460340F4658E9603704840B888AA59BD43034025CD6A9D03704840040000002898DAC9B64A0340E1F173D2F46F4840EF4C7DB4694B03403D243B8A0370484019DA3A20B74A0340A210058C037048402898DAC9B64A0340E1F173D2F46F48400400000025BB365A824D0340CBF1F0C82A7048402BB8160E354E0340DF9EADAF2F70484002218977824D034056A879B12F70484025BB365A824D0340CBF1F0C82A70484004000000935A34BFE74E034062EC56963470484078A940254D5003408D53C4633E7048403E0361FAE74E0340AB4971673E704840935A34BFE74E034062EC56963470484005000000BDF099184C500340C342143712704840417326724C50034076A3A4F020704840DE8DDC48E74E0340949551F42070484070EA1AF0E64E0340E032C13A12704840BDF099184C500340C3421437127048400500000030F880CF824D034094E2156B3E70484058E87827834D0340EC35A5244D7048409297CDFB1D4C0340957341284D7048403189A0A41D4C0340491EB26E3E70484030F880CF824D034094E2156B3E704840 + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-527.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-527.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-527.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-527.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,27 @@ + + + + + + +Bogus noding +http://trac.osgeo.org/geos/ticket/527 + + +LINESTRING( + 1725063 4819121, + 1725064.14183882 4819094.70208557, + 1725064.13656044 4819094.70235069, + 1725064.14210362 4819094.70227252, + 1725064.13656043 4819094.70235069, + 1725063 4819121 +) + + + +MULTILINESTRING((1725063 4819121,1725064.14183054 4819094.70227637),(1725064.14183054 4819094.70227637,1725064.14183882 4819094.70208557,1725064.13656044 4819094.70235069),(1725064.13656044 4819094.70235069,1725064.14183054 4819094.70227637),(1725064.14183054 4819094.70227637,1725064.14210362 4819094.70227252,1725064.14183054 4819094.70227637),(1725064.13656044 4819094.70235069,1725064.13656043 4819094.70235069,1725063 4819121)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-569.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-569.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-569.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-569.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + http://trac.osgeo.org/geos/ticket/569 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + http://trac.osgeo.org/geos/ticket/569 + + +POLYGON((0 0, 50 100, 30 130, 124 290, 82 144, 129 289, 120 140, 170 135, 0 0))' + + + +POLYGON((15.5470535900397 -19.5777711874573,11.4976107110387 -22.1992105250932,7.0200900440899 -23.9941312777285,2.2811981503014 -24.8957051516735,-2.54262706420865 -24.8703648467881,-7.27178546518863 -23.91905383054,-11.730201542863 -22.0771912109266,-15.7518800361076 -19.4133530161091,-19.1870862499068 -16.026718979212,-21.9079209611867 -12.0433798893166,-23.8130823487386 -7.61164299295461,-24.8316376515772 -2.89651023488152,-24.9256641297612 1.92646507633405,-24.0916609997104 6.67771444994727,-22.3606797749979 11.1803398874989,21.1511170340587 98.2039335056121,9.19874264155391 116.132495094369,6.98783622003994 120.23064392274,5.57528365445842 124.667717989469,5.01009019256528 129.289783261055,5.31186391571979 133.936487861541,6.47013548180344 138.446625110381,8.44472133485679 142.663726215772,102.444721334857 302.663726215772,105.268944378042 306.557401827796,108.786574484237 309.838137112046,112.867392107363 312.384482158602,117.360328999059 314.102173532677,122.09906062123 314.927623823346,126.908163332901 314.830275593097,131.223450301601 313.897227411553,131.262110575215 313.897446771617,135.985092572393 313.004342976951,140.449858682776 311.223877612704,144.491361195318 308.621868624476,147.960199061366 305.294503722218,150.728140759799 301.364784637119,152.692864594398 296.977980152364,153.781741190247 292.296255994245,153.954518362728 287.492680098896,146.403677896142 162.484321263188,172.487592975525 159.87592975525,177.321907493882 158.9037585047,181.871362160861 157.001608133172,185.958959796235 154.243482071137,189.425671833216 150.736685604923,192.13662534744 146.617651149311,193.98635030725 142.046630325048,194.902882900269 137.201459346772,194.85056529574 132.270640279816,193.831432917501 127.446007340574,191.885135255529 122.915263559051,189.087393296904 118.854678165818,185.54705359004 115.422228812543,15.5470535900397 -19.5777711874573)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-582.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-582.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-582.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-582.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,13 @@ + + + + + GC - overlapping polygons + + MULTIPOLYGON(EMPTY,((0 0,1 0,1 1,0 1, 0 0))) + + POINT (0.5 0.5) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-586.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-586.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-586.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-586.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,21 @@ + + + + + +http://trac.osgeo.org/geos/ticket/586 + + + 01060000000100000001030000000100000007000000FC9C4034A1C957C029FEFB19D9684A40F1502ADE523F56C061588FDD786C4C40417FBC44E19552C0D08D9DDB067C464089A1316892B753C02DCD95C08B6E4540BB379A190BBD54C058F25D2DADFE4440314E4AB97BC857C0C042B6CF69B74840FC9C4034A1C957C029FEFB19D9684A40 + + +0102000020E61000001A0000009D11A5BDC19754C005172B6A305D454008944DB9C29754C0A1B94E232D5D454044FAEDEBC09754C07099D365315D45409D11A5BDC19754C05A0D897B2C5D454012DA722EC59754C07099D365315D4540793BC269C19754C07EE36BCF2C5D454008944DB9C29754C0936FB6B9315D4540C0E78711C29754C03012DA722E5D454020240B98C09754C0459E245D335D4540E4BD6A65C29754C0697407B1335D45409D11A5BDC19754C03012DA722E5D45408481E7DEC39754C0B745990D325D4540793BC269C19754C03012DA722E5D45402B6A300DC39754C04CC3F011315D454020240B98C09754C0697407B1335D454008944DB9C29754C0DA1B7C61325D454020240B98C09754C0A1B94E232D5D45402B6A300DC39754C0B745990D325D45409D11A5BDC19754C0C58F31772D5D4540D97745F0BF9754C0B745990D325D4540C0E78711C29754C04CC3F011315D4540793BC269C19754C01361C3D32B5D4540FD4D2844C09754C0BE6A65C22F5D454008944DB9C29754C0B745990D325D454020240B98C09754C03737A6272C5D4540C0E78711C29754C077BE9F1A2F5D4540 + + + + 0105000000C6000000010200000003000000A72D26D9C09754C07C4791C32D5D4540FD4D2844C09754C0BE6A65C22F5D45401D9292AFC09754C06B77A626305D4540010200000003000000B336AFDEC09754C0C6DE96B02D5D454020240B98C09754C0A1B94E232D5D4540A72D26D9C09754C07C4791C32D5D4540010200000003000000D1DF4401C19754C074634670335D454020240B98C09754C0697407B1335D4540F1DB3BDBC09754C0B5055C69335D45400102000000030000000CE30A0DC19754C00FB5A5112D5D454020240B98C09754C03737A6272C5D4540AC7885FEC09754C04D216F432D5D45400102000000030000006E25D927C19754C06944CB7D315D4540D97745F0BF9754C0B745990D325D45401D9292AFC09754C06B77A626305D45400102000000030000006E25D927C19754C06944CB7D315D454020240B98C09754C0459E245D335D4540F1DB3BDBC09754C0B5055C69335D4540010200000003000000ADF7A63BC19754C0652B64A9305D454044FAEDEBC09754C07099D365315D4540C8F3D611C19754C0E3C05D82305D4540010200000003000000C5B7DC8EC19754C0E54297FC2C5D4540793BC269C19754C01361C3D32B5D45400CE30A0DC19754C00FB5A5112D5D4540010200000003000000FDF7C694C19754C08EA6BD702D5D4540793BC269C19754C07EE36BCF2C5D4540C5B7DC8EC19754C0E54297FC2C5D454001020000000300000027C48C03C29754C0F6A517A2305D4540C0E78711C29754C04CC3F011315D4540C4995FCDC19754C099D36531315D45400102000000030000004D93640BC29754C0CFD54F872E5D45409D11A5BDC19754C0C58F31772D5D4540798753A6C19754C08EC08CB22D5D45400102000000030000008EE0D019C29754C0EEED469C2E5D4540C0E78711C29754C03012DA722E5D45404D93640BC29754C0CFD54F872E5D4540010200000003000000DE327644C29754C0C71C63A9325D4540E4BD6A65C29754C0697407B1335D4540D1DF4401C19754C074634670335D4540010200000003000000AD4CEB75C29754C0C35E27FC2F5D45408481E7DEC39754C0B745990D325D4540A328DC48C29754C07E60725E2F5D4540010200000003000000B1406982C29754C067C45DDA315D454008944DB9C29754C0DA1B7C61325D4540DE327644C29754C0C71C63A9325D454001020000000300000036D7BD86C29754C01103D19A2D5D45409D11A5BDC19754C05A0D897B2C5D4540E060DFA3C19754C057322B162D5D4540010200000003000000E707068FC29754C06C5F8498315D454008944DB9C29754C0B745990D325D4540B1406982C29754C067C45DDA315D45400102000000030000001FA80991C29754C0A77686A92D5D454008944DB9C29754C0A1B94E232D5D454036D7BD86C29754C01103D19A2D5D45400102000000030000001FA80991C29754C0A77686A92D5D454012DA722EC59754C07099D365315D4540EA20F971C29754C062E412112E5D4540010200000003000000E0C165ACC29754C088542F79315D454008944DB9C29754C0936FB6B9315D45401E5D0CA9C29754C023E2C17C315D4540010200000003000000A9DB14D6C29754C0AAD2B84C315D45402B6A300DC39754C0B745990D325D4540456C20BBC29754C0EB497969315D4540010200000003000000A9DB14D6C29754C0AAD2B84C315D45402B6A300DC39754C04CC3F011315D454050C7BC88C29754C04F8B043E305D4540010200000002000000B336AFDEC09754C0C6DE96B02D5D4540A72D26D9C09754C07C4791C32D5D4540010200000002000000AC7885FEC09754C04D216F432D5D4540B336AFDEC09754C0C6DE96B02D5D4540010200000002000000D1DF4401C19754C074634670335D4540F1DB3BDBC09754C0B5055C69335D45400102000000020000000CE30A0DC19754C00FB5A5112D5D4540AC7885FEC09754C04D216F432D5D4540010200000002000000C8F3D611C19754C0E3C05D82305D45401D9292AFC09754C06B77A626305D4540010200000002000000ADF7A63BC19754C0652B64A9305D4540C8F3D611C19754C0E3C05D82305D454001020000000200000036EC0E3EC19754C04992F5BB2E5D45401D9292AFC09754C06B77A626305D454001020000000200000036EC0E3EC19754C04992F5BB2E5D4540A72D26D9C09754C07C4791C32D5D4540010200000002000000DF48EA4EC19754C01E030D912E5D4540B336AFDEC09754C0C6DE96B02D5D4540010200000002000000DF48EA4EC19754C01E030D912E5D454036EC0E3EC19754C04992F5BB2E5D454001020000000200000010E96754C19754C0A600F8F22E5D4540C8F3D611C19754C0E3C05D82305D454001020000000200000010E96754C19754C0A600F8F22E5D454036EC0E3EC19754C04992F5BB2E5D45400102000000020000005C55F65DC19754C057FA69C9305D45406E25D927C19754C06944CB7D315D45400102000000020000005C55F65DC19754C057FA69C9305D4540ADF7A63BC19754C0652B64A9305D4540010200000002000000B5E0455FC19754C0CA32C4B12E5D4540DF48EA4EC19754C01E030D912E5D4540010200000002000000B5E0455FC19754C0CA32C4B12E5D454010E96754C19754C0A600F8F22E5D45400102000000020000006663CC63C19754C063BFE45B2E5D4540AC7885FEC09754C04D216F432D5D45400102000000020000006663CC63C19754C063BFE45B2E5D4540DF48EA4EC19754C01E030D912E5D4540010200000002000000793BC269C19754C03012DA722E5D4540B5E0455FC19754C0CA32C4B12E5D4540010200000002000000C79B7E6AC19754C0E8D06F6E2E5D45406663CC63C19754C063BFE45B2E5D4540010200000002000000C79B7E6AC19754C0E8D06F6E2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000526EB66EC19754C0C9181E7A2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000526EB66EC19754C0C9181E7A2E5D4540C79B7E6AC19754C0E8D06F6E2E5D4540010200000002000000CD0C476FC19754C0C094AE7B2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000CD0C476FC19754C0C094AE7B2E5D4540526EB66EC19754C0C9181E7A2E5D454001020000000200000067DECB74C19754C09F40A0302E5D45406663CC63C19754C063BFE45B2E5D454001020000000200000067DECB74C19754C09F40A0302E5D4540C79B7E6AC19754C0E8D06F6E2E5D454001020000000200000002F1BA7EC19754C0FAD005F52D5D45400CE30A0DC19754C00FB5A5112D5D454001020000000200000002F1BA7EC19754C0FAD005F52D5D454067DECB74C19754C09F40A0302E5D45400102000000020000003EAD4786C19754C071491F042E5D454067DECB74C19754C09F40A0302E5D45400102000000020000003EAD4786C19754C071491F042E5D454002F1BA7EC19754C0FAD005F52D5D4540010200000002000000FDF7C694C19754C08EA6BD702D5D454002F1BA7EC19754C0FAD005F52D5D45400102000000020000002691B199C19754C0950F3E532D5D4540C5B7DC8EC19754C0E54297FC2C5D45400102000000020000002691B199C19754C0950F3E532D5D4540FDF7C694C19754C08EA6BD702D5D4540010200000002000000D34324A3C19754C0B4A5C7B42F5D4540ADF7A63BC19754C0652B64A9305D4540010200000002000000D34324A3C19754C0B4A5C7B42F5D454010E96754C19754C0A600F8F22E5D4540010200000002000000E060DFA3C19754C057322B162D5D4540C5B7DC8EC19754C0E54297FC2C5D4540010200000002000000E060DFA3C19754C057322B162D5D45402691B199C19754C0950F3E532D5D4540010200000002000000BBF0F8A4C19754C0240B79AD2D5D4540FDF7C694C19754C08EA6BD702D5D4540010200000002000000BBF0F8A4C19754C0240B79AD2D5D45402691B199C19754C0950F3E532D5D454001020000000200000028D9C7A5C19754C0FA4DF0B32D5D45403EAD4786C19754C071491F042E5D454001020000000200000028D9C7A5C19754C0FA4DF0B32D5D4540BBF0F8A4C19754C0240B79AD2D5D4540010200000002000000798753A6C19754C08EC08CB22D5D4540BBF0F8A4C19754C0240B79AD2D5D4540010200000002000000798753A6C19754C08EC08CB22D5D454028D9C7A5C19754C0FA4DF0B32D5D45400102000000020000009FFF15ABC19754C09EC255C82F5D45405C55F65DC19754C057FA69C9305D45400102000000020000009FFF15ABC19754C09EC255C82F5D4540D34324A3C19754C0B4A5C7B42F5D45400102000000020000009D11A5BDC19754C03012DA722E5D45403EAD4786C19754C071491F042E5D45400102000000020000009D11A5BDC19754C03012DA722E5D454028D9C7A5C19754C0FA4DF0B32D5D45400102000000020000002A7664BFC19754C0B55D01722F5D4540B5E0455FC19754C0CA32C4B12E5D45400102000000020000002A7664BFC19754C0B55D01722F5D4540D34324A3C19754C0B4A5C7B42F5D4540010200000002000000FF3EE3C2C19754C05FEFFE782F5D45409FFF15ABC19754C09EC255C82F5D4540010200000002000000FF3EE3C2C19754C05FEFFE782F5D45402A7664BFC19754C0B55D01722F5D4540010200000002000000D6BB28C4C19754C0C615BD662F5D4540CD0C476FC19754C0C094AE7B2E5D4540010200000002000000D6BB28C4C19754C0C615BD662F5D45402A7664BFC19754C0B55D01722F5D45400102000000020000001DD474C6C19754C0CBA8196D2F5D4540FF3EE3C2C19754C05FEFFE782F5D45400102000000020000001DD474C6C19754C0CBA8196D2F5D4540D6BB28C4C19754C0C615BD662F5D4540010200000002000000C4995FCDC19754C099D36531315D45406E25D927C19754C06944CB7D315D4540010200000002000000C4995FCDC19754C099D36531315D45405C55F65DC19754C057FA69C9305D454001020000000200000057F379D0C19754C0012081092F5D4540526EB66EC19754C0C9181E7A2E5D454001020000000200000057F379D0C19754C0012081092F5D45409D11A5BDC19754C03012DA722E5D45400102000000020000006F39B0D1C19754C0C43C5B27305D45409FFF15ABC19754C09EC255C82F5D45400102000000020000006F39B0D1C19754C0C43C5B27305D45409D11A5BDC19754C005172B6A305D454001020000000200000026C79DD2C19754C0892991442F5D4540D6BB28C4C19754C0C615BD662F5D454001020000000200000026C79DD2C19754C0892991442F5D45401DD474C6C19754C0CBA8196D2F5D454001020000000200000026C79DD2C19754C077BE9F1A2F5D4540CD0C476FC19754C0C094AE7B2E5D454001020000000200000026C79DD2C19754C077BE9F1A2F5D454057F379D0C19754C0012081092F5D45400102000000020000007E3251D6C19754C03B193B382F5D454026C79DD2C19754C0892991442F5D45400102000000020000007E3251D6C19754C03B193B382F5D454026C79DD2C19754C077BE9F1A2F5D454001020000000200000023D8A9D6C19754C0F146003B2F5D454026C79DD2C19754C0892991442F5D454001020000000200000023D8A9D6C19754C0F146003B2F5D45407E3251D6C19754C03B193B382F5D454001020000000200000016481EDBC19754C096263A282F5D454026C79DD2C19754C077BE9F1A2F5D454001020000000200000016481EDBC19754C096263A282F5D45407E3251D6C19754C03B193B382F5D454001020000000200000084C232DDC19754C0901D8E2B2F5D454023D8A9D6C19754C0F146003B2F5D454001020000000200000084C232DDC19754C0901D8E2B2F5D454016481EDBC19754C096263A282F5D4540010200000002000000F36444DEC19754C0861BBB1D2F5D454057F379D0C19754C0012081092F5D4540010200000002000000F36444DEC19754C0861BBB1D2F5D454016481EDBC19754C096263A282F5D4540010200000002000000DE0033DFC19754C01D739EB12F5D4540FF3EE3C2C19754C05FEFFE782F5D4540010200000002000000DE0033DFC19754C01D739EB12F5D45401DD474C6C19754C0CBA8196D2F5D4540010200000002000000B77C37E1C19754C0E6930E222F5D454084C232DDC19754C0901D8E2B2F5D4540010200000002000000B77C37E1C19754C0E6930E222F5D4540F36444DEC19754C0861BBB1D2F5D4540010200000002000000AF7C96E7C19754C0BE6A65C22F5D454023D8A9D6C19754C0F146003B2F5D4540010200000002000000AF7C96E7C19754C0BE6A65C22F5D4540DE0033DFC19754C01D739EB12F5D4540010200000002000000394BD2E8C19754C084DE43CC2F5D4540DE0033DFC19754C01D739EB12F5D4540010200000002000000394BD2E8C19754C084DE43CC2F5D4540AF7C96E7C19754C0BE6A65C22F5D45400102000000020000007D190EEAC19754C0BC5122D62F5D45406F39B0D1C19754C0C43C5B27305D45400102000000020000007D190EEAC19754C0BC5122D62F5D4540394BD2E8C19754C084DE43CC2F5D45400102000000020000007CCA1CEBC19754C0EF039CD22F5D4540394BD2E8C19754C084DE43CC2F5D45400102000000020000007CCA1CEBC19754C0EF039CD22F5D45407D190EEAC19754C0BC5122D62F5D454001020000000200000011AAD4ECC19754C082C5E1CC2F5D4540AF7C96E7C19754C0BE6A65C22F5D454001020000000200000011AAD4ECC19754C082C5E1CC2F5D45407CCA1CEBC19754C0EF039CD22F5D4540010200000002000000D0879AF0C19754C0900117C92E5D4540798753A6C19754C08EC08CB22D5D4540010200000002000000D0879AF0C19754C0900117C92E5D45409D11A5BDC19754C03012DA722E5D454001020000000200000073D712F2C19754C0DC9DB5DB2E5D45409D11A5BDC19754C03012DA722E5D454001020000000200000073D712F2C19754C0DC9DB5DB2E5D4540F36444DEC19754C0861BBB1D2F5D4540010200000002000000FC8CECF3C19754C0B5958AD52E5D4540D0879AF0C19754C0900117C92E5D4540010200000002000000FC8CECF3C19754C0B5958AD52E5D454073D712F2C19754C0DC9DB5DB2E5D4540010200000002000000299548F5C19754C0D27A02D12E5D4540D0879AF0C19754C0900117C92E5D4540010200000002000000299548F5C19754C0D27A02D12E5D4540FC8CECF3C19754C0B5958AD52E5D4540010200000002000000636910F9C19754C0BCC1B0E92E5D4540B77C37E1C19754C0E6930E222F5D4540010200000002000000636910F9C19754C0BCC1B0E92E5D454073D712F2C19754C0DC9DB5DB2E5D4540010200000002000000200035F9C19754C06B455AE92E5D4540FC8CECF3C19754C0B5958AD52E5D4540010200000002000000200035F9C19754C06B455AE92E5D4540636910F9C19754C0BCC1B0E92E5D4540010200000002000000C73C90F9C19754C08368B0EA2E5D4540636910F9C19754C0BCC1B0E92E5D4540010200000002000000C73C90F9C19754C08368B0EA2E5D4540200035F9C19754C06B455AE92E5D4540010200000002000000F95F92FDC19754C0A13409DF2E5D4540299548F5C19754C0D27A02D12E5D4540010200000002000000F95F92FDC19754C0A13409DF2E5D4540200035F9C19754C06B455AE92E5D454001020000000200000027C48C03C29754C0F6A517A2305D45406F39B0D1C19754C0C43C5B27305D454001020000000200000027C48C03C29754C0F6A517A2305D45407D190EEAC19754C0BC5122D62F5D4540010200000002000000304D7608C29754C01BFBC6702F5D454084C232DDC19754C0901D8E2B2F5D4540010200000002000000304D7608C29754C01BFBC6702F5D454011AAD4ECC19754C082C5E1CC2F5D45400102000000020000004D93640BC29754C0CFD54F872E5D4540299548F5C19754C0D27A02D12E5D4540010200000002000000E3DBDE0CC29754C0CF1F15622F5D4540B77C37E1C19754C0E6930E222F5D4540010200000002000000E3DBDE0CC29754C0CF1F15622F5D4540304D7608C29754C01BFBC6702F5D4540010200000002000000C0E78711C29754C077BE9F1A2F5D4540C73C90F9C19754C08368B0EA2E5D4540010200000002000000FF318113C29754C03A00F84B2F5D4540C73C90F9C19754C08368B0EA2E5D4540010200000002000000FF318113C29754C03A00F84B2F5D4540E3DBDE0CC29754C0CF1F15622F5D45400102000000020000007543C814C29754C0F2BD2CA82E5D4540F95F92FDC19754C0A13409DF2E5D45400102000000020000007543C814C29754C0F2BD2CA82E5D45404D93640BC29754C0CFD54F872E5D45400102000000020000008EE0D019C29754C0EEED469C2E5D45407543C814C29754C0F2BD2CA82E5D45400102000000020000008FFBFB1EC29754C04B62917D315D4540C4995FCDC19754C099D36531315D45400102000000020000008FFBFB1EC29754C04B62917D315D454027C48C03C29754C0F6A517A2305D4540010200000002000000D56B7321C29754C01D5944802F5D4540E3DBDE0CC29754C0CF1F15622F5D4540010200000002000000D56B7321C29754C01D5944802F5D4540FF318113C29754C03A00F84B2F5D4540010200000002000000DB64CB21C29754C0BB01561C2F5D4540F95F92FDC19754C0A13409DF2E5D4540010200000002000000DB64CB21C29754C0BB01561C2F5D4540FF318113C29754C03A00F84B2F5D4540010200000002000000D4FF202CC29754C0EF51E3F92E5D45407543C814C29754C0F2BD2CA82E5D4540010200000002000000D4FF202CC29754C0EF51E3F92E5D4540DB64CB21C29754C0BB01561C2F5D45400102000000020000005BDA5F2CC29754C035CF11F92E5D45408EE0D019C29754C0EEED469C2E5D45400102000000020000005BDA5F2CC29754C035CF11F92E5D4540D4FF202CC29754C0EF51E3F92E5D45400102000000020000006DB6D72CC29754C04B70FCAA2F5D4540304D7608C29754C01BFBC6702F5D45400102000000020000006DB6D72CC29754C04B70FCAA2F5D4540D56B7321C29754C01D5944802F5D4540010200000002000000392F7E2DC29754C04577A9FE2E5D4540D4FF202CC29754C0EF51E3F92E5D4540010200000002000000392F7E2DC29754C04577A9FE2E5D45405BDA5F2CC29754C035CF11F92E5D45400102000000020000008542232FC29754C05598CBFE315D4540F1DB3BDBC09754C0B5055C69335D45400102000000020000008542232FC29754C05598CBFE315D45408FFBFB1EC29754C04B62917D315D4540010200000002000000E107733CC29754C0D1B271492F5D4540DB64CB21C29754C0BB01561C2F5D4540010200000002000000E107733CC29754C0D1B271492F5D4540392F7E2DC29754C04577A9FE2E5D4540010200000002000000DE327644C29754C0C71C63A9325D4540D1DF4401C19754C074634670335D4540010200000002000000DE327644C29754C0C71C63A9325D45408542232FC29754C05598CBFE315D4540010200000002000000A328DC48C29754C07E60725E2F5D4540392F7E2DC29754C04577A9FE2E5D4540010200000002000000A328DC48C29754C07E60725E2F5D4540E107733CC29754C0D1B271492F5D454001020000000200000065122C57C29754C0DCE60ECF2F5D4540D56B7321C29754C01D5944802F5D454001020000000200000065122C57C29754C0DCE60ECF2F5D4540E107733CC29754C0D1B271492F5D4540010200000002000000EA6DA85EC29754C05D428FF92D5D4540E060DFA3C19754C057322B162D5D4540010200000002000000EA6DA85EC29754C05D428FF92D5D45408EE0D019C29754C0EEED469C2E5D454001020000000200000001847B60C29754C046209CFD2F5D45406DB6D72CC29754C04B70FCAA2F5D454001020000000200000001847B60C29754C046209CFD2F5D454065122C57C29754C0DCE60ECF2F5D4540010200000002000000EC913668C29754C0B732EAC1315D45408FFBFB1EC29754C04B62917D315D4540010200000002000000EC913668C29754C0B732EAC1315D45408542232FC29754C05598CBFE315D4540010200000002000000EA20F971C29754C062E412112E5D45405BDA5F2CC29754C035CF11F92E5D4540010200000002000000EA20F971C29754C062E412112E5D4540EA6DA85EC29754C05D428FF92D5D4540010200000002000000C27F8F73C29754C05A9BCFB5315D454027C48C03C29754C0F6A517A2305D4540010200000002000000C27F8F73C29754C05A9BCFB5315D4540EC913668C29754C0B732EAC1315D4540010200000002000000AD4CEB75C29754C0C35E27FC2F5D4540A328DC48C29754C07E60725E2F5D4540010200000002000000AD4CEB75C29754C0C35E27FC2F5D454065122C57C29754C0DCE60ECF2F5D4540010200000002000000B1406982C29754C067C45DDA315D4540EC913668C29754C0B732EAC1315D4540010200000002000000B1406982C29754C067C45DDA315D4540C27F8F73C29754C05A9BCFB5315D454001020000000200000036D7BD86C29754C01103D19A2D5D4540EA6DA85EC29754C05D428FF92D5D454001020000000200000050C7BC88C29754C04F8B043E305D454001847B60C29754C046209CFD2F5D454001020000000200000050C7BC88C29754C04F8B043E305D4540AD4CEB75C29754C0C35E27FC2F5D45400102000000020000005B3E5E89C29754C016EEF405315D454011AAD4ECC19754C082C5E1CC2F5D45400102000000020000005B3E5E89C29754C016EEF405315D45406DB6D72CC29754C04B70FCAA2F5D4540010200000002000000E707068FC29754C06C5F8498315D45407CCA1CEBC19754C0EF039CD22F5D4540010200000002000000E707068FC29754C06C5F8498315D4540C27F8F73C29754C05A9BCFB5315D45400102000000020000001FA80991C29754C0A77686A92D5D4540EA20F971C29754C062E412112E5D45400102000000020000001FA80991C29754C0A77686A92D5D454036D7BD86C29754C01103D19A2D5D45400102000000020000008F4C579DC29754C07E0AE72D315D454001847B60C29754C046209CFD2F5D45400102000000020000008F4C579DC29754C07E0AE72D315D45405B3E5E89C29754C016EEF405315D45400102000000020000001E5D0CA9C29754C023E2C17C315D45405B3E5E89C29754C016EEF405315D45400102000000020000001E5D0CA9C29754C023E2C17C315D4540E707068FC29754C06C5F8498315D4540010200000002000000E0C165ACC29754C088542F79315D45408F4C579DC29754C07E0AE72D315D4540010200000002000000E0C165ACC29754C088542F79315D45401E5D0CA9C29754C023E2C17C315D4540010200000002000000456C20BBC29754C0EB497969315D45408F4C579DC29754C07E0AE72D315D4540010200000002000000456C20BBC29754C0EB497969315D4540E0C165ACC29754C088542F79315D4540010200000002000000A9DB14D6C29754C0AAD2B84C315D454050C7BC88C29754C04F8B043E305D4540010200000002000000A9DB14D6C29754C0AAD2B84C315D4540456C20BBC29754C0EB497969315D4540 + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-599.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-599.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-599.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-599.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,31 @@ + + +http://trac.osgeo.org/geos/ticket/599 + + + + + +http://trac.osgeo.org/geos/ticket/599 + + +010200000020000000CE89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B2764940533AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649402C1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB80764940016B7AF59617ED3FCD71135A7B76494048663F9CD120ED3F46A22B6C61764940C63FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A7649404ADD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E92962576494066283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E76494094EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940F43F5475EA25ED3F04159F4CED7549409F7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E075494042DFCC9EBA28ED3F9DBB0276DA754940D5C78D6CF827ED3FD40E7F4DD6754940F050B92EA127ED3FDBBD816ED4754940D4C78D6CF827ED3FD40E7F4DD6754940D5C78D6CF827ED3FD40E7F4DD6754940650FA3D6EA21ED3F22A98592C9754940883F790E1B1BED3FEF8A85C6B8754940 + + +01020000001D000000CE89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B2764940533AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649402C1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB80764940016B7AF59617ED3FCD71135A7B76494048663F9CD120ED3F46A22B6C61764940C63FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A7649404ADD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E92962576494066283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E76494094EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940F43F5475EA25ED3F04159F4CED7549409F7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E075494042DFCC9EBA28ED3F9DBB0276DA754940D4C78D6CF827ED3FD40E7F4DD6754940650FA3D6EA21ED3F22A98592C9754940883F790E1B1BED3FEF8A85C6B8754940 + + + true + + + true + + + +01050000001D000000010200000002000000CD89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649400102000000020000007D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B27649400102000000020000007A765490FA06ED3FCF28A787B2764940543AA28C020EED3F6FC6C4419D764940010200000002000000543AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649400102000000020000000949B0822914ED3F79A40BFB877649402D1B310E8916ED3F69E9656F847649400102000000020000002D1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB807649400102000000020000004DD070146A17ED3F650A8CAB80764940006B7AF59617ED3FCD71135A7B764940010200000002000000006B7AF59617ED3FCD71135A7B76494047663F9CD120ED3F46A22B6C6176494001020000000200000047663F9CD120ED3F46A22B6C61764940C73FC7A24426ED3F1086F01E56764940010200000002000000C73FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A764940010200000002000000EC7E5F6DD62AED3FE64581994A76494049DD29786532ED3F89BC40A43A76494001020000000200000049DD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C3376494001020000000200000012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A7649400102000000020000006F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940010200000002000000EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E929625764940010200000002000000EBC2B414353DED3F1D7E92962576494065283806AE3CED3F8FB575262376494001020000000200000065283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940010200000002000000A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E764940010200000002000000F90A1C1A6030ED3FAC5AD2510E76494093EB5C07BD2DED3F96B4E21B0A76494001020000000200000093EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E97040376494001020000000200000092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940010200000002000000F579D67FE728ED3FDD9FE63FFF754940F33F5475EA25ED3F04159F4CED754940010200000002000000F33F5475EA25ED3F04159F4CED7549409E7EABD09B25ED3F4EEDB199E87549400102000000020000009E7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E07549400102000000020000005842D2020F27ED3FBD378600E075494041DFCC9EBA28ED3F9DBB0276DA75494001020000000200000041DFCC9EBA28ED3F9DBB0276DA754940D4C78D6CF827ED3FD40E7F4DD6754940010200000002000000D4C78D6CF827ED3FD40E7F4DD6754940F150B92EA127ED3FDBBD816ED4754940010200000002000000D4C78D6CF827ED3FD40E7F4DD6754940640FA3D6EA21ED3F22A98592C9754940010200000002000000640FA3D6EA21ED3F22A98592C9754940893F790E1B1BED3FEF8A85C6B8754940 + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-605.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-605.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-605.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-605.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,109 @@ + + + http://trac.osgeo.org/geos/ticket/605 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + http://trac.osgeo.org/geos/ticket/605 + + +LINESTRING(365851.11860 6133776.04159, 366074.92430 6134077.56523, +375141.31010 6138794.83236, 373718.87248 6137668.49630, 373346.64754 +6137433.71166638, 366752.52700 6134568.10150, 360775.41757 6127074.35479, +360762.97098 6127054.06482, 365851.11862 6133776.04159, 366074.92434 +6134077.56523, 366360.99154 6134339.22803, 366752.52702 6134568.10150, +373346.64754 6137433.71166638, 373718.87248 6137668.49630, 375295.49858 +6138886.92620, 373718.87248 6137668.49630, 373346.64754 6137433.71166, +366826.15047 6134600.68215, 366384.17707 6134356.53424, 365851.11862 +6133776.04159, 364105.70077 6130589.54564, 360283.95054 6126559.51325, +356917.60143 6124368.97007, 360279.79015 6126555.44586, 364105.70077 +6130589.54564, 365851.11862 6133776.04159, 364105.70077 6130589.54564, +360283.95054 6126559.51325) + + + + +POLYGON ((355917.6765000000013970 6124381.2275999998673797, +355939.2774000000208616 6124576.0504000000655651, +355998.4679999999934807 6124762.9166000001132488, +356092.9739999999874271 6124934.6463999999687076, +356219.1641999999992549 6125084.6414999999105930, +356372.1902000000118278 6125207.1387000000104308, +359638.8080733100068755 6127332.7850270699709654, +360038.8583028200082481 6127754.6042146598920226, +360042.8382790799951181 6127759.5940738096833229, +365050.9408594800042920 6134375.8229583799839020, +365271.9468999999808148 6134673.5746999997645617, +365399.9925999999977648 6134815.4453999996185303, +365686.0597999999881722 6135077.1081999996677041, +365731.3817567800288089 6135110.4964476702734828, +365766.0731999999843538 6135142.6305999998003244, +365855.4125532599864528 6135201.8687370792031288, +365856.3346000000019558 6135202.5480000004172325, +365857.1991783700068481 6135203.0533924298360944, +365900.6434000000008382 6135231.8598999995738268, +366006.7428950199973769 6135290.4697156799957156, +366247.8701000000000931 6135431.4215000001713634, +366353.9645000000018626 6135485.2427000002935529, +366417.4646187499747612 6135512.8379774494096637, +366427.6574000000255182 6135517.8535000002011657, +367936.5907135099987499 6136173.4557738900184631, +374679.7457999999751337 6139681.9391999999061227, +374708.2528112199506722 6139693.3706018300727010, +374850.1265000000130385 6139782.2717000003904104, +375033.3573999999789521 6139851.9556999998167157, +375226.6623000000254251 6139884.5542000001296401, +375422.6124999999883585 6139878.8142999997362494, +375613.6778000000049360 6139834.9567999998107553, +375792.5156999999890104 6139754.6668999996036291, +375952.2534999999916181 6139641.0302999997511506, +376086.7525000000023283 6139498.4139000000432134, +376190.8440999999875203 6139332.2982999999076128, +376260.5280999999959022 6139149.0674000000581145, +376293.1266000000177883 6138955.7625000001862645, +376287.3866999999736436 6138759.8123000003397465, +376243.5291999999899417 6138568.7470000004395843, +376163.2393000000156462 6138389.9090999998152256, +376049.6026999999885447 6138230.1712999995797873, +375906.9862999999895692 6138095.6722999997437000, +374330.3601999999955297 6136877.2423999998718500, +374252.3702000000048429 6136822.6947999997064471, +373880.1452000000281259 6136587.9101999998092651, +373745.2100000000209548 6136516.5705000003799796, +368792.5121412900043651 6134364.2741611804813147, +367214.0061748400330544 6133542.9728815201669931, +366095.5620286299963482 6132140.7336761802434921, +364982.7469999999739230 6130109.1394999995827675, +364831.3095999999786727 6129901.4380999999120831, +361566.4569188400055282 6126458.6538448799401522, +361560.3061999999918044 6126450.5280999997630715, +361431.7930000000051223 6126310.6421999996528029, +361412.6469055399647914 6126296.4613223504275084, +361009.5593000000226311 6125871.4057999998331070, +361007.8637289800099097 6125869.9373341500759125, +361005.3717000000178814 6125867.3097000000998378, +360991.3914410999859683 6125855.6713483100757003, +360861.3738000000012107 6125743.0683000003919005, +360844.7993283700197935 6125733.6356567097827792, +360824.9630999999935739 6125717.1222999999299645, +357462.7742999999900348 6123530.6464999997988343, +357288.7666999999783002 6123440.4033000003546476, +357100.4979000000166707 6123385.8378999996930361, +356905.2017999999807216 6123369.0470000002533197, +356710.3820999999879859 6123390.6755999997258186, +356523.5242999999900348 6123449.8926999997347593, +356351.8079000000143424 6123544.4231000002473593, +356201.8306999999913387 6123670.6347000002861023, +356079.3552999999956228 6123823.6780000003054738, +355989.0873000000137836 6123997.6728999996557832, +355934.4952000000048429 6124185.9338999995961785, 355917.6765000000013970 +6124381.2275999998673797)) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-615.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-615.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-615.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-615.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + + + + +See http://trac.osgeo.org/geos/ticket/615 + + +01060000000500000001030000000100000004000000239CFA9F7F9230401ABADB203141474018601F9DBA92304062D68BA19C40474027361FD7869230408D62B9A5D5404740239CFA9F7F9230401ABADB203141474001030000000100000004000000125901C0739230408653A0054F41474043CA4FAA7D923040DB5548F949414740239CFA9F7F9230401ABADB2031414740125901C0739230408653A0054F4147400103000000010000000B0000005EA791E509923040D3DDAD7E594247408BFD65F7E4913040CBA65CE15D4247406F2F698CD69130400A850838844247401A34F44F70913040D947A7AE7C424740B745990D329130400AA2EE0390424740454C89247A913040D8817346944247407E74EACA679130406E3997E2AA424740A81DFE9AAC913040CA8E8D40BC4247400C410E4A9891304074EFE192E342474036B05582C5913040E5ED08A7054347405EA791E509923040D3DDAD7E5942474001030000000100000005000000125901C0739230408653A0054F4147400DAB7823F3903040FD1873D712424740A73FFB9122923040367BA01518424740773A98D22192304096FAA9431D424740125901C0739230408653A0054F414740010300000001000000040000005EA791E509923040D3DDAD7E59424740C4D32B651992304027C286A757424740773A98D22192304096FAA9431D4247405EA791E509923040D3DDAD7E59424740 + + +0106000000050000000103000000010000000800000019C9CCC7889230401D2A92141A41474018601F9DBA92304062D68BA19C40474026361FD7869230408D62B9A5D5404740B48EAA26889230408CB96B09F9404740C3D8429083923040B0AC34290541474098DD938785923040C5387F130A41474026361FD786923040704221020E41474019C9CCC7889230401D2A92141A4147400103000000010000000700000035F1A79473923040BDB5C0724F41474043CA4FAA7D923040DA5548F94941474098DD938785923040F0C4AC174341474018EC866D8B9230400C59DDEA39414740A64412BD8C923040FEF15EB53241474019C9CCC7889230401D2A92141A41474035F1A79473923040BDB5C0724F414740010300000001000000130000005EA791E509923040D3DDAD7E594247408BFD65F7E4913040CAA65CE15D4247406F2F698CD69130400A85083884424740D252793BC29130401FF46C567D4247409A999999999130402D5BEB8B844247401A34F44F70913040D847A7AE7C424740B745990D329130400AA2EE0390424740459E245D33913040D881734694424740378E588B4F91304018096D3997424740444C89247A913040D8817346944247407E74EACA679130406D3997E2AA424740A81DFE9AAC913040C98E8D40BC424740E17F2BD9B19130406D73637AC24247400B410E4A9891304074EFE192E3424740280F0BB5A691304097E2AAB2EF424740D252793BC29130402D6002B7EE424740A81DFE9AAC9130400282397AFC42474036B05582C5913040E5ED08A7054347405EA791E509923040D3DDAD7E594247400103000000010000000E00000035F1A79473923040BDB5C0724F4147408A3C49BA66923040211FF46C5641474036CD3B4ED1913040C4B12E6EA3414740C47762D68B91304076374F75C8414740D3BCE3141D913040EE940ED6FF4147408CF337A110913040042159C0044247402979758E01913040F5D6C05609424740450DA661F8903040A0E062450D4247400DAB7823F3903040FC1873D71242474029965B5A0D91304020EF552B1342474099F04BFDBC913040834C327216424740A73FFB9122923040357BA01518424740773A98D22192304097FAA9431D42474035F1A79473923040BDB5C0724F414740010300000001000000040000005EA791E509923040D3DDAD7E59424740C3D32B651992304027C286A757424740773A98D22192304097FAA9431D4247405EA791E509923040D3DDAD7E59424740 + + + +01060000000C0000000103000000010000000C00000043CA4FAA7D923040DA5548F94941474098DD938785923040F0C4AC174341474018EC866D8B9230400C59DDEA39414740A64412BD8C923040FEF15EB53241474019C9CCC7889230401D2A92141A41474026361FD786923040704221020E41474098DD938785923040C5387F130A414740C3D8429083923040B0AC342905414740B48EAA26889230408CB96B09F940474026361FD7869230408D62B9A5D5404740239CFA9F7F9230401ABADB203141474043CA4FAA7D923040DA5548F9494147400103000000010000000A00000071D9271D0C91304001823120064247408CF337A110913040042159C004424740D3BCE3141D913040EE940ED6FF414740C47762D68B91304076374F75C841474036CD3B4ED1913040C4B12E6EA34147408A3C49BA66923040211FF46C5641474035F1A79473923040BDB5C0724F41474043CA4FAA7D923040DA5548F949414740125901C0739230408653A0054F41474071D9271D0C913040018231200642474001030000000100000005000000B745990D329130400AA2EE0390424740459E245D33913040D881734694424740378E588B4F91304018096D3997424740444C89247A913040D881734694424740B745990D329130400AA2EE0390424740010300000001000000050000000DAB7823F3903040FC1873D71242474071D9271D0C91304001823120064247402979758E01913040F5D6C05609424740450DA661F8903040A0E062450D4247400DAB7823F3903040FC1873D7124247400103000000010000000400000077459ECBAC91304054D11324814247406F2F698CD69130400A85083884424740D252793BC29130401FF46C567D42474077459ECBAC91304054D113248142474001030000000100000004000000A81DFE9AAC9130400282397AFC42474036B05582C5913040E5ED08A705434740B0C6C481B391304014A2E915F8424740A81DFE9AAC9130400282397AFC42474001030000000100000004000000D675324DA8913040353117A4EF424740B0C6C481B391304014A2E915F8424740D252793BC29130402D6002B7EE424740D675324DA8913040353117A4EF424740010300000001000000040000000B410E4A9891304074EFE192E3424740E17F2BD9B19130406D73637AC2424740A81DFE9AAC913040C98E8D40BC4247400B410E4A9891304074EFE192E3424740010300000001000000040000000B410E4A9891304074EFE192E3424740280F0BB5A691304097E2AAB2EF424740D675324DA8913040353117A4EF4247400B410E4A9891304074EFE192E3424740010300000001000000040000001A34F44F70913040D847A7AE7C4247409A999999999130402D5BEB8B8442474077459ECBAC91304054D11324814247401A34F44F70913040D847A7AE7C424740010300000001000000040000003893A64068913040B2A17BDD1442474099F04BFDBC913040834C327216424740A73FFB9122923040357BA015184247403893A64068913040B2A17BDD14424740010300000001000000040000000DAB7823F3903040FC1873D7124247403893A64068913040B2A17BDD1442474029965B5A0D91304020EF552B134247400DAB7823F3903040FC1873D712424740 + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-716.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-716.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-716.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-716.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,75 @@ + + + + Intersects operation of polygons with collinear lines. + http://trac.osgeo.org/geos/ticket/716 + + + + http://trac.osgeo.org/geos/ticket/716 + a CW, b CW + + + POLYGON((0.04745459120333707 7.998990511152711, 10.222919749090828 34.08521670606894, 10 10, 0.04745459120333707 7.998990511152711)) + + + POLYGON((15 5, 0.010044793132693013 7.903085268568247, 10.260329547338191 34.181121949106455, 15 5)) + + + + true + + + + + + http://trac.osgeo.org/geos/ticket/716 + a CCW, b CW + + + POLYGON((0.04745459120333707 7.998990511152711, 10 10, 10.222919749090828 34.08521670606894, 0.04745459120333707 7.998990511152711)) + + + POLYGON((15 5, 0.010044793132693013 7.903085268568247, 10.260329547338191 34.181121949106455, 15 5)) + + + + true + + + + + + http://trac.osgeo.org/geos/ticket/716 + a CW, b CCW + + + POLYGON((0.04745459120333707 7.998990511152711, 10.222919749090828 34.08521670606894, 10 10, 0.04745459120333707 7.998990511152711)) + + + POLYGON((15 5, 10.260329547338191 34.181121949106455, 0.010044793132693013 7.903085268568247, 15 5)) + + + + true + + + + + + http://trac.osgeo.org/geos/ticket/716 + a CCW, b CCW + + + POLYGON((0.04745459120333707 7.998990511152711, 10 10, 10.222919749090828 34.08521670606894, 0.04745459120333707 7.998990511152711)) + + + POLYGON((15 5, 10.260329547338191 34.181121949106455, 0.010044793132693013 7.903085268568247, 15 5)) + + + + true + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-837.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-837.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-837.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-837.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,16 @@ + + See https://trac.osgeo.org/geos/ticket/837 + + + Robustness issue + +0106000000E7010000010300000001000000050000006766666658012A41CDCCCC4C25D53B41CDCCCCCC56012A416766666689D53B4133333333E7022A419A9999198BD53B41CDCCCCCCE8022A410000000027D53B416766666658012A41CDCCCC4C25D53B410103000000010000000500000067666666D9022A4100000000ACD83B419A999999D7022A419A99991910D93B41CDCCCCCC9F032A41676666E610D93B419A999999A1032A41CDCCCCCCACD83B4167666666D9022A4100000000ACD83B4101030000000100000007000000CDCCCCCC0D022A41CDCCCC4C73D93B41000000000C022A4167666666D7D93B41CDCCCCCC43012A419A999999D6D93B410000000042012A41333333B33ADA3B419A999999D2022A41676666663CDA3B4100000000D6022A413333333374D93B41CDCCCCCC0D022A41CDCCCC4C73D93B410103000000010000000600000024CF5A3D3B012A41317FAAC3C8DB3B41E17A142E3E012A41F6285C0FC8DB3B415559285104022A41D9C503FA95DB3B41CDCCCCCC06022A41333333B303DB3B419A9999993E012A41676666E602DB3B4124CF5A3D3B012A41317FAAC3C8DB3B4101030000000100000005000000676666661B022A410000008052D63B410000000018022A41333333B31AD73B4133333333E0022A41000000801BD73B419A999999E3022A41CDCCCC4C53D63B41676666661B022A410000008052D63B41010300000001000000050000000000000061012A41333333B330D33B41333333335F012A41676666E694D33B419A99999927022A41333333B395D33B413333333329022A419A99999931D33B410000000061012A41333333B330D33B4101030000000100000005000000CDCCCCCCF4022A41CDCCCC4C6AD23B4100000000BD032A419A9999196BD23B41CDCCCCCCBE032A410000000007D23B419A999999F6022A419A99991906D23B41CDCCCCCCF4022A41CDCCCC4C6AD23B4101030000000100000005000000000000001F022A41333333338AD53B41333333331D022A4167666666EED53B4167666666E5022A4133333333EFD53B4133333333E7022A419A9999198BD53B41000000001F022A41333333338AD53B41010300000001000000050000000000000030022A4133333333A1D13B41676666662E022A41CDCCCC4C05D23B419A999999F6022A419A99991906D23B4167666666F8022A4100000000A2D13B410000000030022A4133333333A1D13B41010300000001000000050000009A999999D0FF2941000000002FD33B41CDCCCCCCCEFF29419A99991993D33B410000000097002A410000000094D33B41CDCCCCCC98002A41676666E62FD33B419A999999D0FF2941000000002FD33B41010300000001000000050000009A9999992C022A416766666669D23B41000000002B022A4100000080CDD23B4133333333F3022A4167666666CED23B41CDCCCCCCF4022A41CDCCCC4C6AD23B419A9999992C022A416766666669D23B4101030000000100000005000000333333335A012A4133333333C1D43B416766666658012A41CDCCCC4C25D53B419A99999920022A419A99991926D53B416766666622022A4100000000C2D43B41333333335A012A4133333333C1D43B4101030000000100000005000000333333339C002A41333333B367D23B419A9999999A002A41CDCCCCCCCBD23B41CDCCCCCC62012A419A999999CCD23B416766666664012A410000008068D23B41333333339C002A41333333B367D23B410103000000010000000700000006C9049260022A418AABDE4368DB3B41A4703D0A9F022A4190C2F56839DB3B41F12AE880CE022A41DC5887B827DB3B41CDCCCCCCD0022A4100000080A0DA3B419A99999908022A419A9999999FDA3B413333333305022A41676666E667DB3B4106C9049260022A418AABDE4368DB3B410103000000010000000500000067666666E5022A4133333333EFD53B419A999999E3022A41CDCCCC4C53D63B4100000000AC032A413333333354D63B419A999999AD032A419A999919F0D53B4167666666E5022A4133333333EFD53B410103000000010000000500000000000000E2022A4167666666B7D63B4133333333E0022A41000000801BD73B4167666666A8032A41676666661CD73B4133333333AA032A41CDCCCC4CB8D63B4100000000E2022A4167666666B7D63B4101030000000100000005000000F0C50F1998032A41ED967BD6D9DA3B417B14AEC7D3032A411F85EB91ADDA3B410CD07853F4032A410610D3C3A1DA3B410000000099032A4167666666A1DA3B41F0C50F1998032A41ED967BD6D9DA3B4101030000000100000005000000CDCCCCCCE8022A410000000027D53B4133333333E7022A419A9999198BD53B4167666666AF032A41000000008CD53B4100000000B1032A41676666E627D53B41CDCCCCCCE8022A410000000027D53B410103000000010000000F000000AEB054951B032A4150DCA5F104DB3B415C8FC27546032A41A4703D0AF1DA3B4152B81E8578032A41295C8F42F1DA3B41F0C50F1998032A41ED967BD6D9DA3B410000000099032A4167666666A1DA3B410CD07853F4032A410610D3C3A1DA3B41A0D9DBE161042A41E927E1067ADA3B419A99999964042A4100000000DAD93B4133333333D4022A41CDCCCC4CD8D93B419A999999D2022A41676666663CDA3B41676666660A022A41000000803BDA3B419A99999908022A419A9999999FDA3B41CDCCCCCCD0022A4100000080A0DA3B4100000000CF022A419A99999904DB3B41AEB054951B032A4150DCA5F104DB3B41010300000001000000070000009A999999E3022A41CDCCCC4C53D63B4100000000E2022A4167666666B7D63B419A9999993A052A4100000000BAD63B416766666641052A419A99999929D53B413333333379042A41333333B328D53B413333333374042A410000000055D63B419A999999E3022A41CDCCCC4C53D63B4101030000000100000007000000CDCCCCCC4F012A41CDCCCCCC19D73B410000000018022A41333333B31AD73B41676666661B022A410000008052D63B419A999999E3022A41CDCCCC4C53D63B4167666666E5022A4133333333EFD53B410000000055012A4100000080EDD53B41CDCCCCCC4F012A41CDCCCCCC19D73B410103000000010000000700000067666666B4032A419A9999995FD43B41CDCCCCCCB2032A41CDCCCCCCC3D43B419A999999EA022A41676666E6C2D43B41CDCCCCCCE8022A410000000027D53B413333333379042A41333333B328D53B41CDCCCCCC7C042A410000008060D43B4167666666B4032A419A9999995FD43B4101030000000100000005000000CDCCCCCC0D022A41CDCCCC4C73D93B41333333339E032A410000000075D93B41CDCCCCCC9F032A41676666E610D93B41676666660F022A41333333330FD93B41CDCCCCCC0D022A41CDCCCC4C73D93B410103000000010000000500000033333333F3022A4167666666CED23B41CDCCCCCCEF022A419A99999996D33B4100000000B8032A416766666697D33B4167666666BB032A4133333333CFD23B4133333333F3022A4167666666CED23B4101030000000100000005000000CDCCCCCCDC022A41333333B3E3D73B4133333333DB022A41676666E647D83B4167666666A3032A41333333B348D83B4100000000A5032A419A999999E4D73B41CDCCCCCCDC022A41333333B3E3D73B41010300000001000000050000002198275F04022A41E1077AF695DB3B41A4703D8A33022A41A4703D0A8ADB3B4106C9049260022A418AABDE4368DB3B413333333305022A41676666E667DB3B412198275F04022A41E1077AF695DB3B41010300000001000000050000009A99999987002A410000000019D73B410000000086002A419A9999197DD73B41333333334E012A41676666E67DD73B41CDCCCCCC4F012A41CDCCCCCC19D73B419A99999987002A410000000019D73B41010300000001000000070000000000000018022A41333333B31AD73B416766666616022A41CDCCCCCC7ED73B419A999999DE022A419A9999997FD73B41CDCCCCCCDC022A41333333B3E3D73B4100000000A5032A419A999999E4D73B4167666666A8032A41676666661CD73B410000000018022A41333333B31AD73B4101030000000100000005000000CDCCCCCC67012A41CDCCCC4CA0D13B416766666664012A410000008068D23B419A9999992C022A416766666669D23B410000000030022A4133333333A1D13B41CDCCCCCC67012A41CDCCCC4CA0D13B41010300000001000000050000009A9999999A002A41CDCCCCCCCBD23B41CDCCCCCC98002A41676666E62FD33B413333333329022A419A99999931D33B41000000002B022A4100000080CDD23B419A9999999A002A41CDCCCCCCCBD23B41010300000001000000050000003333333390002A416766666624D53B41676666668E002A410000008088D53B41CDCCCCCC56012A416766666689D53B416766666658012A41CDCCCC4C25D53B413333333390002A416766666624D53B4101030000000100000005000000CDCCCCCC25022A41CDCCCCCCF9D33B410000000024022A41676666E65DD43B4133333333EC022A41CDCCCCCC5ED43B4100000000EE022A41333333B3FAD33B41CDCCCCCC25022A41CDCCCCCCF9D33B4101030000000100000005000000333333339C002A41333333B367D23B416766666664012A410000008068D23B41CDCCCCCC67012A41CDCCCC4CA0D13B419A9999999F002A41000000809FD13B41333333339C002A41333333B367D23B41010300000001000000050000006766666695002A419A999919F8D33B419A99999993002A41333333335CD43B41CDCCCCCC5B012A419A9999195DD43B419A9999995D012A4100000000F9D33B416766666695002A419A999919F8D33B41010300000001000000050000003333333311022A419A999919ABD83B41676666660F022A41333333330FD93B419A999999D7022A419A99991910D93B4167666666D9022A4100000000ACD83B413333333311022A419A999919ABD83B4101030000000100000005000000333333334E012A41676666E67DD73B41676666664C012A4100000000E2D73B419A99999914022A41676666E6E2D73B416766666616022A41CDCCCCCC7ED73B41333333334E012A41676666E67DD73B4101030000000100000005000000CDCCCCCCEF022A419A99999996D33B4133333333EC022A41CDCCCCCC5ED43B4167666666B4032A419A9999995FD43B4100000000B8032A416766666697D33B41CDCCCCCCEF022A419A99999996D33B410103000000010000000500000033333333E7022A419A9999198BD53B4167666666E5022A4133333333EFD53B419A999999AD032A419A999919F0D53B4167666666AF032A41000000008CD53B4133333333E7022A419A9999198BD53B41010300000001000000050000000000000042012A41333333B33ADA3B419A9999993E012A41676666E602DB3B41CDCCCCCC06022A41333333B303DB3B41676666660A022A41000000803BDA3B410000000042012A41333333B33ADA3B410103000000010000000500000067666666D7FF29419A9999999ED13B4100000000D4FF2941CDCCCCCC66D23B41333333339C002A41333333B367D23B419A9999999F002A41000000809FD13B4167666666D7FF29419A9999999ED13B4101030000000100000005000000676666662E022A41CDCCCC4C05D23B419A9999992C022A416766666669D23B41CDCCCCCCF4022A41CDCCCC4C6AD23B419A999999F6022A419A99991906D23B41676666662E022A41CDCCCC4C05D23B4101030000000100000005000000333333335F012A41676666E694D33B419A9999995D012A4100000000F9D33B41CDCCCCCC25022A41CDCCCCCCF9D33B419A99999927022A41333333B395D33B41333333335F012A41676666E694D33B4101030000000100000005000000000000002B022A4100000080CDD23B413333333329022A419A99999931D33B4167666666F1022A410000008032D33B4133333333F3022A4167666666CED23B41000000002B022A4100000080CDD23B410103000000010000000500000033333333C6FF2941333333B387D53B41676666668E002A410000008088D53B413333333390002A416766666624D53B4100000000C8FF29419A99999923D53B4133333333C6FF2941333333B387D53B410103000000010000000500000000000000FA022A41676666E63DD13B4167666666F8022A4100000000A2D13B419A999999C0032A41676666E6A2D13B4133333333C2032A41CDCCCCCC3ED13B4100000000FA022A41676666E63DD13B41010300000001000000050000000000000049012A4133333333AAD83B413333333347012A41676666660ED93B41676666660F022A41333333330FD93B413333333311022A419A999919ABD83B410000000049012A4133333333AAD83B410103000000010000000500000000000000B0FF29419A9999199DDA3B4133333333AEFF29413333333301DB3B416766666676002A410000000002DB3B413333333378002A41676666E69DDA3B4100000000B0FF29419A9999199DDA3B41010300000001000000050000006766666616022A41CDCCCCCC7ED73B419A99999914022A41676666E6E2D73B41CDCCCCCCDC022A41333333B3E3D73B419A999999DE022A419A9999997FD73B416766666616022A41CDCCCCCC7ED73B41010300000001000000090000000850CA06B4042A412F6CD9763EDA3B419A9999192A052A4152B81EC5C8D93B41FC955A532D052A41DCDDF0D6C1D93B419A9999992E052A41CDCCCCCC76D93B41333333339E032A410000000075D93B41676666669C032A419A999919D9D93B419A99999964042A4100000000DAD93B410000000063042A419A9999193EDA3B410850CA06B4042A412F6CD9763EDA3B4101030000000100000005000000CDCCCCCC12022A410000000047D83B413333333311022A419A999919ABD83B4167666666D9022A4100000000ACD83B4133333333DB022A41676666E647D83B41CDCCCCCC12022A410000000047D83B4101030000000100000005000000CDCCCCCC8C002A419A999999ECD53B41000000008B002A41333333B350D63B413333333353012A419A99999951D63B410000000055012A4100000080EDD53B41CDCCCCCC8C002A419A999999ECD53B410103000000010000000500000094733070CE022A41B35AC2BE27DB3B41AE47E17AD9022A4115AE47A123DB3B41AEB054951B032A4150DCA5F104DB3B4100000000CF022A419A99999904DB3B4194733070CE022A41B35AC2BE27DB3B410103000000010000000500000033333333D2FF2941676666E6CAD23B419A999999D0FF2941000000002FD33B41CDCCCCCC98002A41676666E62FD33B419A9999999A002A41CDCCCCCCCBD23B4133333333D2FF2941676666E6CAD23B4101030000000100000005000000676666666B012A419A999919D8D03B419A99999969012A41333333333CD13B41CDCCCCCC31022A419A9999193DD13B419A99999933022A4100000000D9D03B41676666666B012A419A999919D8D03B4101030000000100000005000000CDCCCCCCC9FF294100000080BFD43B4100000000C8FF29419A99999923D53B413333333390002A416766666624D53B410000000092002A41CDCCCC4CC0D43B41CDCCCCCCC9FF294100000080BFD43B41010300000001000000050000006766666664012A410000008068D23B41CDCCCCCC62012A419A999999CCD23B41000000002B022A4100000080CDD23B419A9999992C022A416766666669D23B416766666664012A410000008068D23B41010300000001000000050000009A999999BDFF2941333333337CD73B4100000000BCFF2941CDCCCC4CE0D73B41676666664C012A4100000000E2D73B41333333334E012A41676666E67DD73B419A999999BDFF2941333333337CD73B4101030000000100000005000000333333334E012A41676666E67DD73B416766666616022A41CDCCCCCC7ED73B410000000018022A41333333B31AD73B41CDCCCCCC4F012A41CDCCCCCC19D73B41333333334E012A41676666E67DD73B410103000000010000000500000000000000D6022A413333333374D93B4133333333D4022A41CDCCCC4CD8D93B41676666669C032A419A999919D9D93B41333333339E032A410000000075D93B4100000000D6022A413333333374D93B410103000000010000000500000033333333DB022A41676666E647D83B4167666666D9022A4100000000ACD83B419A999999A1032A41CDCCCCCCACD83B4167666666A3032A41333333B348D83B4133333333DB022A41676666E647D83B41010300000001000000050000009A999999A1032A41CDCCCCCCACD83B41333333339E032A410000000075D93B416766666666042A41676666E675D93B41CDCCCCCC69042A41333333B3ADD83B419A999999A1032A41CDCCCCCCACD83B41010300000001000000050000009A99999927022A41333333B395D33B41CDCCCCCC25022A41CDCCCCCCF9D33B4100000000EE022A41333333B3FAD33B41CDCCCCCCEF022A419A99999996D33B419A99999927022A41333333B395D33B4101030000000100000005000000CDCCCCCC5B012A419A9999195DD43B41333333335A012A4133333333C1D43B416766666622022A4100000000C2D43B410000000024022A41676666E65DD43B41CDCCCCCC5B012A419A9999195DD43B4101030000000100000005000000CDCCCCCC56012A416766666689D53B410000000055012A4100000080EDD53B41333333331D022A4167666666EED53B41000000001F022A41333333338AD53B41CDCCCCCC56012A416766666689D53B41010300000001000000070000000000000048DA2941333333B3A1D23B413333333310DB29419A999999A2D23B410000000012DB2941000000803ED23B4133333333DADB2941CDCCCC4C3FD23B41CDCCCCCCDBDB294133333333DBD13B41676666664BDA294100000080D9D13B410000000048DA2941333333B3A1D23B410103000000010000000800000057A6F58CF4D82941E77E3F42A0D23B410AD7A3700AD929411F85EB519DD23B41FFD8CDD939D929417640928DA0D23B410000000048DA2941333333B3A1D23B41CDCCCCCC49DA29419A9999993DD23B4167666666B9D82941676666E63BD23B419A999999B7D8294100000000A0D23B4157A6F58CF4D82941E77E3F42A0D23B41010300000001000000050000000000000012DB2941000000803ED23B413333333310DB29419A999999A2D23B4167666666D8DB294167666666A3D23B4133333333DADB2941CDCCCC4C3FD23B410000000012DB2941000000803ED23B41010300000001000000080000004A863DE425D7294160874710E7D23B4190C2F5A838D7294190C2F568E5D23B419A99999980D72941AE47E1BAEED23B419A999919E1D72941C3F5281CD8D23B419094A37DEED7294142734CC3D1D23B4167666666EFD72941333333339FD23B413333333327D72941CDCCCC4C9ED23B414A863DE425D7294160874710E7D23B4101030000000100000007000000EFFDCAE546DA2941B484C7AAE6D23B410AD7A37053DA29411F85EBD1EED23B41E68D68B472DA2941CF93F4FC05D33B41CDCCCCCCD6DB29410000008007D33B4167666666D8DB294167666666A3D23B410000000048DA2941333333B3A1D23B41EFFDCAE546DA2941B484C7AAE6D23B4101030000000100000005000000CDCCCCCC09D429419A999999D2D13B410000000008D42941CDCCCCCC36D23B4133333333D0D429419A99999937D23B4100000000D2D4294100000080D3D13B41CDCCCCCC09D429419A999999D2D13B410103000000010000000500000033333333DADB2941CDCCCC4C3FD23B4167666666A2DC29413333333340D23B4133333333A4DC29419A999919DCD13B41CDCCCCCCDBDB294133333333DBD13B4133333333DADB2941CDCCCC4C3FD23B41010300000001000000050000009A99999977D229410000000035D23B41CDCCCCCC75D229419A99991999D23B416766666606D42941676666E69AD23B410000000008D42941CDCCCCCC36D23B419A99999977D229410000000035D23B41010300000001000000050000000000000038DE29419A99999915D13B413333333336DE2941333333B379D13B4167666666FEDE29419A9999997AD13B413333333300DF29416766666616D13B410000000038DE29419A99999915D13B410103000000010000000500000000000000FBDE2941CDCCCCCC42D23B4167666666F9DE2941676666E6A6D23B419A999999C1DF2941333333B3A7D23B4133333333C3DF29419A99999943D23B4100000000FBDE2941CDCCCCCC42D23B4101030000000100000005000000CDCCCCCCFCDE2941333333B3DED13B4100000000C5DF294100000080DFD13B419A999999C6DF2941676666667BD13B4167666666FEDE29419A9999997AD13B41CDCCCCCCFCDE2941333333B3DED13B410103000000010000000500000067666666C8DF2941CDCCCC4C17D13B419A999999C6DF2941676666667BD13B41CDCCCCCC8EE02941CDCCCC4C7CD13B419A99999990E029413333333318D13B4167666666C8DF2941CDCCCC4C17D13B4101030000000100000009000000CDCCCCCCFCDE2941333333B3DED13B4100000000FBDE2941CDCCCCCC42D23B4133333333C3DF29419A99999943D23B419A999999C1DF2941333333B3A7D23B410000000052E1294167666666A9D23B413333333357E129419A9999197DD13B419A999999C6DF2941676666667BD13B4100000000C5DF294100000080DFD13B41CDCCCCCCFCDE2941333333B3DED13B41010300000001000000050000006766666655E1294133333333E1D13B419A99999953E12941CDCCCC4C45D23B41CDCCCCCC1BE229413333333346D23B419A9999991DE229419A999919E2D13B416766666655E1294133333333E1D13B41010300000001000000050000003333333357E129419A9999197DD13B416766666655E1294133333333E1D13B419A9999991DE229419A999919E2D13B41676666661FE22941000000007ED13B413333333357E129419A9999197DD13B41010300000001000000050000009A99999953E12941CDCCCC4C45D23B410000000052E1294167666666A9D23B4167666666E2E2294133333333ABD23B4133333333E4E229419A99991947D23B419A99999953E12941CDCCCC4C45D23B41010300000001000000050000009A9999991DE229419A999919E2D13B41CDCCCCCC1BE229413333333346D23B4133333333E4E229419A99991947D23B41CDCCCCCCE5E2294100000000E3D13B419A9999991DE229419A999919E2D13B410103000000010000000500000033333333E4E229419A99991947D23B4167666666E2E2294133333333ABD23B419A999999AAE3294100000000ACD23B4167666666ACE32941676666E647D23B4133333333E4E229419A99991947D23B410103000000010000000500000000000000AEE32941CDCCCCCCE3D13B4167666666ACE32941676666E647D23B419A99999974E42941CDCCCCCC48D23B413333333376E42941333333B3E4D13B4100000000AEE32941CDCCCCCCE3D13B41010300000001000000050000009A99999974E42941CDCCCCCC48D23B41CDCCCCCC72E42941676666E6ACD23B41000000003BE52941333333B3ADD23B41CDCCCCCC3CE529419A99999949D23B419A99999974E42941CDCCCCCC48D23B41010300000001000000050000003333333376E42941333333B3E4D13B419A99999974E42941CDCCCCCC48D23B41CDCCCCCC3CE529419A99999949D23B41676666663EE5294100000080E5D13B413333333376E42941333333B3E4D13B4101030000000100000005000000CDCCCCCC3CE529419A99999949D23B41000000003BE52941333333B3ADD23B413333333303E629419A999999AED23B410000000005E62941000000804AD23B41CDCCCCCC3CE529419A99999949D23B4101030000000100000005000000333333330AE62941333333331ED13B416766666608E62941CDCCCC4C82D13B419A999999D0E629419A99991983D13B4167666666D2E62941000000001FD13B41333333330AE62941333333331ED13B410103000000010000000500000067666666CBE6294100000080AFD23B419A99999993E72941CDCCCC4CB0D23B416766666695E72941333333334CD23B4133333333CDE62941CDCCCC4C4BD23B4167666666CBE6294100000080AFD23B410103000000010000000500000067666666D2E62941000000001FD13B41CDCCCCCCCEE6294133333333E7D13B413333333397E729419A999919E8D13B419A9999999AE72941676666E61FD13B4167666666D2E62941000000001FD13B41010300000001000000050000006766666695E72941333333334CD23B419A99999993E72941CDCCCC4CB0D23B41CDCCCCCC5BE8294133333333B1D23B419A9999995DE829419A9999194DD23B416766666695E72941333333334CD23B41010300000001000000050000003333333300DF29416766666616D13B4167666666FEDE29419A9999997AD13B419A999999C6DF2941676666667BD13B4167666666C8DF2941CDCCCC4C17D13B413333333300DF29416766666616D13B4101030000000100000005000000CDCCCCCCBFC629410000000060D13B4133333333BEC629419A999919C4D13B416766666686C72941676666E6C4D13B410000000088C72941CDCCCCCC60D13B41CDCCCCCCBFC629410000000060D13B410103000000010000000F00000067666666BCC629413333333328D23B419A999999BAC62941CDCCCC4C8CD23B4167666666F2C52941676666668BD23B41CDCCCCCCF0C5294100000080EFD23B413333333398C32941676666E6ECD23B410000000093C32941CDCCCC4C19D43B41333333335BC429419A9999191AD43B416766666659C42941333333337ED43B41CDCCCCCCE9C52941676666E67FD43B419A999999EBC52941CDCCCCCC1BD43B41000000007CC729419A9999991DD43B413333333381C7294133333333F1D23B416766666649C829419A999919F2D23B41CDCCCCCC4CC82941676666E629D23B4167666666BCC629413333333328D23B41010300000001000000080000008FACC04B7BC72941166E53A649D43B410AD7A3F081C72941713D0A9747D43B4100000000E8C729417B14AE074BD43B41295C8F423AC82941EC51B85E41D43B415D3D57AA43C8294176AAA7D83FD43B413333333344C82941676666661ED43B41000000007CC729419A9999991DD43B418FACC04B7BC72941166E53A649D43B410103000000010000000B000000A47CE0D12DC62941D26BBB2AA1D73B4190C2F5A820C629411F85EB11ADD73B419A99991914C62941CDCCCC0CCDD73B4148E17A941BC62941EC51B81EEBD73B41676666E6A6C6294152B81EC51CD83B41B81E856B2CC729413E0AD76342D83B4169089E8569C729414878F78E56D83B41CDCCCCCC6AC729419A99999906D83B419A999999A2C62941CDCCCCCC05D83B4167666666A4C62941333333B3A1D73B41A47CE0D12DC62941D26BBB2AA1D73B41010300000001000000040000004CBAA863A7C72941303FC5FA6AD83B416F80C59830C82941F971D44498D83B416766666631C829419A9999996BD83B414CBAA863A7C72941303FC5FA6AD83B4101030000000100000005000000802C2FFBB8C8294111164E51D0D83B41CDCCCCCCCBC82941EC51B85EF7D83B41D6C46925F7C829415887DADEF7D83B41CDCCCCCCF7C829419A999999D0D83B41802C2FFBB8C8294111164E51D0D83B41010300000001000000040000009DA6E911B2C62941109EF10788D43B4184F15710C9C62941A1E21CE780D43B4133333333B2C62941CDCCCCCC80D43B419DA6E911B2C62941109EF10788D43B410103000000010000000800000090AEF26A3EC82941FD06003976D53B41AE47E17A1EC829413E0AD7A391D53B415C8FC2F5E1C7294190C2F568ABD53B419A999919B7C729417B14AE47DAD53B4115AE476186C72941C3F5281C01D63B41A6EE472379C72941790F342012D63B419A9999993BC829410000000013D63B4190AEF26A3EC82941FD06003976D53B41010300000001000000080000004E9B2C4673C729415D3014A919D63B41CDCCCC4C2CC72941C3F528DC74D63B41B81E856B0FC72941A4703DCAA6D63B411F85EBD1FAC62941D7A370BDC8D63B415C8FC2F597C62941EC51B85EF3D63B41CB2F566B6AC629413FF2F64B3DD73B41676666666EC72941676666663ED73B414E9B2C4673C729415D3014A919D63B4101030000000100000006000000A6EE472379C72941790F342012D63B41A9847D4773C729419F4463A719D63B41CDCCCCCC71C729413333333376D63B41000000003AC829419A99991977D63B419A9999993BC829410000000013D63B41A6EE472379C72941790F342012D63B410103000000010000000F000000CB2F566B6AC629413FF2F64B3DD73B419A99999968C629410000004040D73B41AE47E1FA67C62941A4703D4A64D73B41A4703D8A55C62941D7A3703D7DD73B41A47CE0D12DC62941D26BBB2AA1D73B4167666666A4C62941333333B3A1D73B419A999999A2C62941CDCCCCCC05D83B41CDCCCCCC6AC729419A99999906D83B4169089E8569C729414878F78E56D83B414CBAA863A7C72941303FC5FA6AD83B416766666631C829419A9999996BD83B41000000003AC829419A99991977D63B41CDCCCCCC71C729413333333376D63B41676666666EC72941676666663ED73B41CB2F566B6AC629413FF2F64B3DD73B410103000000010000000C000000B56494BE58C4294141BD7536A7D43B4115AE4761A7C4294148E17A94ABD43B411F85EB5165C5294190C2F568BBD43B41F6285C8F85C529417B14AE87AFD43B41AE47E1FA4FC629413E0AD763A5D43B41CDCCCC4C86C629419A99999995D43B41244A09FAB1C62941007D580F88D43B41CDCCCCCCB3C62941333333B31CD43B419A999999EBC52941CDCCCCCC1BD43B41CDCCCCCCE9C52941676666E67FD43B416766666659C42941333333337ED43B41B56494BE58C4294141BD7536A7D43B41010300000001000000070000009A9999992DC52941CDCCCC4CC2D13B41000000002CC529416766666626D23B4133333333F4C52941CDCCCC4C27D23B4167666666F2C52941676666668BD23B419A999999BAC62941CDCCCC4C8CD23B4133333333BEC629419A999919C4D13B419A9999992DC52941CDCCCC4CC2D13B4101030000000100000005000000333333332AC529419A9999998AD23B419A99999928C52941333333B3EED23B41CDCCCCCCF0C5294100000080EFD23B4167666666F2C52941676666668BD23B41333333332AC529419A9999998AD23B41010300000001000000050000009A999999F7C529419A9999195FD13B4100000000F6C5294133333333C3D13B4133333333BEC629419A999919C4D13B41CDCCCCCCBFC629410000000060D13B419A999999F7C529419A9999195FD13B410103000000010000000600000084F15710C9C62941A1E21CE780D43B418FACC04B7BC72941166E53A649D43B41000000007CC729419A9999991DD43B41CDCCCCCCB3C62941333333B31CD43B4133333333B2C62941CDCCCCCC80D43B4184F15710C9C62941A1E21CE780D43B410103000000010000000500000033333333BEC629419A999919C4D13B4167666666BCC629413333333328D23B419A99999984C729410000000029D23B416766666686C72941676666E6C4D13B4133333333BEC629419A999919C4D13B41010300000001000000050000000000000009C9294100000080E7D43B41CDCCCCCC03C92941CDCCCCCC13D63B4100000000CCC92941333333B314D63B4133333333D1C92941CDCCCC4CE8D43B410000000009C9294100000080E7D43B4101030000000100000005000000000000003AC829419A99991977D63B413333333338C8294133333333DBD63B416766666600C9294100000000DCD63B413333333302C92941676666E677D63B41000000003AC829419A99991977D63B4101030000000100000005000000000000002CC529416766666626D23B41333333332AC529419A9999998AD23B4167666666F2C52941676666668BD23B4133333333F4C52941CDCCCC4C27D23B41000000002CC529416766666626D23B41010300000001000000050000009A99999907C2294133333333EBD23B410000000006C22941CDCCCC4C4FD33B4133333333CEC229413333333350D33B41CDCCCCCCCFC229419A999919ECD23B419A99999907C2294133333333EBD23B41010300000001000000050000000000000006C22941CDCCCC4C4FD33B413333333304C2294167666666B3D33B4167666666CCC22941CDCCCC4CB4D33B4133333333CEC229413333333350D33B410000000006C22941CDCCCC4C4FD33B41010300000001000000060000008459F83600C22941B59FEE50A0D43B41713D0A5781C22941E17A142E88D43B4113E070BBC8C229415A3D3A418DD43B4100000000C9C22941000000807CD43B41CDCCCCCC00C22941333333B37BD43B418459F83600C22941B59FEE50A0D43B410103000000010000000700000067666666CCC22941CDCCCC4CB4D33B4100000000C9C22941000000807CD43B416766666659C42941333333337ED43B41333333335BC429419A9999191AD43B410000000093C32941CDCCCC4C19D43B419A99999994C3294133333333B5D33B4167666666CCC22941CDCCCC4CB4D33B410103000000020000001A000000A13AB048D0B52941616D149715D23B415C8FC275CFB52941C3F5289C45D23B4115AE4761EAB52941CDCCCCCC86D23B41B81E85EB1BB62941CDCCCC0CA5D23B41676666667DB62941295C8F82C9D23B41F6285C8F6CB72941C3F5289C0AD33B4115AE476192B729417B14AEC717D33B41713D0A57B4B72941E17A14EE1CD33B4152B81E85F6B729415C8FC23517D33B4148E17A1402B9294152B81E45CED23B4185EB51B866B92941B81E85ABAFD23B417B14AE47B9B92941EC51B81E09D33B410AD7A370E7B92941F6285C4F02D33B41AE47E1FA4DBA294185EB51B8E9D23B417B14AEC7FABA2941B81E856BC7D23B41562CE01DFEBA29410767AFF6CAD23B4167666666FFBA2941676666667FD23B413333333337BA2941000000807ED23B410000000039BA2941676666661AD23B41CDCCCCCC70B929419A99999919D23B416766666672B9294100000080B5D13B41CDCCCCCC19B72941676666E6B2D13B416766666616B729419A9999197BD23B41333333334EB62941CDCCCC4C7AD23B410000000050B629419A99991916D23B41A13AB048D0B52941616D149715D23B41050000006766666616B729419A9999197BD23B41CDCCCCCCA6B82941CDCCCCCC7CD23B4133333333A5B82941676666E6E0D23B419A99999914B7294133333333DFD23B416766666616B729419A9999197BD23B410103000000010000000600000091066719BBA429413D124827D5D93B41D7A3703D02A529419A999959A2D93B4171465D753BA52941E27218A071D93B416766666632A429410000008070D93B419A99999930A429419A999999D4D93B4191066719BBA429413D124827D5D93B4101030000000100000010000000B044C838C4A52941586FBD2123D93B4185EB51B864A62941AE47E1BA28D93B414632857E8CA62941E369B1E720D93B41CDCCCCCC8CA62941676666E60ED93B410000000055A72941CDCCCCCC0FD93B41861AC49B54A729413AE0CFDA26D93B41AE47E1FA6CA72941EC51B8DE2AD93B419A99991905A829413E0AD763B9D83B41333333333AA82941CDCCCC8C7DD83B4194ADAD9392A829413D3C15EF48D83B416766666658A729419A99999947D83B419A99999956A72941333333B3ABD83B4100000000FEA429419A999919A9D83B4167666666FCA42941333333330DD93B419A999999C4A529419A9999190ED93B41B044C838C4A52941586FBD2123D93B410103000000010000000500000037A2DF4EB3B429410B3E6C2A4CD13B41F6285C8F16B529419A99999983D13B41EE3218E488B5294154D3A181CDD13B41333333338BB529419A9999194DD13B4137A2DF4EB3B429410B3E6C2A4CD13B41010300000001000000040000004C01D3677BBB29415F7E392C48D33B410E14BB70C3BB29418A1C7B0678D33B4133333333C4BB29410000008048D33B414C01D3677BBB29415F7E392C48D33B410103000000010000000700000083F6941334BC29416210AF0DADD33B4190C2F5A8A0BC2941A4703D8AD4D33B41167FD1F250BD2941F5E2573521D43B419A99999954BD2941333333334AD33B41676666668CBC2941CDCCCC4C49D33B41CDCCCCCC8ABC294167666666ADD33B4183F6941334BC29416210AF0DADD33B41010300000001000000050000009A9999993ABA2941CDCCCC4CB6D13B410000000039BA2941676666661AD23B413333333301BB2941CDCCCC4C1BD23B410000000003BB294133333333B7D13B419A9999993ABA2941CDCCCC4CB6D13B4101030000000100000005000000333333338EBC294133333333E5D23B41676666668CBC2941CDCCCC4C49D33B419A99999954BD2941333333334AD33B416766666656BD29419A999919E6D23B41333333338EBC294133333333E5D23B4101030000000100000009000000CDCCCCCCB0A62941333333B3D8D03B4100000000AFA62941CDCCCCCC3CD13B41333333338EA32941CDCCCC4C39D13B41CDCCCCCC8AA329419A99999901D23B4167666666E3A529419A99991904D23B4133333333E5A5294100000000A0D13B419A99999975A72941333333B3A1D13B410000000079A7294100000080D9D03B41CDCCCCCCB0A62941333333B3D8D03B41010300000001000000050000009A9999999FA62941333333B3C1D43B41000000009EA62941CDCCCCCC25D53B413333333366A72941333333B326D53B41CDCCCCCC67A729419A999999C2D43B419A9999999FA62941333333B3C1D43B4101030000000100000005000000676666669AA629419A999919EED53B41CDCCCCCC98A629413333333352D63B410000000061A729410000000053D63B419A99999962A72941676666E6EED53B41676666669AA629419A999919EED53B41010300000001000000060000000D36E6798CA62941B4259AE820D93B41D7A3703DD7A629413333333312D93B410E28E39554A72941B7EED7D926D93B410000000055A72941CDCCCCCC0FD93B41CDCCCCCC8CA62941676666E60ED93B410D36E6798CA62941B4259AE820D93B4101030000000100000009000000562CE01DFEBA29410767AFF6CAD23B41676666E62DBB29415C8FC2B5FDD23B41C3F5285C57BB2941B81E85EB20D33B417B14AEC776BB29419A99991945D33B414C01D3677BBB29415F7E392C48D33B4133333333C4BB29410000008048D33B419A999999C7BB2941CDCCCC4C80D23B4167666666FFBA2941676666667FD23B41562CE01DFEBA29410767AFF6CAD23B41010300000001000000050000006766666656BD29419A999919E6D23B419A99999954BD2941333333334AD33B41000000001DBE2941000000004BD33B419A9999991EBE2941676666E6E6D23B416766666656BD29419A999919E6D23B41010300000001000000050000003333333374B929416766666651D13B416766666672B9294100000080B5D13B419A9999993ABA2941CDCCCC4CB6D13B41676666663CBA29413333333352D13B413333333374B929416766666651D13B41010300000001000000050000009A999999DEB72941000000007CD23B4100000000DDB729419A999919E0D23B4133333333A5B82941676666E6E0D23B41CDCCCCCCA6B82941CDCCCCCC7CD23B419A999999DEB72941000000007CD23B4101030000000100000008000000EE3218E488B5294154D3A181CDD13B41EC51B81EA9B52941713D0A57E2D13B41B81E85EBD0B5294152B81E85F0D13B41A13AB048D0B52941616D149715D23B410000000050B629419A99991916D23B416766666653B62941676666E64DD13B41333333338BB529419A9999194DD13B41EE3218E488B5294154D3A181CDD13B41010300000001000000050000000000000039BA2941676666661AD23B413333333337BA2941000000807ED23B4167666666FFBA2941676666667FD23B413333333301BB2941CDCCCC4C1BD23B410000000039BA2941676666661AD23B41010300000001000000050000009A999999CEBB2941CDCCCCCCEFD03B41CDCCCCCCCCBB2941676666E653D13B410000000095BC2941CDCCCCCC54D13B41CDCCCCCC96BC2941333333B3F0D03B419A999999CEBB2941CDCCCCCCEFD03B410103000000010000000500000000000000ACB829410000008050D13B4133333333AAB829419A999999B4D13B416766666672B9294100000080B5D13B413333333374B929416766666651D13B4100000000ACB829410000008050D13B41010300000001000000050000003333333358BD29410000000082D23B416766666656BD29419A999919E6D23B419A9999991EBE2941676666E6E6D23B416766666620BE2941CDCCCCCC82D23B413333333358BD29410000000082D23B41010300000001000000050000006766666672B9294100000080B5D13B41CDCCCCCC70B929419A99999919D23B410000000039BA2941676666661AD23B419A9999993ABA2941CDCCCC4CB6D13B416766666672B9294100000080B5D13B410103000000010000000500000033333333CBBB294100000000B8D13B4167666666C9BB2941333333331CD23B419A99999991BC2941000000001DD23B416766666693BC2941676666E6B8D13B4133333333CBBB294100000000B8D13B4101030000000100000005000000676666663CBA29413333333352D13B419A9999993ABA2941CDCCCC4CB6D13B410000000003BB294133333333B7D13B419A99999904BB29419A99991953D13B41676666663CBA29413333333352D13B41010300000001000000050000006766666653B62941676666E64DD13B419A99999951B6294100000000B2D13B41CDCCCCCC19B72941676666E6B2D13B419A9999991BB72941CDCCCCCC4ED13B416766666653B62941676666E64DD13B41010300000001000000050000000000000090BC29419A99991981D23B41333333338EBC294133333333E5D23B416766666656BD29419A999919E6D23B413333333358BD29410000000082D23B410000000090BC29419A99991981D23B41010300000001000000070000000E14BB70C3BB29418A1C7B0678D33B4148E17A94EBBB29410AD7A3B092D33B4183F6941334BC29416210AF0DADD33B41CDCCCCCC8ABC294167666666ADD33B41676666668CBC2941CDCCCC4C49D33B4133333333C4BB29410000008048D33B410E14BB70C3BB29418A1C7B0678D33B410103000000010000000700000009F5662588BD29413D60BFDCDAD43B4148E17A1469BD29417B14AEC728D53B41B81E85EBFEBD2941333333733CD53B41A52BB10510BE294191D58F943FD53B416766666614BE29419A9999993FD53B410000000016BE294100000080DBD43B4109F5662588BD29413D60BFDCDAD43B41010300000001000000050000009A999999C9A52941333333B3E1D73B4100000000C8A52941CDCCCCCC45D83B416766666658A729419A99999947D83B41333333335AA7294100000080E3D73B419A999999C9A52941333333B3E1D73B4101030000000100000005000000CDCCCCCCDAA52941333333B3F8D33B4133333333D9A52941CDCCCCCC5CD43B4167666666A1A629419A9999995DD43B4100000000A3A6294100000080F9D33B41CDCCCCCCDAA52941333333B3F8D33B410103000000010000000700000067666666E5B7294100000080EBD03B4100000000E2B72941CDCCCCCCB3D13B4133333333AAB829419A999999B4D13B4100000000ACB829410000008050D13B413333333374B929416766666651D13B410000000076B92941CDCCCC4CEDD03B4167666666E5B7294100000080EBD03B41010300000001000000050000009A999999C4B429419A999919E8D03B4100000000C3B42941333333334CD13B41333333338BB529419A9999194DD13B41CDCCCCCC8CB5294100000000E9D03B419A999999C4B429419A999919E8D03B41010300000001000000050000000000000016A529419A9999992FD33B416766666614A52941333333B393D33B419A999999DCA529419A99999994D33B4133333333DEA529410000008030D33B410000000016A529419A9999992FD33B4101030000000100000009000000B7FF787F3BA529417ADC7C9771D93B410AD7A3704FA52941C3F5289C60D93B410AD7A3705EA52941C3F5289C27D93B41EC51B89EA0A529413E0AD7E321D93B41B044C838C4A52941586FBD2123D93B419A999999C4A529419A9999190ED93B4167666666FCA42941333333330DD93B419A999999FAA42941CDCCCC4C71D93B41B7FF787F3BA529417ADC7C9771D93B410103000000010000000600000092F27C42B4A82941D19BA9F4E4D73B41AE47E1FA87A8294115AE47A1A5D73B41120E470090A829415E327EAF80D73B410000000024A829413333333380D73B416766666622A82941CDCCCC4CE4D73B4192F27C42B4A82941D19BA9F4E4D73B410103000000010000000B0000005559FCD60FBE2941124F038C3FD53B4152B81E85C8BE29419A99995961D53B411F85EBD126BF2941D7A370BD55D53B415C8FC275EFBF29411F85EB913ED53B41E17A14AE09C02941B81E85AB33D53B410AD7A37062C02941295C8F020DD53B4152B81E05CBC02941E17A146EF2D43B415C19B5701AC12941E1FA5DCFDED43B4167666666A6BF294133333333DDD43B41CDCCCCCCA4BF2941CDCCCC4C41D53B415559FCD60FBE2941124F038C3FD53B4101030000000100000007000000120E470090A829415E327EAF80D73B41E17A142E97A82941EC51B89E5FD73B4133333333CEA82941A4703DCA28D73B414F6D11BECCA82941A9BFB9D91CD73B41CDCCCCCC25A829419A9999191CD73B410000000024A829413333333380D73B41120E470090A829415E327EAF80D73B410103000000010000000700000013E070BBC8C229415A3D3A418DD43B41713D0A57F9C229415C8FC2B590D43B411F85EB51A9C3294185EB51789DD43B41B56494BE58C4294141BD7536A7D43B416766666659C42941333333337ED43B4100000000C9C22941000000807CD43B4113E070BBC8C229415A3D3A418DD43B4101030000000100000007000000F27B9CED36C1294183A1BAC5D7D43B4190C2F5289EC1294152B81E45BED43B41333333B3EEC12941713D0A97A3D43B418459F83600C22941B59FEE50A0D43B41CDCCCCCC00C22941333333B37BD43B419A99999938C12941CDCCCCCC7AD43B41F27B9CED36C1294183A1BAC5D7D43B4101030000000100000005000000CDCCCCCC3DC12941000000804ED33B41000000003CC129419A999999B2D33B413333333304C2294167666666B3D33B410000000006C22941CDCCCC4C4FD33B41CDCCCCCC3DC12941000000804ED33B410103000000010000000B000000CDCCCCCC0BA529413333333388D53B41000000000AA52941CDCCCC4CECD53B41676666669AA629419A999919EED53B41333333339CA62941000000008AD53B416766666664A72941CDCCCCCC8AD53B413333333366A72941333333B326D53B41000000009EA62941CDCCCCCC25D53B419A9999999FA62941333333B3C1D43B4167666666D7A52941676666E6C0D43B4100000000D4A529419A99991989D53B41CDCCCCCC0BA529413333333388D53B4101030000000100000005000000CDCCCCCCDAA52941333333B3F8D33B4100000000A3A6294100000080F9D33B4167666666A6A62941CDCCCC4C31D33B4133333333DEA529410000008030D33B41CDCCCCCCDAA52941333333B3F8D33B41010300000001000000050000009A9999999FA62941333333B3C1D43B41CDCCCCCC67A729419A999999C2D43B419A99999969A72941000000805ED43B4167666666A1A629419A9999995DD43B419A9999999FA62941333333B3C1D43B41010300000001000000050000009A99999912A52941CDCCCCCCF7D33B410000000011A52941676666E65BD43B4133333333D9A52941CDCCCCCC5CD43B41CDCCCCCCDAA52941333333B3F8D33B419A99999912A52941CDCCCCCCF7D33B41010300000001000000050000009A999999ABA629410000000005D23B4100000000AAA629419A99991969D23B413333333372A72941000000006AD23B41CDCCCCCC73A72941676666E605D23B419A999999ABA629410000000005D23B41010300000001000000050000000000000003BB294133333333B7D13B4167666666FFBA2941676666667FD23B419A999999C7BB2941CDCCCC4C80D23B4133333333CBBB294100000000B8D13B410000000003BB294133333333B7D13B41010300000001000000050000000000000076B92941CDCCCC4CEDD03B413333333374B929416766666651D13B419A99999904BB29419A99991953D13B416766666606BB294100000000EFD03B410000000076B92941CDCCCC4CEDD03B41010300000001000000050000003333333304C2294167666666B3D33B419A99999902C229419A99999917D43B41CDCCCCCCCAC229416766666618D43B4167666666CCC22941CDCCCC4CB4D33B413333333304C2294167666666B3D33B41010300000001000000050000006766666616B729419A9999197BD23B419A99999914B7294133333333DFD23B4100000000DDB729419A999919E0D23B419A999999DEB72941000000007CD23B416766666616B729419A9999197BD23B41010300000001000000050000009A99999951B6294100000000B2D13B41333333334EB62941CDCCCC4C7AD23B416766666616B729419A9999197BD23B41CDCCCCCC19B72941676666E6B2D13B419A99999951B6294100000000B2D13B4101030000000100000005000000CDCCCCCC19B72941676666E6B2D13B4100000000E2B72941CDCCCCCCB3D13B41CDCCCCCCE3B72941333333B34FD13B419A9999991BB72941CDCCCCCC4ED13B41CDCCCCCC19B72941676666E6B2D13B41010300000001000000070000003333333382A329419A999919F6D33B416766666680A32941333333335AD43B419A99999948A429419A9999195BD43B410000000047A4294133333333BFD43B41333333330FA5294100000000C0D43B419A99999912A52941CDCCCCCCF7D33B413333333382A329419A999919F6D33B410103000000010000000500000067666666ADA62941676666E6A0D13B419A999999ABA629410000000005D23B41CDCCCCCC73A72941676666E605D23B419A99999975A72941333333B3A1D13B4167666666ADA62941676666E6A0D13B4101030000000100000009000000855BDE9C92A82941148B9CE948D83B4115AE4761A3A82941E17A14EE3ED83B41EC51B89EA5A82941B81E85EB30D83B41CDCCCC4C94A82941CDCCCCCC08D83B41B81E85EBB4A82941676666E6E5D73B4192F27C42B4A82941D19BA9F4E4D73B416766666622A82941CDCCCC4CE4D73B419A99999920A829416766666648D83B41855BDE9C92A82941148B9CE948D83B4101030000000100000004000000195D796E9CF12941FA34DBD8D0D73B41340A5B1FA8F129411EC0F735D5D73B4133333333A8F12941676666E6D0D73B41195D796E9CF12941FA34DBD8D0D73B410103000000010000000500000000000000ECF02941CDCCCC4C13D53B4167666666E8F0294100000080DBD53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4133333333B4F129419A99991914D53B4100000000ECF02941CDCCCC4C13D53B4101030000000100000006000000BD2783378CEE2941FF99028FACD63B415C8FC27506EF2941676666A6D6D63B411AFE884C53EF294160005F65F3D63B419A99999954EF294100000000A2D63B41676666668CEE29419A999919A1D63B41BD2783378CEE2941FF99028FACD63B4101030000000100000005000000CDCCCCCC96EE29410000008048D43B410000000095EE29419A999999ACD43B41333333335DEF294167666666ADD43B41000000005FEF2941CDCCCC4C49D43B41CDCCCCCC96EE29410000008048D43B41010300000001000000050000009A9999995BEF29410000008011D53B41CDCCCCCC59EF29419A99999975D53B410000000022F029410000008076D53B41CDCCCCCC23F029416766666612D53B419A9999995BEF29410000008011D53B4101030000000100000007000000632DB122E1F02941975893F588D73B41D7A3703D63F1294100000080BBD73B41195D796E9CF12941FA34DBD8D0D73B4133333333A8F12941676666E6D0D73B41CDCCCCCCA9F12941CDCCCCCC6CD73B419A999999E1F02941676666E66BD73B41632DB122E1F02941975893F588D73B41010300000001000000050000000000000058EF2941CDCCCCCCD9D53B416766666656EF2941676666E63DD63B419A9999991EF02941333333B33ED63B413333333320F029419A999999DAD53B410000000058EF2941CDCCCCCCD9D53B41010300000001000000060000001AFE884C53EF294160005F65F3D63B412B5DA5D685EF2941A6489B4D06D73B41333333331BF02941676666E606D73B41CDCCCCCC1CF02941CDCCCCCCA2D63B419A99999954EF294100000000A2D63B411AFE884C53EF294160005F65F3D63B41010300000001000000050000009A999999EDF029419A999919AFD43B4100000000ECF02941CDCCCC4C13D53B4133333333B4F129419A99991914D53B41CDCCCCCCB5F1294100000000B0D43B419A999999EDF029419A999919AFD43B41010300000001000000060000002B5DA5D685EF2941A6489B4D06D73B419A999999ABEF2941E17A146E14D73B4185EB5138FDEF2941F6285CCF2FD73B412DBAF5481AF02941EB8702C73CD73B41333333331BF02941676666E606D73B412B5DA5D685EF2941A6489B4D06D73B410103000000010000000500000000000000E5F02941333333B3A3D63B419A999999E1F02941676666E66BD73B41CDCCCCCCA9F12941CDCCCCCC6CD73B4133333333ADF1294100000080A4D63B4100000000E5F02941333333B3A3D63B410103000000010000000500000067666666E8F0294100000080DBD53B41CDCCCCCCE6F029419A9999993FD63B4100000000AFF129416766666640D63B41CDCCCCCCB0F12941CDCCCC4CDCD53B4167666666E8F0294100000080DBD53B4101030000000100000005000000CDCCCCCC8FEE2941676666E6D8D53B41333333338EEE2941000000003DD63B416766666656EF2941676666E63DD63B410000000058EF2941CDCCCCCCD9D53B41CDCCCCCC8FEE2941676666E6D8D53B4101030000000100000007000000FE8E2EBA20EE2941836E03823CD63B4190C2F5A828EE2941A4703D8A47D63B411F85EBD169EE2941EC51B8DE7CD63B412EC1654977EE294118680004A1D63B41676666668CEE29419A999919A1D63B41333333338EEE2941000000003DD63B41FE8E2EBA20EE2941836E03823CD63B4101030000000100000005000000CDCCCCCCE8E929419A9999197BD33B4133333333E7E9294133333333DFD33B4167666666AFEA29419A999919E0D33B4100000000B1EA2941000000007CD33B41CDCCCCCCE8E929419A9999197BD33B41010300000001000000050000000000000055E829419A99999941D43B413333333353E82941333333B3A5D43B419A9999991BE929419A999999A6D43B41333333331DE929410000008042D43B410000000055E829419A99999941D43B4101030000000100000005000000676666663CEC294100000000AAD43B419A9999993AEC29419A9999190ED53B41CDCCCCCC02ED2941000000000FD53B419A99999904ED2941676666E6AAD43B41676666663CEC294100000000AAD43B4101030000000100000005000000CDCCCCCC59EF29419A99999975D53B410000000058EF2941CDCCCCCCD9D53B413333333320F029419A999999DAD53B410000000022F029410000008076D53B41CDCCCCCC59EF29419A99999975D53B4101030000000100000005000000333333338EEE2941000000003DD63B41676666668CEE29419A999919A1D63B419A99999954EF294100000000A2D63B416766666656EF2941676666E63DD63B41333333338EEE2941000000003DD63B41010300000001000000050000003333333353E82941333333B3A5D43B419A99999951E82941CDCCCCCC09D53B41CDCCCCCC19E92941333333B30AD53B419A9999991BE929419A999999A6D43B413333333353E82941333333B3A5D43B41010300000001000000050000002EC1654977EE294118680004A1D63B413E0AD72379EE2941D7A370FDA5D63B41BD2783378CEE2941FF99028FACD63B41676666668CEE29419A999919A1D63B412EC1654977EE294118680004A1D63B4101030000000100000006000000804CAF3638EC2941526A90EE9DD53B411F85EB51ABEC2941333333B392D53B41A956ED7F00ED2941053B2A0B9AD53B413333333301ED29419A99991973D53B410000000039EC29413333333372D53B41804CAF3638EC2941526A90EE9DD53B41010300000001000000050000006766666656EF2941676666E63DD63B419A99999954EF294100000000A2D63B41CDCCCCCC1CF02941CDCCCCCCA2D63B419A9999991EF02941333333B33ED63B416766666656EF2941676666E63DD63B4101030000000100000005000000000000001FE9294167666666DED33B41333333331DE929410000008042D43B4167666666E5E92941CDCCCC4C43D43B4133333333E7E9294133333333DFD33B41000000001FE9294167666666DED33B41010300000001000000050000000000000024E9294100000000B2D23B416766666622E929419A99991916D33B419A999999EAE929410000000017D33B4167666666ECE92941676666E6B2D23B410000000024E9294100000000B2D23B41010300000001000000100000001445DF8900ED29412EB9050C9AD53B417B14AE4719ED2941E17A142E9CD53B41C3F528DC64ED29417B14AE87B9D53B4190C2F528B6ED29410AD7A3F0E7D53B4185EB51B8F9ED2941295C8F4206D63B417EEA3ABF20EE294163BA08893CD63B41333333338EEE2941000000003DD63B41CDCCCCCC8FEE2941676666E6D8D53B410000000058EF2941CDCCCCCCD9D53B41CDCCCCCC59EF29419A99999975D53B419A99999991EE2941CDCCCCCC74D53B410000000095EE29419A999999ACD43B41CDCCCCCCCCED2941333333B3ABD43B4167666666C9ED2941676666E673D53B413333333301ED29419A99991973D53B411445DF8900ED29412EB9050C9AD53B4101030000000100000005000000333333335AE82941CDCCCC4C15D33B416766666658E829416766666679D33B419A99999920E92941333333337AD33B416766666622E929419A99991916D33B41333333335AE82941CDCCCC4C15D33B41010300000001000000050000006766666622E929419A99991916D33B419A99999920E92941333333337AD33B41CDCCCCCCE8E929419A9999197BD33B419A999999EAE929410000000017D33B416766666622E929419A99991916D33B410103000000010000000500000000000000EEE92941CDCCCCCC4ED23B4167666666ECE92941676666E6B2D23B419A999999B4EA2941333333B3B3D23B4133333333B6EA29419A9999994FD23B4100000000EEE92941CDCCCCCC4ED23B41010300000001000000050000009A9999995DE829419A9999194DD23B41333333335AE82941CDCCCC4C15D33B416766666622E929419A99991916D33B41CDCCCCCC25E92941676666E64DD23B419A9999995DE829419A9999194DD23B4101030000000100000005000000000000003EEC2941676666E645D43B41676666663CEC294100000000AAD43B419A99999904ED2941676666E6AAD43B413333333306ED2941CDCCCCCC46D43B41000000003EEC2941676666E645D43B410103000000010000000500000067666666F1E929419A99999986D13B41CDCCCCCCEFE92941333333B3EAD13B4100000000B8EA294100000080EBD13B419A999999B9EA29416766666687D13B4167666666F1E929419A99999986D13B410103000000010000000500000033333333AAEA2941676666660CD53B416766666672EB2941333333330DD53B413333333374EB29419A999919A9D43B4100000000ACEA2941CDCCCC4CA8D43B4133333333AAEA2941676666660CD53B410103000000010000000500000033333333F3E929410000008022D13B4167666666F1E929419A99999986D13B419A999999B9EA29416766666687D13B4167666666BBEA2941CDCCCC4C23D13B4133333333F3E929410000008022D13B410103000000010000000500000067666666ECE92941676666E6B2D23B419A999999EAE929410000000017D33B41CDCCCCCCB2EA2941676666E617D33B419A999999B4EA2941333333B3B3D23B4167666666ECE92941676666E6B2D23B41010300000001000000050000009A999999EAE929410000000017D33B41CDCCCCCCE8E929419A9999197BD33B4100000000B1EA2941000000007CD33B41CDCCCCCCB2EA2941676666E617D33B419A999999EAE929410000000017D33B410103000000010000000500000033333333E7E9294133333333DFD33B4167666666E5E92941CDCCCC4C43D43B419A999999ADEA29413333333344D43B4167666666AFEA29419A999919E0D33B4133333333E7E9294133333333DFD33B410103000000010000000500000067666666E5E92941CDCCCC4C43D43B41CDCCCCCCE3E9294167666666A7D43B4100000000ACEA2941CDCCCC4CA8D43B419A999999ADEA29413333333344D43B4167666666E5E92941CDCCCC4C43D43B410103000000010000000500000000000000E2E92941000000800BD53B4133333333E0E929419A9999996FD53B419A999999A8EA29410000008070D53B4133333333AAEA2941676666660CD53B4100000000E2E92941000000800BD53B41010300000001000000060000007CD264D096EA29419CDB3387D4D53B41C758A3EAA6EA2941AC86451ECED53B419A999999A8EA29410000008070D53B4133333333E0E929419A9999996FD53B419A999999DEE92941333333B3D3D53B417CD264D096EA29419CDB3387D4D53B4101030000000100000005000000000000002BE929419A99999921D13B413333333329E92941333333B385D13B4167666666F1E929419A99999986D13B4133333333F3E929410000008022D13B41000000002BE929419A99999921D13B4101030000000100000005000000CDCCCCCCE3E9294167666666A7D43B4100000000E2E92941000000800BD53B4133333333AAEA2941676666660CD53B4100000000ACEA2941CDCCCC4CA8D43B41CDCCCCCCE3E9294167666666A7D43B41010300000001000000050000004C00C769C9A3294112F9D822D4D93B415C8FC2750CA4294167666666F9D93B41EC3D9D1030A4294154C1C513F6D93B419A99999930A429419A999999D4D93B414C00C769C9A3294112F9D822D4D93B4101030000000100000006000000EC3D9D1030A4294154C1C513F6D93B4185EB51B868A42941A4703DCAF0D93B41A4703D0AA9A42941CDCCCC0CE2D93B4191066719BBA429413D124827D5D93B419A99999930A429419A999999D4D93B41EC3D9D1030A4294154C1C513F6D93B4101030000000100000005000000676666667BA329410000008086D53B419A99999979A329419A999999EAD53B41CDCCCCCC41A4294100000080EBD53B419A99999943A429416766666687D53B41676666667BA329410000008086D53B41010300000001000000050000006766666680A32941333333335AD43B41CDCCCCCC7EA32941CDCCCC4CBED43B410000000047A4294133333333BFD43B419A99999948A429419A9999195BD43B416766666680A32941333333335AD43B41010300000001000000050000000000000084A329410000000092D33B413333333382A329419A999919F6D33B41676666664AA4294100000000F7D33B41333333334CA42941CDCCCCCC92D33B410000000084A329410000000092D33B41010300000001000000050000009A99999943A429416766666687D53B41CDCCCCCC0BA529413333333388D53B41676666660DA529419A99991924D53B413333333345A42941CDCCCC4C23D53B419A99999943A429416766666687D53B41010300000001000000050000009A999999C1C62941CDCCCCCCFBD03B41CDCCCCCCBFC629410000000060D13B410000000088C72941CDCCCCCC60D13B41CDCCCCCC89C72941333333B3FCD03B419A999999C1C62941CDCCCCCCFBD03B4101030000000100000005000000075380D0B1D7294177FC9B7993D43B4175CCA98A24D7294158A69BC42ED43B410000000058D62941676666E62DD43B416766666656D629410000000092D43B41075380D0B1D7294177FC9B7993D43B4101030000000100000008000000856556A9C1E629416A9D9F3AEBD43B41713D0A57EAE629415C8FC235F3D43B41295C8F4238E72941CDCCCC8CFDD43B416C30D37D3CE729411D6E9B9F08D53B419A99999951E82941CDCCCCCC09D53B413333333353E82941333333B3A5D43B41CDCCCCCCC2E6294100000000A4D43B41856556A9C1E629416A9D9F3AEBD43B410103000000010000000500000000000000DFE229416766666673D33B4133333333DDE2294100000080D7D33B4167666666A5E32941CDCCCC4CD8D33B4133333333A7E329413333333374D33B4100000000DFE229416766666673D33B410103000000010000001400000090D9117220D7294167DE1CD92BD43B41C3F5285C05D72941A4703D8A18D43B415C8FC2F501D72941AE47E17AF4D33B41E42E0F89D5D62941ADE2604BCAD33B41CDCCCCCC59D62941CDCCCCCCC9D33B419259E8B55AD629414BDB791C97D33B41F6285C0FBBD52941AE47E1FA9DD33B419A999999EBD42941A4703D0A71D33B41295C8FC203D529413E0AD72369D33B410C94DDF238D529413D19FC6364D33B41CDCCCCCC02D429419A99991963D33B413333333301D4294133333333C7D33B4167666666C9D4294100000000C8D33B419A999999C7D429419A9999192CD43B41CDCCCCCC8FD52941000000002DD43B41333333338ED529419A99991991D43B416766666656D629410000000092D43B410000000058D62941676666E62DD43B416766666620D72941333333B32ED43B4190D9117220D7294167DE1CD92BD43B410103000000010000000B000000CDCCCCCC02D429419A99991963D33B419A99999904D4294100000000FFD23B410000000095D52941333333B300D33B41CDCCCCCC96D529419A9999999CD23B419A999999CED42941333333B39BD23B4133333333D0D429419A99999937D23B410000000008D42941CDCCCCCC36D23B416766666606D42941676666E69AD23B41333333333ED32941000000009AD23B419A9999993AD329413333333362D33B41CDCCCCCC02D429419A99991963D33B41010300000001000000060000006F1301C46CD729413C9C82DAEBD63B41676666667BD729419A9999D9DBD63B41295C8FC22DD72941D7A3707DC1D63B4142245A0315D72941C1F76D48BED63B413333333314D7294100000080EBD63B416F1301C46CD729413C9C82DAEBD63B41010300000001000000050000000000000088E02941333333B30CD33B416766666686E02941CDCCCCCC70D33B419A9999994EE12941333333B371D33B413333333350E129419A9999990DD33B410000000088E02941333333B30CD33B41010300000001000000050000006766666656D629410000000092D43B419A99999954D629419A999919F6D43B41CDCCCCCC1CD72941676666E6F6D43B419A9999991ED72941CDCCCCCC92D43B416766666656D629410000000092D43B4101030000000100000008000000C05006F49ED529413D301B9B21D63B41B81E856BCED529417B14AEC70DD63B411F85EBD128D6294167666626FCD53B410B135E6F50D62941C2789228EED53B413333333351D62941CDCCCC4CBED53B410000000089D5294167666666BDD53B416766666687D529410000008021D63B41C05006F49ED529413D301B9B21D63B41010300000001000000070000009A99999993E72941CDCCCC4CB0D23B410000000092E729416766666614D33B41CDCCCCCCC9E629419A99999913D33B4100000000C8E62941333333B377D33B416766666658E829416766666679D33B41CDCCCCCC5BE8294133333333B1D23B419A99999993E72941CDCCCC4CB0D23B410103000000010000000500000067666666C6E62941CDCCCCCCDBD33B419A999999C4E62941676666E63FD43B41CDCCCCCC8CE72941333333B340D43B419A9999998EE729419A999999DCD33B4167666666C6E62941CDCCCCCCDBD33B4101030000000100000005000000CDCCCCCCEAD329419A999999DCD83B4133333333E9D32941333333B340D93B4167666666B1D429410000008041D93B4100000000B3D4294167666666DDD83B41CDCCCCCCEAD329419A999999DCD83B41010300000001000000060000003685289693D529412111AED059D33B4185EB513851D62941D7A3707D2AD33B4151DA56AA5CD6294156F311DE26D33B41000000005FD62941676666669DD23B41CDCCCCCC96D529419A9999999CD23B413685289693D529412111AED059D33B41010300000001000000050000000000000071E429410000000011D33B41676666666FE429419A99991975D33B419A99999937E529410000000076D33B416766666639E52941CDCCCCCC11D33B410000000071E429410000000011D33B4101030000000100000006000000E42E0F89D5D62941ADE2604BCAD33B41D7A3703DADD629417B14AE07A4D33B41B81E856B79D62941A4703DCA95D33B419259E8B55AD629414BDB791C97D33B41CDCCCCCC59D62941CDCCCCCCC9D33B41E42E0F89D5D62941ADE2604BCAD33B4101030000000100000005000000CDCCCCCC4CE12941CDCCCCCCD5D33B41000000004BE12941676666E639D43B416766666613E22941333333B33AD43B410000000015E229419A999999D6D33B41CDCCCCCC4CE12941CDCCCCCCD5D33B410103000000010000000500000033333333EED329416766666614D83B419A999999ECD329410000008078D83B41CDCCCCCCB4D42941CDCCCC4C79D83B419A999999B6D429413333333315D83B4133333333EED329416766666614D83B41010300000001000000050000009A99999901E62941333333B312D33B41CDCCCCCCFFE52941CDCCCCCC76D33B4100000000C8E62941333333B377D33B41CDCCCCCCC9E629419A99999913D33B419A99999901E62941333333B312D33B41010300000001000000050000006766666639E52941CDCCCCCC11D33B419A99999901E62941333333B312D33B413333333303E629419A999999AED23B41000000003BE52941333333B3ADD23B416766666639E52941CDCCCCCC11D33B41010300000001000000050000003333333334E52941333333333ED43B416766666632E52941CDCCCC4CA2D43B419A999999FAE529419A999919A3D43B4167666666FCE52941000000003FD43B413333333334E52941333333333ED43B4101030000000100000005000000CDCCCCCC19E92941333333B30AD53B410000000018E92941CDCCCCCC6ED53B4133333333E0E929419A9999996FD53B4100000000E2E92941000000800BD53B41CDCCCCCC19E92941333333B30AD53B4101030000000100000005000000333333331DE929410000008042D43B41CDCCCCCC19E92941333333B30AD53B4100000000E2E92941000000800BD53B4167666666E5E92941CDCCCC4C43D43B41333333331DE929410000008042D43B410103000000010000000500000067666666CBE6294100000080AFD23B41CDCCCCCCC9E629419A99999913D33B410000000092E729416766666614D33B419A99999993E72941CDCCCC4CB0D23B4167666666CBE6294100000080AFD23B41010300000001000000050000006766666658E829416766666679D33B41CDCCCCCC56E8294100000080DDD33B41000000001FE9294167666666DED33B419A99999920E92941333333337AD33B416766666658E829416766666679D33B410103000000010000002D0000005E73F39332CF29412B3F652974DA3B41F6285C0F8DCF294185EB513882DA3B4190C2F5A819D02941CDCCCCCC68DA3B41B81E85EB9ED02941E17A146E9DDA3B41713D0AD7FBD02941676666E6E2DA3B41F6285C0F3FD129410000004014DB3B4115AE47E156D12941C3F5285C20DB3B415C8FC2F5BAD12941A4703DCA22DB3B41F6285C0F57D2294185EB517827DB3B4152B81E85E7D229411F85EB1116DB3B410AD7A3F00FD3294185EB513801DB3B4185EB513806D3294167666626EFDA3B41D7A370BD41D52941A4703D8ABDDA3B41F6285C0F6CD529415C8FC2B5ADDA3B417B14AEC79CD52941EC51B8DE86DA3B410AD7A370B7D529410AD7A3F061DA3B41E17A14AE20D629411F85EB5121DA3B4148E17A94BED6294115AE47E1BCD93B4190C2F5A839D729419A99995985D93B410AD7A37072D72941A4703D8A5BD93B41676666E6BBD72941295C8FC20BD93B41B81E856BC4D7294152B81EC5EDD83B415C8FC27554D729417B14AE47E3D83B413E0AD7A30AD729410AD7A3F0D3D83B410AD7A3F0D6D62941333333B3BED83B411F85EB51C1D6294148E17A94A7D83B418E1DD7F0C9D62941ECBDC3987BD83B413333333345D62941000000007BD83B419A99999943D629419A999919DFD83B41333333337BD52941CDCCCC4CDED83B419A99999979D529416766666642D93B4167666666B1D429410000008041D93B419A999999AFD429419A999999A5D93B4167666666E7D32941CDCCCCCCA4D93B4100000000E4D32941000000006DDA3B41CDCCCCCC1BD329419A9999196CDA3B41676666661DD329410000000008DA3B413333333355D229413333333307DA3B410000000057D229419A999919A3D93B419A999999C6D0294167666666A1D93B41CDCCCCCCC4D029410000008005DA3B419A999999FCCF29419A99999904DA3B4100000000FBCF2941333333B368DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B415E73F39332CF29412B3F652974DA3B41010300000001000000070000009148E9E4D4D62941AEE4B28917D83B41D7A370BDDAD629415C8FC275E1D73B41D163D14311D7294184D501C89BD73B413333333314D7294100000080EBD63B41000000004CD629419A999999EAD63B410000000047D62941676666E616D83B419148E9E4D4D62941AEE4B28917D83B4101030000000100000005000000CDCCCCCC89E029419A999999A8D23B410000000088E02941333333B30CD33B413333333350E129419A9999990DD33B410000000052E1294167666666A9D23B41CDCCCCCC89E029419A999999A8D23B4101030000000100000005000000CDCCCCCC72E42941676666E6ACD23B410000000071E429410000000011D33B416766666639E52941CDCCCCCC11D33B41000000003BE52941333333B3ADD23B41CDCCCCCC72E42941676666E6ACD23B4101030000000100000005000000000000006CE42941CDCCCC4C3DD43B41333333336AE4294167666666A1D43B416766666632E52941CDCCCC4CA2D43B413333333334E52941333333333ED43B41000000006CE42941CDCCCC4C3DD43B4101030000000100000005000000CDCCCCCCB4D42941CDCCCC4C79D83B4100000000B3D4294167666666DDD83B41333333337BD52941CDCCCC4CDED83B41000000007DD52941333333337AD83B41CDCCCCCCB4D42941CDCCCC4C79D83B41010300000001000000050000000000000021D32941CDCCCCCC3FD93B41333333331FD32941676666E6A3D93B4167666666E7D32941CDCCCCCCA4D93B4133333333E9D32941333333B340D93B410000000021D32941CDCCCCCC3FD93B41010300000001000000050000003333333350E129419A9999990DD33B419A9999994EE12941333333B371D33B41CDCCCCCC16E229410000008072D33B416766666618E22941676666660ED33B413333333350E129419A9999990DD33B41010300000001000000050000000000000052E1294167666666A9D23B413333333350E129419A9999990DD33B419A999999E0E22941CDCCCC4C0FD33B4167666666E2E2294133333333ABD23B410000000052E1294167666666A9D23B4101030000000100000005000000CDCCCCCC01D02941CDCCCC4CD8D83B410000000000D02941676666663CD93B4133333333C8D02941333333333DD93B4100000000CAD029419A999919D9D83B41CDCCCCCC01D02941CDCCCC4CD8D83B410103000000050000002F0000008E1DD7F0C9D62941ECBDC3987BD83B41CDCCCC4CCCD62941F6285C8F6FD83B419A999999D3D62941295C8F8223D83B41323AE4E5D4D62941A57CA18017D83B410000000047D62941676666E616D83B41676666664AD62941333333B34ED73B413333333382D52941676666E64DD73B41CDCCCCCC83D52941CDCCCCCCE9D63B419A999999BBD42941676666E6E8D63B4167666666BDD42941CDCCCCCC84D63B41000000002DD329419A99991983D63B419A99999929D32941CDCCCC4C4BD73B413333333361D22941676666664AD73B410000000063D22941CDCCCC4CE6D63B41CDCCCCCC9AD1294100000080E5D63B419A9999999CD129416766666681D63B4167666666D4D029410000008080D63B419A999999D2D029419A999999E4D63B41676666660AD02941333333B3E3D63B41CDCCCCCC0DD02941000000801BD63B419A99999945CF2941333333B31AD63B41CDCCCCCC43CF2941CDCCCCCC7ED63B419A9999997BCE2941676666E67DD63B41676666667DCE2941CDCCCCCC19D63B4133333333B5CD29410000000019D63B4100000000B0CD2941CDCCCC4C45D73B41CDCCCCCCE7CC29416766666644D73B4100000000E6CC294100000080A8D73B419A99999955CB2941CDCCCCCCA6D73B410000000054CB2941676666E60AD83B4167666666E4CC29419A9999990CD83B4100000000E1CC2941CDCCCCCCD4D83B419A99999939CF294167666666D7D83B41CDCCCCCC37CF2941000000803BD93B410000000000D02941676666663CD93B41CDCCCCCC01D02941CDCCCC4CD8D83B41676666665AD22941676666E6DAD83B41333333335CD22941333333B376D83B419A999999ECD329410000008078D83B4133333333EED329416766666614D83B419A999999B6D429413333333315D83B41CDCCCCCCB4D42941CDCCCC4C79D83B41000000007DD52941333333337AD83B41333333337BD52941CDCCCC4CDED83B419A99999943D629419A999919DFD83B413333333345D62941000000007BD83B418E1DD7F0C9D62941ECBDC3987BD83B41050000009A999999BBD42941676666E6E8D63B4100000000BAD42941000000004DD73B41CDCCCCCCF1D329419A9999194CD73B4167666666F3D3294100000000E8D63B419A999999BBD42941676666E6E8D63B41050000003333333361D22941676666664AD73B419A9999995FD2294100000080AED73B4133333333CFD02941CDCCCCCCACD73B41CDCCCCCCD0D02941333333B348D73B413333333361D22941676666664AD73B410500000000000000B0CD2941CDCCCC4C45D73B413333333378CE29419A99991946D73B419A99999976CE294133333333AAD73B4133333333AECD294167666666A9D73B4100000000B0CD2941CDCCCC4C45D73B410500000033333333EED329416766666614D83B410000000026D329410000008013D83B41CDCCCCCC27D3294167666666AFD73B4100000000F0D3294133333333B0D73B4133333333EED329416766666614D83B4101030000000100000006000000D17610E919D72941FA5D36B7A2D53B41676666E674D729413333337399D53B41F6285C8FE1D7294115AE47E17AD53B41F801297BE1D729419D0E31E45BD53B41333333331BD72941000000005BD53B41D17610E919D72941FA5D36B7A2D53B4101030000000100000004000000FF534E9AE5D72941C1294A32DAD43B4152B81E85E6D729415C8FC2B5CDD43B416BAA39D6E5D7294196DF196ACCD43B41FF534E9AE5D72941C1294A32DAD43B41010300000001000000060000006164E4EB37D7294102492AC24FD73B41A4703D8A50D7294185EB51B80AD73B410FBCCEBE6CD729413D6B31E0EBD63B413333333314D7294100000080EBD63B419A99999912D729419A9999994FD73B416164E4EB37D7294102492AC24FD73B4101030000000100000005000000CDCCCCCC33D329419A999999F2D43B416766666630D32941676666E6BAD53B419A999999F8D32941333333B3BBD53B4100000000FCD3294100000080F3D43B41CDCCCCCC33D329419A999999F2D43B410103000000010000000B000000BD1A22D40DDB294151098C9831D33B413E0AD7A32ADB2941F6285CCF2BD33B4185EB51B84EDB29415C8FC2F528D33B41333333B378DB2941676666262DD33B4148E17A148DDB29415C8FC23518D33B411F85EB519DDB294152B81E450CD33B417B14AE47C9DB29415C8FC27510D33B413384FEA1D6DB2941D71EDBCE10D33B41CDCCCCCCD6DB29410000008007D33B419A9999990EDB2941333333B306D33B41BD1A22D40DDB294151098C9831D33B41010300000001000000050000000B135E6F50D62941C2789228EED53B4190C2F5A89BD62941713D0A97D3D53B4183658A05B8D629411CF3FBB5BED53B413333333351D62941CDCCCC4CBED53B410B135E6F50D62941C2789228EED53B41010300000001000000080000006D158A1387D52941A97AF87F33D63B41295C8FC27DD5294185EB51782FD63B412C86473887D52941CA7CD1842BD63B416766666687D529410000008021D63B4100000000BFD42941333333B320D63B4167666666BDD42941CDCCCCCC84D63B419A99999985D529419A99999985D63B416D158A1387D52941A97AF87F33D63B4101030000000100000005000000333333338ED529419A99991991D43B41676666668CD5294133333333F5D43B419A99999954D629419A999919F6D43B416766666656D629410000000092D43B41333333338ED529419A99991991D43B41010300000001000000050000009A99999922D32941333333B3DBD83B410000000021D32941CDCCCCCC3FD93B4133333333E9D32941333333B340D93B41CDCCCCCCEAD329419A999999DCD83B419A99999922D32941333333B3DBD83B4101030000000100000007000000333333335CD22941333333B376D83B41676666665AD22941676666E6DAD83B413333333392D1294100000000DAD83B419A99999990D129419A9999193ED93B410000000021D32941CDCCCCCC3FD93B416766666624D329419A99999977D83B41333333335CD22941333333B376D83B410103000000010000000500000000000000B0CD2941CDCCCC4C45D73B4133333333AECD294167666666A9D73B419A99999976CE294133333333AAD73B413333333378CE29419A99991946D73B4100000000B0CD2941CDCCCC4C45D73B410103000000010000000500000000000000B3D4294167666666DDD83B4167666666B1D429410000008041D93B419A99999979D529416766666642D93B41333333337BD52941CDCCCC4CDED83B4100000000B3D4294167666666DDD83B41010300000001000000050000000000000057D229419A999919A3D93B413333333355D229413333333307DA3B41676666661DD329410000000008DA3B41333333331FD32941676666E6A3D93B410000000057D229419A999919A3D93B41010300000001000000040000002826D17824D729415DDDE2B72ED43B410155CA7220D72941B960A0D92BD43B416766666620D72941333333B32ED43B412826D17824D729415DDDE2B72ED43B410103000000010000000500000022D6369A5CD62941827E2CE326D33B41EC51B89E8FD62941D7A370BD16D33B41CDEAE2DDB1D62941604B70E101D33B41333333335DD629410000008001D33B4122D6369A5CD62941827E2CE326D33B41010300000001000000070000009094A37DEED7294142734CC3D1D23B41EC51B89E19D829411F85EB51BDD23B411F85EBD147D82941295C8F82B4D23B410AD7A3F079D8294185EB51B8B0D23B41A7FBB158F4D8294108CC4349A0D23B4167666666EFD72941333333339FD23B419094A37DEED7294142734CC3D1D23B4101030000000100000007000000E51FB9333AD9294178F8B393A0D23B410AD7A37068D92941AE47E1BAA3D23B41A4703D0AE0D929417B14AE47C3D23B417B14AEC72FDA29413E0AD7A3D7D23B412DFB58D446DA2941737C709FE6D23B410000000048DA2941333333B3A1D23B41E51FB9333AD9294178F8B393A0D23B410103000000010000001D0000002BACC992D6DB294100A875CE10D33B411F85EB51F7DB294190C2F5A811D33B411F85EB5196DC29417B14AE47E2D23B417B14AE47B6DC2941E17A146EE6D23B410AD7A3F0CFDC2941F6285C8FFCD23B4190C2F528B3DC2941D7A3707D28D33B4152B81E8596DC294190C2F5684BD33B413333333384DC29419A9999595CD33B41C3F528DC95DC29413333337372D33B417A7D08189DDC294130AEA5BF72D33B41333333339DDC2941000000806CD33B416766666686E02941CDCCCCCC70D33B41CDCCCCCC89E029419A999999A8D23B4167666666F9DE2941676666E6A6D23B41CDCCCCCCFCDE2941333333B3DED13B419A99999934DE2941CDCCCCCCDDD13B41CDCCCCCC32DE2941676666E641D23B419A9999996ADD29419A99991941D23B41000000006EDD2941CDCCCCCC78D13B41CDCCCCCCA5DC29410000000078D13B419A999999A7DC2941676666E613D13B413333333317DB29413333333312D13B416766666615DB2941CDCCCC4C76D13B419A999999DDDB29419A99991977D13B41CDCCCCCCDBDB294133333333DBD13B4133333333A4DC29419A999919DCD13B4167666666A2DC29413333333340D23B4133333333DADB2941CDCCCC4C3FD23B412BACC992D6DB294100A875CE10D33B4101030000000100000005000000A9DE638EFADF294146332F59D4D33B410000000007E029419A999959E0D33B41F6285C0F1BE02941E17A146EDDD33B41F26064F12DE029410E77C08DD4D33B41A9DE638EFADF294146332F59D4D33B410103000000010000000B00000033333333A7E329413333333374D33B4167666666A5E32941CDCCCC4CD8D33B410000000015E229419A999999D6D33B419A99999911E22941CDCCCCCC9ED43B41CDCCCCCCD9E22941333333B39FD43B419A999999DBE229419A9999993BD43B419A999999C4E62941676666E63FD43B4167666666C6E62941CDCCCCCCDBD33B419A9999996DE4294133333333D9D33B41676666666FE429419A99991975D33B4133333333A7E329413333333374D33B410103000000010000000900000000000000FCD3294100000080F3D43B41CDCCCCCCF6D32941CDCCCCCC1FD63B419A9999992ED32941000000001FD63B41000000002DD329419A99991983D63B4167666666BDD42941CDCCCCCC84D63B419A999999C2D429410000008058D53B41CDCCCCCC8AD52941CDCCCC4C59D53B41676666668CD5294133333333F5D43B4100000000FCD3294100000080F3D43B410103000000010000000B0000007216297BE1D72941227750E45BD53B41CDCCCC4CE1D7294152B81EC514D53B41FF534E9AE5D72941C1294A32DAD43B416BAA39D6E5D7294196DF196ACCD43B41F6285C0FD5D729419A999999ACD43B410F05B8CBB1D72941053C337693D43B419A9999991ED72941CDCCCCCC92D43B41CDCCCCCC1CD72941676666E6F6D43B419A99999954D629419A999919F6D43B410000000053D62941333333335AD53B417216297BE1D72941227750E45BD53B4101030000000100000007000000F1B2D2AC38D529413B383D6A64D33B419A99991984D52941E17A14AE5DD33B41DD74569393D529411C4462D159D33B410000000095D52941333333B300D33B419A99999904D4294100000000FFD23B41CDCCCCCC02D429419A99991963D33B41F1B2D2AC38D529413B383D6A64D33B41010300000001000000050000009A9999998EE729419A999999DCD33B41CDCCCCCC8CE72941333333B340D43B41333333331DE929410000008042D43B41000000001FE9294167666666DED33B419A9999998EE729419A999999DCD33B410103000000010000000500000067666666BDD42941CDCCCCCC84D63B419A999999BBD42941676666E6E8D63B41CDCCCCCC83D52941CDCCCCCCE9D63B419A99999985D529419A99999985D63B4167666666BDD42941CDCCCCCC84D63B41010300000001000000050000006766666639E52941CDCCCCCC11D33B419A99999937E529410000000076D33B41CDCCCCCCFFE52941CDCCCCCC76D33B419A99999901E62941333333B312D33B416766666639E52941CDCCCCCC11D33B4101030000000100000005000000CDCCCCCC8AD52941CDCCCC4C59D53B410000000089D5294167666666BDD53B413333333351D62941CDCCCC4CBED53B410000000053D62941333333335AD53B41CDCCCCCC8AD52941CDCCCC4C59D53B41010300000001000000050000006766666632CC294167666666F6D23B41CDCCCCCC30CC2941000000805AD33B4100000000F9CC2941676666665BD33B419A999999FACC294133333333F7D23B416766666632CC294167666666F6D23B4101030000000100000005000000E0F49F4E11D72941EE5E32BA9BD73B41AE47E17A26D72941B81E85AB80D73B4142E9BDEC37D72941624AC8BF4FD73B419A99999912D729419A9999994FD73B41E0F49F4E11D72941EE5E32BA9BD73B410103000000010000000700000015D475A14DD629412035782094D63B41AE47E17A18D62941AE47E13A84D63B4100000080A5D5294190C2F5A840D63B41A7A29C1687D5294113B64C8133D63B413333333382D52941676666E64DD73B41676666664AD62941333333B34ED73B4115D475A14DD629412035782094D63B41010300000001000000040000001AD0033A87D52941D4EA17842BD63B41C05006F49ED529413D301B9B21D63B416766666687D529410000008021D63B411AD0033A87D52941D4EA17842BD63B410103000000010000000500000000000000CAD029419A999919D9D83B419A999999C6D0294167666666A1D93B41CDCCCCCC8ED1294133333333A2D93B413333333392D1294100000000DAD83B4100000000CAD029419A999919D9D83B4101030000000100000005000000CDCCCCCCD0D02941333333B348D73B4133333333CFD02941CDCCCCCCACD73B419A9999995FD2294100000080AED73B413333333361D22941676666664AD73B41CDCCCCCCD0D02941333333B348D73B4101030000000100000005000000CDCCCCCC27D3294167666666AFD73B410000000026D329410000008013D83B4133333333EED329416766666614D83B4100000000F0D3294133333333B0D73B41CDCCCCCC27D3294167666666AFD73B410103000000010000000500000000000000CCC92941333333B314D63B4167666666CAC92941CDCCCCCC78D63B419A99999992CA29419A99999979D63B416766666694CA29410000008015D63B4100000000CCC92941333333B314D63B410103000000010000000500000000000000EDCC29419A99991918D63B4133333333EBCC2941333333337CD63B4167666666B3CD29419A9999197DD63B4133333333B5CD29410000000019D63B4100000000EDCC29419A99991918D63B41010300000001000000050000006766666624D329419A99999977D83B419A99999922D32941333333B3DBD83B41CDCCCCCCEAD329419A999999DCD83B419A999999ECD329410000008078D83B416766666624D329419A99999977D83B41010300000001000000050000009A999999C2D429410000008058D53B41CDCCCCCCC0D429419A999999BCD53B410000000089D5294167666666BDD53B41CDCCCCCC8AD52941CDCCCC4C59D53B419A999999C2D429410000008058D53B4101030000000100000005000000CDCCCCCC58D22941000000003FD93B410000000057D229419A999919A3D93B41333333331FD32941676666E6A3D93B410000000021D32941CDCCCCCC3FD93B41CDCCCCCC58D22941000000003FD93B410103000000010000000700000083658A05B8D629411CF3FBB5BED53B410AD7A370D4D62941A4703DCAA9D53B41D17610E919D72941FA5D36B7A2D53B41333333331BD72941000000005BD53B410000000053D62941333333335AD53B413333333351D62941CDCCCC4CBED53B4183658A05B8D629411CF3FBB5BED53B410103000000010000000500000067666666E7D32941CDCCCCCCA4D93B419A999999AFD429419A999999A5D93B4167666666B1D429410000008041D93B4133333333E9D32941333333B340D93B4167666666E7D32941CDCCCCCCA4D93B410103000000010000000500000067666666F3D3294100000000E8D63B41CDCCCCCCF1D329419A9999194CD73B4100000000BAD42941000000004DD73B419A999999BBD42941676666E6E8D63B4167666666F3D3294100000000E8D63B4101030000000100000005000000CDCCCCCC8AD52941CDCCCC4C59D53B410000000053D62941333333335AD53B419A99999954D629419A999919F6D43B41676666668CD5294133333333F5D43B41CDCCCCCC8AD52941CDCCCC4C59D53B4101030000000100000005000000CDCCCCCC8CE72941333333B340D43B41000000008BE72941CDCCCCCCA4D43B413333333353E82941333333B3A5D43B410000000055E829419A99999941D43B41CDCCCCCC8CE72941333333B340D43B41010300000001000000050000009A999999ECD329410000008078D83B41CDCCCCCCEAD329419A999999DCD83B4100000000B3D4294167666666DDD83B41CDCCCCCCB4D42941CDCCCC4C79D83B419A999999ECD329410000008078D83B41010300000001000000050000003333333303E629419A999999AED23B419A99999901E62941333333B312D33B41CDCCCCCCC9E629419A99999913D33B4167666666CBE6294100000080AFD23B413333333303E629419A999999AED23B41010300000001000000050000009A999999C4E62941676666E63FD43B41CDCCCCCCC2E6294100000000A4D43B41000000008BE72941CDCCCCCCA4D43B41CDCCCCCC8CE72941333333B340D43B419A999999C4E62941676666E63FD43B410103000000010000000500000000000000ACEA2941CDCCCC4CA8D43B413333333374EB29419A999919A9D43B41CDCCCCCC75EB29410000000045D43B419A999999ADEA29413333333344D43B4100000000ACEA2941CDCCCC4CA8D43B4101030000000100000005000000CDCCCCCC48FE2941CDCCCCCC38D13B410000000047FE2941676666E69CD13B41333333330FFF2941333333B39DD13B410000000011FF29419A99999939D13B41CDCCCCCC48FE2941CDCCCCCC38D13B41010300000001000000050000009A99999969012A41333333333CD13B41CDCCCCCC67012A41CDCCCC4CA0D13B410000000030022A4133333333A1D13B41CDCCCCCC31022A419A9999193DD13B419A99999969012A41333333333CD13B410103000000010000000500000033333333D9FF2941000000803AD13B4167666666D7FF29419A9999999ED13B419A9999999F002A41000000809FD13B4167666666A1002A41676666663BD13B4133333333D9FF2941000000803AD13B4101030000000100000005000000CDCCCCCC31022A419A9999193DD13B4100000000FA022A41676666E63DD13B41CDCCCCCCFB022A41CDCCCCCCD9D03B419A99999933022A4100000000D9D03B41CDCCCCCC31022A419A9999193DD13B41010300000001000000050000000000000030022A4133333333A1D13B4167666666F8022A4100000000A2D13B4100000000FA022A41676666E63DD13B41CDCCCCCC31022A419A9999193DD13B410000000030022A4133333333A1D13B410103000000010000000500000000000000DEE32941CDCCCCCCF0C63B4167666666DCE32941676666E654C73B41CDCCCCCC6CE529419A99999956C73B419A9999996EE5294100000080F2C63B4100000000DEE32941CDCCCCCCF0C63B410103000000010000000C0000005D3D57AA43C8294176AAA7D83FD43B41B81E856B64C82941A4703D8A3AD43B41295C8F42F6C829410AD7A3304ED43B41F6285C0FF6C829413333333359D43B41DE0906760BC92941FE69590B5AD43B41676666660CC92941CDCCCC4C1FD43B41CDCCCCCC9CCA29410000000021D43B4100000000A2CA2941333333B3F4D23B413333333381C7294133333333F1D23B41000000007CC729419A9999991DD43B413333333344C82941676666661ED43B415D3D57AA43C8294176AAA7D83FD43B4101030000000100000034000000579702670BC9294161C7C10A5AD43B41EC51B81E68C92941333333B35DD43B415C8FC2F589C92941C3F528DC69D43B411F85EBD1B1C92941A4703D0A74D43B41C3F528DC1AC929410AD7A370A2D43B416B98348509C9294102B58CDCC8D43B410000000009C9294100000080E7D43B4133333333D1C92941CDCCCC4CE8D43B4100000000CCC92941333333B314D63B416766666694CA29410000008015D63B419A99999992CA29419A99999979D63B4167666666CAC92941CDCCCCCC78D63B419A999999C8C92941676666E6DCD63B413333333338C8294133333333DBD63B4140977E8D30C8294169891B4198D83B4190C2F5A8B2C8294133333333C3D83B41802C2FFBB8C8294111164E51D0D83B41CDCCCCCCF7C829419A999999D0D83B4193EA1022F7C8294171A2D0DEF7D83B41F6285C0FE0C92941F6285C8FFAD83B41D7A370BDF7C92941E17A14AE0FD93B41295C8FC221CA2941C3F528DC10D93B41F6285C8F34CA29413E0AD7E3E3D83B41F6285C8F50CA2941295C8F02E5D83B4185EB51385ACA294148E17A14FAD83B415C8FC27546CB2941713D0A17FCD83B41CDCCCCCC4BCB294190C2F52823D93B41F61B1C4351CB29416C97083637D93B4133333333DFCC29410000000039D93B4100000000E1CC2941CDCCCCCCD4D83B419A99999950CB29419A999919D3D83B413333333352CB2941000000006FD83B419A999999E2CC2941333333B370D83B4167666666E4CC29419A9999990CD83B410000000054CB2941676666E60AD83B419A99999955CB2941CDCCCCCCA6D73B41CDCCCCCC1DCC2941333333B3A7D73B419A9999991FCC29419A99999943D73B41CDCCCCCCE7CC29416766666644D73B4133333333EBCC2941333333337CD63B410000000023CC2941CDCCCC4C7BD63B41CDCCCCCC24CC29413333333317D63B419A9999995CCB29416766666616D63B41333333335ECB2941CDCCCC4CB2D53B416766666626CC29419A999919B3D53B413333333328CC2941000000004FD53B410000000060CB2941333333334ED53B416766666663CB29410000000086D43B41333333339BCA29419A99991985D43B41CDCCCCCC9CCA29410000000021D43B41676666660CC92941CDCCCC4C1FD43B41579702670BC9294161C7C10A5AD43B41010300000001000000050000009A9999999ECA2941676666E6BCD33B41CDCCCCCC9CCA29410000000021D43B413333333365CB2941CDCCCCCC21D43B41CDCCCCCC66CB2941333333B3BDD33B419A9999999ECA2941676666E6BCD33B410103000000010000000500000067666666E2C92941CDCCCC4CFFD03B419A999999E0C929416766666663D13B4100000000A9CA29413333333364D13B419A999999AACA29419A99991900D13B4167666666E2C92941CDCCCC4CFFD03B41010300000001000000050000009A9999996DCB2941CDCCCC4C2DD23B41333333336ACB294100000080F5D23B416766666632CC294167666666F6D23B41CDCCCCCC35CC2941333333332ED23B419A9999996DCB2941CDCCCC4C2DD23B41010300000001000000050000006766666686C72941676666E6C4D13B419A9999994EC82941CDCCCCCCC5D13B410000000052C829419A999999FDD03B41CDCCCCCC89C72941333333B3FCD03B416766666686C72941676666E6C4D13B410103000000010000000500000049C15D8D09C92941228377CAC8D43B41CDCCCCCCFFC8294167666666DED43B4124A2ED64FCC8294192207E71E7D43B410000000009C9294100000080E7D43B4149C15D8D09C92941228377CAC8D43B41010300000001000000050000009A9999993BC829410000000013D63B41CDCCCCCC03C92941CDCCCCCC13D63B419A99999905C92941333333B3AFD53B41676666663DC82941CDCCCCCCAED53B419A9999993BC829410000000013D63B410103000000010000000A00000024A2ED64FCC8294192207E71E7D43B41EC51B81EF1C8294115AE476105D53B41F6285C8FE4C82941C3F5285C25D53B41D7A3703DC8C82941295C8F4235D53B41AE47E1FA3EC82941D7A370BD75D53B41B9BE295C3EC829410240B14576D53B41676666663DC82941CDCCCCCCAED53B419A99999905C92941333333B3AFD53B410000000009C9294100000080E7D43B4124A2ED64FCC8294192207E71E7D43B41010300000001000000050000009A9999993BC829410000000013D63B41000000003AC829419A99991977D63B413333333302C92941676666E677D63B41CDCCCCCC03C92941CDCCCCCC13D63B419A9999993BC829410000000013D63B4101030000000100000005000000CDCCCCCC03C92941CDCCCCCC13D63B416766666600C9294100000000DCD63B419A999999C8C92941676666E6DCD63B4100000000CCC92941333333B314D63B41CDCCCCCC03C92941CDCCCCCC13D63B41010300000001000000050000006766666686C72941676666E6C4D13B419A99999984C729410000000029D23B41CDCCCCCC4CC82941676666E629D23B419A9999994EC82941CDCCCCCCC5D13B416766666686C72941676666E6C4D13B410103000000010000000D000000000000002FCC29419A999999BED33B419A99999987CE294133333333C1D33B410000000086CE2941CDCCCC4C25D43B41333333334ECF29419A99991926D43B416766666653CF2941CDCCCCCCF9D23B41CDCCCCCCC2CD29419A999919F8D23B4167666666C6CD2941676666E62FD23B41CDCCCCCC35CC2941333333332ED23B416766666632CC294167666666F6D23B419A999999FACC294133333333F7D23B4100000000F9CC2941676666665BD33B41CDCCCCCC30CC2941000000805AD33B41000000002FCC29419A999999BED33B4101030000000100000005000000CDCCCCCCF3CC2941333333B387D43B4100000000F2CC2941CDCCCCCCEBD43B4167666666BACD29419A999999ECD43B4100000000BCCD29410000008088D43B41CDCCCCCCF3CC2941333333B387D43B410103000000010000000500000000000000BCCD29410000008088D43B413333333384CE29416766666689D43B410000000086CE2941CDCCCC4C25D43B41CDCCCCCCBDCD29416766666624D43B4100000000BCCD29410000008088D43B41010300000001000000050000006766666647CF29419A999999B6D53B419A99999945CF2941333333B31AD63B41CDCCCCCC0DD02941000000801BD63B419A9999990FD0294167666666B7D53B416766666647CF29419A999999B6D53B410103000000010000000700000033333333A9CD2941333333B3D5D83B41CDCCCCCCA5CD2941676666E69DD93B413333333336CF29419A9999999FD93B41CDCCCCCC37CF2941000000803BD93B419A9999996FCE2941333333B33AD93B416766666671CE29419A999999D6D83B4133333333A9CD2941333333B3D5D83B41010300000001000000050000003847E2B3EFCE2941A235298867DA3B417B14AE47FBCE29411F85EB916BDA3B415E73F39332CF29412B3F652974DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B413847E2B3EFCE2941A235298867DA3B410103000000010000000500000000000000EDCC29419A99991918D63B4133333333B5CD29410000000019D63B41CDCCCCCCB6CD2941CDCCCCCCB4D53B419A999999EECC294100000000B4D53B4100000000EDCC29419A99991918D63B4101030000000100000005000000CDCCCCCC24CC29413333333317D63B410000000023CC2941CDCCCC4C7BD63B4133333333EBCC2941333333337CD63B4100000000EDCC29419A99991918D63B41CDCCCCCC24CC29413333333317D63B41010300000001000000050000006766666626CC29419A999919B3D53B419A999999EECC294100000000B4D53B4167666666F0CC2941676666E64FD53B413333333328CC2941000000004FD53B416766666626CC29419A999919B3D53B41010300000001000000050000009A99999990D129419A9999193ED93B41CDCCCCCC8ED1294133333333A2D93B410000000057D229419A999919A3D93B41CDCCCCCC58D22941000000003FD93B419A99999990D129419A9999193ED93B4101030000000100000005000000CDCCCCCC32CF2941CDCCCCCC67DA3B4100000000FBCF2941333333B368DA3B419A999999FCCF29419A99999904DA3B416766666634CF2941333333B303DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B41010300000001000000050000009A9999999CD129416766666681D63B41CDCCCCCC9AD1294100000080E5D63B410000000063D22941CDCCCC4CE6D63B41CDCCCCCC64D229413333333382D63B419A9999999CD129416766666681D63B4101030000000100000005000000CDCCCCCC37CF2941000000803BD93B416766666634CF2941333333B303DA3B419A999999FCCF29419A99999904DA3B410000000000D02941676666663CD93B41CDCCCCCC37CF2941000000803BD93B4101030000000100000005000000CDCCCCCC72CB29410000000001D13B413333333371CB29419A99991965D13B41CDCCCCCCC9CD2941333333B367D13B4167666666CBCD29419A99999903D13B41CDCCCCCC72CB29410000000001D13B41010300000001000000050000009A99999990D129419A9999193ED93B41CDCCCCCC8ED1294133333333A2D93B410000000057D229419A999919A3D93B41CDCCCCCC58D22941000000003FD93B419A99999990D129419A9999193ED93B41010300000001000000050000006766666671CE29419A999999D6D83B419A9999996FCE2941333333B33AD93B41CDCCCCCC37CF2941000000803BD93B419A99999939CF294167666666D7D83B416766666671CE29419A999999D6D83B41010300000001000000050000000000000000D02941676666663CD93B4167666666FECF294100000080A0D93B419A999999C6D0294167666666A1D93B4133333333C8D02941333333333DD93B410000000000D02941676666663CD93B4101030000000100000013000000F61B1C4351CB29416C97083637D93B413E0AD7A35ECB29411F85EB5168D93B41B81E85EB7CCB2941E17A146E59D93B4190C2F528BFCB2941333333B34FD93B41F6285C0FE1CB2941C3F528DC58D93B41CDCCCCCC02CC294152B81E056AD93B41713D0AD780CC29411F85EB9170D93B41AE47E17A8ACC294152B81EC5FAD93B4148E17A94CACC2941A4703D0AF9D93B411F85EBD10ACE2941B81E856B01DA3B41AE47E1FA69CE29413E0AD7E338DA3B4198EE89A7EFCE294109E5DA8367DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B413333333336CF29419A9999999FD93B41CDCCCCCCA5CD2941676666E69DD93B4133333333A9CD2941333333B3D5D83B4100000000E1CC2941CDCCCCCCD4D83B4133333333DFCC29410000000039D93B41F61B1C4351CB29416C97083637D93B4101030000000100000005000000CDCCCCCCE7CC29416766666644D73B4100000000B0CD2941CDCCCC4C45D73B4167666666B3CD29419A9999197DD63B4133333333EBCC2941333333337CD63B41CDCCCCCCE7CC29416766666644D73B410103000000010000000500000067666666FECF294100000080A0D93B419A999999FCCF29419A99999904DA3B41CDCCCCCCC4D029410000008005DA3B419A999999C6D0294167666666A1D93B4167666666FECF294100000080A0D93B41010300000001000000050000009A99999968CB29419A99999959D33B41CDCCCCCC66CB2941333333B3BDD33B41000000002FCC29419A999999BED33B41CDCCCCCC30CC2941000000805AD33B419A99999968CB29419A99999959D33B4101030000000100000005000000CDCCCCCC66CB2941333333B3BDD33B413333333365CB2941CDCCCCCC21D43B41676666662DCC2941333333B322D43B41000000002FCC29419A999999BED33B41CDCCCCCC66CB2941333333B3BDD33B4101030000000100000005000000333333335ECB2941CDCCCC4CB2D53B419A9999995CCB29416766666616D63B41CDCCCCCC24CC29413333333317D63B416766666626CC29419A999919B3D53B41333333335ECB2941CDCCCC4CB2D53B4101030000000100000005000000676666661ACC2941676666E66FD83B41CDCCCCCC18CC294100000000D4D83B4100000000E1CC2941CDCCCCCCD4D83B419A999999E2CC2941333333B370D83B41676666661ACC2941676666E66FD83B41010300000001000000050000003333333352CB2941000000006FD83B419A99999950CB29419A999919D3D83B41CDCCCCCC18CC294100000000D4D83B41676666661ACC2941676666E66FD83B413333333352CB2941000000006FD83B41010300000001000000050000009A9999991FCC29419A99999943D73B41CDCCCCCC1DCC2941333333B3A7D73B4100000000E6CC294100000080A8D73B41CDCCCCCCE7CC29416766666644D73B419A9999991FCC29419A99999943D73B41010300000001000000050000006766666626CC29419A999919B3D53B41CDCCCCCC24CC29413333333317D63B4100000000EDCC29419A99991918D63B419A999999EECC294100000000B4D53B416766666626CC29419A999919B3D53B41010300000001000000050000000000000045D329419A99999909D13B41CDCCCCCC3FD32941676666E635D23B410000000008D42941CDCCCCCC36D23B41333333330DD42941676666660AD13B410000000045D329419A99999909D13B4101030000000100000005000000CDCCCCCC25E92941676666E64DD23B410000000024E9294100000000B2D23B4167666666ECE92941676666E6B2D23B4100000000EEE92941CDCCCCCC4ED23B41CDCCCCCC25E92941676666E64DD23B41010300000001000000090000000000000061E82941676666E684D13B419A9999995DE829419A9999194DD23B41CDCCCCCC25E92941676666E64DD23B410000000024E9294100000000B2D23B4167666666ECE92941676666E6B2D23B41CDCCCCCCEFE92941333333B3EAD13B419A99999927E92941CDCCCCCCE9D13B413333333329E92941333333B385D13B410000000061E82941676666E684D13B410103000000010000000500000033333333F4F729419A9999197FD53B4167666666F2F7294133333333E3D53B419A999999BAF829419A999919E4D53B4167666666BCF82941676666E67FD53B4133333333F4F729419A9999197FD53B41010300000001000000050000009A99999937FE2941676666E621D53B41CDCCCCCC35FE29410000000086D53B4100000000FEFE2941CDCCCCCC86D53B41CDCCCCCCFFFE2941333333B322D53B419A99999937FE2941676666E621D53B4101030000000100000005000000CDCCCCCCB3F829410000008074D73B4100000000B2F829419A999999D8D73B41333333337AF9294167666666D9D73B41000000007CF92941CDCCCC4C75D73B41CDCCCCCCB3F829410000008074D73B410103000000010000000500000033333333B7F82941CDCCCC4CACD63B4167666666B5F829416766666610D73B419A9999997DF929413333333311D73B41676666667FF929419A999919ADD63B4133333333B7F82941CDCCCC4CACD63B41010300000001000000050000009A9999990EF429419A999999B2D43B41CDCCCCCC0CF42941333333B316D53B4100000000D5F429410000008017D53B41CDCCCCCCD6F4294167666666B3D43B419A9999990EF429419A999999B2D43B41010300000001000000060000003FEEBC828BF52941D106B41C20D93B415C8FC2751EF629419A99991925D93B419142BA4F53F629415C1B0BE439D93B413333333354F62941CDCCCC4C02D93B41000000008CF529410000008001D93B413FEEBC828BF52941D106B41C20D93B41010300000001000000050000006766666645FE29410000000001D23B41CDCCCCCC41FE294133333333C9D23B41000000000AFF29419A999919CAD23B419A9999990DFF2941676666E601D23B416766666645FE29410000000001D23B41010300000001000000090000006766666626FE2941676666E60AD93B419A99999924FE2941000000006FD93B41676666665CFD2941333333336ED93B410000000059FD29416766666636DA3B413333333321FE29413333333337DA3B410000000023FE29419A999919D3D93B4133333333EBFE294100000000D4D93B419A999999EEFE2941CDCCCCCC0BD93B416766666626FE2941676666E60AD93B41010300000001000000070000009A999999AAFC2941676666E657D43B4167666666A5FC29413333333384D53B419A9999996DFD29419A99991985D53B410000000071FD2941676666E6BCD43B413333333339FE2941333333B3BDD43B41000000003BFE29419A99999959D43B419A999999AAFC2941676666E657D43B41010300000001000000050000009A9999999EFC2941333333B314D73B416766666699FC29410000000041D83B419A99999961FD2941CDCCCCCC41D83B41CDCCCCCC66FD29410000008015D73B419A9999999EFC2941333333B314D73B410103000000010000000500000033333333C1FF294100000000B4D63B4167666666BFFF29419A99991918D73B41CDCCCCCC4F012A41CDCCCCCC19D73B419A99999951012A41333333B3B5D63B4133333333C1FF294100000000B4D63B4101030000000100000005000000CDCCCCCCCAF429413333333370D73B4100000000C9F42941CDCCCC4CD4D73B413333333391F5294133333333D5D73B410000000093F529410000000071D73B41CDCCCCCCCAF429413333333370D73B4101030000000100000005000000676666660CFB29419A99991977D73B419A9999990AFB294133333333DBD73B4100000000D3FB294100000000DCD73B419A999999D4FB2941676666E677D73B41676666660CFB29419A99991977D73B410103000000010000000500000000000000EFF7294167666666ABD63B4133333333EDF72941000000800FD73B4167666666B5F829416766666610D73B4133333333B7F82941CDCCCC4CACD63B4100000000EFF7294167666666ABD63B41010300000001000000050000000000000088F929419A999999B8D43B413333333386F92941333333B31CD53B41676666664EFA29419A9999991DD53B413333333350FA294100000080B9D43B410000000088F929419A999999B8D43B4101030000000100000005000000CDCCCCCC29FE2941333333B342D83B413333333328FE2941CDCCCCCCA6D83B4167666666F0FE2941333333B3A7D83B4100000000F2FE29419A99999943D83B41CDCCCCCC29FE2941333333B342D83B4101030000000100000005000000CDCCCCCC66FD29410000008015D73B41000000002FFE29416766666616D73B419A99999930FE2941CDCCCC4CB2D63B416766666668FD294167666666B1D63B41CDCCCCCC66FD29410000008015D73B41010300000001000000050000003333333340FE2941CDCCCC4C2DD33B416766666608FF2941333333332ED33B41000000000AFF29419A999919CAD23B41CDCCCCCC41FE294133333333C9D23B413333333340FE2941CDCCCC4C2DD33B410103000000010000000500000067666666CFFB294133333333A4D83B41CDCCCCCCCDFB2941CDCCCC4C08D93B410000000096FC29413333333309D93B419A99999997FC29419A999919A5D83B4167666666CFFB294133333333A4D83B4101030000000100000005000000CDCCCCCC03FB29419A9999996BD93B413333333302FB2941333333B3CFD93B4167666666CAFB29419A999999D0D93B4100000000CCFB2941000000806CD93B41CDCCCCCC03FB29419A9999996BD93B4101030000000100000005000000CDCCCCCCE9F72941333333B3D7D73B4133333333E8F72941CDCCCCCC3BD83B4167666666B0F82941333333B33CD83B4100000000B2F829419A999999D8D73B41CDCCCCCCE9F72941333333B3D7D73B410103000000010000000500000033333333C6FF2941333333B387D53B419A999999C4FF2941CDCCCCCCEBD53B41CDCCCCCC8C002A419A999999ECD53B41676666668E002A410000008088D53B4133333333C6FF2941333333B387D53B410103000000010000000500000067666666B5F829416766666610D73B41CDCCCCCCB3F829410000008074D73B41000000007CF92941CDCCCC4C75D73B419A9999997DF929413333333311D73B4167666666B5F829416766666610D73B410103000000010000000500000067666666F5FE2941676666667BD73B41CDCCCCCCF3FE294100000080DFD73B4100000000BCFF2941CDCCCC4CE0D73B419A999999BDFF2941333333337CD73B4167666666F5FE2941676666667BD73B410103000000010000000500000085525C03E1F729415815C0FDD7D93B41A74E7FD6A8F829417A578344F0D93B4167666666A9F829419A999919CDD93B4133333333E1F72941CDCCCC4CCCD93B4185525C03E1F729415815C0FDD7D93B41010300000001000000050000008C30C5903DF92941E4B88EDF31DA3B4190C2F5A84CF92941676666E639DA3B4180005DA16FF9294157E173A846DA3B410000000070F929419A99991932DA3B418C30C5903DF92941E4B88EDF31DA3B4101030000000100000004000000B50F21852BFA2941642C140D97DA3B4162DE6B5136FA29415677133A9CDA3B416766666636FA29419A99991997DA3B41B50F21852BFA2941642C140D97DA3B410103000000010000000700000067666666F0FE2941333333B3A7D83B41CDCCCCCCECFE2941676666E66FD93B4133333333B5FF2941333333B370D93B41CDCCCCCCB6FF29419A9999990CD93B41000000007F002A41000000800DD93B41CDCCCCCC80002A4167666666A9D83B4167666666F0FE2941333333B3A7D83B4101030000000100000005000000333333339DF529416766666618D53B41676666669BF52941000000807CD53B41000000002CF72941333333337ED53B419A9999992DF729419A9999191AD53B41333333339DF529416766666618D53B41010300000001000000050000006766666601FF29419A999999BED43B41CDCCCCCCFFFE2941333333B322D53B4100000000C8FF29419A99999923D53B41CDCCCCCCC9FF294100000080BFD43B416766666601FF29419A999999BED43B41010300000001000000050000000000000048F329419A9999994DD43B413333333346F32941333333B3B1D43B419A9999990EF429419A999999B2D43B413333333310F42941000000804ED43B410000000048F329419A9999994DD43B4101030000000100000005000000CDCCCCCCF0F72941CDCCCC4C47D63B4100000000EFF7294167666666ABD63B4133333333B7F82941CDCCCC4CACD63B4100000000B9F829413333333348D63B41CDCCCCCCF0F72941CDCCCC4C47D63B41010300000001000000050000000000000020F72941000000003BD83B41333333331EF729419A9999199FD83B4167666666E6F72941676666E69FD83B4133333333E8F72941CDCCCCCC3BD83B410000000020F72941000000003BD83B4101030000000100000005000000676666667CF229410000000015D53B419A9999997AF229419A99991979D53B41CDCCCCCC42F32941676666E679D53B419A99999944F32941CDCCCCCC15D53B41676666667CF229410000000015D53B4101030000000100000005000000676666663FF329413333333342D63B41CDCCCCCC3DF32941CDCCCC4CA6D63B410000000006F429419A999919A7D63B419A99999907F429410000000043D63B41676666663FF329413333333342D63B41010300000001000000050000003333333384002A4133333333E1D73B416766666682002A41CDCCCC4C45D83B419A9999994A012A419A99991946D83B41676666664C012A4100000000E2D73B413333333384002A4133333333E1D73B4101030000000100000008000000952BAF0D6FF2294112B888761FD83B41A4703D8AABF22941A4703D0A36D83B41DDE5450736F32941F27BB10B69D83B41333333333AF32941000000806ED73B41CDCCCCCCA9F12941CDCCCCCC6CD73B4133333333A8F12941676666E6D0D73B416766666670F22941333333B3D1D73B41952BAF0D6FF2294112B888761FD83B4101030000000100000005000000A3AA38FFB6F329417B3D2D629BD83B41676666E6D9F3294185EB5178A9D83B41A58D8AEDFCF3294113744AF4B5D83B4167666666FDF32941333333B39BD83B41A3AA38FFB6F329417B3D2D629BD83B41010300000001000000080000001C87B5D6C3F42941BA598B72FED83B41CDCCCC4C10F52941E17A14EE1BD93B413FEEBC828BF52941D106B41C20D93B41000000008CF529410000008001D93B413333333354F62941CDCCCC4C02D93B410000000056F62941333333339ED83B419A999999C5F42941000000809CD83B411C87B5D6C3F42941BA598B72FED83B41010300000001000000050000003333333346F32941333333B3B1D43B419A99999944F32941CDCCCCCC15D53B41CDCCCCCC0CF42941333333B316D53B419A9999990EF429419A999999B2D43B413333333346F32941333333B3B1D43B4101030000000100000005000000CDCCCCCCBFF82941333333B3B7D43B4100000000BEF82941CDCCCCCC1BD53B413333333386F92941333333B31CD53B410000000088F929419A999999B8D43B41CDCCCCCCBFF82941333333B3B7D43B4101030000000100000005000000000000003BFE29419A99999959D43B413333333339FE2941333333B3BDD43B416766666601FF29419A999999BED43B413333333303FF2941000000805AD43B41000000003BFE29419A99999959D43B41010300000001000000050000009A9999997AF229419A99991979D53B410000000079F2294133333333DDD53B413333333341F3294100000000DED53B41CDCCCCCC42F32941676666E679D53B419A9999997AF229419A99991979D53B4101030000000100000005000000340A5B1FA8F129411EC0F735D5D73B41D7AC83006FF22941A6499E711FD83B416766666670F22941333333B3D1D73B4133333333A8F12941676666E6D0D73B41340A5B1FA8F129411EC0F735D5D73B41010300000001000000050000003333333310F42941000000804ED43B419A9999990EF429419A999999B2D43B41CDCCCCCCD6F4294167666666B3D43B4167666666D8F42941CDCCCC4C4FD43B413333333310F42941000000804ED43B4101030000000100000005000000333333332AF72941CDCCCC4CE2D53B416766666628F729416766666646D63B41CDCCCCCCF0F72941CDCCCC4C47D63B4167666666F2F7294133333333E3D53B41333333332AF72941CDCCCC4CE2D53B41010300000001000000050000000000000095EE29419A999999ACD43B419A99999991EE2941CDCCCCCC74D53B41CDCCCCCC59EF29419A99999975D53B41333333335DEF294167666666ADD43B410000000095EE29419A999999ACD43B4101030000000300000034000000D1205A6136FA29413A48B6419CDA3B419A99999992FA29415C8FC275C8DA3B41676666E6CAFA2941E17A14AEBADA3B41B81E85EB0CFB294185EB51F8BDDA3B41E17A14AE64FB2941EC51B85ED1DA3B410AD7A3F064FB29419A999959C2DA3B41295C8FC2C8FB2941CDCCCCCCD3DA3B41C3F5285C0CFC2941EC51B81EF0DA3B410AD7A37037FC2941EC51B85E28DB3B41CDCCCCCC9AFC2941713D0AD754DB3B41295C8F42D0FC2941C3F5281C77DB3B41EC51B89E07FD294167666666A0DB3B410C26313B1DFD2941BB46D78FC6DB3B413333333352FD2941CDCCCCCCC6DB3B410E89AC2551FD2941A434715901DC3B4152B81E0554FD2941713D0AD703DC3B41F6285C0F6FFD294152B81E053DDC3B41713D0AD7C5FD2941AE47E17A8ADC3B41905FB07D12FE2941A4C37FE18FDC3B41694AC41FEBFE2941F1DFF5CC90DC3B419A999919F0FE2941295C8FC28FDC3B41333333332DFF2941333333F352DC3B41AE47E1FA8DFF29411F85EB512CDC3B4190C2F5A81A002A413E0AD7E30DDC3B41B1AE034A72002A4160B347E6F8DB3B416766666676002A410000000002DB3B4133333333AEFF29413333333301DB3B4100000000B0FF29419A9999199DDA3B413333333378002A41676666E69DDA3B41CDCCCCCC79002A41CDCCCCCC39DA3B410000000042012A41333333B33ADA3B41CDCCCCCC43012A419A999999D6D93B41000000000C022A4167666666D7D93B41CDCCCCCC0D022A41CDCCCC4C73D93B419A99999945012A410000008072D93B410000000049012A4133333333AAD83B413333333311022A419A999919ABD83B41CDCCCCCC12022A410000000047D83B416766666682002A41CDCCCC4C45D83B413333333384002A4133333333E1D73B41CDCCCCCCF3FE294100000080DFD73B4167666666F5FE2941676666667BD73B41333333332DFE2941000000807AD73B41000000002FFE29416766666616D73B41CDCCCCCC66FD29410000008015D73B419A99999961FD2941CDCCCCCC41D83B416766666699FC29410000000041D83B410000000096FC29413333333309D93B41CDCCCCCCCDFB2941CDCCCC4C08D93B4167666666CAFB29419A999999D0D93B41CDCCCCCC39FA2941CDCCCCCCCED93B41D1205A6136FA29413A48B6419CDA3B4105000000CDCCCCCCF3FE294100000080DFD73B4167666666F0FE2941333333B3A7D83B413333333328FE2941CDCCCCCCA6D83B419A9999992BFE29419A999999DED73B41CDCCCCCCF3FE294100000080DFD73B410F00000067666666F0FE2941333333B3A7D83B41CDCCCCCC80002A4167666666A9D83B41000000007F002A41000000800DD93B41CDCCCCCCB6FF29419A9999990CD93B4133333333B5FF2941333333B370D93B41CDCCCCCCECFE2941676666E66FD93B4133333333EBFE294100000000D4D93B410000000023FE29419A999919D3D93B413333333321FE29413333333337DA3B410000000059FD29416766666636DA3B41676666665CFD2941333333336ED93B419A99999924FE2941000000006FD93B416766666626FE2941676666E60AD93B419A999999EEFE2941CDCCCCCC0BD93B4167666666F0FE2941333333B3A7D83B410103000000010000001700000067666666D6FB2941CDCCCCCC13D73B4100000000D3FB294100000000DCD73B416766666642FA2941CDCCCC4CDAD73B413333333344FA29413333333376D73B41000000007CF92941CDCCCC4C75D73B41333333337AF9294167666666D9D73B4100000000B2F829419A999999D8D73B4167666666B0F82941333333B33CD83B4133333333E8F72941CDCCCCCC3BD83B4167666666E6F72941676666E69FD83B41333333331EF729419A9999199FD83B41676666661CF729413333333303D93B419A999999E4F729419A99991904D93B4100000000E3F729413333333368D93B4133333333ABF829410000000069D93B4100000000ADF82941676666E604D93B41676666663DFA29419A99999906D93B41000000003FFA294100000080A2D83B4167666666CFFB294133333333A4D83B4133333333D1FB29419A99991940D83B416766666699FC29410000000041D83B419A9999999EFC2941333333B314D73B4167666666D6FB2941CDCCCCCC13D73B4101030000000100000009000000000000004BFA2941CDCCCCCCE5D53B413333333313FB29419A999999E6D53B419A99999911FB2941333333B34AD63B4100000000A2FC2941000000804CD63B41CDCCCCCCA3FC2941CDCCCC4CE8D53B41000000006CFD294133333333E9D53B419A9999996DFD29419A99991985D53B41CDCCCCCC4CFA2941333333B381D53B41000000004BFA2941CDCCCCCCE5D53B4101030000000100000007000000CDCCCCCC0BFF29410000000066D23B416766666608FF2941333333332ED33B413333333340FE2941CDCCCC4C2DD33B41CDCCCCCC3CFE294100000080F5D33B4133333333CDFF294133333333F7D33B4100000000D4FF2941CDCCCCCC66D23B41CDCCCCCC0BFF29410000000066D23B410103000000010000000700000000000000C9F42941CDCCCC4CD4D73B4133333333C7F429416766666638D83B4100000000FFF329410000008037D83B4167666666FDF32941333333B39BD83B41CDCCCCCC8DF52941676666669DD83B413333333391F5294133333333D5D73B4100000000C9F42941CDCCCC4CD4D73B4101030000000100000005000000CDCCCCCCB0F12941CDCCCC4CDCD53B410000000079F2294133333333DDD53B41676666667CF229410000000015D53B4133333333B4F129419A99991914D53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4101030000000100000005000000333333331AFB29413333333356D43B41CDCCCCCC16FB2941676666661ED53B4100000000DFFB2941CDCCCC4C1FD53B4167666666E2FB29419A99991957D43B41333333331AFB29413333333356D43B4101030000000100000005000000676666667CF229410000000015D53B419A99999944F32941CDCCCCCC15D53B410000000048F329419A9999994DD43B41CDCCCCCC7FF22941CDCCCCCC4CD43B41676666667CF229410000000015D53B41010300000001000000050000000000000071FD2941676666E6BCD43B41676666666FFD29410000000021D53B41CDCCCCCCFFFE2941333333B322D53B416766666601FF29419A999999BED43B410000000071FD2941676666E6BCD43B41010300000001000000050000000000000047FE2941676666E69CD13B416766666645FE29410000000001D23B419A9999990DFF2941676666E601D23B41333333330FFF2941333333B39DD13B410000000047FE2941676666E69CD13B41010300000001000000050000006766666632FE2941333333334ED63B419A99999930FE2941CDCCCC4CB2D63B4100000000F9FE29419A999919B3D63B419A999999FAFE2941000000004FD63B416766666632FE2941333333334ED63B4101030000000100000005000000000000003CF32941676666660AD73B41333333333AF32941000000806ED73B416766666602F42941CDCCCC4C6FD73B413333333304F42941333333330BD73B41000000003CF32941676666660AD73B41010300000001000000050000006766666673F92941676666E669D93B419A99999971F9294100000000CED93B41CDCCCCCC39FA2941CDCCCCCCCED93B419A9999993BFA2941333333B36AD93B416766666673F92941676666E669D93B41010300000001000000050000006766666649FA2941676666E649D63B419A99999947FA294100000000AED63B41CDCCCCCC0FFB2941CDCCCCCCAED63B419A99999911FB2941333333B34AD63B416766666649FA2941676666E649D63B410103000000010000000500000067666666CBFF2941676666665BD43B41CDCCCCCCC9FF294100000080BFD43B410000000092002A41CDCCCC4CC0D43B419A99999993002A41333333335CD43B4167666666CBFF2941676666665BD43B4101030000000100000005000000676666664EFA29419A9999991DD53B41CDCCCCCC4CFA2941333333B381D53B4133333333DDFB29416766666683D53B4100000000DFFB2941CDCCCC4C1FD53B41676666664EFA29419A9999991DD53B41010300000001000000050000009A9999993BFA2941333333B36AD93B41CDCCCCCC39FA2941CDCCCCCCCED93B413333333302FB2941333333B3CFD93B41CDCCCCCC03FB29419A9999996BD93B419A9999993BFA2941333333B36AD93B41010300000001000000050000003333333344FA29413333333376D73B416766666642FA2941CDCCCC4CDAD73B419A9999990AFB294133333333DBD73B41676666660CFB29419A99991977D73B413333333344FA29413333333376D73B41010300000001000000050000003333333347012A41676666660ED93B419A99999945012A410000008072D93B41CDCCCCCC0D022A41CDCCCC4C73D93B41676666660F022A41333333330FD93B413333333347012A41676666660ED93B4101030000000100000005000000676666668E002A410000008088D53B41CDCCCCCC8C002A419A999999ECD53B410000000055012A4100000080EDD53B41CDCCCCCC56012A416766666689D53B41676666668E002A410000008088D53B4101030000000100000005000000676666663DFA29419A99999906D93B419A9999993BFA2941333333B36AD93B4100000000CCFB2941000000806CD93B41CDCCCCCCCDFB2941CDCCCC4C08D93B41676666663DFA29419A99999906D93B4101030000000100000005000000676666667BFD29413333333364D23B419A99999979FD294167666666C8D23B41CDCCCCCC41FE294133333333C9D23B419A99999943FE29419A99991965D23B41676666667BFD29413333333364D23B4101030000000100000005000000CDCCCCCCA3FC2941CDCCCC4CE8D53B4100000000A2FC2941000000804CD63B41333333336AFD2941CDCCCC4C4DD63B41000000006CFD294133333333E9D53B41CDCCCCCCA3FC2941CDCCCC4CE8D53B410103000000010000000500000000000000D4FF2941CDCCCCCC66D23B4133333333D2FF2941676666E6CAD23B419A9999999A002A41CDCCCCCCCBD23B41333333339C002A41333333B367D23B4100000000D4FF2941CDCCCCCC66D23B4101030000000100000005000000000000008B002A41333333B350D63B416766666689002A41676666E6B4D63B419A99999951012A41333333B3B5D63B413333333353012A419A99999951D63B41000000008B002A41333333B350D63B41010300000001000000050000009A9999992BFE29419A999999DED73B41CDCCCCCC29FE2941333333B342D83B4100000000F2FE29419A99999943D83B41CDCCCCCCF3FE294100000080DFD73B419A9999992BFE29419A999999DED73B4101030000000100000005000000333333330EFB29410000000013D73B41676666660CFB29419A99991977D73B419A999999D4FB2941676666E677D73B4167666666D6FB2941CDCCCCCC13D73B41333333330EFB29410000000013D73B410103000000010000000500000033333333A0FC29419A999999B0D63B419A9999999EFC2941333333B314D73B41CDCCCCCC66FD29410000008015D73B416766666668FD294167666666B1D63B4133333333A0FC29419A999999B0D63B41010300000001000000050000009A999999E0FB294133333333BBD43B4100000000DFFB2941CDCCCC4C1FD53B4133333333A7FC29419A99991920D53B41CDCCCCCCA8FC294100000000BCD43B419A999999E0FB294133333333BBD43B4101030000000100000005000000676666667FF929419A999919ADD63B419A9999997DF929413333333311D73B410000000046FA29419A99991912D73B419A99999947FA294100000000AED63B41676666667FF929419A999919ADD63B41010300000001000000050000009A99999907F429410000000043D63B410000000006F429419A999919A7D63B4133333333CEF4294100000000A8D63B41CDCCCCCCCFF42941676666E643D63B419A99999907F429410000000043D63B41010300000001000000050000000000000062F6294100000080E1D53B413333333360F629419A99999945D63B416766666628F729416766666646D63B41333333332AF72941CDCCCC4CE2D53B410000000062F6294100000080E1D53B41010300000001000000050000009A9999996DFD29419A99991985D53B41000000006CFD294133333333E9D53B413333333334FE29419A999919EAD53B41CDCCCCCC35FE29410000000086D53B419A9999996DFD29419A99991985D53B41010300000001000000050000000000000046FA29419A99991912D73B413333333344FA29413333333376D73B41676666660CFB29419A99991977D73B41333333330EFB29410000000013D73B410000000046FA29419A99991912D73B41010300000001000000070000006766666632FE2941333333334ED63B41CDCCCCCCC2FF2941676666E64FD63B4133333333C6FF2941333333B387D53B4100000000FEFE2941CDCCCCCC86D53B4167666666FCFE2941676666E6EAD53B413333333334FE29419A999919EAD53B416766666632FE2941333333334ED63B410103000000010000000500000000000000F9FE29419A999919B3D63B4167666666F5FE2941676666667BD73B419A999999BDFF2941333333337CD73B4133333333C1FF294100000000B4D63B4100000000F9FE29419A999919B3D63B4101030000000100000005000000CDCCCCCC89F929410000008054D43B410000000088F929419A999999B8D43B413333333350FA294100000080B9D43B410000000052FA2941CDCCCC4C55D43B41CDCCCCCC89F929410000008054D43B4101030000000100000005000000333333336AFD2941CDCCCC4C4DD63B416766666668FD294167666666B1D63B419A99999930FE2941CDCCCC4CB2D63B416766666632FE2941333333334ED63B41333333336AFD2941CDCCCC4C4DD63B410103000000010000000500000067666666F2F7294133333333E3D53B41CDCCCCCCF0F72941CDCCCC4C47D63B4100000000B9F829413333333348D63B419A999999BAF829419A999919E4D53B4167666666F2F7294133333333E3D53B41010300000001000000050000009A9999999F002A41000000809FD13B41CDCCCCCC67012A41CDCCCC4CA0D13B419A99999969012A41333333333CD13B4167666666A1002A41676666663BD13B419A9999999F002A41000000809FD13B410103000000010000000500000033333333CEF4294100000000A8D63B4167666666CCF429419A9999190CD73B419A99999994F52941676666E60CD73B416766666696F52941CDCCCCCCA8D63B4133333333CEF4294100000000A8D63B41010300000001000000050000009A99999979FD294167666666C8D23B410000000078FD2941000000802CD33B413333333340FE2941CDCCCC4C2DD33B41CDCCCCCC41FE294133333333C9D23B419A99999979FD294167666666C8D23B410103000000010000000500000009D4954E72002A4121682FE5F8DB3B41B62D0F573B012A41404082BDC8DB3B41000000003D012A410000000067DB3B41CDCCCCCC74002A419A99991966DB3B4109D4954E72002A4121682FE5F8DB3B41010300000001000000050000009A99999911FB2941333333B34AD63B41CDCCCCCC0FFB2941CDCCCCCCAED63B4100000000D8FB2941333333B3AFD63B41CDCCCCCCD9FB29419A9999994BD63B419A99999911FB2941333333B34AD63B410103000000010000000500000033333333EDF72941000000800FD73B419A999999EBF729419A99999973D73B41CDCCCCCCB3F829410000008074D73B4167666666B5F829416766666610D73B4133333333EDF72941000000800FD73B41010300000001000000050000009A99999930FE2941CDCCCC4CB2D63B41333333332DFE2941000000807AD73B4167666666F5FE2941676666667BD73B4100000000F9FE29419A999919B3D63B419A99999930FE2941CDCCCC4CB2D63B410103000000010000000500000067666666BFFF29419A99991918D73B419A999999BDFF2941333333337CD73B410000000086002A419A9999197DD73B419A99999987002A410000000019D73B4167666666BFFF29419A99991918D73B4101030000000100000005000000CDCCCCCC3CFE294100000080F5D33B41000000003BFE29419A99999959D43B413333333303FF2941000000805AD43B410000000005FF294167666666F6D33B41CDCCCCCC3CFE294100000080F5D33B4101030000000100000005000000676666666FFD29410000000021D53B419A9999996DFD29419A99991985D53B41CDCCCCCC35FE29410000000086D53B419A99999937FE2941676666E621D53B41676666666FFD29410000000021D53B410103000000010000000500000067666666E2FB29419A99991957D43B419A999999E0FB294133333333BBD43B41CDCCCCCCA8FC294100000000BCD43B419A999999AAFC2941676666E657D43B4167666666E2FB29419A99991957D43B410103000000010000000500000000000000F9FE29419A999919B3D63B4133333333C1FF294100000000B4D63B41CDCCCCCCC2FF2941676666E64FD63B419A999999FAFE2941000000004FD63B4100000000F9FE29419A999919B3D63B41010300000001000000050000009A9999990DFF2941676666E601D23B41CDCCCCCC0BFF29410000000066D23B4100000000D4FF2941CDCCCCCC66D23B41CDCCCCCCD5FF2941333333B302D23B419A9999990DFF2941676666E601D23B410103000000010000001C0000005BF6085B53F6294185D47DE839D93B4103E4CCC5C5F629415744F2EA66D93B41CDCCCCCC1AF72941CDCCCC4C67D93B417945A7351AF729415AEB3A2288D93B41676666E636F72941B81E856B93D93B41291E8C89BAF729419F1CFA15CCD93B4167666666A9F829419A999919CDD93B41A74E7FD6A8F829417A578344F0D93B41333333B3C9F82941295C8F42F4D93B418C30C5903DF92941E4B88EDF31DA3B410000000070F929419A99991932DA3B4180005DA16FF9294157E173A846DA3B41F6285C0FC4F929415C8FC27565DA3B41B50F21852BFA2941642C140D97DA3B416766666636FA29419A99991997DA3B41CDCCCCCC39FA2941CDCCCCCCCED93B419A99999971F9294100000000CED93B416766666673F92941676666E669D93B419A9999993BFA2941333333B36AD93B41676666663DFA29419A99999906D93B4100000000ADF82941676666E604D93B4133333333ABF829410000000069D93B4100000000E3F729413333333368D93B419A999999E4F729419A99991904D93B41676666661CF729413333333303D93B41333333331EF729419A9999199FD83B410000000056F62941333333339ED83B415BF6085B53F6294185D47DE839D93B4101030000000100000009000000DDE5450736F32941F27BB10B69D83B41F6285C8F66F32941B81E85EB7AD83B41A3AA38FFB6F329417B3D2D629BD83B4167666666FDF32941333333B39BD83B41CDCCCCCC00F4294167666666D3D73B4100000000C9F42941CDCCCC4CD4D73B41CDCCCCCCCAF429413333333370D73B41333333333AF32941000000806ED73B41DDE5450736F32941F27BB10B69D83B4101030000000100000005000000CDCCCCCC7EFD2941000000009CD13B41676666667BFD29413333333364D23B419A99999943FE29419A99991965D23B410000000047FE2941676666E69CD13B41CDCCCCCC7EFD2941000000009CD13B4101030000000100000005000000333333330FFF2941333333B39DD13B419A9999990DFF2941676666E601D23B41CDCCCCCCD5FF2941333333B302D23B4167666666D7FF29419A9999999ED13B41333333330FFF2941333333B39DD13B41010300000001000000050000009A99999984F92941CDCCCCCC80D53B41CDCCCCCC82F92941676666E6E4D53B41000000004BFA2941CDCCCCCCE5D53B41CDCCCCCC4CFA2941333333B381D53B419A99999984F92941CDCCCCCC80D53B4101030000000100000006000000A58D8AEDFCF3294113744AF4B5D83B4152B81E058DF42941F6285C4FE9D83B411C87B5D6C3F42941BA598B72FED83B419A999999C5F42941000000809CD83B4167666666FDF32941333333B39BD83B41A58D8AEDFCF3294113744AF4B5D83B4101030000000100000005000000000000004BFA2941CDCCCCCCE5D53B416766666649FA2941676666E649D63B419A99999911FB2941333333B34AD63B413333333313FB29419A999999E6D53B41000000004BFA2941CDCCCCCCE5D53B4101030000000100000005000000676666668FF52941CDCCCC4C39D83B41CDCCCCCC8DF52941676666669DD83B410000000056F62941333333339ED83B419A99999957F629419A9999193AD83B41676666668FF52941CDCCCC4C39D83B4101030000000100000005000000CDCCCCCCD9FB29419A9999994BD63B4100000000D8FB2941333333B3AFD63B4133333333A0FC29419A999999B0D63B4100000000A2FC2941000000804CD63B41CDCCCCCCD9FB29419A9999994BD63B41010300000001000000050000000C26313B1DFD2941BB46D78FC6DB3B41F6285C8F2CFD294115AE47A1E1DB3B410E89AC2551FD2941A434715901DC3B413333333352FD2941CDCCCCCCC6DB3B410C26313B1DFD2941BB46D78FC6DB3B4101030000000100000005000000CDCCCCCC98002A41676666E62FD33B410000000097002A410000000094D33B41333333335F012A41676666E694D33B410000000061012A41333333B330D33B41CDCCCCCC98002A41676666E62FD33B410103000000010000000500000033333333CDFF294133333333F7D33B4167666666CBFF2941676666665BD43B419A99999993002A41333333335CD43B416766666695002A419A999919F8D33B4133333333CDFF294133333333F7D33B41010300000001000000070000006766666623F72941CDCCCCCC72D73B410000000020F72941000000003BD83B4133333333E8F72941CDCCCCCC3BD83B41CDCCCCCCE9F72941333333B3D7D73B4100000000B2F829419A999999D8D73B41CDCCCCCCB3F829410000008074D73B416766666623F72941CDCCCCCC72D73B41010300000001000000050000003333333378002A41676666E69DDA3B41CDCCCCCC74002A419A99991966DB3B41000000003D012A410000000067DB3B416766666640012A41CDCCCCCC9EDA3B413333333378002A41676666E69DDA3B4101030000000100000005000000000000003FFA294100000080A2D83B41676666663DFA29419A99999906D93B41CDCCCCCCCDFB2941CDCCCC4C08D93B4167666666CFFB294133333333A4D83B41000000003FFA294100000080A2D83B410103000000010000000500000067666666CFFB294133333333A4D83B419A99999997FC29419A999919A5D83B416766666699FC29410000000041D83B4133333333D1FB29419A99991940D83B4167666666CFFB294133333333A4D83B410103000000010000000500000067666666CCF429419A9999190CD73B41CDCCCCCCCAF429413333333370D73B410000000093F529410000000071D73B419A99999994F52941676666E60CD73B4167666666CCF429419A9999190CD73B410103000000010000000400000082A61DCFC5F629415A639CEE66D93B417945A7351AF729415AEB3A2288D93B41CDCCCCCC1AF72941CDCCCC4C67D93B4182A61DCFC5F629415A639CEE66D93B41010300000001000000050000006307CBA1BAF729417FFF6920CCD93B410AD7A3F0D1F7294190C2F528D6D93B4185525C03E1F729415815C0FDD7D93B4133333333E1F72941CDCCCC4CCCD93B416307CBA1BAF729417FFF6920CCD93B4101030000000100000005000000CDCCCCCCC2FF2941676666E64FD63B4133333333C1FF294100000000B4D63B416766666689002A41676666E6B4D63B41000000008B002A41333333B350D63B41CDCCCCCCC2FF2941676666E64FD63B4101030000000100000005000000333333336AFD2941CDCCCC4C4DD63B416766666632FE2941333333334ED63B413333333334FE29419A999919EAD53B41000000006CFD294133333333E9D53B41333333336AFD2941CDCCCC4C4DD63B410103000000010000000500000033333333A0FC29419A999999B0D63B416766666668FD294167666666B1D63B41333333336AFD2941CDCCCC4C4DD63B4100000000A2FC2941000000804CD63B4133333333A0FC29419A999999B0D63B410103000000010000000500000000000000DFFB2941CDCCCC4C1FD53B4133333333DDFB29416766666683D53B4167666666A5FC29413333333384D53B4133333333A7FC29419A99991920D53B4100000000DFFB2941CDCCCC4C1FD53B410103000000010000000500000000000000D8FB2941333333B3AFD63B4167666666D6FB2941CDCCCCCC13D73B419A9999999EFC2941333333B314D73B4133333333A0FC29419A999999B0D63B4100000000D8FB2941333333B3AFD63B41010300000001000000050000003333333334FE29419A999919EAD53B4167666666FCFE2941676666E6EAD53B4100000000FEFE2941CDCCCCCC86D53B41CDCCCCCC35FE29410000000086D53B413333333334FE29419A999919EAD53B410103000000010000001700000011698D2F1AF02941649FACBB3CD73B41000000806EF029419A99995962D73B41CE7AB6AA8AF02941CA615A826BD73B419A999999E1F02941676666E66BD73B4100000000E5F02941333333B3A3D63B4133333333ADF1294100000080A4D63B41CDCCCCCCA9F12941CDCCCCCC6CD73B41333333333AF32941000000806ED73B41000000003CF32941676666660AD73B413333333304F42941333333330BD73B416766666602F42941CDCCCC4C6FD73B41CDCCCCCCCAF429413333333370D73B4133333333CEF4294100000000A8D63B41CDCCCCCC3DF32941CDCCCC4CA6D63B41676666663FF329413333333342D63B413333333377F22941CDCCCC4C41D63B410000000079F2294133333333DDD53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4100000000AFF129416766666640D63B41CDCCCCCCE6F029419A9999993FD63B4167666666E8F0294100000080DBD53B413333333320F029419A999999DAD53B4111698D2F1AF02941649FACBB3CD73B4101030000000100000007000000676666663FF329413333333342D63B410000000098F52941333333B344D63B41676666669BF52941000000807CD53B4133333333D3F42941333333B37BD53B4100000000D5F429410000008017D53B419A99999944F32941CDCCCCCC15D53B41676666663FF329413333333342D63B4101030000000100000009000000CDCCCCCC5CF62941CDCCCCCC0DD73B416766666659F6294100000000D6D73B413333333391F5294133333333D5D73B41676666668FF52941CDCCCC4C39D83B419A99999957F629419A9999193AD83B410000000056F62941333333339ED83B41333333331EF729419A9999199FD83B410000000025F72941333333B30ED73B41CDCCCCCC5CF62941CDCCCCCC0DD73B41010300000001000000050000000000000052FA2941CDCCCC4C55D43B41676666664EFA29419A9999991DD53B41CDCCCCCC16FB2941676666661ED53B41333333331AFB29413333333356D43B410000000052FA2941CDCCCC4C55D43B41010300000001000000050000000000000005FF294167666666F6D33B416766666601FF29419A999999BED43B41CDCCCCCCC9FF294100000080BFD43B4133333333CDFF294133333333F7D33B410000000005FF294167666666F6D33B41010300000001000000050000003333333360F629419A99999945D63B419A9999995EF62941333333B3A9D63B4100000000EFF7294167666666ABD63B41CDCCCCCCF0F72941CDCCCC4C47D63B413333333360F629419A99999945D63B410103000000010000000500000033333333CDFF294133333333F7D33B419A9999995D012A4100000000F9D33B41333333335F012A41676666E694D33B41CDCCCCCCCEFF29419A99991993D33B4133333333CDFF294133333333F7D33B4101030000000100000005000000CDCCCCCC00F4294167666666D3D73B4100000000FFF329410000008037D83B4133333333C7F429416766666638D83B4100000000C9F42941CDCCCC4CD4D73B41CDCCCCCC00F4294167666666D3D73B41010300000001000000050000003333333381F929410000000049D63B41676666667FF929419A999919ADD63B419A99999947FA294100000000AED63B416766666649FA2941676666E649D63B413333333381F929410000000049D63B41010300000001000000050000009A999999F7F72941676666E6B6D43B41CDCCCCCCF5F72941000000001BD53B4100000000BEF82941CDCCCCCC1BD53B41CDCCCCCCBFF82941333333B3B7D43B419A999999F7F72941676666E6B6D43B41010300000001000000050000000000000079F2294133333333DDD53B413333333377F22941CDCCCC4C41D63B41676666663FF329413333333342D63B413333333341F3294100000000DED53B410000000079F2294133333333DDD53B4101030000000100000005000000CE7AB6AA8AF02941CA615A826BD73B4148E17A14CCF029417B14AEC780D73B41632DB122E1F02941975893F588D73B419A999999E1F02941676666E66BD73B41CE7AB6AA8AF02941CA615A826BD73B410103000000010000000500000000000000B9F829413333333348D63B4133333333B7F82941CDCCCC4CACD63B41676666667FF929419A999919ADD63B413333333381F929410000000049D63B4100000000B9F829413333333348D63B41010300000001000000050000009A99999974FD2941333333B3F4D33B41CDCCCCCC72FD2941CDCCCCCC58D43B41000000003BFE29419A99999959D43B41CDCCCCCC3CFE294100000080F5D33B419A99999974FD2941333333B3F4D33B41 + + + +MULTIPOLYGON (((851642.3000000000465661 1823732.6999999999534339, 851641.4004495161352679 1823832.7500038172584027, 851541.3000000000465661 1823831.9000000001396984, 851441.2000000000698492 1823831.1000000000931323, 851341.0999999999767169 1823830.1999999999534339, 851241.0000000000000000 1823829.3000000000465661, 851140.9000000000232831 1823828.5000000000000000, 851140.0000000000000000 1823928.6000000000931323, 851039.9000000000232831 1823927.6999999999534339, 850939.8000000000465661 1823926.9000000001396984, 850938.9000000000232831 1824027.0000000000000000, 851039.0000000000000000 1824027.8000000000465661, 851139.0999999999767169 1824028.6999999999534339, 851239.2000000000698492 1824029.6000000000931323, 851238.4000000000232831 1824129.6999999999534339, 851138.3000000000465661 1824128.8000000000465661, 851137.4000000000232831 1824228.9000000001396984, 851237.5000000000000000 1824229.8000000000465661, 851236.7000000000698492 1824329.9000000001396984, 851136.5999999999767169 1824329.0000000000000000, 851036.5000000000000000 1824328.1999999999534339, 851037.3000000000465661 1824228.1000000000931323, 851038.2000000000698492 1824127.9000000001396984, 850938.0999999999767169 1824127.1000000000931323, 850937.2000000000698492 1824227.1999999999534339, 850837.0999999999767169 1824226.3000000000465661, 850737.0000000000000000 1824225.5000000000000000, 850736.0999999999767169 1824325.6000000000931323, 850735.3000000000465661 1824425.6999999999534339, 850935.5000000000000000 1824427.4000000001396984, 850934.5999999999767169 1824527.5000000000000000, 850933.8000000000465661 1824627.6000000000931323, 851033.9000000001396984 1824628.5000000000000000, 850833.7000000000698492 1824626.8000000000465661, 850832.0000000000000000 1824827.0000000002328306, 850831.0999999998603016 1824927.1000000000931323, 850834.4999999998835847 1824526.7000000001862645, 850734.4000000000232831 1824525.8000000002793968, 850732.7000000000698492 1824726.0000000000000000, 850632.5999999999767169 1824725.1999999999534339, 850633.5000000000000000 1824625.0000000000000000, 850634.3000000000465661 1824524.9000000001396984, 850635.2000000000698492 1824424.8000000000465661, 850535.0999999999767169 1824424.0000000000000000, 850535.9000000000232831 1824323.9000000001396984, 850485.8499998252373189 1824323.4499999985564500, 850636.0000000000000000 1824324.6999999999534339, 850637.7000000000698492 1824124.5000000000000000, 850537.5999999999767169 1824123.6999999999534339, 850538.5000000000000000 1824023.5000000000000000, 850539.4000000000232831 1823923.4000000001396984, 850540.2000000000698492 1823823.3000000000465661, 850440.0999999999767169 1823822.5000000000000000, 850340.0000000000000000 1823821.6000000000931323, 850239.9000000000232831 1823820.8000000000465661, 850238.2000000000698492 1824021.0000000000000000, 850138.0999999999767169 1824020.1000000000931323, 850138.9000000000232831 1823920.0000000000000000, 850038.8000000000465661 1823919.1000000000931323, 850038.0000000000000000 1824019.3000000000465661, 850036.2000000000698492 1824219.5000000000000000, 849936.0999999999767169 1824218.6000000000931323, 849937.0000000000000000 1824118.5000000000000000, 849937.9000000000232831 1824018.4000000001396984, 849837.8000000000465661 1824017.5000000000000000, 849836.9000000000232831 1824117.6000000000931323, 849838.5999999999767169 1823917.4000000001396984, 849839.5000000000000000 1823817.3000000000465661, 849739.4000000000232831 1823816.5000000000000000, 849738.5000000000000000 1823916.6000000000931323, 849638.4000000000232831 1823915.6999999999534339, 849636.7000000000698492 1824115.9000000001396984, 849536.5999999999767169 1824115.1000000000931323, 849536.2692815386690199 1824154.0469623315148056, 849548.6400000000139698 1824156.1799999999348074, 849586.4300000000512227 1824185.5300000000279397, 849627.0800000000745058 1824231.9399999999441206, 849660.8599999999860302 1824262.2600000000093132, 849680.3636364636477083 1824316.5078648633789271, 849684.3300000000745058 1824327.5400000000372529, 849716.9100000000325963 1824380.8700000001117587, 849723.6433544510509819 1824417.0156312044709921, 849724.5700000000651926 1824421.9899999999906868, 849734.1084225099766627 1824428.5586334464605898, 849795.2299999999813735 1824470.6500000001396984, 849833.6494826704729348 1824499.3959808573126793, 849858.9192303767194971 1824518.3031506924889982, 849877.8000000000465661 1824532.4299999999348074, 849918.6099999999860302 1824559.8100000000558794, 849933.1424997501308098 1824572.7773823689203709, 849975.2500000000000000 1824610.3500000000931323, 849989.3334234596695751 1824619.5091916196979582, 850022.0400000000372529 1824640.7800000000279397, 850032.5677580054616556 1824648.9592795723583549, 850097.6199999999953434 1824699.5000000000000000, 850126.2157696812646464 1824720.8470948324538767, 850132.0612414539791644 1824725.2108116219751537, 850231.5010046017123386 1824799.4438215284608305, 850232.1999999999534339 1824721.6999999999534339, 850231.5267270678887144 1824799.4630236667580903, 850261.7699999999022111 1824822.0400000002700835, 850331.0142051535658538 1824873.0456769433803856, 850355.2800000000279397 1824890.9199999999254942, 850395.4984792063478380 1824923.3835028100293130, 850412.9500000000698492 1824937.4699999999720603, 850430.4639477027812973 1824949.9542610689532012, 850502.5100000000093132 1825001.3100000002887100, 850529.9193536968668923 1825022.4474388197995722, 850568.1500000000232831 1825051.9299999999348074, 850629.7553476765751839 1825056.1121219883207232, 850703.2300000000977889 1825061.1000000000931323, 850729.6557179262163118 1825081.8907944774255157, 850730.0999999998603016 1825026.3000000000465661, 850731.0000000000000000 1824926.1999999997206032, 850729.6778027521213517 1825081.9081700157839805, 850786.8863288167631254 1825126.9177592005580664, 850829.4000000000232831 1825127.2999999998137355, 850786.9045230898773298 1825126.9320737929083407, 850829.1047918043332174 1825160.1337115378119051, 850843.4500000000698492 1825171.4200000001583248, 850909.2686471390770748 1825228.0858476529829204, 851028.7000000000698492 1825229.1000000000931323, 850928.5999999999767169 1825228.3000000000465661, 850909.3160021123476326 1825228.1266174018383026, 850920.9699999999720603 1825238.1599999999161810, 850928.5065637384541333 1825239.9912122096866369, 851028.4189400272443891 1825264.2676291153766215, 851044.8499999999767169 1825268.2600000000093132, 851102.7827544375322759 1825329.8732715183869004, 851110.3300000000745058 1825337.9000000001396984, 851127.8151626735925674 1825350.6580181920435280, 851170.0300000000279397 1825381.4599999999627471, 851221.7600178631255403 1825431.0510890716686845, 851227.1590260977391154 1825436.2268595299683511, 851227.1999999999534339 1825431.1000000000931323, 851228.9000000001396984 1825230.8000000000465661, 851227.1901407483965158 1825436.2566876544151455, 851273.3000000000465661 1825480.4600000001955777, 851301.4500000000698492 1825466.6799999999348074, 851334.4599999999627471 1825469.9700000002048910, 851378.3399999999674037 1825489.3699999998789281, 851378.4700000000884756 1825474.3500000000931323, 851428.3800000001210719 1825491.8000000002793968, 851462.1800000000512227 1825520.1200000001117587, 851483.7199999999720603 1825576.3700000001117587, 851533.4000000000232831 1825620.8400000000838190, 851560.1300000000046566 1825655.1100000001024455, 851587.8100000001722947 1825696.3999999999068677, 851598.6156093492172658 1825734.5618786055129021, 851606.2800000000279397 1825761.6300000001210719, 851624.5735819654073566 1825793.3493836307898164, 851626.0100000000093132 1825795.8400000000838190, 851639.5299999999115244 1825853.0200000000186265, 851682.9200000000419095 1825930.4799999999813735, 851721.2454862464219332 1825935.8808557775337249, 851829.5620444538071752 1825936.8006267512682825, 851832.0500000001629815 1825935.7600000000093132, 851862.5999999999767169 1825874.9499999999534339, 851910.9899999999906868 1825836.3200000000651926, 851981.3300000000745058 1825805.8900000001303852, 852025.1445593443932012 1825784.8995315656065941, 852027.1999999999534339 1825538.0000000000000000, 852028.0999999998603016 1825437.9000000001396984, 852026.4000000000232831 1825638.1000000003259629, 852025.1534868489252403 1825784.8952546196524054, 852125.6700376782100648 1825736.7402687221765518, 852127.0899999999674037 1825736.0600000000558794, 852226.1585109630832449 1825685.9766200690064579, 852227.4000000000232831 1825539.6999999999534339, 852229.1995466686785221 1825339.5504205159377307, 852228.3000000000465661 1825439.6000000000931323, 852226.5999999999767169 1825639.9000000001396984, 852226.1858489551814273 1825685.9627995418850332, 852249.7699999999022111 1825674.0400000002700835, 852272.2851927585434169 1825640.2651164256967604, 852303.5200000000186265 1825593.4100000001490116, 852327.2517712992848828 1825575.7208152329549193, 852332.7399999998742715 1825571.6300000001210719, 852365.7916617594892159 1825540.9439370818436146, 852387.2300000000977889 1825521.0400000000372529, 852412.2600000001257285 1825521.2600000000093132, 852428.0489484647987410 1825497.8378233269322664, 852457.8900000000139698 1825453.5700000000651926, 852474.1630311026237905 1825441.7649393097963184, 852528.9411304481327534 1825402.0268731063697487, 852530.3000000000465661 1825242.0000000000000000, 852529.5000000001164153 1825342.1000000003259629, 852570.0132622728124261 1825342.4642551054712385, 852629.0500000001629815 1825224.7700000000186265, 852630.6628004902740940 1825217.8396128332242370, 852631.3000000000465661 1825142.8000000000465661, 852531.1999999999534339 1825141.8999999996740371, 852532.9000000001396984 1824941.6999999999534339, 852432.8000000000465661 1824940.8000000000465661, 852433.7000000000698492 1824840.7000000001862645, 852434.4999999998835847 1824740.6000000000931323, 852436.2000000000698492 1824540.4000000001396984, 852236.0000000000000000 1824538.6999999999534339, 852336.0999999999767169 1824539.5000000000000000, 852337.8000000000465661 1824339.3000000000465661, 852337.0000000000000000 1824439.4000000001396984, 852637.3000000000465661 1824442.0000000000000000, 852640.7000000000698492 1824041.6000000000931323, 852540.5999999999767169 1824040.6999999999534339, 852538.0999999999767169 1824341.0000000000000000, 852438.0003961820621043 1824340.1504277260974050, 852438.8000000000465661 1824240.1000000000931323, 852439.7000000000698492 1824140.0000000000000000, 852440.5000000000000000 1824039.9000000001396984, 852340.4000000000232831 1824039.0000000000000000, 852140.2000000000698492 1824037.3000000000465661, 852040.0999999999767169 1824036.4000000001396984, 852041.0000000000000000 1823936.3000000000465661, 852041.8000000000465661 1823836.1999999999534339, 852141.9000000000232831 1823837.1000000000931323, 852142.8000000000465661 1823737.0000000000000000, 852042.7000000000698492 1823736.1000000000931323, 851942.5999999999767169 1823735.1999999999534339, 851842.5000000000000000 1823734.4000000001396984, 851742.4000000000232831 1823733.5000000000000000, 851642.3000000000465661 1823732.6999999999534339), (851541.3000000000465661 1823831.9000000001396984, 851539.9999999993015081 1823982.0500000873580575, 851540.4000000000232831 1823932.0000000000000000, 851541.3000000000465661 1823831.9000000001396984), (851239.2000000000698492 1824029.6000000000931323, 851339.4000000000232831 1824030.4000000001396984, 851439.5000000000000000 1824031.3000000000465661, 851239.2000000000698492 1824029.6000000000931323), (850736.0999999999767169 1824325.6000000000931323, 850836.2000000000698492 1824326.4000000001396984, 850936.4000000000232831 1824327.3000000000465661, 850736.0999999999767169 1824325.6000000000931323), (850535.0999999999767169 1824424.0000000000000000, 850334.9000000000232831 1824422.3000000000465661, 850435.0000000000000000 1824423.1000000000931323, 850535.0999999999767169 1824424.0000000000000000), (851228.9000000001396984 1825230.8000000000465661, 851329.0999999998603016 1825231.6999999999534339, 851429.1999999999534339 1825232.6000000000931323, 851228.9000000001396984 1825230.8000000000465661), (851429.1999999999534339 1825232.6000000000931323, 851430.0000000000000000 1825132.5000000000000000, 851430.9000000001396984 1825032.3000000000465661, 851429.1999999999534339 1825232.6000000000931323), (852028.0999999998603016 1825437.9000000001396984, 852028.9000000001396984 1825337.8000000002793968, 852129.0000000000000000 1825338.7000000001862645, 852128.1500038170488551 1825438.7995504839345813, 852028.0999999998603016 1825437.9000000001396984), (852530.3000000000465661 1825242.0000000000000000, 852330.1499963951064274 1825240.3004245448391885, 852330.1499966070987284 1825240.3003995732869953, 852430.1999999999534339 1825241.1000000000931323, 852530.3000000000465661 1825242.0000000000000000), (852432.8000000000465661 1824940.8000000000465661, 852431.0999999998603016 1825140.9999999997671694, 852431.9000000001396984 1825040.9000000001396984, 852432.8000000000465661 1824940.8000000000465661), (851842.5000000000000000 1823734.4000000001396984, 851840.7000000000698492 1823934.6000000000931323, 851841.5999999999767169 1823834.5000000000000000, 851842.5000000000000000 1823734.4000000001396984), (851840.7000000000698492 1823934.6000000000931323, 851640.5000000000000000 1823932.9000000001396984, 851740.5999999999767169 1823933.6999999999534339, 851840.7000000000698492 1823934.6000000000931323), (851640.5000000000000000 1823932.9000000001396984, 851639.7000000000698492 1824033.0000000000000000, 851638.8000000000465661 1824133.1000000000931323, 851640.5000000000000000 1823932.9000000001396984), (851639.7000000000698492 1824033.0000000000000000, 851839.9000000000232831 1824034.6999999999534339, 851739.8000000000465661 1824033.9000000001396984, 851639.7000000000698492 1824033.0000000000000000), (851839.9000000000232831 1824034.6999999999534339, 851940.0000000000000000 1824035.6000000000931323, 851939.0999999999767169 1824135.6999999999534339, 851839.0000000000000000 1824134.8000000000465661, 851839.9000000000232831 1824034.6999999999534339), (851939.0999999999767169 1824135.6999999999534339, 851938.3000000000465661 1824235.8000000000465661, 852038.4000000000232831 1824236.6000000000931323, 852037.5000000000000000 1824336.6999999999534339, 851937.4000000000232831 1824335.9000000001396984, 851939.0999999999767169 1824135.6999999999534339), (851638.8000000000465661 1824133.1000000000931323, 851438.6000002340879291 1824131.4000000020023435, 851538.7000000000698492 1824132.1999999999534339, 851638.8000000000465661 1824133.1000000000931323), (851235.0000000000000000 1824530.1000000000931323, 851234.0999999998603016 1824630.1999999997206032, 851134.0000000000000000 1824629.2999999998137355, 851134.8000000000465661 1824529.1999999999534339, 851235.0000000000000000 1824530.1000000000931323), (851235.0000000000000000 1824530.1000000000931323, 851235.8000000000465661 1824430.0000000000000000, 851335.9000000000232831 1824430.8000000000465661, 851436.0000000000000000 1824431.6999999999534339, 851435.1999999999534339 1824531.8000000002793968, 851335.0999999999767169 1824531.0000000000000000, 851235.0000000000000000 1824530.1000000000931323), (851435.1999999999534339 1824531.8000000002793968, 851433.5000000001164153 1824732.0000000000000000, 851434.3000000000465661 1824631.9000000001396984, 851435.1999999999534339 1824531.8000000002793968), (851833.9000000001396984 1824735.5000000000000000, 851934.0000000000000000 1824736.3000000000465661, 852134.1999999999534339 1824738.0000000000000000, 852034.0999999998603016 1824737.1999999999534339, 851833.9000000001396984 1824735.5000000000000000), (852134.1999999999534339 1824738.0000000000000000, 852234.3000000000465661 1824738.9000000001396984, 852334.4000000000232831 1824739.6999999999534339, 852333.5999999999767169 1824839.9000000001396984, 852233.4000000000232831 1824839.0000000002328306, 852033.1999999999534339 1824837.2999999998137355, 852133.3000000000465661 1824838.1000000003259629, 852134.1999999999534339 1824738.0000000000000000), (851833.9000000001396984 1824735.5000000000000000, 851832.1999999999534339 1824935.6999999999534339, 851833.0000000000000000 1824835.6000000000931323, 851833.9000000001396984 1824735.5000000000000000), (851934.8000000000465661 1824636.1999999999534339, 851936.5999999999767169 1824436.0000000000000000, 851935.7000000000698492 1824536.1000000000931323, 851934.8000000000465661 1824636.1999999999534339), (851935.7000000000698492 1824536.1000000000931323, 852135.9000000000232831 1824537.8000000000465661, 852035.8000000000465661 1824537.0000000000000000, 851935.7000000000698492 1824536.1000000000931323), (850338.3000000000465661 1824021.8000000000465661, 850336.9947843523696065 1824172.6026079109869897, 850337.4000000000232831 1824121.9000000001396984, 850338.3000000000465661 1824021.8000000000465661), (852138.5000000000000000 1824237.5000000000000000, 852137.2000000000698492 1824387.6499999999068677, 852137.5999999999767169 1824337.6000000000931323, 852138.5000000000000000 1824237.5000000000000000), (851336.8000000000465661 1824330.6999999999534339, 851537.0000000000000000 1824332.5000000000000000, 851436.9000000000232831 1824331.6000000000931323, 851336.8000000000465661 1824330.6999999999534339), (850333.0999999998603016 1824622.5000000000000000, 850433.2000000000698492 1824623.3000000000465661, 850533.4000000000232831 1824624.1999999997206032, 850333.0999999998603016 1824622.5000000000000000), (851532.7000000000698492 1824832.9999999997671694, 851531.0000000000000000 1825033.1999999999534339, 851531.8000000000465661 1824933.1000000000931323, 851532.7000000000698492 1824832.9999999997671694), (852131.6495722740655765 1825038.4003961817361414, 852231.7000000000698492 1825039.1999999999534339, 852131.6495722740655765 1825038.4003961822018027, 852131.6495722740655765 1825038.4003961817361414), (852230.9000004681292921 1825139.3000000037718564, 852431.0999995357124135 1825140.9999999958090484, 852331.0000000000000000 1825140.1999999997206032, 852230.9000004681292921 1825139.3000000037718564)), ((844932.7761059190379456 1823944.7908861120231450, 844927.9000000000232831 1823966.4000000001396984, 844926.1971254986710846 1823975.4433307987637818, 844920.5600000000558794 1824005.3800000001210719, 844914.2800000000279397 1824037.3600000001024455, 844900.1199999999953434 1824053.2600000000093132, 844831.4899999999906868 1824117.7399999999906868, 844831.2088827658444643 1824118.2226566665340215, 844815.2399999999906868 1824145.6400000001303852, 844784.9799999999813735 1824171.4100000001490116, 844763.5500000000465661 1824218.2800000000279397, 844739.1900000000605360 1824257.1100000001024455, 844732.5689081742893904 1824274.1257943792734295, 844729.6396295028971508 1824281.6538584602531046, 844728.9000000000232831 1824374.1999999999534339, 844727.2000000000698492 1824574.4000000001396984, 844729.6370590717997402 1824281.6604643084574491, 844694.1500000000232831 1824372.8600000001024455, 844679.7099999999627471 1824422.7900000000372529, 844669.4100000000325963 1824456.7399999999906868, 844619.9799999999813735 1824499.3700000001117587, 844597.2096419272711501 1824573.2967368511017412, 844596.3000000000465661 1824576.2500000000000000, 844595.9899999999906868 1824612.2900000000372529, 844586.7700000000186265 1824637.2399999999906868, 844566.9099158239550889 1824673.1669223201461136, 844560.3300000000745058 1824685.0700000002980232, 844554.0500000001629815 1824717.0500000000465661, 844557.7900000000372529 1824747.1200000001117587, 844627.4500000000698492 1824796.7700000000186265, 844694.2099999999627471 1824834.3900000001303852, 844724.7609713199781254 1824854.5584635899867862, 844755.6946466653607786 1824874.9795722477138042, 844824.2763564363121986 1824920.2543264275882393, 844824.2983818182256073 1824920.2688666565809399, 844889.3300000000745058 1824963.1999999999534339, 844892.4905942827463150 1824976.3175977508071810, 844901.9000000001396984 1825015.3699999998789281, 844923.5665353111689910 1825015.8703710103873163, 844923.5730725777102634 1825015.8705219828989357, 845040.0300000000279397 1825018.5600000000558794, 845051.8699999999953434 1825039.6799999999348074, 845072.8800000000046566 1825040.8600000001024455, 845082.2800000000279397 1824995.8900000001303852, 845096.2800000000279397 1824997.0100000000093132, 845101.1099999999860302 1825018.0800000000745058, 845219.2299999999813735 1825020.0900000000838190, 845221.9000000000232831 1825059.1600000001490116, 845224.6310738313477486 1825079.2110685959924012, 845231.3199999999487773 1825128.3200000000651926, 845246.4599999999627471 1825113.4299999999348074, 845279.5800000000745058 1825103.6999999999534339, 845296.5299999999115244 1825112.8600000001024455, 845313.4000000000232831 1825130.0200000000186265, 845376.4200000000419095 1825136.5700000000651926, 845381.2399999999906868 1825274.7700000000186265, 845413.2899999999208376 1825273.0400000000372529, 845573.4099999999161810 1825281.4200000001583248, 845620.9899999999906868 1825336.8900000003632158, 845687.8272242128150538 1825383.5150588175747544, 845721.4000000000232831 1825383.8000000002793968, 845687.8513357406482100 1825383.5318788068834692, 845693.6400000000139698 1825387.5700000000651926, 845721.2889667560812086 1825396.1617011527996510, 845766.5299999999115244 1825410.2199999999720603, 845836.8300000000745058 1825384.8000000000465661, 845903.4599999999627471 1825437.4299999999348074, 845949.9200000000419095 1825506.9000000001396984, 845983.5299999999115244 1825556.2500000000000000, 845995.4399999999441206 1825568.3600000001024455, 846045.4799999999813735 1825570.7900000000372529, 846123.5299999999115244 1825575.4699999999720603, 846195.7600000000093132 1825558.0700000000651926, 846215.9699999999720603 1825537.2199999999720603, 846211.1099999999860302 1825519.1500000001396984, 846496.8699999999953434 1825469.5399999998044223, 846518.0300000000279397 1825453.7099999999627471, 846542.3900000000139698 1825414.8700000001117587, 846555.7199999999720603 1825377.9399999999441206, 846608.3399999999674037 1825313.3200000000651926, 846687.2899999999208376 1825212.8799999998882413, 846748.8300000000745058 1825157.3500000000931323, 846777.2199999999720603 1825115.5399999998044223, 846813.9500000000698492 1825035.7600000000093132, 846818.2099999999627471 1825005.7700000000186265, 846762.2300000000977889 1824995.2800000000279397, 846725.3199999999487773 1824979.9399999999441206, 846699.4700000000884756 1824958.7000000001862645, 846688.6600000000325963 1824935.5800000000745058, 846692.9703912005061284 1824891.5967367838602513, 846694.1500000000232831 1824879.5600000000558794, 846697.8000000000465661 1824803.5100000000093132, 846698.4490068613085896 1824791.5024640944320709, 846698.4490068611921743 1824791.5024640944320709, 846701.3699999999953434 1824737.4599999999627471, 846728.6324568932177499 1824667.7812779853120446, 846730.0999999999767169 1824491.5000000000000000, 846630.0666614775545895 1824490.6005993541330099, 846630.8153520846972242 1824404.1268342211842537, 846604.2399999999906868 1824388.2299999999813735, 846546.7500000000000000 1824320.6600000001490116, 846531.5441637829644606 1824307.5050767704378814, 846529.0999999999767169 1824589.9000000001396984, 846529.9000000000232831 1824489.8000000000465661, 846530.8000000000465661 1824389.6000000000931323, 846531.5381628699833527 1824307.4998852408025414, 846526.8800000000046566 1824303.4699999999720603, 846531.6099206856451929 1824299.5188215249218047, 846531.7000000000698492 1824289.5000000000000000, 846531.6133103400934488 1824299.5159899489954114, 846543.4766106829047203 1824289.6058836125303060, 846567.2099999999627471 1824269.7800000000279397, 846612.4100000000325963 1824252.1500000001396984, 846632.2175146056106314 1824238.1584849809296429, 846669.8300000000745058 1824211.5900000000838190, 846684.0108215067302808 1824190.7108756965026259, 846698.2199999999720603 1824169.7900000000372529, 846732.9552037363173440 1824162.7156733260490000, 846778.4500000000698492 1824153.4499999999534339, 846832.7800000000279397 1824122.8800000001210719, 846832.7405478489818051 1824091.8918528039939702, 846832.7405478490982205 1824091.8918528039939702, 846832.6500000000232831 1824020.7700000000186265, 846834.8013788460521027 1823962.1964441391173750, 846835.2600000000093132 1823949.7099999999627471, 846834.9184087043395266 1823948.4144572964869440, 846826.5300000000279397 1823916.6000000000931323, 846808.8978883343515918 1823891.4617192756850272, 846808.8978883342351764 1823891.4617192756850272, 846738.2708267109701410 1823790.7680000271648169, 846636.0000000000000000 1823789.9000000001396984, 846736.2000000000698492 1823790.6999999999534339, 846736.2227924335747957 1823787.8480967523064464, 846722.6800000000512227 1823768.5400000000372529, 846720.9799999999813735 1823732.4799999999813735, 846698.7676939633674920 1823690.2944471046794206, 846678.6199999999953434 1823652.0300000000279397, 846652.7099999999627471 1823637.7900000000372529, 846637.3552883139345795 1823639.1112343843560666, 846557.5300000000279397 1823645.9799999999813735, 846453.8000000000465661 1823601.0400000000372529, 846465.8800000000046566 1823593.1400000001303852, 846492.3375450056046247 1823588.4149966377299279, 846492.3375450057210401 1823588.4149966377299279, 846530.0500000000465661 1823581.6799999999348074, 846537.7877689857268706 1823577.8179056709632277, 846538.5000000000000000 1823488.6999999999534339, 846539.4000000000232831 1823388.6000000000931323, 846439.3000000000465661 1823387.6999999999534339, 846440.0999999999767169 1823287.6000000000931323, 846441.0000000000000000 1823187.5000000000000000, 846340.9000000000232831 1823186.6000000000931323, 846340.0000000000000000 1823286.8000000000465661, 846342.5999999999767169 1822986.4000000001396984, 846242.5000000000000000 1822985.6000000000931323, 846239.9000000000232831 1823285.9000000001396984, 846139.8000000000465661 1823285.0000000000000000, 846138.9000000000232831 1823385.1000000000931323, 846239.0999959603650495 1823386.0004492898005992, 846237.3000000000465661 1823586.1999999999534339, 846337.4000000000232831 1823587.1000000000931323, 846336.5999999999767169 1823687.1999999999534339, 846436.7000000000698492 1823688.0000000000000000, 846435.8000000000465661 1823788.1000000000931323, 846535.9000000000232831 1823789.0000000000000000, 846535.0999999999767169 1823889.1000000000931323, 846534.2000000000698492 1823989.1999999999534339, 846334.0000000000000000 1823987.5000000000000000, 846233.9000000000232831 1823986.6000000000931323, 846232.2000000000698492 1824186.9000000001396984, 846332.2666689730249345 1824187.6997336181811988, 846331.4000000000232831 1824287.8000000000465661, 846231.3000000000465661 1824287.0000000000000000, 846230.5000000000000000 1824387.1000000000931323, 846228.8000000000465661 1824587.3000000000465661, 846128.5999999999767169 1824586.4000000001396984, 846129.5000000000000000 1824486.3000000000465661, 846130.4000000000232831 1824386.1999999999534339, 846030.3000000000465661 1824385.4000000001396984, 845930.2000000000698492 1824384.5000000000000000, 845929.3000000000465661 1824484.6000000000931323, 845829.2000000000698492 1824483.6999999999534339, 845830.9000000000232831 1824283.5000000000000000, 845831.8000000000465661 1824183.4000000001396984, 845731.7000000000698492 1824182.6000000000931323, 845730.8000000000465661 1824282.6999999999534339, 845729.9000000000232831 1824382.8000000000465661, 845629.8000000000465661 1824381.9000000001396984, 845630.7000000000698492 1824281.8000000000465661, 845530.5999999999767169 1824281.0000000000000000, 845531.4000000000232831 1824180.8000000000465661, 845431.3000000000465661 1824180.0000000000000000, 845432.2000000000698492 1824079.9000000001396984, 845332.0999999999767169 1824079.0000000000000000, 845232.0000000000000000 1824078.1999999999534339, 845233.7000000000698492 1823878.0000000000000000, 845133.5999999999767169 1823877.1000000000931323, 845134.4000000000232831 1823777.0000000000000000, 845137.0000000000000000 1823476.6999999999534339, 844836.7002122720004991 1823474.0750018553808331, 844838.4000000000232831 1823273.9000000001396984, 844638.2000000000698492 1823272.1999999999534339, 844637.3000000000465661 1823372.3000000000465661, 844639.0999999999767169 1823172.1000000000931323, 844438.8000000000465661 1823170.3000000000465661, 844438.0000000000000000 1823270.4000000001396984, 844437.0999999999767169 1823370.6000000000931323, 844436.3005327637074515 1823470.6333379461430013, 844236.0999999999767169 1823468.9000000001396984, 844233.5000000000000000 1823769.3000000000465661, 844234.3000000000465661 1823669.1999999999534339, 844134.2000000000698492 1823668.3000000000465661, 844135.0999999999767169 1823568.1999999999534339, 844135.9000000000232831 1823468.1000000000931323, 844035.8000000000465661 1823467.1999999999534339, 844035.0000000000000000 1823567.3000000000465661, 843934.9000000000232831 1823566.5000000000000000, 843934.0000000000000000 1823666.6000000000931323, 844034.0999999999767169 1823667.4000000001396984, 844033.3000000000465661 1823767.6000000000931323, 844133.3500033930176869 1823768.3996004268992692, 844132.5000000000000000 1823868.5000000000000000, 844032.4000000000232831 1823867.6999999999534339, 843932.3000000000465661 1823866.8000000000465661, 843931.4640845044050366 1823959.7723790116142482, 843983.0800000000745058 1823934.2700000000186265, 844023.3499999999767169 1823907.5900000000838190, 844032.1073635076172650 1823904.3161411110777408, 844096.6700000000419095 1823880.1799999999348074, 844132.3660955451196060 1823885.2547949166037142, 844156.6700000000419095 1823888.7099999999627471, 844244.6600000000325963 1823901.4699999999720603, 844332.3722259016940370 1823911.2127340587321669, 844371.6900000000605360 1823915.5800000000745058, 844466.6600000000325963 1823931.4100000001490116, 844482.7800000000279397 1823919.5300000000279397, 844583.9899999999906868 1823909.3900000001303852, 844611.1500000000232831 1823893.6000000000931323, 844632.9883521241135895 1823880.0599439740180969, 844633.9000000000232831 1823772.6999999999534339, 844633.0999999999767169 1823872.8000000000465661, 844633.0349857393885031 1823880.0310305394232273, 844644.5319209550507367 1823872.9027845042292029, 844733.6479543613968417 1823817.6497105411253870, 844736.9699999999720603 1823815.5900000000838190, 844788.0000000000000000 1823819.0300000000279397, 844829.1300000000046566 1823809.3700000001117587, 844833.8326968360925093 1823807.8463083780370653, 844850.2099999999627471 1823802.5400000000372529, 844923.1300000000046566 1823822.1899999999441206, 844923.0300000000279397 1823833.1999999999534339, 844933.7011916440678760 1823834.0420193299651146, 844933.7011916440678760 1823834.0420193301979452, 844980.0600000000558794 1823837.6999999999534339, 844996.9799999999813735 1823849.8600000001024455, 845016.9100000000325963 1823860.0400000000372529, 844941.4300000000512227 1823906.4399999999441206, 844932.7761059190379456 1823944.7908861120231450), (846531.7000000000698492 1824289.5000000000000000, 846431.5666620586998761 1824288.7005322319455445, 846432.4333310270449147 1824188.6002663818653673, 846532.5000000000000000 1824189.4000000001396984, 846531.7000000000698492 1824289.5000000000000000), (845530.5999999999767169 1824281.0000000000000000, 845528.0000000000000000 1824581.3000000000465661, 845529.7000000000698492 1824381.1000000000931323, 845530.5999999999767169 1824281.0000000000000000), (845030.0000000000000000 1824276.6999999999534339, 845029.2000000000698492 1824376.8000000000465661, 845028.3000000000465661 1824476.9000000001396984, 845030.0000000000000000 1824276.6999999999534339), (845028.3000000000465661 1824476.9000000001396984, 844828.1399970820639282 1824475.2003396356012672, 844828.1399972536601126 1824475.2003196582663804, 844928.2000000000698492 1824476.0000000000000000, 845028.3000000000465661 1824476.9000000001396984), (845424.4999999998835847 1824980.8000000000465661, 845724.8000000000465661 1824983.4000000001396984, 845624.7000000000698492 1824982.6000000000931323, 845524.5999999999767169 1824981.6999999999534339, 845424.4999999998835847 1824980.8000000000465661), (845424.4999999998835847 1824980.8000000000465661, 845425.3000000000465661 1824880.7000000001862645, 845426.2000000000698492 1824780.6000000000931323, 845424.4999999998835847 1824980.8000000000465661), (845425.3000000000465661 1824880.7000000001862645, 845325.1999999999534339 1824879.9000000001396984, 845225.0999999998603016 1824879.0000000002328306, 845425.3000000000465661 1824880.7000000001862645), (845924.9994006460765377 1824985.1666614776477218, 845924.9994342236313969 1824985.1666617682203650, 845923.3000000000465661 1825185.4000000001396984, 845924.0999999998603016 1825085.1999999999534339, 845924.9994006460765377 1824985.1666614776477218), (845923.3000000000465661 1825185.4000000001396984, 846023.4000000000232831 1825186.1999999997206032, 846123.4999999979045242 1825187.1000000000931323, 845923.3000000000465661 1825185.4000000001396984), (846023.4000000000232831 1825186.1999999997206032, 846025.0997169703477994 1824986.0333308828994632, 846025.0997336179716513 1824986.0333310270216316, 846024.3000000000465661 1825086.1000000003259629, 846023.4000000000232831 1825186.1999999997206032), (846024.3000000000465661 1825086.1000000003259629, 846224.4999999998835847 1825087.8000000002793968, 846124.4000000000232831 1825087.0000000002328306, 846024.3000000000465661 1825086.1000000003259629), (845824.0000000000000000 1825084.3999999999068677, 845823.1999999999534339 1825184.5000000000000000, 845822.3000000000465661 1825284.6000000000931323, 845824.0000000000000000 1825084.3999999999068677), (846223.5999999999767169 1825187.9000000001396984, 846323.7000000000698492 1825188.8000000000465661, 846322.0000000000000000 1825388.9999999997671694, 846221.9000000001396984 1825388.1000000003259629, 846222.7000000000698492 1825288.0000000000000000, 846223.5999999999767169 1825187.9000000001396984)), ((844640.8000000000465661 1822971.8000000000465661, 844639.9000000000232831 1823072.0000000000000000, 844539.8000000000465661 1823071.1000000000931323, 844539.0000000000000000 1823171.1999999999534339, 844639.0999999999767169 1823172.1000000000931323, 844638.2000000000698492 1823272.1999999999534339, 844738.3000000000465661 1823273.0000000000000000, 844838.4000000000232831 1823273.9000000001396984, 844839.3000000000465661 1823173.8000000000465661, 844841.0000000000000000 1822973.6000000000931323, 844740.9000000000232831 1822972.6999999999534339, 844640.8000000000465661 1822971.8000000000465661), (844740.9000000000232831 1822972.6999999999534339, 844739.2000000000698492 1823172.9000000001396984, 844740.0000000000000000 1823072.8000000000465661, 844740.9000000000232831 1822972.6999999999534339)), ((852149.7000000000698492 1822936.1000000000931323, 852148.8000000000465661 1823036.1999999999534339, 852048.7000000000698492 1823035.4000000001396984, 851948.5999999999767169 1823034.5000000000000000, 851947.7000000000698492 1823134.6000000000931323, 851847.5999999999767169 1823133.6999999999534339, 851848.5000000000000000 1823033.6000000000931323, 851748.4000000000232831 1823032.8000000000465661, 851747.5000000000000000 1823132.9000000001396984, 851647.4000000000232831 1823132.0000000000000000, 851645.7000000000698492 1823332.1999999999534339, 851644.8000000000465661 1823432.4000000001396984, 851644.0000000000000000 1823532.5000000000000000, 851744.0999999999767169 1823533.3000000000465661, 851742.4000000000232831 1823733.5000000000000000, 851942.5999999999767169 1823735.1999999999534339, 852142.8000000000465661 1823737.0000000000000000, 852242.9000000000232831 1823737.8000000000465661, 852242.0000000000000000 1823837.9000000001396984, 852342.0999999999767169 1823838.8000000000465661, 852343.0000000000000000 1823738.6999999999534339, 852343.9000000000232831 1823638.6000000000931323, 852243.8000000000465661 1823637.6999999999534339, 852244.5999999999767169 1823537.6000000000931323, 852344.7000000000698492 1823538.5000000000000000, 852345.5999999999767169 1823438.4000000001396984, 852346.4000000000232831 1823338.3000000000465661, 852446.5000000000000000 1823339.1000000000931323, 852447.4000000000232831 1823239.0000000000000000, 852347.3000000000465661 1823238.1000000000931323, 852348.2000000000698492 1823138.0000000000000000, 852448.3000000000465661 1823138.9000000001396984, 852449.0999999999767169 1823038.8000000000465661, 852349.0000000000000000 1823037.9000000001396984, 852349.9000000000232831 1822937.8000000000465661, 852249.8000000000465661 1822937.0000000000000000, 852149.7000000000698492 1822936.1000000000931323), (851747.5000000000000000 1823132.9000000001396984, 851746.7000000000698492 1823233.0000000000000000, 851745.8000000000465661 1823333.1000000000931323, 851747.5000000000000000 1823132.9000000001396984), (851844.2000000000698492 1823534.1999999999534339, 851845.0000000000000000 1823434.1000000000931323, 851845.9000000000232831 1823334.0000000000000000, 851844.2000000000698492 1823534.1999999999534339), (851944.3000000009778887 1823534.9999998814892024, 851944.3000000000465661 1823535.0000000000000000, 851944.2999999989988282 1823535.0000001164153218, 851944.3000000009778887 1823534.9999998814892024), (852045.3000000000465661 1823435.8000000000465661, 852145.4000000000232831 1823436.6000000000931323, 852245.5000000000000000 1823437.5000000000000000, 852045.3000000000465661 1823435.8000000000465661), (852246.3000000000465661 1823337.4000000001396984, 852248.0000000000000000 1823137.1999999999534339, 852247.2000000000698492 1823237.3000000000465661, 852246.3000000000465661 1823337.4000000001396984), (851943.4499961829278618 1823635.1004495162051171, 852043.5000000000000000 1823636.0000000000000000, 852143.5999999999767169 1823636.9000000001396984, 851943.4499961829278618 1823635.1004495162051171)), ((843138.3000000000465661 1823059.1000000000931323, 843139.2000000000698492 1822959.0000000000000000, 842939.0000000000000000 1822957.3000000000465661, 842738.7000000000698492 1822955.5000000000000000, 842737.8495794840855524 1823055.6995466686785221, 842637.8000000000465661 1823054.8000000000465661, 842537.7000000000698492 1823053.9000000001396984, 842437.5999999999767169 1823053.1000000000931323, 842329.6540499393595383 1823052.1657141472678632, 842379.2800000000279397 1823107.6000000000931323, 842436.4454971232917160 1823181.5063755111768842, 842452.5600000000558794 1823202.3400000000838190, 842472.4599999999627471 1823216.5200000000186265, 842472.1419695207150653 1823253.5901554452721030, 842471.7299999999813735 1823301.6100000001024455, 842485.1900000000605360 1823366.8000000000465661, 842509.9599999999627471 1823397.0500000000465661, 842558.7000000000698492 1823433.5100000000093132, 842678.2800000000279397 1823498.6100000001024455, 842697.1900000000605360 1823511.7800000000279397, 842714.1700000000419095 1823516.9299999999348074, 842747.2600000000093132 1823511.2099999999627471, 842881.0400000000372529 1823438.2700000000186265, 842931.3599999999860302 1823407.6699999999254942, 842972.6400000000139698 1823497.1200000001117587, 842995.7199999999720603 1823490.3100000000558794, 843046.9899999999906868 1823465.7199999999720603, 843133.3900000000139698 1823431.4199999999254942, 843135.0583509306889027 1823434.9636139289941639, 843158.9500000000698492 1823485.7099999999627471, 843179.6800000000512227 1823520.9199999999254942, 843195.3900000000139698 1823557.1000000000931323, 843197.7027817158959806 1823560.1727522832807153, 843233.7201772944536060 1823608.0253160321153700, 843253.7900000000372529 1823634.6899999999441206, 843290.0382458720123395 1823661.0534525145776570, 843344.3300000000745058 1823700.5400000000372529, 843432.4742545809131116 1823777.2083722923416644, 843434.3000000000465661 1823562.1999999999534339, 843534.5000000000000000 1823563.0000000000000000, 843535.3000000000465661 1823462.9000000001396984, 843536.2000000000698492 1823362.8000000000465661, 843436.0999999999767169 1823362.0000000000000000, 843336.0000000000000000 1823361.1000000000931323, 843335.0999999999767169 1823461.1999999999534339, 843334.2000000000698492 1823561.3000000000465661, 843234.0999999999767169 1823560.5000000000000000, 843235.8000000000465661 1823360.3000000000465661, 843237.5999999999767169 1823160.0000000000000000, 843137.5000000000000000 1823159.1999999999534339, 843138.3000000000465661 1823059.1000000000931323), (843137.5000000000000000 1823159.1999999999534339, 843135.7000000000698492 1823359.4000000001396984, 843136.5999999999767169 1823259.3000000000465661, 843137.5000000000000000 1823159.1999999999534339), (842787.0500000007450581 1823156.2000000001862645, 842837.0999999999767169 1823156.6000000000931323, 842937.2000000000698492 1823157.5000000000000000, 842787.0500000007450581 1823156.2000000001862645), (842635.2000000000698492 1823355.1000000000931323, 842835.4000000000232831 1823356.8000000000465661, 842735.3000000000465661 1823356.0000000000000000, 842635.2000000000698492 1823355.1000000000931323)), ((848944.5000000000000000 1823108.9000000001396984, 848942.8000000000465661 1823309.1000000000931323, 848941.0999999999767169 1823509.3000000000465661, 848940.2000000000698492 1823609.4000000001396984, 848939.4000000000232831 1823709.5000000000000000, 849039.5000000000000000 1823710.4000000001396984, 848839.3000000000465661 1823708.6000000000931323, 848739.2000000000698492 1823707.8000000000465661, 848438.8000000000465661 1823705.1999999999534339, 848439.7000000000698492 1823605.1000000000931323, 848339.5999999999767169 1823604.1999999999534339, 848239.5000000000000000 1823603.4000000001396984, 848238.6004495160887018 1823703.4500038172118366, 848138.5000000000000000 1823702.6000000000931323, 848038.4000000000232831 1823701.8000000000465661, 848037.5000000000000000 1823801.9000000001396984, 848137.6500033895717934 1823802.6996008253190666, 848136.8000000000465661 1823902.8000000000465661, 848236.9000000000232831 1823903.6999999999534339, 848237.8000000000465661 1823803.6000000000931323, 848437.9998201937414706 1823805.3199984552338719, 848437.0999999999767169 1823905.4000000001396984, 848537.2000000000698492 1823906.3000000000465661, 848637.3000000000465661 1823907.1000000000931323, 848638.1996403874363750 1823807.0399969106074423, 848738.3000000000465661 1823807.9000000001396984, 848737.4000000000232831 1823908.0000000000000000, 848736.8307372784474865 1823979.2289980300702155, 848757.1700000000419095 1823987.2099999999627471, 848796.1300000000046566 1823997.5500000000465661, 848798.2457518703304231 1824008.6234654255677015, 848936.8000000000465661 1824009.8000000000465661, 849036.9000000000232831 1824010.6999999999534339, 849036.0000000000000000 1824110.8000000000465661, 849136.0999999999767169 1824111.6000000000931323, 849135.3000000000465661 1824211.6999999999534339, 849227.4070192123763263 1824212.5281350379809737, 849235.4582774870796129 1824206.1182483835145831, 849236.3000000000465661 1824112.5000000000000000, 849237.0999999999767169 1824012.4000000001396984, 849337.2000000000698492 1824013.1999999999534339, 849338.0999999999767169 1823913.1000000000931323, 849338.9000000000232831 1823813.0000000000000000, 849238.8000000000465661 1823812.1999999999534339, 849239.7000000000698492 1823712.1000000000931323, 849240.5000000000000000 1823612.0000000000000000, 849241.4000000000232831 1823511.9000000001396984, 849242.3000000000465661 1823411.6999999999534339, 849243.0999999999767169 1823311.6000000000931323, 849143.0499966071220115 1823310.8003995732869953, 849143.9000000000232831 1823210.6999999999534339, 849043.8000000000465661 1823209.8000000000465661, 849044.5999999999767169 1823109.6999999999534339, 848944.5000000000000000 1823108.9000000001396984), (849039.5000000000000000 1823710.4000000001396984, 849040.3000000000465661 1823610.1999999999534339, 849140.4000000000232831 1823611.1000000000931323, 849139.5999999999767169 1823711.1999999999534339, 849039.5000000000000000 1823710.4000000001396984), (848737.4000000000232831 1823908.0000000000000000, 848837.5000000000000000 1823908.8000000000465661, 848937.5999999999767169 1823909.6999999999534339, 848737.4000000000232831 1823908.0000000000000000), (849137.0000000000000000 1824011.5000000000000000, 849138.7000000000698492 1823811.3000000000465661, 849137.9000000000232831 1823911.4000000001396984, 849137.0000000000000000 1824011.5000000000000000), (848488.0500002900371328 1823805.7500000025611371, 848571.4666664082324132 1823806.4666666644625366, 848538.0999999999767169 1823806.1999999999534339, 848488.0500002900371328 1823805.7500000025611371), (849038.5999999999767169 1823810.5000000000000000, 848938.5000000000000000 1823809.6000000000931323, 848838.4000000000232831 1823808.6999999999534339, 849038.5999999999767169 1823810.5000000000000000)), ((848367.0000000000000000 1820400.8000000000465661, 848366.2000000000698492 1820500.9000000001396984, 848566.4000000000232831 1820502.6000000000931323, 848567.3000000000465661 1820402.5000000000000000, 848367.0000000000000000 1820400.8000000000465661)), ((842338.3000000000465661 1822952.1000000000931323, 842337.5000000000000000 1823052.1999999999534339, 842437.5999999999767169 1823053.1000000000931323, 842438.4000000000232831 1822953.0000000000000000, 842338.3000000000465661 1822952.1000000000931323)), ((843239.3000000000465661 1822959.8000000000465661, 843238.4000000000232831 1823059.9000000001396984, 843338.5000000000000000 1823060.8000000000465661, 843339.4000000000232831 1822960.6999999999534339, 843239.3000000000465661 1822959.8000000000465661)), ((845041.2000000000698492 1822975.3000000000465661, 845040.3000000000465661 1823075.4000000001396984, 845140.5000000000000000 1823076.1999999999534339, 845141.3000000000465661 1822976.1000000000931323, 845041.2000000000698492 1822975.3000000000465661)), ((848645.0999999999767169 1823006.1999999999534339, 848644.2000000000698492 1823106.3000000000465661, 848744.3000000000465661 1823107.1000000000931323, 848743.4000000000232831 1823207.1999999999534339, 848843.5999999999767169 1823208.1000000000931323, 848845.3000000000465661 1823007.9000000001396984, 848745.2000000000698492 1823007.0000000000000000, 848645.0999999999767169 1823006.1999999999534339)), ((849045.5000000000000000 1823009.6000000000931323, 849044.5999999999767169 1823109.6999999999534339, 849144.7000000000698492 1823110.6000000000931323, 849143.9000000000232831 1823210.6999999999534339, 849244.0000000000000000 1823211.5000000000000000, 849244.8000000000465661 1823111.4000000001396984, 849245.7000000000698492 1823011.3000000000465661, 849145.5999999999767169 1823010.5000000000000000, 849045.5000000000000000 1823009.6000000000931323)), ((845241.4000000000232831 1822977.0000000000000000, 845240.5999999999767169 1823077.1000000000931323, 845540.9000000000232831 1823079.6999999999534339, 845541.7000000000698492 1822979.6000000000931323, 845241.4000000000232831 1822977.0000000000000000)), ((840536.4000000000232831 1822936.6999999999534339, 840535.5000000000000000 1823036.8000000000465661, 840135.0999999999767169 1823033.3000000000465661, 840133.4000000000232831 1823233.6000000000931323, 840433.7000000000698492 1823236.1000000000931323, 840434.5999999999767169 1823136.0000000000000000, 840634.8000000000465661 1823137.6999999999534339, 840636.5000000000000000 1822937.5000000000000000, 840536.4000000000232831 1822936.6999999999534339)), ((843237.5999999999767169 1823160.0000000000000000, 843236.7000000000698492 1823260.1999999999534339, 843336.8000000000465661 1823261.0000000000000000, 843337.7000000000698492 1823160.9000000001396984, 843237.5999999999767169 1823160.0000000000000000)), ((840130.0000000000000000 1823634.0000000000000000, 840129.0999999999767169 1823734.1000000000931323, 840128.2000000000698492 1823834.1999999999534339, 840127.4000000000232831 1823934.3000000000465661, 840227.5000000000000000 1823935.1999999999534339, 840327.5999999999767169 1823936.0000000000000000, 840329.3000000000465661 1823735.8000000000465661, 840229.2004490676335990 1823734.9500038132537156, 840230.0999999999767169 1823634.8000000000465661, 840130.0000000000000000 1823634.0000000000000000)), ((847869.2781056958483532 1823700.3483764692209661, 847875.5000000000000000 1823712.3500000000931323, 847885.5300000000279397 1823709.4299999999348074, 847894.9714689536485821 1823700.5537180337123573, 847869.2781056958483532 1823700.3483764692209661)), ((846738.2359706806018949 1823790.7183054306078702, 846736.2241999210091308 1823787.8501034213695675, 846736.2000000000698492 1823790.6999999999534339, 846738.2359706806018949 1823790.7183054306078702)), ((845534.0000000000000000 1823880.5000000000000000, 845634.0999999999767169 1823881.4000000001396984, 845635.0000000000000000 1823781.3000000000465661, 845534.9000000000232831 1823780.4000000001396984, 845534.0000000000000000 1823880.5000000000000000)), ((849439.0000000000000000 1823813.9000000001396984, 849438.2000000000698492 1823914.0000000000000000, 849437.3000000000465661 1824014.1000000000931323, 849537.4000000000232831 1824015.0000000000000000, 849538.3000000000465661 1823914.9000000001396984, 849539.0999999999767169 1823814.8000000000465661, 849439.0000000000000000 1823813.9000000001396984)), ((852141.9000000000232831 1823837.1000000000931323, 852141.0999999999767169 1823937.1999999999534339, 852140.2000000000698492 1824037.3000000000465661, 852240.3000000000465661 1824038.1000000000931323, 852241.2000000000698492 1823938.0000000000000000, 852242.0000000000000000 1823837.9000000001396984, 852141.9000000000232831 1823837.1000000000931323)), ((840627.9000000000232831 1823938.6000000000931323, 840628.8000000000465661 1823838.5000000000000000, 840528.7000000000698492 1823837.6000000000931323, 840527.8000000000465661 1823937.6999999999534339, 840427.7000000000698492 1823936.9000000001396984, 840426.0000000000000000 1824137.1000000000931323, 840325.9000000000232831 1824136.1999999999534339, 840325.0000000000000000 1824236.3000000000465661, 840525.2000000000698492 1824238.1000000000931323, 840526.0999999999767169 1824138.0000000000000000, 840626.2000000000698492 1824138.8000000000465661, 840627.0999999999767169 1824038.6999999999534339, 840627.9000000000232831 1823938.6000000000931323)), ((845433.9000000000232831 1823879.6999999999534339, 845433.0000000000000000 1823979.8000000000465661, 845533.2000000000698492 1823980.6000000000931323, 845534.0000000000000000 1823880.5000000000000000, 845433.9000000000232831 1823879.6999999999534339)), ((852442.2000000000698492 1823839.6000000000931323, 852441.4000000000232831 1823939.8000000000465661, 852341.3000000000465661 1823938.9000000001396984, 852340.4000000000232831 1824039.0000000000000000, 852540.5999999999767169 1824040.6999999999534339, 852542.4000000000232831 1823840.5000000000000000, 852442.2000000000698492 1823839.6000000000931323)), ((847644.0000000000000000 1822997.6000000000931323, 847643.0999999999767169 1823097.6999999999534339, 847743.2000000000698492 1823098.6000000000931323, 847742.4000000000232831 1823198.6999999999534339, 847642.3000000000465661 1823197.8000000000465661, 847641.4000000000232831 1823297.9000000001396984, 847541.3000000000465661 1823297.1000000000931323, 847543.0000000000000000 1823096.8000000000465661, 847442.9000000000232831 1823096.0000000000000000, 847443.8000000000465661 1822995.9000000001396984, 847243.5999999999767169 1822994.1999999999534339, 847242.7000000000698492 1823094.3000000000465661, 847342.8000000000465661 1823095.1000000000931323, 847341.9000000000232831 1823195.1999999999534339, 847141.7000000000698492 1823193.5000000000000000, 847140.8500036050099880 1823293.5995754553005099, 846940.7000000000698492 1823291.9000000001396984, 846939.8000000000465661 1823392.0000000000000000, 846970.2753116589738056 1823392.2587813676800579, 846981.2199999999720603 1823389.3200000000651926, 847004.9253986178664491 1823392.5530128753744066, 847140.0000000000000000 1823393.6999999999534339, 847139.4488143305061385 1823462.6671069087460637, 847145.7199999999720603 1823470.8200000000651926, 847161.3523601859342307 1823493.9881069546099752, 847339.3672460824018344 1823495.4997218698263168, 847339.3672459408408031 1823495.4997382292058319, 847239.3000000000465661 1823494.6999999999534339, 847238.9143226962769404 1823537.5958867857698351, 847253.3200000000651926 1823531.8100000000558794, 847271.3599999999860302 1823528.9599999999627471, 847292.3499999999767169 1823533.1500000001396984, 847302.5400000000372529 1823512.2099999999627471, 847310.6600000000325963 1823500.2700000000186265, 847332.6400000000139698 1823504.4599999999627471, 847339.2866948893060908 1823504.8064827919006348, 847355.6600000000325963 1823505.6600000001490116, 847435.1600000000325963 1823458.2800000000279397, 847451.1400000000139698 1823462.4299999999348074, 847463.9699999999720603 1823484.5600000000558794, 847449.5800000000745058 1823528.4899999999906868, 847435.2600000000093132 1823563.4100000001490116, 847426.0999999999767169 1823580.3500000000931323, 847434.9300000000512227 1823602.4499999999534339, 847438.5469397746492177 1823602.7486218325793743, 847438.5999999999767169 1823596.5000000000000000, 847939.2000000000698492 1823600.8000000000465661, 848039.3000000000465661 1823601.6999999999534339, 848139.4000000000232831 1823602.5000000000000000, 848140.1996004268294200 1823502.4499966071452945, 848240.3000000000465661 1823503.3000000000465661, 848241.2000000000698492 1823403.1999999999534339, 848341.3000000000465661 1823404.0000000000000000, 848342.2000000000698492 1823303.9000000001396984, 848242.0999999999767169 1823303.1000000000931323, 848242.9000000000232831 1823203.0000000000000000, 848142.8000000000465661 1823202.1000000000931323, 848143.7000000000698492 1823102.0000000000000000, 848043.5999999999767169 1823101.1000000000931323, 847943.4004533312981948 1823100.2495794841088355, 847944.3000000000465661 1823000.1999999999534339, 847844.2000000000698492 1822999.3000000000465661, 847744.0999999999767169 1822998.4000000001396984, 847644.0000000000000000 1822997.6000000000931323), (847840.8000000000465661 1823399.6999999999534339, 848041.0000000000000000 1823401.4000000001396984, 847940.9000000000232831 1823400.6000000000931323, 847740.7000000000698492 1823398.9000000001396984, 847840.8000000000465661 1823399.6999999999534339), (847340.2000000000698492 1823395.4000000001396984, 847341.0999999999767169 1823295.3000000000465661, 847339.7947843535803258 1823446.1026077666319907, 847340.2000000000698492 1823395.4000000001396984)), ((840534.7000000000698492 1823136.9000000001396984, 840533.8000000000465661 1823237.0000000000000000, 840533.0000000000000000 1823337.1000000000931323, 840633.0999999999767169 1823338.0000000000000000, 840633.9000000000232831 1823237.9000000001396984, 840634.8000000000465661 1823137.6999999999534339, 840534.7000000000698492 1823136.9000000001396984)), ((848343.0000000000000000 1823203.8000000000465661, 848342.2000000000698492 1823303.9000000001396984, 848442.3000000000465661 1823304.8000000000465661, 848441.4000000000232831 1823404.9000000001396984, 848440.5000000000000000 1823505.0000000000000000, 848439.7000000000698492 1823605.1000000000931323, 848539.8000000000465661 1823606.0000000000000000, 848639.9000000000232831 1823606.8000000000465661, 848740.0000000000000000 1823607.6999999999534339, 848940.2000000000698492 1823609.4000000001396984, 848941.9000000000232831 1823409.1999999999534339, 848942.8000000000465661 1823309.1000000000931323, 848842.7000000000698492 1823308.1999999999534339, 848742.5999999999767169 1823307.3000000000465661, 848741.7000000000698492 1823407.5000000000000000, 848641.5999999999767169 1823406.6000000000931323, 848642.5000000000000000 1823306.5000000000000000, 848542.4000000000232831 1823305.6000000000931323, 848543.2000000000698492 1823205.5000000000000000, 848443.0999999999767169 1823204.6999999999534339, 848343.0000000000000000 1823203.8000000000465661)), ((845238.8000000000465661 1823277.3000000000465661, 845237.0999999999767169 1823477.5000000000000000, 845337.2000000000698492 1823478.4000000001396984, 845336.4000000000232831 1823578.5000000000000000, 845236.3000000000465661 1823577.6000000000931323, 845235.4000000000232831 1823677.6999999999534339, 845135.3000000000465661 1823676.9000000001396984, 845134.4000000000232831 1823777.0000000000000000, 845234.5999999999767169 1823777.8000000000465661, 845334.7000000000698492 1823778.6999999999534339, 845335.5000000000000000 1823678.6000000000931323, 845635.8000000000465661 1823681.1999999999534339, 845635.0000000000000000 1823781.3000000000465661, 845735.0999999999767169 1823782.1000000000931323, 845737.7000000000698492 1823481.8000000000465661, 845537.4000000000232831 1823480.1000000000931323, 845539.2000000000698492 1823279.9000000001396984, 845338.9000000000232831 1823278.1999999999534339, 845238.8000000000465661 1823277.3000000000465661)), ((847005.1010217635193840 1823392.5769648831337690, 847028.2199999999720603 1823395.7299999999813735, 847088.0200000000186265 1823427.2800000000279397, 847127.8900000000139698 1823447.6400000001303852, 847139.4147413723403588 1823462.6228101521264762, 847140.0000000000000000 1823393.6999999999534339, 847005.1010217635193840 1823392.5769648831337690)), ((846839.2453886438161135 1823441.7628852878697217, 846860.8100000000558794 1823421.3200000000651926, 846883.9100000000325963 1823412.5100000000093132, 846908.9699999999720603 1823408.7199999999720603, 846970.1732329026563093 1823392.2861907500773668, 846839.7000000000698492 1823391.1999999999534339, 846739.5999999999767169 1823390.3000000000465661, 846738.9457818951923400 1823463.0635914430022240, 846748.3300000000745058 1823461.4100000001490116, 846784.3000000000465661 1823470.7299999999813735, 846832.5500000000465661 1823448.1100000001024455, 846839.2453886438161135 1823441.7628852878697217)), ((846537.7932778957765549 1823577.8151560502592474, 846632.6099999999860302 1823530.4899999999906868, 846638.3011996189597994 1823526.8873976771719754, 846663.8100000000558794 1823510.7399999999906868, 846680.9333718657726422 1823489.8806197270750999, 846638.6499961829977110 1823489.5004495161119848, 846639.5000000000000000 1823389.4000000001396984, 846539.4000000000232831 1823388.6000000000931323, 846537.7932778957765549 1823577.8151560502592474)), ((852345.5999999999767169 1823438.4000000001396984, 852343.9000000000232831 1823638.6000000000931323, 852342.0999999999767169 1823838.8000000000465661, 852442.2000000000698492 1823839.6000000000931323, 852444.0000000000000000 1823639.4000000001396984, 852445.7000000000698492 1823439.1999999999534339, 852345.5999999999767169 1823438.4000000001396984)), ((840331.0000000000000000 1823535.6000000000931323, 840330.2000000000698492 1823635.6999999999534339, 840430.2500038170255721 1823636.5995504839811474, 840429.4000000000232831 1823736.6999999999534339, 840329.3000000000465661 1823735.8000000000465661, 840328.5000000000000000 1823835.9000000001396984, 840428.5999999999767169 1823836.8000000000465661, 840528.7000000000698492 1823837.6000000000931323, 840529.5000000000000000 1823737.5000000000000000, 840531.2000000000698492 1823537.3000000000465661, 840431.0999999999767169 1823536.5000000000000000, 840331.0000000000000000 1823535.6000000000931323)), ((843460.0730511258589104 1823962.8622951649595052, 843444.5400000000372529 1824040.7800000000279397, 843519.4599999999627471 1824060.4499999999534339, 843528.0111173285404220 1824063.5803197363857180, 843528.0111173287732527 1824063.5803197363857180, 843620.2600000000093132 1824097.3500000000931323, 843667.4100000000325963 1824085.7399999999906868, 843767.7299999999813735 1824062.5700000000651926, 843780.8399999999674037 1824051.6699999999254942, 843825.2199999999720603 1824013.0100000000093132, 843877.5100000000093132 1823986.4299999999348074, 843917.2201316761784256 1823966.8100277709309012, 843731.2000000000698492 1823965.1999999999534339, 843730.4000000000232831 1824065.3000000000465661, 843530.2002663819584996 1824063.5666689730715007, 843531.0000000000000000 1823963.5000000000000000, 843460.0730511258589104 1823962.8622951649595052)), ((850638.5999999999767169 1824024.4000000001396984, 850637.7000000000698492 1824124.5000000000000000, 850838.0000000000000000 1824126.1999999999534339, 850838.8000000000465661 1824026.1000000000931323, 850638.5999999999767169 1824024.4000000001396984)), ((840225.8000000000465661 1824135.4000000001396984, 840325.9000000000232831 1824136.1999999999534339, 840326.7000000000698492 1824036.1000000000931323, 840226.5999999999767169 1824035.3000000000465661, 840225.8000000000465661 1824135.4000000001396984)), ((840125.7000000000698492 1824134.5000000000000000, 840124.8000000000465661 1824234.6000000000931323, 840224.9000000000232831 1824235.5000000000000000, 840225.8000000000465661 1824135.4000000001396984, 840125.7000000000698492 1824134.5000000000000000)), ((849436.1068061739206314 1824157.9318911028094590, 849493.6600000000325963 1824146.6999999999534339, 849536.2498576241778210 1824154.0436131369788200, 849536.5999999999767169 1824115.1000000000931323, 849436.5000000000000000 1824114.1999999999534339, 849436.1068061739206314 1824157.9318911028094590)), ((840525.2000000000698492 1824238.1000000000931323, 840524.4000000000232831 1824338.1999999999534339, 840624.5000000000000000 1824339.0000000000000000, 840625.3000000000465661 1824238.9000000001396984, 840525.2000000000698492 1824238.1000000000931323)), ((846747.9607268684776500 1824591.7584577207453549, 846760.2700000000186265 1824522.7199999999720603, 846774.3726710098562762 1824491.8757540725637227, 846730.0999999999767169 1824491.5000000000000000, 846729.3000000000465661 1824591.6000000000931323, 846728.6535641215741634 1824667.7273310977034271, 846739.2399999999906868 1824640.6699999999254942, 846747.9607268683612347 1824591.7584577207453549, 846747.9607268684776500 1824591.7584577207453549)), ((840776.0005421064561233 1824640.6855193595401943, 840779.5899999999674037 1824607.6200000001117587, 840807.0999999999767169 1824552.7900000000372529, 840806.3712267073569819 1824540.8504905498120934, 840722.9000000000232831 1824540.1000000000931323, 840722.0000000000000000 1824640.1999999997206032, 840721.1999999999534339 1824740.3000000000465661, 840720.3000000000465661 1824840.3999999999068677, 840777.3063839530805126 1824840.9125449107959867, 840785.6900000001769513 1824830.9299999997019768, 840786.8100000001722947 1824816.9199999999254942, 840778.1500000000232831 1824776.8000000000465661, 840794.4599999999627471 1824741.9000000001396984, 840794.1298595240805298 1824740.9557130229659379, 840771.9899999999906868 1824677.6300000001210719, 840776.0005421064561233 1824640.6855193595401943)), ((846774.3828207085607573 1824491.8535554548725486, 846781.7000000000698492 1824475.8500000000931323, 846742.8800000000046566 1824449.4899999999906868, 846730.5065471010748297 1824446.2829279752913862, 846730.0999999999767169 1824491.5000000000000000, 846774.3828207085607573 1824491.8535554548725486)), ((852337.0000000000000000 1824439.4000000001396984, 852336.0999999999767169 1824539.5000000000000000, 852436.2000000000698492 1824540.4000000001396984, 852437.0999999999767169 1824440.3000000000465661, 852337.0000000000000000 1824439.4000000001396984)), ((840420.8000000000465661 1824737.6999999999534339, 840420.0000000000000000 1824837.8000000002793968, 840620.1999999999534339 1824839.6000000000931323, 840621.0999999998603016 1824739.5000000000000000, 840420.8000000000465661 1824737.6999999999534339)), ((840418.1109029258368537 1825059.1317967977374792, 840498.3599999999860302 1825064.7299999999813735, 840518.2380844965809956 1825056.9086021005641669, 840518.2380844965809956 1825056.9086021010298282, 840555.6199999998789281 1825042.1999999997206032, 840618.2927486911648884 1825062.8509511181619018, 840618.4999999998835847 1825039.8000000002793968, 840618.3042305267881602 1825062.8547344340477139, 840630.4899999999906868 1825066.8700000001117587, 840706.5500000000465661 1824953.3900000001303852, 840733.0999999998603016 1824893.5500000002793968, 840777.2884344332851470 1824840.9339177750516683, 840620.1999999999534339 1824839.6000000000931323, 840619.3000000000465661 1824939.6999999999534339, 840319.0000000000000000 1824937.1000000000931323, 840318.1999999999534339 1825037.1999999999534339, 840317.3000000000465661 1825137.2999999998137355, 840349.7489700233563781 1825137.5917489812709391, 840359.7199999999720603 1825120.6100000001024455, 840367.2199999999720603 1825063.6099999998696148, 840400.3100000000558794 1825057.8900000001303852, 840418.1109029258368537 1825059.1317967977374792)), ((840285.5496141483308747 1825237.1534434701316059, 840321.1199999999953434 1825186.3500000000931323, 840349.7292272578924894 1825137.6253730582538992, 840217.1999999999534339 1825136.5000000000000000, 840216.3000000000465661 1825236.6000000000931323, 840164.7065963832428679 1825236.1361232441850007, 840198.2300000000977889 1825273.4000000001396984, 840216.0324496603570879 1825270.0772362546995282, 840244.3599999999860302 1825264.7900000000372529, 840276.5200000000186265 1825250.0500000000465661, 840285.5496141483308747 1825237.1534434701316059))) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-838.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-838.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-838.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-838.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,23 @@ + + + + +Union of two valid polygons resulting in an invalid geometry in JTS 1.15. +See https://trac.osgeo.org/geos/ticket/838. +Failure is due to very close vertices leading to noding robustness failure. +Fixed by improved noding validation detection, which allows +snapping heuristic to be activated. + + +00000000060000000200000000030000000100000005412CD75B00000000413D8F0966666667412CD75933333333413D8F6D80000000412CD82166666667413D8F6E4CCCCCCD412CD82500000000413D8EA61999999A412CD75B00000000413D8F096666666700000000030000000100000005412CD82500000001413D8EA61999999A412CD82333333334413D8F0A33333333412CD8EB66666666413D8F0B19999999412CD8ED33333333413D8EA700000001412CD82500000001413D8EA61999999A + + +00000000030000000100000007412CD9D4D50CE8F7413D8EA7FBC39C12412CD8ED33333333413D8EA700000000412CD8EB66666667413D8F0B1999999A412CD82333333333413D8F0A33333333412CD82166666667413D8F6E4CCCCCCD412CD9B1CCCCCCCD413D8F701999999A412CD9D4D50CE8F7413D8EA7FBC39C12 + + + +0103000000010000000A000000000000005BD72C4167666666098F3D413333333359D72C41000000806D8F3D416766666621D82C41CDCCCC4C6E8F3D41CDCCCCCCB1D92C419A999919708F3D41F7E80CD5D4D92C41129CC3FBA78E3D4133333333EDD82C4100000000A78E3D410100000025D82C419A999919A68E3D413333333323D82C41333333330A8F3D410000000025D82C419A999919A68E3D41000000005BD72C4167666666098F3D41 + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-990.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-990.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-990.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-990.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,19 @@ + + + + +Difference of two 3D geometries + + +LINESTRING(0 0,0 10,10 10,10 0,0 0) + + +GEOMETRYCOLLECTION Z (GEOMETRYCOLLECTION Z (MULTILINESTRING Z ((0 0 10,10 0 20),(10 0 20,10 10 30)),LINESTRING Z (0 10 20,10 10 30)),LINESTRING Z (0 0 10,0 10 20))'::geometry + + + +LINESTRING EMPTY + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/issue/issue-geos-994.xml geos-3.8.0/tests/xmltester/tests/issue/issue-geos-994.xml --- geos-3.7.1/tests/xmltester/tests/issue/issue-geos-994.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/issue/issue-geos-994.xml 2019-10-08 16:21:31.000000000 +0000 @@ -0,0 +1,171 @@ + + + + +Unary union test from QGIS test suite + + +GEOMETRYCOLLECTION (MULTIPOLYGON (((1756184.5450235498137772 5080652.1657676175236702, 1756184.5450235498137772 + 5080614.4680011207237840, 1756123.0812665277626365 5080614.4680011207237840, + 1756123.0812665277626365 5080430.0767300482839346, 1756061.6175095040816814 5080430.0767300482839346, + 1756061.6175095040816814 5080491.5404870714992285, 1756000.1537524810992181 5080491.5404870714992285, + 1756000.1537524810992181 5080653.7726632226258516, 1756184.5450235498137772 5080652.1657676175236702))), + MULTIPOLYGON (((1756000.1537524810992181 5080491.5404870714992285, + 1756061.6175095040816814 5080491.5404870714992285, 1756061.6175095040816814 5080430.0767300482839346, + 1756000.1537524810992181 5080430.0767300482839346, 1756000.1537524810992181 5080491.5404870714992285))), + MULTIPOLYGON (((1756184.5450235498137772 5080307.1492160055786371, + 1756246.0087805732619017 5080307.1492160055786371, 1756246.0087805732619017 5080245.6854589805006981, + 1756184.5450235498137772 5080245.6854589805006981, 1756184.5450235498137772 5080307.1492160055786371))), + MULTIPOLYGON (((1756491.8638086654245853 5080061.2941879099234939, + 1756614.7913227111566812 5080061.2941879099234939, 1756614.7913227111566812 5079938.3666738653555512, + 1756491.8638086654245853 5079938.3666738653555512, 1756491.8638086654245853 5080061.2941879099234939))), + MULTIPOLYGON (((1755508.4436962972395122 5079938.3666738653555512, + 1755569.9074533204548061 5079938.3666738653555512, 1755569.9074533204548061 5079876.9029168421402574, + 1755508.4436962972395122 5079876.9029168421402574, 1755508.4436962972395122 5079938.3666738653555512))), + MULTIPOLYGON (((1755692.8349673661869019 5079938.3666738653555512, + 1755754.2987243889365345 5079938.3666738653555512, 1755754.2987243889365345 5079876.9029168421402574, + 1755692.8349673661869019 5079876.9029168421402574, 1755692.8349673661869019 5079938.3666738653555512))), + MULTIPOLYGON (((1755569.9074533204548061 5079876.9029168421402574, + 1755631.3712103427387774 5079876.9029168421402574, 1755631.3712103427387774 5079753.9754027975723147, + 1755569.9074533204548061 5079753.9754027975723147, 1755569.9074533204548061 5079876.9029168421402574))), + MULTIPOLYGON (((1755938.6899954585824162 5080122.7579449350014329, + 1756123.0812665277626365 5080122.7579449350014329, 1756123.0812665277626365 5079876.9029168421402574, + 1756061.6175095040816814 5079876.9029168421402574, 1756061.6175095040816814 5079631.0478887520730495, + 1755815.7624814116861671 5079631.0478887520730495, 1755815.7624814116861671 5079938.3666738653555512, + 1755877.2262384353671223 5079938.3666738653555512, 1755938.6899954585824162 5079938.3666738653555512, + 1755938.6899954585824162 5080122.7579449350014329))), + MULTIPOLYGON (((1756246.0087805732619017 5079938.3666738653555512, + 1756307.4725375962443650 5079938.3666738653555512, 1756307.4725375962443650 5079753.9754027975723147, + 1756368.9362946192268282 5079753.9754027975723147, 1756368.9362946192268282 5079569.5841317288577557, + 1756307.4725375962443650 5079569.5841317288577557, 1756184.5450235498137772 5079569.5841317288577557, + 1756184.5450235498137772 5079753.9754027975723147, 1756246.0087805732619017 5079753.9754027975723147, + 1756246.0087805732619017 5079938.3666738653555512))), + MULTIPOLYGON (((1756614.7913227111566812 5079631.0478887520730495, + 1756676.2550797339063138 5079631.0478887520730495, 1756676.2550797339063138 5079569.5841317288577557, + 1756614.7913227111566812 5079569.5841317288577557, 1756614.7913227111566812 5079631.0478887520730495))), + MULTIPOLYGON (((1756553.3275656879413873 5079569.5841317288577557, + 1756614.7913227111566812 5079569.5841317288577557, 1756614.7913227111566812 5079446.6566176833584905, + 1756553.3275656879413873 5079446.6566176833584905, 1756553.3275656879413873 5079569.5841317288577557))), + MULTIPOLYGON (((1756676.2550797339063138 5079569.5841317288577557, + 1756737.7188367566559464 5079569.5841317288577557, 1756737.7188367566559464 5079446.6566176833584905, + 1756676.2550797339063138 5079446.6566176833584905, 1756676.2550797339063138 5079569.5841317288577557))), + MULTIPOLYGON (((1756000.1537524810992181 5079385.1928606573492289, + 1756061.6175095040816814 5079385.1928606573492289, 1756061.6175095040816814 5079262.2653466118499637, + 1756000.1537524810992181 5079262.2653466118499637, 1756000.1537524810992181 5079385.1928606573492289))), + MULTIPOLYGON (((1756491.8638086654245853 5079262.2653466118499637, + 1756553.3275656879413873 5079262.2653466118499637, 1756553.3275656879413873 5079200.8015895904973149, + 1756491.8638086654245853 5079200.8015895904973149, 1756491.8638086654245853 5079262.2653466118499637))), + MULTIPOLYGON (((1756000.1537524810992181 5079077.8740755440667272, + 1756061.6175095040816814 5079077.8740755440667272, 1756061.6175095040816814 5079016.4103185208514333, + 1756000.1537524810992181 5079016.4103185208514333, 1756000.1537524810992181 5079077.8740755440667272))), + MULTIPOLYGON (((1757045.0376218727324158 5078832.0190474493429065, + 1757106.5013788954820484 5078832.0190474493429065, 1757106.5013788954820484 5078709.0915334057062864, + 1757045.0376218727324158 5078709.0915334057062864, 1757045.0376218727324158 5078832.0190474493429065))), + MULTIPOLYGON (((1756246.0087805732619017 5078832.0190474493429065, + 1756307.4725375962443650 5078832.0190474493429065, 1756307.4725375962443650 5078709.0915334057062864, + 1756368.9362946192268282 5078709.0915334057062864, 1756368.9362946192268282 5078697.1378769595175982, + 1756061.6175095040816814 5078704.4868044294416904, 1756061.6175095040816814 5078709.0915334057062864, + 1756184.5450235498137772 5078709.0915334057062864, 1756246.0087805732619017 5078709.0915334057062864, + 1756246.0087805732619017 5078832.0190474493429065))), + MULTIPOLYGON (((1755877.2262384353671223 5080654.8439269624650478, + 1755877.2262384353671223 5080491.5404870714992285, 1756000.1537524810992181 5080491.5404870714992285, + 1756000.1537524810992181 5080430.0767300482839346, 1756061.6175095040816814 5080430.0767300482839346, + 1756061.6175095040816814 5080307.1492160055786371, 1756000.1537524810992181 5080307.1492160055786371, + 1756000.1537524810992181 5080245.6854589805006981, 1756123.0812665277626365 5080245.6854589805006981, + 1756123.0812665277626365 5080122.7579449350014329, 1756061.6175095040816814 5080122.7579449350014329, + 1755938.6899954585824162 5080122.7579449350014329, 1755938.6899954585824162 5079938.3666738653555512, + 1755877.2262384353671223 5079938.3666738653555512, 1755815.7624814116861671 5079938.3666738653555512, + 1755815.7624814116861671 5079631.0478887520730495, 1756061.6175095040816814 5079631.0478887520730495, + 1756061.6175095040816814 5079876.9029168421402574, 1756123.0812665277626365 5079876.9029168421402574, + 1756123.0812665277626365 5080122.7579449350014329, 1756307.4725375962443650 5080122.7579449350014329, + 1756307.4725375962443650 5080061.2941879099234939, 1756430.4000516426749527 5080061.2941879099234939, + 1756430.4000516426749527 5079876.9029168421402574, 1756553.3275656879413873 5079876.9029168421402574, + 1756553.3275656879413873 5079631.0478887520730495, 1756491.8638086654245853 5079631.0478887520730495, + 1756491.8638086654245853 5079446.6566176833584905, 1756430.4000516426749527 5079446.6566176833584905, + 1756246.0087805732619017 5079446.6566176833584905, 1756246.0087805732619017 5079200.8015895904973149, + 1756184.5450235498137772 5079200.8015895904973149, 1756123.0812665277626365 5079200.8015895904973149, + 1756123.0812665277626365 5079077.8740755440667272, 1756184.5450235498137772 5079077.8740755440667272, + 1756184.5450235498137772 5079016.4103185208514333, 1756307.4725375962443650 5079016.4103185208514333, + 1756307.4725375962443650 5078893.4828044744208455, 1756246.0087805732619017 5078893.4828044744208455, + 1756246.0087805732619017 5078832.0190474493429065, 1756123.0812665277626365 5078832.0190474493429065, + 1756123.0812665277626365 5078893.4828044744208455, 1756000.1537524810992181 5078893.4828044744208455, + 1756000.1537524810992181 5078832.0190474493429065, 1755938.6899954585824162 5078832.0190474493429065, + 1755877.2262384353671223 5078832.0190474493429065, 1755877.2262384353671223 5078709.0915334057062864, + 1756000.1537524810992181 5078709.0915334057062864, 1756000.1537524810992181 5078705.9565899241715670, + 1754455.4951298737432808 5078742.8940787250176072, 1754447.7975028993096203 5080667.3008222607895732, + 1755877.2262384353671223 5080654.8439269624650478), + (1756184.5450235498137772 5079753.9754027975723147, 1756184.5450235498137772 5079569.5841317288577557, + 1756307.4725375962443650 5079569.5841317288577557, 1756368.9362946192268282 5079569.5841317288577557, + 1756368.9362946192268282 5079753.9754027975723147, 1756307.4725375962443650 5079753.9754027975723147, + 1756307.4725375962443650 5079938.3666738653555512, 1756246.0087805732619017 5079938.3666738653555512, + 1756246.0087805732619017 5079753.9754027975723147, 1756184.5450235498137772 5079753.9754027975723147), + (1755508.4436962972395122 5079938.3666738653555512, 1755508.4436962972395122 5079876.9029168421402574, + 1755569.9074533204548061 5079876.9029168421402574, 1755569.9074533204548061 5079753.9754027975723147, + 1755631.3712103427387774 5079753.9754027975723147, 1755631.3712103427387774 5079876.9029168421402574, + 1755569.9074533204548061 5079876.9029168421402574, 1755569.9074533204548061 5079938.3666738653555512, + 1755508.4436962972395122 5079938.3666738653555512), (1756000.1537524810992181 5079385.1928606573492289, + 1756000.1537524810992181 5079262.2653466118499637, 1756061.6175095040816814 5079262.2653466118499637, + 1756061.6175095040816814 5079385.1928606573492289, 1756000.1537524810992181 5079385.1928606573492289), + (1755692.8349673661869019 5079938.3666738653555512, 1755692.8349673661869019 5079876.9029168421402574, + 1755754.2987243889365345 5079876.9029168421402574, 1755754.2987243889365345 5079938.3666738653555512, + 1755692.8349673661869019 5079938.3666738653555512), (1756000.1537524810992181 5079077.8740755440667272, + 1756000.1537524810992181 5079016.4103185208514333, 1756061.6175095040816814 5079016.4103185208514333, + 1756061.6175095040816814 5079077.8740755440667272, 1756000.1537524810992181 5079077.8740755440667272))), + MULTIPOLYGON (((1756000.1537524810992181 5078705.9565899241715670, 1756000.1537524810992181 5078709.0915334057062864, + 1755877.2262384353671223 5078709.0915334057062864, 1755877.2262384353671223 5078832.0190474493429065, + 1755938.6899954585824162 5078832.0190474493429065, 1756000.1537524810992181 5078832.0190474493429065, + 1756000.1537524810992181 5078893.4828044744208455, 1756123.0812665277626365 5078893.4828044744208455, + 1756123.0812665277626365 5078832.0190474493429065, 1756246.0087805732619017 5078832.0190474493429065, + 1756246.0087805732619017 5078709.0915334057062864, 1756184.5450235498137772 5078709.0915334057062864, + 1756061.6175095040816814 5078709.0915334057062864, 1756061.6175095040816814 5078704.4868044294416904, + 1756000.1537524810992181 5078705.9565899241715670)), ((1756368.9362946192268282 5078697.1378769595175982, + 1756368.9362946192268282 5078709.0915334057062864, 1756307.4725375962443650 5078709.0915334057062864, + 1756307.4725375962443650 5078832.0190474493429065, 1756246.0087805732619017 5078832.0190474493429065, + 1756246.0087805732619017 5078893.4828044744208455, 1756307.4725375962443650 5078893.4828044744208455, + 1756307.4725375962443650 5079016.4103185208514333, 1756184.5450235498137772 5079016.4103185208514333, + 1756184.5450235498137772 5079077.8740755440667272, 1756123.0812665277626365 5079077.8740755440667272, + 1756123.0812665277626365 5079200.8015895904973149, 1756184.5450235498137772 5079200.8015895904973149, + 1756246.0087805732619017 5079200.8015895904973149, 1756246.0087805732619017 5079446.6566176833584905, + 1756430.4000516426749527 5079446.6566176833584905, 1756491.8638086654245853 5079446.6566176833584905, + 1756491.8638086654245853 5079631.0478887520730495, 1756553.3275656879413873 5079631.0478887520730495, + 1756553.3275656879413873 5079876.9029168421402574, 1756430.4000516426749527 5079876.9029168421402574, + 1756430.4000516426749527 5080061.2941879099234939, 1756307.4725375962443650 5080061.2941879099234939, + 1756307.4725375962443650 5080122.7579449350014329, 1756123.0812665277626365 5080122.7579449350014329, + 1756123.0812665277626365 5080245.6854589805006981, 1756000.1537524810992181 5080245.6854589805006981, + 1756000.1537524810992181 5080307.1492160055786371, 1756061.6175095040816814 5080307.1492160055786371, + 1756061.6175095040816814 5080430.0767300482839346, 1756123.0812665277626365 5080430.0767300482839346, + 1756123.0812665277626365 5080614.4680011207237840, 1756184.5450235498137772 5080614.4680011207237840, + 1756184.5450235498137772 5080652.1657676175236702, 1757981.0082840309478343 5080636.5103143639862537, + 1757996.4035379793494940 5078658.2201820081099868, 1756368.9362946192268282 5078697.1378769595175982), + (1756553.3275656879413873 5079569.5841317288577557, 1756553.3275656879413873 5079446.6566176833584905, + 1756614.7913227111566812 5079446.6566176833584905, 1756614.7913227111566812 5079569.5841317288577557, + 1756676.2550797339063138 5079569.5841317288577557, 1756676.2550797339063138 5079631.0478887520730495, + 1756614.7913227111566812 5079631.0478887520730495, 1756614.7913227111566812 5079569.5841317288577557, + 1756553.3275656879413873 5079569.5841317288577557), (1756676.2550797339063138 5079569.5841317288577557, + 1756676.2550797339063138 5079446.6566176833584905, 1756737.7188367566559464 5079446.6566176833584905, + 1756737.7188367566559464 5079569.5841317288577557, 1756676.2550797339063138 5079569.5841317288577557), + (1756184.5450235498137772 5080307.1492160055786371, 1756184.5450235498137772 5080245.6854589805006981, + 1756246.0087805732619017 5080245.6854589805006981, 1756246.0087805732619017 5080307.1492160055786371, + 1756184.5450235498137772 5080307.1492160055786371), (1756491.8638086654245853 5080061.2941879099234939, + 1756491.8638086654245853 5079938.3666738653555512, 1756614.7913227111566812 5079938.3666738653555512, + 1756614.7913227111566812 5080061.2941879099234939, 1756491.8638086654245853 5080061.2941879099234939), + (1757045.0376218727324158 5078832.0190474493429065, 1757045.0376218727324158 5078709.0915334057062864, + 1757106.5013788954820484 5078709.0915334057062864, 1757106.5013788954820484 5078832.0190474493429065, + 1757045.0376218727324158 5078832.0190474493429065), (1756491.8638086654245853 5079262.2653466118499637, + 1756491.8638086654245853 5079200.8015895904973149, 1756553.3275656879413873 5079200.8015895904973149, + 1756553.3275656879413873 5079262.2653466118499637, 1756491.8638086654245853 5079262.2653466118499637)), + ((1756000.1537524810992181 5080653.7726632226258516, 1756000.1537524810992181 5080491.5404870714992285, + 1755877.2262384353671223 5080491.5404870714992285, 1755877.2262384353671223 5080654.8439269624650478, + 1756000.1537524810992181 5080653.7726632226258516)))) + + + POLYGON ((1756000.153752481 5080653.772663223, 1756184.5450235498 5080652.1657676175, + 1757981.008284031 5080636.510314364, 1757996.4035379793 5078658.220182008, + 1756368.9362946192 5078697.1378769595, 1756061.617509504 5078704.486804429, + 1756000.153752481 5078705.956589924, 1754455.4951298737 5078742.894078725, + 1754447.7975028993 5080667.300822261, 1755877.2262384354 5080654.843926962, + 1756000.153752481 5080653.772663223)) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/linemerge.xml geos-3.8.0/tests/xmltester/tests/linemerge.xml --- geos-3.7.1/tests/xmltester/tests/linemerge.xml 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/linemerge.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ - - -Case # - -MULTILINESTRING((0 0, 10 0), (10 0, 20 0)) - - - -GEOMETRYCOLLECTION ( LINESTRING(0 0, 10 0, 20 0) ) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/misc/Buffer-1.xml geos-3.8.0/tests/xmltester/tests/misc/Buffer-1.xml --- geos-3.7.1/tests/xmltester/tests/misc/Buffer-1.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/Buffer-1.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,363 @@ + + + +Case #1 + +POINT (100 100) + + + + POLYGON ((70.0000000000000000 99.9999999999999005, 70.5764415879030622 105.8527096604837396, 72.2836140246613610 111.4805029709525854, 75.0559116309235748 116.6671069905879676, 78.7867965644034882 121.2132034355963413, 83.3328930094118192 124.9440883690762831, 88.5194970290471872 127.7163859753385537, 94.1472903395160330 129.4235584120968952, 99.9999999999998863 130.0000000000000000, 105.8527096604837396 129.4235584120969236, 111.4805029709525996 127.7163859753386390, 116.6671069905879961 124.9440883690764110, 121.2132034355963697 121.2132034355964834, 124.9440883690763116 116.6671069905881382, 127.7163859753385680 111.4805029709527560, 129.4235584120968952 105.8527096604839102, 130.0000000000000000 100.0000000000000000, 129.4235584120969236 94.1472903395161609, 127.7163859753386106 88.5194970290473151, 124.9440883690763684 83.3328930094119471, 121.2132034355964407 78.7867965644035877, 116.6671069905880955 75.0559116309236600, 111.4805029709527275 72.2836140246614036, 105.8527096604838817 70.5764415879030906, 100.0000000000000426 70.0000000000000000, 94.1472903395162035 70.5764415879030764, 88.5194970290473577 72.2836140246613752, 83.3328930094119897 75.0559116309236032, 78.7867965644036303 78.7867965644035309, 75.0559116309236884 83.3328930094118761, 72.2836140246614320 88.5194970290472298, 70.5764415879031048 94.1472903395160614, 70.0000000000000000 99.9999999999999005)) + + + +Case #2 + +LINESTRING (10 10, 100 100) + + + + POLYGON ((-10.0000000000000000 9.9999999999999805, -9.6157056080646157 13.9018064403225328, -8.4775906502257463 17.6536686473017674, -6.6293922460509283 21.1114046603920080, -4.1421356237309501 24.1421356237309510, 85.8578643762690490 114.1421356237309510, 85.8578643762690774 114.1421356237309794, 88.8885953396079884 116.6293922460509265, 92.3463313526982290 118.4775906502257499, 96.0981935596774548 119.6157056080646157, 100.0000000000000142 120.0000000000000000, 103.9018064403225736 119.6157056080646015, 107.6536686473017994 118.4775906502257357, 111.1114046603920542 116.6293922460508981, 114.1421356237309510 114.1421356237309510, 116.6293922460508981 111.1114046603920542, 118.4775906502257357 107.6536686473017994, 119.6157056080646015 103.9018064403225736, 120.0000000000000000 100.0000000000000142, 119.6157056080646157 96.0981935596774548, 118.4775906502257499 92.3463313526982290, 116.6293922460509265 88.8885953396079884, 114.1421356237309510 85.8578643762690490, 24.1421356237309510 -4.1421356237309501, 24.1421356237309297 -4.1421356237309723, 21.1114046603920222 -6.6293922460509194, 17.6536686473017745 -8.4775906502257428, 13.9018064403225488 -9.6157056080646122, 9.9999999999999876 -10.0000000000000000, 6.0981935596774273 -9.6157056080646068, 2.3463313526982019 -8.4775906502257339, -1.1114046603920393 -6.6293922460509078, -4.1421356237309492 -4.1421356237309519, -6.6293922460508963 -1.1114046603920573, -8.4775906502257303 2.3463313526981944, -9.6157056080646051 6.0981935596774104, -10.0000000000000000 9.9999999999999805)) + + + +Case #3 + +LINESTRING (100 100, 200 100, 200 200, 100 200, 100 100) + + + + POLYGON ((90.0000000000000000 100.0000000000000000, 90.0000000000000000 200.0000000000000000, 90.1921471959676921 201.9509032201612797, 90.7612046748871251 203.8268343236508997, 91.6853038769745439 205.5557023301960271, 92.9289321881345245 207.0710678118654755, 94.4442976698039729 208.3146961230254419, 96.1731656763491003 209.2387953251128749, 98.0490967798387203 209.8078528040323079, 100.0000000000000000 210.0000000000000000, 200.0000000000000000 210.0000000000000000, 201.9509032201612797 209.8078528040323079, 203.8268343236508997 209.2387953251128749, 205.5557023301960271 208.3146961230254419, 207.0710678118654755 207.0710678118654755, 208.3146961230254419 205.5557023301960271, 209.2387953251128749 203.8268343236508997, 209.8078528040323079 201.9509032201612797, 210.0000000000000000 200.0000000000000000, 210.0000000000000000 100.0000000000000000, 209.8078528040323079 98.0490967798387203, 209.2387953251128749 96.1731656763491003, 208.3146961230254419 94.4442976698039729, 207.0710678118654755 92.9289321881345245, 205.5557023301960271 91.6853038769745439, 203.8268343236508997 90.7612046748871251, 201.9509032201612797 90.1921471959676921, 200.0000000000000000 90.0000000000000000, 100.0000000000000000 90.0000000000000000, 98.0490967798387061 90.1921471959676921, 97.2322523941698904 90.4399342313836030, 96.1731656763491145 90.7612046748871251, 96.1731656763490861 90.7612046748871393, 94.4442976698039587 91.6853038769745581, 92.9289321881345245 92.9289321881345245, 91.6853038769745581 94.4442976698039587, 90.7612046748871393 96.1731656763490861, 90.7612046748871251 96.1731656763491145, 90.5373906437101397 96.9109816581012069, 90.1921471959676921 98.0490967798386919, 90.0000000000000000 100.0000000000000000), (110.0000000000000000 110.0000000000000000, 190.0000000000000000 110.0000000000000000, 190.0000000000000000 190.0000000000000000, 110.0000000000000000 190.0000000000000000, 110.0000000000000000 110.0000000000000000)) + + + +Case #4 + +LINESTRING (40 40, 160 40, 100 180, 40 80) + + + + POLYGON ((-10.0000000000000000 40.0000000000000071, -9.0392640201615233 49.7545161008064056, -6.1939766255643445 59.1341716182544701, -5.7089632597009334 60.0415678037439804, -8.5071250072665823 67.8732187481833051, -9.9408918612425712 77.5695020872925056, -9.4554582481658347 87.3591880981481808, -7.0694791095526091 96.8660646374722063, -2.8746462856272093 105.7247877713763273, 57.1253537143727925 205.7247877713763273, 63.0793179783294420 213.7174026142983507, 70.5002381509231526 220.3703362736521001, 79.0932615344621155 225.4192501780203202, 88.5169646845435523 228.6635376842249343, 98.3969190624655141 229.9742947074564938, 108.3405680669374220 229.2994414199672519, 117.9528243414483342 226.6657915197535260, 126.8517676352035579 222.1779868517338627, 134.6838195002822829 216.0143397117292352, 141.1377918943432235 208.4197480294549791, 145.9572515009028848 199.6959649289583751, 205.9572515009028848 59.6959649289583822, 205.9572515009028848 59.6959649289583894, 208.9292730958345885 50.2920471390894264, 209.9976214261368739 40.4877004497635937, 209.1207306555521086 30.6643789780913245, 206.3327176513530503 21.2042750860734870, 201.7420546119134031 12.4754495626896720, 195.5273487787097508 4.8175116179098252, 187.9303934299507546 -1.4715941681551830, 179.2467605182728221 -6.1471798656456880, 169.8143009612940659 -9.0273341784064609, 160.0000000000000000 -10.0000000000000000, 40.0000000000000000 -10.0000000000000000, 39.9999999999999005 -10.0000000000000000, 30.2454838991935233 -9.0392640201615091, 20.8658283817454411 -6.1939766255643089, 12.2214883490198183 -1.5734806151272143, 4.6446609406725869 4.6446609406726607, -1.5734806151272844 12.2214883490199231, -6.1939766255643489 20.8658283817455370, -9.0392640201615251 30.2454838991936050, -10.0000000000000000 40.0000000000000071)) + + + +Case #5 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300)) + + + + POLYGON ((70.0000000000000000 80.0000000000000000, 70.0000000000000000 300.0000000000000000, 70.1921471959676921 301.9509032201613081, 70.7612046748871393 303.8268343236508713, 71.6853038769745439 305.5557023301960271, 72.9289321881345245 307.0710678118654755, 74.4442976698039871 308.3146961230254419, 76.1731656763491003 309.2387953251128465, 78.0490967798387203 309.8078528040322794, 80.0000000000000000 310.0000000000000000, 280.0000000000000000 310.0000000000000000, 281.9509032201613081 309.8078528040322794, 283.8268343236508713 309.2387953251128465, 285.5557023301960271 308.3146961230254419, 287.0710678118654755 307.0710678118654755, 288.3146961230254419 305.5557023301960271, 289.2387953251128465 303.8268343236508713, 289.8078528040322794 301.9509032201613081, 290.0000000000000000 300.0000000000000000, 290.0000000000000000 80.0000000000000000, 289.8078528040322794 78.0490967798387203, 289.2387953251128465 76.1731656763491003, 288.3146961230254419 74.4442976698039729, 287.0710678118654755 72.9289321881345245, 285.5557023301960271 71.6853038769745439, 283.8268343236508713 70.7612046748871393, 281.9509032201613081 70.1921471959676921, 280.0000000000000000 70.0000000000000000, 80.0000000000000000 70.0000000000000000, 79.9999999982041317 70.0000000000000000, 78.0490967782975389 70.1921471962742629, 76.1731656751047410 70.7612046754025670, 74.4442976688707176 71.6853038775981304, 72.9289321874995977 72.9289321887694655, 71.6853038766004005 74.4442976703639232, 70.7612046747153158 76.1731656767638867, 70.1921471959238943 78.0490967800588891, 70.0000000000000000 80.0000000000000000)) + + + +Case #6 + +POLYGON ((60 300, 60 160, 240 160, 240 300, 60 300)) + + + + POLYGON ((50.0000000000000000 159.9999999982041459, 50.0000000000000000 160.0000000000000000, 50.0000000000000000 300.0000000000000000, 50.1921471959676992 301.9509032201613081, 50.7612046748871322 303.8268343236508713, 51.6853038769745439 305.5557023301960271, 52.9289321881345245 307.0710678118654755, 54.4442976698039800 308.3146961230254419, 56.1731656763491003 309.2387953251128465, 58.0490967798387203 309.8078528040322794, 60.0000000000000000 310.0000000000000000, 240.0000000000000000 310.0000000000000000, 241.9509032201612797 309.8078528040322794, 243.8268343236508997 309.2387953251128465, 245.5557023301960271 308.3146961230254419, 247.0710678118654755 307.0710678118654755, 248.3146961230254419 305.5557023301960271, 249.2387953251128749 303.8268343236508713, 249.8078528040323079 301.9509032201613081, 250.0000000000000000 300.0000000000000000, 250.0000000000000000 160.0000000000000000, 249.8078528040323079 158.0490967798387203, 249.2387953251128749 156.1731656763491003, 248.3146961230254419 154.4442976698039729, 247.0710678118654755 152.9289321881345245, 245.5557023301960271 151.6853038769745581, 243.8268343236508997 150.7612046748871251, 241.9509032201612797 150.1921471959676921, 240.0000000000000000 150.0000000000000000, 60.0000000000000000 150.0000000000000000, 58.0490967800588891 150.1921471959238943, 56.1731656767638938 150.7612046747153158, 54.4442976703639303 151.6853038766004147, 52.9289321887694584 152.9289321874995835, 51.6853038775981304 154.4442976688707176, 50.7612046754025670 156.1731656751047410, 50.1921471962742558 158.0490967782975247, 50.0000000000000000 159.9999999982041459)) + + + +Case #7 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + + + POLYGON ((70.0000000000000000 80.0000000000000000, 70.0000000000000000 300.0000000000000000, 70.1921471959676921 301.9509032201613081, 70.7612046748871393 303.8268343236508713, 71.6853038769745439 305.5557023301960271, 72.9289321881345245 307.0710678118654755, 74.4442976698039871 308.3146961230254419, 76.1731656763491003 309.2387953251128465, 78.0490967798387203 309.8078528040322794, 80.0000000000000000 310.0000000000000000, 280.0000000000000000 310.0000000000000000, 281.9509032201613081 309.8078528040322794, 283.8268343236508713 309.2387953251128465, 285.5557023301960271 308.3146961230254419, 287.0710678118654755 307.0710678118654755, 288.3146961230254419 305.5557023301960271, 289.2387953251128465 303.8268343236508713, 289.8078528040322794 301.9509032201613081, 290.0000000000000000 300.0000000000000000, 290.0000000000000000 80.0000000000000000, 289.8078528040322794 78.0490967798387203, 289.2387953251128465 76.1731656763491003, 288.3146961230254419 74.4442976698039729, 287.0710678118654755 72.9289321881345245, 285.5557023301960271 71.6853038769745439, 283.8268343236508713 70.7612046748871393, 281.9509032201613081 70.1921471959676921, 280.0000000000000000 70.0000000000000000, 80.0000000000000000 70.0000000000000000, 79.9999999982041317 70.0000000000000000, 78.0490967782975389 70.1921471962742629, 76.1731656751047410 70.7612046754025670, 74.4442976688707176 71.6853038775981304, 72.9289321874995977 72.9289321887694655, 71.6853038766004005 74.4442976703639232, 70.7612046747153158 76.1731656767638867, 70.1921471959238943 78.0490967800588891, 70.0000000000000000 80.0000000000000000), (110.0000000000000000 110.0000000000000000, 250.0000000000000000 110.0000000000000000, 250.0000000000000000 255.8578643762690490, 187.0710678118654755 192.9289321881345245, 185.5557023301960271 191.6853038769745581, 183.8268343236508997 190.7612046748871251, 181.9509032201612797 190.1921471959676921, 180.0000000000000000 190.0000000000000000, 178.0490967798387203 190.1921471959676921, 176.1731656763491003 190.7612046748871251, 174.4442976698039729 191.6853038769745581, 172.9289321881345245 192.9289321881345245, 110.0000000000000000 255.8578643762690490, 110.0000000000000000 110.0000000000000000)) + + + +Case #8 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + + + POLYGON ((-120.0000000000000000 80.0000000000000000, -120.0000000000000000 300.0000000000000000, -116.1570560806460719 339.0180644032257078, -104.7759065022573424 376.5366864730179941, -86.2939224605090658 411.1140466039204284, -61.4213562373094888 441.4213562373095101, -31.1140466039203929 466.2939224605090658, 3.4633135269820596 484.7759065022573850, 40.9819355967743633 496.1570560806461003, 80.0000000000000000 500.0000000000000000, 280.0000000000000000 500.0000000000000000, 319.0180644032256509 496.1570560806461003, 356.5366864730179373 484.7759065022573282, 391.1140466039204284 466.2939224605090658, 421.4213562373095101 441.4213562373095101, 446.2939224605090658 411.1140466039204284, 464.7759065022573282 376.5366864730179373, 476.1570560806461003 339.0180644032256509, 480.0000000000000000 300.0000000000000000, 480.0000000000000000 80.0000000000000000, 476.1570560806461003 40.9819355967743491, 464.7759065022573282 3.4633135269820485, 446.2939224605090658 -31.1140466039204426, 421.4213562373095101 -61.4213562373095030, 391.1140466039204284 -86.2939224605090374, 356.5366864730179373 -104.7759065022573424, 319.0180644032256509 -116.1570560806460861, 280.0000000000000000 -120.0000000000000000, 80.0000000000000000 -120.0000000000000000, 79.9999999640827326 -120.0000000000000000, 40.9819355659506570 -116.1570560745148697, 3.4633135020947048 -104.7759064919486747, -31.1140466225855583 -86.2939224480374207, -61.4213562500081807 -61.4213562246108253, -86.2939224679919903 -31.1140465927214258, -104.7759065056935981 3.4633135352778681, -116.1570560815219864 40.9819356011778027, -120.0000000000000000 80.0000000000000000)) + + + +Case #9 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300)) + + + + POLYGON ((90.0000000000000000 90.0000000000000000, 90.0000000000000000 290.0000000000000000, 270.0000000000000000 290.0000000000000000, 270.0000000000000000 90.0000000000000000, 90.0000000000000000 90.0000000000000000)) + + + +Case #10 + +POLYGON ((100 300, 300 300, 300 100, 100 100, 100 300), (220 220, 180 220, 180 180, 220 180, 220 220)) + + + + POLYGON ((90.0000000000000000 100.0000000000000000, 90.0000000000000000 300.0000000000000000, 90.1921471959676921 301.9509032201613081, 90.7612046748871393 303.8268343236508713, 91.6853038769745439 305.5557023301960271, 92.9289321881345245 307.0710678118654755, 94.4442976698039871 308.3146961230254419, 96.1731656763491003 309.2387953251128465, 98.0490967798387203 309.8078528040322794, 100.0000000000000000 310.0000000000000000, 300.0000000000000000 310.0000000000000000, 301.9509032201613081 309.8078528040322794, 303.8268343236508713 309.2387953251128465, 305.5557023301960271 308.3146961230254419, 307.0710678118654755 307.0710678118654755, 308.3146961230254419 305.5557023301960271, 309.2387953251128465 303.8268343236508713, 309.8078528040322794 301.9509032201613081, 310.0000000000000000 300.0000000000000000, 310.0000000000000000 100.0000000000000000, 309.8078528040322794 98.0490967798387203, 309.2387953251128465 96.1731656763491003, 308.3146961230254419 94.4442976698039729, 307.0710678118654755 92.9289321881345245, 305.5557023301960271 91.6853038769745439, 303.8268343236508713 90.7612046748871393, 301.9509032201613081 90.1921471959676921, 300.0000000000000000 90.0000000000000000, 100.0000000000000000 90.0000000000000000, 99.9999999982041317 90.0000000000000000, 98.0490967782975389 90.1921471962742629, 96.1731656751047410 90.7612046754025670, 94.4442976688707176 91.6853038775981304, 92.9289321874995977 92.9289321887694655, 91.6853038766004005 94.4442976703639232, 90.7612046747153158 96.1731656767638867, 90.1921471959238943 98.0490967800588891, 90.0000000000000000 100.0000000000000000), (190.0000000000000000 190.0000000000000000, 210.0000000000000000 190.0000000000000000, 210.0000000000000000 210.0000000000000000, 190.0000000000000000 210.0000000000000000, 190.0000000000000000 190.0000000000000000)) + + + +Case #11 + +GEOMETRYCOLLECTION (POINT (100 100), POLYGON ((400 260, 280 380, 240 220, 120 300, 120 100, 260 40, 200 160, 400 260)), LINESTRING (260 400, 220 280, 120 400, 20 280, 160 160, 60 40, 160 20, 360 140)) + + + + POLYGON ((0.0700425798558265 278.3276372309692306, 0.1228569041891950 282.2134096658008957, 0.9261335993623063 286.0156147259132808, 2.4495449200752391 289.5906999998719016, 4.6355744080524834 292.8036879932895999, 104.6355744080524772 412.8036879932895999, 107.4027140469530792 415.5341039850120524, 110.6457864955514481 417.6776324691173841, 114.2422665854686130 419.1532896894290161, 118.0562772015389754 419.9053244556008622, 121.9437227984610246 419.9053244556008622, 125.7577334145313870 419.1532896894290161, 129.3542135044485519 417.6776324691173841, 132.5972859530469066 415.5341039850120524, 135.3644255919475086 412.8036879932895999, 212.3798679762521431 320.3851571321240499, 241.0263340389897166 406.3245553203367422, 241.0263340389897451 406.3245553203367990, 242.6247672442066516 409.9046093654421838, 244.8909209000858880 413.1040348272026108, 247.7377079925056762 415.7998795793810132, 251.0557280900008550 417.8885438199983469, 254.7174715409918520 419.2897613536241010, 258.5822195981864411 419.9496841762528447, 262.5014521611223017 419.8429518239000231, 266.3245553203367422 418.9736659610102834, 269.9046093654421838 417.3752327557933768, 273.1040348272025540 415.1090790999141404, 275.7998795793809563 412.2622920074943522, 277.8885438199982900 408.9442719099992019, 279.2897613536240442 405.2825284590081765, 279.9496841762528447 401.4177804018136158, 279.9100410175586262 399.9620759689305487, 280.3536479122308833 399.9968730844143465, 284.1616087256720107 399.5622343512802672, 287.8167399063642620 398.4091981692916988, 291.1848115464001125 396.5801082828645576, 294.1421356237309510 394.1421356237309510, 414.1421356237309510 274.1421356237309510, 416.5501405931683507 271.2291071036998460, 418.3671308115406759 267.9150809062039116, 419.5282205447628598 264.3184027550822748, 419.9919466308888332 260.5675120330809023, 419.7417491527499465 256.7963551398606228, 418.7865628018326447 253.1396021913596144, 417.1604978154628043 249.7278378748436296, 414.9216218812061925 246.6828981968932624, 412.1498865073597813 244.1135196516573842, 408.9442719099991450 242.1114561800016816, 226.8328157299974634 151.0557280900008550, 252.8452122963902013 99.0309349572153366, 349.7100848914494691 157.1498585142508944, 353.2535741450111004 158.8277916438210298, 357.0563247607407220 159.7821832992663360, 360.9721991650829978 159.9763567444970249, 364.8507125007266723 159.4028500029066322, 368.5428156752783480 158.0837026169481874, 371.9066232342952958 156.0696086808776784, 374.8128659397295337 153.4379686951414214, 377.1498585142508659 150.2899151085505309, 378.8277916438210013 146.7464258549889280, 379.7821832992663076 142.9436752392593064, 379.9763567444970249 139.0278008349170591, 379.4028500029066322 135.1492874992733562, 378.0837026169481874 131.4571843247216805, 376.0696086808777068 128.0933767657047042, 373.4379686951414214 125.1871340602704805, 370.2899151085505309 122.8501414857491199, 270.7866027420680552 63.1481540658596430, 277.8885438199982900 48.9442719099991592, 279.3258977375772929 45.1487548627513107, 279.9674142813494768 41.1412129148242087, 279.7866759027806438 37.0866760018289554, 278.7911253793552078 33.1521093045119386, 277.0217593221912011 29.4995376493510548, 274.5514399421601865 26.2793733521494808, 271.4818945957121059 23.6242222629593108, 267.9395266686285595 21.6434230784131323, 264.0702103048396339 20.4185447917071947, 260.0332833325381898 20.0000276945247961, 255.9949857579331365 20.4051062539027406, 252.1216140284166443 21.6170993996388425, 222.6321098525542084 34.2554583321513206, 170.2899151085505309 2.8501414857491163, 170.2899151085505309 2.8501414857491159, 166.9699144252653014 1.2537925727767922, 163.4134465985324027 0.2934431642925626, 159.7411713289505428 0.0016748771542679, 156.0776772972363062 0.3883864861815968, 56.0776772972363204 20.3883864861815951, 56.0776772972361996 20.3883864861816200, 52.4812515061284230 21.4670989565609567, 49.1498221084192508 23.1989988476563624, 46.2008044925838703 25.5230457848307566, 43.7381360403424253 28.3573293202294003, 41.8486128798686963 31.6019558458453318, 40.5988307781546069 35.1425693185266184, 40.0328379900072235 38.8543817098608457, 40.1705827884231823 42.6065711287477029, 41.0072103927405820 46.2668926059394607, 42.5132340741584116 49.7063390346116378, 44.6355744080524843 52.8036879932895999, 80.4723709979361956 95.8078439011500365, 80.3842943919353985 96.0981935596773695, 80.0000000000000000 99.9999999999999289, 80.3842943919353843 103.9018064403225026, 81.5224093497742359 107.6536686473017284, 83.3706077539490451 111.1114046603919832, 85.8578643762689921 114.1421356237308942, 88.8885953396078889 116.6293922460508554, 92.3463313526981295 118.4775906502257072, 96.0981935596773553 119.6157056080645873, 99.9999999999999289 120.0000000000000000, 100.0000000000000000 120.0000000000000000, 100.0000000000000000 185.0870158363060227, 6.9841725308806293 264.8148679526940441, 6.9841725308805440 264.8148679526941578, 4.2932660917386549 267.6186224540613807, 2.1953680497354338 270.8898363837075749, 0.7696846333914061 274.5050049225884550, 0.0700425798558265 278.3276372309692306), (47.9915194493919586 282.3488246356437230, 100.0000000000000000 237.7701270208368101, 100.0000000000000000 300.0000000000000000, 100.3839234475633617 303.8999411135228002, 101.5209540688945395 307.6501543432858057, 103.3674385923808785 311.1066602100622163, 105.8524861476094685 314.1367553489624243, 108.8806899321040760 316.6241073027693460, 112.3357901021779242 318.4732207977419876, 116.0851372609338910 319.6131040310878006, 119.9847851796418183 319.9999942127302006, 123.8850172309783346 319.6190377214327327, 127.6360943613988326 318.4848603701465208, 131.0940039245045909 316.6410058867568864, 203.8537364874001696 268.1345175114931862, 120.0000000000000000 368.7590012963734125, 47.9915194493919586 282.3488246356437230), (215.0040775095006609 260.7009568300928208, 227.4803348551585884 252.3834519329875548, 230.0892518816914674 262.8191200391190705, 229.1695405949105009 262.2258748378918085, 225.5864699071360917 260.7960588946783673, 221.7955438638937835 260.0807625087496717, 217.9378111584315434 260.1065996576324437, 215.0040775095006609 260.7009568300928208), (96.8836262557126844 53.0193528032286068, 156.3403380937374152 41.1280104356236578, 177.2802617815351880 53.6919646483023243, 118.4536428779042296 78.9033727498584483, 96.8836262557126844 53.0193528032286068)) + + + +Case #12 + +GEOMETRYCOLLECTION (POINT (100 100), POLYGON ((400 260, 120 300, 120 100, 400 260)), LINESTRING (20 280, 160 160, 60 40)) + + + + POLYGON ((0.0589102899683682 278.4660700223052459, 0.1428178439019948 282.3858576695903366, 0.9898257720584154 286.2139581446373882, 2.5673840347661048 289.8032596930139562, 4.8148679526940592 293.0158274691193583, 7.6459079792798290 295.7282042949466359, 10.9517088339672366 297.8361550501977035, 14.6052304438251515 299.2586723695006867, 18.4660700223052352 299.9410897100316333, 22.3858576695902869 299.8571821560980197, 26.2139581446373811 299.0101742279416044, 29.8032596930139349 297.4326159652339356, 33.0158274691193370 295.1851320473059559, 33.0158274691193725 295.1851320473059559, 100.0000000000000000 237.7701270208368385, 100.0000000000000000 300.0000000000000000, 100.3610465527466715 303.7830553123919231, 101.4311507496616827 307.4295247168449805, 103.1716768476074293 310.8077536925416666, 105.5197837518210235 313.7957724468756737, 108.3906938719777600 316.2856995927674575, 111.6807539878648328 318.1876371689555185, 115.2711776131651931 319.4329163748977862, 119.0323337405973660 319.9765768341428611, 122.8284271247461845 319.7989898732233200, 402.8284271247462129 279.7989898732233200, 406.5320848573002763 278.9032237308092022, 409.9986364407343444 277.3212952554368371, 413.1022505800438012 275.1106263846917273, 415.7302701354329884 272.3514615113477362, 417.7873014293543292 269.1439547167125284, 419.1986769124150101 265.6045343082814156, 419.9131654979004225 261.8616766242365088, 419.9048321833120667 258.0512425101661620, 419.1739794570858635 254.3115457478108112, 417.7471363186568851 250.7783324454299532, 415.6760953104280247 247.5798536313625959, 413.0360325161242372 244.8322099092006283, 409.9227787671366627 242.6351371575108260, 129.9227787671366627 82.6351371575108118, 126.4648010002813976 81.0736599410567322, 122.7741579330332939 80.1933332495700171, 119.4045292180186522 80.0444363579957638, 75.3644255919475228 27.1963120067104036, 75.3644255919474944 27.1963120067103752, 72.5713268488278942 24.4448805449800837, 69.2951190649891373 22.2912236004947175, 65.6617050682456949 20.8181050018461171, 61.8107149208503515 20.0821358706459208, 57.8901400145073524 20.1115990878699122, 54.0506458441837196 20.9053623986033301, 50.4397820176318632 22.4329219239622866, 47.1963120067104001 24.6355744080524843, 44.4448805449801085 27.4286731511720845, 42.2912236004947317 30.7048809350108236, 40.8181050018461278 34.3382949317542696, 40.0821358706459208 38.1892850791496201, 40.1115990878699051 42.1098599854926121, 40.9053623986033230 45.9493541558162519, 42.4329219239622688 49.5602179823681013, 44.6355744080524701 52.8036879932895786, 44.6355744080524843 52.8036879932895999, 80.4723709979361956 95.8078439011500365, 80.3842943919353985 96.0981935596773695, 80.0000000000000000 99.9999999999999289, 80.3842943919353843 103.9018064403225026, 81.5224093497742359 107.6536686473017284, 83.3706077539490451 111.1114046603919832, 85.8578643762689921 114.1421356237308942, 88.8885953396078889 116.6293922460508554, 92.3463313526981295 118.4775906502257072, 96.0981935596773553 119.6157056080645873, 99.9999999999999289 120.0000000000000000, 100.0000000000000000 120.0000000000000000, 100.0000000000000000 185.0870158363060227, 6.9841725308806293 264.8148679526940441, 6.9841725308806115 264.8148679526941009, 4.2717957050533339 267.6459079792798548, 2.1638449498022680 270.9517088339672455, 0.7413276304993075 274.6052304438251781, 0.0589102899683682 278.4660700223052459)) + + + +Case #13 + +POLYGON ((260 400, 220 300, 80 300, 180 220, 40 200, 180 160, 60 20, 200 80, 280 20, 260 140, 440 20, 340 180, 520 160, 280 220, 460 340, 300 300, 260 400), (260 320, 240 260, 220 220, 160 180, 220 160, 200 100, 260 160, 300 140, 320 180, 260 200, 260 320)) + + + + POLYGON ((35.0116240372882501 200.3407422114144651, 35.1713912564989570 201.2978973773705036, 35.5130370199346430 202.2061648205705353, 36.0236926034150855 203.0313329556259703, 36.6841232130156953 203.7423202874070967, 37.4694524994158655 204.3123461534630394, 38.3500995719418896 204.7199394675666895, 39.2928932179245507 204.9497474681788560, 39.2928932188134539 204.9497474683058442, 167.8519380725216195 223.3153253045498730, 76.8765247622278736 296.0956559527848526, 76.1961497616868115 296.7548923955460509, 75.6523334151183633 297.5306285685009584, 75.2645987908988161 298.3950154552634899, 75.0468656059109946 299.3170214687909265, 75.0069505061331085 300.2635464888699062, 75.1462864481637354 301.2006101601772912, 75.4598712559176619 302.0945717908817301, 75.9364471993134771 302.9133380572862961, 76.5589051480572351 303.6275151577812608, 77.3048987913560381 304.2114640536476031, 78.1476468730040352 304.6442209134480663, 79.0568946415105529 304.9102497169480444, 79.9999999991020729 305.0000000000000000, 80.0000000000000000 305.0000000000000000, 216.6148351928655131 305.0000000000000000, 255.3576165455737055 401.8569533817704951, 255.8146424205861820 402.7354674065766744, 256.4358447295115297 403.5066789427960430, 257.1968559534740848 404.1403361523463786, 258.0678243757334371 404.6115829556661083, 259.0145850565194792 404.9019340457787735, 260.0000000000000000 405.0000000000000000, 260.9854149434805208 404.9019340457787735, 261.9321756242665629 404.6115829556661083, 262.8031440465259152 404.1403361523463786, 263.5641552704884703 403.5066789427960430, 264.1853575794138465 402.7354674065766744, 264.6423834544262945 401.8569533817704951, 303.0214654493869375 305.9092483943688308, 458.7873218748183604 344.8507125007266723, 459.7746718505221679 344.9949201420095619, 460.7709957975484372 344.9401989312336809, 461.7366138865052676 344.6887282080748491, 462.6330691866506868 344.2505231040791500, 463.4246592605662727 343.6430356777030966, 464.0798580577391022 342.8904598645719375, 464.5725714783865214 342.0227679241687611, 464.8831766031471489 341.0745167576526455, 464.9993032000341486 340.0834716366707084, 464.9163263841733738 339.0891021548600861, 464.6375508095448481 338.1310103026260094, 464.1740790570639206 337.2473532690553384, 463.5443694606101417 336.4733237848231511, 462.7735009811261193 335.8397485283107926, 292.1779645357767663 222.1093908980778906, 521.2126781251816965 164.8507125007266723, 521.2126781251816965 164.8507125007266438, 522.1543805669399489 164.5120554487718039, 523.0097792050349881 163.9926468835772653, 523.7446070407530669 163.3132941478750126, 524.3294271035638303 162.5012118972463213, 524.7408116868432444 161.5889318896323061, 524.9622808543857673 160.6129997734068411, 524.9849626214331693 159.6125110802694280, 524.8079483635763154 158.6275450706185381, 524.4383292159610619 157.6975591710650235, 523.8909120046585031 156.8598083224101458, 523.1876260898992541 156.1478525585079637, 522.3566448828429429 155.5902126019307730, 521.4312572276436413 155.2092273328493377, 520.4485338608891425 155.0201589005636151, 519.4478423696257323 155.0305813266319035, 349.7151310357609759 173.8897714748391081, 444.2399915200254554 22.6499947000158990, 444.2399915200254554 22.6499947000158883, 444.6715115921828101 21.7824083269838624, 444.9275854436395434 20.8478807083734132, 444.9985958041454523 19.8815095498393895, 444.8818757640429453 18.9195884930036193, 444.5818089343991346 17.9982440486761526, 444.1096648133582221 17.1520788069461005, 443.4831755417974932 16.4128718805953362, 442.7258699439179281 15.8083853887976744, 441.8661898639580272 15.3613218055506042, 440.9364219864447136 15.0884713313161907, 439.9714852572094514 15.0000813097167676, 439.0076194455472773 15.0994713718677183, 438.0810241007007448 15.3829087622282490, 437.2264990188738807 15.8397485283107695, 437.2264990188738807 15.8397485283107819, 266.8293246457370742 129.4378647770686541, 284.9319696191607250 20.8219949365267851, 284.9972548509964554 19.8343378311375389, 284.8667019190206133 18.8531728851298759, 284.5454270815070004 17.9169511175436220, 284.0460208258600119 17.0623622625131048, 283.3880544581302843 16.3228969298177553, 282.5973131201902788 15.7275341363929542, 281.7047852919733941 15.2996056433240497, 280.7454483793235909 15.0558816039900698, 279.7568979792339974 15.0059133560280014, 278.7778745404031611 15.1516591125411484, 277.8467451580276020 15.4874072213945020, 277.0000000000000000 16.0000000000000000, 199.3125897611296296 74.2655576791527636, 61.9695964928958389 15.4042748499097097, 61.0577229412326901 15.1131582612499038, 60.1070833258100023 15.0011468153852068, 59.1525190540580397 15.0723457866581878, 58.2290153739834082 15.3241456979057968, 57.3704191476974827 15.7473179590752430, 56.6081983473453221 16.3263530995686352, 55.9702887385167855 17.0400291979353362, 55.4800700207576227 17.8621896756854248, 55.1555089501321589 18.7627019487001512, 55.0085008488152880 19.7085618011956996, 55.0444336357096375 20.6651030063937284, 55.2619903565793607 21.5972678607087296, 55.6531974510677969 22.4708920657520679, 56.2037169875891536 23.2539568665980845, 56.2037169881735181 23.2539568672798431, 171.1297155297759502 157.3342884991493520, 38.6263943605131104 195.1923802617958756, 37.7236070748838870 195.5482548084508210, 36.9065643697948431 196.0718126315338168, 36.2060416809180552 196.7433329502282788, 35.6484255004332908 197.5375217006599371, 35.2547194806408726 198.4244642839367998, 35.0397532922671431 199.3707523552484702, 35.0116240372882501 200.3407422114144651), (171.2797148927206194 181.5105578027070976, 221.5811388300841998 164.7434164902525708, 222.4761523413605460 164.3438081889483442, 223.2760087068006385 163.7772697749785209, 223.9499698948452533 163.0655730018735881, 224.4721359549995725 162.2360679774997720, 224.8224403384060111 161.3206321147520441, 224.9874210440632112 160.3544451004533755, 224.9607379559749916 159.3746369597194246, 224.7434164902525708 158.4188611699158002, 211.4412280563536797 118.5122958682191552, 256.4644660940672907 163.5355339059327378, 256.4644660940672907 163.5355339059327662, 257.2715015137021624 164.1899040574063804, 258.1963542034216061 164.6633530683924107, 259.1990887849651699 164.9354372881874724, 260.2364069198474681 164.9944080498341634, 261.2635169428083373 164.8377189805977991, 262.2360679774997720 164.4721359549995725, 297.7639320225001711 146.7082039324993730, 312.9496560052372729 177.0796518979736049, 258.4188611699158287 195.2565835097474292, 258.4188611690639732 195.2565835100313620, 257.4726575011026739 195.6857747053187495, 256.6355851356503308 196.3012552642088053, 255.9437890738596764 197.0764485770453973, 255.4271412485323651 197.9778815961655880, 255.1079506463375708 198.9666302107517879, 255.0000000000000000 200.0000000000000000, 255.0000000000000000 289.1886116991581162, 244.7434164902525708 258.4188611699158287, 244.4721359549995725 257.7639320225002280, 224.4721359549995725 217.7639320225001995, 224.0203216174686531 217.0272884276953107, 223.4484154518346486 216.3794432925932369, 222.7735009811261477 215.8397485283107926, 171.2797148927206194 181.5105578027070976)) + + + +Case #14 + +POLYGON ((260 320, 240 260, 220 220, 160 180, 220 160, 260 160, 260 200, 260 320)) + + + + POLYGON ((198.3510306352500834 185.1358965292041319, 229.4299033358288966 205.8551449962566551, 231.7246125362377711 207.6901071948169886, 233.6690934993933979 209.8927806541640280, 235.2052622469985579 212.3973688765007068, 243.0000000000000000 227.9868443825035911, 243.0000000000000000 177.0000000000000000, 222.7587202228624506 177.0000000000000000, 198.3510306352500834 185.1358965292041319)) + + + +Case #15 + +POLYGON ((260 320, 240 260, 220 220, 260 160, 260 320)) + + + + POLYGON ((239.6172404168401044 221.2213252161837715, 243.0000000000000000 227.9868443825035627, 243.0000000000000000 216.1471858414438998, 239.6172404168401044 221.2213252161837715)) + + + +Case #16 + +POLYGON ((260 320, 240 260, 220 220, 260 160, 260 320)) + + + + POLYGON ((236.1553744609271348 221.0057972368572052, 246.0000000000000000 240.6950483150029356, 246.0000000000000000 206.2388589282479074, 236.1553744609271348 221.0057972368572052)) + + + +Case #17 + +LINESTRING (260 160, 260 200, 260 320, 240 260, 220 220) + + + + POLYGON ((194.0654105708713075 221.8431145223576380, 194.9233102402886857 226.8672869967105612, 196.7448930340021889 231.6275534829989056, 215.9185482506166807 269.9748639162278891, 235.3342342506866487 328.2219219164377932, 237.4777395232139554 332.9902957247247173, 240.5318638861003819 337.2334464414602166, 244.3731231112844569 340.7798151749462932, 248.8462075669875730 343.4860152933884478, 253.7702616902279829 345.2426298271744827, 258.9461963313527804 345.9786354111978994, 264.1647383181811506 345.6642738985748906, 269.2148917801190464 344.3122555407904315, 273.8924691243435632 341.9772450873434195, 278.0083467399866208 338.7536515828895176, 281.3961116360320602 334.7718112247094950, 283.9187898443843778 330.1927176150511514, 285.4743845455978999 325.2015124745599906, 286.0000000000000000 320.0000000000000000, 286.0000000000000000 160.0000000000000000, 286.0000000000000000 159.9999999999999716, 285.5004172904839947 154.9276516275806443, 284.0208678452934237 150.0502307585076380, 281.6182099198661604 145.5551739414903238, 278.3847763108502136 141.6152236891497580, 274.4448260585096477 138.3817900801338112, 269.9497692414923335 135.9791321547065479, 265.0723483724193557 134.4995827095160053, 260.0000000000000000 134.0000000000000000, 254.9276516275806728 134.4995827095160053, 250.0502307585076949 135.9791321547065479, 245.5551739414903807 138.3817900801338112, 241.6152236891497864 141.6152236891497580, 238.3817900801338396 145.5551739414902954, 235.9791321547065479 150.0502307585076380, 234.4995827095160053 154.9276516275806159, 234.0000000000000000 160.0000000000000000, 234.0000000000000000 198.2083323711141816, 232.8759921750747992 197.4121974174686045, 228.2219219164377648 195.3342342506866487, 223.2518878094589638 194.2041626289299927, 218.1568854776423336 194.0654105708713075, 213.1327130032893820 194.9233102402887141, 208.3724465170010944 196.7448930340021889, 204.0590203902573592 199.4601565468047113, 200.3581971701116515 202.9647547246366344, 197.4121974174686329 207.1240078249251440, 195.3342342506866487 211.7780780835621783, 194.2041626289299927 216.7481121905409793, 194.0654105708713075 221.8431145223576380)) + + + +Case #18 + +POLYGON ((260 400, 220 300, 80 300, 180 220, 40 200, 180 160, 60 20, 200 80, 280 20, 260 140, 440 20, 340 180, 520 160, 280 220, 460 340, 300 300, 260 400), (260 320, 240 260, 220 220, 160 180, 220 160, 200 100, 260 160, 300 140, 320 180, 260 200, 260 320)) + + + + POLYGON ((73.4860813026739379 197.7126580885165197, 180.9899494936611575 213.0703535443718408, 182.3056363280740300 213.3906096254900149, 183.5350455074643037 213.9581912261180889, 184.6321721438235670 214.7518592597011207, 185.5559614045681940 215.7419144124444017, 186.2718447976156142 216.8913085012144109, 186.7530337355075574 218.1570308285006945, 186.9815219729924536 219.4917176565886905, 186.9487594065303711 220.8454245739010844, 186.6559720219250664 222.1674954309872589, 186.1141160175398568 223.4084579099737482, 185.3434678198210861 224.5218747946550195, 184.3728653328809628 225.4660816661012177, 99.9554674155074849 293.0000000000000000, 220.0000000000000000 293.0000000000000000, 221.3795809208727405 293.1372923359097058, 222.7050458739731766 293.5437838620674711, 223.9244016651362870 294.2035293867151040, 224.9898173786838527 295.0906494800855171, 225.8595006111793566 296.1703456307926672, 226.4993368361968180 297.4002652655212842, 260.0000000000000000 381.1519231750292533, 293.5006631638032104 297.4002652655212842, 294.1661219403375753 296.1314257426036534, 295.0759831943759082 295.0246549367977309, 296.1921295120130253 294.1263195229296343, 297.4678014439602407 293.4740540553273149, 298.8495564298037834 293.0951843187675081, 300.2795077022184955 293.0055825514628509, 301.6977493752543182 293.2090024989826702, 422.4918692298074916 323.4075324626209635, 276.1170986264233989 225.8243520603649017, 275.0751191377321447 224.9744897720738948, 274.2148564119547700 223.9410802663354616, 273.5680521626788959 222.7622539741994387, 273.1585719772567700 221.4815068712711650, 273.0015247315887450 220.1460955763733693, 273.1027051073951384 218.8052936911329880, 273.4583797818045241 217.5085737175472218, 274.0554251783708537 216.3037816365840911, 274.8718116968233858 215.2353715016632805, 275.8774165545875121 214.3427651864527661, 277.0351352480957985 213.6588978085102610, 278.3022506235261062 213.2090024992875783, 278.3022506247456818 213.2090024989826702, 417.3387123436478987 178.4498870692571018, 340.7730206825239065 186.9571861427153294, 339.3500498878744907 186.9697607456603521, 337.9539393295281116 186.6942987483938907, 336.6423855272677770 186.1421840620824071, 335.4695905565998828 185.3362337163163147, 334.4840220605933041 184.3097549085741491, 333.7264102463850008 183.1051685305852743, 333.2280646437002360 181.7722560565836432, 333.0095801880563045 180.3661022436220946, 333.0799861018467709 178.9448186651734716, 333.4363727471683205 177.5671421566632660, 334.0640118712981348 176.2900074210437538, 334.0640118719643965 176.2900074199777407, 416.8351501132551675 43.8561862339125383, 263.8829013735766011 145.8243520603649017, 262.6893944488330703 146.4627515423839270, 261.3953364072212366 146.8595215803059375, 260.0491095087077724 146.9998277304626981, 258.7010465032032016 146.8784242245705798, 257.4015487890115423 146.4998500985878707, 256.1992020046532161 145.8782594871754270, 255.1389595083396387 145.0368924287141965, 254.2604616611944550 144.0072059664286428, 253.5965537528831817 142.8276980320192422, 253.1720579814688108 141.5424680844595855, 253.0028454007270966 140.1995683188137320, 253.0952425329683138 138.8492070901025102, 253.0952425331749964 138.8492070888624994, 270.2229832929357372 36.0827625302982113, 204.1999999999999886 85.5999999999999943, 202.9423960790961701 86.3515592820755131, 201.5559026611282718 86.8248931793174563, 200.1012540709528764 86.9992676483411742, 198.6421701206390367 86.8670443437271160, 197.2425649099458269 86.4340152101264039, 84.8909725436656686 38.2833327674349064, 185.3147962165570846 155.4444603858082132, 186.1142829007226851 156.5918414634981559, 186.6697395331827920 157.8752471768465000, 186.9589970202038671 159.2434549102705148, 186.9705106687025307 160.6418574744477041, 186.7038209519796794 162.0146425598100848, 186.1695718501092358 163.3070202881657167, 185.6570600448659434 164.0689987779851435, 211.1456225515285325 155.5728112757642805, 193.3592169136464065 102.2135943621178598, 193.3592169132488721 102.2135943609252706, 193.0594928825265981 100.9106925673908677, 193.0129397948266501 99.5745711701319181, 193.2212557809792770 98.2539682668711265, 193.6768420367806414 96.9970558826086204, 194.3630800068345650 95.8496827843342061, 195.2549375845420059 94.8537020419132375, 196.3198822157007442 94.0454443412052683, 197.5190675981640709 93.4543927388270106, 198.8087506899613288 93.1021071999245748, 200.1418873372542748 93.0014381489103812, 201.4698483179327297 93.1560577207087448, 202.7441932042174528 93.5603258111976857, 203.9184373385559468 94.1994958129649973, 204.9497474683058442 95.0502525316941700, 261.3821713435749530 151.4826764069632645, 296.8695048315003078 133.7390096630005871, 298.1511150393471326 133.2485835262315845, 299.5037768593652459 133.0176105383115157, 300.8755082563928340 133.0549668616349948, 302.2135943621178740 133.3592169136464065, 303.4666132779047416 133.9186685354723068, 304.5864121895208996 134.7118223150300480, 305.5299578527833546 135.7081977973769824, 306.2609903369993845 136.8695048315003078, 326.2609903369993845 176.8695048315003078, 326.7401067069822034 178.1103011937101428, 326.9758738477949578 179.4193244798940441, 326.9597794680934726 180.7493128555578323, 326.6924046499087808 182.0522475488787961, 326.1834028688805915 183.2810865519092260, 325.4511514588469936 184.3914630560566081, 324.5220881045417514 185.3432873004136354, 323.4297563181003738 186.1021939987557232, 322.2135943621178740 186.6407830863535935, 267.0000000000000000 205.0453145403928943, 267.0000000000000000 320.0000000000000000, 266.8584881468917160 321.4004072046892020, 266.4396741888727433 322.7441932040522374, 265.7604915943163064 323.9770260989602662, 264.8484010453810242 325.0490600415471931, 263.7402801488617001 325.9169506004386108, 262.4809324023397608 326.5456072609820239, 261.1212757010487735 326.9096122034624727, 259.7162836276718849 326.9942479953224961, 258.3227627627537117 326.7960926457777759, 256.9970558834197618 326.3231579636045581, 255.7927639145765966 325.5945656240240282, 254.7585787385654896 324.6397740419316165, 253.9363144870191604 323.4973873105028019, 253.3592169136464065 322.2135943621178740, 233.5165322213198635 262.6855402851382451, 214.5703578501880884 224.7931915428746947, 156.1170986264233989 185.8243520603649017, 156.1170986253774231 185.8243520596676035, 155.0231091408172404 184.9224544056581294, 154.1332973523846590 183.8186123192153332, 153.4841679225465896 182.5581110879766982, 153.1023514838049664 181.1926629645598155, 153.0035121129924391 179.7782856636201529, 153.1917047101640605 178.3730042266809903, 153.6592086457127948 177.0344705360768103, 154.3868445003602119 175.8175981378084032, 155.3447609037176562 174.7723094050580812, 156.3685660265952038 174.0319481673961661, 73.4860813026739379 197.7126580885165197)) + + + +Case #19 + +POLYGON ((32 136, 27 163, 30 236, 34 252, 49 291, 72 326, 83 339, 116 369, 155 391, 176 400, 219 414, 264 417, 279 416, 339 401, 353 395, 380 381, 394 372, 441 328, 458 303, 463 294, 480 251, 486 205, 486 183, 473 115, 469 105, 460 85, 454 74, 423 33, 382 2, 373 -3, 336 -19, 319 -24, 275 -31, 252 -32, 203 -27, 190 -24, 149 -10, 139 -5, 84 37, 76 46, 52 81, 36 121, 32 136)) + + + + POLYGON ((210.7267553108988238 176.9256915755600801, 211.8671630388668063 204.6756129561149464, 212.7392713423978705 206.9430945452957076, 217.1208592864501838 213.6107283732014253, 223.8552432300779174 219.7328955946811675, 236.2393055009007128 226.7187768756581363, 240.5016559451048010 228.5454984946027537, 253.9490540002205137 232.9237211171985678, 256.1814740341310426 233.0725491194592678, 278.4949667339785151 227.4941759444973854, 283.1893383949868621 225.0600573054560130, 299.5152762254757022 209.7762006130834607, 301.4726576684510633 204.8251769632046262, 302.4401896474719820 197.4074317907112288, 297.2128574239011982 170.0644632366487485, 292.3573443617199246 163.6426556382799902, 285.7526778147497453 158.6488833710586164, 276.1059779842289004 154.4773374984009706, 257.0088333017464493 151.4391553898242080, 236.3522756410080490 153.5469673960220121, 230.1160214134394835 155.6764200590941982, 214.5153345565076393 167.5896718407512651, 214.3853233124629014 167.7792715716498435, 210.7267553108988238 176.9256915755600801)) + + + +Case #20 + +POLYGON ((13841 1031, 13851 903, 13853 885, 13853 875, 13856 862, 13859 831, 13670 900, 13841 1031)) + + + + POLYGON ((13506.2449358346930239 891.0401473105671357, 13507.5974451398560632 922.8344076975459984, 13515.0648325523125095 953.7688933116278349, 13528.3659315359454922 982.6788404026061698, 13546.9999211581762211 1008.4757143553580363, 13570.2651832991996343 1030.1881958460821807, 13741.2651832991996343 1161.1881958460821807, 13741.2651832991996343 1161.1881958460819533, 13768.4021467823731655 1178.0562875506921046, 13798.2948576844864874 1189.3422584776781150, 13829.8086163241805480 1194.6177036002541172, 13861.7471895460166706 1193.6823718967168588, 13892.8982186255980196 1186.5717676941726495, 13922.0792392863841087 1173.5558029570918279, 13948.1825669508853025 1155.1285516785676464, 13970.2173434235901368 1131.9894952881238623, 13987.3471489523926721 1105.0169709830538523, 13998.9217519494322914 1075.2348308601026474, 14004.5017911812756211 1043.7735774360371579, 14014.2929847110062838 918.4463002554892910, 14015.9969324864741793 903.1107702762748204, 14015.9969324864741793 903.1107702762747067, 14016.4532573949691141 894.8716483052672857, 14019.2374022230687842 877.7971679570712240, 14022.2374022230687842 846.7971679570712240, 14022.0923450200498337 813.7695909549128146, 14015.3326253785835434 781.4408409853512012, 14002.2324024788667884 751.1221001770096564, 13983.3229921980455401 724.0430291616075920, 13959.3713181210496259 701.3018947762033122, 13931.3488068273163663 683.8210268052406491, 13900.3919889913086081 672.3094103377792408, 13867.7564042285048345 667.2339309106217797, 13834.7656792036668776 668.8004386703205455, 13802.7578442799749610 676.9453995494958463, 13802.7578442799749610 676.9453995494959599, 13613.7578442799749610 745.9453995494959599, 13613.7578442799731420 745.9453995494963010, 13585.0645211260962242 759.7075752990896262, 13559.5692394115667412 778.7521253140495219, 13538.2319627288889023 802.3619728091613297, 13521.8560949787515710 829.6481456885808257, 13511.0582301259437372 859.5832486547654980, 13506.2449358346930239 891.0401473105671357)) + + + +Case #21 + +POLYGON ((20 60, 20 20, 240 20, 40 21, 240 22, 40 22, 240 23, 240 60, 20 60)) + + + + POLYGON ((-140.0000000000000000 19.9999999712661989, -140.0000000000000000 20.0000000000000000, -140.0000000000000000 60.0000000000000000, -136.9256448645168689 91.2144515225805748, -127.8207252018058711 121.2293491784143811, -113.0351379684072555 148.8912372831363484, -93.1370849898475939 173.1370849898476081, -68.8912372831363200 193.0351379684072697, -41.2293491784143527 207.8207252018058853, -11.2144515225805126 216.9256448645168689, 20.0000000000000107 220.0000000000000000, 240.0000000000000000 220.0000000000000000, 271.2144515225805321 216.9256448645168689, 301.2293491784143953 207.8207252018058853, 328.8912372831363768 193.0351379684072413, 353.1370849898476081 173.1370849898476081, 373.0351379684072413 148.8912372831363484, 387.8207252018058853 121.2293491784143669, 396.9256448645168689 91.2144515225805179, 400.0000000000000000 60.0000000000000000, 400.0000000000000000 23.0000000000000000, 399.9699034646581026 22.6934426863818643, 399.9995000085935999 22.3999962500605676, 399.8653662226012102 21.0000000000001599, 399.9995000085935999 19.6000037499394679, 396.8569884248131530 -11.5576485546376748, 387.7056613593456973 -41.5064029382169224, 372.8960842304180119 -69.0989943614496838, 352.9955764620684135 -93.2784167439007064, 328.7664788360034436 -113.1184143349722859, 301.1369500424084436 -127.8589643528996618, 271.1654111438951986 -136.9353916369152557, 240.0000000000000000 -140.0000000000000000, 20.0000000000000000 -140.0000000000000000, -11.2144515190578034 -136.9256448652175777, -41.2293491717777130 -127.8207252045548756, -68.8912372741771435 -113.0351379743935922, -93.1370849796886660 -93.1370850000065360, -113.0351379584299423 -68.8912372980684324, -127.8207251935589142 -41.2293491983242930, -136.9256448596119071 -11.2144515472394666, -140.0000000000000000 19.9999999712661989)) + + + +Case #22 + +POLYGON ((635074.6769928858 6184832.427381967, 635075.6723193424 6184799.950949265, 634717.5983159657 6184655.107092909, 634701.0176852546 6184648.498845058, 634697.7188197445 6184647.20632975, 634694.416887708 6184645.922033237, 634691.1138635761 6184644.642692243, 634687.8077729489 6184643.371570057, 634684.498667351 6184642.107006015, 634681.1875340013 6184640.847368483, 634677.8742698929 6184639.595978798, 634674.5570551592 6184638.351118257, 634671.2386969016 6184637.112873929, 634667.9173237421 6184635.881187774, 634664.5938713895 6184634.656088823, 634661.2674041622 6184633.437548058, 634657.9388577675 6184632.2255945075, 634654.6082322216 6184631.02022817, 634651.2745403448 6184629.823080709, +634647.9388208436 6184628.630859804, 634644.6000865338 6184627.4451971175, 634641.2592216335 6184626.267782336, 634637.9163291481 6184625.095294129, 634634.5713061031 6184623.931053837, 634631.2232683088 6184622.773371783, 634636.1918816608 6184608.365992378, 634633.2495506873 6184607.353869728, 634630.3051410569 6184606.348333739, 634627.3587557608 6184605.346063082, 634624.4102918282 6184604.3503790945, 634621.4607364619 6184603.359650123, 634618.5091539674 6184602.37384716, 634615.5564800596 6184601.392999219, 634612.6017790422 6184600.417077295, 634609.6450509242 6184599.446081388, 634606.6862442375 6184598.481672177, 634603.7263976521 6184597.52055733, 634600.7654082242 6184596.566058185, 634597.80145603 6184595.61645607, 634594.8364124894 6184594.671808995, 634591.8702261405 6184593.733777636, 634588.9020642313 6184592.799011653, 634585.9318238292 6184591.870832384, 634582.960543591 6184590.945947501, 634579.9871848791 6184590.027649342, 634577.0127348808 6184589.11430624, +634574.0362578988 6184588.205889201, 634571.0586381858 6184587.304087893, 634568.0790429743 6184586.405551985, 634565.0983050519 6184585.513631817, 634562.115540186 6184584.626637723, 634559.1316840936 6184583.744598703, 634556.1458010782 6184582.867485766, 634553.1587753976 6184581.996988578, 634550.1697742692 6184581.12975681, 634547.1796305005 6184580.269140797, 634544.1874598458 6184579.41345088, 634541.194198027 6184578.562716054, 634538.1998450506 6184577.716936321, 634535.2034137691 6184576.877743362, 634532.2059428038 6184576.041844833, 634529.2063935531 6184575.212533085, 634526.2057531879 6184574.388176442, 634523.2040217179 6184573.568774906, 634520.2002119992 6184572.755960159, 634517.1953626422 6184571.946439856, 634514.1893707667 6184571.143535337, 634510.267712847 6184585.871039091, 634281.9449709259 6184525.076957544, 633860.4859191478 6184412.861324424, 633664.3557212166 6184360.639468017, 633645.5884675509 6184355.641948889, 633486.222 6184313.208, 633485.7474265156 6184328.852301474, +633485.2749953512 6184344.496113185, 633650.4562371405 6184388.478170839, 633669.5206846121 6184393.553017912, 633852.6461183216 6184442.312440121, 634280.9949861752 6184556.364455, 634502.4254528129 6184615.324425217, 634505.716566367 6184616.204307566, 634509.0065372197 6184617.090806118, 634512.2953653594 6184617.983920872, 634515.5812308139 6184618.88193318, 634518.8659020835 6184619.788222348, 634522.1484948951 6184620.7010987215, 634525.4299963829 6184621.61893061, 634528.7093679372 6184622.545010364, 634531.9867124417 6184623.476016638, 634535.2619784358 6184624.413610098, 634538.5360501477 6184625.3594804, 634541.807159074 6184626.310248219, 634545.0771251463 6184627.267632202, 634548.3459483465 6184628.231632348, 634551.611808724 6184629.200529998, 634554.8764747474 6184630.177704472, 634558.138126462 6184631.161437107, 634561.3986867118 6184632.150125222, 634564.6571168633 6184633.147061154, 634567.9135198268 6184634.14892356, 634571.1678441261 6184635.157373106, +634574.421025444 6184636.172438785, 634577.6711923747 6184637.194062597, 634580.9192805979 6184638.222273537, 634584.1662257991 6184639.257100599, 634587.410208043 6184640.296825108, 634590.6529957657 6184641.3448264, 634593.8928205046 6184642.397725132, 634597.131502168 6184643.457239971, 634600.3671178726 6184644.524973575, 634603.6016934284 6184645.596001944, 634605.6958877691 6184646.2958191885, 634606.946276627 6184646.713661825, 634608.6177147877 6184647.275847967, 634610.2887808911 6184647.8379089665, 634613.6292576884 6184648.967082693, 634616.9666683461 6184650.104475331, 634620.3029357173 6184651.248484221, 634623.6361369188 6184652.4007120095, 634626.9663749042 6184653.557837355, 634630.2954695637 6184654.721578941, 634633.6214980055 6184655.893539405, 634636.9454988878 6184657.070426424, 634640.2664335228 6184658.255532312, 634643.5852890809 6184659.44722541, 634646.9020655481 6184660.6455057105, 634650.2167629072 6184661.850373212, 634653.5284454564 6184663.061798892, +634656.8370616816 6184664.2814434115, 634660.1436502574 6184665.506014449, 634663.4481081718 6184666.7388333315, 634666.7496027217 6184667.976549702, 634670.0489665787 6184669.222513908, 634673.3453155413 6184670.475036258, 634676.6396367943 6184671.732485097, 634679.9308916207 6184672.9981527375, 634683.2200672035 6184674.270407524, 634686.5062278372 6184675.54922043, 634689.789322 6184676.8362521175, 634693.0703883899 6184678.128210268, 634696.3493754807 6184679.426755545, 634699.6253475712 6184680.731858918, 634702.8982531315 6184682.04518105, 634706.1681951834 6184683.363400595, 635074.6769928858 6184832.427381967)) + + + + POLYGON ((633485.1750409196829423 6184344.4930946370586753, 633485.1762941706692800 6184344.5121779590845108, 633485.1811573562445119 6184344.5306737218052149, 633485.1894526082323864 6184344.5479054534807801, 633485.2008765331702307 6184344.5632429160177708, 633485.2150113079696894 6184344.5761251496151090, 633485.2313399621052667 6184344.5860809953883290, 633485.2492652848595753 6184344.5927463248372078, 633650.4305070741102099 6184388.5748039791360497, 633669.4949609669856727 6184393.6496527614071965, 633852.6203885280992836 6184442.4090733332559466, 634280.9692566331941634 6184556.4610882792621851, 634502.3996737367706373 6184615.4210453070700169, 634505.6906436235876754 6184616.3008892470970750, 634508.9804253297625110 6184617.1873368322849274, 634512.2690805093152449 6184618.0804046178236604, 634515.5547503855777904 6184618.9783634738996625, 634518.8392070047557354 6184619.8845934178680182, 634522.1216303266119212 6184620.7974226567894220, 634525.4029398488346487 6184621.7152008526027203, 634528.6821164987049997 6184622.6412255661562085, 634531.9592889761552215 6184623.5721829719841480, 634535.2343404222046956 6184624.5097150141373277, 634538.5082174637354910 6184625.4555290760472417, 634541.7791545332875103 6184626.4062469452619553, 634545.0489324463997036 6184627.3635758385062218, 634548.3175845359219238 6184628.3275255225598812, 634551.5832501659169793 6184629.2963653961196542, 634554.8476990603376180 6184630.2734748786315322, 634558.1091800214489922 6184631.2571560135111213, 634561.3695489823585376 6184632.2457861248403788, 634564.6277857733657584 6184633.2426628973335028, 634567.8840174116194248 6184634.2444725930690765, 634571.1381510894279927 6184635.2528630699962378, 634574.3911394432652742 6184636.2678685393184423, 634577.6411091837799177 6184637.2894303686916828, 634580.8890075180679560 6184638.3175811972469091, 634584.1357820932753384 6184639.3523538792505860, 634587.3795713706640527 6184640.3920165412127972, 634590.6221661970485002 6184641.4399554934352636, 634593.8618204926606268 6184642.4927988341078162, 634597.1002870653755963 6184643.5522433063015342, 634600.3357321795774624 6184644.6199206169694662, 634603.5701296605402604 6184645.6908900216221809, 634605.6641935704974458 6184646.3906636806204915, 634606.9144892485346645 6184646.8084751795977354, 634608.5858348999172449 6184647.3706302056089044, 634610.2568298997357488 6184647.9326672898605466, 634613.5971169143449515 6184649.0617768643423915, 634616.9343211946543306 6184650.1990991681814194, 634620.2703821876784787 6184651.3430372914299369, 634623.6033904763171449 6184652.4951983932405710, 634626.9334648980293423 6184653.6522669075056911, 634630.2623536150204018 6184654.8159365020692348, 634633.5881937453523278 6184655.9878306137397885, 634636.9120060630375519 6184657.1646508695557714, 634640.2327314324211329 6184658.3496820786967874, 634643.5514026361051947 6184659.5413089804351330, 634646.8679948954377323 6184660.7395227318629622, 634650.1825049890903756 6184661.9443221632391214, 634653.4939745524898171 6184663.1556699322536588, 634656.8024032171815634 6184664.3752453122287989, 634660.1088086073286831 6184665.5997485080733895, 634663.4130791015923023 6184666.8324974682182074, 634666.7143862942466512 6184668.0701435990631580, 634670.0135425933403894 6184669.3160294229164720, 634673.3097255165921524 6184670.5684886835515499, 634676.6038596450816840 6184671.8258660966530442, 634679.8949075534474105 6184673.0914541659876704, 634683.1838965658098459 6184674.3636367861181498, 634686.4698460333747789 6184675.6423675166442990, 634689.7527541010640562 6184676.9293262520805001, 634693.0336594296386465 6184678.2212209822610021, 634696.3124607891077176 6184679.5196927059441805, 634699.5882220339262858 6184680.8247120818123221, 634702.8609382446156815 6184682.1379582323133945, 634706.1307511236518621 6184683.4561257045716047, 635074.6394940027967095 6184832.5200848998501897, 635074.6579174628714100 6184832.5255457498133183, 635074.6770452730124816 6184832.5273819537833333, 635074.6961711487965658 6184832.5255257096141577, 635074.7145888772793114 6184832.5200455598533154, 635074.7316183934453875 6184832.5111438557505608, 635074.7466308913426474 6184832.4991492871195078, 635074.7590720423031598 6184832.4845047481358051, 635074.7684824634343386 6184832.4677509795874357, 635074.7745146797969937 6184832.4495066069066525, 635074.7769459548871964 6184832.4304452938959002, 635075.7722724115010351 6184799.9540125913918018, 635075.7708403052529320 6184799.9338139239698648, 635075.7653684740653262 6184799.9143178695812821, 635075.7560812836745754 6184799.8963238382712007, 635075.7433595430338755 6184799.8805696517229080, 635075.7277248908067122 6184799.8677012901753187, 635075.7098184056812897 6184799.8582464046776295, 634717.6358150290325284 6184655.0143900485709310, 634717.6353390680160373 6184655.0141989374533296, 634701.0547083568526432 6184648.4059510864317417, 634701.0541656919522211 6184648.4057366382330656, 634697.7553001819178462 6184647.1132213305681944, 634697.7550695642130449 6184647.1131313024088740, 634694.4531375276856124 6184645.8288347898051143, 634694.4530055567156523 6184645.8287835670635104, 634691.1499814247945324 6184644.5494425725191832, 634691.1497503885766491 6184644.5493534151464701, 634687.8436597613617778 6184643.2782312296330929, 634687.8434698932105675 6184643.2781584514304996, 634684.5343642953084782 6184642.0135944094508886, 634684.5342238259036094 6184642.0135408500209451, 634681.2230904762400314 6184640.7539033181965351, 634681.2228669453179464 6184640.7538185874000192, 634677.9096028369385749 6184639.5024289023131132, 634677.9094046299578622 6184639.5023542810231447, 634674.5921898962697014 6184638.2574937399476767, 634674.5920154738705605 6184638.2574284691363573, 634671.2736572162248194 6184637.0191841404885054, 634671.2734667608747259 6184637.0191132929176092, 634667.9520936013432220 6184635.7874271385371685, 634667.9519109108950943 6184635.7873595925047994, 634664.6284585583489388 6184634.5622606417164207, 634664.6282678926363587 6184634.5621905773878098, 634661.3018006653292105 6184633.3436498120427132, 634661.3016176864039153 6184633.3435829859226942, 634657.9730712916934863 6184632.1316294353455305, 634657.9728881521150470 6184632.1315629547461867, 634654.6422626061830670 6184630.9261966170743108, 634654.6420296394499019 6184630.9261126313358545, 634651.3083377627190202 6184629.7289651706814766, 634651.3081963286967948 6184629.7289145011454821, 634647.9724768274463713 6184628.5366935962811112, 634647.9722856546286494 6184628.5366254877299070, 634644.6335513448575512 6184627.3509628009051085, 634644.6333255147328600 6184627.3508829073980451, 634641.2924606144661084 6184626.1734681259840727, 634641.2923189303837717 6184626.1734183123335242, 634637.9494264449458569 6184625.0009301053360105, 634637.9492002010811120 6184625.0008510565385222, 634634.6041771561140195 6184623.8366107642650604, 634634.6039855444105342 6184623.8365442920476198, 634631.3503801986807957 6184622.7115150215104222, 634636.2864178437739611 6184608.3985946811735630, 634636.2909630801295862 6184608.3795154085382819, 634636.2916968743083999 6184608.3599159354344010, 634636.2885909986216575 6184608.3405502084642649, 634636.2817649291828275 6184608.3221631860360503, 634636.2714812498306856 6184608.3054621759802103, 634636.2581355508882552 6184608.2910896278917789, 634636.2422412118175998 6184608.2795984223484993, 634636.2244096524082124 6184608.2714306013658643, 634633.2820786787196994 6184607.2593079507350922, 634633.2818687518592924 6184607.2592359986156225, 634630.3374591214815155 6184606.2537000095471740, 634630.3373457209672779 6184606.2536613587290049, 634627.3909604249056429 6184605.2513907020911574, 634627.3907502815127373 6184605.2513194773346186, 634624.4422863489016891 6184604.2556354897096753, 634624.4421327267773449 6184604.2555837510153651, 634621.4925773604772985 6184603.2648547794669867, 634621.4924154026666656 6184603.2648005327209830, 634618.5408329081255943 6184602.2789975693449378, 634618.5406790509587154 6184602.2789463214576244, 634615.5880051432177424 6184601.2980983806774020, 634615.5878430343000218 6184601.2980446834117174, 634612.6331420168280602 6184600.3221227591857314, 634612.6329798559891060 6184600.3220693515613675, 634609.6762517379829660 6184599.3510734448209405, 634609.6760408123955131 6184599.3510044356808066, 634606.7172341257100925 6184598.3865952249616385, 634606.7171285666991025 6184598.3865608833730221, 634603.7572819812921807 6184597.4254460362717509, 634603.7570787509903312 6184597.4253802839666605, 634600.7960893231211230 6184596.4708811389282346, 634600.7959189455723390 6184596.4708263846114278, 634597.8319667513715103 6184595.5212242696434259, 634597.8318121144548059 6184595.5211748648434877, 634594.8667685738764703 6184594.5765277901664376, 634594.8665648184251040 6184594.5764631144702435, 634591.9003784694941714 6184593.6384317548945546, 634591.9002648042514920 6184593.6383958831429482, 634588.9321028951089829 6184592.7036299007013440, 634588.9318911200389266 6184592.7035634648054838, 634585.9616507178870961 6184591.7753841951489449, 634585.9615447405958548 6184591.7753511425107718, 634582.9902645023539662 6184590.8504662597551942, 634582.9900525119155645 6184590.8504005307331681, 634580.0166938001057133 6184589.9321023719385266, 634580.0165384906576946 6184589.9320545438677073, 634577.0420884923078120 6184589.0187114421278238, 634577.0419255199376494 6184589.0186615511775017, 634574.0654485379345715 6184588.1102445116266608, 634574.0652436920208856 6184588.1101822322234511, 634571.0876239790813997 6184587.2083809245377779, 634571.0875102396821603 6184587.2083465512841940, 634568.1079150281148031 6184586.3098106430843472, 634568.1077099002432078 6184586.3097490239888430, 634565.1269719778792933 6184585.4178288560360670, 634565.1268087561475113 6184585.4177801664918661, 634562.1440438901772723 6184584.5307860728353262, 634562.1438879584893584 6184584.5307398410513997, 634559.1600318661658093 6184583.6487008212134242, 634559.1598685485078022 6184583.6486526951193810, 634556.1739855330670252 6184582.7715397579595447, 634556.1737797906389460 6184582.7714795600622892, 634553.1867541100364178 6184581.9009823715314269, 634553.1866403331514448 6184581.9009492872282863, 634550.1976392047945410 6184581.0337175196036696, 634550.1974332017125562 6184581.0336579885333776, 634547.2072894329903647 6184580.1730419751256704, 634547.2071259034564719 6184580.1729950597509742, 634544.2149552487535402 6184579.3173051429912448, 634544.2147987458156422 6184579.3172605242580175, 634541.2215369270415977 6184578.4665256980806589, 634541.2213803209597245 6184578.4664813252165914, 634538.2270273445174098 6184577.6207015924155712, 634538.2268137707142159 6184577.6206415230408311, 634535.2303824892733246 6184576.7814485644921660, 634535.2302756285062060 6184576.7814187007024884, 634532.2328046631300822 6184575.9455201709643006, 634532.2325909376377240 6184575.9454608252272010, 634529.2330416869372129 6184575.1161490771919489, 634529.2328847182216123 6184575.1161058163270354, 634526.2322443530429155 6184574.2917491737753153, 634526.2320872879354283 6184574.2917061606422067, 634523.2303558179410174 6184573.4723046245053411, 634523.2301417967537418 6184573.4722464568912983, 634520.2263320781057701 6184572.6594317099079490, 634520.2262249983614311 6184572.6594027988612652, 634517.2213756412966177 6184571.8498824955895543, 634517.2211681139888242 6184571.8498268257826567, 634514.2151762385619804 6184571.0469223074615002, 634514.1958225757116452 6184571.0437436839565635, 634514.1762207322753966 6184571.0444037253037095, 634514.1571247286628932 6184571.0488770408555865, 634514.1392691265791655 6184571.0569915585219860, 634514.1233407737454399 6184571.0684351371601224, 634514.1099523830926046 6184571.0827675797045231, 634514.0996189627330750 6184571.0994375636801124, 634514.0927380063803867 6184571.1178038464859128, 634510.1968111586757004 6184585.7486764127388597, 634281.9707008437253535 6184524.9803243651986122, 633860.5116482827579603 6184412.7646910361945629, 633664.3814508970826864 6184360.5428347745910287, 633645.6141997708473355 6184355.5453163227066398, 633486.2477301596663892 6184313.1113668847829103, 633486.2280114791356027 6184313.1081808526068926, 633486.2080529544036835 6184313.1089773764833808, 633486.1886508848983794 6184313.1137246768921614, 633486.1705793688306585 6184313.1222333470359445, 633486.1545594186754897 6184313.1341639105230570, 633486.1412301935488358 6184313.1490403665229678, 633486.1311234992463142 6184313.1662691766396165, 633486.1246425698045641 6184313.1851629503071308, 633486.1220459794858471 6184313.2049678713083267, 633485.6474724950967357 6184328.8492693454027176, 633485.1750409196829423 6184344.4930946370586753)) + + + +Case #23 + +MULTILINESTRING (( 80 285, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 98 123, 294 92, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 393 159 ), ( 51 235, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 382 83 )) + + + + POLYGON ((21.0014998875093717 235.2999850011248952, 21.6364368259640045 241.1466379203916972, 23.3997990299208922 246.7570789914520901, 26.2238214787868884 251.9157021103168574, 29.9999785735821156 256.4242642835171750, 34.5831547148468843 260.1095039951677563, 39.7972210137471762 262.8297995498561477, 45.4418038264983366 264.4806115149748962, 51.2999850011248952 264.9985001124906034, 52.0385924241797255 264.9911140382600365, 50.1834879597914352 281.6870542177546213, 50.1100802185175240 287.5676244773218286, 51.1853253319858510 293.3495223681659354, 53.3679022334902413 298.8105527968675688, 56.5739357167091015 303.7408514266327302, 60.6802197128466361 307.9509496460630089, 65.5289520307618574 311.2790557416359434, 70.9337986066776978 313.5972724625220280, 76.6870542177545929 314.8165120402085790, 82.5676244773217860 314.8899197814824902, 88.3495223681659070 313.8146746680141632, 93.8105527968674977 311.6320977665097871, 98.7408514266327018 308.4260642832909411, 102.9509496460629805 304.3197802871534350, 106.2790557416359150 299.4710479692382137, 108.5972724625220138 294.0662013933223307, 109.8165120402085648 288.3129457822453787, 112.4749782182002917 264.3867501803198365, 251.2999850011248952 262.9985001124906034, 257.5681863594468268 262.2721527726878321, 263.5457970774100431 260.2507426631358385, 268.9683548466559273 257.0237012990224912, 273.5959540907721248 252.7337999059409981, 349.5195865880894530 165.7983428479440420, 376.1856554292177179 183.8450763060813244, 381.3557722824174903 186.6480010283036961, 386.9733702766457668 188.3884285761859587, 392.8225682713696756 188.9994752951060093, 398.6785848679199944 188.4576590023347080, 404.3163766325831716 186.7838013941491511, 409.5192863895533719 184.0422278797218212, 414.0873692346955863 180.3382955917199411, 417.8450763060812960 175.8143445707823105, 420.6480010283036677 170.6442277175825950, 422.3884285761859587 165.0266297233542900, 422.9994752951059809 159.1774317286303813, 422.4576590023347080 153.3214151320800909, 420.7838013941491795 147.6836233674168568, 418.0422278797218496 142.4807136104466565, 414.3382955917199979 137.9126307653044705, 409.8143445707822821 134.1549236939186756, 389.2872504397274156 120.2628498880532533, 404.5959540907721248 102.7337999059410123, 408.0116525471484010 97.9463685143391842, 410.4277377836404526 92.5845565627513594, 411.7513609995662591 86.8544154775382395, 411.9316560970342493 80.9761513671044355, 410.9616944365592985 75.1756626246454260, 408.8787511007927264 69.6758587795823274, 405.7628724339999735 64.6880942093553983, 401.7337999059409981 60.4040459092278610, 396.9463685143392127 56.9883474528516558, 391.5845565627514020 54.5722622163595474, 385.8544154775382822 53.2486390004337267, 379.9761513671044781 53.0683439029657649, 374.1756626246454971 54.0383055634406944, 368.6758587795823701 56.1212488992072451, 363.6880942093554268 59.2371275659999696, 359.4040459092278752 63.2662000940589877, 339.2193138224577638 86.3784887430323778, 310.8143445707822821 67.1549236939186756, 305.8758593966222747 64.4506993992286823, 300.5190607344155183 62.7168675319561828, 294.9326356558352131 62.0145003254328842, 289.3133595589631568 62.3683378566703084, 93.3133595589631568 93.3683378566703084, 87.9092837190495118 94.7479656495791289, 82.8539812499324739 97.1040907473283994, 78.3221825506699076 100.3552765432906995, 74.4705237473907005 104.3891497432842925, 71.4321327555545196 109.0662844122064570, 69.3120278750040910 114.2250210623923437, 68.1834879597914352 119.6870542177546071, 58.7130084336350890 204.9213699531617863, 50.7000149988751048 205.0014998875093681, 44.8533620796082459 205.6364368259640116, 39.2429210085478530 207.3997990299209278, 34.0842978896831070 210.2238214787869026, 29.5757357164827823 213.9999785735821547, 25.8904960048322081 218.5831547148469269, 23.1702004501438559 223.7972210137472189, 21.5193884850250754 229.4418038264983863, 21.0014998875093717 235.2999850011248952), (119.1493942276556623 204.3170060952215863, 125.2894246846412329 149.0567319823514367, 286.9915584344174135 123.4813945015195031, 299.4516499708198012 131.9139817029231381, 237.2510968713003763 203.1359890687851077, 119.1493942276556623 204.3170060952215863)) + + + +Case #24 + +MULTILINESTRING (( 80 285, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 98 123, 294 92, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 393 159 ), ( 51 235, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 382 83 )) + + + + POLYGON ((21.0014998875093717 235.2999850011248952, 21.6364368259640045 241.1466379203916972, 23.3997990299208922 246.7570789914520901, 26.2238214787868884 251.9157021103168574, 29.9999785735821156 256.4242642835171750, 34.5831547148468843 260.1095039951677563, 39.7972210137471762 262.8297995498561477, 45.4418038264983366 264.4806115149748962, 51.2999850011248952 264.9985001124906034, 52.0385924241797255 264.9911140382600365, 50.1834879597914352 281.6870542177546213, 50.1100802185175240 287.5676244773218286, 51.1853253319858510 293.3495223681659354, 53.3679022334902413 298.8105527968675688, 56.5739357167091015 303.7408514266327302, 60.6802197128466361 307.9509496460630089, 65.5289520307618574 311.2790557416359434, 70.9337986066776978 313.5972724625220280, 76.6870542177545929 314.8165120402085790, 82.5676244773217860 314.8899197814824902, 88.3495223681659070 313.8146746680141632, 93.8105527968674977 311.6320977665097871, 98.7408514266327018 308.4260642832909411, 102.9509496460629805 304.3197802871534350, 106.2790557416359150 299.4710479692382137, 108.5972724625220138 294.0662013933223307, 109.8165120402085648 288.3129457822453787, 112.4749782182002917 264.3867501803198365, 251.2999850011248952 262.9985001124906034, 257.5681863594468268 262.2721527726878321, 263.5457970774100431 260.2507426631358385, 268.9683548466559273 257.0237012990224912, 273.5959540907721248 252.7337999059409981, 349.5195865880894530 165.7983428479440420, 376.1856554292177179 183.8450763060813244, 381.3557722824174903 186.6480010283036961, 386.9733702766457668 188.3884285761859587, 392.8225682713696756 188.9994752951060093, 398.6785848679199944 188.4576590023347080, 404.3163766325831716 186.7838013941491511, 409.5192863895533719 184.0422278797218212, 414.0873692346955863 180.3382955917199411, 417.8450763060812960 175.8143445707823105, 420.6480010283036677 170.6442277175825950, 422.3884285761859587 165.0266297233542900, 422.9994752951059809 159.1774317286303813, 422.4576590023347080 153.3214151320800909, 420.7838013941491795 147.6836233674168568, 418.0422278797218496 142.4807136104466565, 414.3382955917199979 137.9126307653044705, 409.8143445707822821 134.1549236939186756, 389.2872504397274156 120.2628498880532533, 404.5959540907721248 102.7337999059410123, 408.0116525471484010 97.9463685143391842, 410.4277377836404526 92.5845565627513594, 411.7513609995662591 86.8544154775382395, 411.9316560970342493 80.9761513671044355, 410.9616944365592985 75.1756626246454260, 408.8787511007927264 69.6758587795823274, 405.7628724339999735 64.6880942093553983, 401.7337999059409981 60.4040459092278610, 396.9463685143392127 56.9883474528516558, 391.5845565627514020 54.5722622163595474, 385.8544154775382822 53.2486390004337267, 379.9761513671044781 53.0683439029657649, 374.1756626246454971 54.0383055634406944, 368.6758587795823701 56.1212488992072451, 363.6880942093554268 59.2371275659999696, 359.4040459092278752 63.2662000940589877, 339.2193138224577638 86.3784887430323778, 310.8143445707822821 67.1549236939186756, 305.8758593966222747 64.4506993992286823, 300.5190607344155183 62.7168675319561828, 294.9326356558352131 62.0145003254328842, 289.3133595589631568 62.3683378566703084, 93.3133595589631568 93.3683378566703084, 87.9092837190495118 94.7479656495791289, 82.8539812499324739 97.1040907473283994, 78.3221825506699076 100.3552765432906995, 74.4705237473907005 104.3891497432842925, 71.4321327555545196 109.0662844122064570, 69.3120278750040910 114.2250210623923437, 68.1834879597914352 119.6870542177546071, 58.7130084336350890 204.9213699531617863, 50.7000149988751048 205.0014998875093681, 44.8533620796082459 205.6364368259640116, 39.2429210085478530 207.3997990299209278, 34.0842978896831070 210.2238214787869026, 29.5757357164827823 213.9999785735821547, 25.8904960048322081 218.5831547148469269, 23.1702004501438559 223.7972210137472189, 21.5193884850250754 229.4418038264983863, 21.0014998875093717 235.2999850011248952), (119.1493942276556623 204.3170060952215863, 125.2894246846412329 149.0567319823514367, 286.9915584344174135 123.4813945015195031, 299.4516499708198012 131.9139817029231381, 237.2510968713003763 203.1359890687851077, 119.1493942276556623 204.3170060952215863)) + + + +Case #25 - Invalid input! + +MULTIPOLYGON ((( 708258.754920656 2402197.91172757, 708257.029447455 2402206.56901508, 708652.961095455 2402312.65463437, 708657.068786251 2402304.6356364, 708258.754920656 2402197.91172757 )), (( 708653.498611049 2402311.54647056, 708708.895756966 2402203.47250014, 708280.326454234 2402089.6337791, 708247.896591321 2402252.48269854, 708367.379593851 2402324.00761653, 708248.882609455 2402253.07294874, 708249.523621829 2402244.3124463, 708261.854734465 2402182.39086576, 708262.818392579 2402183.35452387, 708653.498611049 2402311.54647056 ))) + + false + + + POLYGON ((708247.8964913242962211 2402252.4826993490569293, 708247.8964935755357146 2402252.4827196551486850, 708247.8964999067829922 2402252.4827390797436237, 708247.8965100536588579 2402252.4827568121254444, 708247.8965235925279558 2402252.4827721123583615, 708247.8965399585431442 2402252.4827843415550888, 708367.3795424886047840 2402324.0077023315243423, 708367.3795424884883687 2402324.0077023315243423, 708367.3795602144673467 2402324.0077107031829655, 708367.3795792331220582 2402324.0077154561877251, 708367.3795988133642823 2402324.0077164070680737, 708367.3796182030346245 2402324.0077135199680924, 708367.3796366568421945 2402324.0077069052495062, 708367.3796534657012671 2402324.0076968176290393, 708367.3796679835068062 2402324.0076836450025439, 708367.3796796525130048 2402324.0076678926125169, 708367.3796880241716281 2402324.0076501667499542, 708367.3796927768271416 2402324.0076311482116580, 708367.3796937278239056 2402324.0076115676201880, 708367.3796908406075090 2402324.0075921779498458, 708367.3796842261217535 2402324.0075737242586911, 708367.3796741386177018 2402324.0075569157488644, 708367.3796609656419605 2402324.0075423978269100, 708367.3796452134847641 2402324.0075307288207114, 708248.8827136848121881 2402253.0728945857845247, 708249.5237211110070348 2402244.3124597654677927, 708257.0394274791469797 2402206.5717926472425461, 708652.9610695739975199 2402312.6547309630550444, 708652.9610886982409284 2402312.6547341416589916, 708652.9611080762697384 2402312.6547335702925920, 708652.9611269800225273 2402312.6547292708419263, 708652.9611446990165859 2402312.6547214044257998, 708652.9611605671234429 2402312.6547102672047913, 708652.9611739881802350 2402312.6546962773427367, 708652.9611844575265422 2402312.6546799610368907, 708657.0688752535497770 2402304.6356819909997284, 708657.0688824839890003 2402304.6356635885313153, 708657.0688859523506835 2402304.6356441229581833, 708657.0688855230109766 2402304.6356243551708758, 708657.0688812127336860 2402304.6356050586327910, 708657.0688731900881976 2402304.6355869872495532, 708657.0688617686973885 2402304.6355708478949964, 708657.0688473950140178 2402304.6355572710745037, 708657.0688306309748441 2402304.6355467871762812, 708657.0688121319981292 2402304.6355398069135845, 708657.0445044980151579 2402304.6290268381126225, 708708.8958459561690688 2402203.4725457550957799, 708708.8958531989483163 2402203.4725273284129798, 708708.8958566694054753 2402203.4725078358314931, 708708.8958562314510345 2402203.4724880419671535, 708708.8958519023144618 2402203.4724687216803432, 708708.8958438517292961 2402203.4724506335332990, 708708.8958323950646445 2402203.4724344857968390, 708708.8958179816836491 2402203.4724209117703140, 708708.8958011765498668 2402203.4724104437045753, 708708.8957826382247731 2402203.4724034913815558, 708280.3264799062162638 2402089.6336824516765773, 708280.3264597709057853 2402089.6336792535148561, 708280.3264394054422155 2402089.6336802057921886, 708280.3264196563977748 2402089.6336852684617043, 708280.3264013445004821 2402089.6336942315101624, 708280.3263852309901267 2402089.6337067219428718, 708280.3263719857204705 2402089.6337222210131586, 708280.3263621591031551 2402089.6337400842458010, 708280.3263561597559601 2402089.6337595693767071, 708258.7633657812839374 2402197.9138868227601051, 708258.7549465369665995 2402197.9116309769451618, 708258.7549263836117461 2402197.9116277340799570, 708258.7549059916054830 2402197.9116286509670317, 708258.7548862107796595 2402197.9116336894221604, 708258.7548678650055081 2402197.9116426398977637, 708258.7548517190152779 2402197.9116551289334893, 708258.7548384453402832 2402197.9116706363856792, 708258.7548285971861333 2402197.9116885163821280, 708258.7548225849168375 2402197.9117080233991146, 708257.0293493838980794 2402206.5689955335110426, 708257.0293474586214870 2402206.5690142284147441, 708257.0293490652693436 2402206.5690329535864294, 708257.0293541471473873 2402206.5690510477870703, 708257.0293625248596072 2402206.5690678711980581, 708257.0293739024782553 2402206.5690828296355903, 708257.0293878779048100 2402206.5690953955054283, 708257.0294039577711374 2402206.5691051245667040, 708257.0294215739704669 2402206.5691116731613874, 708257.0392338818637654 2402206.5717407753691077, 708247.8964932467788458 2402252.4826790094375610, 708247.8964913242962211 2402252.4826993490569293), (708258.7635593785671517 2402197.9139386950992048, 708261.8547960097203031 2402182.3910687258467078, 708262.8183218683116138 2402183.3545945808291435, 708262.8183402057038620 2402183.3546090582385659, 708262.8183614019071683 2402183.3546188860200346, 708522.7761432345723733 2402268.6532660527154803, 708258.7635593785671517 2402197.9139386950992048)) + + + +Case #26 - Invalid output + +GEOMETRYCOLLECTION (POLYGON ((0 10, 10 0, 10 10, 0 10), (4 8, 8 4, 8 8, 4 8)), LINESTRING (6 6, 20 20)) + + + +POLYGON((0 11,9.5857864376269 11,19.2928932188135 20.7071067811865,19.4444297669804 20.8314696123025,19.6173165676349 20.9238795325113,19.8049096779839 20.9807852804032,20 21,20.1950903220161 20.9807852804032,20.3826834323651 20.9238795325113,20.5555702330196 20.8314696123025,20.7071067811865 20.7071067811865,20.8314696123025 20.5555702330196,20.9238795325113 20.3826834323651,20.9807852804032 20.1950903220161,21 20,20.9807852804032 19.8049096779839,20.9238795325113 19.6173165676349,20.8314696123025 19.4444297669804,20.7071067811865 19.2928932188135,11 9.5857864376269,11 0,10.9807852804032 -0.195090322016128,10.9238795325113 -0.38268343236509,10.8314696123025 -0.555570233019602,10.7071067811865 -0.707106781186548,10.5555702330196 -0.831469612302545,10.3826834323651 -0.923879532511287,10.1950903220161 -0.98078528040323,10 -1,9.80490967798387 -0.98078528040323,9.61731656763491 -0.923879532511287,9.4444297669804 -0.831469612302545,9.29289321881345 -0.707106781186547,-0.707106781186547 9.29289321881345,-0.831469612302545 9.4444297669804,-0.923879532511286 9.61731656763491,-0.98078528040323 9.80490967798387,-1 10,-0.980785280403231 10.1950903220161,-0.923879532511288 10.3826834323651,-0.831469612302547 10.5555702330196,-0.707106781186551 10.7071067811865,-0.555570233019607 10.8314696123025,-0.382683432365094 10.9238795325113,-0.195090322016134 10.9807852804032,0 11)) + + + +Case #27 + +POLYGON ((-140 700, 880 1120, 1280 -120, 300 -600, -480 -480, -140 700), (0 360, 780 500, 240 -220, 0 360)) + + + + POLYGON ((-778.7369624023256165 -452.5004128279801421, -768.2720863281218726 -396.9385513969818362, -428.2720863281219295 783.0614486030182206, -428.2720863281218726 783.0614486030182206, -408.7534841560095060 833.3100324581969289, -380.5574411245926285 879.2543375195929229, -344.5943435555216752 919.4109263119892148, -302.0253583570249702 952.4832336003277078, -254.2249415762884723 977.4034295424147558, -254.2249415762884439 977.4034295424147558, 765.7750584237115845 1397.4034295424148695, 824.9820997649247829 1414.9119032079297540, 886.5194673034418429 1419.9291525445289608, 947.7806977050495334 1412.2426680322651009, 1006.1710236399521818 1392.1780167347219503, 1059.2172771825498785 1360.5850526513920613, 1104.6726427733435685 1318.8019204868039651, 1140.6118228493280640 1268.5983774849189558, 1165.5125853281651871 1212.1008339768277438, 1165.5125853281651871 1212.1008339768275164, 1565.5125853281651871 -27.8991660231724943, 1565.5125853281651871 -27.8991660231724730, 1578.2479052970841167 -87.6242840094385542, 1578.6248988264201216 -148.6909358667574566, 1566.6279446527257733 -208.5687379618446755, 1542.7541536469450421 -264.7765683433532899, 1507.9927703179562286 -314.9853755612036252, 1463.7841820583996650 -357.1146862282575398, 1411.9602346430190210 -389.4188123961639008, 431.9602346430190778 -869.4188123961638439, 431.9602346430191346 -869.4188123961638439, 375.0205313378135656 -890.4684490229396943, 315.0089731600441496 -899.6243159769932163, 254.3828447238176693 -896.5115092951851921, -525.6171552761823023 -776.5115092951851921, -525.6171552761842349 -776.5115092951848510, -580.4397169479343574 -762.6868643206097431, -631.6948450433227435 -738.8217030839614381, -677.5620519058279569 -705.7636721147999879, -716.4122189080046610 -664.6869317277042910, -746.8654597417037166 -617.0504520125676891, -767.8401314357936371 -564.5461929067481606, -778.5912523203892306 -509.0390088973724687, -778.7369624023256165 -452.5004128279801421)) + + + +Case #28 + +POLYGON ((-140 700, 880 1120, 1280 -120, 300 -600, -480 -480, -140 700), (0 360, 240 -220, 780 500, 0 360)) + + + + POLYGON ((-709.0316711751162302 -458.9169831681181222, -701.0085995182267879 -416.3195560710194059, -361.0085995182267879 763.6804439289805941, -346.0443378529406573 802.2043582179510395, -324.4273715288543940 837.4283254316878811, -296.8556633925666119 868.2150435058583753, -264.2194414070523862 893.5704790935845949, -227.5724552084877814 912.6759626491847257, 792.4275447915122186 1332.6759626491846120, 837.8196098197755646 1346.0991257927460083, 884.9982582659720265 1349.9456836174722412, 931.9652015738713544 1344.0527121580698804, 976.7311181239632560 1328.6698128299535711, 1017.3999125066216038 1304.4485403660671636, 1052.2490261262300919 1272.4148057065497142, 1079.8023975178182354 1233.9254227384378737, 1098.8929820849266434 1190.6106393822344671, 1498.8929820849266434 -49.3893606177655755, 1498.8929820849266434 -49.3893606177655542, 1508.6567273944313001 -95.1786177405695497, 1508.9457557669220478 -141.9963841645140405, 1499.7480909004232217 -187.9026991040809094, 1481.4448511293244337 -230.9953690632375469, 1454.7944572437663737 -269.4887879302561373, 1420.9012062447729932 -301.7879261083307938, 1381.1695132263146206 -326.5544228370590076, 401.1695132263146206 -806.5544228370589508, 357.5157406923237318 -822.6924775842537656, 311.5068794227005355 -829.7119755823614469, 265.0268476215935607 -827.3254904596419692, -514.9731523784064393 -707.3254904596419692, -514.9731523784079172 -707.3254904596417418, -557.0037829934162801 -696.7265959791341174, -596.2993811998808269 -678.4299723643704283, -631.4642397944680852 -653.0854819546800627, -661.2493678294702022 -621.5933143245732708, -684.5968524686394403 -585.0720132096352017, -700.6774341007751445 -544.8187478951736011, -708.9199601122983267 -502.2632401546522374, -709.0316711751162302 -458.9169831681181222)) + + + +Case #29 + +MULTIPOLYGON (((0 400, 440 400, 440 0, 0 0, 0 400),(380 360, 160 120, 260 80, 380 360)), ((360 320, 200 120, 240 100, 360 320))) + + + + POLYGON ((-30.0000000000000000 0.0000000000000000, -30.0000000000000000 400.0000000000000000, -29.4235584120969129 405.8527096604838675, -27.7163859753385999 411.4805029709526707, -24.9440883690763577 416.6671069905880813, -21.2132034355964230 421.2132034355964265, -16.6671069905880600 424.9440883690763826, -11.4805029709526902 427.7163859753385964, -5.8527096604838462 429.4235584120968952, 0.0000000000000000 430.0000000000000000, 440.0000000000000000 430.0000000000000000, 445.8527096604838675 429.4235584120968952, 451.4805029709526707 427.7163859753385964, 456.6671069905880813 424.9440883690763826, 461.2132034355964265 421.2132034355964265, 464.9440883690763826 416.6671069905880813, 467.7163859753385964 411.4805029709526707, 469.4235584120968952 405.8527096604838675, 470.0000000000000000 400.0000000000000000, 470.0000000000000000 0.0000000000000000, 469.4235584120968952 -5.8527096604838480, 467.7163859753385964 -11.4805029709526920, 464.9440883690763826 -16.6671069905880671, 461.2132034355964265 -21.2132034355964265, 456.6671069905880813 -24.9440883690763577, 451.4805029709526707 -27.7163859753386035, 445.8527096604838675 -29.4235584120969129, 440.0000000000000000 -30.0000000000000000, 0.0000000000000000 -30.0000000000000000, -0.0000000053875892 -30.0000000000000000, -5.8527096651074020 -29.4235584111772326, -11.4805029746857947 -27.7163859737923026, -16.6671069933878329 -24.9440883672056124, -21.2132034375012282 -21.2132034336916249, -24.9440883701987985 -16.6671069889082126, -27.7163859758540383 -11.4805029697083203, -29.4235584122282994 -5.8527096598233301, -30.0000000000000000 0.0000000000000000)) + + + +Case #30 + +POLYGON ((60 320, 260 240, 280 60, 60 60, 60 320), (140 240, 100 100, 80 240, 140 240)) + + + + POLYGON ((47.7999999999999972 60.0000000000000000, 47.7999999999999972 320.0000000000000000, 48.0315264859667153 322.3655108843300354, 48.7173183186694629 324.6412384206985280, 49.8313461582508239 326.7408070026280598, 51.3313268979948205 328.5845271652299857, 53.1603285264767607 330.1024202117251320, 55.2489309912589661 331.2368742661907959, 57.5178610482016879 331.9448309416234792, 59.8810010902576906 332.1994196279774201, 62.2486577551672084 331.9909773705118141, 64.5309662515200699 331.3274156288001677, 264.5309662515200557 251.3274156288001677, 266.8526771887014775 250.0936026941548675, 268.8561264807556199 248.3910085065419082, 270.4482671257503057 246.2987073331728141, 271.5551546948153714 243.9138727596698857, 272.1253815630181521 241.3472646181131154, 292.1253815630181521 61.3472646181131296, 292.1646248250303870 59.0716127606139096, 291.7804983265691590 56.8282718941085747, 290.9863709586593927 54.6953178079431552, 289.8098810182789293 52.7469844611216772, 288.2919743028874109 51.0510803914519897, 286.4854790592872291 49.6666287509086999, 284.4532673833778631 48.6418131019012137, 282.2660670602604682 48.0123004676292240, 280.0000000000000000 47.7999999999999972, 60.0000000000000000 47.7999999999999972, 59.9999999978090486 47.7999999999999972, 57.6198980695229892 48.0344195794545925, 55.3312621236277806 48.7286697039911303, 53.2220431560222806 49.8560707306697211, 51.3732972687495035 51.3732972702987425, 49.8560707294524903 53.2220431578439914, 48.7286697031526899 55.3312621256519535, 48.0344195790271584 57.6198980716718481, 47.7999999999999972 60.0000000000000000), (94.0667181863941124 227.8000000000000114, 103.9865101885854841 158.3614559846603811, 123.8260941929682275 227.8000000000000114, 94.0667181863941124 227.8000000000000114)) + + + +Case #31 + +MULTILINESTRING ((635074.5625 6184832.5, 635074.5625 6184832.5, 635074.625 6184832.5), (635074.6875 6184832.5, 635074.6875 6184832.5, 635074.5625 6184832.5)) + + + + POLYGON ((635074.5524999999906868 6184832.5000000000000000, 635074.5526921472046524 6184832.5019509028643370, 635074.5532612046226859 6184832.5038268342614174, 635074.5541853038594127 6184832.5055557023733854, 635074.5554289321880788 6184832.5070710675790906, 635074.5569442976266146 6184832.5083146961405873, 635074.5586731656221673 6184832.5092387953773141, 635074.5605490967864171 6184832.5098078530281782, 635074.5625000000000000 6184832.5099999997764826, 635074.6250000000000000 6184832.5099999997764826, 635074.6875000000000000 6184832.5099999997764826, 635074.6894509032135829 6184832.5098078530281782, 635074.6913268343778327 6184832.5092387953773141, 635074.6930557023733854 6184832.5083146961405873, 635074.6945710678119212 6184832.5070710675790906, 635074.6958146961405873 6184832.5055557023733854, 635074.6967387953773141 6184832.5038268342614174, 635074.6973078527953476 6184832.5019509028643370, 635074.6975000000093132 6184832.5000000000000000, 635074.6973078527953476 6184832.4980490971356630, 635074.6967387953773141 6184832.4961731657385826, 635074.6958146961405873 6184832.4944442976266146, 635074.6945710678119212 6184832.4929289324209094, 635074.6930557023733854 6184832.4916853038594127, 635074.6913268343778327 6184832.4907612046226859, 635074.6894509032135829 6184832.4901921469718218, 635074.6875000000000000 6184832.4900000002235174, 635074.6250000000000000 6184832.4900000002235174, 635074.5625000000000000 6184832.4900000002235174, 635074.5605490967864171 6184832.4901921469718218, 635074.5586731656221673 6184832.4907612046226859, 635074.5569442976266146 6184832.4916853038594127, 635074.5554289321880788 6184832.4929289324209094, 635074.5541853038594127 6184832.4944442976266146, 635074.5532612046226859 6184832.4961731657385826, 635074.5526921472046524 6184832.4980490971356630, 635074.5524999999906868 6184832.5000000000000000)) + + + +Case #32 (previously in buffer_snapround.xml) + +MULTILINESTRING ( +( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), +( 344.3694502052736 126.0884157954882, 382 83 )) + + + +POLYGON ((251.2999850011249 262.9985001124906, 257.5681863594468 +262.27215277268783, 263.54579707741004 260.25074266313584, +268.9683548466559 257.0237012990225, 273.5959540907721 252.733799905941, +366.9654042960458 145.8222157014292, 366.96540429604596 +145.822215701429, 404.5959540907721 102.73379990594101, +408.01165254714834 97.94636851433921, 410.42773778364045 +92.58455656275139, + 411.75136099956626 86.85441547753827, 411.93165609703425 +80.97615136710445, 410.9616944365593 75.17566262464543, +408.8787511007927 69.67585877958233, 405.762872434 64.6880942093554, +401.733799905941 60.40404590922786, 396.9463685143392 56.98834745285165, +391.5845565627514 54.57226221635955, 385.8544154775383 +53.24863900043373, 379.9761513671045 53.068343902965765, + 374.17566262464544 54.0383055634407, 368.6758587795823 +56.12124889920727, 363.68809420935537 59.23712756600002, +359.4040459092279 63.26620009405899, 321.77349611450177 +106.35461588954689, 321.7734961145014 106.35461588954719, +237.25109687130038 203.1359890687851, 85.29400832479278 +204.6555599542502, 85.29400832479277 204.6555599542502, +79.44735540552597 205.29049689270485, + 73.83691433446558 207.05385909666174, 68.67829121560081 +209.87788154552774, 64.16972904240048 213.654038640323, 60.4844893307499 +218.23721478158777, 57.764193776061546 223.45128108048806, +56.11338181094277 229.09586389323925, 55.59549321342706 +234.95404506786576, 56.230430151881706 240.80069798713257, +57.99379235583859 246.41113905819296, 60.81781480470461 +251.56976217705773, + 64.59397189949983 256.0783243502581, 69.1771480407646 +259.7635640619086, 74.39121433966491 262.483859616597, 80.03579715241607 +264.13467158171574, 85.89397832704257 264.65256017923144, +85.8939783270426 264.65256017923144, 251.2999850011249 +262.9985001124906)) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/Buffer-2.xml geos-3.8.0/tests/xmltester/tests/misc/Buffer-2.xml --- geos-3.7.1/tests/xmltester/tests/misc/Buffer-2.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/Buffer-2.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,56 @@ + + + + + + +Extreme simplification of the Big Bad Nasty buffer. +If the first element is reordered backward, things are fine !! + + + +MULTIPOLYGON((( +3135840 10098400, + 3135702 10098200, + 3135830 10098461, +3135840 10098400 +)) , (( +3129627 10098250, +3130490 10098813, +3130663 10098320, +3130263 10097448, +3129627 10098250 +),( +3130240 10098310, +3130210 10098340, +3130193 10098318, +3130240 10098310 +))) + + + + + + +MULTIPOLYGON((( +3135840 10098400, +3135702 10098200, +3135830 10098461, +3135840 10098400 +)) , (( +3129627 10098250, +3130490 10098813, +3130663 10098320, +3130263 10097448, +3129627 10098250 +),( +3130240 10098310, +3130210 10098340, +3130193 10098318, +3130240 10098310 +))) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/buildarea.xml geos-3.8.0/tests/xmltester/tests/misc/buildarea.xml --- geos-3.7.1/tests/xmltester/tests/misc/buildarea.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/buildarea.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,98 @@ + + + + + buildarea/point + POINT(0 0) + + + GEOMETRYCOLLECTION EMPTY + + + + + + buildarea/linestring + LINESTRING(0 0,1 1) + + + GEOMETRYCOLLECTION EMPTY + + + + + + buildarea/polygon + POLYGON((0 0,0 1,1 1,0 0)) + + + POLYGON((0 0,0 1,1 1,0 0)) + + + + + + buildarea/polygon_from_linestrings + GEOMETRYCOLLECTION(LINESTRING(0 0,0 1,1 1),LINESTRING(1 1,1 0,0 0)) + + + POLYGON((0 0,0 1,1 1,1 0,0 0)) + + + + + + buildarea/multipolygon_of_two_polygons_from_linestrings + GEOMETRYCOLLECTION(LINESTRING(0 0,0 1,1 1),LINESTRING(1 1,1 0,0 0),LINESTRING(10 0,10 1,11 1),LINESTRING(11 1,11 0,10 0)) + + + MULTIPOLYGON (((10.0 0.0, 10.0 1.0, 11.0 1.0, 11.0 0.0, 10.0 0.0)), ((0.0 0.0, 0.0 1.0, 1.0 1.0, 1.0 0.0, 0.0 0.0))) + + + + + + buildarea/polygon_with_hole_from_linestrings + GEOMETRYCOLLECTION(LINESTRING(0 0,0 1,1 1),LINESTRING(1 1,1 0,0 0),LINESTRING(0.25 0.25,0.25 0.75,0.75 0.75),LINESTRING(0.75 0.75,0.75 0.25,0.25 0.25)) + + + POLYGON ((0.00 0.00, 0.00 1.00, 1.00 1.00, 1.00 0.00, 0.00 0.00), (0.25 0.25, 0.75 0.25, 0.75 0.75, 0.25 0.75, 0.25 0.25)) + + + + + + buildarea/polygon_with_hole_and_island_from_linestrings + GEOMETRYCOLLECTION(LINESTRING(0 0,0 1,1 1),LINESTRING(1 1,1 0,0 0),LINESTRING(0.25 0.25,0.25 0.75,0.75 0.75),LINESTRING(0.75 0.75,0.75 0.25,0.25 0.25),LINESTRING(0.3 0.3,0.3 0.7,0.7 0.7),LINESTRING(0.7 0.7,0.7 0.3,0.3 0.3)) + + + MULTIPOLYGON (((0.00 0.00, 0.00 1.00, 1.00 1.00, 1.00 0.00, 0.00 0.00), (0.25 0.25, 0.75 0.25, 0.75 0.75, 0.25 0.75, 0.25 0.25)),((0.30 0.30, 0.30 0.70, 0.70 0.70, 0.70 0.30, 0.30 0.30))) + + + + + + buildarea/self_touching_multipolygons + GEOMETRYCOLLECTION (LINESTRING (100 100, 100 400, 400 400, 400 100, 100 100), LINESTRING (150 350, 350 350, 350 150, 100 100, 150 350), LINESTRING (200 250, 250 200, 100 100, 200 250), LINESTRING (200 250, 160 290, 150 250, 200 250), LINESTRING (350 350, 200 300, 200 250, 300 250, 350 350)) + + + MULTIPOLYGON (((200 250, 250 200, 100 100, 200 250)), ((100 100, 100 400, 400 400, 400 100, 100 100), (150 350, 100 100, 350 150, 350 350, 150 350)), ((200 250, 150 250, 160 290, 200 250)), ((350 350, 300 250, 200 250, 200 300, 350 350))) + + + + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/fme.xml geos-3.8.0/tests/xmltester/tests/misc/fme.xml --- geos-3.7.1/tests/xmltester/tests/misc/fme.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/fme.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,20 @@ + + + + + + Big Bad Nasty buffer + + POLYGON((377888.21875 5686717.5,377888.09375 5686717.5,377886.46875 5686721,377885.25 5686725,377884.40625 5686730.5,377883.59375 5686735,377883.5625 5686737,377883.5 5686743.5,377883.09375 5686747,377883.03125 5686752.5,377883 5686758,377883.75 5686762,377884.46875 5686767.5,377885.25 5686771.5,377885.21875 5686775,377887.53125 5686781,377891.8125 5686788,377895.4375 5686792,377896.5 5686793,377900.03125 5686797,377905.5 5686802.5,377908.65625 5686804.5,377911.40625 5686807.5,377915.34375 5686809,377918.6875 5686810.5,377920.90625 5686806.5,377923.3125 5686801,377926.09375 5686797.5,377928.21875 5686794.5,377928.90625 5686793.5,377932.09375 5686790.5,377935.6875 5686786,377939.28125 5686782,377944.46875 5686776,377948.0625 5686773,377953.625 5686769,377958.8125 5686765.5,377962.75 5686763.5,377964.0625 5686763,377964.59375 5686762,377965.0625 5686761,377965.5625 5686760,377965.625 5686759,377965.65625 5686759,377966.125 5686758,377967.03125 5686757,377967.46875 5686756.5,377968.46875 5686754.5,377969.71875 5686753.5,377970.625 5686752.5,377971.125 5686751.5,377971.53125 5686751.5,377971.5625 5686751,377973.125 5686751,377975.6875 5686749.5,377978.15625 5686748.5,377978.9375 5686748.5,377979.75 5686748.5,377980.15625 5686748.5,377980.96875 5686748,377981.75 5686748,377982.96875 5686748,377984.15625 5686748,377986.625 5686747,377989 5686747,377990.1875 5686747,377990.96875 5686747,377991.84375 5686746.5,377992.25 5686746,377993.03125 5686746,377993.84375 5686746,377994.65625 5686746,377995.4375 5686746,377996.625 5686746,377997.40625 5686746,377998.59375 5686746.5,377999.375 5686746.5,378000.9375 5686746.5,378001.71875 5686746.5,378002.90625 5686746.5,378003.6875 5686747,378004.46875 5686747,378004.875 5686747,378005.71875 5686746,378006.125 5686746,378007.40625 5686745,378008.21875 5686745,378009.03125 5686745,378009.09375 5686744,378010.375 5686743,378012.40625 5686742.5,378013.6875 5686742,378014.53125 5686741,378015.3125 5686741,378015.34375 5686741,378016.1875 5686740.5,378017.59375 5686738.5,378018.0625 5686737.5,378018.125 5686736.5,378018.59375 5686736,378018.78125 5686734,378018.90625 5686733,378019.03125 5686731,378019.1875 5686729.5,378019.28125 5686729,378019.34375 5686728,378019.40625 5686727.5,378019.5 5686726.5,378019.6875 5686724.5,378020.9375 5686724,378021.40625 5686723,378021.5 5686722,378021.5625 5686721.5,378021.6875 5686720,378021.78125 5686719,378022.5625 5686719.5,378022.625 5686718.5,378022.71875 5686717.5,378022.84375 5686716,378023.3125 5686715.5,378023.4375 5686714,378023.5 5686713.5,378023.65625 5686712,378024.53125 5686711,378025.4375 5686710,378025.46875 5686709.5,378025.96875 5686708.5,378026.78125 5686708,378027.71875 5686706.5,378028.9375 5686706.5,378029.40625 5686705.5,378030.28125 5686705,378031.09375 5686704.5,378031.5625 5686704,378032.84375 5686703,378034.0625 5686702.5,378034.96875 5686701.5,378035.8125 5686701,378036.25 5686700.5,378036.6875 5686700,378037.53125 5686699.5,378037.9375 5686699.5,378038.78125 5686698.5,378039.1875 5686698.5,378040.0625 5686698,378040.875 5686697.5,378042.125 5686697,378042.5625 5686696.5,378043.78125 5686696.5,378044.5625 5686696.5,378045.34375 5686696.5,378046.125 5686696.5,378047.40625 5686695.5,378049.03125 5686695.5,378049.84375 5686695,378050.65625 5686694.5,378051.5 5686694.5,378052.3125 5686694,378053.59375 5686693,378054.8125 5686692.5,378055.59375 5686693,378055.6875 5686692,378056.15625 5686691.5,378057.78125 5686690.5,378059 5686690.5,378059.84375 5686690,378060.25 5686689.5,378060.65625 5686690,378061.4375 5686690,378061.84375 5686690,378062.6875 5686689,378063.46875 5686689.5,378064.65625 5686689.5,378065.0625 5686689.5,378066.28125 5686689,378067.0625 5686689,378067.84375 5686689.5,378069.40625 5686689.5,378070.96875 5686689.5,378071.375 5686689.5,378071.78125 5686689.5,378072.5625 5686690,378073.34375 5686690,378074.40625 5686691,378075.5 5686692,378076.25 5686692.5,378076.96875 5686693.5,378077.6875 5686694.5,378078.4375 5686694.5,378079.15625 5686695,378079.125 5686695.5,378079.53125 5686695.5,378079.4375 5686696.5,378080.4375 5686698.5,378080.71875 5686699.5,378080.5625 5686701.5,378081.21875 5686703,378081.0625 5686704.5,378080.9375 5686705.5,378080.84375 5686707,378081.5 5686708,378082.1875 5686709.5,378082.90625 5686710.5,378083.21875 5686711,378083.125 5686712,378083.5 5686712.5,378083.40625 5686713,378084.59375 5686713,378085.6875 5686714,378086.4375 5686714.5,378088.8125 5686715,378091.46875 5686716,378093.78125 5686716.5,378094.59375 5686716.5,378095.28125 5686717.5,378095.6875 5686717.5,378096.0625 5686717.5,378096.875 5686717.5,378097.65625 5686717.5,378098.8125 5686718,378100.1875 5686716,378102.3125 5686714.5,378102.78125 5686714,378102.84375 5686713,378104.03125 5686713,378105.34375 5686712,378107.4375 5686711,378108.65625 5686710.5,378109.0625 5686710,378109.875 5686710,378110.65625 5686710.5,378111.90625 5686709.5,378113.0625 5686710,378115.125 5686709,378116.6875 5686709.5,378117.53125 5686708.5,378117.96875 5686708.5,378118.8125 5686708,378119.28125 5686707,378120.1875 5686705.5,378121.46875 5686705,378122.34375 5686704,378122.84375 5686703,378123.71875 5686702,378124.15625 5686701.5,378125.09375 5686700,378125.5 5686700,378127.28125 5686698,378128.96875 5686697,378129.8125 5686696.5,378130.6875 5686695.5,378131.46875 5686695.5,378132.28125 5686695.5,378133.0625 5686695.5,378134.625 5686695.5,378135.8125 5686696,378137.78125 5686696,378139.34375 5686696,378140.1875 5686696,378140.96875 5686696,378141.0625 5686694.5,378142.3125 5686694,378142.84375 5686693,378144.09375 5686692,378144.9375 5686691.5,378145.84375 5686690.5,378146.28125 5686690,378147.125 5686689.5,378147.96875 5686689,378149.1875 5686689,378150.8125 5686688,378152.4375 5686688,378153.59375 5686688,378154 5686688,378155.1875 5686688,378155.96875 5686688.5,378156.34375 5686688.5,378156.75 5686688.5,378156.84375 5686687,378156.15625 5686686.5,378155.90625 5686684.5,378155.1875 5686684,378155.28125 5686683,378154.46875 5686683,378153.5 5686681,378152.0625 5686679,378151.71875 5686678.5,378151.75 5686678.5,378150.96875 5686678,378150.625 5686678,378149.5 5686677,378148.375 5686676.5,378148.09375 5686675,378146.9375 5686674.5,378146.5625 5686674.5,378146.625 5686674,378146.65625 5686673.5,378145.875 5686673.5,378146.0625 5686671.5,378145.4375 5686669.5,378145.125 5686669,378145.1875 5686668,378145.28125 5686667.5,378145.34375 5686666.5,378145.375 5686666,378145.53125 5686664.5,378146.375 5686664,378146.9375 5686662.5,378147.03125 5686661,378147.90625 5686660.5,378147.96875 5686659.5,378148.46875 5686658.5,378149.34375 5686658,378149.8125 5686657,378149.84375 5686656.5,378149.875 5686656.5,378150.65625 5686656.5,378151.53125 5686655.5,378152.3125 5686655.5,378153.09375 5686656,378154 5686654.5,378155.65625 5686654,378156.46875 5686654,378157.34375 5686653,378158.15625 5686652.5,378158.59375 5686652.5,378159.84375 5686651.5,378161.0625 5686651.5,378161.875 5686651,378162.75 5686650.5,378163.5625 5686650,378164.40625 5686649.5,378165.65625 5686648.5,378167.28125 5686648.5,378168.53125 5686648,378169.40625 5686647,378169.78125 5686647,378169.875 5686646.5,378170.65625 5686646.5,378171.0625 5686646,378171.15625 5686645.5,378171.96875 5686645,378172.15625 5686643,378172.28125 5686642,378172.375 5686640.5,378172.84375 5686640,378172.96875 5686638.5,378173.4375 5686638,378173.9375 5686637,378174 5686636,378174.9375 5686634.5,378175.03125 5686634,378175.0625 5686633.5,378175.09375 5686633,378176 5686632,378176.03125 5686631.5,378176.1875 5686630,378176.25 5686629,378176.34375 5686628.5,378176.375 5686628,378176.59375 5686628,378182.875 5686630.5,378186.8125 5686632,378193.09375 5686633.5,378194.34375 5686630,378194.78125 5686625.5,378194.46875 5686618,378193.6875 5686614,378192.96875 5686607.5,378192.21875 5686604,378191.0625 5686599.5,378189.9375 5686593.5,378188.78125 5686588,378187.6875 5686580,378187.71875 5686575.5,378187.71875 5686574,378187.75 5686571,378186.59375 5686567.5,378186.65625 5686563,378187.5 5686557,378188.3125 5686553.5,378189.90625 5686550.5,378192.3125 5686546.5,378195.125 5686543,378196.5 5686541.5,378196.6875 5686539.5,378197.625 5686538,378198.09375 5686537,378198.21875 5686536,378198.25 5686535.5,378198.71875 5686535,378198.8125 5686533.5,378198.90625 5686533,378199.6875 5686533,378199.84375 5686531.5,378201.5625 5686530,378202.8125 5686529.5,378203.3125 5686528,378203.6875 5686528,378203.78125 5686527.5,378204.15625 5686527.5,378205.03125 5686526.5,378206.21875 5686527,378206.71875 5686525.5,378207.5625 5686525,378208 5686524.5,378208.46875 5686524,378209.4375 5686522,378211.09375 5686521.5,378212.40625 5686520,378213.71875 5686519,378214.5625 5686518,378215.03125 5686517.5,378215.875 5686517,378216.28125 5686517,378217.15625 5686516,378217.59375 5686515.5,378218.4375 5686515,378219.65625 5686514.5,378220.46875 5686514.5,378220.5625 5686513.5,378221.375 5686513.5,378221.78125 5686513.5,378222.59375 5686513,378223.09375 5686512,378223.90625 5686511.5,378225.28125 5686509.5,378226.96875 5686508.5,378227.84375 5686508,378228.25 5686507.5,378228.71875 5686507,378228.75 5686506.5,378229.21875 5686505.5,378230.09375 5686505,378230.125 5686504.5,378231.0625 5686503,378231.9375 5686502.5,378232.4375 5686501.5,378233.34375 5686500,378234.21875 5686499,378235.09375 5686498.5,378235.9375 5686497.5,378236.40625 5686497,378237.3125 5686496,378237.8125 5686494.5,378238.71875 5686493.5,378239.21875 5686492.5,378240.125 5686491.5,378241.0625 5686490,378241.5625 5686488.5,378242.46875 5686487.5,378242.875 5686487.5,378243.34375 5686486.5,378243.8125 5686486,378244.65625 5686485.5,378245.53125 5686484.5,378246.78125 5686483.5,378247.3125 5686482.5,378247.84375 5686481,378248.3125 5686480.5,378248.4375 5686479,378248.5 5686478.5,378248.96875 5686477.5,378249.8125 5686477,378249.90625 5686476,378250.09375 5686474,378251 5686473,378251.53125 5686471.5,378251.65625 5686470.5,378251.75 5686469,378252.21875 5686468.5,378252.71875 5686467,378252.75 5686467,378252.84375 5686466,378253.09375 5686463.5,378254.4375 5686462,378255.3125 5686460.5,378255.4375 5686459.5,378255.5 5686458.5,378255.90625 5686459,378257 5686455.5,378258.40625 5686453.5,378258.5 5686452.5,378259.0625 5686450.5,378259.125 5686450,378260.78125 5686447,378262.78125 5686443.5,378265.59375 5686439,378266.9375 5686437,378269.1875 5686434,378270.28125 5686433,378270.625 5686432.5,378271.15625 5686432,378271.34375 5686429.5,378272.28125 5686428,378272.75 5686427.5,378272.84375 5686426.5,378272.875 5686426.5,378273.25 5686426.5,378274.15625 5686425.5,378274.25 5686424.5,378274.375 5686423,378275.71875 5686421.5,378276.625 5686420.5,378276.71875 5686419,378277.15625 5686419,378277.21875 5686418,378278 5686418,378278.5625 5686416.5,378279.5 5686415,378279.5625 5686414.5,378279.65625 5686413.5,378280.15625 5686412.5,378280.5625 5686412,378281.5 5686410.5,378282.375 5686410,378282.40625 5686409.5,378282.4375 5686409,378282.96875 5686408,378284.21875 5686407,378284.75 5686405.5,378284.78125 5686405.5,378284.8125 5686405,378285.25 5686404.5,378286.0625 5686404,378286.46875 5686404,378287 5686402.5,378288.6875 5686401.5,378289.125 5686401.5,378290 5686400.5,378290.375 5686400.5,378291.1875 5686400.5,378292 5686400.5,378293.15625 5686400.5,378293.9375 5686400.5,378295.53125 5686401,378295.90625 5686401,378296.6875 5686401,378297.09375 5686401,378298.15625 5686402.5,378299.3125 5686403,378299.96875 5686404,378301.03125 5686405.5,378302.09375 5686406.5,378302.78125 5686408,378303.53125 5686408.5,378303.84375 5686409,378304.15625 5686410,378304.09375 5686411,378304.84375 5686411.5,378305.625 5686411.5,378306.6875 5686412.5,378307.03125 5686413,378308.15625 5686414,378309.28125 5686414.5,378309.96875 5686416,378310.65625 5686416.5,378311.375 5686417.5,378312.09375 5686418.5,378313.21875 5686419,378313.1875 5686419.5,378313.9375 5686419.5,378314.34375 5686420,378315.40625 5686421,378316.9375 5686421.5,378319.9375 5686423.5,378322.21875 5686424.5,378323.3125 5686425.5,378324.03125 5686426.5,378325.15625 5686427,378325.53125 5686427.5,378326.3125 5686427.5,378326.625 5686428,378327.75 5686428.5,378328.15625 5686428.5,378329.25 5686429.5,378330.03125 5686429.5,378331.09375 5686431,378332.65625 5686431.5,378333.71875 5686433,378334.375 5686434,378335.4375 5686435.5,378336.15625 5686436.5,378337.25 5686437,378337.9375 5686438.5,378338.65625 5686439.5,378339.34375 5686440,378340.09375 5686440.5,378340.46875 5686441,378341.15625 5686442,378342.3125 5686442.5,378343.8125 5686443.5,378344.90625 5686444.5,378345.25 5686445,378345.21875 5686445,378345.96875 5686445.5,378346.75 5686445.5,378348.1875 5686447.5,378350.09375 5686448,378350.8125 5686449,378351.5625 5686449.5,378352.34375 5686449.5,378353.0625 5686450.5,378353.46875 5686450.5,378354.5625 5686451.5,378354.90625 5686451.5,378355.625 5686452.5,378356.375 5686453,378357.84375 5686454.5,378359.375 5686455,378360.46875 5686456,378361.1875 5686456.5,378362.28125 5686457.5,378363 5686458.5,378364.125 5686459,378364.5 5686459.5,378365.5625 5686460.5,378366.3125 5686461,378367.09375 5686461.5,378367 5686462,378368.59375 5686462,378370.46875 5686463,378372.4375 5686463.5,378373.21875 5686463.5,378374.375 5686464,378375.9375 5686464,378378.6875 5686464.5,378379.84375 5686464.5,378380.65625 5686464.5,378381.4375 5686464.5,378381.8125 5686465,378382.25 5686464.5,378384.25 5686464,378385.5 5686463.5,378386.6875 5686463.5,378387.875 5686464,378387.90625 5686463.5,378388.71875 5686463,378389.5 5686463,378391.15625 5686462.5,378393.125 5686462.5,378394.375 5686462,378395.1875 5686461.5,378395.625 5686461.5,378395.65625 5686461,378396.4375 5686461,378396.59375 5686459.5,378397.40625 5686459,378398.3125 5686458,378398.40625 5686457.5,378399.28125 5686456,378399.75 5686455.5,378399.90625 5686454,378400.03125 5686452.5,378400.09375 5686452,378400.21875 5686450.5,378400.34375 5686449,378400.46875 5686448,378400.59375 5686447,378400.71875 5686445,378401.1875 5686444.5,378401.3125 5686443.5,378401.4375 5686442,378401.5 5686441.5,378401.625 5686440,378401.6875 5686439.5,378401.75 5686438.5,378401.5625 5686436.5,378401.71875 5686435,378401.8125 5686434,378402.09375 5686431,378402.21875 5686429.5,378402.40625 5686427.5,378402.65625 5686425,378402.78125 5686423.5,378402.9375 5686422,378403.0625 5686421,378403.15625 5686419.5,378402.84375 5686419,378402.65625 5686417,378402.78125 5686415,378402.9375 5686413.5,378403.03125 5686413,378402.6875 5686412,378402.78125 5686411,378402.84375 5686410.5,378402.96875 5686409.5,378403.03125 5686408.5,378402 5686407,378402.125 5686405.5,378402.1875 5686405,378401.875 5686404,378401.5625 5686403,378400.875 5686402,378401.0625 5686400,378400.03125 5686398.5,378399.4375 5686396,378398.84375 5686394,378398.5625 5686393,378398.6875 5686392,378397.96875 5686391,378398.09375 5686389.5,378398.15625 5686389,378397.84375 5686388,378397.59375 5686386.5,378396.9375 5686385,378397.125 5686383.5,378397.34375 5686381,378397.0625 5686379.5,378396.8125 5686378,378396.5 5686377,378396.53125 5686377,378396.65625 5686375.5,378396.71875 5686375,378396.9375 5686372.5,378396.6875 5686371,378396.96875 5686368,378398.3125 5686366.5,378398.75 5686366,378398.84375 5686365,378398.90625 5686364.5,378400.90625 5686364,378401.8125 5686363,378402.625 5686363,378403.4375 5686362.5,378403.5 5686362,378403.59375 5686361,378404.8125 5686360.5,378405.59375 5686360.5,378406.46875 5686360,378408.09375 5686359.5,378409.03125 5686358,378410.3125 5686357,378411.09375 5686357,378411.15625 5686356.5,378411.96875 5686356,378412.78125 5686356,378414.0625 5686355,378415.6875 5686354.5,378416.53125 5686354,378416.5625 5686354,378416.96875 5686354,378417.75 5686354,378419 5686353.5,378420.21875 5686353,378420.59375 5686353,378421.375 5686353,378422.5625 5686353,378424.59375 5686352.5,378425.8125 5686352.5,378426.59375 5686352.5,378426.65625 5686352,378429 5686352.5,378430.40625 5686351.5,378430.6875 5686351.5,378432.28125 5686351,378433.0625 5686351,378433.46875 5686351,378434.25 5686351,378434.65625 5686351.5,378436.21875 5686351.5,378437.40625 5686351.5,378438.1875 5686351.5,378438.5625 5686351.5,378440.15625 5686352,378441.3125 5686352,378442.0625 5686352.5,378442.46875 5686352.5,378443.65625 5686352.5,378444.8125 5686352.5,378446 5686353,378446.40625 5686353,378447.1875 5686353,378447.96875 5686353,378448.8125 5686352.5,378451.21875 5686352,378452.5 5686351,378453.375 5686350.5,378453.75 5686350.5,378453.84375 5686349.5,378454.625 5686349.5,378454.71875 5686348.5,378455.59375 5686348,378456.5 5686346.5,378456.96875 5686346,378457.0625 5686345,378457.15625 5686344,378457.25 5686343,378457.34375 5686342,378457.59375 5686339.5,378458.125 5686338,378458.3125 5686336,378458.5625 5686333.5,378458.625 5686332.5,378458.75 5686331.5,378458.84375 5686330.5,378458.875 5686330,378459.03125 5686328.5,378458.6875 5686328,378457.625 5686326.5,378457.65625 5686326,378457.25 5686326,378456.6875 5686323.5,378452.53125 5686321.5,378451.09375 5686320,378450.4375 5686318.5,378449.65625 5686318.5,378448.9375 5686318,378448.59375 5686317.5,378447.90625 5686316,378446.8125 5686315,378446.15625 5686313.5,378445.53125 5686312,378445.28125 5686310,378445.4375 5686308.5,378445.5625 5686307.5,378445.25 5686306.5,378445.3125 5686306,378445.375 5686305,378445.625 5686302.5,378445.71875 5686301.5,378445.875 5686300,378446.03125 5686298.5,378446.09375 5686297.5,378446.1875 5686297,378446.28125 5686295.5,378446.3125 5686295,378447.1875 5686294.5,378447.21875 5686294,378447.625 5686294,378448 5686294,378448.09375 5686293.5,378448.125 5686293,378448.15625 5686292.5,378450.5 5686293,378451.8125 5686292,378452.28125 5686291,378452.6875 5686290.5,378452.75 5686290.5,378453.53125 5686290.5,378454.09375 5686288.5,378456.1875 5686287.5,378456.71875 5686286,378457.65625 5686284.5,378457.6875 5686284,378458.125 5686283.5,378458.53125 5686284,378459.3125 5686284,378460.59375 5686283,378462.28125 5686282,378463.0625 5686282,378463.125 5686281,378464.03125 5686280,378464.84375 5686279.5,378466.625 5686278,378467.875 5686277,378468.71875 5686276.5,378469.1875 5686275.5,378469.625 5686275.5,378470.0625 5686275,378470.90625 5686274.5,378471.75 5686274,378473.0625 5686272.5,378474.3125 5686272,378474.78125 5686271,378475.65625 5686270.5,378476.5 5686269.5,378477.40625 5686268.5,378477.84375 5686268,378478.6875 5686267.5,378480 5686266.5,378481.25 5686266,378481.75 5686265.5,378482.0625 5686265.5,378482.5 5686265,378483.4375 5686263.5,378485.875 5686263,378487.59375 5686261.5,378489.34375 5686260,378490.1875 5686259,378491.09375 5686258,378491.96875 5686257.5,378492.375 5686257,378493.25 5686256.5,378493.6875 5686256,378494.5625 5686255,378496.21875 5686254,378497.5625 5686252.5,378498.875 5686251.5,378499.75 5686250.5,378500.625 5686249.5,378501.0625 5686249,378501.9375 5686248.5,378502.78125 5686247.5,378503.21875 5686247.5,378504.0625 5686246.5,378504.90625 5686246.5,378505.8125 5686245,378506.625 5686245,378507.46875 5686244,378507.9375 5686243.5,378508.5 5686242,378510.125 5686241.5,378511.4375 5686240,378511.9375 5686239,378512.78125 5686238.5,378513.65625 5686237.5,378514.90625 5686237,378515.8125 5686236,378516.65625 5686235,378517.90625 5686234.5,378518.75 5686234,378519.59375 5686233.5,378520 5686233.5,378520.78125 5686233.5,378521.625 5686233,378522.5 5686232,378524.15625 5686231.5,378525.75 5686231.5,378526.65625 5686230.5,378527.90625 5686229.5,378528.71875 5686229.5,378529.59375 5686228.5,378530.8125 5686228.5,378531.625 5686228,378532.875 5686227.5,378534.09375 5686227,378534.875 5686227,378535.75 5686226.5,378536.5625 5686226,378537.46875 5686225,378539.0625 5686225,378539.9375 5686224,378539.96875 5686223.5,378540.78125 5686223.5,378541.6875 5686222,378542.5625 5686221.5,378543.84375 5686220.5,378545.0625 5686220,378546.34375 5686219,378547.21875 5686218.5,378548.0625 5686217.5,378548.9375 5686217,378549.78125 5686216.5,378550.21875 5686216,378551.0625 5686215,378551.90625 5686215,378552.71875 5686214.5,378553.59375 5686214,378554.4375 5686213,378556.0625 5686213,378557.3125 5686212.5,378558.15625 5686211.5,378559.375 5686211.5,378559.8125 5686211,378560.59375 5686211,378560.6875 5686210.5,378561.46875 5686210.5,378561.5 5686210,378561.6875 5686208,378563.84375 5686206,378564.90625 5686203,378566 5686200,378566.5 5686199,378567 5686198,378567.46875 5686197,378567.5625 5686196.5,378567.59375 5686196,378567.65625 5686195,378568.0625 5686195,378569.0625 5686193,378570.03125 5686191,378570.9375 5686190,378571.40625 5686189,378571.875 5686188.5,378572.3125 5686188,378572.8125 5686187,378573.6875 5686186,378575.40625 5686184.5,378577.0625 5686183.5,378578.375 5686182.5,378578.875 5686181.5,378579.6875 5686181,378579.78125 5686180.5,378580.25 5686179.5,378580.375 5686178,378581.21875 5686178,378582.53125 5686176.5,378583.4375 5686175,378583.90625 5686174.5,378584.8125 5686173.5,378585.28125 5686172.5,378585.34375 5686172,378586.3125 5686170,378587.21875 5686169,378588.0625 5686168,378588.59375 5686167,378589.03125 5686166,378589.5 5686165.5,378590.40625 5686164.5,378591.65625 5686163.5,378592.09375 5686163.5,378592.15625 5686162.5,378593 5686162.5,378593.0625 5686161.5,378593.09375 5686161,378593.53125 5686160.5,378593.96875 5686160,378598.0625 5686158,378601.25 5686156.5,378604.40625 5686156.5,378609.15625 5686154,378615.125 5686151.5,378618.28125 5686151.5,378622.65625 5686149.5,378625.84375 5686146,378628.21875 5686143.5,378628.25 5686140,378628.25 5686139.5,378629.46875 5686136,378630.3125 5686132,378631.90625 5686129,378635.53125 5686123.5,378640.65625 5686123,378645 5686122.5,378649.5 5686122,378649.5625 5686122,378650.40625 5686121.5,378651.3125 5686120,378651.84375 5686119,378651.875 5686118.5,378652.6875 5686118,378653.1875 5686117,378654.84375 5686116.5,378655.75 5686115.5,378656.25 5686114,378657.09375 5686113.5,378657.5625 5686113,378658.4375 5686112,378658.90625 5686111.5,378659.8125 5686110,378659.84375 5686110,378660.8125 5686108,378661.65625 5686107,378662.1875 5686106,378662.25 5686105.5,378663.0625 5686105,378663.15625 5686104,378663.25 5686103,378664.5625 5686102,378665.4375 5686101,378665.53125 5686100,378665.59375 5686099.5,378666.0625 5686098.5,378666.65625 5686096.5,378666.71875 5686096,378666.78125 5686095,378666.84375 5686094.5,378666.90625 5686094,378667.15625 5686091,378667.28125 5686090,378667.34375 5686089,378667.40625 5686088.5,378667.46875 5686088,378667.65625 5686086,378666.59375 5686084.5,378665.96875 5686083,378665.28125 5686082,378664.96875 5686081,378665.03125 5686080,378663.875 5686080,378662.59375 5686076.5,378660.5 5686073.5,378659.78125 5686073,378659.46875 5686072,378659.0625 5686072,378659.15625 5686071,378658.375 5686071,378658.4375 5686070.5,378656.9375 5686069.5,378656.21875 5686068.5,378654.84375 5686066.5,378654.1875 5686065,378653.90625 5686064,378653.53125 5686063.5,378653.5625 5686063,378652.90625 5686062,378652.96875 5686061,378652.34375 5686059.5,378651.625 5686058.5,378651.375 5686057,378651.53125 5686055.5,378651.5625 5686055,378651.625 5686054.5,378651.71875 5686053.5,378651.75 5686053,378651.84375 5686052,378651.90625 5686051.5,378651.9375 5686051,378652.84375 5686050,378652.9375 5686049,378653 5686048.5,378653.03125 5686048,378653.4375 5686048,378654.375 5686046.5,378654.84375 5686045.5,378654.875 5686045.5,378654.90625 5686045,378655.3125 5686045,378656.1875 5686044,378657.0625 5686043,378657.4375 5686043,378657.84375 5686043.5,378658.625 5686043.5,378659.40625 5686043.5,378660.625 5686043,378661.03125 5686043,378662.1875 5686043.5,378662.59375 5686043.5,378663.78125 5686043.5,378664.15625 5686043.5,378665.34375 5686043.5,378666.125 5686043.5,378666.90625 5686044,378668.09375 5686044,378668.875 5686044,378669.65625 5686044,378670.4375 5686044,378671.21875 5686044,378672.40625 5686044.5,378673.1875 5686044.5,378674.4375 5686043.5,378675.25 5686044,378676.8125 5686044,378677.1875 5686044,378678 5686044,378679.15625 5686044,378679.5625 5686044.5,378680.78125 5686044,378681.5625 5686044,378681.9375 5686044,378682.75 5686044,378683.90625 5686044.5,378686.34375 5686044,378687.90625 5686044,378688.75 5686043.5,378689.53125 5686043.5,378690.84375 5686042,378691.71875 5686041.5,378692.15625 5686041,378693.40625 5686040.5,378693.78125 5686040.5,378695.03125 5686040,378695.90625 5686039,378696.84375 5686037.5,378697.28125 5686037.5,378698.1875 5686036,378699.0625 5686035,378699.96875 5686034,378700.03125 5686033,378700.9375 5686032,378701.40625 5686031.5,378701.90625 5686030,378702.03125 5686029,378702.875 5686028.5,378703 5686027,378703.125 5686025.5,378704 5686025,378704.53125 5686023.5,378704.65625 5686022,378704.78125 5686021,378704.875 5686020,378705 5686018.5,378705.0625 5686018,378705.1875 5686016.5,378705.21875 5686016.5,378705.375 5686014.5,378704.6875 5686013.5,378703.28125 5686011.5,378702.40625 5686008.5,378701.71875 5686007,378701.84375 5686006,378702.03125 5686004,378702.21875 5686002,378702.28125 5686001.5,378702.3125 5686001,378703.09375 5686001,378703.15625 5686000.5,378703.71875 5685994.5,378704.15625 5685990,378704.21875 5685989,378704.3125 5685988.5,378704.40625 5685987,378705.3125 5685986,378705.5625 5685983.5,378705.6875 5685982,378705.75 5685981.5,378705.8125 5685981,378706.1875 5685981,378706.3125 5685980,378707.5625 5685979,378708.5625 5685977,378709.5 5685975.5,378709.53125 5685975,378709.59375 5685974.5,378709.96875 5685974.5,378710.125 5685973,378712.21875 5685971.5,378713.0625 5685971.5,378713.09375 5685971,378713.21875 5685970,378714.03125 5685969.5,378715.4375 5685967,378716.75 5685966,378717.1875 5685965.5,378717.25 5685964.5,378718.0625 5685964.5,378718.59375 5685963,378720.65625 5685962,378722.03125 5685960.5,378723.28125 5685959.5,378723.75 5685959,378724.21875 5685958,378724.625 5685958,378724.65625 5685958,378725.46875 5685957.5,378726.375 5685956.5,378727.1875 5685956,378728.5625 5685954.5,378730.25 5685953,378731.09375 5685952.5,378731.625 5685951.5,378732.46875 5685950.5,378733.375 5685949.5,378733.8125 5685949,378733.875 5685948.5,378735.09375 5685948,378736 5685947,378736.8125 5685946.5,378738.09375 5685945.5,378739.34375 5685945,378740.1875 5685944.5,378740.59375 5685944.5,378741.46875 5685943.5,378741.875 5685943.5,378743.15625 5685942.5,378744.375 5685942.5,378745.15625 5685942.5,378746 5685941.5,378746.84375 5685941.5,378748.09375 5685940.5,378748.46875 5685941,378749.6875 5685940.5,378750.09375 5685940.5,378751.75 5685940,378752.53125 5685940,378753.8125 5685939,378755.53125 5685939,378758.5 5685935.5,378761.6875 5685932.5,378766.875 5685927.5,378770.46875 5685924,378774.84375 5685920,378778.8125 5685917,378783.21875 5685913,378787.96875 5685909.5,378793.53125 5685906.5,378796.71875 5685904.5,378799.5 5685903.5,378802.65625 5685903,378806.25 5685899.5,378808.09375 5685898,378808.65625 5685896,378809.9375 5685895,378810.4375 5685894,378810.59375 5685892,378811.40625 5685892,378811.5 5685891,378812.4375 5685889.5,378813.28125 5685889,378813.75 5685888,378813.875 5685887,378813.9375 5685886,378814.4375 5685885,378815.40625 5685883,378816.28125 5685882.5,378816.78125 5685881.5,378816.90625 5685880,378816.96875 5685879.5,378817 5685879,378817.125 5685878,378817.96875 5685877,378819.09375 5685873.5,378819.25 5685872,378819.40625 5685870.5,378819.5625 5685869,378819.625 5685868,378819.75 5685867,378819.84375 5685865.5,378819.96875 5685864.5,378820.1875 5685862,378820.3125 5685861,378820.5 5685859,378820.53125 5685858.5,378820.6875 5685857,378820.8125 5685855.5,378820.9375 5685854.5,378821 5685853.5,378821.0625 5685853,378821.46875 5685849,378821.0625 5685845,378821.1875 5685843,378821.3125 5685842,378821.375 5685841.5,378821.46875 5685840.5,378821.5 5685840,378820.78125 5685839,378820.59375 5685837,378820.3125 5685836,378820.375 5685835,378820.5 5685834,378820.21875 5685833,378817.96875 5685831.5,378817.3125 5685825.5,378814.8125 5685822.5,378813.875 5685820,378813.28125 5685818,378812.5625 5685817.5,378812.28125 5685816,378811.9375 5685815.5,378812 5685815,378809.25 5685814.5,378806.71875 5685812,378803.8125 5685809.5,378801.96875 5685808,378801.25 5685807,378800.0625 5685807,378799.75 5685806,378799.375 5685806,378798.625 5685805.5,378797.84375 5685805.5,378794.28125 5685805,378792.71875 5685805,378790.75 5685805,378789.59375 5685804.5,378789.1875 5685804.5,378788.40625 5685804.5,378787.625 5685804.5,378786.84375 5685804.5,378785.65625 5685804.5,378784.09375 5685804,378782.03125 5685804.5,378780.875 5685804.5,378780.09375 5685804.5,378779.28125 5685804.5,378778.90625 5685804.5,378777.6875 5685804.5,378775.34375 5685804.5,378773.65625 5685805.5,378772.4375 5685805.5,378771.21875 5685806,378770.40625 5685806.5,378769.59375 5685806,378768.8125 5685806,378767.65625 5685806,378767.25 5685806,378766.0625 5685806,378765.6875 5685806,378764.53125 5685805.5,378763.75 5685805,378762.6875 5685804,378761.1875 5685803,378760 5685803,378759.28125 5685802.5,378758.09375 5685802.5,378757.3125 5685802,378756.125 5685802,378755.90625 5685802,378754.9375 5685802,378752.1875 5685801.5,378750.625 5685801.5,378749.84375 5685801.5,378748.65625 5685801.5,378747.875 5685801,378746.65625 5685801.5,378745.46875 5685801.5,378745.0625 5685801.5,378744.1875 5685802.5,378743.375 5685803,378742.125 5685803.5,378740.875 5685804,378740 5685805,378739.15625 5685805.5,378738.28125 5685806,378737.8125 5685807,378737.03125 5685807,378737 5685807.5,378736.21875 5685807,378734.8125 5685809.5,378731.875 5685811,378730.625 5685812,378730.53125 5685812.5,378729.375 5685812.5,378727.59375 5685814.5,378723.90625 5685815.5,378723.0625 5685816,378722.625 5685816.5,378721.84375 5685816.5,378721.03125 5685817,378720.59375 5685817,378719.65625 5685818.5,378717.65625 5685819,378716.375 5685820,378715.46875 5685821,378714.65625 5685821.5,378714.59375 5685821.5,378713.75 5685822.5,378713.3125 5685823,378712.375 5685824.5,378711.90625 5685825,378711.84375 5685826,378711.75 5685826.5,378711.6875 5685827.5,378710.8125 5685828,378710.25 5685830,378709.75 5685831,378709.59375 5685832.5,378709.46875 5685834,378709.375 5685835,378708.46875 5685836,378707.96875 5685837.5,378707.875 5685838,378707 5685839,378706.90625 5685840,378705.90625 5685842.5,378705.03125 5685843,378704.5 5685844.5,378704.34375 5685846,378703.53125 5685846.5,378703.46875 5685847,378702.5625 5685848.5,378702.09375 5685849,378700.75 5685850.5,378699.90625 5685851,378699.03125 5685852,378698.1875 5685852.5,378697.3125 5685853.5,378696.84375 5685854,378696 5685855,378695.53125 5685855.5,378694.65625 5685856.5,378694.1875 5685857,378692.90625 5685858,378691.21875 5685859,378690.375 5685860,378689.875 5685861,378689.03125 5685861,378688.59375 5685861.5,378687.75 5685862.5,378686.9375 5685862.5,378686.125 5685862.5,378685.75 5685862.5,378684.84375 5685863.5,378683.625 5685864,378681.9375 5685865,378680.34375 5685865,378679.5625 5685865,378678.78125 5685865,378677.90625 5685865.5,378676.71875 5685865.5,378674.3125 5685866,378672.34375 5685866,378671.15625 5685866,378670.375 5685865.5,378669.125 5685866.5,378668.34375 5685866.5,378667.09375 5685867,378665.90625 5685867,378665.03125 5685867.5,378664.1875 5685868.5,378663.34375 5685868.5,378662.90625 5685869.5,378662.46875 5685869.5,378661.6875 5685869.5,378660.375 5685870.5,378658.78125 5685871,378657.96875 5685871,378657.125 5685871.5,378656.6875 5685872,378655.875 5685872,378654.125 5685874,378652.46875 5685874.5,378651.1875 5685875.5,378650.3125 5685876.5,378649.46875 5685877,378648.625 5685877.5,378648.1875 5685878,378647.75 5685878.5,378646.90625 5685879,378646.4375 5685879.5,378645.59375 5685880.5,378643.9375 5685881,378643.46875 5685881.5,378642.65625 5685882,378641.78125 5685882.5,378640.9375 5685883.5,378639.71875 5685883.5,378638.84375 5685884.5,378638.375 5685885,378637.5625 5685885.5,378636.75 5685886,378636.3125 5685886,378635.46875 5685887,378635.0625 5685887,378633.6875 5685888.5,378632.0625 5685889.5,378630.8125 5685890,378630.28125 5685891,378629.4375 5685892,378629 5685892,378628.5625 5685892.5,378628.5 5685893.5,378627.625 5685894,378627.21875 5685894.5,378626.28125 5685896,378625.03125 5685896.5,378624.5 5685897.5,378624.03125 5685898.5,378623.15625 5685899.5,378622.65625 5685900.5,378622.34375 5685901,378623.25 5685903,378626.75 5685907.5,378629.09375 5685910.5,378631.03125 5685914.5,378633.375 5685918.5,378636.125 5685922.5,378637.65625 5685928,378638.40625 5685931.5,378638.34375 5685938,378636.34375 5685941.5,378634.3125 5685945.5,378628.34375 5685951.5,378627.09375 5685951.5,378627.4375 5685954.5,378629.5625 5685957,378630.5625 5685959,378631.125 5685961.5,378631.4375 5685962.5,378631.375 5685963,378632.125 5685963.5,378632.09375 5685964,378632.40625 5685965,378632.65625 5685966.5,378633.34375 5685967.5,378634.3125 5685970,378634.96875 5685971,378634.9375 5685971.5,378634.875 5685972,378635.53125 5685973.5,378635.90625 5685974,378636.53125 5685975.5,378637.25 5685976.5,378637.15625 5685977,378637.09375 5685978,378637.0625 5685978.5,378638.9375 5685979.5,378639.375 5685983,378640.375 5685985,378640.65625 5685986.5,378640.5 5685988,378640.46875 5685988.5,378641.65625 5685988.5,378642.53125 5685991.5,378643.875 5685994,378644.15625 5685995.5,378644.09375 5685996,378644.46875 5685996,378644.59375 5685999,378644.8125 5686001,378644.75 5686002,378644.65625 5686002.5,378644.5625 5686004,378644.46875 5686004.5,378644.375 5686005.5,378644.25 5686007,378643.65625 5686009,378642.78125 5686010,378640.71875 5686015,378640.25 5686015.5,378639.78125 5686016.5,378638.8125 5686018.5,378637.53125 5686019.5,378637 5686020.5,378636.875 5686022,378636.03125 5686022.5,378636 5686023,378635.875 5686024,378634.28125 5686024,378633.125 5686028,378632.15625 5686030,378632.0625 5686030.5,378631.5625 5686032,378631.53125 5686032.5,378631.09375 5686032.5,378630.25 5686033.5,378629.78125 5686034,378628.40625 5686036,378626.71875 5686037,378625.78125 5686038.5,378624.84375 5686040,378624.8125 5686040.5,378624.78125 5686040.5,378623.90625 5686041.5,378623.4375 5686042,378623.0625 5686042,378622.15625 5686043,378620.90625 5686044,378620 5686045,378618.75 5686045.5,378617.90625 5686046.5,378617 5686047.5,378616.1875 5686048,378615.71875 5686048.5,378614.875 5686049,378614.0625 5686049,378612.8125 5686050,378611.15625 5686050.5,378609.90625 5686051,378609.0625 5686052,378608.1875 5686052.5,378608.15625 5686053,378607.34375 5686053,378606.875 5686054,378605.59375 5686054.5,378604.78125 5686055,378604.40625 5686055,378603.21875 5686055,378601.65625 5686054.5,378599.28125 5686054.5,378598.5 5686054.5,378598.1875 5686053.5,378597.40625 5686053.5,378597 5686053.5,378595.9375 5686052,378594.40625 5686051.5,378593.3125 5686050.5,378592.1875 5686049.5,378591.09375 5686049,378590 5686048,378588.9375 5686046.5,378587.8125 5686045.5,378586.71875 5686045,378586 5686044,378584.90625 5686043,378584.1875 5686042,378583.4375 5686041.5,378582.75 5686041,378582.375 5686040.5,378581.625 5686040,378580.96875 5686038.5,378579.8125 5686038,378579.46875 5686037.5,378579.125 5686037.5,378578.4375 5686036,378577.28125 5686035.5,378576.625 5686034,378575.90625 5686033.5,378575.65625 5686032,378575 5686030.5,378574.40625 5686028.5,378573 5686026.5,378572.46875 5686024,378571.84375 5686022,378571.21875 5686020,378570.625 5686018,378570 5686016.5,378569.3125 5686015,378568.625 5686014,378568.3125 5686013,378567.625 5686012.5,378567.65625 5686012,378566.9375 5686011,378566.96875 5686010.5,378565.875 5686009.5,378565.53125 5686009.5,378564.40625 5686008.5,378563.3125 5686007.5,378562.5625 5686007,378562.21875 5686006.5,378561.5 5686005.5,378560.75 5686005,378559.28125 5686004,378557.78125 5686003,378556.71875 5686001.5,378556.0625 5686000.5,378555 5685999,378554.3125 5685998,378553.21875 5685997,378552.53125 5685995.5,378551.84375 5685995,378551.65625 5685994.5,378551.5 5685994,378551.15625 5685993.5,378551.1875 5685993,378550 5685993,378549.46875 5685990.5,378546.90625 5685988.5,378546.21875 5685987,378545.96875 5685985.5,378545.625 5685985,378545.65625 5685984.5,378544.9375 5685984,378544.59375 5685983.5,378543.96875 5685981.5,378543.59375 5685981,378542.5625 5685979.5,378541.8125 5685979,378541.5 5685978,378541.1875 5685977.5,378540.5625 5685976,378539.0625 5685975,378538.375 5685973.5,378537.3125 5685972.5,378536.59375 5685971.5,378535.875 5685971,378535.15625 5685970,378534.78125 5685969.5,378534.03125 5685969,378532.875 5685969,378531.875 5685967,378530.46875 5685965,378529.75 5685964.5,378529.78125 5685964,378529.375 5685964,378528.6875 5685963,378527.90625 5685963,378525.96875 5685962.5,378524.40625 5685962,378523.625 5685962,378522.8125 5685962,378522.03125 5685962,378521.65625 5685962,378520.46875 5685962,378519.6875 5685961.5,378518.5 5685961.5,378517.71875 5685961.5,378516.53125 5685961.5,378515.75 5685961.5,378514.25 5685960.5,378512.34375 5685960,378511.21875 5685959,378510.53125 5685958,378509.78125 5685957.5,378509.8125 5685957,378508.65625 5685956.5,378508.28125 5685956.5,378507.21875 5685955.5,378506.90625 5685954.5,378506.09375 5685954.5,378506.21875 5685953,378505.46875 5685952.5,378503.71875 5685950,378502.65625 5685949,378502.0625 5685947,378502.21875 5685945.5,378501.53125 5685944,378501.65625 5685943,378501.78125 5685941.5,378501.5 5685940.5,378501.125 5685940,378501.21875 5685939,378500.4375 5685939,378499.40625 5685937.5,378498.34375 5685936,378497.53125 5685936,378497.59375 5685935.5,378496.0625 5685935,378495.21875 5685935,378494.46875 5685935,378493.78125 5685934,378492.96875 5685934,378492.1875 5685934,378491.40625 5685934,378490.21875 5685933.5,378488.65625 5685933.5,378487.46875 5685933.5,378486.3125 5685933.5,378485.15625 5685933,378484.78125 5685933,378484.03125 5685932.5,378483.25 5685932,378482.53125 5685931.5,378481.375 5685931,378479.84375 5685930.5,378478.6875 5685930,378477.9375 5685929.5,378477.53125 5685929.5,378477.21875 5685929,378476.875 5685928.5,378476.21875 5685926.5,378475.125 5685926,378474.4375 5685924.5,378473.78125 5685923.5,378473.40625 5685923,378473.46875 5685922.5,378473.6875 5685920,378473.125 5685917.5,378473.3125 5685915.5,378473.53125 5685913.5,378473.65625 5685912,378473.75 5685911,378473.875 5685910,378473.9375 5685909,378474.0625 5685908,378474.15625 5685906.5,378474.34375 5685904.5,378474.53125 5685902.5,378474.6875 5685901,378474.84375 5685899.5,378475 5685898,378475.15625 5685896.5,378475.25 5685895.5,378474.53125 5685894.5,378473.84375 5685893.5,378473.875 5685893,378473.15625 5685892.5,378472.09375 5685891,378471.4375 5685889.5,378470.75 5685888.5,378470.875 5685887.5,378469.75 5685886.5,378469.46875 5685885,378468.84375 5685883.5,378467.8125 5685882,378467.1875 5685880,378466.5 5685879,378466.65625 5685877.5,378465.9375 5685876.5,378466.03125 5685875.5,378465.28125 5685875,378465.3125 5685875,378464.53125 5685874.5,378463.84375 5685873.5,378461.96875 5685872.5,378461.21875 5685872,378461 5685872,378460.46875 5685871.5,378459.6875 5685871.5,378458.53125 5685871,378457.4375 5685870,378454.6875 5685869.5,378453.1875 5685869,378451.6875 5685868,378450.53125 5685867.5,378449.71875 5685867.5,378448.625 5685866.5,378448.28125 5685866.5,378447.09375 5685866,378446.3125 5685866,378445.125 5685866,378444.75 5685866,378443.5625 5685866,378442.78125 5685865.5,378442 5685865.5,378441.59375 5685865.5,378440.40625 5685865.5,378439.625 5685865.5,378438.46875 5685865.5,378438.25 5685865.5,378437.28125 5685865,378435.25 5685866,378432.4375 5685866,378430.875 5685865.5,378429.28125 5685866,378428.09375 5685866,378426.84375 5685866.5,378425.28125 5685866.5,378424.09375 5685866,378422.84375 5685867,378422 5685867,378421.21875 5685867,378420.84375 5685867,378419.96875 5685868,378419.125 5685868.5,378417.46875 5685869,378415.46875 5685869.5,378414.21875 5685870,378413.71875 5685871,378412.875 5685871.5,378412.46875 5685872,378411.5625 5685873,378410.125 5685873,378410.09375 5685873.5,378408.8125 5685882.5,378405.96875 5685892.5,378403.53125 5685899.5,378401.53125 5685904,378399.28125 5685908,378399.46875 5685908,378399.875 5685912.5,378400.34375 5685916,378400.15625 5685918,378399.96875 5685920,378399.875 5685920.5,378399.8125 5685921.5,378399.75 5685922,378399.625 5685923.5,378399.5 5685924.5,378398.0625 5685927,378397.0625 5685929.5,378395.625 5685932,378395.15625 5685933,378395.03125 5685934,378394.90625 5685935.5,378390.84375 5685936.5,378389.15625 5685937.5,378387.90625 5685938,378387.09375 5685938.5,378386.21875 5685939,378385.8125 5685939.5,378384.96875 5685940,378384.15625 5685940,378382.9375 5685940.5,378381.25 5685941.5,378378.875 5685941.5,378377.25 5685942,378376 5685942.5,378374.78125 5685942.5,378373.53125 5685943.5,378371.9375 5685943.5,378371.09375 5685944,378369.9375 5685944,378369.53125 5685944,378368.71875 5685944,378367.9375 5685944,378366.34375 5685944,378365.5625 5685944,378364.3125 5685944.5,378363.125 5685944.5,378362.75 5685944.5,378361.875 5685945,378361.09375 5685945,378359.90625 5685945,378359.125 5685944.5,378357.84375 5685946,378357.0625 5685945.5,378355.40625 5685946.5,378353.84375 5685946,378352.96875 5685947,378352.15625 5685947,378351.34375 5685947.5,378350.90625 5685948,378349.625 5685949,378348 5685949,378346.75 5685950,378345.5 5685950.5,378344.28125 5685950.5,378343.0625 5685951,378341.84375 5685951.5,378341.03125 5685951.5,378340.25 5685951.5,378339.84375 5685951.5,378339.1875 5685950,378339.28125 5685949,378339.3125 5685948.5,378338.6875 5685947,378338.71875 5685946.5,378338.0625 5685945.5,378337.5 5685943,378337.59375 5685941.5,378337.71875 5685940.5,378337.78125 5685940,378337.84375 5685939.5,378337.5625 5685938,378337.28125 5685937,378336.09375 5685937,378335.3125 5685936.5,378334.15625 5685936,378333.375 5685936,378333 5685936,378331.8125 5685936,378331.40625 5685936,378329.84375 5685936,378329.0625 5685935.5,378328.28125 5685935.5,378327.5 5685935.5,378326.3125 5685935.5,378325.53125 5685935.5,378323.96875 5685935,378323.15625 5685935,378321.59375 5685935,378320.03125 5685935,378319.25 5685934.5,378318.0625 5685934.5,378316.84375 5685935,378316.03125 5685935,378315.15625 5685936,378313.9375 5685936,378313.15625 5685936,378312.375 5685936,378311.53125 5685936.5,378311.0625 5685937.5,378309.75 5685938.5,378308.9375 5685939,378308.4375 5685940,378307.9375 5685941,378307.46875 5685942,378306.5625 5685943,378306.09375 5685943.5,378306.03125 5685944.5,378305.53125 5685945.5,378305.09375 5685946,378304.1875 5685947,378303.375 5685947.5,378302.5 5685948,378302.03125 5685949,378301.5625 5685949.5,378301.53125 5685950,378301.46875 5685951,378300.65625 5685950.5,378300.3125 5685950.5,378299.53125 5685950,378299.125 5685950,378299.09375 5685950.5,378298.28125 5685951,378297.5 5685951,378296.59375 5685952,378294.53125 5685953,378293.6875 5685953,378293.28125 5685953.5,378292.875 5685953.5,378292.8125 5685954.5,378291.59375 5685954.5,378291.1875 5685954.5,378291.125 5685955.5,378289.53125 5685955,378288.59375 5685956.5,378287.34375 5685957.5,378286.5 5685958,378285.625 5685958.5,378285.21875 5685959,378284.75 5685960,378283.90625 5685960,378283.125 5685960,378282.21875 5685961,378280.59375 5685962,378279.34375 5685962.5,378278.46875 5685963,378277.625 5685964,378277.1875 5685964,378276.3125 5685965,378275.9375 5685965,378274.6875 5685965.5,378274.28125 5685965.5,378273.03125 5685966,378272.625 5685966,378271 5685967,378270.59375 5685966.5,378269.3125 5685968,378268.5 5685968,378267.21875 5685969,378265.96875 5685969.5,378265.1875 5685969.5,378264.40625 5685969.5,378263.15625 5685970,378262.375 5685970,378260.8125 5685969.5,378260 5685969.5,378259.15625 5685970.5,378258.375 5685970.5,378257.59375 5685970,378256.375 5685970.5,378255.1875 5685970.5,378253.21875 5685970,378251.65625 5685970,378250.875 5685970,378250.46875 5685970,378249.6875 5685970,378248.90625 5685969.5,378247.71875 5685969.5,378246.90625 5685970,378245.25 5685970.5,378244.46875 5685970.5,378243.6875 5685970.5,378243.28125 5685970.5,378242.03125 5685971,378241.21875 5685971.5,378239.5625 5685972,378239.15625 5685972.5,378238.75 5685972.5,378237.84375 5685973.5,378237.03125 5685973.5,378235.78125 5685974.5,378235.28125 5685975.5,378235.1875 5685976.5,378235.15625 5685976.5,378234.8125 5685980,378233.375 5685983,378233.3125 5685983.5,378233.28125 5685984,378233.1875 5685985,378233.15625 5685985,378233.03125 5685986.5,378232.5625 5685987,378231.53125 5685990,378231.375 5685991.5,378231.21875 5685993,378231.09375 5685994.5,378231.03125 5685995,378231 5685995.5,378230.90625 5685996.5,378230.8125 5685997.5,378230.71875 5685998.5,378230.625 5685999.5,378230.46875 5686001,378230.4375 5686001,378230.28125 5686003,378230.1875 5686004,378230.0625 5686005,378230 5686006,378229.34375 5686008.5,378228.40625 5686010,378228.25 5686011.5,378228.15625 5686013,378227.6875 5686013.5,378227.59375 5686014.5,378227.21875 5686014.5,378226.40625 5686014.5,378225.8125 5686016.5,378225.625 5686018.5,378224.84375 5686018.5,378223.90625 5686020,378222.5625 5686021.5,378222.1875 5686021.5,378220.96875 5686021.5,378220.0625 5686023,378219.25 5686023,378218.78125 5686024,378218.34375 5686024,378217.5625 5686024,378216.78125 5686024,378215.96875 5686024,378215.1875 5686024,378214.03125 5686024,378213.25 5686023.5,378212.0625 5686023.5,378212.125 5686023,378211.34375 5686022.5,378211.03125 5686022,378210.3125 5686021,378210.40625 5686020.5,378209.65625 5686020,378209.71875 5686019,378209.375 5686018.5,378209.09375 5686017.5,378209.125 5686017,378208.03125 5686016,378208.0625 5686015.5,378208.15625 5686014.5,378205.9375 5686013,378204.96875 5686010.5,378203.90625 5686009.5,378203.59375 5686008.5,378203.65625 5686007.5,378202.875 5686007.5,378201.6875 5686007.5,378200.53125 5686007.5,378199.71875 5686007.5,378198.9375 5686007,378197.78125 5686007,378196.59375 5686007,378195.03125 5686007,378193.84375 5686006.5,378193.0625 5686006.5,378192.96875 5686007.5,378191.8125 5686007,378191.40625 5686007,378190.625 5686007,378190.5625 5686008,378189.34375 5686008,378188.40625 5686009.5,378187.5 5686011,378187.4375 5686011.5,378186.59375 5686012,378186.125 5686012.5,378184.84375 5686013.5,378184.375 5686014.5,378183.46875 5686015.5,378183 5686016.5,378182.59375 5686016.5,378182.53125 5686017,378181.28125 5686017.5,378180.8125 5686018.5,378180.71875 5686019.5,378179.46875 5686020.5,378179.03125 5686020.5,378179 5686021,378178.96875 5686021.5,378178.5625 5686021.5,378177.6875 5686022,378176.375 5686023.5,378175.9375 5686024,378175.09375 5686024.5,378173.78125 5686025.5,378173.375 5686026,378172.5 5686027,378171.59375 5686028,378170.34375 5686028.5,378169.0625 5686029.5,378167.40625 5686030,378165.78125 5686031,378164.875 5686032,378163.65625 5686032,378162.84375 5686032.5,378162.4375 5686032.5,378162.5 5686031.5,378162.5625 5686031.5,378162.59375 5686030.5,378152.25 5686035.5,378151.90625 5686039,378153.625 5686042,378154.40625 5686042,378154.3125 5686043,378154.03125 5686046,378158.40625 5686046,378163.125 5686048,378164.6875 5686052,378166.59375 5686059.5,378167.71875 5686064.5,378168.09375 5686067.5,378169.625 5686072.5,378174.53125 5686078,378175.5625 5686078,378176.75 5686078,378177.53125 5686078,378178.3125 5686078,378179.09375 5686078.5,378179.875 5686078.5,378181.46875 5686078.5,378182.25 5686078.5,378183.40625 5686078.5,378184.21875 5686079,378185.78125 5686079,378186.5625 5686079,378186.96875 5686079,378188.0625 5686080,378188.84375 5686080,378190.34375 5686081,378191.90625 5686081,378192.6875 5686081,378193.46875 5686081.5,378194.53125 5686082.5,378195.6875 5686083,378197.5625 5686084,378199.0625 5686085,378200.21875 5686085.5,378200.96875 5686086,378202.09375 5686086.5,378203.25 5686087,378204 5686087.5,378205.125 5686088,378206.28125 5686088.5,378207.375 5686089.5,378208.5 5686090,378209.25 5686090.5,378210.40625 5686091,378211.53125 5686091.5,378212.34375 5686091.5,378213.125 5686091.5,378214.21875 5686092.5,378215 5686092.5,378216.1875 5686093,378216.9375 5686093,378218.375 5686094.5,378220.3125 5686095,378221.375 5686096.5,378222.5 5686097.5,378223.9375 5686098.5,378225.03125 5686099.5,378226.15625 5686100.5,378227.25 5686101.5,378228.34375 5686102.5,378229.0625 5686103,378229.78125 5686104,378230.53125 5686104.5,378231.15625 5686106,378232.65625 5686107,378233.375 5686108,378234.09375 5686109,378234.78125 5686109.5,378235.5 5686110.5,378235.78125 5686112,378236.5 5686112.5,378237.1875 5686113.5,378237.125 5686114.5,378237.875 5686115,378238.5625 5686116,378239.28125 5686116.5,378240.3125 5686118,378241.375 5686119.5,378242.5 5686120.5,378243.15625 5686121.5,378243.90625 5686122,378244.28125 5686122.5,378245.34375 5686124,378245.6875 5686124.5,378246.84375 5686125,378247.625 5686125,378248 5686125,378248.71875 5686126,378249.46875 5686126.5,378250.9375 5686127.5,378252.4375 5686128.5,378253.46875 5686129.5,378253.53125 5686129.5,378254.25 5686130.5,378255.375 5686131,378256.125 5686131.5,378257.3125 5686131.5,378258 5686132.5,378259.125 5686133.5,378261.03125 5686134,378261.78125 5686134.5,378262.53125 5686135,378263.3125 5686135,378264.125 5686135,378264.8125 5686136,378267.125 5686136.5,378268.3125 5686136.5,378269.0625 5686137,378269.84375 5686137,378270.25 5686137,378271.03125 5686137,378271.875 5686136.5,378272.3125 5686136,378273.5625 5686135.5,378274.40625 5686135,378275.6875 5686134,378276.9375 5686133.5,378278.1875 5686133,378278.65625 5686132,378279.53125 5686131.5,378280 5686130.5,378280.9375 5686129,378282.1875 5686128.5,378282.71875 5686127,378282.875 5686125.5,378283.71875 5686124.5,378283.78125 5686124,378283.90625 5686122.5,378284.0625 5686121,378284.5625 5686116,378283.21875 5686113.5,378283.03125 5686111,378283.21875 5686109,378283.34375 5686108,378283.03125 5686107,378282.34375 5686106,378282.46875 5686104.5,378281.78125 5686103.5,378281.46875 5686102.5,378281.21875 5686101,378280.96875 5686099.5,378280.6875 5686098,378280.84375 5686096.5,378280.1875 5686095.5,378280.28125 5686094,378280.34375 5686093.5,378280.375 5686093.5,378280.625 5686090.5,378279.6875 5686088,378279.5 5686085.5,378279.71875 5686083.5,378279.84375 5686082,378279.96875 5686081,378280.03125 5686080,378279.3125 5686079.5,378278.9375 5686079,378278.71875 5686077,378276.53125 5686075.5,378276.03125 5686075,378272.375 5686073.5,378267.28125 5686070,378262.5625 5686067,378258.25 5686062.5,378255.53125 5686058,378255.5625 5686054.5,378256.78125 5686050.5,378260 5686041.5,378260.84375 5686037.5,378263.25 5686032,378265.28125 5686027.5,378267.6875 5686021.5,378270.53125 5686014.5,378273.34375 5686008.5,378277.75 5686000.5,378282.40625 5685992.5,378282.96875 5685992,378285.3125 5685987.5,378286.03125 5685988,378287.28125 5685987,378288.875 5685987.5,378289.71875 5685986.5,378290.96875 5685986,378292.1875 5685985.5,378292.625 5685985.5,378293.40625 5685985.5,378294.28125 5685984.5,378294.6875 5685984.5,378295.5 5685984.5,378295.875 5685984.5,378296.75 5685983.5,378297.15625 5685983.5,378298 5685983,378298.84375 5685982.5,378299.25 5685982.5,378300.15625 5685981,378300.53125 5685981.5,378301.78125 5685980.5,378302.5625 5685980.5,378303 5685980.5,378304.25 5685979.5,378304.6875 5685979.5,378305.90625 5685979,378307.15625 5685978.5,378307.5625 5685978.5,378308.8125 5685978,378310.375 5685978,378311.625 5685977,378312.0625 5685977,378312.4375 5685977,378313.25 5685977,378314.5 5685976.5,378314.875 5685976.5,378316.09375 5685976,378316.875 5685976,378317.75 5685975.5,378318.53125 5685975.5,378319.3125 5685975.5,378320.96875 5685975,378322.1875 5685974.5,378322.5625 5685975,378323.4375 5685974,378324.21875 5685974,378324.59375 5685974,378325.46875 5685973.5,378326.6875 5685973,378327.0625 5685973,378327.9375 5685972.5,378328.75 5685972,378330.8125 5685971.5,378331.96875 5685972,378333.15625 5685972,378333.59375 5685971.5,378333.96875 5685971.5,378334.75 5685971.5,378335.9375 5685972,378336.34375 5685972,378337.9375 5685971.5,378338.71875 5685971.5,378339.5 5685971.5,378340.28125 5685971.5,378340.78125 5685971,378342.375 5685971,378342.78125 5685971,378343.9375 5685971,378344.34375 5685971,378345.59375 5685970.5,378346.375 5685970.5,378347.15625 5685970.5,378347.9375 5685970.5,378349.15625 5685970.5,378349.9375 5685970.5,378351.1875 5685969.5,378352 5685970,378353.28125 5685968.5,378354.5 5685968.5,378355.28125 5685968.5,378355.65625 5685968.5,378356.53125 5685968,378356.96875 5685967.5,378357.75 5685967.5,378358.125 5685967.5,378358.96875 5685967.5,378359.75 5685967.5,378361.03125 5685966.5,378361.875 5685966,378362.65625 5685966,378363.46875 5685966,378363.875 5685966,378365.125 5685965,378365.90625 5685965.5,378367.59375 5685964,378369.1875 5685964,378370.40625 5685963.5,378371.21875 5685963.5,378372.03125 5685963.5,378373.21875 5685963,378374.03125 5685963.5,378374.125 5685962,378375.3125 5685962,378376.53125 5685962,378377.6875 5685962,378378.59375 5685961,378379 5685961,378380.625 5685960.5,378381.4375 5685960.5,378382.75 5685959,378384 5685958.5,378384.40625 5685958.5,378385.25 5685957.5,378386.09375 5685957.5,378386.90625 5685957,378388.09375 5685957,378389.75 5685956,378391.03125 5685955.5,378391.8125 5685955.5,378392.1875 5685955.5,378393.03125 5685955.5,378393.40625 5685955.5,378394.1875 5685955.5,378394.96875 5685955.5,378396.625 5685955,378397.40625 5685955,378398.625 5685954.5,378399.8125 5685955,378401.5 5685954,378402.34375 5685953,378402.75 5685953,378403.59375 5685952.5,378405.65625 5685952,378406.90625 5685951,378408.125 5685951,378408.90625 5685951,378409.28125 5685951,378410.53125 5685950.5,378410.96875 5685950,378412.625 5685949.5,378413.40625 5685949.5,378413.84375 5685949,378414.71875 5685948,378415.15625 5685947.5,378416.40625 5685947,378417.28125 5685946,378418.53125 5685945.5,378419.4375 5685944.5,378420.25 5685944,378421.125 5685943.5,378421.53125 5685943,378422.84375 5685942,378424.03125 5685941.5,378425.3125 5685941,378425.78125 5685940.5,378426.1875 5685940,378427.03125 5685939.5,378427.96875 5685938,378429.59375 5685937.5,378430.4375 5685937,378430.46875 5685937,378430.53125 5685936,378432.15625 5685936,378432.96875 5685935.5,378433.375 5685935.5,378434.6875 5685934,378436.3125 5685934,378437.125 5685933.5,378437.9375 5685933,378437.96875 5685933,378438.75 5685933,378439.5625 5685933,378441.5 5685933,378442.59375 5685934.5,378443.375 5685934.5,378443.71875 5685935,378443.5625 5685936.5,378445.8125 5685938,378447.125 5685941,378448.53125 5685942.5,378449.28125 5685943,378449.21875 5685944,378449.15625 5685944.5,378449.84375 5685945.5,378451.625 5685947.5,378453.125 5685948.5,378453.84375 5685949.5,378454.5625 5685950.5,378454.90625 5685951,378455.25 5685951,378455.96875 5685952,378456.71875 5685952.5,378457.375 5685954,378458.125 5685954.5,378458.5 5685954.5,378459.625 5685955.5,378460 5685955.5,378460.375 5685955.5,378460.3125 5685956.5,378461.0625 5685957,378461.84375 5685957,378462.46875 5685958.5,378463.625 5685959,378464 5685959.5,378463.9375 5685960,378465.8125 5685961,378466.5 5685962.5,378467.96875 5685963.5,378469.09375 5685964,378469.03125 5685965,378468.90625 5685966,378470.8125 5685967,378471.4375 5685969,378472.15625 5685969.5,378472.46875 5685970.5,378472.4375 5685971,378472.34375 5685971.5,378473.4375 5685972.5,378474.09375 5685974,378474.75 5685975.5,378475.125 5685976,378475.4375 5685976.5,378475.78125 5685977,378476.96875 5685977.5,378478.53125 5685977.5,378479.71875 5685977.5,378480.46875 5685978,378481.25 5685978,378482.40625 5685978.5,378484.34375 5685979,378485.15625 5685979,378486.71875 5685979,378487.4375 5685980,378487.375 5685980.5,378488.5625 5685980.5,378489.25 5685981.5,378490.3125 5685983,378490.96875 5685984.5,378490.8125 5685986,378490.75 5685986.5,378490.71875 5685987,378491.09375 5685987,378491.34375 5685988.5,378491.25 5685990,378491.15625 5685990.5,378491.09375 5685991.5,378491.46875 5685991.5,378492.0625 5685993.5,378493.5 5685995,378494.125 5685997,378494.71875 5685999,378495.4375 5686000,378495.71875 5686001,378496.4375 5686002,378496.34375 5686002.5,378497.0625 5686003.5,378498.125 5686005,378498.8125 5686006,378499.53125 5686007,378499.5625 5686007,378500.1875 5686008,378500.90625 5686009,378501.25 5686009.5,378501.1875 5686010.5,378501.5625 5686010.5,378501.78125 5686012.5,378502.8125 5686014,378503.40625 5686016,378503.25 5686017.5,378503.21875 5686018,378503.1875 5686018.5,378502.96875 5686021,378503.9375 5686023,378504.5625 5686025,378505.1875 5686026.5,378505.46875 5686028,378505.375 5686028.5,378506.1875 5686028.5,378506.625 5686032.5,378507.53125 5686035,378507.75 5686037,378507.5625 5686039,378507.53125 5686039.5,378507.84375 5686040.5,378508.1875 5686041,378508.15625 5686041,378509.34375 5686041.5,378510.75 5686043,378512.21875 5686044.5,378512.96875 5686045,378513.28125 5686045.5,378513.6875 5686046,378514.40625 5686046,378514.8125 5686046.5,378515.5625 5686046.5,378516.6875 5686047.5,378517.5 5686047.5,378519.4375 5686047.5,378520.25 5686047.5,378520.625 5686047.5,378521.8125 5686048,378522.5625 5686048.5,378523.71875 5686048.5,378524.53125 5686048.5,378525.65625 5686049,378527.21875 5686049,378527.625 5686049,378528.75 5686049.5,378530.25 5686050.5,378532.21875 5686051,378533.375 5686051.5,378534.15625 5686051.5,378534.9375 5686051.5,378534.875 5686052.5,378536.03125 5686052.5,378537.1875 5686053,378539.09375 5686053.5,378539.78125 5686055,378540.875 5686055.5,378541.625 5686056,378542 5686056.5,378542.78125 5686056.5,378543.5625 5686056.5,378544.34375 5686057,378545.4375 5686057.5,378546.1875 5686058,378546.59375 5686058,378547.375 5686058.5,378548.15625 5686058.5,378549.34375 5686058.5,378550.125 5686058.5,378550.90625 5686058.5,378552.09375 5686059,378552.46875 5686059,378552.875 5686059,378553.25 5686059,378554.125 5686058,378554.9375 5686058,378555.34375 5686058,378556.125 5686058,378556.96875 5686057.5,378558.59375 5686057,378559 5686057,378559.78125 5686057,378560.5625 5686057.5,378561.40625 5686056.5,378561.8125 5686056.5,378562.59375 5686056.5,378563.375 5686057,378564.15625 5686057,378564.5625 5686057,378564.9375 5686057,378566.125 5686057,378566.90625 5686057,378567.3125 5686057,378568.09375 5686057,378568.8125 5686058,378569.96875 5686058,378569.84375 5686060,378570.5 5686061,378570.75 5686062.5,378570.59375 5686064,378570.4375 5686066,378571.15625 5686066.5,378571.40625 5686068.5,378571.25 5686070,378571.1875 5686070.5,378571.09375 5686071.5,378570.75 5686075,378570.53125 5686077.5,378570.34375 5686079.5,378570.21875 5686081,378570.125 5686081.5,378570.03125 5686083,378569.6875 5686086.5,378568.59375 5686089.5,378568.4375 5686091,378568.34375 5686092,378568.25 5686093,378568.21875 5686093.5,378568.15625 5686094,378567.96875 5686096,378566.59375 5686098,378566 5686100,378565.0625 5686101.5,378564.5625 5686102.5,378564.0625 5686103.5,378563.15625 5686105,378562.65625 5686106,378561.71875 5686107.5,378560.84375 5686108.5,378560.28125 5686110,378559.40625 5686111,378558.84375 5686112.5,378558.3125 5686114.5,378557.40625 5686115.5,378556.90625 5686116.5,378556.40625 5686117.5,378555.90625 5686119,378555.375 5686120,378555.3125 5686120.5,378554.46875 5686121.5,378554.375 5686122,378553.40625 5686124,378552.53125 5686125,378551.65625 5686126,378551.5 5686127.5,378551.03125 5686128,378550.96875 5686129,378550.84375 5686130,378550.8125 5686130.5,378550.03125 5686130.5,378549.78125 5686133,378548.40625 5686135,378547.8125 5686137,378547.625 5686139,378547.5 5686140,378547 5686141.5,378546.125 5686142.5,378546.0625 5686143,378545.6875 5686143,378545.03125 5686145.5,378544.0625 5686147.5,378543.875 5686149.5,378543.28125 5686151.5,378543.1875 5686152.5,378543.03125 5686154,378542.09375 5686155.5,378541.9375 5686157,378541.875 5686158,378541.75 5686159,378541.625 5686160.5,378541.59375 5686160.5,378541.40625 5686162.5,378540.46875 5686164,378540.375 5686165.5,378540.25 5686166.5,378539.90625 5686170,378538.875 5686172.5,378538.78125 5686173.5,378538.75 5686174,378538.5625 5686176,378537.28125 5686177,378536.78125 5686178,378536.6875 5686179,378536.5 5686181,378534.75 5686182.5,378533.84375 5686183.5,378533.75 5686185,378533.71875 5686185.5,378533.625 5686186,378532.84375 5686186,378531.84375 5686188.5,378530.4375 5686190.5,378530.34375 5686191.5,378530.28125 5686192,378529.8125 5686193,378529.75 5686193.5,378528.84375 5686194.5,378528.78125 5686195.5,378527.90625 5686196,378527.875 5686196.5,378527 5686197.5,378525.78125 5686197.5,378524.90625 5686198.5,378524.03125 5686199.5,378523.1875 5686200,378522.75 5686200.5,378522.28125 5686201,378522.25 5686201.5,378521.46875 5686201.5,378520.5625 5686202.5,378519.3125 5686203.5,378518.53125 5686203,378518.125 5686203,378516.84375 5686204,378515.15625 5686205.5,378514.28125 5686206,378513.46875 5686206.5,378513.0625 5686206,378512.625 5686207,378511.8125 5686207,378511.03125 5686207,378509.875 5686206.5,378509.46875 5686206.5,378508.6875 5686206.5,378507.90625 5686206.5,378506.71875 5686206.5,378505.9375 5686206.5,378504.375 5686206,378503.5625 5686206,378502.40625 5686206,378501.625 5686206,378500.03125 5686205.5,378499.65625 5686205.5,378498.46875 5686205.5,378497.6875 5686205.5,378496.90625 5686205.5,378495.71875 5686205.5,378495.34375 5686205,378494.15625 5686205,378493.375 5686205,378491.40625 5686205,378490.625 5686205,378489.84375 5686204.5,378489.4375 5686204.5,378488.65625 5686204.5,378487.875 5686204.5,378487.78125 5686205.5,378487.75 5686205.5,378486.46875 5686206.5,378486.4375 5686207,378486.15625 5686210,378487.1875 5686211.5,378487.40625 5686213.5,378487.59375 5686215.5,378487.5625 5686216,378487.5 5686217,378487.8125 5686217.5,378488.15625 5686218,378488.84375 5686219.5,378488.75 5686220,378489.46875 5686221,378489.4375 5686221.5,378489.28125 5686223,378489.1875 5686224,378489.09375 5686225,378489.0625 5686225.5,378489 5686226,378488.9375 5686226.5,378488.84375 5686227.5,378488.75 5686228.5,378487.90625 5686229,378487.875 5686229.5,378487.46875 5686229.5,378486.625 5686230,378484.625 5686230.5,378483.75 5686231,378482.53125 5686231.5,378481.75 5686231.5,378480.875 5686232,378480.5 5686232,378480.09375 5686232,378479.21875 5686233,378478.375 5686233.5,378476.75 5686234,378475.125 5686234,378473.875 5686235,378473.0625 5686235,378472.28125 5686235,378471.875 5686235,378471 5686236,378470.21875 5686235.5,378468.59375 5686236.5,378467 5686236,378465.78125 5686236.5,378465 5686236.5,378464.1875 5686236.5,378463.40625 5686236.5,378462.21875 5686236.5,378461.4375 5686236.5,378459.875 5686236,378457.90625 5686236,378457.125 5686236,378455.9375 5686236,378454.6875 5686236.5,378453.875 5686237,378452.6875 5686236.5,378451.90625 5686236.5,378450.71875 5686236.5,378449.9375 5686236.5,378448.75 5686236.5,378447.59375 5686236,378445.53125 5686237,378443.9375 5686237,378442.375 5686237,378441.5625 5686237,378440.78125 5686236.5,378440.40625 5686236.5,378439.625 5686236.5,378439.21875 5686236.5,378438.03125 5686236.5,378437.65625 5686236.5,378436.59375 5686235,378436.21875 5686234.5,378435.0625 5686234.5,378434.65625 5686234.5,378433.46875 5686234.5,378433.09375 5686234.5,378432 5686233.5,378431.59375 5686233.5,378430.5 5686232.5,378429.3125 5686232.5,378429 5686231.5,378428.59375 5686231.5,378427.9375 5686230,378427.1875 5686229.5,378425.65625 5686229,378424.59375 5686228,378423.84375 5686227.5,378423.875 5686227,378423.5625 5686226,378423.59375 5686226,378422.53125 5686224.5,378421.40625 5686223.5,378421.125 5686222.5,378420.4375 5686221.5,378420.15625 5686220.5,378419.46875 5686219,378418.75 5686218,378418.4375 5686217.5,378418.09375 5686217,378418.125 5686216.5,378416.9375 5686216.5,378415.90625 5686214.5,378414.5 5686213,378414.09375 5686213,378413.3125 5686213,378412.53125 5686213,378410.96875 5686212.5,378410.1875 5686212.5,378408.625 5686212.5,378407.8125 5686212.5,378407.03125 5686212,378405.875 5686212,378404.6875 5686212,378402.71875 5686212,378400.75 5686211.5,378399.5625 5686211.5,378398.78125 5686211.5,378398 5686211.5,378397.21875 5686211,378396.03125 5686211,378395.1875 5686212,378393.09375 5686213,378391.875 5686213,378391 5686214,378390.09375 5686215.5,378389.625 5686216,378389.15625 5686216.5,378388.6875 5686217.5,378388.65625 5686218,378388.59375 5686218.5,378387.28125 5686219.5,378386.8125 5686220.5,378386.34375 5686221,378386.25 5686222.5,378385.34375 5686223.5,378385.28125 5686224.5,378384.40625 5686225,378384.03125 5686225,378382.4375 5686225,378381.65625 5686224.5,378380.875 5686224.5,378380.09375 5686224.5,378378.53125 5686224.5,378376.15625 5686224,378374.96875 5686224,378373.40625 5686224,378372.625 5686224,378371.84375 5686223.5,378370.96875 5686224.5,378370.59375 5686224.5,378369.71875 5686225,378368.5 5686225.5,378366.84375 5686226.5,378365.5625 5686227,378364.71875 5686228,378363.84375 5686228.5,378363.4375 5686229,378363.375 5686229,378362.78125 5686230,378362.5 5686230.5,378361.65625 5686230.5,378360.6875 5686232.5,378359.40625 5686233.5,378358.90625 5686234.5,378358.34375 5686236.5,378357.53125 5686236.5,378357.5 5686237,378357 5686238,378356.96875 5686238.5,378356.875 5686239.5,378356.84375 5686239.5,378356.65625 5686241.5,378355.78125 5686242.5,378355.6875 5686243.5,378355.5625 5686244.5,378355.40625 5686246.5,378354.9375 5686247,378354.5625 5686247,378354.46875 5686248,378354.375 5686249,378353.90625 5686249.5,378352.9375 5686251.5,378352.4375 5686253,378352.34375 5686253.5,378352.28125 5686254.5,378351.875 5686254.5,378350.84375 5686257,378350.25 5686259,378350.15625 5686260,378350.0625 5686261,378349.6875 5686261,378349.0625 5686263,378347.6875 5686265,378347.125 5686267,378346.9375 5686269,378346.46875 5686269.5,378346.40625 5686270,378346.34375 5686271,378346.3125 5686271,378346.28125 5686271.5,378346.09375 5686273.5,378345.96875 5686275,378345.875 5686276,378345.75 5686277,378345.625 5686278.5,378345.5625 5686279,378345.5 5686280,378345.4375 5686280.5,378345.34375 5686281.5,378345.25 5686282,378345.15625 5686283.5,378345.46875 5686284.5,378345.78125 5686285,378345.65625 5686286.5,378346.46875 5686286.5,378347.125 5686287.5,378347.4375 5686288.5,378348.21875 5686288.5,378348.9375 5686289.5,378349.34375 5686289.5,378350.5 5686289.5,378350.90625 5686289.5,378352.0625 5686290,378352.84375 5686290,378354.75 5686291,378355.53125 5686291,378357.5 5686291,378358.28125 5686291,378359.09375 5686291,378359.875 5686291.5,378361.03125 5686291.5,378362.625 5686291.5,378363.40625 5686291.5,378364.1875 5686291.5,378365.25 5686293,378366.03125 5686293,378366.8125 5686293,378367.59375 5686293,378368.75 5686294,378369.53125 5686294,378370.71875 5686294,378371.5 5686294,378371.875 5686294,378373.0625 5686294,378373.84375 5686294.5,378375.03125 5686294.5,378375.4375 5686294.5,378376.65625 5686294,378377.03125 5686294,378378.21875 5686294.5,378378.59375 5686294.5,378379.78125 5686294.5,378380.5625 5686294.5,378381.34375 5686294.5,378382.53125 5686295,378383.28125 5686295,378384.03125 5686295.5,378385.90625 5686296.5,378386.6875 5686297,378387.5 5686297,378388.1875 5686297.5,378388.96875 5686298,378389.375 5686298,378390.0625 5686299,378390.8125 5686299.5,378391.0625 5686301,378391.03125 5686301,378391.625 5686303,378391.53125 5686304.5,378391.40625 5686305.5,378391.34375 5686306.5,378391.25 5686307,378390.40625 5686308,378389.15625 5686308.5,378388.71875 5686309,378387.9375 5686309,378386.75 5686308.5,378386.25 5686310,378384.21875 5686310.5,378383.3125 5686311.5,378382 5686313,378381.125 5686313.5,378380.28125 5686314.5,378379.8125 5686315,378379.71875 5686316,378378.875 5686316.5,378378.4375 5686317,378377.5625 5686317.5,378377.15625 5686318,378376.28125 5686319,378375.8125 5686319.5,378374.5 5686321,378372.8125 5686322,378371.875 5686323.5,378370.9375 5686325,378370.0625 5686325.5,378369.59375 5686326.5,378369.125 5686327,378369.09375 5686327.5,378368.28125 5686328,378367.40625 5686328.5,378366.1875 5686329,378365.40625 5686329,378363.0625 5686328.5,378361.5 5686328.5,378360.3125 5686328.5,378359.875 5686328.5,378359.09375 5686328.5,378358.3125 5686328.5,378357.53125 5686328.5,378356.75 5686328.5,378355.5625 5686328,378355.15625 5686328,378354.375 5686328,378353.59375 5686328,378353.21875 5686328,378352.40625 5686328,378351.625 5686328,378350.46875 5686327.5,378349.65625 5686327.5,378347.71875 5686327.5,378345.75 5686327,378344.875 5686328,378344.03125 5686328.5,378343.25 5686328.5,378342.84375 5686328.5,378341.65625 5686328.5,378340.875 5686328.5,378339.6875 5686328,378338.53125 5686328,378336.5625 5686328,378335 5686327.5,378334.21875 5686327.5,378333.40625 5686327.5,378332.625 5686327.5,378331.84375 5686327.5,378330.65625 5686327.5,378329.875 5686327,378328.28125 5686327.5,378327.5 5686327.5,378325.90625 5686327,378325.53125 5686327,378323.96875 5686327,378323.5625 5686327,378322 5686327,378321.21875 5686326.5,378319.625 5686326.5,378319.25 5686326.5,378318.40625 5686327,378317.625 5686326.5,378316.8125 5686327,378316.03125 5686327,378315.25 5686327,378314.46875 5686327,378312.875 5686326.5,378312.09375 5686326.5,378310.03125 5686327.5,378309.25 5686327.5,378308.4375 5686327.5,378307.625 5686327.5,378307.25 5686327.5,378306.40625 5686328,378304.84375 5686328,378304.0625 5686327.5,378303.65625 5686327.5,378302.375 5686329,378301.59375 5686328.5,378300.8125 5686328.5,378300.03125 5686328.5,378298.75 5686329,378297.15625 5686329.5,378296.375 5686329.5,378295.59375 5686329.5,378294.71875 5686330,378294.28125 5686330.5,378293.5 5686330.5,378292.71875 5686330,378291.53125 5686330,378290.375 5686330,378288.78125 5686330,378288 5686329.5,378287.1875 5686330,378285.96875 5686330.5,378284.40625 5686330,378283.625 5686330,378282.78125 5686330.5,378282.375 5686330.5,378281.96875 5686330.5,378281.5625 5686330.5,378280.71875 5686331.5,378280.3125 5686331.5,378279.5 5686331.5,378278.71875 5686331.5,378277.0625 5686332,378275.84375 5686332.5,378275.0625 5686332.5,378274.25 5686332.5,378274.15625 5686333.5,378273.375 5686333.5,378272.5625 5686333.5,378271 5686333.5,378270.96875 5686333.5,378270.46875 5686335.5,378268.40625 5686344,378266.78125 5686349.5,378264.75 5686356.5,378262.71875 5686362.5,378258.6875 5686369,378256.6875 5686372,378254.625 5686373,378254.53125 5686373,378254.46875 5686374,378254.40625 5686374.5,378253.0625 5686376,378252.1875 5686377,378251.65625 5686378.5,378251.15625 5686379.5,378250.25 5686380.5,378250.1875 5686381.5,378249.3125 5686382,378249.25 5686383,378249.15625 5686384,378249 5686385.5,378246.15625 5686386.5,378244.4375 5686387.5,378242.75 5686388.5,378241.875 5686389.5,378241.84375 5686390,378241.46875 5686390,378240.28125 5686389.5,378239.5 5686389.5,378238.3125 5686389.5,378237.8125 5686390.5,378237.40625 5686390.5,378236.15625 5686391,378235.375 5686391,378233.71875 5686392,378231.375 5686391.5,378230.1875 5686391.5,378229.40625 5686391.5,378228.25 5686391,378227.84375 5686391,378227.0625 5686391,378226.65625 5686391,378225.875 5686391,378225.8125 5686392,378225.40625 5686391.5,378223.75 5686392.5,378223.375 5686392.5,378221.65625 5686393.5,378220 5686394.5,378218.71875 5686395.5,378217.8125 5686396.5,378216.96875 5686397,378216.09375 5686398,378215.25 5686398.5,378215.1875 5686399,378215.0625 5686400.5,378212.1875 5686401.5,378210.8125 5686403.5,378208.75 5686404.5,378208.34375 5686404.5,378207.9375 5686404.5,378207.5 5686405,378206.71875 5686405,378206.3125 5686405,378205.9375 5686405,378205.53125 5686405,378204.8125 5686404,378204.46875 5686403.5,378203.75 5686402.5,378202.96875 5686402.5,378202.25 5686401.5,378201.46875 5686401.5,378200.0625 5686400,378199.3125 5686399.5,378198.90625 5686399.5,378198.125 5686399.5,378197.34375 5686399,378196.5625 5686399,378195.78125 5686399,378194.09375 5686400,378191.65625 5686400.5,378190.46875 5686400.5,378189.65625 5686401,378188.875 5686400.5,378188.46875 5686400.5,378187.6875 5686400.5,378186.90625 5686400.5,378185.71875 5686400.5,378184.53125 5686400.5,378182.59375 5686400,378181 5686400,378180.21875 5686400,378179.84375 5686400,378179.0625 5686399.5,378177.875 5686399.5,378177.71875 5686401,378174.90625 5686401.5,378173.21875 5686402.5,378171.59375 5686403,378170.4375 5686403,378169.5625 5686403.5,378169.1875 5686403.5,378168.375 5686403.5,378168.28125 5686404.5,378166.625 5686405,378165.71875 5686406.5,378165.65625 5686407,378165.59375 5686408,378165.5 5686408.5,378164.53125 5686410.5,378164.46875 5686411.5,378164.3125 5686413,378164.15625 5686414.5,378164.09375 5686415.5,378164 5686416,378164.6875 5686417.5,378164.59375 5686418,378165.40625 5686418,378166.09375 5686423.5,378168.46875 5686427.5,378169.03125 5686430,378169.1875 5686432.5,378169.5 5686433.5,378169.46875 5686433.5,378169.40625 5686434.5,378170.15625 5686435,378170.46875 5686436,378170.4375 5686436,378171.09375 5686437.5,378171.40625 5686438.5,378171.65625 5686440,378171.59375 5686440.5,378171.5 5686441.5,378172.625 5686442.5,378172.625 5686446.5,378172.4375 5686448.5,378172.375 5686449,378172.28125 5686450,378172.6875 5686450,378173.15625 5686453,378173.3125 5686456,378173.125 5686458,378172.96875 5686459.5,378172.84375 5686460.5,378172.78125 5686461.5,378172.65625 5686462.5,378172.59375 5686463.5,378172.40625 5686465.5,378172.28125 5686466.5,378172.15625 5686468,378172 5686470,378171.8125 5686471.5,378171.65625 5686473.5,378171.46875 5686475.5,378171.25 5686477.5,378171.15625 5686478.5,378171.09375 5686479,378170.6875 5686479,378169.8125 5686480.5,378169.34375 5686481,378169.21875 5686482,378168.75 5686483,378167.78125 5686485,378167.71875 5686485.5,378167.3125 5686485.5,378166.40625 5686486.5,378165.9375 5686487.5,378165.84375 5686488.5,378165 5686489,378164.21875 5686489,378163.28125 5686490.5,378161.625 5686491.5,378160.71875 5686492.5,378160.59375 5686493.5,378159.8125 5686493.5,378159.375 5686494,378156.9375 5686494.5,378155.65625 5686495.5,378154.40625 5686496,378154.03125 5686496,378153.625 5686496,378153.5625 5686497,378152.75 5686497,378152.71875 5686497,378152.28125 5686497.5,378151.09375 5686498,378150.28125 5686498,378149.03125 5686498.5,378148.25 5686498.5,378146.6875 5686498,378144.25 5686498.5,378140.3125 5686498.5,378138.75 5686498,378137.1875 5686498,378136.40625 5686498,378135.5625 5686498.5,378134.78125 5686498,378133.625 5686498,378132.4375 5686498,378130.09375 5686497.5,378128.90625 5686497.5,378127.71875 5686497.5,378126.53125 5686497.5,378125.375 5686497,378124.1875 5686497,378122.625 5686497,378121.4375 5686497,378119.78125 5686497.5,378118.625 5686497.5,378117.84375 5686497.5,378116.65625 5686497,378115.875 5686497,378115.09375 5686497,378114.28125 5686497,378112.34375 5686496.5,378111.53125 5686496.5,378110.75 5686496.5,378108.78125 5686496.5,378107.625 5686496,378106.0625 5686496,378104.875 5686496,378104.46875 5686496,378103.6875 5686496,378103.3125 5686496,378102.5 5686495.5,378101.71875 5686495.5,378100.125 5686496,378098.9375 5686495.5,378098.15625 5686495.5,378097.375 5686495.5,378096.15625 5686496,378094.96875 5686495.5,378092.625 5686495.5,378090.25 5686495.5,378089.09375 5686495,378087.90625 5686495,378087.125 5686495,378086.34375 5686495,378085.1875 5686494.5,378083.625 5686494,378082.84375 5686494,378082.0625 5686494,378081.3125 5686493.5,378080.53125 5686493.5,378078.15625 5686493,378077 5686493,378075.40625 5686493,378074.25 5686493,378073.4375 5686493,378072.65625 5686492.5,378072.28125 5686492.5,378071.09375 5686492.5,378070.3125 5686492.5,378068.3125 5686492.5,378066.75 5686492.5,378065.5625 5686492.5,378064.78125 5686492.5,378064 5686492,378063.25 5686491.5,378062.46875 5686491.5,378061.65625 5686491.5,378060.5625 5686490.5,378059.78125 5686490.5,378058.21875 5686490.5,378057.4375 5686490.5,378055.46875 5686490,378054.28125 5686490,378053.15625 5686489.5,378052.75 5686489.5,378051.59375 5686489,378051.21875 5686489,378049.65625 5686489,378048.9375 5686488,378048.625 5686487,378047.875 5686486.5,378047.1875 5686485.5,378046.125 5686484,378045.78125 5686483.5,378045.03125 5686483,378044.625 5686483,378043.53125 5686482,378042.03125 5686481,378041.28125 5686481,378041.3125 5686480.5,378040.53125 5686480.5,378039.75 5686480,378038.96875 5686480,378038.5625 5686480,378037 5686480,378036.21875 5686480,378034.65625 5686479.5,378033.4375 5686480,378032.59375 5686480.5,378032.1875 5686480.5,378031.3125 5686481.5,378030.9375 5686481.5,378029.65625 5686482,378028.875 5686482,378028.03125 5686482.5,378026.46875 5686482.5,378025.59375 5686483,378024.40625 5686483,378023.5625 5686483.5,378023.125 5686484,378022.3125 5686484.5,378021.90625 5686484.5,378021.0625 5686485,378019.84375 5686485.5,378019.4375 5686485.5,378018.53125 5686486.5,378017.3125 5686486.5,378016.5 5686487,378016.03125 5686488,378015.5625 5686488.5,378015.125 5686489,378013.8125 5686490.5,378013.34375 5686491,378013.28125 5686492,378013.1875 5686492.5,378012.8125 5686492.5,378012.03125 5686492.5,378011.125 5686493.5,378009.4375 5686494.5,378008.96875 5686495.5,378008.53125 5686495.5,378008.15625 5686495.5,378008.0625 5686496.5,378007.25 5686497,378006.46875 5686496.5,378005.3125 5686496,378004.9375 5686496,378004.53125 5686496,378003.34375 5686496,378002.5625 5686496,378001 5686496,378000.21875 5686495.5,377998.25 5686495.5,377996.6875 5686495.5,377995.53125 5686495,377994.78125 5686494.5,377994 5686494.5,377993.21875 5686494,377992.09375 5686493.5,377991.28125 5686493.5,377989.71875 5686493.5,377989.34375 5686493.5,377987.75 5686493,377987.375 5686493,377986.1875 5686493,377985.78125 5686493,377984.6875 5686492,377984.3125 5686492,377983.125 5686492,377982.34375 5686492,377981.5625 5686492,377980.78125 5686491.5,377979.96875 5686491.5,377980.0625 5686491,377979.3125 5686490.5,377978.90625 5686490.5,377979 5686489.5,377978.21875 5686489.5,377977.5625 5686488,377976.53125 5686486,377975.875 5686485,377975.625 5686483.5,377975.65625 5686483,377974.9375 5686482,377974.65625 5686481,377974.75 5686480,377974 5686479.5,377974.03125 5686479,377973.75 5686478,377973.9375 5686476,377972.84375 5686475,377972.59375 5686473.5,377972.75 5686472,377972.46875 5686470.5,377972.5625 5686469.5,377971.90625 5686468,377971.625 5686467,377971.3125 5686466,377971.40625 5686465,377971.5 5686464,377971.1875 5686463.5,377970.46875 5686462.5,377970.5 5686462,377969.71875 5686462,377969.15625 5686459.5,377967.34375 5686458,377966.71875 5686456,377966.03125 5686455,377965.71875 5686454,377965.40625 5686453,377965.03125 5686453,377964.6875 5686452.5,377963.96875 5686451.5,377963.625 5686451,377962.84375 5686451,377962.4375 5686451,377962.0625 5686451,377960.875 5686451,377960.15625 5686450,377959.78125 5686450,377958.96875 5686450,377958.625 5686449.5,377957.5 5686449,377957.09375 5686449,377955.90625 5686448.5,377955.125 5686448.5,377955.25 5686447.5,377954.46875 5686447.5,377953.78125 5686446,377953.0625 5686445,377952.75 5686444.5,377952.46875 5686443,377952.125 5686442.5,377952.1875 5686442,377951.53125 5686440.5,377951.5625 5686440.5,377950.53125 5686438.5,377949.8125 5686437.5,377949.5 5686437,377949.1875 5686436,377948.875 5686435.5,377948.9375 5686434.5,377948.3125 5686433,377947.1875 5686432,377946.59375 5686430,377946.375 5686428.5,377946.09375 5686427,377945.8125 5686426,377945.46875 5686425,377945.59375 5686424,377944.875 5686423,377944.96875 5686422,377945.03125 5686421.5,377945.0625 5686421,377944.28125 5686421,377944.375 5686420,377944.4375 5686419.5,377944.03125 5686419.5,377943.84375 5686417.5,377941.625 5686415.5,377940.96875 5686414,377941.0625 5686413,377940.75 5686412,377939.96875 5686412,377940 5686411.5,377939.4375 5686409.5,377939.1875 5686407.5,377939.34375 5686406,377938.28125 5686405,377937.90625 5686405,377937.96875 5686404,377936.0625 5686403,377935.40625 5686401.5,377933.875 5686401,377933.1875 5686400,377932.875 5686399,377932.15625 5686398,377932.21875 5686398,377931.15625 5686396.5,377930.40625 5686396,377929.3125 5686394.5,377928.3125 5686393,377927.625 5686392,377927.375 5686390,377926.6875 5686389.5,377926.75 5686388.5,377925.96875 5686388.5,377926 5686388,377926.03125 5686387.5,377925.3125 5686387,377924.96875 5686386.5,377925 5686386,377924.625 5686386,377923.90625 5686385,377923.28125 5686383.5,377922.5625 5686382.5,377921.9375 5686381,377921.6875 5686379.5,377920.96875 5686378.5,377920.6875 5686377,377920.40625 5686376,377920.15625 5686374.5,377919.53125 5686372.5,377919.28125 5686371,377919.03125 5686369.5,377919.1875 5686368,377919.375 5686366,377919.53125 5686364.5,377919.6875 5686363,377919.84375 5686361,377919.9375 5686360,377919.625 5686359,377919.40625 5686357,377919.5 5686356.5,377919.6875 5686354.5,377919.78125 5686353.5,377919.9375 5686351.5,377920.0625 5686350.5,377920.15625 5686349.5,377920.25 5686348.5,377920.28125 5686348,377920.125 5686345.5,377919.09375 5686344,377918.375 5686343,377918.4375 5686342.5,377918.0625 5686342.5,377917.53125 5686339.5,377916.96875 5686337,377917.15625 5686335,377913.75 5686333.5,377912.25 5686332.5,377911.1875 5686331.5,377910.46875 5686330.5,377910.09375 5686330,377909.71875 5686330,377908.9375 5686330,377909.03125 5686328.5,377907.5 5686328,377906.8125 5686327.5,377906.40625 5686327.5,377905.71875 5686326,377903.875 5686324.5,377902.8125 5686323.5,377902.09375 5686322.5,377901 5686321.5,377900.28125 5686320.5,377899.59375 5686320,377899.25 5686319,377898.5 5686318.5,377898.5625 5686318,377898.15625 5686318,377896.96875 5686318,377896.1875 5686318,377894.21875 5686317.5,377893.4375 5686317.5,377892.28125 5686317.5,377891.4375 5686318,377891.03125 5686318,377890.15625 5686319,377889.375 5686319,377887.8125 5686318.5,377887.375 5686319,377886.15625 5686319.5,377885.375 5686319,377885.25 5686320.5,377884.40625 5686321,377882.75 5686321.5,377881.5 5686322.5,377880.6875 5686322.5,377880.25 5686323,377879.375 5686323.5,377879 5686323.5,377877.65625 5686325,377876.40625 5686326,377875.5625 5686326.5,377875.46875 5686327.5,377875.09375 5686327.5,377874.96875 5686328.5,377874.15625 5686329,377872.65625 5686332,377871.71875 5686333.5,377871.21875 5686334.5,377871.125 5686335.5,377871.09375 5686336,377871 5686337,377870.09375 5686338,377870 5686339,377869.03125 5686341,377868.15625 5686341.5,377868.0625 5686343,377867.53125 5686344,377867.4375 5686345,377866.9375 5686346.5,377865.9375 5686348,377865.4375 5686349.5,377865.375 5686350,377865.34375 5686350.5,377865.3125 5686351,377864.5 5686351,377863.53125 5686352.5,377863.03125 5686354,377862.9375 5686355,377862.375 5686356.5,377862.21875 5686358,377861.71875 5686359.5,377860.8125 5686360.5,377860.75 5686361,377860.375 5686361,377859.65625 5686364.5,377858.625 5686367,377858.5 5686368,377858.40625 5686369.5,377858.34375 5686369.5,377858.3125 5686370,377858.25 5686371,377858.21875 5686371.5,377857.75 5686372,377857.6875 5686372.5,377856.8125 5686373.5,377856.53125 5686376.5,377856.5 5686376.5,377856.46875 5686377,377856.3125 5686378.5,377856.25 5686379.5,377856.09375 5686381,377856.03125 5686382,377855.875 5686383.5,377855.78125 5686384,377855.46875 5686387.5,377855.3125 5686389,377855.125 5686391,377854.9375 5686393,377854.8125 5686394.5,377854.34375 5686395,377853.46875 5686396,377853.03125 5686396.5,377852.125 5686397.5,377851.6875 5686398,377850.71875 5686400,377849.875 5686400.5,377849.34375 5686402,377849.25 5686403,377849.1875 5686403.5,377849.09375 5686404.5,377848.1875 5686405.5,377848.125 5686406.5,377847.90625 5686409,377847.75 5686410.5,377847.5625 5686412.5,377847.375 5686414.5,377847.3125 5686415,377847.21875 5686416,377847.15625 5686416.5,377847 5686418,377846.8125 5686420,377846.6875 5686421.5,377846.5625 5686423,377847.15625 5686425,377847.4375 5686426,377847.3125 5686427.5,377847.21875 5686428.5,377847.09375 5686429.5,377847.03125 5686430.5,377846.96875 5686431,377847.375 5686431,377847.15625 5686433.5,377847.78125 5686435,377847.71875 5686436,377847.625 5686436.5,377848.40625 5686436.5,377848.65625 5686438,377850.875 5686440,377851.96875 5686441,377852.28125 5686442,377853.0625 5686442,377853.40625 5686442.5,377854.53125 5686443,377856.03125 5686444,377857.21875 5686444.5,377857.96875 5686444.5,377858.625 5686446,377859.40625 5686446,377860.53125 5686447,377862.0625 5686447.5,377863.15625 5686448.5,377863.5 5686449,377864.3125 5686449,377864.6875 5686449,377865 5686450,377865.78125 5686450,377866.9375 5686450.5,377867.71875 5686450.5,377869.28125 5686450.5,377870.0625 5686450.5,377871.65625 5686451,377872.4375 5686451,377874.03125 5686450.5,377875.21875 5686451,377876 5686451,377876.875 5686450,377877.65625 5686450.5,377879.25 5686450,377880.84375 5686450,377881.625 5686450.5,377882.90625 5686449.5,377883.3125 5686449.5,377884.15625 5686448.5,377884.9375 5686448.5,377886.21875 5686447.5,377887.03125 5686447.5,377888.25 5686447.5,377888.625 5686447.5,377889.4375 5686447,377890.25 5686447,377891.09375 5686446.5,377892.28125 5686446.5,377894.25 5686447,377896.1875 5686447,377897.375 5686447,377898.15625 5686447,377899.34375 5686447.5,377900.125 5686447.5,377901.21875 5686448.5,377903.5625 5686449,377905.0625 5686450,377905.75 5686451,377906.53125 5686451,377907.34375 5686451,377908.03125 5686452,377908.78125 5686452.5,377909.90625 5686453,377910.6875 5686453.5,377912.5 5686455,377913.59375 5686456,377914.34375 5686456.5,377915.0625 5686457.5,377915.40625 5686457.5,377915.71875 5686458.5,377916.3125 5686460.5,377918.5625 5686462,377919.625 5686463.5,377920.3125 5686464.5,377921.03125 5686465.5,377921.375 5686466,377921.71875 5686466.5,377922.4375 5686467,377922.78125 5686467.5,377923.125 5686468.5,377924.59375 5686469.5,377925.71875 5686470.5,377926.03125 5686471,377926.75 5686472,377927.09375 5686472.5,377927.5 5686472.5,377928.1875 5686473.5,377928.5625 5686473.5,377929.21875 5686475,377930.75 5686475.5,377931.46875 5686476.5,377932.21875 5686477,377932.9375 5686478,377933.625 5686478.5,377934.34375 5686479.5,377934.65625 5686480.5,377935.375 5686481,377935.6875 5686482,377936.4375 5686482.5,377936.40625 5686483,377937.125 5686483.5,377937.46875 5686484,377938.1875 5686485,377938.09375 5686486,377938.46875 5686486.5,377939.53125 5686487.5,377940.28125 5686488,377940.25 5686488.5,377940.5625 5686489.5,377941.28125 5686490,377941.59375 5686491,377941.875 5686492,377942.96875 5686493,377943.6875 5686494,377944.34375 5686495,377945.09375 5686495.5,377945.03125 5686496.5,377945.40625 5686496.5,377946.09375 5686498,377947.59375 5686498.5,377948.21875 5686500.5,377949.71875 5686501.5,377950.03125 5686502,377950.75 5686503,377951.0625 5686504,377951.4375 5686504.5,377952.21875 5686504.5,377952.125 5686505,377952.53125 5686505,377953.71875 5686505.5,377954.6875 5686507.5,377956.53125 5686509,377957.25 5686509.5,377957.5625 5686510.5,377957.96875 5686510.5,377957.90625 5686511.5,377958.625 5686512,377959.75 5686512.5,377960.125 5686512.5,377960.8125 5686514,377961.15625 5686514.5,377960.9375 5686517,377960.78125 5686518.5,377960.59375 5686520.5,377960.4375 5686522,377960.3125 5686523.5,377960.1875 5686524.5,377960.09375 5686526,377959.96875 5686527,377959 5686529,377958.90625 5686529.5,377958.8125 5686531,377958.71875 5686531.5,377958.625 5686533,377958.59375 5686533,377957.5625 5686535.5,377957 5686537.5,377956.90625 5686538,377956.4375 5686539,377956.34375 5686540,377955.5 5686540.5,377954.21875 5686541.5,377953.40625 5686542,377952.53125 5686542.5,377952.125 5686543,377951.21875 5686544,377950 5686544.5,377949.125 5686545,377948.71875 5686545.5,377948.3125 5686545.5,377947.90625 5686545,377947.0625 5686546,377946.625 5686546.5,377945.40625 5686546.5,377944.25 5686546.5,377943.0625 5686546.5,377941.875 5686546,377941.40625 5686547,377940.59375 5686547.5,377939.40625 5686547,377938.625 5686547,377937.4375 5686547,377936.65625 5686547,377935.09375 5686546.5,377933.90625 5686546.5,377933.125 5686546.5,377932.34375 5686546.5,377931.5625 5686546.5,377930.375 5686546,377929.59375 5686546,377928.0625 5686545.5,377926.90625 5686545,377926.125 5686545,377925.34375 5686545,377924.53125 5686545.5,377922.09375 5686546,377921.28125 5686546,377920.40625 5686547,377919.625 5686546.5,377919.21875 5686546.5,377918.40625 5686547,377917.5 5686548,377917.40625 5686549.5,377916.4375 5686550,377916.40625 5686552.5,377915.59375 5686558,377914.71875 5686565.5,377914.6875 5686571,377914.65625 5686574,377914.625 5686576.5,377914.1875 5686581.5,377914.15625 5686585.5,377914.125 5686589.5,377914.09375 5686593,377914.8125 5686600.5,377915.53125 5686607,377916.6875 5686610.5,377917.84375 5686614,377920.15625 5686616,377920.09375 5686616.5,377920.375 5686618,377920.3125 5686618.5,377920.125 5686620.5,377920 5686622,377919.875 5686623.5,377919.71875 5686625,377919.6875 5686625.5,377919.59375 5686626,377918.75 5686627,377918.6875 5686627.5,377918.625 5686628,377918.1875 5686628.5,377918.15625 5686629,377918.125 5686629,377917.9375 5686631,377917.78125 5686633,377917.625 5686634.5,377918.28125 5686636,377918.59375 5686637,377918.5 5686637.5,377918.46875 5686638,377920.4375 5686638,377921.125 5686639.5,377921.90625 5686639.5,377922.6875 5686639.5,377923.0625 5686639.5,377923.40625 5686640.5,377924.15625 5686641,377925.3125 5686641,377926.09375 5686641,377927.28125 5686641.5,377928.0625 5686641.5,377929.625 5686641.5,377930.4375 5686641.5,377931.125 5686642.5,377931.5 5686643,377931.84375 5686643.5,377932.625 5686643.5,377934.09375 5686645,377935.21875 5686645.5,377936.375 5686646,377936.6875 5686646.5,377937 5686647.5,377937.75 5686648,377938.4375 5686649,377939.125 5686650,377939.84375 5686651,377940.15625 5686651.5,377940.5 5686652.5,377941.15625 5686654,377941.46875 5686654.5,377941.75 5686656,377942.03125 5686657,377942.71875 5686658.5,377943.03125 5686659,377942.90625 5686660.5,377943.59375 5686661.5,377943.90625 5686662.5,377944.1875 5686663.5,377944.4375 5686665.5,377944.71875 5686666.5,377945.03125 5686667.5,377945.28125 5686669,377945.5625 5686670,377945.84375 5686671.5,377945.71875 5686672.5,377945.65625 5686673.5,377946.3125 5686674.5,377947 5686676,377946.90625 5686676.5,377946.8125 5686678,377946.71875 5686678.5,377946.53125 5686680.5,377946.4375 5686682,377946.3125 5686683,377946.21875 5686684,377946.09375 5686685.5,377946.0625 5686685.5,377945.9375 5686687,377945.875 5686687.5,377945.71875 5686689.5,377945.65625 5686690,377944.84375 5686690,377944.46875 5686690,377943.59375 5686690.5,377942.375 5686691,377941.59375 5686691,377940.8125 5686691,377940.03125 5686690.5,377938.84375 5686690.5,377938.46875 5686690.5,377937.28125 5686690.5,377936.5 5686690.5,377934.9375 5686690,377933.75 5686690,377932.96875 5686690,377932.5625 5686690,377931.78125 5686690,377931.46875 5686689,377930.3125 5686688.5,377929.53125 5686688.5,377929.15625 5686688.5,377927.96875 5686688.5,377927.5625 5686688,377926.78125 5686688,377926 5686688,377923.9375 5686689,377922.6875 5686689.5,377921.46875 5686690,377921 5686690.5,377920.59375 5686690.5,377919.4375 5686690.5,377918.21875 5686691,377916.625 5686690.5,377916.25 5686690.5,377915.84375 5686690.5,377915.46875 5686690.5,377914.28125 5686690.5,377913.875 5686690.5,377913.09375 5686690.5,377912.71875 5686690.5,377911.96875 5686690,377911.5625 5686690,377910.40625 5686689.5,377910 5686689.5,377909.25 5686689,377908.84375 5686689,377908.0625 5686689,377907.28125 5686689,377906.09375 5686689,377905.71875 5686689,377904.8125 5686690,377903.21875 5686690,377901.96875 5686691,377901.5625 5686691,377900.28125 5686692,377898.25 5686692.5,377897.375 5686693,377896.5 5686694,377896.125 5686694,377895.96875 5686695.5,377893.5 5686696.5,377892.1875 5686698,377891.3125 5686698.5,377890.875 5686699,377890.8125 5686699.5,377890.75 5686700.5,377890.6875 5686701,377889.90625 5686700.5,377889.84375 5686701.5,377889.375 5686702,377889.09375 5686705,377888.21875 5686706,377888.125 5686707,377888.03125 5686708,377887.9375 5686709,377887.875 5686709.5,377887.75 5686711,377887.6875 5686711.5,377887.5625 5686713,377887.5 5686713.5,377887.4375 5686714.5,377887.96875 5686717,377888.21875 5686717.5),(378145.21875 5686513.5,378145.125 5686514.5,378145.4375 5686515.5,378146.34375 5686518.5,378147.03125 5686519.5,378147.6875 5686521,378147.59375 5686522,378147.90625 5686523,378147.875 5686523.5,378147.75 5686524.5,378148.5 5686525,378149.125 5686526.5,378149.84375 5686527.5,378150.15625 5686528.5,378150.90625 5686529,378151.21875 5686529.5,378151.53125 5686530.5,378151.75 5686532.5,378152.8125 5686534,378153.5 5686535,378154.125 5686536.5,378154.4375 5686537.5,378154.375 5686538.5,378155.0625 5686539,378154.9375 5686540.5,378155.625 5686541.5,378155.5 5686543,378155.40625 5686544,378155.8125 5686544,378156 5686546,378156.65625 5686547.5,378156.5625 5686548.5,378156.53125 5686549,378156.3125 5686551,378156.9375 5686553,378156.90625 5686553.5,378156.84375 5686554,378157.625 5686554,378157.8125 5686556,378157.71875 5686557.5,378158.4375 5686558,378158.375 5686558.5,378159.15625 5686558.5,378159.8125 5686560.5,378160.09375 5686561.5,378160 5686562.5,378161.15625 5686563,378160.96875 5686565,378160.8125 5686566.5,378160.71875 5686567.5,378160.59375 5686568.5,378159.59375 5686571,378159.40625 5686573,378159.25 5686574.5,378157.96875 5686575.5,378157.4375 5686577,378157.375 5686577.5,378157.3125 5686578.5,378157.21875 5686579,378156.84375 5686579,378156.375 5686580,378156.28125 5686580.5,378156.21875 5686581.5,378156.1875 5686582,378155.3125 5686582.5,378155.28125 5686583,378155.21875 5686583.5,378155.125 5686584.5,378155.03125 5686585.5,378154.9375 5686586.5,378154.84375 5686587.5,378154.75 5686588.5,378154.6875 5686589,378154.65625 5686589.5,378154.53125 5686591,378154.5 5686591,378154.40625 5686592,378153.59375 5686592.5,378153.40625 5686594,378152.125 5686595.5,378152 5686596.5,378151.9375 5686597.5,378151.84375 5686598,378151.375 5686599,378151.28125 5686600,378151.1875 5686601,378150.59375 5686603,378150.09375 5686604,378150 5686605,378149.9375 5686606,378149.84375 5686606.5,378149.03125 5686607,378148.09375 5686608.5,378147.625 5686609,378147.5625 5686610,378147.46875 5686610.5,378147.46875 5686611,378147.40625 5686611.5,378146.9375 5686612.5,378146.15625 5686612,378146.125 5686612.5,378145.25 5686613.5,378144.6875 5686615,378144.5625 5686616.5,378143.78125 5686616.5,378142.40625 5686618,378141.875 5686619.5,378141.84375 5686620,378139.84375 5686620.5,378139.3125 5686621.5,378139.25 5686622,378139.1875 5686623,378136.78125 5686623,378135.90625 5686624,378135.875 5686624.5,378135.09375 5686624,378133.8125 5686625,378132.96875 5686625.5,378132.5625 5686626,378132.5 5686626.5,378132.28125 5686628.5,378131.34375 5686630,378131.28125 5686631,378131.15625 5686632,378131.09375 5686633,378131.0625 5686633.5,378130.90625 5686635,378129.96875 5686636.5,378129.9375 5686637,378129.84375 5686637.5,378129.78125 5686638.5,378129.75 5686638.5,378129.65625 5686639.5,378129.5625 5686640.5,378129.46875 5686641.5,378129.40625 5686642.5,378130.125 5686643,378130.09375 5686643.5,378130 5686644.5,378130.78125 5686644.5,378130.96875 5686647,378130.8125 5686648.5,378130.6875 5686649.5,378130.59375 5686650.5,378130.4375 5686652.5,378130.3125 5686653.5,378130.25 5686654.5,378130.03125 5686656.5,378130 5686657,378129.90625 5686658,378129.875 5686658,378129.75 5686659.5,378128.15625 5686659.5,378127.25 5686660.5,378126.78125 5686661.5,378126.75 5686662,378126.3125 5686662,378125.5 5686662.5,378125.09375 5686662.5,378124.3125 5686662.5,378123.46875 5686663,378123.375 5686664,378122.59375 5686664,378120.53125 5686665,378119.65625 5686665.5,378118.875 5686665.5,378118.40625 5686666,378116.75 5686667,378116.34375 5686667,378115.15625 5686667,378114.375 5686667,378113.46875 5686668,378112.28125 5686668,378111.5 5686668,378109.875 5686668.5,378108.65625 5686669,378107.46875 5686668.5,378107.0625 5686668.5,378106.6875 5686668.5,378105.90625 5686668.5,378105.03125 5686669,378103.875 5686669,378101.90625 5686669,378100.71875 5686669,378099.9375 5686668.5,378099.15625 5686668.5,378098.75 5686668.5,378097.96875 5686668.5,378096.40625 5686668.5,378094.5 5686667.5,378093.34375 5686667,378092.9375 5686667,378092.15625 5686667,378091.375 5686667,378090.65625 5686666,378089.90625 5686665.5,378088.34375 5686665.5,378087.5625 5686665.5,378087.15625 5686665.5,378086.375 5686665.5,378085.1875 5686665,378084.40625 5686665,378083.21875 5686665,378082.84375 5686665,378082.0625 5686665,378081.28125 5686665,378080.46875 5686664.5,378079.3125 5686664.5,378077.34375 5686664.5,378075.78125 5686664.5,378074.59375 5686664,378074.1875 5686664,378073.8125 5686664,378073.03125 5686664,378071.84375 5686664,378069.875 5686663.5,378069.09375 5686663.5,378067.125 5686663.5,378065.90625 5686663.5,378065.125 5686663.5,378064.34375 5686663.5,378075.375 5686660.5,378075.40625 5686660,378076.1875 5686660,378076.6875 5686659,378077.15625 5686658,378077.28125 5686657,378078.125 5686656,378078.90625 5686656,378079.03125 5686655,378080.71875 5686654,378081.5 5686654,378081.59375 5686653,378081.65625 5686652.5,378082.15625 5686651.5,378082.1875 5686651,378083.4375 5686650.5,378083.875 5686650,378084.34375 5686649,378085.5625 5686649,378085.96875 5686648.5,378086.40625 5686648.5,378087.3125 5686647,378088.5625 5686646.5,378089.4375 5686646,378089.9375 5686644.5,378091.1875 5686644,378091.65625 5686643,378092.125 5686642.5,378092.15625 5686642,378092.21875 5686641.5,378092.625 5686641.5,378093.59375 5686639.5,378093.71875 5686638.5,378093.78125 5686637.5,378093.90625 5686636.5,378093.96875 5686635.5,378094 5686635,378094.09375 5686634.5,378094.15625 5686633.5,378093.5625 5686631.5,378093.25 5686630.5,378093.3125 5686630,378093.34375 5686629.5,378093.5 5686628,378092.75 5686627.5,378092.5 5686626,378092.5625 5686625.5,378092.65625 5686624.5,378092.6875 5686624,378092.84375 5686622.5,378092.9375 5686621.5,378093.4375 5686620.5,378093.5 5686619.5,378094.78125 5686618.5,378094.875 5686617.5,378094.96875 5686616.5,378095.0625 5686616,378095.90625 5686615,378095.96875 5686614.5,378096.4375 5686614,378098.0625 5686613.5,378098.96875 5686612,378099.4375 5686611.5,378099.46875 5686611,378099.53125 5686610,378099.65625 5686609,378100.125 5686608.5,378100.28125 5686606.5,378100.34375 5686606,378100.53125 5686604,378100.625 5686603,378100.6875 5686602.5,378100.8125 5686601,378100.90625 5686600,378101.40625 5686599,378102.34375 5686597.5,378102.46875 5686596,378102.53125 5686595.5,378103 5686594.5,378103.40625 5686594.5,378103.5 5686593.5,378104.75 5686593,378105.6875 5686591.5,378106.96875 5686590.5,378107.40625 5686590,378107.84375 5686589.5,378108.75 5686588.5,378109.40625 5686588.5,378109.96875 5686588.5,378110.78125 5686588,378110.875 5686587,378111.65625 5686587,378111.6875 5686587,378111.71875 5686586.5,378112.59375 5686585.5,378112.71875 5686584,378112.8125 5686583.5,378113.75 5686582,378113.84375 5686580.5,378114 5686579,378114.09375 5686578.5,378114.1875 5686577,378114.28125 5686576.5,378114.34375 5686575.5,378114.03125 5686575,378114.125 5686573.5,378114.21875 5686573,378114.28125 5686572,378113.5625 5686571,378113.28125 5686570,378113.34375 5686569.5,378113.5625 5686567,378113.65625 5686566,378113.84375 5686564,378113.25 5686562,378112.96875 5686560.5,378113.125 5686559,378113.21875 5686558.5,378113.28125 5686557.5,378113.3125 5686557,378112.96875 5686557,378113.03125 5686556,378113.0625 5686555.5,378111.90625 5686555.5,378110.3125 5686555.5,378108.3125 5686555.5,378107.53125 5686555.5,378107.15625 5686555.5,378106.71875 5686555.5,378105.90625 5686556,378105.09375 5686556,378104.3125 5686556,378103.53125 5686556,378102.75 5686555.5,378101.5625 5686555.5,378100.40625 5686555.5,378100.03125 5686555,378099.3125 5686554,378098.59375 5686553.5,378096.625 5686553.5,378095.125 5686552.5,378094.34375 5686552.5,378093.15625 5686552.5,378092.8125 5686552,378091.65625 5686551.5,378091.28125 5686551.5,378089.6875 5686551,378088.53125 5686551,378086.5625 5686551,378084.625 5686550.5,378083.4375 5686550,378083.0625 5686550,378082.65625 5686550,378082.28125 5686550,378081.5 5686550,378081.09375 5686550,378080 5686549,378078.8125 5686549,378078.21875 5686547,378077.125 5686546,378076 5686545,378075.65625 5686544.5,378074.875 5686544.5,378074.15625 5686543.5,378073.375 5686543.5,378071.53125 5686542,378069.71875 5686540.5,378068.6875 5686539,378067.65625 5686537,378066.96875 5686536,378066.3125 5686534.5,378066 5686533.5,378065.3125 5686532.5,378065 5686531.5,378065.0625 5686531,378064.34375 5686530,378064.4375 5686529,378063.71875 5686528.5,378063.75 5686528,378063.90625 5686526.5,378063.96875 5686525.5,378063.3125 5686524.5,378063.375 5686523.5,378063.46875 5686523,378063.5 5686522.5,378063.65625 5686521,378063.75 5686519.5,378063.84375 5686519,378064.625 5686519,378065.90625 5686518,378067.90625 5686517.5,378069.125 5686517.5,378070 5686516.5,378070.8125 5686516.5,378072.0625 5686515.5,378072.9375 5686515,378073.78125 5686514.5,378074.6875 5686513,378075.53125 5686512.5,378076.34375 5686512.5,378076.40625 5686511.5,378076.4375 5686511.5,378077.625 5686511.5,378078.875 5686511,378080.875 5686510.5,378081.65625 5686510.5,378082.4375 5686511,378083.21875 5686511,378083.625 5686511,378084.8125 5686511,378085.59375 5686511,378087.21875 5686510.5,378089.1875 5686510.5,378090.0625 5686510,378090.84375 5686510,378092.0625 5686510,378092.21875 5686510,378095.40625 5686512,378099.71875 5686514.5,378103.28125 5686515.5,378108 5686517.5,378113.125 5686518,378117.46875 5686519,378121.8125 5686519,378126.5625 5686519,378131.3125 5686519,378135.25 5686518.5,378138.4375 5686517.5,378143.1875 5686515,378145.21875 5686513.5),(378774.4375 5685824.5,378776.46875 5685827,378781.53125 5685834,378783.875 5685837.5,378787 5685842,378790.90625 5685846.5,378796.40625 5685850,378798.6875 5685851,378798.625 5685851.5,378798.5625 5685852,378798.4375 5685853,378798.34375 5685854.5,378799.34375 5685856,378799.28125 5685857,378798.875 5685861,378798.65625 5685863.5,378798.375 5685866.5,378798.125 5685869,378798 5685870.5,378797.46875 5685872,378797 5685872.5,378796.875 5685873.5,378796.8125 5685874.5,378796.78125 5685875,378796 5685875,378794.9375 5685877.5,378790.625 5685881,378789.15625 5685884,378787.6875 5685887,378786.40625 5685888,378785.09375 5685889,378783.8125 5685890.5,378782.53125 5685891.5,378780.875 5685892,378780.03125 5685892.5,378778.75 5685893.5,378777.90625 5685894,378776.65625 5685894.5,378775.4375 5685895,378774.1875 5685895.5,378773.34375 5685896,378772.53125 5685896.5,378771.3125 5685896.5,378770.53125 5685896.5,378769.75 5685896.5,378768.53125 5685896.5,378766.875 5685897.5,378765.65625 5685897.5,378764.46875 5685898,378763.625 5685898,378762.375 5685899,378761.5625 5685899,378760.6875 5685900,378759.84375 5685900.5,378758.625 5685901,378757.71875 5685902,378756.4375 5685903,378755.09375 5685904.5,378753.375 5685906,378752.4375 5685907.5,378751.5625 5685908.5,378750.65625 5685909.5,378749.78125 5685910.5,378748.96875 5685910.5,378748.15625 5685911,378747.28125 5685911.5,378746.0625 5685912,378744.78125 5685913,378742.78125 5685913,378741.5 5685914,378740.1875 5685915.5,378739.375 5685915.5,378739.3125 5685916.5,378738.46875 5685916.5,378738.4375 5685917,378737.625 5685917.5,378736.6875 5685919,378735.4375 5685919.5,378734.53125 5685920.5,378732.8125 5685922,378731.90625 5685923,378731 5685924.5,378730.15625 5685925,378729.28125 5685925.5,378728.4375 5685926.5,378727.5625 5685927,378726.71875 5685928,378725.84375 5685928.5,378724.59375 5685929,378723.75 5685930,378722.90625 5685930,378722.0625 5685931,378721.1875 5685931.5,378720.34375 5685932.5,378719.46875 5685933,378718.21875 5685933.5,378717.375 5685934.5,378716.90625 5685935,378716.03125 5685936,378715.21875 5685936,378714.78125 5685936.5,378713.90625 5685937.5,378713.4375 5685938,378712.9375 5685939,378712.125 5685939.5,378711.65625 5685940,378711.53125 5685941.5,378710.65625 5685942.5,378709.34375 5685943.5,378708.875 5685944.5,378708.40625 5685945,378707.5625 5685946,378707.09375 5685946.5,378705.78125 5685948,378704.5625 5685948,378703.65625 5685949.5,378703.15625 5685950.5,378702.25 5685951.5,378701.34375 5685952.5,378700.84375 5685954,378699.90625 5685955.5,378698.96875 5685957,378698.4375 5685958.5,378697.53125 5685959.5,378697 5685961,378696.5 5685962,378696.03125 5685963,378695.5625 5685963.5,378695.53125 5685964,378695.125 5685964,378694.125 5685966.5,378692.75 5685968,378692.21875 5685969.5,378692.0625 5685971,378692.03125 5685971.5,378691.96875 5685972,378691.875 5685973,378690.96875 5685974.5,378690.71875 5685977,378689.375 5685978.5,378688.53125 5685979,378688 5685980.5,378687.625 5685980.5,378687.5 5685981.5,378686.6875 5685982,378684.53125 5685983.5,378682.875 5685984,378681.5625 5685985.5,378680.65625 5685987,378680.1875 5685987.5,378680.15625 5685988,378659.96875 5685975,378660 5685974.5,378660.0625 5685974,378660.15625 5685973,378660.25 5685972,378660.3125 5685971.5,378659.65625 5685970,378659.34375 5685969,378659.40625 5685968.5,378659.5 5685967.5,378659.5625 5685966.5,378659.1875 5685966.5,378658.875 5685966,378658.90625 5685965.5,378658.21875 5685964,378658.3125 5685963.5,378657.28125 5685961.5,378656.96875 5685961,378657.0625 5685959.5,378657.15625 5685959,378656.875 5685957.5,378656.53125 5685957,378655.90625 5685955,378655.1875 5685954.5,378655.28125 5685953.5,378655.3125 5685953,378655.03125 5685952,378654.6875 5685951.5,378654.03125 5685950,378653.71875 5685949,378653.78125 5685948.5,378653.90625 5685947,378653.9375 5685946.5,378653.96875 5685946.5,378653.6875 5685945,378653.75 5685944.5,378653.09375 5685943,378653.1875 5685942.5,378652.65625 5685939.5,378652.03125 5685938,378652.125 5685936.5,378652.25 5685935.5,378652.3125 5685934.5,378652.40625 5685934,378652.4375 5685933.5,378652.125 5685932.5,378652.25 5685931,378651.9375 5685930,378651.65625 5685929,378651.75 5685928,378651.875 5685926.5,378651.1875 5685926,378651.3125 5685924,378651.4375 5685923,378651.5625 5685922,378651.28125 5685920.5,378651.4375 5685919,378651.5 5685918,378651.53125 5685918,378651.59375 5685917,378650.9375 5685916,378650.96875 5685915.5,378651.0625 5685914.5,378651.09375 5685914,378651.15625 5685913.5,378651.1875 5685913,378651.375 5685911,378652.25 5685910.5,378652.40625 5685909,378653.28125 5685907.5,378653.8125 5685906.5,378654.65625 5685906,378655.09375 5685905.5,378655.5625 5685904.5,378656.375 5685904.5,378657.15625 5685904.5,378658.84375 5685903.5,378660.46875 5685903.5,378661.34375 5685902,378662.21875 5685901.5,378663.46875 5685901,378664.71875 5685900,378665.96875 5685899.5,378666.84375 5685898.5,378668.0625 5685898.5,378668.90625 5685898,378669.8125 5685896.5,378671.0625 5685896,378671.96875 5685895,378673.21875 5685894,378674.46875 5685893.5,378675.3125 5685893,378676.53125 5685892.5,378677.375 5685892,378678.21875 5685891.5,378679.0625 5685891,378679.875 5685891,378680.6875 5685890.5,378681.96875 5685889.5,378683.625 5685889,378684.5 5685888,378685.34375 5685887.5,378686.59375 5685887,378687.46875 5685886,378688.71875 5685885.5,378689.96875 5685885,378690.78125 5685884.5,378692 5685884,378693.3125 5685883,378694.9375 5685882.5,378696.625 5685881.5,378697.875 5685881,378699.5625 5685880,378701.25 5685879,378702.5 5685878,378703.78125 5685877,378705.4375 5685876.5,378706.28125 5685875.5,378707.1875 5685874.5,378708.0625 5685874,378708.90625 5685873,378709.375 5685872.5,378710.21875 5685872,378710.625 5685872,378711.53125 5685870.5,378712.34375 5685870.5,378713.65625 5685869.5,378714.90625 5685868.5,378715.34375 5685868.5,378715.8125 5685867.5,378717.09375 5685866.5,378717.9375 5685866,378720.0625 5685864.5,378722.53125 5685863.5,378723.40625 5685862.5,378724.25 5685862,378724.6875 5685861.5,378725.53125 5685861,378726 5685860,378727.25 5685859.5,378729.03125 5685857.5,378731.0625 5685857,378732.34375 5685856,378733.25 5685855,378734.09375 5685854.5,378734.5625 5685853.5,378735 5685853,378735.84375 5685853,378736.71875 5685852,378738.34375 5685851.5,378739.1875 5685851,378740.5 5685850,378741.34375 5685849,378742.21875 5685848.5,378743.46875 5685847.5,378744.3125 5685847,378744.78125 5685846,378745.65625 5685845.5,378746.5 5685845,378746.96875 5685844,378747.4375 5685843.5,378747.53125 5685842.5,378748.40625 5685841.5,378748.5 5685840.5,378748.625 5685839,378749.15625 5685838,378749.28125 5685836.5,378749.40625 5685835,378749.5625 5685833.5,378749.71875 5685832,378750.21875 5685831,378750.375 5685829.5,378751.21875 5685828.5,378751.34375 5685827.5,378751.375 5685827,378751.40625 5685826.5,378752.59375 5685826.5,378753.90625 5685825.5,378756.34375 5685824.5,378757.5625 5685824.5,378758.78125 5685824,378759.96875 5685824.5,378760.75 5685824.5,378762.78125 5685824,378765.5625 5685823.5,378767.125 5685824,378768.71875 5685824,378770.28125 5685824,378771.46875 5685824.5,378772.25 5685824.5,378773.03125 5685824.5,378774.21875 5685824.5,378774.4375 5685824.5)) + + + + POLYGON((377787.21236766 5686430.83570257,377787.091569461 5686434.83708883,377787.737693002 5686438.88795447,377787.864087559 5686442.68909533,377788.459649403 5686444.80578393,377788.880197144 5686448.70852724,377792.362122552 5686459.86695051,377797.94149236 5686470.13850574,377798.930849234 5686471.33060785,377799.58710372 5686472.52852275,377804.899910503 5686478.52288668,377805.406547456 5686479.13334686,377805.529915074 5686479.23371183,377805.644567469 5686479.36307249,377807.392061045 5686481.81156509,377816.741061307 5686490.34144172,377819.268024607 5686491.8162556,377819.445913559 5686491.96408342,377821.252932048 5686492.97470892,377821.845793585 5686493.32072123,377822.749238227 5686493.92301766,377822.749238226 5686493.92301766,377823.285211318 5686494.21114939,377825.784078899 5686496.21427985,377828.942060624 5686497.86905437,377829.459811307 5686498.34144172,377829.814097052 5686498.54821383,377830.563106926 5686499.15138158,377833.445420292 5686500.66756629,377840.389980754 5686504.72062639,377852.415040396 5686508.66531166,377853.163293988 5686508.74466712,377854.777839837 5686509.25493736,377860.602216238 5686509.85131204,377862.571299679 5686510.30820919,377870.722679781 5686510.92891152,377865.18357042 5686518.6232882,377864.473453212 5686520.3059776,377860.565589664 5686528.1292516,377857.549254266 5686538.50328245,377856.91908596 5686544.62059585,377856.237925827 5686549.23152597,377855.997961655 5686551.04715803,377855.122961655 5686558.54715803,377854.719718468 5686565.15909641,377854.689275479 5686570.51706246,377854.660155864 5686573.31254549,377854.65773972 5686573.50583704,377854.41587695 5686576.26998298,377854.189330971 5686581.0312643,377854.127092524 5686588.99778552,377854.096141439 5686592.46430707,377854.367387449 5686598.72377641,377855.086137449 5686606.22377641,377855.17598771 5686607.09442203,377855.89473771 5686613.59442203,377858.280137917 5686624.53884835,377858.199446436 5686625.39955748,377858.119771519 5686626.32673996,377858.023869995 5686627.55427948,377857.947895467 5686628.28363494,377857.764790992 5686638.5933333,377859.05375186 5686646.88004093,377856.001223071 5686649.83265362,377854.203654971 5686651.45270116,377853.326280308 5686652.05597871,377846.157898318 5686658.98972353,377845.720398318 5686659.48972353,377842.727400395 5686663.68434142,377841.391454247 5686665.19681894,377840.139069476 5686667.31182779,377838.825885171 5686669.15222545,377838.128428148 5686670.70736908,377835.625770583 5686674.93382011,377833.502392192 5686680.82867703,377832.29696122 5686683.50412238,377831.973057845 5686685.07436739,377831.790848094 5686685.58021243,377831.644992471 5686686.50242365,377830.932850338 5686688.15831566,377828.480696436 5686700.39955748,377828.206798474 5686703.32113575,377828.082254505 5686704.51727121,377827.999100384 5686705.51512066,377827.894754505 5686706.51727121,377827.786916907 5686707.81132239,377825.943807975 5686715.901891,377825.220199407 5686720.61874685,377824.548478334 5686724.33904817,377823.601072878 5686734.06261442,377823.569822878 5686736.06261442,377823.565273476 5686736.42310359,377823.533360075 5686739.74209727,377823.493888631 5686740.08215895,377823.097623592 5686746.31822584,377823.035123592 5686751.81822584,377823.032218468 5686752.15909641,377823.000968468 5686757.65909641,377823.000968468 5686757.65909641,377824.027668784 5686769.0573121,377824.471288948 5686771.42328631,377824.974612037 5686775.27480212,377825.581424615 5686779.00143074,377825.630407432 5686779.25222276,377826.18246145 5686785.71058515,377829.233057786 5686796.57781887,377831.545557786 5686802.57781887,377831.545557786 5686802.57781887,377836.345640303 5686812.3054845,377840.626890303 5686819.3054845,377840.626890303 5686819.3054845,377847.353282914 5686828.29116548,377850.978282914 5686832.29116548,377852.700599818 5686834.04625263,377855.051235229 5686836.70891929,377857.484142848 5686839.30536223,377862.952892848 5686844.80536223,377862.952892848 5686844.80536223,377869.686775859 5686850.21221063,377877.705497875 5686857.14130645,377890.046530344 5686863.5692641,377892.365742884 5686864.45277363,377894.129456389 5686865.24397222,377894.129456389 5686865.24397222,377904.662578639 5686868.8378229,377915.678245555 5686870.42448905,377926.797449571 5686869.94937946,377937.637620798 5686867.42884086,377947.825789816 5686862.94959549,377957.011420141 5686856.66575728,377964.878468864 5686848.79352942,377971.156260501 5686839.60376559,377971.156260501 5686839.60376559,377973.375010501 5686835.60376559,377975.066906348 5686832.18392847,377978.977625886 5686827.94198421,377981.484173001 5686824.80335131,377983.913558476 5686822.09933965,377984.669362103 5686821.24180526,377986.185425879 5686819.48828571,377987.926419053 5686818.23633556,377989.293706174 5686817.31382859,377989.921927409 5686816.99473209,377989.873018893 5686816.89844345,377995.095714589 5686814.35114013,378003.770653794 5686807.98069055,378004.698589966 5686807,378004.875 5686807,378017.82150131 5686805.58658638,378030.158043911 5686801.41293679,378031.59311331 5686800.54545313,378041.188704049 5686795.65469523,378043.084469103 5686794.18364035,378044.434002771 5686793.52332062,378045.233912908 5686792.95104325,378045.931893418 5686792.61749202,378045.931893418 5686792.61749202,378046.775643418 5686792.11749202,378046.775643418 5686792.11749202,378056.930405571 5686784.5456087,378065.269249503 5686775.01060512,378066.675499503 5686773.01060512,378066.675499503 5686773.01060512,378067.710879139 5686771.22544555,378068.621616828 5686771.50978914,378070.328964472 5686772.15255531,378070.328964472 5686772.15255531,378071.629707797 5686772.53575925,378072.614108282 5686773.05358392,378083.73168367 5686776.37790347,378086.021479365 5686776.60036826,378086.217855703 5686776.66323325,378097.923439188 5686777.99341273,378109.663298452 5686777.01067847,378120.984829107 5686773.75291761,378131.451554502 5686768.34572595,378132.83400169 5686767.24255441,378133.275728824 5686767.16134463,378144.21991248 5686762.81009532,378147.862764532 5686760.44920264,378148.556893418 5686760.11749202,378148.556893418 5686760.11749202,378149.400643418 5686759.61749202,378149.400643418 5686759.61749202,378151.27530229 5686758.23757414,378154.103268256 5686756.40480024,378155.154383617 5686755.38222069,378158.072315767 5686753.23435965,378163.061983609 5686751.78430809,378173.126204049 5686746.65469523,378174.586891142 5686745.52124735,378178.843233609 5686744.28430809,378188.907454049 5686739.15469523,378197.831858343 5686732.22963429,378205.300122319 5686723.754583,378211.047534476 5686714.0299383,378214.870378653 5686703.40038876,378216.633154709 5686692.24269717,378216.633154709 5686692.24269717,378216.726904709 5686690.74269717,378216.726904709 5686690.74269717,378216.645742475 5686688.60917386,378227.027757499 5686682.98214966,378236.551161192 5686674.86971613,378244.185292614 5686664.95877101,378249.598264696 5686653.68018382,378249.598264696 5686653.68018382,378250.848264696 5686650.18018382,378250.848264696 5686650.18018382,378254.062179706 5686635.80595844,378254.499679706 5686631.30595844,378254.499679706 5686631.30595844,378254.729234386 5686623.00216732,378254.416734386 5686615.50216732,378253.356075385 5686606.49856926,378253.050996439 5686604.93656506,378252.60526229 5686600.90557797,378251.636894845 5686594.92825468,378250.886894845 5686591.42825468,378250.331105977 5686589.06835298,378249.668944511 5686586.49129214,378248.909831216 5686582.4426879,378248.654024391 5686581.15618521,378247.938225112 5686577.75130216,378247.715857559 5686576.12484234,378247.717303293 5686575.91665662,378247.71875 5686575.5,378247.71875 5686574.31249152,378247.737534969 5686572.50913452,378248.39564958 5686571.61381003,378250.086972119 5686567.80307527,378250.783169124 5686567.17477502,378251.960406524 5686565.56243201,378252.034074363 5686565.52578072,378253.415790902 5686564.48337878,378254.03959554 5686564.099499,378262.909901064 5686557.43656111,378264.933487426 5686555.226561,378265.24510196 5686554.98677176,378265.763339467 5686554.37955416,378266.671507815 5686553.74281608,378271.889194546 5686548.41174489,378272.022232248 5686548.53646773,378272.490982248 5686548.03646773,378273.453968001 5686546.81296766,378274.410590007 5686545.8355575,378274.816840007 5686545.33555751,378274.694827002 5686545.23642194,378277.147059306 5686542.12079289,378277.641602136 5686541.59510565,378277.947947396 5686541.10324239,378278.891109616 5686539.90492867,378279.078203741 5686539.55762228,378279.349962447 5686539.27034681,378280.020015725 5686538.20549869,378280.178482248 5686538.03646773,378280.865467086 5686537.29116548,378281.771717086 5686536.29116548,378281.771717086 5686536.29116548,378289.111109473 5686526.28042366,378289.588184921 5686525.2273648,378289.810851682 5686525.01027647,378290.497979114 5686524.22498798,378292.972080264 5686521.7936966,378299.768193168 5686511.64931356,378300.299443167 5686510.64931356,378300.299443167 5686510.64931356,378302.780656154 5686505.00791412,378303.295109949 5686504.19577969,378305.408136913 5686498.84630532,378305.516626195 5686498.60215308,378305.528653296 5686498.54119833,378307.443388493 5686493.6937321,378307.582809068 5686492.9597446,378307.950301597 5686491.92211864,378308.385479485 5686492.16072969,378314.207170076 5686496.95035064,378317.15747356 5686498.62266775,378317.530488227 5686498.92301766,378318.280488227 5686499.42301766,378318.280488226 5686499.42301766,378319.277926173 5686499.95504202,378321.075314038 5686501.4022915,378321.182831792 5686501.52701992,378324.324605925 5686504.08281167,378324.324779073 5686504.08297463,378324.781547456 5686504.63334686,378333.848959523 5686512.01008414,378344.174584471 5686517.48874125,378353.459109908 5686520.28659093,378355.699519231 5686521.15384615,378357.668269231 5686521.65384615,378359.426962812 5686521.87368285,378362.215339837 5686522.75493736,378365.566960279 5686523.09811944,378367.954373708 5686523.53219461,378370.998826888 5686523.80671278,378373.647177666 5686524.44179936,378385.481215174 5686524.88773271,378394.988365155 5686523.35316882,378398.235660894 5686523.09870308,378404.265772984 5686521.43700791,378404.471451269 5686521.4173832,378406.550548316 5686520.80740102,378409.249217489 5686520.06373896,378409.487854801 5686519.94563045,378415.408440581 5686518.20860145,378416.658440581 5686517.70860145,378416.658440581 5686517.70860145,378417.205932556 5686517.43318833,378417.718233609 5686517.28430809,378420.19869325 5686516.02004746,378420.856221764 5686515.80625902,378422.637998175 5686514.7767629,378427.782454049 5686512.15469523,378429.550356832 5686510.7828575,378431.723905632 5686509.52699844,378435.162318673 5686506.42814917,378436.706858343 5686505.22963429,378437.535289576 5686504.28952328,378441.047459662 5686501.12420091,378448.418885996 5686490.96557208,378448.624675583 5686490.50245318,378449.381599944 5686489.4951906,378450.392909613 5686487.45810343,378450.536892713 5686487.21127526,378451.314091539 5686486.1780779,378456.699493191 5686474.38796509,378459.427104533 5686461.71636506,378459.583354533 5686460.21636506,378459.698995495 5686458.98272879,378459.782149616 5686457.98487934,378459.886495495 5686456.98272879,378460.033802457 5686455.21504524,378460.118158214 5686454.54019919,378460.724172603 5686451.94208407,378460.849172603 5686450.94208408,378461.105245495 5686448.48272879,378461.188399616 5686447.48487934,378461.292745495 5686446.48272879,378461.417745495 5686444.98272879,378461.407762427 5686444.98189687,378461.570654709 5686443.24269717,378461.633154709 5686442.24269717,378461.633154709 5686442.24269717,378461.586212728 5686439.2200781,378461.831803564 5686436.60044252,378461.886495495 5686435.98272879,378461.985745646 5686434.79172697,378462.126964899 5686433.28538828,378462.358481413 5686430.97022314,378462.448995495 5686429.98272879,378462.52254423 5686429.10014397,378462.550689799 5686428.8299465,378462.599172603 5686428.44208407,378462.945654709 5686424.74269717,378463.039404709 5686423.24269717,378463.039404709 5686423.24269717,378462.760497768 5686416.45785223,378463.026022923 5686413.79197347,378462.913720164 5686412.2536499,378462.914404709 5686412.24269717,378462.848800117 5686410.88732273,378463.185646724 5686410.79501182,378463.425537409 5686410.74516441,378463.706274599 5686410.65233669,378468.916223591 5686409.22457959,378470.919633681 5686408.26718909,378476.4382307 5686406.44242641,378480.856071903 5686403.74435199,378482.244813679 5686403.05342394,378482.268336301 5686403.09458853,378482.983655565 5686402.68583466,378485.315324363 5686401.52578072,378494.147855443 5686394.86229565,378501.606683948 5686386.69029983,378501.686676282 5686386.56132124,378502.481683948 5686385.69029983,378504.660033884 5686382.17795703,378506.948682517 5686379.0269384,378507.797555292 5686377.62190759,378508.638023677 5686376.50059274,378514.04678878 5686364.49587762,378516.706803564 5686351.60044252,378517.064464899 5686347.78538828,378517.167259982 5686346.75743745,378517.863053564 5686343.60044252,378518.033214899 5686341.78538828,378518.264731413 5686339.47022314,378518.368139354 5686338.19706551,378518.488053564 5686337.10044252,378518.581803564 5686336.10044252,378518.634623593 5686335.42418208,378518.708354533 5686334.71636506,378518.712933798 5686334.42156822,378518.726904709 5686334.24269717,378518.758154709 5686333.74269717,378518.723512761 5686333.74053205,378518.872640897 5686324.14019089,378517.245233236 5686314.11876861,378525.327054795 5686308.20547945,378526.844298538 5686306.88133946,378528.391232407 5686305.55539614,378528.391232408 5686305.55539614,378530.433059692 5686303.49763807,378530.534230962 5686303.42670452,378531.236219692 5686302.94402129,378532.885980675 5686301.34826067,378534.491385764 5686300.20828228,378539.198661458 5686295.6800569,378539.59190745 5686295.45819816,378542.138030614 5686293.22902237,378543.05340656 5686292.67568768,378546.266262528 5686289.61468242,378548.850854898 5686287.35182616,378549.385775754 5686286.6426082,378549.497957834 5686286.53572824,378550.065942003 5686286.35193674,378555.043688699 5686283.49137127,378555.228753112 5686283.44222475,378562.484597062 5686280.09149011,378563.855476946 5686279.63797484,378574.844866515 5686273.16245682,378578.195086568 5686270.06962916,378579.925374024 5686268.55473194,378580.485185386 5686268.16609236,378581.978751324 5686267.29894701,378582.828406369 5686266.63580161,378583.728884702 5686266.36032462,378584.098168333 5686266.16106896,378584.167976946 5686266.13797484,378584.461319104 5686265.96512243,378589.118933177 5686263.45199732,378593.626204049 5686261.15469523,378602.550608343 5686254.22963429,378610.018872319 5686245.754583,378615.766284476 5686236.0299383,378616.636689569 5686233.60974705,378620.40138351 5686226.03082854,378620.919053422 5686224.56917231,378621.027280372 5686224.48588919,378622.44197345 5686222.82818932,378624.585394632 5686220.77008529,378625.836940187 5686218.85005723,378629.13146682 5686214.9896182,378630.965230287 5686211.61708631,378632.504951879 5686209.64043998,378643.226835616 5686206.06846854,378647.601835616 5686204.06846854,378658.026050605 5686197.9662481,378667.016792889 5686189.89978013,378669.778875653 5686186.86690494,378671.718716016 5686184.82496771,378671.718716016 5686184.82496771,378678.666192883 5686175.98161798,378679.80628052 5686173.78205631,378680.150643418 5686173.61749202,378680.150643418 5686173.61749202,378680.994393418 5686173.11749202,378680.994393418 5686173.11749202,378689.016905355 5686167.42621575,378696.001741737 5686160.50065555,378697.445240391 5686158.50218896,378699.302967086 5686156.79116549,378699.302967086 5686156.79116549,378700.209217086 5686155.79116548,378700.209217086 5686155.79116548,378702.179269768 5686153.10406446,378702.717101682 5686152.51027647,378703.592101682 5686151.51027647,378703.510176204 5686151.43859168,378706.697738223 5686147.23085638,378708.05211086 5686145.72049752,378708.888508611 5686144.33893402,378710.261182517 5686142.5269384,378711.167432517 5686141.0269384,378711.054203941 5686140.95852946,378716.72558217 5686131.8379137,378716.741039557 5686131.79819963,378717.791067693 5686130.31047509,378722.723399662 5686118.84168434,378723.150942352 5686116.70737561,378723.581311977 5686115.57589731,378724.175061977 5686113.57589731,378724.175061977 5686113.57589731,378726.192922603 5686103.94208407,378726.255422603 5686103.44208407,378726.442199357 5686101.44787004,378726.442922603 5686101.44208407,378726.698995495 5686098.98272879,378726.903726676 5686096.52595461,378727.004699357 5686095.44787004,378727.005422603 5686095.44208407,378727.206803564 5686093.60044252,378727.394303564 5686091.60044252,378727.400868624 5686090.21980753,378729.70932404 5686088.96356994,378740.185851682 5686079.51027647,378741.060851682 5686078.51027647,378741.090535847 5686078.47030038,378741.225854898 5686078.35182616,378743.537483929 5686075.28698248,378743.8728117 5686074.90375074,378744.427967086 5686074.29116548,378744.427967086 5686074.29116548,378747.349409706 5686070.23298961,378748.636182517 5686068.52693839,378748.942132528 5686068.02053838,378752.28517958 5686063.3767118,378752.554464219 5686062.73861656,378752.947238098 5686062.21687722,378754.892621556 5686057.97059332,378756.525230487 5686055.3635956,378760.318371987 5686045.5535046,378760.55763351 5686045.03082853,378761.08888351 5686043.53082853,378764.119716025 5686029.43293325,378764.192922603 5686029.44208407,378764.297348442 5686028.60667736,378764.323995495 5686028.48272879,378764.357685096 5686028.07845357,378764.519303564 5686026.60044252,378764.613053564 5686025.60044252,378764.667745495 5686024.98272879,378764.750899616 5686023.98487934,378764.855245495 5686022.98272879,378764.97772926 5686021.5129236,378765.036478481 5686021.17326004,378765.192728481 5686019.17326004,378764.712117656 5686005.60581829,378764.087602098 5686003.27845524,378764.760311183 5686002.65652859,378764.885498412 5686002.54347771,378764.901640586 5686002.52586807,378767.053482248 5686000.53646773,378767.522232248 5686000.03646773,378767.794136784 5685999.6963826,378768.368058548 5685999.28125337,378768.42433033 5685999.34455912,378769.052518591 5685998.78616956,378770.542014955 5685997.70878667,378771.700012641 5685996.49550307,378780.743480126 5685993.44578452,378791.8665466 5685986.74668806,378801.287904958 5685977.8114484,378802.076355126 5685976.88190715,378802.80938194 5685976.19199956,378803.326001028 5685975.69994482,378808.513501028 5685970.69994482,378808.737049828 5685970.48335473,378811.653086552 5685967.64338853,378813.260840081 5685966.17344245,378814.993147565 5685964.86398167,378819.141493108 5685961.42490647,378820.680900257 5685960.02743048,378820.901908995 5685959.90823475,378823.912518014 5685959.10856503,378834.890522105 5685953.60584652,378844.518299828 5685945.98335473,378848.112049828 5685942.48335473,378848.066158661 5685942.43623434,378854.623970899 5685935.88058267,378861.348710525 5685925.63890699,378861.678801755 5685924.8038634,378863.60313146 5685921.83281573,378864.10313146 5685920.83281573,378864.555712231 5685919.6562937,378865.094427308 5685918.78767659,378865.213754785 5685918.48045524,378867.608786158 5685914.46603257,378868.077536158 5685913.46603257,378869.165152867 5685910.57513817,378869.94688146 5685909.33281573,378870.44688146 5685908.33281573,378874.552846828 5685897.70008024,378874.891592625 5685895.82004503,378875.090463677 5685895.36055082,378876.215463677 5685891.86055082,378876.215463677 5685891.86055082,378878.770854533 5685879.71636506,378879.239604533 5685875.21636506,378879.444196981 5685872.76019745,378879.633154709 5685870.74269717,378879.633643026 5685870.7348841,378879.74037305 5685869.73001702,378879.868664309 5685868.26383119,378880.050553564 5685866.60044252,378880.238053564 5685864.60044252,378880.290873593 5685863.92418208,378880.364604533 5685863.21636506,378880.480245495 5685861.98272879,378880.559976677 5685861.02595461,378880.68865159 5685859.6520935,378880.755425319 5685859.06256273,378881.161675319 5685855.06256273,378881.161675319 5685855.06256273,378881.161675319 5685846.58181046,378881.206803564 5685846.10044252,378881.351904709 5685844.24269717,378881.383154709 5685843.74269717,378881.383154709 5685843.74269717,378880.67402079 5685830.07854529,378880.049842602 5685827.91108609,378878.259056409 5685817.75526539,378877.977806409 5685816.75526538,378874.658656173 5685808.01009282,378874.557579977 5685807.52777648,378869.982610536 5685796.76222945,378867.906156209 5685793.70815317,378867.688303869 5685792.9770032,378867.265578075 5685792.19961426,378866.185489212 5685789.23310731,378860.364952091 5685779.49181208,378852.81440755 5685771.02063966,378843.803937489 5685764.12260266,378842.564372905 5685763.5023179,378842.501604784 5685763.43045671,378836.333689154 5685758.61063122,378835.290188693 5685757.65855828,378834.599378598 5685757.25538016,378833.555058031 5685756.43931146,378832.01932966 5685755.65186093,378831.907011773 5685755.57698234,378831.907011774 5685755.57698234,378829.776251417 5685754.44045408,378824.360019246 5685751.27937361,378823.034923463 5685750.84469087,378821.54734454 5685750.05122976,378810.309900209 5685746.64880539,378806.160818512 5685746.24088685,378806.183067702 5685746.08236137,378802.620567702 5685745.58236137,378802.620567702 5685745.58236137,378794.896531841 5685745.04296711,378793.640025358 5685744.91430979,378791.704589973 5685744.48466488,378780.776064765 5685744.09179551,378778.011169716 5685744.5,378775.34375 5685744.5,378774.331260387 5685744.59051271,378772.872400209 5685744.14880539,378772.619267546 5685744.12391856,378771.354298877 5685743.7272045,378770.584865243 5685743.64899291,378768.630544417 5685743.07715324,378763.681500867 5685742.60614623,378762.920626292 5685742.46780539,378759.351818049 5685742.14600616,378758.962579723 5685742.033352,378747.523116618 5685741.00103186,378736.096548767 5685742.16745725,378734.606338054 5685742.61776609,378732.379410671 5685742.85582514,378720.269523054 5685746.86202516,378709.280133485 5685753.33754318,378709.22462373 5685753.38878821,378706.19692596 5685755.03643006,378704.970337347 5685756.14321874,378699.837063399 5685759.28865041,378697.176956001 5685761.78279137,378696.959308011 5685761.85099138,378691.870814747 5685764.67127677,378690.39790446 5685765.400501,378690.39790446 5685765.400501,378689.58540446 5685765.900501,378689.602593435 5685765.92843308,378686.353713423 5685767.72911717,378684.3497119 5685769.4465256,378680.739998676 5685771.70105299,378679.458748676 5685772.70105299,378679.458748676 5685772.70105299,378678.406830535 5685773.67833603,378678.16534344 5685773.82431232,378674.856619359 5685776.97665463,378671.915782914 5685779.70883452,378671.4535599 5685780.2188737,378668.73626099 5685782.80774365,378668.24027845 5685783.39557481,378668.157898318 5685783.48972353,378662.43260176 5685791.2000636,378662.410519235 5685791.23539564,378661.733890384 5685792.09507133,378656.826161565 5685801.20538174,378654.845604472 5685807.15314028,378654.661405339 5685807.62614885,378650.207672737 5685809.3215261,378645.552496888 5685810.55777525,378636.137913699 5685814.90541147,378635.262913699 5685815.40541147,378634.290907651 5685816.08021024,378632.793219186 5685816.79592627,378631.082023054 5685817.36202516,378628.822481722 5685818.69346405,378627.380606582 5685819.38250798,378626.536856582 5685819.88250798,378626.536856582 5685819.88250798,378625.176215335 5685820.84203323,378620.092633485 5685823.83754318,378618.490948039 5685825.31617353,378615.552498676 5685827.20105299,378614.271248676 5685828.20105299,378612.868489354 5685829.52724449,378610.272855003 5685831.35768781,378609.739921226 5685831.87727007,378608.446346597 5685832.68003912,378603.936383485 5685835.33754318,378602.250679396 5685836.89373715,378599.88409344 5685838.32431232,378599.099956155 5685839.07138856,378590.733998846 5685845.34897823,378585.414353045 5685851.04130925,378583.845398318 5685852.48972353,378583.407898318 5685852.98972353,378581.994432069 5685855.01454958,378577.772697069 5685859.53205206,378572.044306833 5685868.35068644,378571.838173476 5685868.73870217,378571.77635176 5685868.7000636,378571.46385176 5685869.2000636,378571.46385176 5685869.2000636,378570.463716367 5685871.21772283,378569.49061854 5685872.66718427,378568.99061854 5685873.66718427,378569.198113776 5685873.77093189,378566.227854681 5685879.76309127,378563.15844897 5685891.14605957,378562.374142008 5685902.90948091,378563.905215283 5685914.59917866,378563.945426146 5685914.71771567,378561.624393074 5685912.84861842,378552.559120642 5685908.08000872,378545.581045653 5685898.60214456,378542.900060347 5685896.21194793,378539.835311923 5685892.65890761,378537.429913119 5685890.76045454,378536.693251013 5685889.9892428,378534.718242295 5685888.60525161,378533.157729507 5685879.79347704,378529.431659302 5685869.72505489,378526.596792458 5685864.92656496,378524.937543479 5685861.49418064,378524.856349961 5685861.388558,378524.724425222 5685861.03796298,378523.58377914 5685859.19247,378523.298992842 5685858.4136909,378522.655679579 5685855.65878091,378521.089873527 5685852.37261397,378520.9041998 5685851.86486898,378520.609791466 5685851.36506275,378517.110911015 5685844.02194049,378509.208525032 5685833.83799188,378507.405171181 5685832.33247121,378506.959014286 5685831.80778024,378505.473906323 5685830.6354288,378503.821630274 5685828.75886581,378499.559475357 5685825.78253248,378499.313261773 5685825.57698234,378498.563261773 5685825.07698234,378498.558768469 5685825.0837223,378495.161282336 5685822.7112015,378495.250761773 5685822.57698234,378494.500761773 5685822.07698234,378494.500761774 5685822.07698234,378493.597004531 5685821.59492642,378492.660982755 5685820.86740032,378492.140510344 5685820.60174641,378492.079044118 5685820.55882353,378490.204044118 5685819.55882353,378490.181183176 5685819.6016878,378489.101008897 5685819.0503569,378488.988754928 5685818.9655184,378487.108124264 5685818.03317025,378482.587520607 5685815.72581254,378482.264212419 5685815.63173527,378478.954541551 5685813.99092107,378475.860918869 5685813.12366841,378475.502169041 5685812.92857784,378474.345919041 5685812.42857784,378473.591766921 5685812.19023132,378470.340159184 5685810.56743469,378464.992636409 5685809.04278175,378458.97046355 5685807.18721504,378454.738472604 5685806.76417854,378454.099294417 5685806.57715324,378445.814130912 5685805.78864328,378443.443794055 5685805.31731364,378432.253276928 5685805.2110421,378428.922780543 5685805.80777847,378424.918847315 5685805.79636322,378423.364853639 5685806.11415208,378422.247067112 5685806.02842538,378409.515017138 5685807.79810529,378406.578009806 5685808.87939861,378396.050773054 5685812.36202516,378394.159768006 5685813.47630337,378393.185309419 5685813.79139855,378391.935309419 5685814.29139855,378382.237494848 5685819.23387627,378378.574174462 5685822.03611347,378377.967545951 5685822.34530477,378369.043141657 5685829.27036571,378361.574877681 5685837.745417,378355.827465523 5685847.4700617,378352.004621347 5685858.09961124,378350.902831554 5685865.07351508,378350.692662324 5685865.04359516,378349.985849542 5685870.00852397,378348.7331974 5685874.41345457,378347.758789978 5685877.21175281,378347.525090354 5685877.62721881,378346.315910163 5685877.24506264,378340.696880242 5685876.66971397,378340.380544417 5685876.57715324,378334.481835622 5685876.01576533,378333.222751029 5685875.71793302,378326.862945037 5685875.22453404,378319.25 5685874.5,378318.0625 5685874.5,378306.456618434 5685875.63317137,378304.441117635 5685876.23898779,378303.348160671 5685876.35582514,378300.656668531 5685877.24622613,378291.427526409 5685879.77542041,378281.786856582 5685884.38250798,378280.943106582 5685884.88250798,378280.943106582 5685884.88250798,378271.335057685 5685891.95489787,378269.708212699 5685893.74704021,378268.621348936 5685894.56343889,378261.889680078 5685901.91523231,378253.885533457 5685906.73631912,378250.616477734 5685909.66276463,378248.90625 5685909.5,378247.71875 5685909.5,378236.747723614 5685910.51155554,378233.486806621 5685911.43453263,378231.934798731 5685911.5826168,378220.997809419 5685914.79139855,378219.747809419 5685915.29139855,378219.747809419 5685915.29139855,378216.462115851 5685916.94425043,378215.935284758 5685917.1622879,378214.434057997 5685917.64806326,378213.591226335 5685918.13241397,378211.239334504 5685919.10578201,378207.30359047 5685921.74573444,378203.600182905 5685923.87397448,378202.765108728 5685924.62163022,378199.549547146 5685926.64787143,378199.549547147 5685926.64787143,378198.299547147 5685927.64787143,378198.299547147 5685927.64787143,378189.121284722 5685936.7793473,378182.220677787 5685947.50390673,378182.045468976 5685947.52013032,378180.511377027 5685947.95628226,378179.379078188 5685948.06334551,378168.531766391 5685951.21569191,378158.467545951 5685956.34530477,378156.124893031 5685958.16313078,378155.103713423 5685958.72911717,378152.309148623 5685961.12403009,378149.543141657 5685963.27036571,378148.736489089 5685964.1857621,378145.8965485 5685966.6195616,378140.581371466 5685973.47065024,378140.495828194 5685973.55530235,378140.099170374 5685973.86473539,378139.544653626 5685974.49656784,378138.151918961 5685975.87479337,378136.481425453 5685976.48012859,378126.137675453 5685981.48012859,378126.137675453 5685981.48012859,378115.710327539 5685987.90953524,378106.806144543 5685996.32276169,378099.796299445 5686006.36910063,378094.972999303 5686017.62976802,378092.537304526 5686029.63536027,378092.193554526 5686033.13536027,378092.256836574 5686045.47668727,378094.84382494 5686057.54399219,378096.089521947 5686060.35426616,378097.126227984 5686065.02152647,378102.28181264 5686076.36438264,378109.668954347 5686086.39785544,378111.679556709 5686088.19038111,378112.255051206 5686090.06954682,378112.255051206 5686090.06954682,378117.342309051 5686101.93671563,378124.850689549 5686112.44072012,378129.756939549 5686117.94072012,378129.756939548 5686117.94072012,378139.095593642 5686126.41811911,378150.000078066 5686132.75601888,378161.988545602 5686136.67436038,378167.043594189 5686137.20862895,378167.775705583 5686137.42284676,378170.929305485 5686137.72297903,378173.283312044 5686139.00310359,378174.426402972 5686139.63220604,378174.521767939 5686139.70622614,378183.006692037 5686144.32869292,378183.791506063 5686144.67749915,378185.435330959 5686145.57142216,378186.059145529 5686145.84117981,378186.440328447 5686146.61018638,378192.281965243 5686153.99530037,378192.413531134 5686154.18104045,378192.413531134 5686154.18104045,378192.54531074 5686154.32822701,378194.207343764 5686156.42940237,378195.017328168 5686157.10135574,378196.019271166 5686158.30926235,378196.264128741 5686158.51465843,378197.974316826 5686160.56295615,378200.576405756 5686163.77241257,378200.824297808 5686163.97638744,378203.417330742 5686167.08207124,378212.060168336 5686174.19107128,378215.707534879 5686176.19094762,378220.635283202 5686180.19960578,378226.919114586 5686183.68531783,378230.803864518 5686186.39530494,378235.369022803 5686188.18725527,378239.60890546 5686190.44877024,378240.315725558 5686190.66277814,378241.346250518 5686191.22078536,378252.132532448 5686194.64484993,378254.445032448 5686195.14484993,378254.445032448 5686195.14484993,378255.371847678 5686195.24390174,378257.377599791 5686195.85119461,378269.0625 5686197,378271.03125 5686197,378281.673740887 5686196.04860191,378291.978723591 5686193.22457959,378301.619393418 5686188.61749202,378301.619393418 5686188.61749202,378302.463143418 5686188.11749202,378302.463143418 5686188.11749202,378303.256718141 5686187.55786252,378304.150643418 5686187.11749202,378304.994393418 5686186.61749202,378304.994393418 5686186.61749202,378306.37071544 5686185.67823676,378310.4893487 5686183.56273895,378319.369579626 5686176.63526461,378324.226593568 5686171.10104222,378325.456479778 5686170.06675822,378327.023086172 5686168.04444268,378327.557397254 5686167.46511059,378327.851602177 5686166.97492018,378333.249102472 5686160.00734443,378338.74513351 5686148.53082853,378339.27638351 5686147.03082853,378339.516861003 5686145.96588274,378340.73818421 5686143.17576297,378343.255422603 5686131.94208407,378343.255422603 5686131.94208407,378343.317922603 5686131.44208407,378343.573995495 5686128.98272879,378343.64754423 5686128.10014397,378343.739604533 5686127.21636505,378343.764731413 5686126.97022314,378344.264731413 5686121.97022314,378344.264731413 5686121.97022314,378344.274887638 5686110.13222678,378343.078871214 5686104.13242761,378343.104861821 5686102.65121379,378341.852922473 5686096.34824333,378341.836197064 5686095.81056796,378341.478852803 5686094.46496512,378340.612548682 5686090.10350041,378340.383396199 5686089.37021247,378340.380157902 5686089.05579863,378340.224503146 5686088.41552969,378340.05611435 5686082.25726701,378339.816894469 5686081.31368851,378339.421695955 5686071.46917769,378336.439833931 5686059.5531993,378334.745770587 5686056.04879669,378330.201857814 5686046.18621072,378325.142116805 5686039.48786053,378325.52683558 5686038.54086047,378326.841994115 5686035.73518893,378326.981378739 5686035.48212181,378327.744393418 5686035.11749202,378327.744393418 5686035.11749202,378327.858641822 5686035.04978926,378329.25738518 5686034.55913658,378330.792270128 5686034.15152573,378337.922332482 5686033.00065126,378341.687848842 5686031.59306344,378345.428700321 5686031.30820919,378347.788886508 5686030.76056234,378351.986669321 5686030.34711682,378352.353917565 5686030.23571329,378355.690201269 5686029.9173832,378356.061788788 5686029.80836387,378363.318831118 5686028.98880215,378365.086795369 5686028.36863378,378367.263978727 5686028.02595069,378372.420664412 5686026.0947433,378372.897046354 5686026.04190954,378380.282004811 5686023.50111123,378385.546481495 5686022.07919844,378390.171446883 5686021.28835561,378398.79742894 5686017.88935639,378402.003442003 5686016.85193674,378403.29756351 5686016.10824296,378406.230476946 5686015.13797484,378407.571203584 5686014.3479492,378409.464225985 5686014.21861351,378420.288242584 5686011.39808477,378425.098165519 5686009.12421498,378425.994984548 5686010.49172937,378426.338734548 5686010.99172937,378426.338734548 5686010.99172937,378426.716791326 5686011.44305532,378426.75 5686011.5,378427.125 5686012,378427.160818034 5686011.97313647,378433.647939148 5686019.71749193,378441.039453961 5686025.73782703,378441.305527045 5686026.18216112,378441.584439473 5686027.02382333,378444.129057211 5686031.44620916,378445.168506962 5686037.0975745,378446.976387614 5686041.88109574,378447.293701318 5686042.89649959,378447.42914556 5686043.26889358,378447.90983673 5686044.80935034,378447.964407252 5686046.69661345,378450.262451318 5686057.39649959,378450.574951318 5686058.39649959,378452.436126491 5686063.08708748,378452.628450515 5686063.73023283,378452.880132208 5686064.20608362,378453.884596499 5686066.73756379,378457.521229266 5686072.98093604,378458.116075298 5686074.10560248,378458.328754351 5686074.36729535,378458.401234548 5686074.49172937,378458.744984548 5686074.99172937,378458.803525845 5686074.95148223,378465.518603033 5686083.21410974,378468.894114969 5686086.01381834,378469.34812441 5686086.47748756,378469.34812441 5686086.47748756,378471.096722031 5686087.92644935,378474.541820716 5686091.47104346,378483.195790578 5686097.67451651,378485.806007041 5686098.91690257,378495.364666549 5686103.58330209,378496.165693331 5686103.80714234,378495.951161565 5686104.20538174,378495.641981302 5686105.1338728,378494.494401965 5686107.76478327,378494.17752199 5686109.27895625,378492.888120439 5686112.20621023,378492.656172009 5686113.32317709,378490.887438023 5686117.92410269,378490.293688023 5686119.92410269,378490.293688023 5686119.92410269,378490.038215987 5686121.24512057,378489.226145426 5686123.46585501,378489.218491316 5686123.48292164,378489.216171835 5686123.49312936,378488.217241206 5686126.22486199,378486.272775927 5686131.36470355,378485.457342653 5686135.77385019,378485.35449995 5686135.98955398,378483.381837077 5686144.91604782,378476.857968976 5686145.52013032,378466.215564864 5686148.54583242,378456.309675637 5686153.47421928,378447.477144557 5686160.13770435,378445.712019665 5686162.07159963,378438.351749789 5686157.94462758,378426.679442823 5686154.24916024,378422.976888441 5686153.86941514,378420.222751029 5686153.21793302,378418.089806525 5686153.05245743,378408.871753294 5686152.17516313,378408.536794417 5686152.07715324,378397.21875 5686151,378396.03125 5686151,378383.08474869 5686152.41341362,378370.748206089 5686156.5870632,378368.694212555 5686157.8286797,378367.082023054 5686158.36202516,378356.092633485 5686164.83754318,378354.502666276 5686166.30535559,378345.968279381 5686169.3662765,378341.472881069 5686172.1064123,378340.825413699 5686172.40541147,378340.076410342 5686172.83341339,378337.487854058 5686174.13613328,378337.197664211 5686174.31134225,378334.815997229 5686175.47667938,378326.726924277 5686181.26382112,378325.754150764 5686182.23964366,378325.015992185 5686182.75718392,378322.841023348 5686184.97941655,378320.912514265 5686186.45515923,378313.44788914 5686194.77950248,378313.067081186 5686195.40852183,378312.97366441 5686195.49980269,378310.004319798 5686200.08428963,378308.981127681 5686201.245417,378306.153864883 5686206.02915713,378305.74061854 5686206.66718427,378305.541955708 5686207.06450993,378303.233715524 5686210.9700617,378300.164721798 5686219.50350417,378299.063654724 5686222.39936232,378298.814694849 5686223.91576723,378298.495350338 5686224.65831566,378297.800841321 5686228.12533004,378297.668811462 5686228.46525504,378296.016502117 5686232.52633404,378295.93911819 5686232.75848582,378295.377433934 5686234.12014462,378295.377433934 5686234.12014462,378293.627932165 5686239.06730913,378293.357184263 5686239.53989804,378289.928443591 5686248.75526538,378289.365943591 5686250.75526538,378288.570517129 5686255.03356946,378288.561292023 5686255.07311949,378288.192121347 5686256.09961124,378287.919782994 5686257.82340782,378286.932077397 5686262.05791592,378286.869577397 5686262.55791593,378286.556484802 5686265.90080326,378286.543196436 5686265.89955748,378286.355696436 5686267.89955748,378286.301004505 5686268.51727121,378286.216197542 5686269.53495476,378286.213327397 5686269.55791593,378286.198533846 5686269.699995,378277.376371744 5686270.44800154,378276.790815717 5686270.61095001,378272.982509113 5686270.95139809,378270.038941888 5686271.75806607,378268.61599869 5686271.91341362,378264.965834824 5686273.14832241,378263.801031729 5686273.46753012,378263.232968976 5686273.52013032,378252.590564864 5686276.54583242,378252.127953088 5686276.77599144,378248.780120358 5686277.7535677,378238.681421946 5686282.92798751,378229.737518657 5686289.91117618,378222.26829995 5686298.45337156,378216.540911415 5686308.24905176,378212.760199991 5686318.9478625,378212.260199991 5686320.9478625,378212.160719698 5686321.35172794,378210.446585784 5686328.4160374,378209.240187516 5686332.49923154,378209.158255013 5686332.77904163,378208.881223643 5686333.73373435,378203.781766391 5686335.21569191,378196.357012929 5686339,378195.78125 5686339,378185.138759113 5686339.95139809,378184.795091371 5686340.04557829,378179.0625 5686339.5,378177.875 5686339.5,378165.392523102 5686340.81279722,378153.456278236 5686344.69374098,378150.35466243 5686346.48582972,378150.083746888 5686346.55777525,378149.912122419 5686346.6370311,378146.715564864 5686347.54583242,378136.809675637 5686352.47421928,378130.977557062 5686356.87411719,378129.826006776 5686357.60976791,378129.090400571 5686358.29783583,378127.977144557 5686359.13770435,378126.719995225 5686360.51505457,378121.795121559 5686365.12166003,378115.270067483 5686373.9730616,378114.363817483 5686375.4730616,378109.032787365 5686386.83526913,378108.041070634 5686391.08733387,378106.49793905 5686395.26402874,378104.883738308 5686405.29322795,378104.791645467 5686405.28363495,378104.479145467 5686408.28363494,378104.273095291 5686410.75730283,378104.210595291 5686411.75730283,378104.460625361 5686411.77292971,378104.011629082 5686417.18125126,378105.5086817 5686429.37032847,378106.483657896 5686432.242566,378107.648244037 5686435.97468073,378102.5 5686435.5,378101.71875 5686435.5,378100.140074503 5686435.62021125,378098.9375 5686435.5,378097.375 5686435.5,378096.532809999 5686435.58222948,378094.464048687 5686435.09287082,378092.997400209 5686434.64880539,378091.567748734 5686434.50824866,378090.516878863 5686434.2870129,378090.516878863 5686434.2870129,378084.126208825 5686433.62160381,378083.974294417 5686433.57715324,378080.775310503 5686433.27270171,378078.172012418 5686433.00164121,378077.613969466 5686432.70398616,378076.813261773 5686432.07698234,378075.313261773 5686431.07698234,378075.313261774 5686431.07698234,378073.300528278 5686430.00340854,378065.135687228 5686425.43226216,378062.813099321 5686424.69792192,378061.979713227 5686424.26993765,378055.001087444 5686422.22797248,378053.476704246 5686421.74600324,378053.287766154 5686421.72664994,378051.068044417 5686421.07715324,378044.546690613 5686420.45650738,378042.728578699 5686420.04550051,378032.268467407 5686419.54753137,378021.881091886 5686420.87581271,378016.891153862 5686422.42999057,378014.45719621 5686419.01966198,378014.473765452 5686419.00827063,378014.130015452 5686418.50827063,378013.408422281 5686417.48183711,378012.689672281 5686416.48183711,378012.660771406 5686416.50260961,378010.295438955 5686413.18843491,378008.407105479 5686411.46554999,378005.599698655 5686408.12664379,378002.807542065 5686405.87815699,378002.658281672 5686405.27813361,378002.537271275 5686404.51946003,378002.319601725 5686403.91664792,378001.509047328 5686400.65823767,378000.936226672 5686399.46620892,377997.463887609 5686390.57638875,377997.186543718 5686390.13234884,377993.425308938 5686380.01567813,377990.519433217 5686375.16625725,377990.256324968 5686374.57196058,377989.591228767 5686373.61723916,377987.761869038 5686370.56434354,377986.35695907 5686368.97456259,377983.692357771 5686365.1496243,377980.052548883 5686361.61563751,377979.648463586 5686360.77474379,377979.631521291 5686357.75671207,377979.661743092 5686357.36987301,377979.800553564 5686356.10044252,377979.988053564 5686354.10044252,377980.133154709 5686352.24269717,377980.164404709 5686351.74269717,377980.164404709 5686351.74269717,377980.164404709 5686344.25730283,377980.008154709 5686341.75730283,377980.008154709 5686341.75730283,377978.371241693 5686331.09946776,377975.701958091 5686323.36591394,377974.053316086 5686315.95468901,377968.886638814 5686304.60317659,377961.484757713 5686294.56507198,377952.167498583 5686286.27410881,377950.108550497 5686285.09814125,377947.319310436 5686282.30449775,377945.843331616 5686281.29914387,377943.115449585 5686278.20904762,377942.50961659 5686277.42349735,377942.1745247 5686277.14318464,377939.609879151 5686274.23799976,377930.690005005 5686267.32630444,377920.633748104 5686262.20698962,377909.796808551 5686259.06113073,377898.5625 5686258,377898.21875 5686258,377894.21875 5686257.5,377892.28125 5686257.5,377881.638759113 5686258.45139809,377876.556073103 5686259.84427949,377871.743182592 5686260.6918947,377871.697717158 5686260.70942128,377870.328885159 5686260.91717613,377858.782694968 5686265.21478537,377848.357695104 5686271.78009807,377847.02882866 5686273.06278234,377843.640842367 5686275.02598664,377840.180629417 5686278.15547427,377840.174547147 5686278.14787143,377838.924547147 5686279.14787143,377838.991214461 5686279.23120558,377838.955557203 5686279.26345473,377835.845022471 5686281.527542,377828.122362464 5686289.76536579,377824.383122888 5686295.66825783,377823.558077582 5686296.77420516,377823.217682564 5686297.50806196,377822.079890051 5686299.30422031,377821.747704321 5686300.14520297,377820.49061854 5686302.16718427,377819.781681905 5686303.58505754,377818.05311854 5686306.66718427,377817.55311854 5686307.66718427,377815.330365766 5686313.37922188,377814.342888867 5686314.96469967,377810.176942326 5686326.05979658,377810.167740165 5686326.11633596,377806.610252117 5686333.52633404,377806.110252117 5686335.02633404,377805.839142079 5686336.31335692,377805.064867551 5686337.7451242,377801.601488028 5686348.93043951,377800.882738028 5686352.43043951,377800.912196992 5686352.43648911,377799.526600338 5686355.65831566,377797.074446436 5686367.89955748,377796.80394407 5686370.78491605,377796.791645467 5686370.78363494,377796.635395467 5686372.28363494,377796.543730068 5686373.38409386,377793.31736649 5686380.46917147,377792.78611649 5686381.96917147,377792.11064063 5686385.03397965,377790.642193022 5686388.51360413,377788.304345291 5686401.75730283,377788.304345291 5686401.75730283,377788.28836736 5686402.01294973,377788.177813823 5686403.27641872,377788.072895467 5686404.28363494,377788.011946436 5686404.89955748,377787.68397999 5686408.39786624,377787.574446436 5686409.39955748,377787.547481292 5686409.68718568,377787.479145467 5686410.28363494,377787.322895467 5686411.78363494,377787.261946436 5686412.39955748,377787.074446436 5686414.39955748,377787.019754505 5686415.01727121,377786.769754505 5686418.01727121,377786.878782577 5686429.15255025,377787.21236766 5686430.83570257),(378241.097744652 5686581.54216122,378241.116955388 5686581.55236693,378240.803657309 5686581.94224898,378241.097744652 5686581.54216122)) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/heisenbugs.xml geos-3.8.0/tests/xmltester/tests/misc/heisenbugs.xml --- geos-3.7.1/tests/xmltester/tests/misc/heisenbugs.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/heisenbugs.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + + + + +Heisenbug provided by "Rene Neidt" (r.neidt at idu.de) + + + 01060000001C000000010300000001000000040000005C8FC245BCA25441F853E3DD919355419133753ABCA25441053861CD91935541E833753ABCA25441853861CD919355415C8FC245BCA25441F853E3DD91935541010300000001000000040000009133753ABCA25441053861CD91935541C520B01ABCA2544123DBF99E919355418833753ABCA25441F83761CD919355419133753ABCA25441053861CD9193554101030000000100000004000000F24283B3B4A254418422B80B87935541FD3F83B3B4A254415B1EB80B879355418FC2F508B4A25441C3F5281C86935541F24283B3B4A254418422B80B87935541010300000001000000070000007B14AE1FB2A25441B072686183935541736891E5AFA25441B81E8533809355412FDD2496AFA25441560E2DC27F9355416A184AE0AFA2544113B2FC2B809355415C8FC2E5AFA254413D0AD733809355412881420FB0A25441B1F5096F809355417B14AE1FB2A25441B07268618393554101030000000100000005000000448B6CD7A9A2544139B4C88E77935541BD7206BDA9A25441E03F2169779355415C8FC2A5A9A2544185EB514877935541AE7206BDA9A25441CB3F216977935541448B6CD7A9A2544139B4C88E7793554101030000000100000004000000AD448E189CA2544144E1C8F86393554154BF62AF9BA25441505D126363935541F6285CAF9BA254413333336363935541AD448E189CA2544144E1C8F863935541010300000001000000040000009CC420189BA2544104560E4D5B935541C74B377197A25441D122DBC15A9355416D707F0798A25441E74A3BD85A9355419CC420189BA2544104560E4D5B9355410103000000010000000400000052B81EED90A25441EC51B83E54935541C1CAA10D8FA2544148E17A7451935541E6A570C18FA2544196EE51805293554152B81EED90A25441EC51B83E5493554101030000000100000004000000ED2D96108BA25441051F3EAB4B9355418A2D96108BA25441761E3EAB4B9355413D0AD7338DA254415C8FC2C54E935541ED2D96108BA25441051F3EAB4B935541010300000001000000040000008DF47DDF8AA2544134CC05644B93554128F47DDF8AA25441A1CB05644B93554152B81E7589A25441713D0A57499355418DF47DDF8AA2544134CC05644B9355410103000000010000000400000004560E2D85A254415A643B4743935541000000D082A25441250681CD3F935541773FCC6B83A25441F25B9AB24093554104560E2D85A254415A643B474393554101030000000100000014000000819543D375A25441000000702D935541B6F3FDE471A254412DB29D5731935541FCA9F1E272A254415C8FC27D31935541C520B02275A25441250681AD34935541B6F3FD8475A254418B6CE72B35935541355EBAA975A25441BC749318359355411B2FDD1C77A2544104560E85379355412FDD243677A254416F1283A83793554139B4C8B677A254413108AC5C389355414A0C029379A254413BDF4F1D3B9355419102F4F578A25441AA6AED343A93554148E17AB477A254417B14AE573893554152B81E3577A2544148E17AA437935541B81E851B77A254410AD7A380379355419A9999A975A254413D0AD7133593554148E17A8475A25441713D0A2735935541295C8F2275A2544185EB51A83493554148E17AE472A25441A4703D7A31935541291701E871A2544182A89F5431935541819543D375A25441000000702D93554101030000000100000006000000B579E52F7FA25441B2E4F0124393554104560E557FA254410C022B57439355417593186C81A254418FC2F540469355413EC2875880A254417C5FD9C04493554152B81E557FA25441713D0A5743935541B579E52F7FA25441B2E4F01243935541010300000001000000070000007593186C81A254418FC2F54046935541DD2406F182A2544189416095489355416ABC744B85A254415839B4C84B935541E94EE8C784A254412D23CB154B93554114AE47F182A2544152B81E95489355412EF656CF81A25441B81E26D9469355417593186C81A254418FC2F5404693554101030000000100000005000000809754BF85A25441F27DDB674C9355416F12839086A254410C022B874D935541652160F887A2544191B2E8894F9355410AD7A39086A25441713D0A874D935541809754BF85A25441F27DDB674C93554101030000000100000006000000666666D688A2544191ED7CC750935541FCA9F1328AA25441AAF1D2BD5293554131A117908AA254417F880C4453935541333333338AA25441E17A14BE5293554123BD00B289A25441541EFD0352935541666666D688A2544191ED7CC7509355410103000000010000000400000031A117908AA254417F880C44539355415839B4108BA25441894160FD5393554149A117908AA25441A1880C445393554131A117908AA254417F880C4453935541010300000001000000040000005839B4108BA25441894160FD53935541FA41670E8CA25441C185F56755935541AF3E670E8CA254410C81F567559355415839B4108BA25441894160FD5393554101030000000100000009000000FA41670E8CA25441C185F56755935541EC51B8568DA25441A01A2F3D579355412FDD24468FA2544104560E0D5A9355410681958B90A2544121B072D85B93554182A07A2C91A25441514995BB5C935541B81E858B90A2544185EB51D85B935541666666468FA25441CDCCCC0C5A935541713D0A578DA25441D7A3703D57935541FA41670E8CA25441C185F567559355410103000000010000000400000082A07A2C91A25441514995BB5C935541B6F3FD6C91A254419EEFA7165D935541C4A37A2C91A25441EA4D95BB5C93554182A07A2C91A25441514995BB5C93554101030000000100000004000000A5A644AD91A25441FE677FDD64935541FCA9F1DA91A25441A245B62B6593554117A844AD91A25441776A7FDD64935541A5A644AD91A25441FE677FDD649355410103000000010000000400000056D0BCD993A25441741BC98B659355415BD2BCD993A25441D51BC98B6593554152B81E6593A254415C8FC2756593554156D0BCD993A25441741BC98B6593554101030000000100000007000000AE47E1BA98A25441DF4F8D97679355416DE7FB619AA25441EE7C3FF569935541BA490C929CA25441D578E9166D935541E8228C9C9AA25441010F13496A9355411F85EB619AA2544152B81EF569935541E90F4B049AA2544185E71F6F69935541AE47E1BA98A25441DF4F8D976793554101030000000100000004000000D34D62989CA25441000000206D9355414A0C025B9DA25441508D97366E9355412C12DF499DA25441E3DE0F1E6E935541D34D62989CA25441000000206D93554101030000000100000004000000D5F04439A0A254416BFCF05872935541E9F34439A0A25441E200F1587293554100000000A1A254418FC2F57873935541D5F04439A0A254416BFCF05872935541010300000001000000040000002FDD247EA2A25441FA7E6A8C759355417F6ABC2CA3A25441BE9F1A7F76935541D2A270D5A2A25441F18DC205769355412FDD247EA2A25441FA7E6A8C75935541010300000001000000050000007F6ABC2CA3A25441BE9F1A7F769355414D412ABFA4A2544170642EBF7893554114AE4771A5A25441E17A14BE79935541B2372ABFA4A25441AF562EBF789355417F6ABC2CA3A25441BE9F1A7F7693554101030000000100000005000000B81E85FBADA25441000000F085935541022B87DEAFA25441F2D24DA2889355417B14AEE7AFA25441F6285CAF88935541EC51B8DEAFA25441295C8FA288935541B81E85FBADA25441000000F085935541 + + + 010300000001000000090000001340670E8CA254410883F56755935541713D0A578DA25441D7A3703D57935541666666468FA25441CDCCCC0C5A935541B81E858B90A2544185EB51D85B935541CD9D7A2C91A254417E4595BB5C9355410681958B90A2544121B072D85B9355412FDD24468FA2544104560E0D5A935541EC51B8568DA25441A01A2F3D579355411340670E8CA254410883F56755935541 + + + 5 + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/hexwkb.xml geos-3.8.0/tests/xmltester/tests/misc/hexwkb.xml --- geos-3.7.1/tests/xmltester/tests/misc/hexwkb.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/hexwkb.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,61 @@ + + + + + + HEXWKB (Little Endian) POINT(0 1) + + 01010000000000000000000000000000000000F03F + + true + + + + HEXWKB (Little Endian) LINESTRING(0 1, 2 3, 4 5) + + 0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440 + + true + + + + HEXWKB (Little Endian) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) + + 010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000 + + true + + + + HEXWKB (Little Endian) MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0) + + 010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 + + true + + + + HEXWKB (Little Endian) MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)) + + 01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440 + + true + + + + HEXWKB (Little Endian) MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))) + + 010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940 + + true + + + + HEXWKB (Little Endian) GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)) + + 010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 + + true + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/hole_from_shell.xml geos-3.8.0/tests/xmltester/tests/misc/hole_from_shell.xml --- geos-3.7.1/tests/xmltester/tests/misc/hole_from_shell.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/hole_from_shell.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + +GEOS 3.0.0_rc4 bufferReducedPrecision + +MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), + ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) + + + +MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), + ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/hole_red.xml geos-3.8.0/tests/xmltester/tests/misc/hole_red.xml --- geos-3.7.1/tests/xmltester/tests/misc/hole_red.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/hole_red.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + +GEOS 3.0.0_rc4 bufferReducedPrecision + +MULTIPOLYGON ( + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) +) + + + +MULTIPOLYGON ( + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) +) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/InvalidRelates.xml geos-3.8.0/tests/xmltester/tests/misc/InvalidRelates.xml --- geos-3.7.1/tests/xmltester/tests/misc/InvalidRelates.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/InvalidRelates.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,89 @@ + + + + + A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + + POLYGON((160 200, 210 70, 120 70, 160 200)) + + + POLYGON((160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) + + + true + + + + + A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + + POLYGON((110 140, 200 70, 200 160, 110 140)) + + + POLYGON((110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) + + + true + + + + + LC - intersection (containment) along mod-2 A-Int line segment + + LINESTRING(40 180, 140 180) + + + MULTIPOLYGON( + ((20 320, 180 320, 180 180, 20 180, 20 320)), + ((20 180, 20 80, 180 80, 180 180, 20 180))) + + + true + + + + + LC - intersection (overlap) along mod-2 A-Int line segment + + LINESTRING(40 180, 140 180) + + + MULTIPOLYGON( + ((20 320, 180 320, 180 180, 20 180, 20 320)), + ((60 180, 60 80, 180 80, 180 180, 60 180))) + + + true + + + + + P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(70 170) + + + POLYGON((110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) + + + true + + + + + + P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP} + + + POINT(100 150) + + + POLYGON( + (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + + true + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/linemerge.xml geos-3.8.0/tests/xmltester/tests/misc/linemerge.xml --- geos-3.7.1/tests/xmltester/tests/misc/linemerge.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/linemerge.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,14 @@ + + + +Case + +MULTILINESTRING((0 0, 10 0), (10 0, 20 0)) + + + +GEOMETRYCOLLECTION ( LINESTRING(0 0, 10 0, 20 0) ) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/makevalid.xml geos-3.8.0/tests/xmltester/tests/misc/makevalid.xml --- geos-3.7.1/tests/xmltester/tests/misc/makevalid.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/makevalid.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,157 @@ + + + + + makevalid/point/already_valid + POINT(0 0) + + + POINT(0 0) + + + + + + makevalid/point/empty + POINT EMPTY + + + POINT EMPTY + + + + + + makevalid/linestring/already_valid + LINESTRING(0 0,1 1) + + + LINESTRING(0 0,1 1) + + + + + + makevalid/linestring/invalid_result_point + LINESTRING(0 0,0 0) + + + POINT (0.0 0.0) + + + + + + makevalid/linestring/empty + LINESTRING EMPTY + + + LINESTRING EMPTY + + + + + + makevalid/mulilinestring/empty + MULTILINESTRING EMPTY + + + MULTILINESTRING EMPTY + + + + + + makevalid/mulilinestring/case1 + MULTILINESTRING((0 0,0 0),(1 1,2 2)) + + + GEOMETRYCOLLECTION (LINESTRING (1.0 1.0, 2.0 2.0), POINT (0.0 0.0)) + + + + + + makevalid/mulilinestring/case2 + MULTILINESTRING((0 0,0 0),(1 1,2 2),(2 2,3 3)) + + + GEOMETRYCOLLECTION (MULTILINESTRING ((2.0 2.0, 3.0 3.0), (1.0 1.0, 2.0 2.0)), POINT (0.0 0.0)) + + + + + + makevalid/mulilinestring/case2 + MULTILINESTRING((0 0,0 0),(1 1,2 2),(2 2,3 3),(4 4,4 4)) + + + GEOMETRYCOLLECTION (MULTILINESTRING ((2.0 2.0, 3.0 3.0), (1.0 1.0, 2.0 2.0)), MULTIPOINT (4.0 4.0, 0.0 0.0)) + + + + + + makevalid/polygon/already_valid + POLYGON((0 0,0 1,1 1,0 0)) + + + POLYGON((0 0,0 1,1 1,0 0)) + + + + + + makevalid/polygon/crossing + POLYGON((0 0,1 1,0 1,1 0,0 0)) + + + MULTIPOLYGON (((0.0 1.0, 1.0 1.0, 0.5 0.5, 0.0 1.0)), ((0.0 0.0, 0.5 0.5, 1.0 0.0, 0.0 0.0))) + + + + + + makevalid/polygon/hole_touching_two_places + POLYGON((0 0,0 1,1 1,1 0,0 0),(0 0.5,0.5 0.1,1 0.5,0 0.5)) + + + MULTIPOLYGON (((0.0 0.0, 0.0 0.5, 0.5 0.1, 1.0 0.5, 1.0 0.0, 0.0 0.0)), ((0.0 0.5, 0.0 1.0, 1.0 1.0, 1.0 0.5, 0.0 0.5))) + + + + + + + + makevalid/multipolygon/second_part_overlapping + MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((0.8 0.1,2 0.1,2 0.9,0.8 0.9,0.8 0.1))) + + + MULTIPOLYGON (((0.0 0.0, 0.0 1.0, 1.0 1.0, 1.0 0.9, 0.8 0.9, 0.8 0.1, 1.0 0.1, 1.0 0.0, 0.0 0.0)), ((1.0 0.1, 1.0 0.9, 2.0 0.9, 2.0 0.1, 1.0 0.1))) + + + + + + + makevalid/multipolygon/first_part_crossing_second_part_overlapping + MULTIPOLYGON(((0 0,1 1,0 1,1 0,0 0)),((0.8 0.1,2 0.1,2 0.9,0.8 0.9,0.8 0.1))) + + + MULTIPOLYGON (((0.8 0.2, 0.8 0.8, 0.9 0.9, 2.0 0.9, 2.0 0.1, 0.9 0.1, 0.8 0.2)), ((0.0 1.0, 1.0 1.0, 0.9 0.9, 0.8 0.9, 0.8 0.8, 0.5 0.5, 0.0 1.0)), ((0.0 0.0, 0.5 0.5, 0.8 0.2, 0.8 0.1, 0.9 0.1, 1.0 0.0, 0.0 0.0))) + + + + + + makevalid/geometry_collection + GEOMETRYCOLLECTION(POINT EMPTY,LINESTRING EMPTY,POLYGON((0 0,0 1,1 1,1 0,0 0),(0 0.5,0.5 0.1,1 0.5,0 0.5))) + + + GEOMETRYCOLLECTION (MULTIPOLYGON (((0.0 0.0, 0.0 0.5, 0.5 0.1, 1.0 0.5, 1.0 0.0, 0.0 0.0)), ((0.0 0.5, 0.0 1.0, 1.0 1.0, 1.0 0.5, 0.0 0.5))),LINESTRING EMPTY, POINT EMPTY) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/robustness.xml geos-3.8.0/tests/xmltester/tests/misc/robustness.xml --- geos-3.7.1/tests/xmltester/tests/misc/robustness.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/robustness.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,126 @@ + + + + + + + +http://geos.osgeo.org/pipermail/geos-devel/2005-May/001441.html + + + 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4A0DFE4065E0C34DA7E923417321EFAE10CEFD40D6CD6DEC17CB2341B7BD98BE948AFD40F954B20BADAC23414652253DDC42FD40B720CA0A698E234192D155C2ECF6FC40ADD0E5454E702341B3A10E3ACCA6FC40CCDBFE155F522341D166E1E38052FC4022B3A8D09D3423411747905211FAFB408628E2C70C172341F7B18A6B849DFB40B61CE749AEF92241F6B46366E13CFB40907802A184DC2241B9E841CC2FD8FA40FA74601392BF224194014977776FFA400135E1E2D8A22241500FFD91C002FA40CFB5EB4C5B8622416E789F961392F940DE17418A1B6A22418ABD854E791DF940FD44D0CE1B4E224122126AD1FAA4F84096F689495E32224164D8B584A128F840951F3524E5162241350EC61A77A8F7406EBD4383B2FB2141FEB929928524F7408B13A885C8E021417066DA34D79CF6408654AA4429C62141BCBC6E977611F64071BCBED3D6AB21414A4D47986E82F5407B1F5C40D39121416897B55ECAEFF44024F0D29120782141DA601D5A9559F4403AC024C9C05E2141AC6E1041DBBFF340C23FDCE0B545214109B16410A822F340EABCE5CC012D214160F4440A0882F2402528687AA61421417B2A3CB507DEF140659F9ECFA5FC2041975E3BDBB336F1408B83B2AB01E5204109689A88198CF040F01A96E6BBCD204192DE26168CBCEF40FDC3DF50D6B620418BB372E18D5AEE40A5BAA5B352A020414762D20D54F2EC409D735AD0328A204125366DB2FA83EB401B90A9607874204149EEA6609E0FEA40CC6C5516255F20412C71E5215C95E840C14E159B3A4A204167244D755115E740E4307490BA3520410516744D9C8FE5409C34B08FA621204130250C0E5B04E44024B89A29000E2041F2588489AC73E240152AF2CC91F51F414194A1FEAFDDE040A812CC8B04D01F41B9AE1D2C0A85DE40479B677D5BAB1F413F7ECABF9744DB4062B59D7D99871F4122E757A249FAD740CEC04256C1641F412B6FA08261A6D440A7E1EEBED5421F41A4982BCF2149D14038C2C75CD9211F41436DFF619BC5CB402FC54BC2CE011F41DF6CCA0C52E7C44028AC1E6FB8E21E41DD196F76E1EFBB409BB6D7CF98C41E41F3220E7C07E0AB40163DD13D72A71E4180CA45A3CBEE47C079CCF9FE468B1E4173AA092451DDACC0EBC4A64519701E41488EA3D140CBBCC00E806830EB551E41721152D143A2C5C0D501E0C9BE3C1E41BB857A0AAEECCCC05637960896241E4176759EC42622D2C0BAC6D4CE720D1E41BE846FDD47D4D5C0657380EA56F71D41F4583488708CD9C03319F51444E21D4153B71285564ADDC0B041E3F23BCE1D41F73ECE90D786E0C0E7552F1440BB1D417067519F176BE2C05E6FD2F351A91D413DDB08ABC551E4C0B5CABCF772981D41C6EB69C0BB3AE6C01FDEB970A4881D4115D45EBED325E8C00516569AE7791D4168E43F59E712EAC0BF39C69A3D6C1D4198FFCF1DD001ECC05C7AD082A75F1D41AE2E3C7467F2EDC0482DB74D26541D41D30E1EA386E4EFC0703425E1BA491D41C76E406903ECF0C06B151C0D66401D417873748760E6F1C014C1E38B28381D41AC8C2E2647E1F2C0D60CFC0103311D410441B9B4A3DCF3C0C9DE0FFEF52A1D41EDBA2C9962D8F4C0A10DEAF801261D419914F63170D4F5C053F56B5527221D41003D5FD7B8D0F6C024C18560661F1D41725717DD28CDF7C0C06B3051BF1D1D410D77BB93ACC9F8C0D0756948321D1D4181975F4A30C6F9C067533051BF1D1D4180B41750A0C2FAC075908560661F1D4127E180F5E8BEFBC051AC6B5527221D41C5404A8EF6BAFCC051ACE9F801261D4152C2BD72B5B6FDC033650FFEF52A1D41FF7F480112B2FEC0047BFB0103311D4139A402A0F8ACFFC01117E38B28381D41D05A1BDFAA5300C145531B0D66401D41B215F4EA8AD000C1365A24E1BA491D41C495ACB6124D01C10B3BB64D26541D4169AA478C38C901C12E70CF82A75F1D41EBBA6BBDF24402C1B517C59A3D6C1D418A0924A437C002C136DC549AE7791D41FC4EA1A3FD3A03C1A38CB870A4881D414F9FF9283BB503C1A661BBF772981D414689E7ABE62E04C1DAEED0F351A91D41386188AFF6A704C10ABE2D1440BB1D41B0A819C3612005C19B92E1F23BCE1D41F083B5821E9805C10753F31444E21D41B72E0E98230F06C145967EEA56F71D41AE6128BB678506C1CDD2D2CE720D1E41DA9914B3E1FA06C1C12C940896241E41C133A756886F07C1C2E0DDC9BE3C1E41D14B2F8D52E307C1A7486630EB551E41CA552C4F375608C15C77A44519701E410E5D02A72DC808C1F068F7FE468B1E41B1DFACB12C3909C1C3C3CE3D72A71E417036709F2BA909C1B027D5CF98C41E41AB7B89B421180AC1D7071C6FB8E21E41ACE3DC4906860AC1AD0B49C2CE011F41A378A2CDD0F20AC1BCF3C45CD9211F41E52C11C4785E0BC168FEEBBED5421F410D3608C8F5C80BC107C93F56C1641F41D1A3B68B3F320CC14DA99A7D99871F41742541D94D9A0CC1207B647D5BAB1F41F3F0659318010DC1AFDEC88B04D01F4116BF1EB697660DC189E2EECC91F51F41C9CF4057C3CA0DC1B60A9929000E20414EEA1AA7932D0EC1A77DAE8FA6212041DF4C11F1008F0EC189707290BA352041B07F379C03EF0EC12585139B3A4A20413BFFE72B944D0FC1129A5316255F204117B25940ABAA0FC167B4A76078742041528F99CB200310C1148F58D0328A20418BAA0D06283010C16DCDA3B352A020414941A4CC675C10C13DCEDD50D6B62041221106ACDC8710C1CE1C94E6BBCD2041B960AE4083B210C12F7DB0AB01E52041EEA52E3758DC10C1F8909CCFA5FC2041EAEA704C580511C1D011667AA6142141DEECF84D802D11C1D79EE3CC012D214154EF231ACD5411C11A1ADAE0B5452141313F67A03B7B11C1299322C9C05E214166608DE1C8A011C1D5BBD09120782141B1E1F1EF71C511C11AE45940D39121419ED1BBEF33E911C12B7ABCD3D6AB214159D016170C0C12C1870BA84429C62141C5B96AAEF72D12C101C4A585C8E0214195E39110F44E12C187674183B2FB21411BEB0DABFE6E12C181C33224E5162241BB0E3BFE148E12C1839487495E322241FB0E829D34AC12C11BDDCDCE1B4E22414D93882F5BC912C15CAA3E8A1B6A2241D00E606E86E512C1DF42E94C5B8622415A21B327B40013C1D3BCDEE2D8A222414B71F13CE21A13C1BFF75D1392BF2241AFFA79A30E3413C17BF6FFA084DC22416DD0C364374C13C1F895E449AEF922415D4C859E5A6313C1519DDFC70C1723411AABD982767913C1AA23A6D09D342341C6106558898E13C14348FC155F522341D5F3767A91A213C14839E3454E7023413AEB2A598DB513C1A885C70A698E23416FDD87797BC713C175B6AF0BADAC2341D48D9D755AD813C1112C6BEC17CB23413386A0FC28E813C1943BC14DA7E92341235A04D3E5F613C1AD88A0CD580824414D4294D28F0414C161984E072A2724419E0D8AEA251114C1DD98979318462441AA66A31FA71C14C1B25AFE0822652441856B358C122714C1B377ECFB4384244195963E60673014C1B9A3E2FE7BA32441FEF676E1A43814C18423A9A2C7C2244154B75E6BCA3F14C1FA65807624E2244180F14A6FD74514C1EFBB510890012541CBCE7074CB4A14C1B22AE0E40721254140F3EE17A64E14C18855F997894025419833D50C675114C1517AA6AC1260254128952A1C0E5314C1777D5DADA07F25414597F1249B5314C15C013224319F2541DAC52A1C0E5314C17985069BC1BE2541F994D50C675114C14189BD9B4FDE25414685EF17A64E14C11AAF6AB0D8FD25416D917174CB4A14C16DDB83635A1D2641AEE44B6FD74514C1194C1240D23C2641FCDA5F6BCA3F14C164A4E3D13D5C2641074B78E1A43814C19CE9BAA59A7B2641E61A4060673014C1946C8149E69A26410020378C122714C1339C774C1EBA26412D4BA51FA71C14C139BD653F40D9264102228CEA251114C17E83CCB449F82641698696D28F0414C1D588154138172741CBCD06D3E5F613C1CE9DC37A093627413529A3FC28E813C196F0A2FABA542741FB5FA0755AD813C13106F95B4A73274183DE8A797BC713C14F82B43CB5912741FF1A2E598DB513C107BA9C3DF9AF27410B527A7A91A213C1B90D810214CE27412B9D6858898E13C17706683203EC27416665DD82767913C13233BE77C40928414634899E5A6313C111C2848055272841A6E5C764374C13C157D27FFEB3442841E43C7EA30E3413C1257B64A7DD6128412AE0F53CE21A13C197830635D07E284189BCB727B40013C19BC88565899B2841F2D5646E86E512C10B4D7BFB06B8284104868D2F5BC912C16BF025BE46D42841E42C879D34AC12C1EBC8967946F02841705740FE148E12C1211DDDFE030C2941325E13ABFE6E12C121FA31247D272941A1809710F44E12C1756223C5AF422941578070AEF72D12C1B412BFC2995D2941FDBF1C170C0C12C143D8BC0339782941DEE9C1EF33E911C11077A8748B9229411322F8EF71C511C1EC1A0B088FAC29416DC893E1C8A011C1555194B641C629415DCE6DA03B7B11C17C88427FA1DF294123A52A1ACD5411C15E108B67ACF82941C9C8FF4D802D11C1C99A817B60112A4169EC774C580511C14D37FFCDBB292A4173CC353758DC10C1F5C7C878BC412A41B7ABB54083B210C1E0EBB49C60592A4108800DACDC8710C1B45CD161A6702A4182D3ABCC675C10C108BC87F78B872A417F5F1506283010C1E9CDC1940F9E2A416866A1CB200310C1A01D0D782FB42A414EA36940ABAA0FC1F609BEE7E9C92A413E32F82B944D0FC13F3612323DDF2A413DF3479C03EF0EC1685D52AD27F42A41AAFF21F1008F0EC18884F3B7A7082B410ADB2BA7932D0EC1358AB7B8BB1C2B4123FD5157C3CA0DC13510CD1E62302B41B72730B697660DC1F8BCEE6199432B418093779318010DC177D2810260562B418C0053D94D9A0CC11218B489B4682B4110B6C88B3F320CC10D159989957A2B410B7E1AC8F5C80BC17F99469D018C2B4134A923C4785E0BC15793F068F79C2B41D227B5CDD0F20AC1702D049A75AD2B4146C4EF4906860AC1733642E77ABD2B41378C9CB421180AC18FCDD81006CD2B417275839F2BA909C109537CE015DC2B41A84BC0B12C3909C1989A7F29A9EA2B4177F415A72DC808C1CD5DEBC8BEF82B411D17404F375608C191EC94A555062C418335438D52E307C1141A34B06C132C414644BB56886F07C15A6478E302202C41A1CF28B3E1FA06C1DA541D44172C2C4123BB3CBB678506C17B18FEE0A8372C4144AA2298230F06C18E4D28D3B6422C41FB1FCA821E9805C12106EE3D404D2C41A0632EC3612005C16EFDF64E44572C416D399DAFF6A704C1EFFE503EC2602C41207DFCABE62E04C1DF7D7F4EB9692C412DAD0E293BB503C1EF5B8ACC28722C413875B6A3FD3A03C104DE0B10107A2C417F4639A437C002C1E7CD3D7B6E812C41F10C81BDF24402C1EDC7057B43882C41D70F5D8C38C901C18CB300878E8E2C41ED0CC2B6124D01C10E668D214F942C41EA9C09EB8AD000C17C6ED6D784992C416AF030DFAA5300C1090ADB412F9E2C41D2E82DA0F8ACFFC0464077024EA22C419DDA730112B2FEC07D266BC7E0A52C41942FE972B5B6FDC0A2496149E7A82C4148BD758EF6BAFCC0593EF44B61AB2C418769ACF5E8BEFBC0A656B39D4EAD2C4158454350A0C2FAC0E77C2618AFAE2C416B2D8B4A30C6F9C0C433D19F82AF2C41A30EE793ACC9F8C0E8BA3424C9AF2C414FED42DD28CDF7C04858D19F82AF2C41BCCD8AD7B8D0F6C0EDC52618AFAE2C41CF9C213270D4F5C028C4B39D4EAD2C413837589962D8F4C04ED0F44B61AB2C41FFADE4B4A3DCF3C0FFFF6149E7A82C41F6E6592647E1F2C034016CC7E0A52C41AFB79F8760E6F1C0463F78024EA22C418B996B6903ECF0C03D2DDC412F9E2C41B92A74A386E4EFC0CEB5D7D784992C413B0A927467F2EDC065D18E214F942C411C94251ED001ECC0CB4202878E8E2C41352B9559E712EAC0F57A077B43882C4184C6B3BED325E8C096A43F7B6E812C413983BEC0BB3AE6C036D80D10107A2C411C115DABC551E4C07C798CCC28722C412835A59F176BE2C09DBE814EB9692C41009E2191D786E0C0B062533EC2602C41078BB885564ADDC00384F94E44572C415C35D988708CD9C058AFF03D404D2C41FF5C13DE47D4D5C031192BD3B6422C41C93C41C52622D2C0540601E1A8372C4123D9BD0BAEECCCC0AC642044172C2C41681093D243A2C5C0EA957BE302202C413EB120D440CBBCC0216D37B06C132C411BD7F92851DDACC0D96098A555062C4127FFB1DCCCEE47C00BF3EEC8BEF82B41B64F337707E0AB4085508329A9EA2B417C4F0774E1EFBB405A2980E015DC2B41506F990B52E7C440F8C3DC1006CD2B411C6FD1609BC5CB40A54C46E77ABD2B410A2596CE2149D1401A63089A75AD2B41B2920C8261A6D44024E8F468F79C2B414CADC5A149FAD740170D4B9D018C2B4172F239BF9744DB401AA79D89957A2B4139DC8E2B0A85DE4037C8B889B4682B413A0D5BFEAFDDE04058A0860260562B41A3B93E89AC73E24033A8F36199432B410773C70D5B04E4406918D21E62302B415C56304D9C8FE540FEAEBCB8BB1C2B41885C0A755115E7407FC5F8B7A7082B414AA6A3215C95E84024BA57AD27F42A41872566609E0FEA4053AE17323DDF2A418F742DB2FA83EB40F79CC3E7E9C92A41D6AC930D54F2EC401DCB12782FB42A41220F35E18D5AEE407195C7940F9E2A41FF4FEA158CBCEF40299D8DF78B872A4107AE7C88198CF040F756D761A6702A412F341EDBB336F140CFFEBA9C60592A41F1911FB507DEF14015F3CE78BC412A41F0EF280A0882F240247A05CEBB292A41E2424910A822F340DAF4877B60112A41F298F540DBBFF3402A819167ACF82941A425035A9559F440820F497FA1DF2941C0F89B5ECAEFF44013EE9AB641C62941314D2E986E82F540DECC11088FAC2941255D56977611F640B13DAF748B92294141A9C234D79CF6400BB3C3033978294111A112928524F7401A01C6C2995D2941579BAF1A77A8F740EF632AC5AF422941540DA084A128F840220E39247D27294193F054D1FAA4F8401D43E4FE030C29412347714E791DF94053009E7946F02841C8AE8B961392F940AF382DBE46D42841F4F3E991C002FA409AA582FB06B8284100963677776FFA40E2308D65899B28415D2E30CC2FD8FA4001FB0D35D07E284133AD5266E13CFB401E016CA7DD612841215E7A6B849DFB40496687FEB344284173A8805211FAFB4064638C8055272841987ED2E38052FC404EE1C577C40928410E71003ACCA6FC40C3C06F3203EC27419C5948C2ECF6FC409AD3880214CE27410C94183DDC42FD40E28AA43DF9AF274136BA8CBE948AFD40895DBC3CB59127419BD9E3AE10CEFD402CEB005C4A7327415819F0CA4A0DFE40B5DEAAFABA542741C1C77F243E48FE407294CB7A0936274170C7BF22E67EFE405F871D41381727411A5497823EB1FE404F89D4B449F826410318FD5643DFFE40B1C96D3F40D926416F8B4509F108FF40B1AE7F4C1EBA2641F6976A59442EFF4077848949E69A26411D7A4C5E3A4FFF404206C3A59A7B26412FDCEB85D06BFF402CC5EBD13D5C2641C2259D950484FF4060701A40D23C2641F9FB34AAD497FF4090028C635A1D2641F4EE2D383FA7FF4077D872B0D8FD25419651C70B43B2FF4035B4C59B4FDE254124391D49DFB8FF4060B10E9BC1BE2541ECA2396C13BBFF40E8BA3424319F2541 + + + 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED935770A41535871C71BFB2441A247FE423D360841CDF36716539B2441ECC1420680470741BD3D4C94710F23414D024D7D04380A41FEC5364D1A022241407DA7BAAF811D41DD0784C658ED184192B08CF1A618184108E3295E56ED104121896F9066610541F13A975D57FE1941096E8D134BEBFB406847DAE3D9661741AABE21A245A00B41845A019F2304FF40E48112BC1AF0F84080891F1A39C7F140DD811CEEB3B3EF40AE82AE28194B0341AB6F85D09F3409C1B06BA7169F6201413731C25DB7A40AC123BABA3D2F2E1541 + + + + + 1 + + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html + +POLYGON((742605.987032656 5087763.72510381,742599.903121688 +5087760.56016809,742598.666141033 +5087762.50894352,742591.100910753 +5087758.50480931,742586.861672536 +5087766.63211263,742591.417801844 +5087769.04526206,742592.428792606 +5087767.35034731,742601.541294342 +5087772.18101105,742605.987032656 5087763.72510381)) + + +POLYGON((742601.541294537 5087772.18101068,742592.428792606 +5087767.35034731,742589.944404072 +5087771.51539701,742583.880455986 5087782.54873438,742582.81550675 +5087784.27809355,742583.216887765 5087784.43459684,742582.99081514 +5087785.0349637,742592.341351823 5087789.67654,742593.375823205 +5087787.7060691,742599.28794443 5087776.4640487,742601.541294537 +5087772.18101068)) + + + + + 1 + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html + + +POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402.9999981909058988, 612145.0000000037252903 2365470.9999981913715601, 612061.0000000037252903 2365967.9999981918372214, 611724.0000000036088750 2366168.9999981927685440, 611334.0000000034924597 2366316.9999981927685440, 610743.0000000033760443 2366221.9999981932342052, 610174.0000000031432137 2366305.9999981927685440, 609973.0000000031432137 2367066.9999981955625117, 609073.0000000027939677 2367938.9999981974251568, 609061.0000000027939677 2368332.9999981974251568, 609151.0000000027939677 2368684.9999981992878020, 608919.0000000027939677 2368811.9999982002191246, 608801.0000000026775524 2369192.9999982002191246, 609161.0000000027939677 2369096.9999982006847858, 609161.0000000027939677 2369509.9999982025474310, 609857.0000000030267984 2369498.9999982011504471, 609762.0000000030267984 2369689.9999982020817697, 610796.0000000033760443 2369794.9999982025474310, 611332.0000000034924597 2370097.9999982025474310, 613149.0000000040745363 2370460.9999982034787536, 613613.0000000041909516 2369720.9999982016161084, 613697.0000000041909516 2369267.9999981997534633)) + + + +POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124.9999982002191246, 607980.0000000019790605 2367585.9999982002191246, 607295.0000000019790605 2367062.9999981899745762, 606251.0000000019790605 2366697.9999981899745762, 605456.0000000019790605 2367679.9999982002191246, 605108.0000000019790605 2368377.9999982002191246, 604906.0000000019790605 2369083.9999982002191246, 604191.0000000010477379 2369719.9999982002191246, 604107.0000000010477379 2370057.9999982002191246, 604264.0000000010477379 2370397.9999982002191246, 604141.0000000010477379 2370768.9999982002191246, 604561.0000000010477379 2370448.9999982002191246, 604940.0000000019790605 2370406.9999982002191246, 605460.0000000019790605 2370792.9999982002191246, 605942.0000000019790605 2370945.9999982099980116, 606364.0000000019790605 2370892.9999982002191246, 606881.0000000019790605 2370988.9999982002191246, 607216.0000000019790605 2370623.9999982002191246)) + + + + +1 + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2) + + + 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7BDB1A41D7FFFFFF8BB13E41FCFFFFFF4BDD1A41D6FFFFFF83B03E41FBFFFFFFB7D91A41D0FFFFFFADAE3E41FBFFFFFF07D81A41D6FFFFFFF4AD3E41FCFFFFFFBBD61A41D6FFFFFF45AB3E41FCFFFFFF67D61A41DBFFFFFFB3A93E41FCFFFFFF63D91A41D6FFFFFF92A83E41FBFFFFFF03C31A41D2FFFFFF75A93E41FBFFFFFF13BE1A41D7FFFFFFB7A83E41FBFFFFFF0FBF1A41D2FFFFFF84A73E41FBFFFFFFD7B41A41D5FFFFFF77A83E41FBFFFFFFAF871A41D6FFFFFFACA83E41FAFFFFFFDF811A41CEFFFFFF79AA3E41FBFFFFFFDF8B1A41D1FFFFFF9AAE3E41FAFFFFFF3B971A41D0FFFFFF76B03E41FBFFFFFF3B891A41D3FFFFFF4FB33E41FCFFFFFFE7871A41D3FFFFFF2EB43E41FBFFFFFFE7881A41D2FFFFFF16B53E41FCFFFFFFC3861A41D8FFFFFF9BB53E41FBFFFFFF27851A41D8FFFFFF67B73E41FBFFFFFFBB8C1A41D4FFFFFFA6B73E41FBFFFFFF03911A41D4FFFFFF38B93E41FBFFFFFF879E1A41D3FFFFFF11BC3E41FBFFFFFF37A91A41D4FFFFFF3EBB3E41FBFFFFFF0BA91A41D2FFFFFF46BC3E41FCFFFFFFC3B31A41D5FFFFFFFABC3E41FBFFFFFFF3B11A41D4FFFFFFDFC33E41FBFFFFFF0BB81A41D3FFFFFF12C63E41 + + + + 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E4100000000788B1A41D5FFFFFFF5C83E4100000000C48E1A41D5FFFFFF17C83E4100000000B8921A41D5FFFFFFCDC73E41000000001C9D1A41D5FFFFFFE2C73E410000000008A31A41D5FFFFFFCBC83E4100000000ECAC1A41D5FFFFFF41C83E41000000005CB21A41D5FFFFFF31C63E41000000000CB81A41D5FFFFFF12C63E4100000000F4B11A41D5FFFFFFDFC33E4100000000C4B31A41D5FFFFFFFABC3E41000000000CA91A41D5FFFFFF46BC3E410000000038A91A41D5FFFFFF3EBB3E4100000000889E1A41D5FFFFFF11BC3E410000000004911A41D5FFFFFF38B93E4100000000BC8C1A41D5FFFFFFA6B73E410000000028851A41D5FFFFFF67B73E4100000000C4861A41D5FFFFFF9BB53E4100000000F0791A41D5FFFFFFD5B53E410000000038701A41D5FFFFFFDDB63E4100000000D0681A41D5FFFFFF84B83E4100000000D0581A41D5FFFFFF9CB73E410000000028581A41D5FFFFFF23B93E4100000000445E1A41D5FFFFFFB5BA3E4100000000245B1A41D5FFFFFF3CBC3E410000000080591A41D5FFFFFF99BD3E4100000000F8501A41D5FFFFFFBABE3E410000000018511A41D5FFFFFF75BF3E4100000000A84B1A41D5FFFFFF31C13E41000000004C4D1A41D5FFFFFFCCC73E4100000000244F1A41D5FFFFFF50CB3E41000000006C441A41D5FFFFFF8DCC3E4100000000BC451A41D5FFFFFF14CE3E4100000000D84B1A41D5FFFFFFFBCF3E4100000000B4571A41D5FFFFFFD6D13E4100000000B0581A41D5FFFFFF09D33E410000000028561A41D5FFFFFF5AD43E4100000000F45E1A41D5FFFFFF59D53E4100000000506B1A41D5FFFFFFB4D73E410000000044701A41D5FFFFFF5FD73E410000000038731A41D5FFFFFF74D73E4100000000E4721A41D5FFFFFFB4D73E41000000009C801A41D5FFFFFF33D83E41 + + + + +1 + + + + + + + +postgis-users/2006-November/014013.html + + +MULTIPOLYGON(((-112.237615 33.491154,-112.237614 33.490469,-112.237752 +33.490529,-112.23774 33.494274,-112.235109 33.494339,-112.235109 +33.494222,-112.233468 33.494258,-112.233631 33.491873,-112.236704 +33.491169,-112.237615 33.491154)),((-112.237137 33.506662,-112.237111 +33.505964,-112.236836 33.505292,-112.235281 33.503124,-112.23644 +33.502654,-112.237714 33.502702,-112.237695 33.50665,-112.237137 +33.506662)),((-112.236804 33.501624,-112.236731 33.501185,-112.234285 +33.501218,-112.234295 33.499851,-112.237725 33.499804,-112.237714 +33.501536,-112.236804 33.501624))) + + + +POLYGON((-112.235266 33.502267,-112.234309 33.502505,-112.234451 +33.501985,-112.234479 33.501868,-112.234509 33.501141,-112.236709 +33.501141,-112.236909 33.501541,-112.235687 33.502032,-112.235266 +33.502267)) + + + + +0.001 + + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/safe-16595.xml geos-3.8.0/tests/xmltester/tests/misc/safe-16595.xml --- geos-3.7.1/tests/xmltester/tests/misc/safe-16595.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/safe-16595.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,273 @@ + + +SAFE test 16595 line 1 + +LINESTRING(608919.148 232497.434 2047.83996582031,608912.759 232499.018 2054.42238984432,608908.967 232499.509 2058.24604268589,608904.178 232499.499 2063.0350492044,608899.288 232499.689 2067.92873501108,608892.205 232498.975 2075.0476255139,608886.918 232498.165 2080.39630966434,608882.13 232497.355 2085.25233740058,608877.841 232496.348 2089.65796314595,608873.953 232494.342 2094.03295442012,608870.963 232492.538 2097.52501627898,608868.671 232490.736 2100.44057009889,608865.882 232487.934 2104.39401156164,608864.088 232486.432 2106.73376176908,608861.298 232484.129 2110.35148032683,608856.515 232480.324 2116.46335833722,608851.432 232476.818 2122.63821562682,608844.353 232473.707 2130.37064500361,608838.072 232470.398 2137.46996605894,608832.189 232467.589 2143.98917616351,608826.604 232466.279 2149.72574927799,608815.232 232464.557 2161.22737748111,608809.944 232464.746 2166.51874962256,608804.854 232465.534 2171.66938070493,608799.763 232466.822 2176.9207785979,608795.171 232468.01 2181.66396014097,608789.88 232469.497 2187.15994053798,608783.791 232471.082 2193.45184654153,608776.705 232472.565 2200.69136304159,608771.415 232473.553 2206.0728309235,608765.827 232473.841 2211.66824303684,608761.536 232474.031 2215.96344393816,608756.147 232474.519 2221.37448977438,608751.159 232474.309 2226.36690433807,608746.57 232473.8 2230.98404274652,608739.986 232472.488 2237.69748643633,608734.9 232471.179 2242.94923203415,608728.317 232469.667 2249.70363491477,608718.443 232467.349 2259.84606221341,608713.656 232465.841 2264.86496565354,608709.567 232464.534 2269.15776658243,608698.698 232460.516 2280.74565962041,608692.815 232458.007 2287.14133808331,608686.734 232454.699 2294.06386265939,608679.954 232451.289 2301.65309224221,608673.872 232448.579 2308.31152684674,608666.994 232444.67 2316.22272539603,608662.209 232441.664 2321.87358450737,608655.829 232438.554 2328.97121914761,608650.545 232436.047 2334.81977871156,608645.26 232433.738 2340.58715693029,608638.38 232430.928 2348.01887338989,608632.796 232428.619 2354.06142890847,608626.016 232425.608 2361.47994836029,608620.932 232422.801 2367.28737892445,608614.351 232419.791 2374.5240615361,608608.768 232416.983 2380.7734366273,608602.987 232413.675 2387.43397356792,608597.903 232410.369 2393.49834754724,608589.032 232404.957 2403.88989257812) + + + +LINESTRING (608916.741593641 232487.72785718,608910.907705488 232489.174230452,608908.332673382 232489.50765365,608904.19888114 232489.499021801,608903.789744906 232489.506539943,608899.596850546 232489.669454039,608893.464514039 232489.051285429,608888.50930563 232488.292117884,608884.108834654 232487.547677305,608881.328810042 232486.894964602,608878.833975851 232485.607763628,608876.657972004 232484.294883715,608875.329586331 232483.250489744,608872.969490056 232480.879392661,608872.301483435 232480.266521117,608870.507483435 232478.764521117,608870.453885232 232478.719963614,608867.663885232 232476.416963614,608867.523577273 232476.30326121,608862.740577273 232472.49826121,608862.192859365 232472.09223755,608857.109859365 232468.58623755,608855.455311822 232467.663058057,608848.700607031 232464.6945757,608842.733005277 232461.550682338,608842.38080069 232461.373907989,608836.49780069 232458.564907989,608834.472591442 232457.853230378,608828.887591442 232456.543230378,608828.101178103 232456.391712317,608816.729178103 232454.669712317,608814.874815058 232454.56338109,608809.586815058 232454.75238109,608808.414091641 232454.863723925,608803.324091641 232455.651723925,608802.401321739 232455.839446408,608797.310321739 232457.127446408,608797.258354086 232457.140742393,608792.666354086 232458.328742393,608792.46538849 232458.382972091,608787.267396709 232459.843832756,608781.505872447 232461.343589031,608774.76256878 232462.754867515,608770.234457652 232463.600571446,608765.348463333 232463.852390766,608761.093646199 232464.040788635,608760.63414181 232464.07175044,608755.905332502 232464.499966981,608751.9214168 232464.332239977,608748.101194266 232463.908510783,608742.211089554 232462.734783963,608737.392502547 232461.494608896,608737.138538015 232461.43277265,608730.579005672 232459.926162761,608721.091725587 232457.698948335,608716.680647131 232456.309371082,608712.824647895 232455.076846992,608702.395405539 232451.221414498,608697.175628941 232448.995268062,608691.512599562 232445.91463968,608691.227206023 232445.765294183,608684.447206023 232442.355294183,608684.024022372 232442.154728388,608678.388313356 232439.643585436,608672.126811684 232436.084962284,608667.528540762 232433.196267949,608666.590737876 232432.67509722,608660.210737876 232429.56509722,608660.115522039 232429.519304166,608654.831522039 232427.012304166,608654.548548964 232426.883398323,608649.263548963 232424.574398323,608649.041088412 232424.480388514,608642.181175994 232421.67859289,608636.736650905 232419.427266165,608630.470442473 232416.644441152,608625.765458911 232414.046705342,608625.09136099 232413.707061571,608618.678787281 232410.774095933,608613.501319749 232408.170060677,608608.200242013 232405.136681478,608603.354506295 232401.985618873,608603.111075942 232401.832259113,608594.240075942 232396.420259112) + + + + +LINESTRING (608583.823924058 232413.493740887,608592.572105684 232418.830812126,608597.535493705 232422.058381127,608598.020437514 232422.354473317,608603.801437514 232425.662473317,608604.274754421 232425.916685923,608609.85775442 232428.724685923,608610.19163901 232428.884938429,608616.429176161 232431.737846319,608621.182541089 232434.362294658,608621.957241977 232434.747282429,608628.737241977 232437.758282429,608628.974772207 232437.860115634,608634.558772207 232440.169115634,608634.598911588 232440.185611486,608641.367113667 232442.949949835,608646.398962292 232445.14834879,608651.494749083 232447.566050812,608657.344361551 232450.417507673,608661.674459238 232453.137732051,608662.052906973 232453.363997912,608668.930906973 232457.272997912,608669.801977628 232457.713271612,608675.670037001 232460.327944565,608682.096894417 232463.560331555,608688.036400438 232466.79136032,608688.892041772 232467.205391095,608694.775041772 232469.714391095,608695.230590786 232469.895609445,608706.099590786 232473.913609445,608706.522370279 232474.059241722,608710.611370279 232475.366241722,608710.651362069 232475.378932213,608715.438362069 232476.886932213,608716.157552904 232477.084334179,608726.031552904 232479.402334179,608726.078461985 232479.41322735,608732.534075608 232480.895968926,608737.493497453 232482.172391104,608738.031713964 232482.295179314,608744.615713964 232483.607179314,608745.467586474 232483.739048466,608750.056586474 232484.248048466,608750.7383622 232484.300149275,608755.7263622 232484.510149275,608757.04885819 232484.47824956,608762.208462574 232484.011022442,608766.269353801 232483.831211365,608766.341706975 232483.827745052,608771.929706975 232483.539745052,608773.250928807 232483.383023673,608778.540928807 232482.395023673,608778.753477665 232482.352938458,608785.839477665 232480.869938458,608786.310107407 232480.759504734,608792.399107407 232479.174504734,608792.58561151 232479.124027909,608797.77641093 232477.665188609,608802.241679923 232476.509975289,608806.849717536 232475.344162591,608810.890831392 232474.718544179,608814.657044473 232474.583934823,608824.710579109 232476.106286797,608828.854389576 232477.078245921,608833.585355109 232479.33717541,608839.691994723 232482.554317662,608840.329688178 232482.861941943,608846.537488763 232485.590076937,608850.556356992 232488.362091891,608855.001755373 232491.898521085,608857.695238025 232494.121851031,608859.114608899 232495.310198329,608861.583509944 232497.790607339,608862.490361138 232498.59727873,608864.782361138 232500.39927873,608865.797001815 232501.100269719,608868.787001815 232502.904269719,608869.367851753 232503.228867589,608873.255851753 232505.234867589,608875.555287973 232506.08327198,608879.844287973 232507.09027198,608880.461971355 232507.214902659,608885.249971355 232508.024902659,608885.403610079 232508.049666063,608890.690610079 232508.859666063,608891.202035542 232508.924575986,608898.285035542 232509.638575986,608899.676255094 232509.681460057,608904.361763905 232509.499405522,608908.946118859 232509.508978199,608910.251111341 232509.426210196,608914.043111341 232508.935210196,608915.165406359 232508.72414282,608921.554406359 232507.14014282) + + + +SAFE test 16595 line 2 + +LINESTRING(609188.538 232627.432 1717.13000488281,609187.04 232627.928 1718.70807521457,609183.948 232627.123 1721.90333129484,609179.361 232625.415 1726.79828629907,609175.872 232623.61 1730.7267616047,609171.288 232620.305 1736.37828783883,609167.5 232617.7 1740.97583025788,609165.21 232614.7 1744.75018263909,609161.923 232611.597 1749.27072737107,609158.933 232609.293 1753.04566477512,609154.846 232606.588 1757.94702710631,609150.559 232604.482 1762.72366034349,609146.771 232602.477 1767.00980997084,609143.682 232599.874 1771.0495381826,609139.895 232596.869 1775.88421274695,609136.106 232595.563 1779.89220497454,609133.113 232595.557 1782.88538285307,609129.523 232594.351 1786.67275439575,609125.236 232592.045 1791.54088816792,609122.446 232589.742 1795.15881742541,609119.16 232585.64 1800.41499213391,609115.573 232582.137 1805.42901895725,609111.587 232579.033 1810.48133953794,609108.796 232577.529 1813.65196272768,609105.704 232576.524 1816.90337826442,609103.511 232575.221 1819.45441831082,609102.017 232573.72 1821.5723305127,609102.022 232570.924 1824.36849553563,609102.225 232568.627 1826.67458067964,609103.029 232564.834 1830.55207878163,609103.534 232561.04 1834.37975999249,609102.544 232556.244 1839.27715422177,609101.253 232552.646 1843.09997558594) + + + +LINESTRING (609186.9602967 232617.573896739,609183.418039307 232616.254913607,609181.122024306 232615.067092719,609177.136313611 232612.193450955,609176.954395972 232612.065342441,609174.480871301 232610.364304487,609173.158839862 232608.632385572,609172.074611158 232607.428334877,609168.787611158 232604.325334877,609168.026762934 232603.67588404,609165.036762934 232601.37188404,609164.452190674 232600.954023186,609160.365190674 232598.249023186,609159.255216338 232597.612543951,609155.103706964 232595.573104077,609152.395799275 232594.139800244,609150.125872788 232592.227006899,609149.897873505 232592.040551426,609146.110873505 232589.035551426,609143.153676462 232587.414846007,609139.364676462 232586.108846007,609136.126046736 232585.563020094,609134.75753066 232585.56027666,609133.512383768 232585.141990545,609130.841510087 232583.70531345,609129.606454841 232582.685839532,609126.964602725 232579.387946233,609126.146801772 232578.485658591,609122.559801772 232574.982658591,609121.717064274 232574.24710303,609117.731064274 232571.14310303,609116.330819346 232570.229808646,609113.539819346 232568.725808646,609112.518831632 232568.289004015,609112.811642575 232566.907621047,609112.941575395 232566.153412381,609113.446575395 232562.359412381,609113.327525233 232559.018400755,609112.337525233 232554.222400755,609111.956437207 232552.866719168,609110.665437207 232549.268719168) + + + + +LINESTRING (609091.840562793 232556.023280832,609092.893172374 232558.956889874,609093.397728796 232561.401185433,609093.166950182 232563.134995462,609092.442357425 232566.553378953,609092.263824436 232567.746669726,609092.060824436 232570.043669726,609092.02201599 232570.906117339,609092.01701599 232573.702117339,609092.770330549 232577.52776891,609094.929424844 232580.774521841,609096.423424844 232582.275521841,609098.402986025 232583.817987451,609100.595986024 232585.120987451,609102.612861086 232586.034250271,609104.846616915 232586.760293158,609106.104753839 232587.438271637,609108.986965062 232589.682723126,609111.736777614 232592.368140848,609114.641397275 232595.994053767,609116.080114768 232597.454036386,609118.870114768 232599.757036386,609120.498799826 232600.85175505,609124.785799826 232603.15775505,609126.338550739 232603.830413637,609129.928550739 232605.036413637,609133.092953264 232605.556979906,609134.421205178 232605.559642623,609135.019107031 232605.765728614,609137.350753774 232607.615899849,609140.327127212 232610.123993101,609142.09287323 232611.315276411,609145.88087323 232613.320276411,609146.149783662 232613.457456049,609149.861395144 232615.28079493,609153.114011866 232617.433554468,609155.422550839 232619.212442024,609157.754341326 232621.41370332,609159.551160138 232623.767614428,609161.833604028 232625.939657559,609165.529932565 232628.481615278,609170.023686389 232631.721549045,609171.27707829 232632.491818197,609174.76607829 232634.296818197,609175.871492792 232634.78641075,609180.458492792 232636.49441075,609181.428495445 232636.800401345,609184.520495445 232637.605401345,609190.183259659 232637.421151148,609191.681259659 232636.925151148) + + + +SAFE test 16595 line 3 + +LINESTRING(609093.181 232546.537 1853.38000488281,609091.088 232545.234 1855.84536607578,609088.795 232544.231 1858.34804304639,609086.102 232543.027 1861.29782569125,609083.81 232541.723 1863.93471072891,609078.925 232539.117 1869.47115187422,609074.936 232537.41 1873.8098808932,609072.644 232535.808 1876.60614380643,609069.853 232534.104 1879.87608287387,609067.359 232534.099 1882.36999511719) + + + +LINESTRING (609098.466033027 232538.047687548,609096.373033027 232536.744687548,609095.095559519 232536.072151568,609092.839598283 232535.085352998,609090.62587224 232534.095629212,609088.755044918 232533.03124927,609088.516819773 232532.89997061,609083.631819773 232530.29397061,609082.85918556 232529.923405274,609079.818982583 232528.622420947,609078.372861916 232527.611650742,609077.854912441 232527.272990244,609075.063912441 232525.568990244,609069.873048075 232524.104020096,609067.379048075 232524.099020096) + + + + +LINESTRING (609067.168870898 232544.181696538,609069.207138084 232545.606349258,609071.00181444 232546.603594726,609074.596551576 232548.14187908,609078.983174869 232550.482010155,609081.156955082 232551.71875073,609082.020495157 232552.156146631,609084.713495157 232553.360146631,609084.787440481 232553.392848432,609086.417366889 232554.105807956,609087.895966973 232555.026312452) + + + +SAFE test 16595 line 4 + +LINESTRING(609067.359 232534.099 1882.36999511719,609064.765 232533.594 1885.01256394715,609061.969 232535.086 1888.18158371422,609058.175 232536.876 1892.37643708604,609053.382 232538.863 1897.56472721392,609048.293 232539.052 1902.65698370207,609042.207 232539.039 1908.74269650551,609034.824 232538.524 1916.14327044958,609030.335 232537.516 1920.74382375671,609026.545 232536.509 1924.66512806707,609021.659 232534.701 1929.87465535857,609017.871 232532.696 1934.1603468529,609014.381 232531.191 1937.96083311229,609009.794 232529.383 1942.89104891279,609006.203 232529.076 1946.49496966992,609002.214 232527.57 1950.75857826658,609000.72 232526.268 1952.74020674876,608998.429 232523.767 1956.13174678721,608996.141 232519.168 1961.26819832597,608994.054 232514.37 1966.50018307343,608988.587 232509.148 1974.06005859375) + + + +LINESTRING (609069.269924747 232524.283279618,609066.675924747 232523.778279618,609063.280976628 232523.704729318,609060.057152467 232524.771518966,609057.478881915 232526.147334296,609054.124427721 232527.72995765,609051.213708413 232528.9366339,609048.118046122 232529.051603476,609042.56601786 232529.039744067,609036.275680762 232528.600962595,609032.715310609 232527.801485403,609029.570925419 232526.966024747,609025.75116778 232525.552573701,609022.54912677 232523.857723589,609021.830823674 232523.513418856,609018.340823674 232522.008418856,609018.048000857 232521.887607892,609013.461000857 232520.079607892,609010.645807887 232519.419344881,609008.437115 232519.230520399,609007.516432283 232518.882927476,609006.754607938 232518.051272003,609005.20861367 232514.943742441,609003.224062357 232510.381271334,609000.961179422 232507.1387572,608995.494179422 232501.9167572) + + + + +LINESTRING (608981.679820578 232516.3792428,608985.688398337 232520.20817879,608986.970937643 232523.156728666,608987.187790866 232523.622216677,608989.475790866 232528.221216677,608991.055133718 232530.521709177,608993.346133718 232533.022709177,608994.149971357 232533.806880794,608995.643971357 232535.108880794,608998.681955577 232536.925461624,609002.670955576 232538.431461624,609005.351192113 232539.039655119,609007.486358663 232539.222193724,609010.566630895 232540.436305822,609013.545162864 232541.720744393,609016.98087323 232543.539276411,609018.188607284 232544.079505979,609023.074607284 232545.887505979,609023.977103956 232546.173673295,609027.767103955 232547.180673295,609028.144067592 232547.273039263,609032.633067593 232548.281039263,609034.128142454 232548.499759734,609041.511142454 232549.014759734,609042.185639549 232549.038977187,609048.271639549 232549.051977187,609048.664133407 232549.045110627,609053.753133407 232548.856110627,609057.211588655 232548.100653963,609062.004588655 232546.113653963,609062.441922556 232545.919968814,609066.235922556 232544.129968814,609066.676847533 232543.908481034) + + + +SAFE test 16595 line 5 + +LINESTRING(610697.427 232662.077 82.0999984741211,610693.636 232661.769 85.9034983533511,610690.143 232662.261 89.4309861355961,610685.752 232662.551 93.8315622106401,610682.262 232661.246 97.5575773282136,610680.267 232660.742 99.6152605919326,610676.179 232659.236 103.971849512795,610672.59 232657.231 108.082934952672,610669.6 232655.626 111.476484392912,610665.511 232654.419 115.739916501307,610662.221 232652.615 119.492059962401,610657.137 232649.508 125.450303644566,610652.353 232646.502 131.1003335888,610649.063 232644.498 134.952629533395,610646.275 232640.896 139.50756566134,610643.487 232637.795 143.677604597904,610638.403 232634.788 149.584318148741,610635.409 232635.081 152.592627723176,610630.619 232635.271 157.386405499466,610628.321 232637.064 160.301142529422,610625.524 232639.055 163.734412697461,610623.226 232641.147 166.842034341098,610619.131 232643.635 171.633618032477,610615.637 232644.926 175.358504690936,610611.844 232645.418 179.183289662098,610606.755 232645.906 184.295645756759,610604.164 232644.103 187.452247677664,610599.875 232642.796 191.935980740536,610597.384 232640.793 195.132406376658,610591.801 232637.985 201.381800913136,610588.809 232637.18 204.480209055688,610585.216 232637.971 208.159256766947,610582.718 232639.764 211.234138285351,610578.126 232641.252 216.061219684784,610573.036 232642.24 221.246233404112,610567.747 232642.528 226.543080923488,610562.359 232642.517 231.931104504507,610556.271 232643.503 238.098447076676,610549.983 232644.987 244.559204879729,610544.392 232646.773 250.428551943498,610539.1 232649.059 256.193203916539,610532.512 232651.043 263.073481313022,610526.921 232652.828 268.942524159912,610520.534 232653.814 275.405198258445,610516.542 232654.105 279.407799719691,610511.654 232653.795 284.305631279915,610506.666 232652.786 289.394672815204,610500.281 232652.473 295.787354676403,610496.489 232652.964 299.611019415482,610490.101 232654.249 306.126996984121,610483.313 232656.232 313.198733850089,610477.223 232658.016 319.544672759963,610470.836 232659.002 326.007346858496,610465.846 232659.49 331.021163694299,610455.666 232661.067 341.322610950687,610452.076 232659.761 345.14279457383,610447.588 232658.953 349.702959411719,610442 232658.941 355.290985107422) + + + +LINESTRING (610698.236782348 232652.1098413,610694.445782348 232651.8018413,610692.241236479 232651.866745978,610689.114708683 232652.307127219,610687.239491508 232652.430974402,610685.764409278 232651.87940354,610684.711362175 232651.550608057,610683.228336126 232651.175948844,610680.371571622 232650.123530218,610677.467068662 232648.500925472,610677.319572113 232648.420146033,610674.329572113 232646.815146033,610672.43105896 232646.035113432,610669.374778925 232645.132953979,610667.235051967 232643.959681203,610662.404690575 232641.007688118,610657.673337983 232638.034768826,610657.555104468 232637.961618913,610655.841283449 232636.917698755,610654.182922651 232634.775153706,610653.711398452 232634.21019578,610650.923398452 232631.10919578,610648.577829051 232629.187825111,610643.493829051 232626.180825111,610640.568542672 232625.02529418,610637.429028856 232624.835544011,610634.723265729 232625.100336461,610630.222651975 232625.278857675,610627.17958304 232625.881089938,610624.467487558 232627.386908761,610622.342782336 232629.044696603,610619.724850888 232630.9082295,610618.792148327 232631.660260447,610617.208249154 232633.102173881,610614.761673608 232634.588640293,610613.230570686 232635.154368362,610610.723236588 232635.479601258,610609.30135993 232635.615949423,610607.078988422 232634.537288186,610604.636804622 232633.793074098,610603.650388836 232632.999902351,610601.877245579 232631.859314078,610596.29424558 232629.051314077,610594.399114285 232628.328406286,610591.407114285 232627.523406286,610586.658982182 232627.413863436,610583.065982182 232628.204863436,610579.384867646 232629.847091121,610578.152887828 232630.731374473,610575.62269551 232631.551262576,610571.805600089 232632.292184045,610567.485138921 232632.527444551,610562.379415696 232632.51702084,610560.760252648 232632.645626899,610554.672252648 232633.631626899,610553.974050559 232633.77037326,610547.686050559 232635.25437326,610546.940065113 232635.461216711,610541.349065113 232637.247216711,610540.42644362 232637.592893105,610535.664019734 232639.650130634,610529.628388724 232641.467782718,610529.470611244 232641.51672295,610524.623535964 232643.064215237,610519.405819519 232643.869705829,610516.494734339 232644.081911688,610512.967904379 232643.858237938,610508.648696164 232642.984524809,610507.155623486 232642.79799375,610500.770623486 232642.48499375,610498.996888659 232642.555789804,610495.204888659 232643.046789804,610494.516919936 232643.160383309,610488.128919936 232644.445383309,610487.296873399 232644.650204554,610480.508873399 232646.633204554,610475.045085022 232648.233759722,610469.585530831 232649.076584277,610464.872687383 232649.537479588,610464.31514363 232649.607870737,610456.672128903 232650.791862311,610455.494691673 232650.363524422,610453.847869836 232649.91922794,610449.359869836 232649.11122794,610447.609474539 232648.953023058,610442.021474539 232648.941023058) + + + + +LINESTRING (610441.978525461 232668.940976942,610446.68434957 232668.951082506,610449.461704023 232669.451105322,610452.247308327 232670.464475578,610457.19685637 232670.949129263,610467.099073827 232669.415160999,610471.809312617 232668.954520412,610472.361687735 232668.884928561,610478.748687735 232667.898928561,610480.034253174 232667.612710665,610486.120690298 232665.829754371,610492.493495075 232663.968046671,610498.11907708 232662.836413472,610500.681398212 232662.504636131,610505.422803497 232662.737065239,610509.671303836 232663.596475191,610511.02106539 232663.774949588,610515.90906539 232664.084949588,610517.269028833 232664.078536438,610521.261028833 232663.787536438,610522.059687735 232663.696928561,610528.446687735 232662.710928561,610529.962388756 232662.35427705,610535.47470214 232660.594398783,610541.983611276 232658.634217282,610543.06555638 232658.239106895,610547.904770448 232656.148698097,610552.656948263 232654.6306531,610558.221319142 232653.317433255,610563.153405385 232652.518642677,610567.726584304 232652.52797916,610568.290720882 232652.513207439,610573.579720882 232652.225207439,610574.941495951 232652.056775702,610580.031495952 232651.068775702,610581.208615121 232650.765016557,610585.800615121 232649.277016557,610588.549132354 232647.887908879,610588.831639811 232647.685132309,610591.943728061 232649.250373901,610593.608611164 232650.589097649,610596.960011578 232652.361711814,610599.743773599 232653.210016071,610601.043148526 232654.114212518,610604.221186316 232655.579664674,610607.709552284 232655.860337242,610612.798552284 232655.372337242,610613.130349773 232655.3349201,610616.923349773 232654.8429201,610619.102885215 232654.306172689,610622.596885215 232653.015172689,610624.323449646 232652.181254541,610628.418449646 232649.693254541,610629.957851673 232648.541739553,610631.812066449 232646.853742463,610634.120149112 232645.2107705,610634.220435135 232645.136009433,610635.805348025 232645.073142325,610636.113366419 232645.051979527,610637.076040587 232645.621366078,610638.592438941 232647.30800571,610641.155077349 232650.618846294,610643.860895532 232653.038381087,610647.091524512 232655.006217097,610651.816662017 232657.975231174,610651.922364129 232658.040735361,610657.006364129 232661.147735361,610657.413070467 232661.383341554,610660.703070467 232663.187341554,610662.67994104 232664.009886568,610665.779446364 232664.924805357,610667.786339985 232666.002084374,610671.301931338 232667.966074528,610672.722159155 232668.619509545,610676.810159155 232670.125509545,610677.817637825 232670.437391943,610679.2770324 232670.806081099,610682.249590722 232671.91759646,610686.411006139 232672.529261918,610690.802006139 232672.239261918,610691.537763521 232672.163254022,610693.93209123 232671.826005459,610696.617217652 232672.0441587) + + + +SAFE test 16595 line 6 + +LINESTRING(609243.805 232633.641 1657.5,609243.009 232632.141 1659.19849814777,609239.718 232631.036 1662.67082523786,609236.013 232629.856 1666.56005859375) + + + +LINESTRING (609252.63829116 232628.953466824,609251.84229116 232627.453466824,609249.477350762 232624.51470087,609246.192010078 232622.661103015,609242.901010078 232621.556103015,609242.752690253 232621.50758696,609239.047690253 232620.32758696) + + + + +LINESTRING (609232.978309747 232639.38441304,609236.608960551 232640.540733674) + + + +SAFE test 16595 line 7 + +LINESTRING(609624.315 232783.037 1234.64001464844,609622.224 232781.246 1237.39321386488,609619.931 232779.544 1240.2488762816,609616.144 232776.939 1244.84537442258,609612.557 232773.936 1249.5235143881,609607.775 232769.631 1255.95790131306,609603.193 232764.728 1262.66871259738,609601.2 232762.726 1265.49363817565,609594.621 232759.217 1272.95000308381,609587.241 232757.104 1280.62660962107,609582.654 232755.097 1285.6335142532,609578.165 232754.289 1290.19469611964,609574.076 232753.282 1294.40590814555,609570.285 232752.774 1298.23082942377,609566.494 232752.467 1302.03427584445,609563.701 232752.261 1304.83488897829,609559.909 232752.253 1308.62693341766,609556.816 232752.246 1311.71997070312) + + + +LINESTRING (609630.820221245 232775.442126956,609628.729221245 232773.651126956,609628.184144828 232773.216263166,609625.891144828 232771.514263166,609625.598411693 232771.305041043,609622.200847486 232768.967925976,609619.114095901 232766.383728872,609614.786473051 232762.487782329,609610.499190474 232757.900146695,609610.279979643 232757.672879906,609608.286979643 232755.670879906,609605.906091181 232753.902581966,609599.327091181 232750.393581966,609597.373544435 232749.603285883,609590.636651061 232747.674416546,609586.662502661 232745.935564173,609584.425487511 232745.255159115,609580.248464315 232744.50331355,609576.467258274 232743.572114117,609575.404144518 232743.37059081,609571.613144518 232742.86259081,609571.092170341 232742.806629432,609567.301170341 232742.499629432,609567.2295602 232742.494089131,609564.4365602 232742.288089131,609563.722097 232742.261022254,609559.930864244 232742.253023873,609556.838631691 232742.24602561) + + + + +LINESTRING (609556.793368309 232762.24597439,609559.886368309 232762.25297439,609563.322187287 232762.260223071,609565.722624782 232762.437269303,609569.216609265 232762.720216608,609572.210839173 232763.121448155,609575.773741726 232763.998885883,609576.393512489 232764.130840885,609579.723957178 232764.73030609,609583.232497339 232766.265435827,609584.488455565 232766.717714117,609590.849813415 232768.539062239,609595.170891925 232770.843768804,609595.994620681 232771.671217359,609600.468809526 232776.458853305,609601.084322363 232777.063014044,609605.866322363 232781.368014044,609606.137721116 232781.603650136,609609.724721116 232784.606650136,609610.476588306 232785.177958957,609614.115339406 232787.680981564,609615.983731686 232789.067812642,609617.809778755 232790.631873044) + + + +SAFE test 16595 line 8 + +LINESTRING(610442 232658.941 355.290985107422,610438.208 232659.232 359.094130190923,610435.413 232659.726 361.932447106464,610428.031 232659.211 369.332381299169,610418.452 232659.191 378.91139142481,610412.068 232658.178 385.375254913024,610403.487 232657.861 393.96209859711,610394.311 232656.044 403.316256418451,610383.735 232655.822 413.894574279224,610373.356 232656.599 424.302606119403,610359.587 232656.57 438.07162120207,610345.421 232654.942 452.330845707698,610334.746 232654.22 463.030221950211,610322.375 232653.395 475.428686406307,610300.616 232657.943 497.657885122763,610292.233 232659.124 506.123656740916,610284.05 232659.706 514.327318234372,610277.464 232659.892 520.915936795002,610271.177 232660.378 527.221686213318,610265.591 232659.867 532.831004028975,610259.803 232660.154 538.626108652756,610251.62 232661.135 546.867692086723,610243.836 232661.818 554.681590468218,610236.153 232661.802 562.364598503491,610227.772 232661.784 570.745608424561,610215.399 232662.058 583.121628023647,610205.719 232662.836 592.832831464125,610198.135 232663.519 600.447515621579,610185.261 232664.79 613.384089405171,610175.083 232665.268 623.573296190194,610165.504 232665.248 633.152306315953,610157.322 232665.43 641.336321077749,610146.746 232665.208 651.914638938522,610136.369 232665.386 662.293153821036,610113.217 232667.434 685.535533112759,610096.553 232668.398 702.227374426872,610073.702 232669.149 725.090686268668,610064.122 232670.327 734.742829804306,610056.537 232671.11 742.368128713434,610039.572 232673.071 759.446070368713,610024.303 232674.537 774.785268155239,610008.335 232677.1 790.957633652766,609994.36 232680.566 805.356012573512,609984.778 232682.343 815.101382744515,609977.391 232684.625 822.832822377346,609970.602 232686.907 829.995079691019,609965.01 232689.692 836.242207141137,609958.919 232692.975 843.161619146883,609953.824 232696.459 849.333911708401,609949.23 232699.046 854.606230229752,609943.938 232701.831 860.586314569434,609933.553 232706.603 872.015221592247,609928.959 232708.89 877.146999634257,609924.666 232710.879 881.878375727976,609919.373 232713.464 887.76887622425,609914.48 232715.95 893.257189022581,609908.688 232719.034 899.819065532172,609905.393 232720.525 903.43570439062,609901.598 232722.814 907.867577798319,609898.003 232724.305 911.759501743102,609894.009 232726.094 916.135860275022,609890.911 232728.884 920.304992675781) + + + +LINESTRING (610441.234844669 232648.970316106,610437.442844669 232649.261316106,610436.467533871 232649.38462585,610434.882853218 232649.664708942,610428.726951354 232649.23524681,610428.051878961 232649.211021797,610419.250831236 232649.192646084,610413.635172427 232648.301564885,610412.437168994 232648.184816611,610404.650104669 232647.897146247,610396.253449545 232646.234469442,610394.520862999 232646.046202366,610383.944862999 232645.824202366,610382.988462 232645.849904883,610372.992726062 232646.5982127,610360.170226137 232646.5712062,610346.562715787 232645.007389536,610346.095804935 232644.964794064,610335.420804936 232644.242794064,610323.040404234 232643.417162699,610320.329044609 232643.606534005,610298.893628239 232648.086899539,610291.179515034 232649.173666531,610283.553901563 232649.716023495,610277.181695311 232649.895985591,610276.693275662 232649.921745039,610271.247628824 232650.342706445,610266.501983195 232649.908580968,610265.095754967 232649.879270911,610259.307754967 232650.166270911,610258.61269609 232650.225093887,610250.58754588 232651.187170431,610243.40851384 232651.817088067,610236.174150784 232651.802022362,610227.793477101 232651.784023063,610227.550604348 232651.786451102,610215.177604348 232652.060451102,610214.597864351 232652.090142574,610204.917864352 232652.868142574,610204.822049819 232652.876307215,610197.238049819 232653.559307215,610197.152515306 232653.567380844,610184.534714939 232654.81308725,610174.858743135 232655.267509977,610165.524878961 232655.248021797,610165.281615509 232655.250473049,610157.315736329 232655.427665668,610146.955862999 232655.210202366,610146.574492032 232655.209470857,610136.197492032 232655.387470857,610135.487851958 232655.424896741,610112.487493449 232657.459482705,610096.099929355 232658.407491093,610073.373526522 232659.154396197,610072.481547079 232659.22375468,610062.998244964 232660.389864272,610055.51015616 232661.162860123,610055.388736446 232661.176144212,610038.519909445 232663.126027487,610023.347279646 232664.582774837,610022.718199605 232664.663378187,610006.750199605 232667.226378187,610005.927787266 232667.394057137,609992.24279121 232670.788132009,609982.954572081 232672.510649791,609981.826418475 232672.788515896,609974.439418475 232675.070515896,609974.204857226 232675.146155438,609967.415857226 232677.428155438,609966.14395605 232677.955695953,609960.55195605 232680.740695953,609960.265382521 232680.889238787,609954.174382521 232684.172238787,609953.274426198 232684.720377865,609948.538360987 232687.958935509,609944.447096938 232690.262831916,609939.518567813 232692.85654953,609929.377627295 232697.516402024,609929.096459959 232697.650947115,609924.627955868 232699.875472334,609920.462153745 232701.805539984,609920.277583261 232701.893355976,609914.984583261 232704.478355976,609914.843379877 232704.548701825,609909.950379877 232707.034701825,609909.780130179 232707.123266535,609904.27219258 232710.056015077,609901.270392284 232711.414341098,609900.228147082 232711.962039395,609897.074813538 232713.864010536,609894.171994186 232715.067933667,609893.915131105 232715.178701304,609889.921131105 232716.967701304,609887.316967702 232718.663205714,609884.218967702 232721.453205714) + + + + +LINESTRING (609897.603032298 232736.314794286,609899.532288331 232734.57734292,609901.963212053 232733.488478989,609905.429005814 232732.051066333,609906.762852918 232731.376960605,609910.052879695 232729.392541293,609912.810607716 232728.144658902,609913.387869821 232727.860733465,609919.095169898 232724.821832664,609923.832295877 232722.415028008,609928.962580253 232719.909495208,609933.162846255 232717.963460016,609933.415540041 232717.842052885,609937.870004945 232715.6245167,609948.113372705 232710.917597976,609948.595119725 232710.680363585,609953.887119725 232707.895363585,609954.136754183 232707.75942432,609958.730754183 232705.17242432,609959.468573802 232704.713622135,609964.12805569 232701.527432754,609969.612529551 232698.571345464,609974.442296672 232696.165962518,609980.460328229 232694.143109666,609987.173589478 232692.069241767,609996.183427919 232690.398350209,609996.767212734 232690.271942863,610010.334528125 232686.90705448,610025.57453903 232684.46090293,610040.527720354 232683.025225163,610040.720263554 232683.004855788,610057.624594263 232681.050868607,610065.14884384 232680.274139877,610065.342452921 232680.25224532,610074.478016082 232679.128895278,610096.881473478 232678.392603803,610097.130527008 232678.381309199,610113.794527008 232677.417309199,610114.098148042 232677.395103259,610136.895993321 232675.378431389,610146.726815509 232675.209800151,610157.112137001 232675.427797634,610157.544384491 232675.427526951,610165.604767675 232675.248232189,610175.062121039 232675.267978203,610175.552123332 232675.256990104,610185.730123332 232674.778990104,610186.243484694 232674.741619156,610199.074734778 232673.474839689,610206.568062544 232672.800005451,610215.910696729 232672.049120182,610227.87197402 232671.784237779,610236.131522899 232671.801976937,610243.815174847 232671.817978316,610244.710082564 232671.779725738,610252.494082564 232671.096725738,610252.81030391 232671.063906113,610260.646800885 232670.124445826,610265.382097721 232669.889644479,610270.266016805 232670.336419032,610271.947724338 232670.348254961,610277.99082958 232669.881108604,610284.332304689 232669.702014409,610284.75943852 232669.680803105,610292.94243852 232669.098803105,610293.628027798 232669.026216794,610302.011027798 232667.845216794,610302.661955391 232667.731465995,610323.078263685 232663.464111332,610334.075895279 232664.197523834,610344.51224023 232664.903382481,610358.445284213 232666.504610464,610359.565938241 232666.56997782,610373.334938241 232666.59897782,610374.102538 232666.571095117,610384.003952975 232665.829848423,610393.22660968 232666.023440498,610401.544550455 232667.670530558,610403.117831006 232667.854183389,610411.096309725 232668.148924999,610416.884827573 232669.067435115,610418.431121039 232669.190978203,610427.672175505 232669.210272607,610434.717048646 232669.70175319,610437.153466129 232669.57337415,610439.463844966 232669.165028123,610442.765155331 232668.911683894) + + + +SAFE test 16595 line 9 + +LINESTRING(609236.013 232629.856 1666.56005859375,609235.928 232629.829 1666.64923781753,609231.639 232629.021 1671.01339088307,609228.347 232628.814 1674.31167145913,609224.557 232628.007 1678.18637616007,609220.467 232627.2 1682.35495141766,609217.674 232626.495 1685.23536143201,609207.498 232625.674 1695.44374269009,609204.209 232623.371 1699.45861121687,609200.72 232621.865 1703.25850877845,609198.125 232621.86 1705.85333968766,609195.928 232623.353 1708.50944817875,609193.829 232625.446 1711.4734441922,609191.533 232626.44 1713.97520617731,609188.538 232627.432 1717.13000488281) + + + +LINESTRING (609239.040408113 232620.325270746,609238.955408113 232620.298270746,609237.779323358 232620.001864007,609233.490323358 232619.193864007,609232.266557671 232619.040710857,609229.709425503 232618.879919132,609226.639599785 232618.226264949,609226.492783494 232618.196151807,609222.660101445 232617.439923344,609220.121404189 232616.799113618,609218.478187225 232616.527388305,609211.009166319 232615.924787463,609209.944793454 232615.179499926,609208.171999131 232614.189788866,609204.682999131 232612.683788866,609200.739267787 232611.865018562,609198.144267787 232611.860018562,609195.193924692 232612.299205183,609192.504371364 232613.589054846,609190.307371364 232615.082054847,609188.867060224 232616.271818638,609188.113035068 232617.02368841,609187.967418884 232617.086729563,609185.393794577 232617.939162055) + + + + +LINESTRING (609191.682205423 232636.924837945,609194.677205423 232635.932837945,609195.505933443 232635.616916686,609197.801933443 232634.622916686,609200.36230491 232632.885270986,609201.762206546 232633.865500074,609206.693812775 232635.641611695,609216.036850676 232636.395408287,609218.019595811 232636.895886382,609218.531216506 232637.010848193,609222.547695529 232637.803341731,609226.264400215 232638.594735051,609227.719442329 232638.794289143,609230.394828341 232638.962516635,609234.076676642 232639.656135993) + + + +SAFE test 16595 line 10 + +LINESTRING(609556.816 232752.246 1311.71997070312,609554.023 232751.741 1314.55825551404,609552.028 232751.238 1316.61568765014,609548.24 232749.132 1320.94975605225,609543.951 232748.624 1325.26873210332,609539.563 232747.117 1329.90829645542,609535.076 232745.11 1334.8236985768,609531.486 232743.804 1338.64387028083,609526.402 232740.997 1344.45130079578,609522.115 232738.99 1349.1848386819,609516.832 232735.883 1355.3137436277,609512.745 232733.078 1360.27071380478,609507.463 232729.272 1366.78109703898,609503.378 232725.968 1372.035009421,609497.597 232721.961 1379.06892213882,609493.01 232720.154 1383.99901116188,609488.225 232717.547 1389.44810511055,609483.641 232714.042 1395.21854927843,609476.564 232709.233 1403.77485039758,609470.182 232706.923 1410.56204037313,609463.103 232704.112 1418.17872377157,609457.322 232700.005 1425.27007955011,609453.237 232696.201 1430.85197792229,609447.459 232691.096 1438.56211479659,609442.676 232687.091 1444.80046791227,609439.087 232684.786 1449.0659005855,609431.708 232682.174 1456.89354924909,609427.218 232682.165 1461.38355455381,609422.329 232681.955 1466.27705855098,609415.049 232679.942 1473.83023500769,609407.966 232679.128 1480.95984936457,609401.881 232677.817 1487.18446837927,609395.001 232675.505 1494.44254366266,609387.92 232673.193 1501.89142365735,609382.334 232671.983 1507.60696754556,609376.25 232670.472 1513.87578816551,609370.465 232669.362 1519.7663117057,609365.876 232669.152 1524.36011035991,609362.083 232669.643 1528.18475489143,609358.49 232670.135 1531.81128094744,609354.999 232669.828 1535.31575090389,609351.907 232669.123 1538.48710272217,609350.41 232669.119 1539.98410682745,609346.121 232668.112 1544.38973253541,609342.331 232667.305 1548.264693716,609338.041 232666.796 1552.58478053391,609332.954 232665.987 1557.73570337269,609329.163 232665.479 1561.56058517342,609320.484 232664.462 1570.2989605161,609316.693 232664.454 1574.08996582031) + + + +LINESTRING (609558.595242098 232742.405558061,609556.137468596 232741.961170084,609555.742611766 232741.861614703,609553.099171711 232740.391951357,609549.416203743 232739.201413675,609546.188438897 232738.819109049,609543.236011108 232737.805137153,609539.159080671 232735.981558061,609538.494691673 232735.712524422,609535.637140376 232734.672980691,609531.235458911 232732.242705342,609530.641954105 232731.940356627,609526.779934801 232730.132315399,609522.202604346 232727.440328701,609518.498122056 232724.897859207,609513.535049771 232721.321665887,609509.666641732 232718.192848222,609509.074682409 232717.749252557,609503.293682409 232713.742252557,609501.262245184 232712.656916072,609497.250936022 232711.076703372,609493.686450464 232709.134673309,609489.715050797 232706.09807736,609489.261414655 232705.770909437,609482.184414656 232700.961909437,609479.967467557 232699.830000022,609473.729860015 232697.572263666,609467.912823063 232695.262376553,609463.652796167 232692.235922573,609460.051880169 232688.882707284,609459.858148054 232688.706975817,609454.080148054 232683.601975817,609453.8789583 232683.428918715,609449.095958299 232679.423918715,609448.079902181 232678.676854695,609444.490902181 232676.371854695,609442.423886913 232675.359166718,609435.044886913 232672.747166718,609431.728044503 232672.174020089,609427.442686303 232672.165430284,609423.896195667 232672.013095853,609417.71410169 232670.303678934,609416.190715787 232670.007389536,609409.593821537 232669.249254294,609404.535095568 232668.1593628,609398.186414861 232666.025910795,609398.104819754 232665.998880764,609391.023819754 232663.686880764,609390.037032119 232663.419659987,609384.598199209 232662.241538286,609378.660339745 232660.766833216,609378.13438103 232660.651149317,609372.34938103 232659.541149317,609370.922137637 232659.372454205,609366.333137637 232659.162454205,609364.592221626 232659.234746696,609360.799221626 232659.725746696,609360.726330876 232659.735454952,609358.24664254 232660.075005929,609356.555760202 232659.926309029,609354.130024934 232659.373222559,609351.933720011 232659.123035698,609351.58136501 232659.122094202,609348.406712027 232658.37672802,609348.203599785 232658.331264949,609344.413599785 232657.524264949,609343.509216088 232657.374652229,609339.41594297 232656.888993484,609334.524591049 232656.111107951,609334.282144518 232656.07559081,609330.491144518 232655.56759081,609330.326830939 232655.546956024,609321.64783094 232654.529956024,609320.505102564 232654.462022266,609316.714102564 232654.454022266) + + + + +LINESTRING (609316.671897436 232674.453977734,609319.889585883 232674.460767897,609327.916926837 232675.401406882,609331.504414627 232675.882135924,609336.470408951 232676.671892049,609336.862783912 232676.726347771,609340.697159799 232677.181288873,609343.936607515 232677.871060458,609348.124287973 232678.85427198,609350.383279989 232679.118964302,609350.768216291 232679.119992856,609352.775975066 232679.577777441,609354.122976665 232679.789555256,609357.613976665 232680.096555256,609359.846669124 232680.042545048,609363.403241598 232679.555533176,609366.292481478 232679.181524006,609369.288163833 232679.318611236,609374.101081564 232680.242092425,609379.923660255 232681.688166784,609380.216967881 232681.756340013,609385.302735435 232682.857983181,609391.856324606 232684.997779561,609398.695585139 232687.296089205,609399.774848745 232687.592690609,609405.859848745 232688.903690609,609406.824284213 232689.062610464,609413.134060973 232689.787749286,609419.66389831 232691.593321066,609421.899860009 232691.9457877,609426.788860009 232692.1557877,609427.197955497 232692.164979911,609429.980606116 232692.170557607,609434.657941588 232693.826229141,609436.74046898 232695.163711905,609440.93729858 232698.677887641,609446.517836682 232703.608425373,609450.507119831 232707.323292716,609451.530446551 232708.15717202,609457.311446551 232712.26417202,609459.412420351 232713.406063797,609466.491420351 232716.217063797,609466.778532443 232716.325999978,609471.981068443 232718.209086496,609477.789190799 232722.155852133,609482.150949203 232725.49092264,609483.440722343 232726.328269117,609488.225722343 232728.935269117,609489.344754816 232729.458083928,609492.853124198 232730.840168836,609497.377128844 232733.975904282,609501.174358268 232737.047151778,609501.616958817 232737.38518695,609506.898958817 232741.19118695,609507.086306123 232741.322948975,609511.173306123 232744.127948975,609511.762583103 232744.502803497,609517.045583103 232747.609803497,609517.875045895 232748.046643373,609521.860255986 232749.912357544,609526.652541089 232752.558294658,609528.067308327 232753.201475578,609531.320289694 232754.384872142,609535.479919329 232756.245441939,609536.314852892 232756.574776714,609540.702852892 232758.081776714,609542.774796257 232758.554586325,609545.104889589 232758.830568468,609547.168828289 232759.978048643,609549.583206925 232760.934545097,609551.578206925 232761.437545097,609552.243757902 232761.581441939,609555.036757902 232762.086441939) + + + +SAFE test 16595 line 11 + +LINESTRING(610766.635 232685.492 0,610763.548 232681.99 4.66837115191394,610762.554 232679.491 7.35780893128456,610760.764 232676.092 11.1993424391044,610758.774 232672.293 15.4880017955653,610756.485 232668.992 19.50499171887,610754.192 232667.49 22.2461398481215,610749.704 232666.481 26.8461765691108,610745.313 232666.672 31.2413403894991,610741.022 232667.262 35.5727236603881,610735.432 232668.449 41.2873752805263,610730.942 232668.439 45.7773983875674,610726.055 232667.43 50.7674868417649,610722.566 232665.126 54.9485907891251,610718.778 232663.12 59.2349736431465,610716.486 232661.618 61.9752853119838,610713.693 232660.613 64.943604867428,610709.106 232659.305 69.7134638086124,610704.815 232659.296 74.0044846876773,610701.72 232660.588 77.3583405253578,610698.427 232661.08 80.6879008738046,610697.427 232662.077 82.0999984741211) + + + +LINESTRING (610774.136565799 232678.879397595,610772.198026247 232676.68025101,610771.845929644 232675.795050394,610771.402052621 232674.831390058,610769.617171836 232671.442110847,610767.632269713 232667.652842925,610766.991617828 232666.594688213,610764.702617829 232663.293688213,610761.964470404 232660.62686975,610759.671470404 232659.12486975,610756.385466599 232657.733530132,610751.897466599 232656.724530132,610749.269430284 232656.490447004,610744.878430284 232656.681447004,610743.950844919 232656.765207707,610739.659844919 232657.355207707,610738.944877467 232657.480100288,610734.393002697 232658.446661173,610731.974575859 232658.441274922,610729.960584503 232658.025453912,610728.076521077 232656.78129165,610727.245949078 232656.288688382,610723.869568034 232654.50066822,610721.967142973 232653.253965584,610719.871763092 232652.208610632,610717.078763092 232651.203610632,610716.435226769 232650.996337775,610711.848226769 232649.688337775,610709.126974086 232649.305021996,610704.835974086 232649.296021996,610700.962707274 232650.067791032,610699.013902576 232650.881314673,610696.949323489 232651.189778965,610693.932912854 232652.146737398,610691.366562691 232653.998317643,610690.366562691 232654.995317643) + + + + +LINESTRING (610703.197676511 232670.478221035,610705.572292726 232669.816208968,610706.80839071 232669.30020296,610707.697812474 232669.302068445,610710.625499676 232670.136909269,610711.990926434 232670.628228242,610713.296857028 232671.484034416,610714.098050923 232671.957311618,610717.4588588 232673.737084744,610720.544478923 232675.77470835,610724.032986364 232677.223439684,610728.919986364 232678.232439685,610730.91972834 232678.438975199,610735.40972834 232678.448975199,610737.509122533 232678.230899712,610742.743906457 232677.119327527,610746.213314799 232676.642293986,610748.80897506 232676.52938779,610749.678147326 232676.724796617,610750.203270484 232677.482084316,610751.905730287 232680.732157075,610751.915947379 232680.751609942,610753.458412337 232683.680569937,610754.256070356 232685.685949606,610756.046434201 232688.602602405,610759.133434201 232692.104602405) + + + +SAFE test 16595 line 12 + +LINESTRING(609780.059 232789.469 1051.80004882812,609775.468 232790.458 1056.49630718269,609773.97 232791.554 1058.35241402419,609772.968 232794.048 1061.04013736407,609771.167 232796.841 1064.36341433737,609768.668 232799.832 1068.26093876405,609767.367 232801.926 1070.72615332611,609765.368 232804.419 1073.92158615777,609762.566 232809.206 1079.4682781955,609758.265 232815.589 1087.16501693724,609752.669 232820.87 1094.85934440624,609749.076 232821.861 1098.58645825157,609746.281 232822.155 1101.39684268156,609741.692 232821.846 1105.99617582748,609736.203 232822.333 1111.50666761276,609729.618 232822.12 1118.09502802359,609722.938 232819.309 1125.34228879232,609718.949 232817.803 1129.60605424477,609714.663 232815.197 1134.62206797628,609709.578 232813.189 1140.08910838352,609704.791 232811.182 1145.27974750999,609701 232810.874 1149.08319042856,609698.207 232810.369 1151.92144158919,609696.113 232809.865 1154.07521370549,609693.82 232808.861 1156.57835294603,609691.03 232806.559 1160.19539208357,609688.837 232805.256 1162.74625329872,609683.95 232803.747 1167.86085850523,609679.96 232802.94 1171.93159905746,609676.368 232803.232 1175.53540240213,609674.073 232803.227 1177.83037874053,609670.082 232803.219 1181.82133613931,609667.486 232804.012 1184.53571969703,609664.193 232804.205 1187.83432879566,609660.403 232803.398 1191.70924403516,609656.912 232802.392 1195.34225686,609653.621 232801.386 1198.78353810281,609650.531 232799.382 1202.46644075248,609648.539 232797.581 1205.15186102975,609644.952 232793.978 1210.23590689137,609643.458 232792.277 1212.49982097676,609642.165 232790.177 1214.96593020487,609640.671 232788.676 1217.08369393832,609638.179 232787.172 1219.99434078967,609636.084 232786.669 1222.1488514645,609632.593 232786.162 1225.67643056876,609630.298 232785.857 1227.99157938358,609627.008 232784.353 1231.6090072061,609624.914 232783.549 1233.85202400835,609624.315 232783.037 1234.64001464844) + + + +LINESTRING (609777.95309487 232779.693256367,609773.36209487 232780.682256367,609769.563242393 232782.387446264,609768.065242393 232783.483446264,609764.690888825 232787.825985005,609764.045442382 232789.432515373,609763.097246367 232790.902982596,609760.993995332 232793.420319069,609760.173918092 232794.554635835,609759.189759254 232796.138670121,609757.566338967 232798.163275811,609756.737740284 232799.367404486,609754.095859976 232803.880852394,609750.593145291 232809.079138335,609747.613614536 232811.890950686,609747.210955152 232812.002009815,609746.092469002 232812.119660952,609742.363828004 232811.868593166,609740.808242538 232811.885127912,609735.921742667 232812.318672353,609731.790928203 232812.185056031,609726.816657657 232810.091841285,609726.470044423 232809.953538376,609723.350345279 232808.775732683,609719.858294684 232806.652474668,609718.33587304 232805.895924598,609713.348111958 232803.926322975,609708.65752683 232801.959745922,609705.600782347 232801.2148413,609702.297613224 232800.946475146,609700.268339052 232800.579563776,609699.313345089 232800.349708495,609699.108479911 232800.260007388,609697.394240793 232798.84560651,609696.138013976 232797.962012549,609693.945013976 232796.659012549,609691.787336927 232795.701131502,609686.900336927 232794.192131502,609685.932415126 232793.945467963,609681.942415126 232793.138467963,609679.149755188 232792.972878884,609675.973086275 232793.231115889,609674.09478644 232793.227023732,609670.102045061 232793.21902009,609667.160563419 232793.655255529,609665.707689518 232794.099064852,609664.955398053 232794.143156032,609662.831848245 232793.690991204,609659.758338898 232792.80529931,609657.885562047 232792.23282483,609656.643804825 232791.427491021,609655.440404315 232790.339476804,609652.259240652 232787.144123395,609651.529750824 232786.313559675,609650.680329902 232784.933989732,609649.252575156 232783.122478159,609647.758575156 232781.621478159,609645.838170739 232780.114437844,609643.34617074 232778.610437844,609640.513607232 232777.448337672,609638.418607232 232776.945337672,609637.521228067 232776.772820157,609634.030228066 232776.265820157,609633.910393205 232776.249156052,609633.096617542 232776.141007216,609631.165597603 232775.258255244,609630.592412751 232775.017477238) + + + + +LINESTRING (609617.817543303 232790.638516722,609618.416543303 232791.150516722,609621.329587249 232792.884522762,609623.133250702 232793.577046838,609626.140402397 232794.951744756,609628.980606795 232795.769843948,609631.21563896 232796.066874367,609634.194137018 232796.499443406,609634.335136482 232796.533296738,609634.942670098 232797.520010268,609635.944559288 232798.876106657,609637.438559288 232800.577106657,609637.865214396 232801.033315004,609641.452214396 232804.636315004,609641.83249982 232804.998739233,609643.82449982 232806.799739233,609645.089708787 232807.772014895,609648.179708787 232809.776014895,609650.69770728 232810.949177279,609653.98870728 232811.955177279,609654.142983514 232812.000982657,609657.633983514 232813.006982657,609658.320400215 232813.178735051,609662.110400215 232813.985735051,609664.778087673 232814.187868947,609668.071087673 232813.994868947,609670.407436581 232813.575744471,609671.565490603 232813.221993762,609674.052084217 232813.226978164,609676.34621356 232813.231976268,609677.178244812 232813.199121116,609679.3622187 232813.021582036,609681.477456736 232813.449400857,609684.750893787 232814.460167485,609685.259845378 232814.762567814,609687.455759207 232816.57439349,609689.809087424 232818.021381013,609692.102087424 232819.025381013,609693.772949241 232819.58735375,609695.866949241 232820.09135375,609696.427757902 232820.209441939,609699.220757902 232820.714441939,609700.190217652 232820.8411587,609702.393516261 232821.020165815,609705.71147317 232822.411254078,609705.90512696 232822.490075402,609710.19664521 232824.184739836,609713.753705316 232826.347525332,609715.416955577 232827.158461624,609719.231358415 232828.59854452,609725.739342343 232831.337158715,609729.294706669 232832.114772705,609735.879706669 232832.327772705,609737.086757462 232832.293872088,609741.79860975 232831.875822887,609745.609171996 232832.132406834,609747.327106959 232832.100132489,609750.122106959 232831.806132489,609751.734860105 232831.501044758,609755.327860105 232830.510044758,609759.532410793 232828.142798106,609765.128410793 232822.861798106,609766.558017675 232821.177010186,609770.859017675 232814.794010186,609771.196259716 232814.257595514,609773.628079558 232810.103019645,609775.168661033 232808.181724189,609775.861081908 232807.203364165,609776.791833851 232805.70528994,609778.841004668 232803.252680931,609779.571248571 232802.260280944,609781.372248571 232799.467280944,609781.402393726 232799.409004966,609782.16490513 232799.244743633) + + + +SAFE test 16595 line 13 + +LINESTRING(609890.911 232728.884 920.304992675781,609887.614 232731.673 924.623392735533,609884.315 232735.661 929.799040347982,609881.017 232738.75 934.317730396102,609877.22 232742.237 939.472937755411,609872.626 232745.024 944.846202250726,609868.33 232748.11 950.13569991747,609864.233 232751.897 955.714815088414,609858.64 232755.68 962.467027245764,609854.144 232758.966 968.035829722215,609849.249 232762.451 974.044653050655,609844.755 232765.038 979.23005442278,609839.861 232768.024 984.963043695717,609834.867 232771.309 990.940582639761,609830.772 232773.597 995.631402495782,609827.974 232776.688 999.800688324114,609824.975 232779.677 1004.0348325007,609822.678 232781.17 1006.77439400943,609818.383 232783.758 1011.78882972072,609813.99 232785.546 1016.5317413734,609809.498 232787.235 1021.33076196218,609805.703 232788.824 1025.44498230272,609802.111 232789.017 1029.04214900424,609799.118 232789.01 1032.03514507878,609796.324 232788.805 1034.83664422788,609794.03 232788.3 1037.18556235058,609790.44 232787.494 1040.86491371185,609787.946 232787.189 1043.37748409059,609785.351 232787.184 1045.97247840681,609783.155 232787.678 1048.2233473495,609780.059 232789.469 1051.80004882812) + + + +LINESTRING (609884.452615701 232721.249258862,609881.155615701 232724.038258862,609879.908715249 232725.298944234,609877.014957404 232728.797066782,609874.21682031 232731.417881058,609871.185924108 232734.201324581,609867.439229974 232736.474297274,609866.791821205 232736.902278644,609862.495821205 232739.988278644,609861.542212762 232740.766571345,609858.002175872 232744.038750916,609853.037414353 232747.396822224,609852.739293848 232747.606483609,609848.293529951 232750.855767454,609843.842071297 232754.024987762,609839.76601391 232756.37139641,609839.546568979 232756.501475748,609834.652568979 232759.487475748,609834.36544951 232759.669424917,609829.67364274 232762.75564543,609825.894407571 232764.867218096,609823.358290268 232766.886045671,609820.732741989 232769.786535209,609818.652774555 232771.859567108,609817.371044332 232772.692663852,609813.890354572 232774.789992164,609810.344703815 232776.23311157,609805.978546115 232777.874794642,609805.635801482 232778.010932426,609803.437715418 232778.931290464,609801.854226933 232779.016372112,609799.496042883 232779.010856813,609797.772269779 232778.884380977,609796.200265362 232778.53832072,609792.630594644 232777.736884898,609791.653891433 232777.567950051,609789.159891433 232777.262950051,609787.965267787 232777.189018562,609785.370267787 232777.184018562,609783.156300914 232777.427807304,609780.960300914 232777.921807304,609778.147613268 232779.022014896,609775.051613268 232780.813014896) + + + + +LINESTRING (609785.066386732 232798.124985104,609786.688527233 232797.186595686,609787.327204186 232797.187826278,609788.733565582 232797.359815141,609791.839405356 232798.057115102,609791.880082761 232798.066158706,609794.174082761 232798.571158706,609795.592251891 232798.7781913,609798.386251891 232798.9831913,609799.094612159 232799.00997265,609802.087612159 232799.01697265,609802.647531206 232799.00259634,609806.239531206 232798.80959634,609809.565198518 232798.048067574,609813.190081577 232796.530297039,609817.509453885 232794.906205358,609817.759820936 232794.808205467,609822.152820937 232793.020205467,609823.544078288 232792.323236185,609827.839078288 232789.735236185,609828.127755203 232789.554519559,609830.424755203 232788.061519559,609832.034249237 232786.759866666,609835.033249237 232783.770866666,609835.387709732 232783.398954329,609837.083445751 232781.52564481,609839.744592429 232780.038781904,609840.36255049 232779.663575083,609845.214537166 232776.471989934,609849.854538208 232773.640963553,609854.23798609 232771.11760359,609855.048780935 232770.59732071,609859.943780935 232767.11232071,609860.044706152 232767.039516391,609864.393556566 232763.861063886,609869.835585647 232760.180177776,609871.020787238 232759.240428655,609874.664978467 232755.871975595,609878.144784405 232753.372282596,609882.406770026 232750.786702726,609883.984007045 232749.602338328,609887.781007045 232746.115338328,609887.853024307 232746.048545861,609891.151024307 232742.959545861,609892.020284751 232742.035055766,609894.751940312 232738.732890752,609897.369384299 232736.518741138) + + + +SAFE test 16595 line 14 + +LINESTRING(609101.253 232552.646 1843.09997558594,609099.76 232550.645 1845.59684261421,609098.464 232549.644 1847.23457706256,609096.172 232548.041 1850.03180752373,609093.181 232546.537 1853.38000488281) + + + +LINESTRING (609109.26787555 232546.665885459,609107.77487555 232544.664885459,609105.872736883 232542.730807192,609104.576736883 232541.729807192,609104.195263585 232541.44932992,609101.903263585 232539.84632992,609100.664435969 232539.106906926,609097.673435969 232537.602906926) + + + + +LINESTRING (609088.688564031 232555.471093074,609091.033411058 232556.650180313,609092.538678781 232557.702948271,609092.56380557 232557.722355613,609093.23812445 232558.626114541) + + + +SAFE test 16595 line 15 + +LINESTRING(608988.587 232509.148 1974.06005859375,608987.977 232508.565 1974.90388095372,608983.194 232504.16 1981.4064893125,608977.911 232501.153 1987.48551772014,608973.125 232499.345 1992.60180487824,608968.038 232497.836 1997.90807621276,608961.654 232497.024 2004.34372257249,608955.371 232495.313 2010.85574373215,608947.989 232493.999 2018.35402654017,608940.407 232493.184 2025.9799561211,608936.316 232493.475 2030.08142860374,608928.229 232496.454 2038.69995117188) + + + +LINESTRING (608995.496265997 232501.918750842,608994.886265997 232501.335750842,608994.751429103 232501.209246447,608989.968429103 232496.804246447,608988.140678015 232495.469178599,608982.857678015 232492.462178599,608981.444929665 232491.798250344,608976.658929665 232489.990250344,608975.968899032 232489.75791294,608970.881899031 232488.24891294,608969.299764328 232487.915921836,608963.608122601 232487.19198495,608957.998535509 232485.664370193,608957.123459282 232485.467753103,608949.741459282 232484.153753103,608949.057757574 232484.056276166,608941.475757574 232483.241276166,608939.697475209 232483.209203031,608935.606475209 232483.500203031,608932.859376587 232484.091410358,608924.772376587 232487.070410358) + + + + +LINESTRING (608931.685623414 232505.837589642,608938.441022454 232503.349110139,608940.225951827 232503.222144985,608946.57670759 232503.904796785,608953.176589554 232505.07957935,608959.026464492 232506.672629807,608960.392235672 232506.944078164,608965.971664647 232507.653742376,608969.931853751 232508.828486893,608973.644707414 232510.23108602,608977.257412405 232512.287380532,608981.134567689 232515.858124631,608981.677734003 232516.377249158) + + + +SAFE test 16595 line 16 + +LINESTRING(608589.032 232404.957 2403.88989257812,608580.657 232400.945 2413.17630313634,608575.574 232397.639 2419.23986669253,608569.992 232393.732 2426.05336241927,608563.913 232389.425 2433.50352414116,608557.634 232385.117 2441.11832180329,608551.552 232382.108 2447.90397970466,608545.173 232378.2 2455.38492404065,608539.891 232374.394 2461.89533727516,608524.24 232365.472 2479.91084001694,608507.993 232354.852 2499.32094711831,608501.41 232353.34 2506.07538106635,608498.916 232353.335 2508.56939550729,608497.618 232354.031 2510.04222828865,608496.618 232355.028 2511.45432746263,608495.319 232356.623 2513.51137826287,608494.318 232358.618 2515.74343195181,608492.517 232361.411 2519.06676363997,608490.515 232365.202 2523.35393333254,608488.213 232369.791 2528.48796920112,608485.911 232374.08 2533.35571037761,608484.109 232378.071 2537.73468628396,608481.607 232382.66 2542.96145694711,608475.505 232392.034 2554.14659109725,608471.906 232396.621 2559.97699648898,608468.404 232402.206 2566.56915528426,608464.803 232407.991 2573.38338870365,608459.501 232416.668 2583.55208158137,608454.896 232425.746 2593.73131988617,608451.091 232433.828 2602.6642562657,608447.286 232442.209 2611.86859364442,608443.983 232448.793 2619.23468319474,608440.379 232456.375 2627.62968604655,608436.378 232462.159 2634.66268192299,608432.278 232467.743 2641.59026583592,608422.885 232476.112 2654.17079868258,608418.591 232478.4 2659.03634685311,608413.001 232480.386 2664.96867878049,608408.21 232481.375 2669.86071137999,608402.62 232482.661 2675.59675049931,608397.53 232483.449 2680.74740527242,608392.939 232484.139 2685.38998472464,608388.146 232486.425 2690.7002444374,608385.633 232497.605 2702.15923923827,608384.829 232501.199 2705.84208522401,608383.827 232504.193 2708.99931745662,608382.324 232507.785 2712.89310579697,608381.024 232509.48 2715.02923769884,608376.43 232512.267 2720.40254425147,608372.137 232514.055 2725.05302342309,608368.044 232515.045 2729.26406641519,608363.752 232516.135 2733.69232931061,608360.458 232517.126 2737.1321848989,608357.463 232517.819 2740.20632631654,608354.668 232518.812 2743.17249228029,608352.372 232519.606 2745.60191538601,608349.875 232521.099 2748.51123180031,608348.076 232522.893 2751.05187853029,608346.776 232524.688 2753.26819577766,608345.775 232526.483 2755.32344708559,608344.272 232530.475 2759.58903152118,608343.27 232533.269 2762.55728127779,608341.968 232535.863 2765.45971193092,608340.168 232538.356 2768.53462989599,608337.671 232540.348 2771.72886691719,608334.375 232541.939 2775.38878471431,608331.779 232542.932 2778.16823131617,608329.283 232544.425 2781.07668949199,608326.985 232546.217 2783.99081581232,608323.886 232549.706 2788.65740843004,608319.386 232555.789 2796.22400091953,608318.585 232557.585 2798.1905324451,608318.082 232560.38 2801.030443532,608317.579 232562.376 2803.08885482159,608316.279 232564.471 2805.55443202886,608315.278 232566.166 2807.52294804348,608313.978 232568.461 2810.16057531128,608313.474 232571.056 2812.80407561166,608313.468 232575.051 2816.79909522083,608313.462 232578.846 2820.59411431131,608312.955 232583.439 2825.21502974582,608311.452 232587.73 2829.76165995984,608309.95 232590.823 2833.20008145728,608307.351 232593.813 2837.161775498,608304.852 232596.604 2840.90807875851,608303.352 232598.698 2843.4839060368,608302.052 232600.693 2845.86509646852,608299.753 232603.185 2849.25560556301,608297.954 232604.979 2851.79625229297,608295.456 232606.971 2854.99127110131,608292.96 232608.264 2857.80230734227,608290.364 232609.057 2860.51673558994,608287.869 232609.551 2863.06018008786,608285.274 232610.045 2865.70179205077,608282.778 232611.039 2868.38844546662,608280.98 232612.033 2870.44292153487,608279.481 232613.329 2872.42449835394,608278.681 232614.625 2873.94753267372,608277.68 232616.321 2875.91690981522,608276.68 232618.116 2877.97167426005,608275.38 232619.911 2880.18799150742,608273.881 232621.406 2882.30507910349,608271.882 232623.499 2885.19933433379,608269.784 232625.192 2887.89524010994,608267.786 232626.487 2890.27622139187,608263.188 232631.77 2897.2799392539,608260.186 232636.857 2903.18670121015,608258.683 232640.649 2907.26572055381,608257.381 232643.742 2910.62160168299,608255.378 232648.032 2915.35618492689,608253.777 232650.825 2918.57552156121,608253.075 232653.62 2921.45734247769,608252.272 232656.115 2924.07838920453,608252.069 232658.411 2926.38335453431,608252.263 232662.007 2929.98459738374,608252.557 232665.303 2933.29369617281,608253.249 232669.1 2937.15325387188,608254.041 232672.896 2941.03101014288,608255.032 232676.893 2945.14904586687,608255.325 232680.789 2949.05606268529,608256.017 232684.785 2953.11155332869,608256.509 232689.08 2957.43465757359,608257.002 232692.876 2961.26255200685,608257.294 232697.271 2965.66725809213,608256.989 232700.766 2969.17555441143,608256.783 232704.86 2973.27474933887,608255.476 232711.149 2979.69815046092,608250.172 232720.526 2990.4713311686,608246.573 232725.112 2996.3009498493,608244.573 232727.904 2999.73538622035,608242.074 232730.695 3003.48168948079,608238.975 232734.284 3008.2235131819,608235.677 232737.572 3012.88054141732,608231.58 232741.059 3018.26057829983,608228.083 232743.848 3022.73357296574,608224.789 232745.139 3026.27154012849,608219.199 232746.326 3031.98619811714,608212.61 232748.409 3038.8966373997,608208.018 232750.197 3043.82447583168,608205.521 232751.69 3046.73379224609,608202.924 232753.183 3049.72937663817,608201.724 232754.678 3051.64641935748,608200.724 232756.474 3053.70205744595,608199.423 232758.768 3056.33930783015,608198.122 232761.062 3058.97655821426,608196.821 232763.356 3061.61380859838,608195.322 232764.851 3063.73089619446,608193.324 232766.345 3066.22570822375,608191.526 232767.639 3068.4409457065,608190.227 232768.635 3070.07784437768,608189.028 232769.931 3071.84341526829,608188.228 232770.928 3073.12170371586,608186.728 232773.222 3075.86259641773,608185.925 232775.717 3078.48364314458,608184.722 232779.31 3082.27270194006,608183.419 232782.802 3085.99989633256,608181.915 232787.393 3090.83099077106,608180.113 232791.184 3095.02849219697,608178.313 232793.977 3098.35128206131,608177.013 232795.772 3100.56759930861,608175.812 232797.567 3102.72733569735,608174.512 232799.262 3104.8634675992,608174.212 232800.06 3105.71599882766,608173.51 232802.056 3107.831856538,608173.006 232805.351 3111.1651919566,608172.703 232807.447 3113.28298772398,608171.901 232809.942 3115.90372825528,608170.199 232813.734 3120.0601929343,608168.396 232817.824 3124.52998712031,608166.394 232821.815 3128.99498832314,608164.293 232825.106 3132.89947257462,608161.993 232828.397 3136.91454454058,608159.994 232830.49 3139.80879977085,608157.496 232832.482 3143.0038185791,608154.9 232833.975 3145.99853606348,608150.904 232836.763 3150.8710240841,608148.605 232839.055 3154.11736736311,608147.104 232841.848 3157.28816001153,608145.304 232844.64 3160.61010935497,608144.002 232847.434 3163.69259404173,608142.701 232849.928 3166.505545664,608140.699 232853.519 3170.61692168784,608138.899 232856.012 3173.6918396529,608137.1 232858.105 3176.45175044753,608133.796 232865.389 3184.45009750894,608133.293 232867.685 3186.80055847926,608131.791 232870.977 3190.41903426351,608129.489 232875.566 3195.55307013207,608127.987 232878.359 3198.72433628964,608125.982 232884.147 3204.84979567686,608125.98 232885.945 3206.64780358676,608126.672 232889.742 3210.50736128584,608128.258 232896.336 3217.28943912292,608128.454 232898.334 3219.29703730853,608129.244 232903.229 3224.25539498961,608129.737 232906.726 3227.78698844074,608129.232 232910.52 3231.61446434111,608128.23 232913.314 3234.58271409775,608127.128 232916.108 3237.58619677766,608126.923 232919.203 3240.68799025031,608126.62 232921.999 3243.50037087977,608125.417 232924.993 3246.72702916995,608123.618 232927.286 3249.64152985222,608121.319 232929.278 3252.68349220694,608118.322 232931.569 3256.45586514732,608115.526 232933.361 3259.77685346293,608112.729 232935.352 3263.21012873967,608101.843 232941.221 3275.57747742449,608098.246 232944.509 3280.45082663975,608095.748 232946.501 3283.64584544809,608092.651 232949.092 3287.68376734975,608089.354 232951.781 3291.93830220853,608085.359 232954.369 3296.69833795636,608081.765 232955.66 3300.51718952058,608078.77 232956.153 3303.55250559343,608075.676 232957.145 3306.8016562245,608074.178 232957.841 3308.45345543453,608072.679 232959.436 3310.6423049556,608071.38 232960.432 3312.27920362678,608069.082 232962.224 3315.193329947,608067.286 232962.42 3317) + + + +LINESTRING (608593.352307769 232395.938411375,608585.563959691 232392.207443914,608581.168863295 232389.348858691,608575.749714229 232385.555842676,608569.694104416 232381.265414733,608569.570427128 232381.179181769,608563.291427128 232376.871181769,608562.0683694 232376.15394427,608556.391006459 232373.345133831,608550.715735792 232369.868263198,608545.737041183 232366.28081305,608544.843420067 232365.706449397,608529.456732874 232356.935123403,608513.464396986 232346.481586927,608510.231538015 232345.10577265,608503.648538015 232343.59377265,608501.430048075 232343.340020096,608498.936048075 232343.335020096,608494.190394757 232344.522017809,608492.892394757 232345.218017809,608490.557562691 232346.949317643,608489.557562691 232347.946317643,608488.864151481 232348.713110203,608487.565151481 232350.308110203,608486.381009161 232352.138323895,608485.621696517 232353.651639304,608484.112751429 232355.991719056,608483.674302827 232356.741234835,608481.672302827 232360.532234835,608481.576579103 232360.718181106,608479.336543822 232365.183655436,608477.099898383 232369.35088927,608476.79696244 232369.96486703,608475.1494546 232373.613703763,608473.013660981 232377.531032666,608467.365061436 232386.208510892,608464.03859279 232390.44816404,608463.433781281 232391.308607886,608459.931781281 232396.893607886,608459.914384933 232396.921453093,608456.313384933 232402.706453093,608456.269914274 232402.776937477,608450.967914274 232411.453937477,608450.582813738 232412.144068767,608445.977813738 232421.222068767,608445.848548847 232421.486466266,608442.043548847 232429.568466266,608441.985475789 232429.69406376,608438.260695321 232437.898369961,608435.04470941 232444.308921352,608434.951402515 232444.499953662,608431.694681596 232451.351357104,608428.234041662 232456.354191739,608424.840107944 232460.976563906,608417.126253919 232467.849473981,608414.543698533 232469.225553795,608410.303499368 232470.732000225,608406.188337799 232471.581487762,608405.96802634 232471.629562395,608400.731576839 232472.834226806,608396.021914292 232473.563345488,608391.452751642 232474.250063464,608388.634109531 232475.113041987,608383.841109531 232477.399041987,608380.3291398 232480.188278376,608378.389435431 232484.231954672,608375.876435431 232495.411954673,608375.874205846 232495.421897468,608375.182592692 232498.513511492,608374.460405727 232500.671423441,608373.846832799 232502.13779334,608371.888502471 232503.325835705,608369.019876917 232504.520595195,608365.6930296 232505.325280962,608365.582528885 232505.352675204,608361.290528885 232506.442675204,608360.871054213 232506.5589804,608357.887677219 232507.45652946,608355.208703513 232508.076405513,608354.11523131 232508.396025692,608351.35991799 232509.374925917,608349.103722029 232510.155160931,608347.240190902 232511.023195366,608344.743190902 232512.516195366,608342.813779086 232514.018098983,608341.014779086 232515.812098983,608339.976948349 232517.027391562,608338.676948349 232518.822391562,608338.042241849 232519.81753097,608337.041241849 232521.61253097,608336.416340823 232522.959436688,608334.913340823 232526.951436688,608334.859009881 232527.099260523,608334.061237696 232529.323786954,608333.39064202 232530.659827802,608332.86171491 232531.39239185,608332.312588374 232531.830461557,608330.408055611 232532.749791541,608328.20633286 232533.591975936,608326.645676589 232534.350100982,608324.149676589 232535.843100982,608323.133620811 232536.539244767,608320.835620811 232538.331244767,608319.508424528 232539.576155234,608316.409424528 232543.065155234,608315.846683748 232543.758782651,608311.346683748 232549.841782651,608310.253134513 232551.715823354,608309.452134513 232553.511823354,608308.743105373 232555.813811092,608308.301063294 232558.270088646,608308.262128242 232558.424590365,608307.781971741 232559.198381033,608307.668420276 232559.385931975,608306.667420276 232561.080931975,608306.576965155 232561.237309238,608305.276965155 232563.532309238,608304.161432889 232566.55442974,608303.657432889 232569.14942974,608303.474011278 232571.040981243,608303.468011873 232575.035585149,608303.462869931 232578.287863431,608303.14042713 232581.208928101,608302.204758354 232583.88022199,608301.533394851 232585.26273019,608299.851922758 232587.197167111,608297.401960968 232589.933398946,608296.722542197 232590.780606159,608295.222542197 232592.874606159,608294.973805985 232593.238525204,608294.132429228 232594.52971492,608292.544284932 232596.251183204,608291.285568673 232597.506401085,608289.986825044 232598.542068543,608289.168268344 232598.966104525,608287.925941707 232599.345597986,608285.962807894 232599.734290613,608283.403922659 232600.221415586,608281.574215904 232600.754596476,608279.078215904 232601.748596476,608277.939765215 232602.287343919,608276.141765215 232603.281343919,608274.439729206 232604.468288642,608272.940729206 232605.764288642,608270.971638899 232608.076307962,608270.171638899 232609.372307962,608270.069107559 232609.542155464,608269.068107559 232611.238155464,608268.944172442 232611.4542437,608268.232928297 232612.730926941,608267.750988902 232613.396374028,608266.819385475 232614.325491523,608266.649405872 232614.499188408,608265.097887015 232616.123665131,608263.908723111 232617.083271655,608262.347045458 232618.095470134,608260.24283496 232619.92189062,608255.64483496 232625.20489062,608254.575803894 232626.68767,608251.573803894 232631.77467,608250.889612764 232633.172276895,608249.425433771 232636.866333275,608248.238777183 232639.685326232,608246.494080979 232643.422094436,608245.10126684 232645.851906985,608244.078234366 232648.389030957,608243.455799132 232650.867245316,608242.752866262 232653.051326897,608242.310858066 232655.23428928,608242.107858066 232657.53028928,608242.083520693 232658.949704946,608242.277520693 232662.545704946,608242.302546502 232662.895462782,608242.596546502 232666.191462782,608242.719047957 232667.095958339,608243.411047957 232670.892958339,608243.459796951 232671.142425926,608244.251796951 232674.938425926,608244.334879463 232675.302496235,608245.123292064 232678.482400538,608245.35315982 232681.538935619,608245.471654354 232682.495335132,608246.114653787 232686.208378099,608246.573971848 232690.218075402,608246.592283598 232690.367919174,608247.044823826 232693.85238714,608247.265055121 232697.167169814,608247.026861984 232699.896628871,608247.001635285 232700.263460398,608246.83456706 232703.583738626,608246.002995895 232707.585078375,608241.839426068 232714.945899316,608238.706246463 232718.938331011,608238.443542197 232719.288606159,608236.760216177 232721.638529283,608234.623960968 232724.024398946,608234.505153508 232724.159515108,608231.650214458 232727.465864334,608228.895636045 232730.212090477,608225.220075959 232733.340398512,608223.028220515 232735.088492545,608221.906531186 232735.528110312,608217.121877467 232736.544100288,608216.184708448 232736.791114241,608209.595708448 232738.874114241,608208.981620571 232739.090477439,608204.389620571 232740.878477439,608202.886190902 232741.614195366,608200.462713639 232743.063234835,608197.939978691 232744.513540294,608195.125500588 232746.92333492,608193.925500588 232748.41833492,608192.98702047 232749.813312066,608192.006132454 232751.574986944,608190.724513552 232753.834813047,608188.794662705 232757.237639982,608188.763962426 232757.268258339,608187.408591987 232758.281733533,608185.684617746 232759.522458042,608185.44129981 232759.703231379,608184.14229981 232760.699231379,608182.886570303 232761.843969749,608181.687570304 232763.139969749,608181.22847892 232763.67260796,608180.42847892 232764.66960796,608179.858432409 232765.455309771,608178.358432409 232767.749309771,608177.208866262 232770.158326897,608176.423806436 232772.597585011,608175.293459778 232775.973591282,608174.049987187 232779.306059652,608173.915941397 232779.688822013,608172.610118269 232783.674881838,608171.358158326 232786.308722097,608170.054572148 232788.331453316,608168.913948349 232789.906391562,608168.701769076 232790.211115131,608167.680438217 232791.737583818,608166.577066737 232793.176210477,608165.151603685 232795.743054018,608164.851603685 232796.541054018,608164.778437732 232796.742184012,608164.076437732 232798.738184012,608163.624968813 232800.54399523,608163.120968813 232803.83899523,608163.108879813 232803.920261728,608162.925945282 232805.185709834,608162.55058234 232806.353453652,608161.075827716 232809.639158432,608161.048655952 232809.700241976,608159.34600946 232813.562595914,608157.687201748 232816.86943986,608155.976645839 232819.548849425,608154.233879021 232822.042521424,608153.229980728 232823.09362654,608151.853693563 232824.191130156,608149.914535921 232825.306369894,608149.178055629 232825.773820048,608145.182055629 232828.561820048,608143.84372181 232829.681159005,608141.54472181 232831.973159005,608139.796443689 232834.32115001,608138.483737269 232836.763780944,608136.899264506 232839.221474252,608136.239849333 232840.416118766,608135.03235409 232843.007318235,608133.899053167 232845.179841296,608132.249281488 232848.139047138,608131.039343484 232849.814811275,608129.516392889 232851.586648737,608127.993083931 232853.974130877,608124.689083931 232861.258130877,608124.027666429 232863.248986156,608123.752768352 232864.50378931,608122.769823776 232866.65815252,608120.614372939 232870.95500912,608119.179758916 232873.622703506,608118.537877059 232875.085763736,608116.532877059 232880.873763736,608115.982006187 232884.135876536,608115.980006187 232885.933876536,608116.142047957 232887.737958339,608116.834047957 232891.534958339,608116.949279194 232892.080525204,608118.37336719 232898.001355121,608118.501771671 232899.310294671,608118.581742247 232899.927275511,608119.355845234 232904.723774398,608119.64361318 232906.76500058,608119.459816017 232908.145845011,608118.869921339 232909.79072099,608117.825430747 232912.438912199,608117.149864034 232915.44708954,608116.958681912 232918.333473283,608116.826800746 232919.550436119,608116.669495966 232919.941932803,608116.343456887 232920.357501234,608115.002291135 232921.519572647,608112.577617211 232923.373068797,608110.129995544 232924.94178769,608109.726850888 232925.2142295,608107.436263799 232926.844747517,608097.097421673 232932.418756744,608095.096074456 232933.840011198,608091.74780203 232936.900650546,608089.513271348 232938.682550113,608089.331308794 232938.831184228,608086.282236329 232941.382087282,608083.45774781 232943.685711677,608080.891404814 232945.348213723,608079.241814275 232945.9407628,608077.145780802 232946.285786006,608075.716882853 232946.630475351,608072.622882853 232947.622475351,608071.462396875 232948.076066837,608069.964396875 232948.772066837,608066.891039363 232950.992627589,608065.948955538 232951.995045001,608065.29529981 232952.496231379,608065.230620811 232952.546244767) + + + + +LINESTRING (608068.370872917 232972.36097836,608070.166872917 232972.16497836,608075.231379189 232970.109755232,608077.497141918 232968.342894131,608078.76370019 232967.371768621,608079.965960637 232966.28437241,608079.983992397 232966.265185849,608081.121368857 232965.900519576,608083.389219198 232965.527213994,608085.145610267 232965.071241906,608088.739610267 232963.780241906,608090.795954513 232962.761825842,608094.790954513 232960.173825842,608095.67433878 232959.530407571,608098.97133878 232956.841407571,608099.067691206 232956.761815772,608102.074583037 232954.246201715,608104.480728653 232952.327449887,608104.992925544 232951.889988802,608107.677133752 232949.436367288,608117.474578327 232944.154243256,608118.528149112 232943.4987705,608121.126891814 232941.648896807,608123.718004456 232939.98821231,608124.395123463 232939.513631609,608127.392123463 232937.222631609,608127.867429266 232936.835650041,608130.166429266 232934.843650041,608131.48558666 232933.45860724,608133.28458666 232931.16560724,608134.695984788 232928.721329559,608135.898984788 232925.727329559,608136.561792876 232923.076383133,608136.864792876 232920.280383133,608136.901135966 232919.86391046,608137.003020658 232918.32570012,608137.532569253 232916.983087801,608137.642990119 232916.689739477,608138.644990119 232913.895739477,608139.144575395 232911.839412381,608139.649575395 232908.045412381,608139.639083207 232905.3300243,608139.146083207 232901.8330243,608139.116257753 232901.635724489,608138.37584393 232897.047970481,608138.210228329 232895.359705329,608137.980720806 232893.997474796,608136.459944629 232887.674651272,608136.074885425 232885.561833643,608137.173806645 232882.389486501,608138.296241084 232880.302296494,608138.427420897 232880.049818894,608140.729420897 232875.460818894,608140.888787693 232875.127934725,608142.390787693 232871.835934725,608143.061333571 232869.825013844,608143.338616934 232868.559322785,608145.616019298 232863.53856043,608146.482607111 232862.530351263,608147.006564018 232861.865836836,608148.806564018 232859.372836836,608149.433335063 232858.388434362,608151.435335063 232854.797434362,608151.56716538 232854.55305259,608152.86816538 232852.05905259,608153.066150667 232851.657881234,608154.07929215 232849.4837512,608155.508735494 232847.266525748,608155.912556311 232846.58184999,608156.713124455 232845.092185215,608157.344121525 232844.463109406,608160.263907892 232842.42598118,608162.481464079 232841.150630106,608163.730728653 232840.300449886,608166.228728653 232838.308449886,608167.225594128 232837.396811592,608169.224594128 232835.303811592,608170.189646212 232834.125437036,608172.489646212 232830.834437036,608172.721801936 232830.487012722,608174.822801936 232827.196012722,608175.332441239 232826.298778341,608177.334441239 232822.307778341,608177.546344048 232821.857758024,608179.335860262 232817.798345204,608181.024172284 232814.036841568,608181.421245911 232813.002215319,608182.223245911 232810.507215319,608182.600120187 232808.877738272,608182.897242611 232806.822396355,608183.253696096 232804.492010974,608183.381088971 232804.129794196,608183.746933263 232803.652789523,608184.123230924 232803.127884869,608185.220970503 232801.487216638,608186.412051651 232799.842608438,608186.718618993 232799.394155097,608188.518618993 232796.601155097,608189.144597485 232795.477046338,608190.946597485 232791.686046338,608191.418058603 232790.506177987,608192.85891729 232786.107918524,608194.091012813 232782.805940348,608194.204601822 232782.484942943,608195.407601822 232778.891942943,608195.444133738 232778.780673103,608195.834558178 232777.567585958,608196.331634073 232776.807391222,608196.607344754 232776.463786786,608196.988369906 232776.051936413,608197.490411287 232775.666999373,608199.165382254 232774.461541958,608199.312449754 232774.353649671,608201.310449754 232772.859649671,608202.383614525 232771.931508477,608203.882614525 232770.436508477,608205.519486448 232768.289186953,608208.121486448 232763.701186953,608209.422486448 232761.407186953,608209.46097953 232761.338687934,608209.771366011 232760.781233815,608210.505021309 232760.359459706,608210.652809098 232760.272804634,608212.428988625 232759.210795809,608215.934859151 232757.845705108,608221.75069908 232756.007126481,608226.866122533 232754.920899712,608228.438001874 232754.44946644,608231.732001874 232753.15846644,608234.31821992 232751.666058106,608237.81521992 232748.877058106,608238.06139271 232748.67421822,608242.15839271 232745.18721822,608242.73732316 232744.653796162,608246.03532316 232741.365796162,608246.543846492 232740.819484893,608249.584050546 232737.29857739,608252.023039032 232734.574601054,608252.702457803 232733.727393841,608254.574940724 232731.113407683,608258.038753537 232726.699668989,608258.876054731 232725.449355689,608264.180054731 232716.072355689,608265.26680032 232713.18375529,608266.57380032 232706.89475529,608266.770364715 232705.362539602,608266.967124015 232701.452187302,608267.256138016 232698.140371129,608267.272002007 232696.608070174,608266.980002007 232692.213070174,608266.918716402 232691.588080825,608266.435437798 232687.8669336,608265.952028152 232683.646924598,608265.870345646 232683.078664868,608265.260662054 232679.558006439,608265.00384018 232676.143064381,608264.738120537 232674.486503765,608263.792061254 232670.670763148,608263.064162953 232667.181998057,608262.476863833 232663.959491183,608262.239032956 232661.29319672,608262.092813931 232658.582868819,608262.134449369 232658.111957661,608262.594133738 232656.683673103,608262.773765634 232656.055969043,608263.139410584 232654.600160444,608264.05373316 232653.005093015,608264.439021843 232652.262588986,608266.442021843 232647.972588986,608266.597690265 232647.621770684,608267.899690265 232644.528770684,608267.979387236 232644.333723105,608269.194827113 232641.267224093,608271.33372717 232637.64277886,608274.405536954 232634.113337562,608275.222954542 232633.583529866,608276.063916811 232632.974200514,608278.161916811 232631.281200514,608279.113594128 232630.405811592,608281.028659744 232628.400692865,608282.441614525 232626.991508477,608283.479051651 232625.776608438,608284.779051651 232623.981608438,608285.415827558 232622.9827563,608286.355205828 232621.296572304,608287.063743037 232620.096093677,608287.064006874 232620.095947819,608288.084450372 232619.689569278,608289.739077341 232619.374584414,608289.811255347 232619.36056901,608292.306255347 232618.86656901,608293.285436581 232618.620744471,608295.881436581 232617.827744471,608297.55974464 232617.14332144,608300.05574464 232615.85032144,608301.690728653 232614.789449887,608304.188728653 232612.797449887,608305.015220914 232612.059901017,608306.814220914 232610.265901017,608307.102956457 232609.965718257,608309.401956457 232607.473718257,608310.430194015 232606.152474796,608311.609837294 232604.342176072,608312.664783823 232602.869470717,608314.801039032 232600.483601054,608314.898304949 232600.373349686,608317.497304949 232597.383349686,608318.945440773 232595.191300046,608320.447440773 232592.098300046,608320.889794632 232591.035757476,608322.392794632 232586.744757476,608322.894626529 232584.536189343,608323.40162653 232579.943189343,608323.461987502 232578.861810257,608323.467987502 232575.066810257,608323.472555135 232572.025548588,608323.483409917 232571.969659385,608323.93451357 232571.173287936,608324.833832053 232569.65046593,608326.076028259 232567.648618967,608327.2758354 232564.819641386,608327.7788354 232562.823641386,608327.923894627 232562.151188908,608328.182864715 232560.712180172,608331.659449934 232556.01260953,608333.854846816 232553.540928432,608334.945827368 232552.690172492,608336.165004362 232551.960913177,608337.94766714 232551.279024064,608338.722108605 232550.944700793,608342.018108605 232549.353700793,608343.907254598 232548.165232796,608346.404254598 232546.173232796,608348.275564017 232544.209836836,608350.075564018 232541.716836836,608350.90537049 232540.348912251,608352.20737049 232537.754912251,608352.682990119 232536.644739477,608353.658406692 232533.924865321,608354.871344446 232530.703276821,608355.22182074 232530.07480035,608355.704847018 232529.407852528,608356.064015167 232529.049682623,608356.616893295 232528.719107115,608357.936277971 232528.262839069,608358.01576869 232528.234974308,608360.273150392 232527.432977874,608362.712296487 232526.868594487,608363.338945787 232526.7020196,608366.424474441 232525.77373821,608370.450298729 232524.751336422,608374.4879704 232523.774719038,608375.981779632 232523.2863417,608380.274779632 232521.4983417,608381.616770026 232520.816702726,608386.210770026 232518.029702726,608388.958933263 232515.565789523,608390.258933263 232513.870789523,608391.54898417 232511.645008688,608393.05198417 232508.053008688,608393.310025316 232507.366677811,608394.312025316 232504.372677811,608394.587794154 232503.382102532,608395.390681893 232499.793074502,608396.765612242 232493.676193761,608399.016248358 232493.337936536,608399.059908359 232493.331276075,608404.149908359 232492.543276075,608404.86197366 232492.406437605,608410.342088963 232491.145716982,608415.022662201 232490.179512238,608416.34876869 232489.808974308,608421.93876869 232487.822974308,608423.293468396 232487.225349341,608427.587468396 232484.937349341,608429.53736659 232483.578325652,608438.930366591 232475.209325652,608440.338560769 232473.661391682,608444.438560768 232468.077391682,608444.602122364 232467.847920051,608448.603122364 232462.063920051,608449.410597485 232460.668046338,608452.968959441 232453.182058451,608456.22429059 232446.693078648,608456.391524211 232446.34293624,608460.167922176 232438.024935887,608463.880764256 232430.138683669,608468.240282024 232421.544611508,608473.314496319 232413.240394715,608476.88493975 232407.504483789,608480.098468429 232402.379538708,608483.37240721 232398.20683596,608483.8857984 232397.48947598,608489.9877984 232388.11547598,608490.386832989 232387.446912647,608492.888832989 232382.857912647,608493.22303756 232382.18613297,608494.884084673 232378.50730998,608497.024101617 232374.52011073,608497.151420897 232374.274818894,608499.406531303 232369.779292546,608501.156759057 232366.465050079,608502.722248571 232364.037280944,608502.790657901 232363.917493372,608504.015277578 232364.1987671,608518.768603014 232373.842413073,608519.287579932 232374.159550603,608534.476494346 232382.818134361,608539.326958816 232386.31318695,608539.949040832 232386.727030586,608546.328040832 232390.635030586,608547.1176306 232391.07105573,608552.562614221 232393.764899156,608558.193409183 232397.62816794,608564.210895584 232401.891585267,608564.257770571 232401.924595002,608569.839770571 232405.831595002,608570.121740008 232406.021890968,608575.204740008 232409.327890968,608576.336692231 232409.963588625,608584.711692231 232413.975588625) + + + +SAFE test 16595 line 17 + +LINESTRING(609316.693 232664.454 1574.08996582031,609314.198 232664.449 1576.58501397663,609310.605 232665.44 1580.31223954877,609306.013 232666.729 1585.0818068008,609302.821 232666.223 1588.31371974088,609299.429 232665.417 1591.80022521322,609295.64 232664.21 1595.77689680241,609292.151 232662.105 1599.85178579216,609289.559 232660.402 1602.95323798033,609284.274 232658.793 1608.47783403638,609279.188 232656.785 1613.9459684638,609274.103 232654.777 1619.41317275522,609269.317 232652.47 1624.72627178568,609264.231 232650.961 1630.03150037809,609260.244 232648.656 1634.6369240884,609256.456 232646.051 1639.23428202346,609252.668 232644.246 1643.43042048197,609249.081 232641.242 1648.1092389351,609246.789 232639.24 1651.15252471111,609245.296 232636.64 1654.15075083655,609243.805 232633.641 1657.5) + + + +LINESTRING (609316.71304004 232654.45402008,609314.21804004 232654.44902008,609311.539139895 232654.808955242,609307.946139895 232655.799955242,609307.902402002 232655.812125673,609305.417309672 232656.509704944,609304.762544835 232656.405910769,609302.10630535 232655.774740655,609299.797443009 232655.039243995,609297.481441016 232653.641942707,609295.050071107 232652.044480147,609292.471480493 232650.835524297,609287.571702984 232649.343803954,609282.860561445 232647.483801553,609278.115878653 232645.610188368,609273.659173714 232643.461918771,609272.161412958 232642.883065405,609268.210779581 232641.710925066,609265.587899278 232640.194562112,609262.122395972 232637.811342441,609260.757648365 232637.023496395,609258.115457869 232635.764480068,609255.581235013 232633.642147907,609254.627722574 232632.809280585,609254.117076832 232631.920011376,609252.75940057 232629.189178976) + + + + +LINESTRING (609234.85059943 232638.092821024,609236.34159943 232641.091821024,609236.624055813 232641.619697181,609238.117055813 232644.219697181,609240.210470187 232646.771463702,609242.502470187 232648.773463702,609242.660464605 232648.908598023,609246.247464605 232651.912598023,609248.366351635 232653.273503605,609251.440843269 232654.738513478,609254.577604028 232656.895657559,609255.238945079 232657.31333361,609259.225945079 232659.61833361,609261.386587042 232660.547934595,609265.700394399 232661.827827497,609269.760826286 232663.785081229,609270.43012696 232664.078075402,609275.51512696 232666.086075402,609280.60175172 232668.094322087,609281.361519507 232668.359475703,609285.270262501 232669.54947901,609286.659928893 232670.462519853,609286.985125771 232670.667344507,609290.474125771 232672.772344506,609292.604745905 232673.738233445,609296.393745905 232674.945233445,609297.117189665 232675.146107512,609300.509189665 232675.952107512,609301.255336693 232676.099674461,609304.447336693 232676.605674461,609308.715597998 232676.356874327,609313.285742868 232675.074009184,609315.541957617 232674.451713382,609316.67295996 232674.45397992) + + + +SAFE test 16595 line 18 + +LINESTRING(608928.229 232496.454 2038.69995117188,608923.439 232496.744 2043.49616183397,608919.148 232497.434 2047.83996582031) + + + +LINESTRING (608927.624678561 232486.472276922,608922.834678561 232486.762276922,608921.851377939 232486.870831502,608917.560377939 232487.560831502) + + + + +LINESTRING (608920.735622061 232507.307168498,608924.537659798 232506.69579445,608928.833321439 232506.435723078) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/safe-16596.xml geos-3.8.0/tests/xmltester/tests/misc/safe-16596.xml --- geos-3.7.1/tests/xmltester/tests/misc/safe-16596.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/safe-16596.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,1548 @@ + + +SAFE test 16596 line 1 + +LINESTRING (658588.69478542 2088471.45516372,658599.81438543 2088528.25234777,658608.877809439 2088556.1276758,658620.369153449 2088574.02309982,658620.83814545 2088606.26271585,658625.151233454 2088642.98642788,658627.046657455 2088688.57797992,658622.179585451 2088709.65087594,658607.897841438 2088739.52709997,658598.270193429 2088770.558396,658598.120689429 2088786.11910001,658605.639921436 2088812.86802804) + + + +LINESTRING (658612.378734295 2088810.97372045,658605.129968417 2088785.18694906,658605.260007681 2088771.6521774,658614.432728887 2088742.08717598,658628.495091372 2088712.66987991,658629.00003324 2088711.22615114,658633.867105245 2088690.15325512,658634.04061589 2088688.28721297,658632.145191888 2088642.69566093,658632.103448984 2088642.16991136,658627.832188998 2088605.80234325,658627.368412906 2088573.92128109,658626.259326974 2088570.24079155,658615.255681816 2088553.104859,658606.60248678 2088526.49122492,658595.564371963 2088470.11025453) + + + + +LINESTRING (658581.825198876 2088472.80007291,658592.944798886 2088529.59725696,658593.157423756 2088530.41680181,658602.220847765 2088558.29212984,658602.987635914 2088559.90998407,658613.398967634 2088576.12350927,658613.838885993 2088606.36453457,658613.885929919 2088607.07923236,658618.168236492 2088643.54085644,658620.013422386 2088687.92400694,658615.532270894 2088707.32598812,658601.582335516 2088736.508096,658601.212224526 2088737.45284673,658591.584576517 2088768.48414276,658591.27051649 2088770.49114456,658591.12101249 2088786.05184858,658591.381876569 2088788.0134076,658598.901108576 2088814.76233563) + + + +SAFE test 16596 line 2 + +LINESTRING (658513.98065735 2088478.52178773,658522.161393358 2088517.50444376,658531.288305366 2088538.71148378,658544.346369378 2088555.5102038,658565.913841399 2088576.83602782,658578.21515341 2088591.40447583,658588.83404942 2088619.29516386,658590.899457422 2088647.10393188,658590.612737422 2088677.11327591,658584.637697416 2088732.63455596) + + + +LINESTRING (658591.59751109 2088733.38355104,658597.572551096 2088677.86227098,658597.612417943 2088677.18015336,658597.899137944 2088647.17080933,658597.880229869 2088646.58545716,658595.814821867 2088618.77668914,658595.375941612 2088616.8044518,658584.757045602 2088588.91376378,658583.563531656 2088586.88841005,658571.262219644 2088572.31996204,658570.835625365 2088571.85847394,658549.592827722 2088550.85368656,658537.36429324 2088535.12212583,658528.868239003 2088515.38092946,658520.83143047 2088477.08411333) + + + + +LINESTRING (658507.12988423 2088479.95946212,658515.310620238 2088518.94211816,658515.731576914 2088520.27165545,658524.858488923 2088541.47869547,658525.761627221 2088543.00750854,658538.819691233 2088559.80622855,658539.424585411 2088560.48775767,658560.768391846 2088581.59242212,658572.09752179 2088595.00951458,658581.92889485 2088620.83176189,658583.896976786 2088647.33012635,658583.616324804 2088676.70436562,658577.677883741 2088731.88556089) + + + +SAFE test 16596 line 3 + +LINESTRING (658719.186161541 2088486.04613973,658724.850929547 2088543.90111579) + + + +LINESTRING (658731.817614393 2088543.21898512,658726.152846388 2088485.36400907) + + + + +LINESTRING (658712.219476695 2088486.7282704,658717.8842447 2088544.58324646) + + + +SAFE test 16596 line 4 + +LINESTRING (659042.039025842 2088469.14604372,659035.357441836 2088516.87877976,659024.992513826 2088543.45567579) + + + +LINESTRING (659031.514100815 2088545.99907964,659041.879028825 2088519.42218361,659042.289853984 2088517.84917237,659048.97143799 2088470.11643632) + + + + +LINESTRING (659035.106613694 2088468.17565111,659028.538485803 2088515.09786516,659018.470926837 2088540.91227194) + + + +SAFE test 16596 line 5 + +LINESTRING (658743.362801564 2088478.49721173,658789.830897607 2088497.83954774,658823.805169639 2088522.62137177) + + + +LINESTRING (658827.930343794 2088516.96602579,658793.956071763 2088492.18420176,658792.520909691 2088491.37705326,658746.052813648 2088472.03471724) + + + + +LINESTRING (658740.67278948 2088484.95970621,658786.375507649 2088503.98345384,658819.679995483 2088528.27671775) + + + +SAFE test 16596 line 6 + +LINESTRING (659042.039025842 2088469.14604372,659119.584497914 2088491.01458774,659167.627505959 2088508.15225175,659184.710897975 2088510.54124376) + + + +LINESTRING (659185.680365075 2088503.60870212,659169.30551307 2088501.31879445,659121.936351023 2088484.42150144,659121.484457046 2088484.27736611,659043.938984974 2088462.40882209) + + + + +LINESTRING (659040.13906671 2088475.88326535,659117.456148718 2088497.68740125,659165.27565285 2088514.74533805,659166.658038858 2088515.08479339,659183.741430874 2088517.47378539) + + + +SAFE test 16596 line 7 + +LINESTRING (658743.362801564 2088478.49721173,658719.186161541 2088486.04613973) + + + +LINESTRING (658721.272507222 2088492.7279929,658745.449147245 2088485.17906489) + + + + +LINESTRING (658741.276455883 2088471.81535856,658717.099815861 2088479.36428657) + + + +SAFE test 16596 line 8 + +LINESTRING (658710.132977533 2088457.05772371,658719.186161541 2088486.04613973) + + + +LINESTRING (658725.867895062 2088483.95941092,658716.814711054 2088454.97099489) + + + + +LINESTRING (658703.451244012 2088459.14445252,658712.50442802 2088488.13286855) + + + +SAFE test 16596 line 9 + +LINESTRING (658588.69478542 2088471.45516372,658513.98065735 2088478.52178773) + + + +LINESTRING (658514.639790838 2088485.49068599,658589.353918907 2088478.42406199) + + + + +LINESTRING (658588.035651932 2088464.48626545,658513.321523863 2088471.55288946) + + + +SAFE test 16596 line 10 + +LINESTRING (658879.670529691 2088454.2417237,658872.640753684 2088457.50828371,658842.286337656 2088460.55161171,658804.923649621 2088464.63839571,658784.708849602 2088464.44383571,658769.915121589 2088466.52460372,658743.362801564 2088478.49721173) + + + +LINESTRING (658746.240162862 2088484.87849623,658771.880617381 2088473.31705411,658785.165189071 2088471.44855202,658804.856280321 2088471.63807152,658805.68477993 2088471.59689272,658843.016076514 2088467.51354236,658873.33907138 2088464.47336464,658875.590564811 2088463.85640267,658882.620340818 2088460.58984266) + + + + +LINESTRING (658876.720718563 2088447.89360475,658870.764519778 2088450.66130043,658841.588019961 2088453.58653078,658841.525207347 2088453.5931147,658804.575547015 2088457.63472114,658784.776218902 2088457.44415991,658783.733881993 2088457.51206551,658768.940153979 2088459.59283351,658767.03776029 2088460.14331921,658740.485440266 2088472.11592722) + + + +SAFE test 16596 line 11 + +LINESTRING (658879.670529691 2088454.2417237,658924.572929733 2088474.68178772) + + + +LINESTRING (658927.473063731 2088468.31082054,658882.57066369 2088447.87075653) + + + + +LINESTRING (658876.770395692 2088460.61269088,658921.672795734 2088481.0527549) + + + +SAFE test 16596 line 12 + +LINESTRING (658710.132977533 2088457.05772371,658588.69478542 2088471.45516372) + + + +LINESTRING (658589.51891797 2088478.40648054,658710.957110083 2088464.00904053) + + + + +LINESTRING (658709.308844983 2088450.10640689,658587.87065287 2088464.5038469) + + + +SAFE test 16596 line 13 + +LINESTRING (658582.165761414 2088422.48441167,658582.059249414 2088433.59890768,658588.69478542 2088471.45516372) + + + +LINESTRING (658595.589667793 2088470.24661208,658589.065086394 2088433.02336083,658589.165440006 2088422.55149072) + + + + +LINESTRING (658575.166082821 2088422.41733263,658575.059570821 2088433.53182864,658575.164367041 2088434.80745932,658581.799903047 2088472.66371536) + + + +SAFE test 16596 line 14 + +LINESTRING (659050.37132985 2088411.42418766,659042.039025842 2088469.14604372) + + + +LINESTRING (659048.967214278 2088470.14614621,659057.299518285 2088412.42429016) + + + + +LINESTRING (659043.443141414 2088410.42408517,659035.110837406 2088468.14594122) + + + +SAFE test 16596 line 15 + +LINESTRING (658986.953985791 2088456.38700371,659042.039025842 2088469.14604372) + + + +LINESTRING (659043.618578873 2088462.32658537,658988.533538822 2088449.56754535) + + + + +LINESTRING (658985.374432759 2088463.20646206,659040.459472811 2088475.96550207) + + + +SAFE test 16596 line 16 + +LINESTRING (658582.165761414 2088422.48441167,658551.800049385 2088426.63980368,658502.76478534 2088431.72805968) + + + +LINESTRING (658503.487276951 2088438.69067456,658552.522540997 2088433.60241855,658552.749118335 2088433.57516727,658583.114830363 2088429.41977526) + + + + +LINESTRING (658581.216692464 2088415.54904808,658550.964046971 2088419.68896751,658502.042293728 2088424.76544481) + + + +SAFE test 16596 line 17 + +LINESTRING (658646.889713474 2088403.09599566,658593.966337425 2088408.14738766,658586.127601417 2088414.74092367,658582.165761414 2088422.48441167) + + + +LINESTRING (658588.397480462 2088425.67277767,658591.715410208 2088419.18782391,658596.802945502 2088414.9084545,658647.554821637 2088410.06432624) + + + + +LINESTRING (658646.224605311 2088396.12766507,658593.301229262 2088401.17905708,658591.258177366 2088401.6924772,658589.460388674 2088402.79048316,658581.621652666 2088409.38401916,658579.895882369 2088411.55255768,658575.934042365 2088419.29604568) + + + +SAFE test 16596 line 18 + +LINESTRING (659066.742001865 2088407.13669966,659059.712241858 2088410.40325966,659050.37132985 2088411.42418766) + + + +LINESTRING (659051.131875469 2088418.3827486,659060.472787478 2088417.3618206,659062.662058507 2088416.75137606,659069.691818514 2088413.48481605) + + + + +LINESTRING (659063.792185216 2088400.78858327,659057.80684426 2088403.56982692,659049.61078423 2088404.46562672) + + + +SAFE test 16596 line 19 + +LINESTRING (659036.515569837 2088396.84037965,659041.094897841 2088405.77682766,659050.37132985 2088411.42418766) + + + +LINESTRING (659054.011351724 2088405.44503716,659046.423211801 2088400.82548539,659042.745272805 2088393.64807626) + + + + +LINESTRING (659030.285866869 2088400.03268304,659034.865194873 2088408.96913105,659037.454875967 2088411.75597816,659046.731307976 2088417.40333817) + + + +SAFE test 16596 line 20 + +LINESTRING (658803.90270562 2088409.05055566,658785.232113603 2088409.98239566) + + + +LINESTRING (658785.581045819 2088416.97369356,658804.251637836 2088416.04185356) + + + + +LINESTRING (658803.553773404 2088402.05925776,658784.883181387 2088402.99109776) + + + +SAFE test 16596 line 21 + +LINESTRING (658884.018433695 2088406.48645966,658803.90270562 2088409.05055566) + + + +LINESTRING (658804.126625279 2088416.04697332,658884.242353354 2088413.48287731) + + + + +LINESTRING (658883.794514035 2088399.49004201,658803.678785961 2088402.05413801) + + + +SAFE test 16596 line 22 + +LINESTRING (658885.904641696 2088372.04626763,658823.715057639 2088370.33618763,658818.239745633 2088373.61810763,658807.940337624 2088393.52671565,658803.90270562 2088409.05055566) + + + +LINESTRING (658810.67731078 2088410.81257863,658814.517690904 2088396.04713032,658823.543624862 2088378.60012938,658825.563097716 2088377.38965072,658885.712229461 2088379.04362267) + + + + +LINESTRING (658886.097053932 2088365.04891259,658823.907469874 2088363.33883259,658820.116222031 2088364.33215712,658814.640910026 2088367.61407713,658812.022458177 2088370.40169088,658801.723050168 2088390.3102989,658801.165732464 2088391.76469268,658797.12810046 2088407.2885327) + + + +SAFE test 16596 line 23 + +LINESTRING (658885.904641696 2088372.04626763,658884.018433695 2088406.48645966) + + + +LINESTRING (658891.007959023 2088406.86925946,658892.894167025 2088372.42906743) + + + + +LINESTRING (658878.915116368 2088371.66346783,658877.028908367 2088406.10365986) + + + +SAFE test 16596 line 24 + +LINESTRING (658576.254193408 2088390.19257164,658528.730353364 2088399.74137165,658516.237569352 2088405.17983566,658498.344177336 2088406.11986766) + + + +LINESTRING (658498.711416942 2088413.11022781,658516.604808959 2088412.17019581,658519.031598067 2088411.59804441,658530.840518733 2088406.45728556,658577.633119837 2088397.05541085) + + + + +LINESTRING (658574.87526698 2088383.32973244,658527.351426935 2088392.87853245,658525.936324649 2088393.3231629,658514.605158943 2088398.25594144,658497.976937729 2088399.12950751) + + + +SAFE test 16596 line 25 + +LINESTRING (659041.341697841 2088380.21369164,659036.612865837 2088386.83692364,659036.515569837 2088396.84037965) + + + +LINESTRING (659043.515238761 2088396.9084601,659043.591089527 2088389.10988874,659047.038665203 2088384.28119245) + + + + +LINESTRING (659035.64473048 2088376.14619082,659030.915898476 2088382.76942283,659029.957042517 2088384.66897163,659029.613196912 2088386.76884319,659029.515900912 2088396.7722992) + + + +SAFE test 16596 line 26 + +LINESTRING (659010.944257813 2088387.70117964,659036.515569837 2088396.84037965) + + + +LINESTRING (659038.871430803 2088390.24872439,659013.300118779 2088381.10952438) + + + + +LINESTRING (659008.588396847 2088394.29283491,659034.159708871 2088403.43203491) + + + +SAFE test 16596 line 27 + +LINESTRING (658885.969153697 2088365.37695562,658964.32563377 2088383.91647564,659002.348785805 2088392.06444365,659010.944257813 2088387.70117964) + + + +LINESTRING (659007.775752529 2088381.45933903,659001.391146847 2088384.70031522,658965.865039028 2088377.08743795,658887.580887757 2088358.56503127) + + + + +LINESTRING (658884.357419636 2088372.18887997,658962.713899709 2088390.72839999,658962.858904381 2088390.76108702,659000.882056417 2088398.90905502,659003.251472599 2088399.00599654,659005.517291089 2088398.30628426,659014.112763097 2088393.94302026) + + + +SAFE test 16596 line 28 + +LINESTRING (658733.993217555 2088320.56466758,658765.019377584 2088328.64402759,658785.170673603 2088335.50687559,659010.944257813 2088387.70117964) + + + +LINESTRING (659012.520933138 2088380.88105538,658787.092253745 2088328.76648638,658767.276058773 2088322.01776242,658766.783382737 2088321.86993829,658735.757222708 2088313.79057828) + + + + +LINESTRING (658732.229212402 2088327.33875688,658763.006316968 2088335.35326166,658782.913992414 2088342.13314076,658783.593998278 2088342.32699985,659009.367582488 2088394.5213039) + + + +SAFE test 16596 line 29 + +LINESTRING (659055.401201854 2088373.67954763,659066.243313864 2088378.23122763,659072.38833787 2088386.07097164) + + + +LINESTRING (659077.897606519 2088381.75264338,659071.752582513 2088373.91289937,659068.952925589 2088371.77692641,659058.110813579 2088367.2252464) + + + + +LINESTRING (659052.691590129 2088380.13384885,659061.85631881 2088383.98133837,659066.879069222 2088390.3892999) + + + +SAFE test 16596 line 30 + +LINESTRING (659055.401201854 2088373.67954763,659047.615729847 2088374.71583563,659041.341697841 2088380.21369164) + + + +LINESTRING (659045.95506798 2088385.47836788,659050.637300688 2088381.37538575,659056.324793594 2088380.61835) + + + + +LINESTRING (659054.477610115 2088366.74074526,659046.692138107 2088367.77703326,659043.002359708 2088369.45115939,659036.728327702 2088374.94901539) + + + +SAFE test 16596 line 31 + +LINESTRING (659025.802481827 2088378.95212363,659041.341697841 2088380.21369164) + + + +LINESTRING (659041.908136702 2088373.23664735,659026.368920688 2088371.97507934) + + + + +LINESTRING (659025.236042966 2088385.92916792,659040.77525898 2088387.19073592) + + + +SAFE test 16596 line 32 + +LINESTRING (658736.432369557 2088309.47269957,658785.288449603 2088323.28031558,659025.802481827 2088378.95212363) + + + +LINESTRING (659027.381036091 2088372.13243402,658787.030607875 2088316.4984954,658738.336127704 2088302.73655045) + + + + +LINESTRING (658734.528611411 2088316.20884869,658783.384691456 2088330.0164647,658783.709895339 2088330.1000052,659024.223927563 2088385.77181325) + + + +SAFE test 16596 line 33 + +LINESTRING (659076.181233874 2088234.9347155,659073.633537871 2088257.14117952,659054.753009854 2088360.33477962,659055.401201854 2088373.67954763) + + + +LINESTRING (659062.392958847 2088373.33993881,659061.7839081 2088360.80099831,659080.519236605 2088258.4010021,659080.587919182 2088257.93903952,659083.135615184 2088235.7325755) + + + + +LINESTRING (659069.226852563 2088234.1368555,659066.705788015 2088256.11119196,659047.86731112 2088359.07495703,659047.761252861 2088360.67438844,659048.409444861 2088374.01915645) + + + +SAFE test 16596 line 34 + +LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) + + + +LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) + + + + +LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) + + + +SAFE test 16596 line 35 + +LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) + + + +LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) + + + + +LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) + + + +SAFE test 16596 line 36 + +LINESTRING (658733.993217555 2088320.56466758,658749.415681569 2088334.05177159,658786.640129604 2088344.4136276,658831.650033646 2088353.73817161,658885.969153697 2088365.37695562) + + + +LINESTRING (658887.435733537 2088358.5323122,658833.116613487 2088346.89352819,658833.07004718 2088346.88371601,658788.290580457 2088337.60691089,658752.825874018 2088327.73489933,658738.60128825 2088315.29535221) + + + + +LINESTRING (658729.38514686 2088325.83398295,658744.807610874 2088339.32108696,658747.538519906 2088340.79538072,658784.762967941 2088351.15723673,658785.22011607 2088351.2680832,658830.206720283 2088360.58780027,658884.502573856 2088372.22159904) + + + +SAFE test 16596 line 37 + +LINESTRING (658716.931329539 2088315.95461958,658719.071489541 2088335.98303559) + + + +LINESTRING (658726.031864704 2088335.2392765,658723.891704702 2088315.21086048) + + + + +LINESTRING (658709.970954376 2088316.69837867,658712.111114378 2088336.72679469) + + + +SAFE test 16596 line 38 + +LINESTRING (658925.925633734 2088253.49369152,658910.66086572 2088304.47865156,658911.38481772 2088310.04306757,658923.706609732 2088322.38943558,658939.214081746 2088326.98514759,658971.848945777 2088329.52261959) + + + +LINESTRING (658972.391581848 2088322.5436837,658940.49401693 2088320.06353922,658927.4031826 2088316.18400912,658918.019483354 2088306.78159394,658917.794987784 2088305.05608349,658932.631528772 2088255.50141952) + + + + +LINESTRING (658919.219738696 2088251.48596351,658903.954970682 2088302.47092356,658903.719368599 2088305.38176713,658904.4433206 2088310.94618314,658905.102814348 2088313.13117923,658906.430141456 2088314.98788133,658918.751933467 2088327.33424934,658921.717631171 2088329.10091562,658937.225103185 2088333.69662762,658938.671445674 2088333.96408347,658971.306309705 2088336.50155547) + + + +SAFE test 16596 line 39 + +LINESTRING (658716.931329539 2088315.95461958,658733.993217555 2088320.56466758) + + + +LINESTRING (658735.819110824 2088313.80699684,658718.757222808 2088309.19694884) + + + + +LINESTRING (658715.10543627 2088322.71229031,658732.167324286 2088327.32233832) + + + +SAFE test 16596 line 40 + +LINESTRING (658714.715393537 2088303.70655556,658716.931329539 2088315.95461958) + + + +LINESTRING (658723.819503587 2088314.70840198,658721.603567585 2088302.46033797) + + + + +LINESTRING (658707.827219489 2088304.95277316,658710.043155492 2088317.20083717) + + + +SAFE test 16596 line 41 + +LINESTRING (658503.04844934 2088239.4300755,658513.146097349 2088240.63839551,658548.007169382 2088254.31084352,658565.794049398 2088264.48530753,658627.772673456 2088288.42233155,658716.931329539 2088315.95461958) + + + +LINESTRING (658718.99670384 2088309.26625438,658630.069070018 2088281.80530627,658568.810029811 2088258.14619574,658551.482853956 2088248.23469204,658550.563015286 2088247.79412259,658515.701943253 2088234.12167457,658513.977808301 2088233.68798135,658503.880160292 2088232.47966135) + + + + +LINESTRING (658502.216738388 2088246.38048966,658511.424557054 2088247.48232956,658544.975313579 2088260.64087425,658562.318364824 2088270.561459,658563.27210359 2088271.01522248,658625.250727647 2088294.95224651,658625.707299155 2088295.11069675,658714.865955238 2088322.64298477) + + + +SAFE test 16596 line 42 + +LINESTRING (658714.715393537 2088303.70655556,658736.432369557 2088309.47269957) + + + +LINESTRING (658738.22872135 2088302.70711606,658716.51174533 2088296.94097205) + + + + +LINESTRING (658712.919041745 2088310.47213907,658734.636017765 2088316.23828308) + + + +SAFE test 16596 line 43 + +LINESTRING (658901.023985711 2088255.47717952,658892.734721703 2088308.75180357) + + + +LINESTRING (658899.651495565 2088309.82801885,658907.940759573 2088256.5533948) + + + + +LINESTRING (658894.107211848 2088254.40096424,658885.81794784 2088307.67558829) + + + +SAFE test 16596 line 44 + +LINESTRING (658559.169793392 2088306.66079557,658495.403265333 2088307.16255557) + + + +LINESTRING (658495.458344563 2088314.16233887,658559.224872622 2088313.66057887) + + + + +LINESTRING (658559.114714162 2088299.66101226,658495.348186103 2088300.16277227) + + + +SAFE test 16596 line 45 + +LINESTRING (658708.059377531 2088268.07237953,658714.715393537 2088303.70655556) + + + +LINESTRING (658721.596385345 2088302.42127282,658714.940369339 2088266.78709679) + + + + +LINESTRING (658701.178385723 2088269.35766228,658707.834401729 2088304.99183831) + + + +SAFE test 16596 line 46 + +LINESTRING (658503.17643334 2088226.09247549,658610.85824144 2088268.25157953,658682.145025507 2088294.50079556,658714.715393537 2088303.70655556) + + + +LINESTRING (658716.61930148 2088296.97044878,658684.309603231 2088287.83836505,658613.343880804 2088261.70737033,658505.728422689 2088219.57424334) + + + + +LINESTRING (658500.624443991 2088232.61070764,658608.306252091 2088274.76981168,658608.439467102 2088274.82040977,658679.726251169 2088301.06962579,658680.241117564 2088301.23690233,658712.811485594 2088310.44266234) + + + +SAFE test 16596 line 47 + +LINESTRING (658768.717057587 2088267.54297153,658767.608065586 2088301.99135556) + + + +LINESTRING (658774.604441073 2088302.2165889,658775.713433074 2088267.76820487) + + + + +LINESTRING (658761.720682101 2088267.31773819,658760.6116901 2088301.76612223) + + + +SAFE test 16596 line 48 + +LINESTRING (658768.717057587 2088267.54297153,658708.059377531 2088268.07237953) + + + +LINESTRING (658708.120469793 2088275.07211294,658768.778149849 2088274.54270493) + + + + +LINESTRING (658768.655965326 2088260.54323813,658707.998285269 2088261.07264613) + + + +SAFE test 16596 line 49 + +LINESTRING (658687.663345512 2088205.62885947,658692.179185516 2088221.23359549,658708.059377531 2088268.07237953) + + + +LINESTRING (658714.688725152 2088265.82476966,658698.859319083 2088219.13577927,658694.38744731 2088203.68297792) + + + + +LINESTRING (658680.939243713 2088207.57474102,658685.455083718 2088223.17947704,658685.549837895 2088223.48120535,658701.430029909 2088270.3199894) + + + +SAFE test 16596 line 50 + +LINESTRING (658869.880049682 2088259.62335552,658768.717057587 2088267.54297153) + + + +LINESTRING (658769.263385941 2088274.52161935,658870.426378036 2088266.60200334) + + + + +LINESTRING (658869.333721328 2088252.64470771,658768.170729233 2088260.56432371) + + + +SAFE test 16596 line 51 + +LINESTRING (658901.023985711 2088255.47717952,658869.880049682 2088259.62335552) + + + +LINESTRING (658870.803805916 2088266.56213599,658901.947741945 2088262.41595999) + + + + +LINESTRING (658900.100229476 2088248.53839905,658868.956293447 2088252.68457505) + + + +SAFE test 16596 line 52 + +LINESTRING (658865.007873677 2088119.51967539,658857.91360167 2088129.4555474,658842.298609656 2088135.97433141,658836.802801651 2088141.47935541,658838.282481652 2088149.27404342,658842.904817656 2088153.76530742,658863.844609676 2088159.52428343,658867.65796968 2088167.34252344,658868.32868968 2088178.46418745,658864.269553676 2088196.21010746,658869.880049682 2088259.62335552) + + + +LINESTRING (658876.852812011 2088259.0064394,658871.339695188 2088196.69383026,658875.152454764 2088180.02503019,658875.315994808 2088178.04280039,658874.645274807 2088166.92113638,658873.949480581 2088164.27382818,658870.136120577 2088156.45558817,658868.314890249 2088154.13757835,658865.700864836 2088152.77488962,658846.49392341 2088147.49249165,658844.747096179 2088145.79519785,658844.369767638 2088143.80749899,658846.273742746 2088141.90033108,658860.61032801 2088135.91524299,658863.610489615 2088133.52315945,658870.704761621 2088123.58728744) + + + + +LINESTRING (658859.310985733 2088115.45206335,658853.375936379 2088123.76438781,658839.601883316 2088129.51463582,658837.344717251 2088131.02873235,658831.848909246 2088136.53375636,658830.112310405 2088139.42087858,658829.925618512 2088142.78486377,658831.405298514 2088150.57955178,658832.118348005 2088152.59118924,658833.404426032 2088154.29445908,658838.026762036 2088158.78572308,658841.048562496 2088160.51470123,658858.939361231 2088165.43512645,658860.754673655 2088169.1569225,658861.280905098 2088177.88272359,658857.445788592 2088194.64926472,658857.296791347 2088196.82702359,658862.907287353 2088260.24027165) + + + +SAFE test 16596 line 53 + +LINESTRING (658911.14212972 2088254.46239552,658901.023985711 2088255.47717952) + + + +LINESTRING (658901.722535667 2088262.44223716,658911.840679677 2088261.42745316) + + + + +LINESTRING (658910.443579763 2088247.49733788,658900.325435754 2088248.51212188) + + + +SAFE test 16596 line 54 + +LINESTRING (658925.925633734 2088253.49369152,658911.14212972 2088254.46239552) + + + +LINESTRING (658911.599830223 2088261.44741594,658926.383334237 2088260.47871194) + + + + +LINESTRING (658925.467933231 2088246.5086711,658910.684429217 2088247.4773751) + + + +SAFE test 16596 line 55 + +LINESTRING (658908.646657718 2088109.93503538,658911.14212972 2088254.46239552) + + + +LINESTRING (658918.141086499 2088254.3415485,658915.645614497 2088109.81418836) + + + + +LINESTRING (658901.647700938 2088110.0558824,658904.143172941 2088254.58324254) + + + +SAFE test 16596 line 56 + +LINESTRING (658995.296497798 2088236.3775315,658947.728625754 2088250.36946751,658925.925633734 2088253.49369152) + + + +LINESTRING (658926.918545335 2088260.42291417,658948.721537356 2088257.29869017,658949.703970038 2088257.08497308,658997.271842082 2088243.09303706) + + + + +LINESTRING (658993.321153515 2088229.66202594,658946.236803901 2088243.51173539,658924.932722132 2088246.56446887) + + + +SAFE test 16596 line 57 + +LINESTRING (659056.979185856 2088210.29522748,658995.296497798 2088236.3775315) + + + +LINESTRING (658998.022717199 2088242.82483542,659059.705405256 2088216.74253139) + + + + +LINESTRING (659054.252966455 2088203.84792356,658992.570278398 2088229.93022759) + + + +SAFE test 16596 line 58 + +LINESTRING (658983.381233787 2088181.79525945,658995.296497798 2088236.3775315) + + + +LINESTRING (659002.135440955 2088234.88459597,658990.220176944 2088180.30232392) + + + + +LINESTRING (658976.54229063 2088183.28819498,658988.457554642 2088237.87046703) + + + +SAFE test 16596 line 59 + +LINESTRING (659056.979185856 2088210.29522748,659076.181233874 2088234.9347155) + + + +LINESTRING (659081.702570046 2088230.6318273,659062.500522028 2088205.99233928) + + + + +LINESTRING (659051.457849684 2088214.59811568,659070.659897701 2088239.2376037) + + + +SAFE test 16596 line 60 + +LINESTRING (658687.663345512 2088205.62885947,658626.089217455 2088220.59973949,658613.648625443 2088220.48095549,658606.704881437 2088214.85714748) + + + +LINESTRING (658602.299224729 2088220.29683396,658609.242968735 2088225.92064196,658611.280252971 2088227.06812573,658613.581791799 2088227.48063643,658626.02238381 2088227.59942043,658627.742989048 2088227.40158038,658689.317117105 2088212.43070036) + + + + +LINESTRING (658686.009573919 2088198.82701858,658625.283416339 2088213.59172654,658616.156931879 2088213.50458597,658611.110538144 2088209.417461) + + + +SAFE test 16596 line 61 + +LINESTRING (658777.965825596 2088114.23583539,658787.879153605 2088215.48383548,658787.090673605 2088216.58770748) + + + +LINESTRING (658792.786807903 2088220.65637484,658793.575287904 2088219.55250284,658794.641493787 2088217.29235843,658794.84583973 2088214.80171786,658784.93251172 2088113.55371777) + + + + +LINESTRING (658770.999139472 2088114.91795301,658780.912467481 2088216.1659531) + + + +SAFE test 16596 line 62 + +LINESTRING (658673.348849499 2088157.69439543,658621.22212945 2088160.52882743,658608.771329438 2088161.52108343,658600.953073431 2088165.89253944,658597.757169428 2088174.75423544,658597.650673428 2088185.86873145,658602.135793432 2088204.80863547,658606.704881437 2088214.85714748) + + + +LINESTRING (658613.077068671 2088211.95969518,658608.790259684 2088202.53198191,658604.65851091 2088185.0843049,658604.745454588 2088176.01039453,658606.65104579 2088170.72651556,658610.852328431 2088168.37743384,658621.690286332 2088167.51371193,658673.728918619 2088164.68406977) + + + + +LINESTRING (658672.968780378 2088150.70472108,658620.842060329 2088153.53915308,658620.666033488 2088153.55095116,658608.215233477 2088154.54320716,658605.355132591 2088155.41128809,658597.536876584 2088159.7827441,658595.615201201 2088161.36406066,658594.3682109 2088163.5177583,658591.172306897 2088172.37945431,658590.757490739 2088174.68716648,658590.650994739 2088185.80166249,658590.839059257 2088187.4817759,658595.324179261 2088206.42167992,658595.763606197 2088207.70608777,658600.332694202 2088217.75459978) + + + +SAFE test 16596 line 63 + +LINESTRING (659134.212337928 2088184.36345145,659093.70496189 2088191.75263546,659056.979185856 2088210.29522748) + + + +LINESTRING (659060.134117743 2088216.54393973,659095.956606612 2088198.45741119,659135.468519278 2088191.2498154) + + + + +LINESTRING (659132.956156577 2088177.47708751,659092.448780539 2088184.86627151,659090.550030003 2088185.50392321,659053.824253969 2088204.04651523) + + + +SAFE test 16596 line 64 + +LINESTRING (659028.681969829 2088161.11250743,659056.979185856 2088210.29522748) + + + +LINESTRING (659063.046615405 2088206.80433953,659034.749399379 2088157.62161948) + + + + +LINESTRING (659022.61454028 2088164.60339538,659050.911756307 2088213.78611543) + + + +SAFE test 16596 line 65 + +LINESTRING (658673.348849499 2088157.69439543,658687.663345512 2088205.62885947) + + + +LINESTRING (658694.370659931 2088203.62587837,658680.056163917 2088155.69141433) + + + + +LINESTRING (658666.64153508 2088159.69737653,658680.956031093 2088207.63184057) + + + +SAFE test 16596 line 66 + +LINESTRING (659037.391089838 2088064.49093934,659028.681969829 2088161.11250743) + + + +LINESTRING (659035.653705942 2088161.7409146,659044.36282595 2088065.11934651) + + + + +LINESTRING (659030.419353725 2088063.86253217,659021.710233717 2088160.48410026) + + + +SAFE test 16596 line 67 + +LINESTRING (658808.666369625 2087994.48210728,658873.841905685 2088009.55948329,658910.279921719 2088021.0252113,658941.242609748 2088035.77388331,658962.799857768 2088058.21381934,658988.116209792 2088094.02719537,659028.681969829 2088161.11250743) + + + +LINESTRING (659034.671992973 2088157.49040545,658994.106232936 2088090.40509339,658993.83225228 2088089.98654464,658968.515900256 2088054.17316861,658967.847893114 2088053.36435141,658946.290645094 2088030.92441539,658944.252899291 2088029.45421901,658913.290211262 2088014.705547,658912.381005961 2088014.34797797,658875.942989927 2088002.88224995,658875.419584741 2088002.73959115,658810.24404868 2087987.66221514) + + + + +LINESTRING (658807.088690569 2088001.30199942,658871.999757953 2088016.3181946,658907.711727856 2088027.5554621,658937.079332744 2088041.5443371,658957.387431424 2088062.68397582,658982.255694399 2088097.86346979,659022.691946686 2088164.73460941) + + + +SAFE test 16596 line 68 + +LINESTRING (658661.387505487 2088107.55935538,658673.348849499 2088157.69439543) + + + +LINESTRING (658680.157744699 2088156.06991208,658668.196400687 2088105.93487203) + + + + +LINESTRING (658654.578610287 2088109.18383873,658666.539954299 2088159.31887878) + + + +SAFE test 16596 line 69 + +LINESTRING (658908.646657718 2088109.93503538,658792.036593609 2088106.59065138,658777.965825596 2088114.23583539) + + + +LINESTRING (658781.307753182 2088120.38656868,658793.72124556 2088113.64184562,658908.445979792 2088116.93215825) + + + + +LINESTRING (658908.847335643 2088102.93791252,658792.237271535 2088099.59352852,658788.694666023 2088100.43991809,658774.62389801 2088108.0851021) + + + +SAFE test 16596 line 70 + +LINESTRING (658746.875121567 2088112.82578739,658777.965825596 2088114.23583539) + + + +LINESTRING (658778.282968644 2088107.24302334,658747.192264615 2088105.83297534) + + + + +LINESTRING (658746.557978519 2088119.81859943,658777.648682548 2088121.22864743) + + + +SAFE test 16596 line 71 + +LINESTRING (658754.801905574 2088016.1960273,658746.919153567 2088027.23577131,658746.875121567 2088112.82578739) + + + +LINESTRING (658753.875120641 2088112.82938855,658753.917999945 2088029.47999885,658760.498718161 2088020.26374488) + + + + +LINESTRING (658749.105092988 2088012.12830971,658741.222340981 2088023.16805372,658740.253456518 2088025.09837035,658739.919154493 2088027.23217014,658739.875122493 2088112.82218622) + + + +SAFE test 16596 line 72 + +LINESTRING (658661.387505487 2088107.55935538,658746.875121567 2088112.82578739) + + + +LINESTRING (658747.30553793 2088105.83903265,658661.81792185 2088100.57260064) + + + + +LINESTRING (658660.957089125 2088114.54611012,658746.444705204 2088119.81254212) + + + +SAFE test 16596 line 73 + +LINESTRING (658656.947441483 2088003.02943528,658655.881473482 2088033.03161131,658661.387505487 2088107.55935538) + + + +LINESTRING (658668.368479983 2088107.04360827,658662.890651237 2088032.89761374,658663.943027406 2088003.27798628) + + + + +LINESTRING (658649.951855561 2088002.78088429,658648.88588756 2088032.78306032,658648.900498986 2088033.54735843,658654.406530991 2088108.0751025) + + + +SAFE test 16596 line 74 + +LINESTRING (659037.391089838 2088064.49093934,659082.44606588 2088069.37234735) + + + +LINESTRING (659083.200057108 2088062.41307316,659038.145081066 2088057.53166515) + + + + +LINESTRING (659036.637098609 2088071.45021353,659081.692074651 2088076.33162153) + + + +SAFE test 16596 line 75 + +LINESTRING (659031.873777832 2087911.0414672,659040.785665841 2087954.47852324,659037.391089838 2088064.49093934) + + + +LINESTRING (659044.387759826 2088064.70683068,659047.782335829 2087954.69441458,659047.642831209 2087953.07165327,659038.7309432 2087909.63459723) + + + + +LINESTRING (659025.016612465 2087912.44833717,659033.76370754 2087955.08218295,659030.394419849 2088064.275048) + + + +SAFE test 16596 line 76 + +LINESTRING (658656.947441483 2088003.02943528,658612.615425442 2088003.71551528,658579.149057411 2088006.73017129,658576.763121409 2088012.26489129,658578.925825411 2088030.07020331) + + + +LINESTRING (658585.874752606 2088029.22615898,658583.943532267 2088013.32662734,658612.984103381 2088010.71064786,658657.055760153 2088010.02859717) + + + + +LINESTRING (658656.839122814 2087996.0302734,658612.507106773 2087996.7163534,658611.987407136 2087996.74374413,658578.521039105 2087999.75840013,658576.118050621 2088000.42041711,658574.099357928 2088001.88243624,658572.720907371 2088003.9590908,658570.334971369 2088009.49381081,658569.814194213 2088013.10893562,658571.976898215 2088030.91424764) + + + +SAFE test 16596 line 77 + +LINESTRING (658658.992369485 2087951.91647524,658656.947441483 2088003.02943528) + + + +LINESTRING (658663.941845956 2088003.30926751,658665.986773958 2087952.19630747) + + + + +LINESTRING (658651.997965013 2087951.63664301,658649.953037011 2088002.74960305) + + + +SAFE test 16596 line 78 + +LINESTRING (658810.705153627 2087863.33637915,658808.666369625 2087994.48210728) + + + +LINESTRING (658815.665523911 2087994.59091573,658817.704307913 2087863.44518761) + + + + +LINESTRING (658803.70599934 2087863.2275707,658801.667215338 2087994.37329882) + + + +SAFE test 16596 line 79 + +LINESTRING (658752.821505573 2087979.49484326,658808.666369625 2087994.48210728) + + + +LINESTRING (658810.48077729 2087987.72134365,658754.635913238 2087972.73407963) + + + + +LINESTRING (658751.007097907 2087986.25560689,658806.851961959 2088001.2428709) + + + +SAFE test 16596 line 80 + +LINESTRING (659031.873777832 2087911.0414672,659000.696065803 2087918.52178721,658992.088305795 2087923.99609121,658988.892401792 2087932.85778722,658991.150321795 2087940.66066723,659005.699313808 2087964.14405925,659007.157505809 2087974.16185126,659000.861937804 2087981.88281126,658992.276737796 2087985.13401127,658980.645121785 2087981.68722726,658972.135681777 2087977.15909926,658965.989617771 2087969.31935525,658960.686337766 2087954.81746724,658958.610673764 2087928.11973921) + + + +LINESTRING (658951.631734335 2087928.6623297,658953.707398337 2087955.36005773,658954.112143073 2087957.22162284,658959.415423078 2087971.72351085,658960.480703964 2087973.63813618,658966.626767969 2087981.47788018,658968.847355075 2087983.33865487,658977.356795083 2087987.86678287,658978.656302304 2087988.39875444,658990.287918315 2087991.84553845,658992.535411416 2087992.1292302,658994.755813966 2087991.68032178,659003.341013974 2087988.42912178,659006.287063112 2087986.30638622,659012.582631118 2087978.58542621,659013.904361337 2087976.02731112,659014.08450658 2087973.15355551,659012.626314579 2087963.1357635,659011.649847832 2087960.45744226,658997.607208981 2087937.79135014,658996.248197502 2087933.09490231,658997.862106366 2087928.61980865,659003.466043627 2087925.05585518,659033.506907325 2087917.84829378) + + + + +LINESTRING (659030.24064834 2087904.23464062,658999.062936311 2087911.71496063,658996.93957929 2087912.61511225,658988.331819282 2087918.08941625,658986.624383806 2087919.62052765,658985.503443265 2087921.62131007,658982.307539262 2087930.48300608,658981.896035825 2087932.63225839,658982.1682659 2087934.80355095,658984.426185902 2087942.60643096,658985.19978777 2087944.34728422,658998.982022424 2087966.59306035,658999.787105083 2087972.12398537,658996.624798388 2087976.00227618,658992.003770415 2087977.75225127,658983.31050802 2087975.17618637,658976.731095698 2087971.67508393,658972.182862711 2087965.87348761,658967.590750705 2087953.31629772,658965.589613194 2087927.57714872) + + + +SAFE test 16596 line 81 + +LINESTRING (658696.19840152 2087964.50143525,658752.821505573 2087979.49484326) + + + +LINESTRING (658754.613305111 2087972.72805271,658697.990201059 2087957.73464469) + + + + +LINESTRING (658694.406601981 2087971.2682258,658751.029706034 2087986.26163382) + + + +SAFE test 16596 line 82 + +LINESTRING (658699.010289522 2087914.5077072,658696.19840152 2087964.50143525) + + + +LINESTRING (658703.187355543 2087964.89452768,658705.999243546 2087914.90079963) + + + + +LINESTRING (658692.021335499 2087914.11461477,658689.209447496 2087964.10834282) + + + +SAFE test 16596 line 83 + +LINESTRING (658658.992369485 2087951.91647524,658696.19840152 2087964.50143525) + + + +LINESTRING (658698.44131932 2087957.87049868,658661.235287285 2087945.28553867) + + + + +LINESTRING (658656.749451685 2087958.5474118,658693.95548372 2087971.13237181) + + + +SAFE test 16596 line 84 + +LINESTRING (658601.708785432 2087924.69036321,658658.992369485 2087951.91647524) + + + +LINESTRING (658661.997244788 2087945.59423478,658604.713660735 2087918.36812275) + + + + +LINESTRING (658598.703910129 2087931.01260367,658655.987494182 2087958.23871569) + + + +SAFE test 16596 line 85 + +LINESTRING (659030.066433831 2087856.55749915,659108.139249903 2087905.10841119,659176.210673967 2087942.44857123) + + + +LINESTRING (659179.577241767 2087936.31128997,659111.673464515 2087899.06309156,659033.763024924 2087850.6131561) + + + + +LINESTRING (659026.369842737 2087862.5018422,659104.44265881 2087911.05275424,659104.772682103 2087911.24569245,659172.844106167 2087948.58585249) + + + +SAFE test 16596 line 86 + +LINESTRING (658561.986801395 2087687.54629899,658585.645313417 2087815.60261911,658601.708785432 2087924.69036321) + + + +LINESTRING (658608.634105919 2087923.67059062,658592.570633904 2087814.58284651,658592.528822164 2087814.33088512,658568.870310142 2087686.274565) + + + + +LINESTRING (658555.103292648 2087688.81803298,658578.738600106 2087816.74875386,658594.783464944 2087925.71013581) + + + +SAFE test 16596 line 87 + +LINESTRING (658481.77073732 2087862.40658715,658601.708785432 2087924.69036321) + + + +LINESTRING (658604.934828941 2087918.47806547,658484.996780829 2087856.19428941) + + + + +LINESTRING (658478.544693811 2087868.6188849,658598.482741923 2087930.90266096) + + + +SAFE test 16596 line 88 + +LINESTRING (658765.126897584 2087831.77465112,658763.847921583 2087884.00581917,658758.159617578 2087909.5177552,658699.010289522 2087914.5077072) + + + +LINESTRING (658699.598732851 2087921.4829301,658758.748060906 2087916.49297809,658761.555952341 2087915.63861381,658763.766768635 2087913.7082035,658764.991848616 2087911.04111301,658770.680152621 2087885.52917699,658770.845823908 2087884.17717565,658772.12479991 2087831.9460076) + + + + +LINESTRING (658758.128995259 2087831.60329464,658756.866770664 2087883.15036421,658752.4465761 2087902.97485334,658698.421846194 2087907.53248431) + + + +SAFE test 16596 line 89 + +LINESTRING (658691.683585516 2087786.60703508,658706.96881753 2087814.54277911,658699.010289522 2087914.5077072) + + + +LINESTRING (658705.988210507 2087915.06324183,658713.946738515 2087815.09831374,658713.109686896 2087811.18276074,658697.824454882 2087783.24701672) + + + + +LINESTRING (658685.542716149 2087789.96705345,658699.825086646 2087816.06993798,658692.032368538 2087913.95217257) + + + +SAFE test 16596 line 90 + +LINESTRING (659031.267569832 2087893.25049118,659031.873777832 2087911.0414672) + + + +LINESTRING (659038.869717759 2087910.80308822,659038.263509759 2087893.0121122) + + + + +LINESTRING (659024.271629905 2087893.48887016,659024.877837906 2087911.27984618) + + + +SAFE test 16596 line 91 + +LINESTRING (659030.066433831 2087856.55749915,659031.267569832 2087893.25049118) + + + +LINESTRING (659038.263822369 2087893.02147059,659037.062686368 2087856.32847855) + + + + +LINESTRING (659023.070181293 2087856.78651974,659024.271317294 2087893.47951177) + + + +SAFE test 16596 line 92 + +LINESTRING (658955.842801762 2087892.52345118,659031.267569832 2087893.25049118) + + + +LINESTRING (659031.335041615 2087886.25081636,658955.910273545 2087885.52377636) + + + + +LINESTRING (658955.775329979 2087899.523126,659031.200098049 2087900.250166) + + + +SAFE test 16596 line 93 + +LINESTRING (658719.071489541 2088335.98303559,658720.306433542 2088369.34188363,658719.815921542 2088420.46917967,658710.132977533 2088457.05772371) + + + +LINESTRING (658716.900017461 2088458.84858121,658726.58296147 2088422.26003718,658726.815599411 2088420.53633413,658727.306111412 2088369.40903809,658727.30164179 2088369.08292113,658726.066697789 2088335.7240731) + + + + +LINESTRING (658712.076281294 2088336.24199809,658713.3051908 2088369.43783972,658712.824651947 2088419.52560962,658703.365937604 2088455.2668662) + + + +SAFE test 16596 line 94 + +LINESTRING (658884.018433695 2088406.48645966,658883.653889694 2088444.27615569,658882.024689693 2088452.0411477,658879.670529691 2088454.2417237) + + + +LINESTRING (658884.450656758 2088459.35546844,658886.80481676 2088457.15489244,658888.123761929 2088455.47645233,658888.875521066 2088453.47854448,658890.504721068 2088445.71355247,658890.653564015 2088444.34367911,658891.018108015 2088406.55398307) + + + + +LINESTRING (658877.018759375 2088406.41893625,658876.660893724 2088443.516335,658875.628194971 2088448.43831976,658874.890402624 2088449.12797897) + + + +SAFE test 16596 line 95 + +LINESTRING (658719.071489541 2088335.98303559,658613.265665443 2088341.6375636,658491.068657329 2088353.80677961) + + + +LINESTRING (658491.762334033 2088360.77232429,658613.799566772 2088348.6190198,658719.445053969 2088342.9730606) + + + + +LINESTRING (658718.697925113 2088328.99301059,658612.892101014 2088334.64753859,658612.571988739 2088334.67201892,658490.374980625 2088346.84123493) + + + +SAFE test 16596 line 96 + +LINESTRING (658752.821505573 2087979.49484326,658754.801905574 2088016.1960273) + + + +LINESTRING (658761.791736847 2088015.81885522,658759.811336845 2087979.11767118) + + + + +LINESTRING (658745.8316743 2087979.87201534,658747.812074302 2088016.57319937) + + + +SAFE test 16596 line 97 + +LINESTRING (659022.622977824 2087822.02719512,659030.066433831 2087856.55749915) + + + +LINESTRING (659036.909254942 2087855.08244008,659029.465798935 2087820.55213605) + + + + +LINESTRING (659015.780156713 2087823.50225418,659023.223612719 2087858.03255821) + + + +SAFE test 16596 line 98 + +LINESTRING (658981.346545785 2087828.29817112,659030.066433831 2087856.55749915) + + + +LINESTRING (659033.578627202 2087850.50237754,658984.858739157 2087822.24304951) + + + + +LINESTRING (658977.834352414 2087834.35329273,659026.554240459 2087862.61262076) + + + +SAFE test 16596 line 99 + +LINESTRING (658940.349681747 2087805.6718671,658939.325697746 2087831.22783512,658940.752113748 2087844.57977114,658945.332465752 2087853.51724314,658953.086193759 2087855.81509915,658964.77105777 2087853.70463514,658983.518449787 2087844.99244314) + + + +LINESTRING (658980.568429602 2087838.64442133,658962.639130405 2087846.97643343,658953.47964302 2087848.63077604,658950.195073637 2087847.6573775,658947.574443173 2087842.54383789,658946.340647232 2087830.99491777,658947.344069366 2087805.95212027) + + + + +LINESTRING (658933.355294129 2087805.39161393,658932.331310128 2087830.94758196,658932.365304913 2087831.97142884,658933.791720915 2087845.32336485,658934.522552024 2087847.77235015,658939.102904028 2087856.70982215,658940.862367992 2087858.90409993,658943.343485305 2087860.22872262,658951.097213312 2087862.52657862,658954.330369335 2087862.70364233,658966.015233346 2087860.59317832,658967.721077956 2087860.05265696,658986.468469973 2087851.34046495) + + + +SAFE test 16596 line 100 + +LINESTRING (659022.622977824 2087822.02719512,658981.346545785 2087828.29817112) + + + +LINESTRING (658982.397964957 2087835.21875764,659023.674396996 2087828.94778163) + + + + +LINESTRING (659021.571558652 2087815.1066086,658980.295126614 2087821.37758461) + + + +SAFE test 16596 line 101 + +LINESTRING (658940.349681747 2087805.6718671,658981.346545785 2087828.29817112) + + + +LINESTRING (658984.728928867 2087822.16959178,658943.732064828 2087799.54328776) + + + + +LINESTRING (658936.967298666 2087811.80044644,658977.964162704 2087834.42675046) + + + +SAFE test 16596 line 102 + +LINESTRING (659119.289585914 2087797.39385109,659081.879809879 2087805.9247951,659060.809985859 2087813.50239511,659029.62099383 2087822.09477912,659022.622977824 2087822.02719512) + + + +LINESTRING (659022.555377816 2087829.0268687,659029.553393822 2087829.0944527,659031.480189196 2087828.8433636,659062.669181225 2087820.2509796,659063.178936196 2087820.08935756,659083.849655145 2087812.65529262,659120.845915752 2087804.21864687) + + + + +LINESTRING (659117.733256076 2087790.56905531,659080.323480041 2087799.09999932,659079.510859543 2087799.33783265,659058.692823986 2087806.82487888,659028.707601294 2087815.08563151,659022.690577832 2087815.02752153) + + + +SAFE test 16596 line 103 + +LINESTRING (658990.832897794 2087731.68274703,659003.751665806 2087762.93215506,659022.622977824 2087822.02719512) + + + +LINESTRING (659029.291226382 2087819.89776769,659010.419914364 2087760.80272763,659010.220662504 2087760.25781744,658997.301894492 2087729.00840941) + + + + +LINESTRING (658984.363901097 2087734.35708465,658997.171742213 2087765.3381699,659015.954729266 2087824.15662254) + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/safe-TestBufferJagged.xml geos-3.8.0/tests/xmltester/tests/misc/safe-TestBufferJagged.xml --- geos-3.7.1/tests/xmltester/tests/misc/safe-TestBufferJagged.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/safe-TestBufferJagged.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,75 @@ + + +com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + +Test case from Safe Software. +See http://trac.osgeo.org/geos/wiki/BufferRobustness + + + + POLYGON ((99736.4572496327 -2239219.11305743, 99736.6573549178 -2239219.11305743, 99736.6573549178 -2239219.01300479, 99736.5573022753 -2239219.01300479, 99736.5573022753 -2239218.8128995, 99736.6573549178 -2239218.8128995, 99736.6573549178 -2239218.91295215, 99736.7574075604 -2239218.91295215, 99736.7574075604 -2239219.01300479, 99736.8574602029 -2239219.01300479, 99736.8574602029 -2239219.11305743, 99736.9575128455 -2239219.11305743, 99736.9575128455 -2239219.21311007, 99737.057565488 -2239219.21311007, 99737.057565488 -2239219.01300479, 99737.2576707731 -2239219.01300479, 99737.2576707731 -2239219.11305743, 99737.4577760582 -2239219.11305743, 99737.4577760582 -2239219.01300479, 99737.958039271 -2239219.01300479, 99737.958039271 -2239218.91295215, 99738.0580919136 -2239218.91295215, 99738.0580919136 -2239218.51274158, 99738.1581445561 -2239218.51274158, 99738.1581445561 -2239218.61279422, 99738.3582498412 -2239218.61279422, 99738.3582498412 -2239218.41268893, 99738.4583024838 -2239218.41268893, 99738.4583024838 -2239218.61279422, 99738.5583551263 -2239218.61279422, 99738.5583551263 -2239218.41268893, 99738.6584077689 -2239218.41268893, 99738.6584077689 -2239218.31263629, 99738.4583024838 -2239218.31263629, 99738.4583024838 -2239218.11253101, 99738.5583551263 -2239218.11253101, 99738.5583551263 -2239218.21258365, 99738.6584077689 -2239218.21258365, 99738.6584077689 -2239218.11253101, 99738.7584604114 -2239218.11253101, 99738.7584604114 -2239218.41268893, 99738.858513054 -2239218.41268893, 99738.858513054 -2239218.31263629, 99738.9585656965 -2239218.31263629, 99738.9585656965 -2239218.21258365, 99738.858513054 -2239218.21258365, 99738.858513054 -2239217.91242572, 99738.9585656965 -2239217.91242572, 99738.9585656965 -2239218.01247836, 99739.1586709816 -2239218.01247836, 99739.1586709816 -2239217.91242572, 99739.2587236242 -2239217.91242572, 99739.2587236242 -2239218.01247836, 99739.3587762667 -2239218.01247836, 99739.3587762667 -2239218.11253101, 99739.4588289093 -2239218.11253101, 99739.4588289093 -2239217.91242572, 99739.5588815519 -2239217.91242572, 99739.5588815519 -2239218.01247836, 99739.6589341944 -2239218.01247836, 99739.6589341944 -2239217.81237308, 99739.8590394795 -2239217.81237308, 99739.8590394795 -2239217.71232044, 99740.0591447646 -2239217.71232044, 99740.0591447646 -2239217.61226779, 99740.1591974072 -2239217.61226779, 99740.1591974072 -2239217.71232044, 99740.2592500497 -2239217.71232044, 99740.2592500497 -2239217.51221515, 99740.0591447646 -2239217.51221515, 99740.0591447646 -2239217.41216251, 99740.2592500497 -2239217.41216251, 99740.2592500497 -2239217.21205722, 99740.3593026923 -2239217.21205722, 99740.3593026923 -2239217.01195194, 99740.2592500497 -2239217.01195194, 99740.2592500497 -2239217.11200458, 99740.1591974072 -2239217.11200458, 99740.1591974072 -2239217.01195194, 99740.0591447646 -2239217.01195194, 99740.0591447646 -2239217.31210987, 99739.8590394795 -2239217.31210987, 99739.8590394795 -2239217.41216251, 99739.6589341944 -2239217.41216251, 99739.6589341944 -2239217.51221515, 99739.4588289093 -2239217.51221515, 99739.4588289093 -2239217.61226779, 99738.9585656965 -2239217.61226779, 99738.9585656965 -2239217.51221515, 99738.7584604114 -2239217.51221515, 99738.7584604114 -2239217.41216251, 99738.5583551263 -2239217.41216251, 99738.5583551263 -2239217.31210987, 99738.4583024838 -2239217.31210987, 99738.4583024838 -2239217.21205722, 99738.6584077689 -2239217.21205722, 99738.6584077689 -2239217.11200458, 99738.9585656965 -2239217.11200458, 99738.9585656965 -2239217.01195194, 99738.7584604114 -2239217.01195194, 99738.7584604114 -2239216.9118993, 99738.3582498412 -2239216.9118993, 99738.3582498412 -2239217.01195194, 99738.2581971987 -2239217.01195194, 99738.2581971987 -2239216.9118993, 99738.1581445561 -2239216.9118993, 99738.1581445561 -2239217.01195194, 99738.0580919136 -2239217.01195194, 99738.0580919136 -2239216.9118993, 99737.8579866284 -2239216.9118993, 99737.8579866284 -2239216.61174137, 99737.6578813433 -2239216.61174137, 99737.6578813433 -2239216.41163608, 99737.4577760582 -2239216.41163608, 99737.4577760582 -2239216.2115308, 99737.2576707731 -2239216.2115308, 99737.2576707731 -2239215.81132023, 99737.057565488 -2239215.81132023, 99737.057565488 -2239215.41110966, 99736.9575128455 -2239215.41110966, 99736.9575128455 -2239215.31105701, 99736.8574602029 -2239215.31105701, 99736.8574602029 -2239215.01089909, 99736.9575128455 -2239215.01089909, 99736.9575128455 -2239214.91084644, 99737.057565488 -2239214.91084644, 99737.057565488 -2239214.8107938, 99737.1576181306 -2239214.8107938, 99737.1576181306 -2239214.71074116, 99737.3577234157 -2239214.71074116, 99737.3577234157 -2239214.61068852, 99737.6578813433 -2239214.61068852, 99737.6578813433 -2239214.41058323, 99737.8579866284 -2239214.41058323, 99737.8579866284 -2239214.31053059, 99737.958039271 -2239214.31053059, 99737.958039271 -2239214.1104253, 99737.5578287008 -2239214.1104253, 99737.5578287008 -2239214.21047795, 99737.4577760582 -2239214.21047795, 99737.4577760582 -2239214.01037266, 99737.6578813433 -2239214.01037266, 99737.6578813433 -2239213.91032002, 99737.7579339859 -2239213.91032002, 99737.7579339859 -2239213.71021473, 99737.8579866284 -2239213.71021473, 99737.8579866284 -2239213.61016209, 99737.7579339859 -2239213.61016209, 99737.7579339859 -2239213.51010945, 99737.8579866284 -2239213.51010945, 99737.8579866284 -2239213.41005681, 99737.958039271 -2239213.41005681, 99737.958039271 -2239213.31000416, 99737.8579866284 -2239213.31000416, 99737.8579866284 -2239213.20995152, 99737.7579339859 -2239213.20995152, 99737.7579339859 -2239213.31000416, 99737.5578287008 -2239213.31000416, 99737.5578287008 -2239213.10989888, 99737.3577234157 -2239213.10989888, 99737.3577234157 -2239212.90979359, 99737.4577760582 -2239212.90979359, 99737.4577760582 -2239212.80974095, 99737.3577234157 -2239212.80974095, 99737.3577234157 -2239212.70968831, 99737.2576707731 -2239212.70968831, 99737.2576707731 -2239212.30947774, 99737.057565488 -2239212.30947774, 99737.057565488 -2239212.2094251, 99736.9575128455 -2239212.2094251, 99736.9575128455 -2239212.10937245, 99737.057565488 -2239212.10937245, 99737.057565488 -2239212.00931981, 99737.1576181306 -2239212.00931981, 99737.1576181306 -2239212.10937245, 99737.2576707731 -2239212.10937245, 99737.2576707731 -2239212.2094251, 99737.3577234157 -2239212.2094251, 99737.3577234157 -2239212.40953038, 99737.4577760582 -2239212.40953038, 99737.4577760582 -2239212.30947774, 99737.5578287008 -2239212.30947774, 99737.5578287008 -2239212.2094251, 99737.6578813433 -2239212.2094251, 99737.6578813433 -2239212.10937245, 99737.5578287008 -2239212.10937245, 99737.5578287008 -2239212.00931981, 99737.4577760582 -2239212.00931981, 99737.4577760582 -2239211.90926717, 99737.2576707731 -2239211.90926717, 99737.2576707731 -2239211.80921452, 99737.1576181306 -2239211.80921452, 99737.1576181306 -2239211.70916188, 99737.057565488 -2239211.70916188, 99737.057565488 -2239211.60910924, 99736.9575128455 -2239211.60910924, 99736.9575128455 -2239211.5090566, 99736.7574075604 -2239211.5090566, 99736.7574075604 -2239211.40900395, 99736.5573022753 -2239211.40900395, 99736.5573022753 -2239211.00879338, 99736.4572496327 -2239211.00879338, 99736.4572496327 -2239210.90874074, 99736.157091705 -2239210.90874074, 99736.157091705 -2239210.8086881, 99736.2571443476 -2239210.8086881, 99736.2571443476 -2239210.60858281, 99736.3571969901 -2239210.60858281, 99736.3571969901 -2239210.40847753, 99736.2571443476 -2239210.40847753, 99736.2571443476 -2239210.50853017, 99736.0570390625 -2239210.50853017, 99736.0570390625 -2239210.40847753, 99736.157091705 -2239210.40847753, 99736.157091705 -2239210.30842489, 99735.9569864199 -2239210.30842489, 99735.9569864199 -2239210.20837224, 99736.0570390625 -2239210.20837224, 99736.0570390625 -2239209.90821432, 99735.8569337774 -2239209.90821432, 99735.8569337774 -2239209.80816167, 99735.9569864199 -2239209.80816167, 99735.9569864199 -2239209.60805639, 99735.8569337774 -2239209.60805639, 99735.8569337774 -2239209.50800375, 99735.7568811348 -2239209.50800375, 99735.7568811348 -2239209.4079511, 99735.8569337774 -2239209.4079511, 99735.8569337774 -2239209.30789846, 99735.7568811348 -2239209.30789846, 99735.7568811348 -2239209.20784582, 99735.6568284923 -2239209.20784582, 99735.6568284923 -2239209.00774053, 99735.7568811348 -2239209.00774053, 99735.7568811348 -2239208.80763525, 99735.6568284923 -2239208.80763525, 99735.6568284923 -2239208.60752996, 99735.5567758497 -2239208.60752996, 99735.5567758497 -2239208.50747732, 99735.6568284923 -2239208.50747732, 99735.6568284923 -2239208.40742468, 99735.5567758497 -2239208.40742468, 99735.5567758497 -2239208.30737204, 99735.4567232072 -2239208.30737204, 99735.4567232072 -2239208.20731939, 99735.5567758497 -2239208.20731939, 99735.5567758497 -2239208.00721411, 99735.4567232072 -2239208.00721411, 99735.4567232072 -2239207.90716147, 99735.3566705646 -2239207.90716147, 99735.3566705646 -2239207.70705618, 99735.4567232072 -2239207.70705618, 99735.4567232072 -2239207.50695089, 99735.3566705646 -2239207.50695089, 99735.3566705646 -2239207.40689825, 99735.4567232072 -2239207.40689825, 99735.4567232072 -2239207.30684561, 99735.2566179221 -2239207.30684561, 99735.2566179221 -2239207.20679297, 99735.3566705646 -2239207.20679297, 99735.3566705646 -2239207.10674032, 99735.1565652795 -2239207.10674032, 99735.1565652795 -2239207.30684561, 99735.0565126369 -2239207.30684561, 99735.0565126369 -2239207.00668768, 99734.9564599944 -2239207.00668768, 99734.9564599944 -2239207.40689825, 99734.8564073518 -2239207.40689825, 99734.8564073518 -2239207.00668768, 99734.7563547093 -2239207.00668768, 99734.7563547093 -2239206.90663504, 99734.6563020667 -2239206.90663504, 99734.6563020667 -2239206.8065824, 99734.5562494242 -2239206.8065824, 99734.5562494242 -2239206.70652975, 99734.2560914965 -2239206.70652975, 99734.2560914965 -2239206.60647711, 99734.3561441391 -2239206.60647711, 99734.3561441391 -2239206.30631918, 99734.156038854 -2239206.30631918, 99734.156038854 -2239206.20626654, 99734.0559862114 -2239206.20626654, 99734.0559862114 -2239206.1062139, 99734.2560914965 -2239206.1062139, 99734.2560914965 -2239205.90610861, 99734.3561441391 -2239205.90610861, 99734.3561441391 -2239205.80605597, 99734.4561967816 -2239205.80605597, 99734.4561967816 -2239205.70600333, 99734.6563020667 -2239205.70600333, 99734.6563020667 -2239205.80605597, 99734.8564073518 -2239205.80605597, 99734.8564073518 -2239205.30579276, 99734.3561441391 -2239205.30579276, 99734.3561441391 -2239205.10568747, 99734.0559862114 -2239205.10568747, 99734.0559862114 -2239205.00563483, 99733.8558809263 -2239205.00563483, 99733.8558809263 -2239204.90558219, 99733.6557756412 -2239204.90558219, 99733.6557756412 -2239204.80552955, 99733.4556703561 -2239204.80552955, 99733.4556703561 -2239204.7054769, 99733.3556177135 -2239204.7054769, 99733.3556177135 -2239204.60542426, 99733.1555124284 -2239204.60542426, 99733.1555124284 -2239204.50537162, 99732.8553545008 -2239204.50537162, 99732.8553545008 -2239204.60542426, 99732.7553018582 -2239204.60542426, 99732.7553018582 -2239204.90558219, 99732.5551965731 -2239204.90558219, 99732.5551965731 -2239205.00563483, 99732.4551439306 -2239205.00563483, 99732.4551439306 -2239205.10568747, 99732.355091288 -2239205.10568747, 99732.355091288 -2239205.20574012, 99732.1549860029 -2239205.20574012, 99732.1549860029 -2239205.30579276, 99731.9548807178 -2239205.30579276, 99731.9548807178 -2239205.4058454, 99731.454617505 -2239205.4058454, 99731.454617505 -2239205.50589804, 99731.0544069348 -2239205.50589804, 99731.0544069348 -2239205.60595069, 99730.8543016497 -2239205.60595069, 99730.8543016497 -2239205.70600333, 99730.7542490072 -2239205.70600333, 99730.7542490072 -2239205.80605597, 99730.554143722 -2239205.80605597, 99730.554143722 -2239205.90610861, 99730.4540910795 -2239205.90610861, 99730.4540910795 -2239206.00616126, 99730.3540384369 -2239206.00616126, 99730.3540384369 -2239206.50642447, 99730.2539857944 -2239206.50642447, 99730.2539857944 -2239206.70652975, 99730.1539331518 -2239206.70652975, 99730.1539331518 -2239206.8065824, 99729.9538278667 -2239206.8065824, 99729.9538278667 -2239206.90663504, 99729.5536172965 -2239206.90663504, 99729.5536172965 -2239207.00668768, 99729.3535120114 -2239207.00668768, 99729.3535120114 -2239207.10674032, 99729.2534593688 -2239207.10674032, 99729.2534593688 -2239207.20679297, 99729.0533540837 -2239207.20679297, 99729.0533540837 -2239207.30684561, 99728.9533014412 -2239207.30684561, 99728.9533014412 -2239207.40689825, 99728.8532487986 -2239207.40689825, 99728.8532487986 -2239207.50695089, 99728.7531961561 -2239207.50695089, 99728.7531961561 -2239207.60700354, 99728.6531435135 -2239207.60700354, 99728.6531435135 -2239208.10726675, 99728.553090871 -2239208.10726675, 99728.553090871 -2239208.30737204, 99728.4530382284 -2239208.30737204, 99728.4530382284 -2239208.50747732, 99728.6531435135 -2239208.50747732, 99728.6531435135 -2239208.60752996, 99728.2529329433 -2239208.60752996, 99728.2529329433 -2239208.70758261, 99727.8527223731 -2239208.70758261, 99727.8527223731 -2239208.60752996, 99727.5525644454 -2239208.60752996, 99727.5525644454 -2239208.70758261, 99727.4525118029 -2239208.70758261, 99727.4525118029 -2239208.60752996, 99726.4519853773 -2239208.60752996, 99726.4519853773 -2239208.70758261, 99726.2518800922 -2239208.70758261, 99726.2518800922 -2239208.80763525, 99726.1518274497 -2239208.80763525, 99726.1518274497 -2239208.90768789, 99726.0517748071 -2239208.90768789, 99726.0517748071 -2239209.00774053, 99725.9517221646 -2239209.00774053, 99725.9517221646 -2239209.10779318, 99725.851669522 -2239209.10779318, 99725.851669522 -2239209.20784582, 99725.7516168795 -2239209.20784582, 99725.7516168795 -2239209.4079511, 99725.6515642369 -2239209.4079511, 99725.6515642369 -2239209.50800375, 99725.7516168795 -2239209.50800375, 99725.7516168795 -2239209.60805639, 99725.6515642369 -2239209.60805639, 99725.6515642369 -2239209.90821432, 99725.5515115944 -2239209.90821432, 99725.5515115944 -2239210.50853017, 99725.4514589518 -2239210.50853017, 99725.4514589518 -2239211.20889867, 99725.5515115944 -2239211.20889867, 99725.5515115944 -2239211.40900395, 99725.6515642369 -2239211.40900395, 99725.6515642369 -2239211.5090566, 99725.7516168795 -2239211.5090566, 99725.7516168795 -2239211.40900395, 99725.851669522 -2239211.40900395, 99725.851669522 -2239211.10884603, 99725.9517221646 -2239211.10884603, 99725.9517221646 -2239210.90874074, 99726.0517748071 -2239210.90874074, 99726.0517748071 -2239210.20837224, 99726.1518274497 -2239210.20837224, 99726.1518274497 -2239210.1083196, 99726.2518800922 -2239210.1083196, 99726.2518800922 -2239210.00826696, 99726.4519853773 -2239210.00826696, 99726.4519853773 -2239209.90821432, 99726.6520906625 -2239209.90821432, 99726.6520906625 -2239210.00826696, 99726.9522485901 -2239210.00826696, 99726.9522485901 -2239210.1083196, 99727.1523538752 -2239210.1083196, 99727.1523538752 -2239210.20837224, 99727.7526697305 -2239210.20837224, 99727.7526697305 -2239210.1083196, 99728.6531435135 -2239210.1083196, 99728.6531435135 -2239210.00826696, 99728.7531961561 -2239210.00826696, 99728.7531961561 -2239210.1083196, 99729.0533540837 -2239210.1083196, 99729.0533540837 -2239210.20837224, 99729.1534067263 -2239210.20837224, 99729.1534067263 -2239210.00826696, 99728.9533014412 -2239210.00826696, 99728.9533014412 -2239209.90821432, 99729.1534067263 -2239209.90821432, 99729.1534067263 -2239209.80816167, 99728.9533014412 -2239209.80816167, 99728.9533014412 -2239209.70810903, 99728.8532487986 -2239209.70810903, 99728.8532487986 -2239209.60805639, 99728.9533014412 -2239209.60805639, 99728.9533014412 -2239209.4079511, 99728.8532487986 -2239209.4079511, 99728.8532487986 -2239209.30789846, 99728.9533014412 -2239209.30789846, 99728.9533014412 -2239209.00774053, 99729.0533540837 -2239209.00774053, 99729.0533540837 -2239208.90768789, 99729.5536172965 -2239208.90768789, 99729.5536172965 -2239208.80763525, 99729.7537225816 -2239208.80763525, 99729.7537225816 -2239208.90768789, 99729.8537752242 -2239208.90768789, 99729.8537752242 -2239209.00774053, 99729.9538278667 -2239209.00774053, 99729.9538278667 -2239209.10779318, 99730.1539331518 -2239209.10779318, 99730.1539331518 -2239209.30789846, 99730.0538805093 -2239209.30789846, 99730.0538805093 -2239209.4079511, 99730.1539331518 -2239209.4079511, 99730.1539331518 -2239209.50800375, 99730.0538805093 -2239209.50800375, 99730.0538805093 -2239209.80816167, 99729.9538278667 -2239209.80816167, 99729.9538278667 -2239210.00826696, 99729.8537752242 -2239210.00826696, 99729.8537752242 -2239210.1083196, 99729.7537225816 -2239210.1083196, 99729.7537225816 -2239210.20837224, 99729.5536172965 -2239210.20837224, 99729.5536172965 -2239210.1083196, 99729.3535120114 -2239210.1083196, 99729.3535120114 -2239210.30842489, 99729.2534593688 -2239210.30842489, 99729.2534593688 -2239210.40847753, 99729.3535120114 -2239210.40847753, 99729.3535120114 -2239210.8086881, 99729.4535646539 -2239210.8086881, 99729.4535646539 -2239210.90874074, 99729.3535120114 -2239210.90874074, 99729.3535120114 -2239211.00879338, 99729.1534067263 -2239211.00879338, 99729.1534067263 -2239211.10884603, 99728.7531961561 -2239211.10884603, 99728.7531961561 -2239211.20889867, 99727.9527750156 -2239211.20889867, 99727.9527750156 -2239211.30895131, 99727.652617088 -2239211.30895131, 99727.652617088 -2239211.40900395, 99727.4525118029 -2239211.40900395, 99727.4525118029 -2239211.5090566, 99727.3524591603 -2239211.5090566, 99727.3524591603 -2239211.70916188, 99727.4525118029 -2239211.70916188, 99727.4525118029 -2239211.80921452, 99727.652617088 -2239211.80921452, 99727.652617088 -2239211.90926717, 99727.8527223731 -2239211.90926717, 99727.8527223731 -2239212.00931981, 99728.4530382284 -2239212.00931981, 99728.4530382284 -2239212.10937245, 99728.553090871 -2239212.10937245, 99728.553090871 -2239212.00931981, 99728.7531961561 -2239212.00931981, 99728.7531961561 -2239212.10937245, 99729.1534067263 -2239212.10937245, 99729.1534067263 -2239212.2094251, 99729.3535120114 -2239212.2094251, 99729.3535120114 -2239212.30947774, 99729.4535646539 -2239212.30947774, 99729.4535646539 -2239212.50958302, 99729.5536172965 -2239212.50958302, 99729.5536172965 -2239212.60963567, 99729.6536699391 -2239212.60963567, 99729.6536699391 -2239212.70968831, 99729.9538278667 -2239212.70968831, 99729.9538278667 -2239212.80974095, 99730.3540384369 -2239212.80974095, 99730.3540384369 -2239212.90979359, 99730.554143722 -2239212.90979359, 99730.554143722 -2239213.00984624, 99730.7542490072 -2239213.00984624, 99730.7542490072 -2239212.90979359, 99730.8543016497 -2239212.90979359, 99730.8543016497 -2239213.00984624, 99730.9543542922 -2239213.00984624, 99730.9543542922 -2239213.20995152, 99731.0544069348 -2239213.20995152, 99731.0544069348 -2239213.10989888, 99731.1544595774 -2239213.10989888, 99731.1544595774 -2239213.31000416, 99731.3545648625 -2239213.31000416, 99731.3545648625 -2239213.41005681, 99731.454617505 -2239213.41005681, 99731.454617505 -2239213.51010945, 99731.5546701476 -2239213.51010945, 99731.5546701476 -2239213.61016209, 99731.6547227901 -2239213.61016209, 99731.6547227901 -2239213.81026738, 99731.7547754327 -2239213.81026738, 99731.7547754327 -2239213.91032002, 99731.8548280752 -2239213.91032002, 99731.8548280752 -2239214.1104253, 99731.9548807178 -2239214.1104253, 99731.9548807178 -2239214.31053059, 99732.0549333603 -2239214.31053059, 99732.0549333603 -2239214.41058323, 99731.9548807178 -2239214.41058323, 99731.9548807178 -2239214.51063587, 99732.0549333603 -2239214.51063587, 99732.0549333603 -2239214.71074116, 99732.1549860029 -2239214.71074116, 99732.1549860029 -2239214.91084644, 99732.2550386455 -2239214.91084644, 99732.2550386455 -2239215.11095173, 99732.355091288 -2239215.11095173, 99732.355091288 -2239215.31105701, 99732.4551439306 -2239215.31105701, 99732.4551439306 -2239215.41110966, 99732.355091288 -2239215.41110966, 99732.355091288 -2239215.5111623, 99732.4551439306 -2239215.5111623, 99732.4551439306 -2239215.71126758, 99732.355091288 -2239215.71126758, 99732.355091288 -2239215.91137287, 99732.4551439306 -2239215.91137287, 99732.4551439306 -2239216.01142551, 99732.355091288 -2239216.01142551, 99732.355091288 -2239216.11147815, 99732.2550386455 -2239216.11147815, 99732.2550386455 -2239216.2115308, 99732.355091288 -2239216.2115308, 99732.355091288 -2239216.31158344, 99732.2550386455 -2239216.31158344, 99732.2550386455 -2239216.61174137, 99732.1549860029 -2239216.61174137, 99732.1549860029 -2239217.01195194, 99732.0549333603 -2239217.01195194, 99732.0549333603 -2239217.21205722, 99732.1549860029 -2239217.21205722, 99732.1549860029 -2239217.31210987, 99732.4551439306 -2239217.31210987, 99732.4551439306 -2239217.41216251, 99732.5551965731 -2239217.41216251, 99732.5551965731 -2239217.31210987, 99732.7553018582 -2239217.31210987, 99732.7553018582 -2239217.41216251, 99732.8553545008 -2239217.41216251, 99732.8553545008 -2239217.51221515, 99732.9554071433 -2239217.51221515, 99732.9554071433 -2239217.31210987, 99733.1555124284 -2239217.31210987, 99733.1555124284 -2239217.41216251, 99733.255565071 -2239217.41216251, 99733.255565071 -2239217.31210987, 99733.4556703561 -2239217.31210987, 99733.4556703561 -2239217.41216251, 99733.5557229986 -2239217.41216251, 99733.5557229986 -2239217.31210987, 99733.6557756412 -2239217.31210987, 99733.6557756412 -2239217.21205722, 99733.8558809263 -2239217.21205722, 99733.8558809263 -2239217.11200458, 99733.9559335689 -2239217.11200458, 99733.9559335689 -2239217.01195194, 99734.0559862114 -2239217.01195194, 99734.0559862114 -2239217.21205722, 99734.156038854 -2239217.21205722, 99734.156038854 -2239217.11200458, 99734.2560914965 -2239217.11200458, 99734.2560914965 -2239217.21205722, 99734.3561441391 -2239217.21205722, 99734.3561441391 -2239217.11200458, 99734.4561967816 -2239217.11200458, 99734.4561967816 -2239217.01195194, 99734.3561441391 -2239217.01195194, 99734.3561441391 -2239216.9118993, 99734.4561967816 -2239216.9118993, 99734.4561967816 -2239216.81184665, 99734.6563020667 -2239216.81184665, 99734.6563020667 -2239216.9118993, 99734.5562494242 -2239216.9118993, 99734.5562494242 -2239217.01195194, 99734.6563020667 -2239217.01195194, 99734.6563020667 -2239217.11200458, 99734.7563547093 -2239217.11200458, 99734.7563547093 -2239217.01195194, 99734.8564073518 -2239217.01195194, 99734.8564073518 -2239217.11200458, 99735.3566705646 -2239217.11200458, 99735.3566705646 -2239217.21205722, 99735.7568811348 -2239217.21205722, 99735.7568811348 -2239217.31210987, 99735.6568284923 -2239217.31210987, 99735.6568284923 -2239217.41216251, 99735.5567758497 -2239217.41216251, 99735.5567758497 -2239217.61226779, 99735.7568811348 -2239217.61226779, 99735.7568811348 -2239217.71232044, 99735.9569864199 -2239217.71232044, 99735.9569864199 -2239218.01247836, 99735.8569337774 -2239218.01247836, 99735.8569337774 -2239218.11253101, 99735.9569864199 -2239218.11253101, 99735.9569864199 -2239218.21258365, 99736.0570390625 -2239218.21258365, 99736.0570390625 -2239218.41268893, 99735.9569864199 -2239218.41268893, 99735.9569864199 -2239218.61279422, 99736.0570390625 -2239218.61279422, 99736.0570390625 -2239218.71284686, 99735.9569864199 -2239218.71284686, 99735.9569864199 -2239218.8128995, 99736.0570390625 -2239218.8128995, 99736.0570390625 -2239218.91295215, 99736.3571969901 -2239218.91295215, 99736.3571969901 -2239219.01300479, 99736.4572496327 -2239219.01300479, 99736.4572496327 -2239219.11305743)) + + + + buffer-0.35: see http://trac.osgeo.org/geos/wiki/BufferRobustness + + POLYGON ((99725.2015115944 -2239210.264040296, 99725.2015115944 -2239209.90821432, 99725.20823674626 -2239209.839932707, 99725.22815375803 -2239209.7742751185, 99725.26049723009 -2239209.7137647383, 99725.3015642369 -2239209.663724446, 99725.3015642369 -2239209.60805639, 99725.30649139937 -2239209.5580300703, 99725.3015642369 -2239209.50800375, 99725.3015642369 -2239209.4079511, 99725.30828938876 -2239209.339669487, 99725.32820640053 -2239209.2740118983, 99725.3605498726 -2239209.213501518, 99725.40407686349 -2239209.1604637266, 99725.40647766467 -2239209.15849344, 99725.40834203135 -2239209.1395642073, 99725.42825904312 -2239209.0739066186, 99725.46060251519 -2239209.0133962384, 99725.50412950608 -2239208.960358447, 99725.55716729794 -2239208.9168314557, 99725.55944024482 -2239208.9156165402, 99725.5606551577 -2239208.913343598, 99725.60418214859 -2239208.8603058066, 99725.65721994045 -2239208.8167788154, 99725.65949288048 -2239208.8155639037, 99725.66070780029 -2239208.8132909485, 99725.70423479118 -2239208.760253157, 99725.75727258304 -2239208.7167261657, 99725.75954552992 -2239208.7155112503, 99725.76076044279 -2239208.713238308, 99725.80428743368 -2239208.6602005167, 99725.85732522554 -2239208.6166735254, 99725.85959817292 -2239208.6154586095, 99725.8608130854 -2239208.6131856684, 99725.90434007629 -2239208.560147877, 99725.95737786815 -2239208.5166208856, 99725.95965081536 -2239208.51540597, 99725.96086572789 -2239208.5131330285, 99726.00439271878 -2239208.460095237, 99726.05743051064 -2239208.4165682457, 99726.11794089086 -2239208.384224774, 99726.18359847949 -2239208.364307762, 99726.2025277112 -2239208.3624433954, 99726.20449800388 -2239208.360042587, 99726.25753579574 -2239208.3165155957, 99726.31804617596 -2239208.2841721238, 99726.38370376459 -2239208.264255112, 99726.4519853773 -2239208.25752996, 99727.4525118029 -2239208.25752996, 99727.50253812416 -2239208.2624571226, 99727.5525644454 -2239208.25752996, 99727.8527223731 -2239208.25752996, 99727.92100398582 -2239208.264255112, 99727.98666157444 -2239208.2841721238, 99728.04717195466 -2239208.3165155957, 99728.0528276582 -2239208.321157112, 99728.05848336175 -2239208.3165155957, 99728.10456354666 -2239208.2918852237, 99728.10976338026 -2239208.2390904273, 99728.12968039203 -2239208.1734328386, 99728.16202386409 -2239208.1129224584, 99728.20555085498 -2239208.059884667, 99728.20795165507 -2239208.0579143814, 99728.20981602286 -2239208.0389851374, 99728.22973303463 -2239207.9733275487, 99728.2620765067 -2239207.9128171685, 99728.30314351349 -2239207.8627768764, 99728.30314351349 -2239207.60700354, 99728.30986866535 -2239207.538721927, 99728.32978567712 -2239207.4730643383, 99728.36212914919 -2239207.412553958, 99728.40565614008 -2239207.3595161666, 99728.45869393194 -2239207.3159891753, 99728.460966872 -2239207.3147742637, 99728.4621817918 -2239207.3125013085, 99728.50570878269 -2239207.259463517, 99728.55874657455 -2239207.2159365257, 99728.56101952141 -2239207.2147216103, 99728.56223443428 -2239207.212448668, 99728.60576142518 -2239207.1594108767, 99728.65879921704 -2239207.1158838854, 99728.66107216441 -2239207.1146689695, 99728.66228707689 -2239207.1123960284, 99728.70581406778 -2239207.059358237, 99728.75885185965 -2239207.0158312456, 99728.76112480687 -2239207.01461633, 99728.7623397194 -2239207.0123433885, 99728.80586671029 -2239206.959305597, 99728.85890450215 -2239206.9157786057, 99728.91941488237 -2239206.883435134, 99728.985072471 -2239206.863518122, 99729.0040017027 -2239206.8616537554, 99729.00597199539 -2239206.859252947, 99729.05900978725 -2239206.8157259556, 99729.06128273426 -2239206.81451104, 99729.06249764709 -2239206.812238098, 99729.10602463798 -2239206.7592003066, 99729.15906242984 -2239206.7156733153, 99729.21957281006 -2239206.6833298435, 99729.28523039869 -2239206.6634128317, 99729.30415963955 -2239206.661548464, 99729.30612992308 -2239206.659147667, 99729.35916771494 -2239206.6156206755, 99729.41967809516 -2239206.5832772036, 99729.48533568378 -2239206.563360192, 99729.5536172965 -2239206.55663504, 99729.70933799617 -2239206.55663504, 99729.75937828515 -2239206.5155680357, 99729.81988866537 -2239206.4832245638, 99729.885546254 -2239206.463307552, 99729.9044754857 -2239206.4614431853, 99729.90644577838 -2239206.459042377, 99729.90884657952 -2239206.4570720904, 99729.91071094626 -2239206.438142857, 99729.93062795803 -2239206.3724852684, 99729.9629714301 -2239206.311974888, 99730.00403843689 -2239206.261934596, 99730.00403843689 -2239206.00616126, 99730.01076358875 -2239205.937879647, 99730.03068060052 -2239205.8722220585, 99730.06302407259 -2239205.8117116783, 99730.10655106348 -2239205.758673887, 99730.15958885534 -2239205.7151468955, 99730.16186179504 -2239205.713931984, 99730.1630767152 -2239205.711659028, 99730.20660370609 -2239205.6586212367, 99730.25964149795 -2239205.6150942454, 99730.26191444516 -2239205.61387933, 99730.26312935769 -2239205.6116063884, 99730.30665634858 -2239205.558568597, 99730.35969414044 -2239205.5150416056, 99730.42020452066 -2239205.4826981337, 99730.48586210929 -2239205.462781122, 99730.50479135025 -2239205.4609167543, 99730.50676163378 -2239205.458515957, 99730.55979942564 -2239205.4149889657, 99730.56207237252 -2239205.4137740503, 99730.56328728539 -2239205.411501108, 99730.60681427628 -2239205.3584633167, 99730.65985206814 -2239205.3149363254, 99730.72036244837 -2239205.2825928535, 99730.78602003699 -2239205.262675842, 99730.8049492687 -2239205.260811475, 99730.80691956138 -2239205.2584106666, 99730.85995735324 -2239205.2148836753, 99730.92046773346 -2239205.1825402034, 99730.98612532209 -2239205.1626231917, 99731.0544069348 -2239205.1558980397, 99731.21012763448 -2239205.1558980397, 99731.26016792345 -2239205.1148310355, 99731.32067830367 -2239205.0824875636, 99731.3863358923 -2239205.062570552, 99731.454617505 -2239205.0558454, 99731.71039084728 -2239205.0558454, 99731.76043113625 -2239205.0147783956, 99731.82094151647 -2239204.9824349238, 99731.8865991051 -2239204.962517912, 99731.90552834554 -2239204.9606535444, 99731.90749862949 -2239204.9582527466, 99731.96053642135 -2239204.9147257553, 99732.02104680157 -2239204.8823822835, 99732.0867043902 -2239204.8624652717, 99732.10563362233 -2239204.860600905, 99732.10760391458 -2239204.858200097, 99732.16064170645 -2239204.8146731057, 99732.16291465345 -2239204.8134581903, 99732.16412956628 -2239204.811185248, 99732.20765655718 -2239204.7581474567, 99732.26069434904 -2239204.7146204654, 99732.26296729626 -2239204.71340555, 99732.26418220879 -2239204.7111326084, 99732.30770919968 -2239204.658094817, 99732.36074699154 -2239204.6145678256, 99732.4068271754 -2239204.589937454, 99732.41202701005 -2239204.537142647, 99732.43194402182 -2239204.4714850583, 99732.46428749389 -2239204.410974678, 99732.50781448478 -2239204.3579368866, 99732.56085227664 -2239204.3144098953, 99732.56312522401 -2239204.3131949794, 99732.5643401365 -2239204.3109220383, 99732.60786712739 -2239204.2578842468, 99732.66090491925 -2239204.2143572555, 99732.72141529947 -2239204.1820137836, 99732.7870728881 -2239204.162096772, 99732.8553545008 -2239204.15537162, 99733.1555124284 -2239204.15537162, 99733.22379404111 -2239204.162096772, 99733.28945162974 -2239204.1820137836, 99733.34996200996 -2239204.2143572555, 99733.40299980182 -2239204.2578842468, 99733.40497008535 -2239204.260285044, 99733.42389932621 -2239204.2621494117, 99733.48955691484 -2239204.2820664234, 99733.55006729506 -2239204.3144098953, 99733.60310508692 -2239204.3579368866, 99733.64663207781 -2239204.410974678, 99733.64784699064 -2239204.41324762, 99733.65011993765 -2239204.4144625356, 99733.70315772951 -2239204.457989527, 99733.7051280222 -2239204.4603903354, 99733.7240572539 -2239204.462254702, 99733.78971484253 -2239204.482171714, 99733.85022522275 -2239204.5145151857, 99733.90326301461 -2239204.558042177, 99733.90523329814 -2239204.5604429743, 99733.92416253901 -2239204.562307342, 99733.98982012764 -2239204.5822243537, 99734.05033050786 -2239204.6145678256, 99734.10336829972 -2239204.658094817, 99734.10533858325 -2239204.660495614, 99734.12426782411 -2239204.662359982, 99734.18992541273 -2239204.6822769935, 99734.25043579296 -2239204.7146204654, 99734.3004760825 -2239204.75568747, 99734.3561441391 -2239204.75568747, 99734.42442575181 -2239204.762412622, 99734.49008334044 -2239204.782329634, 99734.55059372066 -2239204.8146731057, 99734.60363151252 -2239204.858200097, 99734.64715850342 -2239204.9112378885, 99734.67097357841 -2239204.95579276, 99734.8564073518 -2239204.95579276, 99734.92468896451 -2239204.962517912, 99734.99034655314 -2239204.9824349238, 99735.05085693336 -2239205.0147783956, 99735.10389472522 -2239205.058305387, 99735.14742171612 -2239205.1113431784, 99735.17976518818 -2239205.1718535586, 99735.19968219995 -2239205.2375111473, 99735.20640735181 -2239205.30579276, 99735.20640735181 -2239205.80605597, 99735.19968219995 -2239205.874337583, 99735.17976518818 -2239205.9399951715, 99735.14742171612 -2239206.0005055517, 99735.10389472522 -2239206.053543343, 99735.05085693336 -2239206.0970703345, 99734.99034655314 -2239206.1294138064, 99734.92468896451 -2239206.149330818, 99734.8564073518 -2239206.15605597, 99734.67077661124 -2239206.15605597, 99734.67950197548 -2239206.1723799785, 99734.69941898725 -2239206.238037567, 99734.70614413911 -2239206.30631918, 99734.70614413911 -2239206.3917003134, 99734.75069900576 -2239206.4155153856, 99734.80373679762 -2239206.459042377, 99734.84726378851 -2239206.5120801684, 99734.8484787087 -2239206.514353124, 99734.85075164825 -2239206.5155680357, 99734.90378944011 -2239206.559095027, 99734.947316431 -2239206.6121328184, 99734.94853134349 -2239206.6144057596, 99734.95080429086 -2239206.6156206755, 99735.00084457983 -2239206.6566876797, 99735.0565126369 -2239206.6566876797, 99735.12479424961 -2239206.6634128317, 99735.19045183824 -2239206.6833298435, 99735.25096221846 -2239206.7156733153, 99735.301002508 -2239206.75674032, 99735.3566705646 -2239206.75674032, 99735.4249521773 -2239206.763465472, 99735.49060976593 -2239206.7833824838, 99735.55112014615 -2239206.8157259556, 99735.60415793801 -2239206.859252947, 99735.6476849289 -2239206.9122907384, 99735.68002840097 -2239206.9728011186, 99735.69994541274 -2239207.0384587073, 99735.70180978053 -2239207.0573879513, 99735.70421058062 -2239207.059358237, 99735.74773757151 -2239207.1123960284, 99735.78008104357 -2239207.1729064086, 99735.79999805534 -2239207.238563997, 99735.8067232072 -2239207.30684561, 99735.8067232072 -2239207.40689825, 99735.80179604473 -2239207.4569245703, 99735.8067232072 -2239207.50695089, 99735.8067232072 -2239207.70705618, 99735.80173959458 -2239207.757655648, 99735.80426322312 -2239207.7597267367, 99735.84779021401 -2239207.812764528, 99735.88013368608 -2239207.8732749084, 99735.90005069785 -2239207.938932497, 99735.90677584971 -2239208.00721411, 99735.90677584971 -2239208.1629348057, 99735.9478428566 -2239208.2129750983, 99735.98018632867 -2239208.2734854785, 99736.00010334044 -2239208.339143067, 99736.0068284923 -2239208.40742468, 99736.0068284923 -2239208.50747732, 99736.00190132983 -2239208.55750364, 99736.00196770823 -2239208.5581775913, 99736.00436850822 -2239208.560147877, 99736.04789549911 -2239208.6131856684, 99736.08023897118 -2239208.6736960486, 99736.10015598295 -2239208.739353637, 99736.10688113481 -2239208.80763525, 99736.10688113481 -2239209.00774053, 99736.1018975222 -2239209.058339998, 99736.10442115081 -2239209.060411087, 99736.1479481417 -2239209.1134488783, 99736.18029161377 -2239209.1739592585, 99736.20020862554 -2239209.239616847, 99736.2069337774 -2239209.30789846, 99736.2069337774 -2239209.3635665164, 99736.24800078421 -2239209.4136068085, 99736.28034425627 -2239209.4741171887, 99736.30026126804 -2239209.5397747774, 99736.3069864199 -2239209.60805639, 99736.3069864199 -2239209.6637244457, 99736.34805342682 -2239209.7137647383, 99736.38039689888 -2239209.7742751185, 99736.40031391065 -2239209.839932707, 99736.40703906251 -2239209.90821432, 99736.40703906251 -2239210.0633865455, 99736.4254786028 -2239210.065202682, 99736.49113619143 -2239210.0851196935, 99736.55164657165 -2239210.1174631654, 99736.60468436351 -2239210.1609901567, 99736.6482113544 -2239210.214027948, 99736.68055482647 -2239210.2745383284, 99736.70047183824 -2239210.340195917, 99736.7071969901 -2239210.40847753, 99736.7071969901 -2239210.60858281, 99736.70221337749 -2239210.659182278, 99736.70473700612 -2239210.6612533666, 99736.74826399701 -2239210.714291158, 99736.74947890984 -2239210.7165641002, 99736.75175185685 -2239210.7177790157, 99736.80478964871 -2239210.761306007, 99736.8483166396 -2239210.8143437984, 99736.88066011167 -2239210.8748541786, 99736.90057712344 -2239210.9405117673, 99736.9073022753 -2239211.00879338, 99736.9073022753 -2239211.0941745136, 99736.95185714196 -2239211.1179895857, 99737.00489493382 -2239211.161516577, 99737.00686522608 -2239211.163917385, 99737.02579445821 -2239211.1657817517, 99737.09145204684 -2239211.1856987635, 99737.15196242706 -2239211.2180422354, 99737.20500021892 -2239211.2615692266, 99737.24852720981 -2239211.314607018, 99737.24974212269 -2239211.3168799602, 99737.25201506955 -2239211.3180948757, 99737.30505286141 -2239211.361621867, 99737.3485798523 -2239211.4146596584, 99737.34979476478 -2239211.4169325996, 99737.35206771216 -2239211.4181475155, 99737.40510550402 -2239211.461674507, 99737.44863249491 -2239211.5147122983, 99737.44984740744 -2239211.51698524, 99737.45212035466 -2239211.5182001553, 99737.50515814652 -2239211.5617271466, 99737.5071284392 -2239211.564127955, 99737.52605767091 -2239211.565992322, 99737.59171525954 -2239211.5859093335, 99737.65222563976 -2239211.6182528054, 99737.70526343162 -2239211.6617797967, 99737.74879042251 -2239211.714817588, 99737.75000533534 -2239211.7170905303, 99737.75227828235 -2239211.7183054457, 99737.80531607421 -2239211.761832437, 99737.8488430651 -2239211.8148702285, 99737.85005797763 -2239211.81714317, 99737.85233092486 -2239211.8183580856, 99737.90536871672 -2239211.861885077, 99737.94889570761 -2239211.9149228684, 99737.98123917967 -2239211.9754332486, 99738.00115619144 -2239212.041090837, 99738.0078813433 -2239212.10937245, 99738.0078813433 -2239212.2094251, 99738.00115619144 -2239212.277706713, 99737.98123917967 -2239212.3433643016, 99737.94889570761 -2239212.403874682, 99737.90536871672 -2239212.4569124733, 99737.85233092486 -2239212.5004394646, 99737.85005797763 -2239212.50165438, 99737.8488430651 -2239212.5039273216, 99737.80531607421 -2239212.556965113, 99737.75227828235 -2239212.6004921044, 99737.750005335 -2239212.6017070203, 99737.74879042251 -2239212.6039799615, 99737.74414890668 -2239212.609635665, 99737.74879042251 -2239212.615291368, 99737.78113389458 -2239212.6758017484, 99737.80105090635 -2239212.741459337, 99737.80777605821 -2239212.80974095, 99737.80777605821 -2239212.85995152, 99737.8579866284 -2239212.85995152, 99737.9262682411 -2239212.866676672, 99737.99192582973 -2239212.8865936836, 99738.05243620995 -2239212.9189371555, 99738.10547400182 -2239212.962464147, 99738.14900099271 -2239213.0155019383, 99738.15021590519 -2239213.0177748795, 99738.15248885256 -2239213.0189897954, 99738.20552664442 -2239213.0625167866, 99738.24905363531 -2239213.115554578, 99738.28139710738 -2239213.1760649583, 99738.30131411915 -2239213.241722547, 99738.30803927101 -2239213.31000416, 99738.30803927101 -2239213.41005681, 99738.30131411915 -2239213.4783384227, 99738.28139710738 -2239213.5439960114, 99738.24905363531 -2239213.6045063916, 99738.2079866284 -2239213.654546684, 99738.2079866284 -2239213.71021473, 99738.20126147654 -2239213.7784963427, 99738.1816023578 -2239213.843303772, 99738.20552664442 -2239213.862937927, 99738.24905363531 -2239213.9159757183, 99738.28139710738 -2239213.9764860985, 99738.30131411915 -2239214.042143687, 99738.30803927101 -2239214.1104253, 99738.30803927101 -2239214.31053059, 99738.30131411915 -2239214.3788122027, 99738.28139710738 -2239214.4444697914, 99738.24905363531 -2239214.5049801716, 99738.20552664442 -2239214.558017963, 99738.15248885256 -2239214.6015449543, 99738.15021590554 -2239214.60275987, 99738.14900099271 -2239214.605032812, 99738.10547400182 -2239214.6580706034, 99738.05243620995 -2239214.7015975947, 99737.99192582973 -2239214.7339410665, 99737.98372643965 -2239214.736428324, 99737.98123917967 -2239214.7446277216, 99737.94889570761 -2239214.805138102, 99737.90536871672 -2239214.8581758933, 99737.85233092486 -2239214.9017028846, 99737.79182054463 -2239214.9340463565, 99737.72616295601 -2239214.953963368, 99737.6578813433 -2239214.96068852, 99737.60221328623 -2239214.96068852, 99737.55217299725 -2239215.0017555244, 99737.49166261703 -2239215.0340989963, 99737.4260050284 -2239215.054016008, 99737.40707578755 -2239215.0558803757, 99737.40510550402 -2239215.058281173, 99737.35206771216 -2239215.1018081643, 99737.34979476513 -2239215.1030230797, 99737.3485798523 -2239215.105296022, 99737.30505286141 -2239215.1583338133, 99737.30183084974 -2239215.16097805, 99737.30505286141 -2239215.1636222866, 99737.3485798523 -2239215.216660078, 99737.38092332437 -2239215.2771704583, 99737.40084033614 -2239215.342828047, 99737.407565488 -2239215.41110966, 99737.407565488 -2239215.4964907933, 99737.45212035466 -2239215.5203058654, 99737.50515814652 -2239215.5638328567, 99737.54868513742 -2239215.616870648, 99737.58102860948 -2239215.6773810284, 99737.60094562125 -2239215.743038617, 99737.60767077311 -2239215.81132023, 99737.60767077311 -2239215.8967013634, 99737.65222563976 -2239215.9205164355, 99737.70526343162 -2239215.964043427, 99737.74879042251 -2239216.0170812183, 99737.78113389458 -2239216.0775915985, 99737.78362115128 -2239216.085790985, 99737.79182054463 -2239216.088278244, 99737.85233092486 -2239216.1206217157, 99737.90536871672 -2239216.164148707, 99737.94889570761 -2239216.2171864985, 99737.98123917967 -2239216.2776968786, 99737.98372643965 -2239216.285896276, 99737.99192582973 -2239216.2883835337, 99738.05243620995 -2239216.3207270056, 99738.10547400182 -2239216.364253997, 99738.14900099271 -2239216.4172917884, 99738.18134446477 -2239216.4778021686, 99738.20126147654 -2239216.543459757, 99738.20307761295 -2239216.5618992997, 99738.2581971987 -2239216.5618992997, 99738.30822351994 -2239216.5668264623, 99738.3582498412 -2239216.5618992997, 99738.7584604114 -2239216.5618992997, 99738.8267420241 -2239216.5686244518, 99738.89239961273 -2239216.5885414635, 99738.95290999295 -2239216.6208849354, 99739.00594778481 -2239216.6644119266, 99739.00791806876 -2239216.6668127244, 99739.02684730921 -2239216.668677092, 99739.09250489784 -2239216.688594104, 99739.15301527806 -2239216.7209375757, 99739.20605306992 -2239216.764464567, 99739.24958006082 -2239216.8175023585, 99739.28192353288 -2239216.8780127387, 99739.30184054465 -2239216.9436703273, 99739.30856569651 -2239217.01195194, 99739.30856569651 -2239217.11200458, 99739.30184054465 -2239217.180286193, 99739.2942768954 -2239217.205220203, 99739.32488970796 -2239217.1888573137, 99739.39054729659 -2239217.168940302, 99739.40947653746 -2239217.1670759344, 99739.41144682099 -2239217.164675137, 99739.46448461285 -2239217.1211481458, 99739.52499499307 -2239217.088804674, 99739.5906525817 -2239217.068887662, 99739.60958182214 -2239217.0670232945, 99739.61155210609 -2239217.0646224967, 99739.66458989795 -2239217.0210955054, 99739.71067008185 -2239216.996465134, 99739.71586991646 -2239216.9436703273, 99739.73578692823 -2239216.8780127387, 99739.76813040029 -2239216.8175023585, 99739.81165739118 -2239216.764464567, 99739.86469518305 -2239216.7209375757, 99739.92520556327 -2239216.688594104, 99739.99086315189 -2239216.668677092, 99740.0591447646 -2239216.66195194, 99740.1591974072 -2239216.66195194, 99740.20922372845 -2239216.6668791026, 99740.2592500497 -2239216.66195194, 99740.3593026923 -2239216.66195194, 99740.42758430501 -2239216.668677092, 99740.49324189364 -2239216.688594104, 99740.55375227386 -2239216.7209375757, 99740.60679006572 -2239216.764464567, 99740.65031705661 -2239216.8175023585, 99740.68266052868 -2239216.8780127387, 99740.70257754045 -2239216.9436703273, 99740.70930269231 -2239217.01195194, 99740.70930269231 -2239217.21205722, 99740.70257754045 -2239217.2803388326, 99740.68266052868 -2239217.3459964213, 99740.65031705661 -2239217.4065068015, 99740.60679006572 -2239217.459544593, 99740.60438926567 -2239217.4615148786, 99740.60432288726 -2239217.46218883, 99740.6092500497 -2239217.51221515, 99740.6092500497 -2239217.71232044, 99740.60252489784 -2239217.780602053, 99740.58260788607 -2239217.8462596415, 99740.550264414 -2239217.9067700217, 99740.50673742311 -2239217.959807813, 99740.45369963125 -2239218.0033348044, 99740.39318925103 -2239218.0356782763, 99740.3275316624 -2239218.055595288, 99740.2592500497 -2239218.06232044, 99740.1591974072 -2239218.06232044, 99740.1091710859 -2239218.0573932775, 99740.10849713645 -2239218.0574596557, 99740.10652685292 -2239218.059860453, 99740.05348906106 -2239218.1033874443, 99739.99297868084 -2239218.135730916, 99739.98477928748 -2239218.138218175, 99739.98229203078 -2239218.1464175615, 99739.94994855871 -2239218.2069279416, 99739.90642156782 -2239218.259965733, 99739.85338377596 -2239218.3034927244, 99739.79287339574 -2239218.3358361963, 99739.72721580711 -2239218.355753208, 99739.70828657539 -2239218.3576175747, 99739.70631628271 -2239218.3600183832, 99739.65327849085 -2239218.4035453745, 99739.59276811063 -2239218.4358888464, 99739.527110522 -2239218.455805858, 99739.4588289093 -2239218.46253101, 99739.3587762667 -2239218.46253101, 99739.290494654 -2239218.455805858, 99739.27887399775 -2239218.4522807705, 99739.24958006082 -2239218.507085872, 99739.20605306992 -2239218.5601236634, 99739.15301527806 -2239218.6036506547, 99739.15074233084 -2239218.60486557, 99739.14952741831 -2239218.6071385117, 99739.10600042742 -2239218.6601763032, 99739.05296263556 -2239218.7037032945, 99738.99245225533 -2239218.7360467664, 99738.92679466671 -2239218.755963778, 99738.87399986494 -2239218.7611636124, 99738.8493694906 -2239218.8072438017, 99738.80584249971 -2239218.860281593, 99738.75280470785 -2239218.9038085844, 99738.69229432763 -2239218.9361520563, 99738.626636739 -2239218.956069068, 99738.5583551263 -2239218.96279422, 99738.4583024838 -2239218.96279422, 99738.4082761625 -2239218.9578670575, 99738.40362304353 -2239218.9583253497, 99738.40136676174 -2239218.981233763, 99738.38144974997 -2239219.0468913517, 99738.3491062779 -2239219.107401732, 99738.30557928701 -2239219.1604395234, 99738.25254149515 -2239219.2039665147, 99738.2502685478 -2239219.2051814306, 99738.24905363531 -2239219.2074543717, 99738.20552664442 -2239219.2604921632, 99738.15248885256 -2239219.3040191545, 99738.09197847234 -2239219.3363626264, 99738.02632088371 -2239219.356279638, 99737.958039271 -2239219.36300479, 99737.70226592873 -2239219.36300479, 99737.65222563976 -2239219.4040717944, 99737.59171525954 -2239219.4364152662, 99737.52605767091 -2239219.456332278, 99737.4577760582 -2239219.46305743, 99737.30205535909 -2239219.46305743, 99737.25201506955 -2239219.5041244347, 99737.19150468933 -2239219.5364679066, 99737.1258471007 -2239219.5563849183, 99737.057565488 -2239219.5631100703, 99736.9575128455 -2239219.5631100703, 99736.8892312328 -2239219.5563849183, 99736.82357364417 -2239219.5364679066, 99736.76306326395 -2239219.5041244347, 99736.71002547209 -2239219.4605974434, 99736.70795438564 -2239219.458073817, 99736.6573549178 -2239219.46305743, 99736.4572496327 -2239219.46305743, 99736.38896802 -2239219.456332278, 99736.32331043137 -2239219.4364152662, 99736.26280005115 -2239219.4040717944, 99736.20976225928 -2239219.360544803, 99736.16623526839 -2239219.3075070116, 99736.16502035591 -2239219.3052340704, 99736.16274740854 -2239219.3040191545, 99736.11270711957 -2239219.2629521503, 99736.0570390625 -2239219.2629521503, 99735.9887574498 -2239219.2562269983, 99735.92309986117 -2239219.2363099866, 99735.86258948095 -2239219.2039665147, 99735.80955168909 -2239219.1604395234, 99735.7660246982 -2239219.107401732, 99735.76480977805 -2239219.1051287763, 99735.76253683835 -2239219.1039138646, 99735.70949904648 -2239219.0603868733, 99735.66597205559 -2239219.007349082, 99735.63362858353 -2239218.9468387016, 99735.61371157176 -2239218.881181113, 99735.6069864199 -2239218.8128995, 99735.6069864199 -2239218.71284686, 99735.61191358234 -2239218.66282054, 99735.6069864199 -2239218.61279422, 99735.6069864199 -2239218.41268893, 99735.61197003162 -2239218.362089471, 99735.60944640398 -2239218.3600183832, 99735.56591941309 -2239218.3069805917, 99735.53357594102 -2239218.2464702115, 99735.51365892925 -2239218.180812623, 99735.50693377739 -2239218.11253101, 99735.50693377739 -2239218.01247836, 99735.51191738911 -2239217.961878901, 99735.50939376139 -2239217.959807813, 99735.5074234687 -2239217.9574070047, 99735.488494237 -2239217.955542638, 99735.42283664837 -2239217.9356256262, 99735.36232626815 -2239217.9032821544, 99735.30928847629 -2239217.859755163, 99735.2657614854 -2239217.8067173716, 99735.23341801333 -2239217.7462069914, 99735.21350100156 -2239217.6805494027, 99735.2067758497 -2239217.61226779, 99735.2067758497 -2239217.5268866564, 99735.16222098304 -2239217.5030715843, 99735.11218069406 -2239217.46200458, 99734.8564073518 -2239217.46200458, 99734.80638103056 -2239217.4570774175, 99734.7563547093 -2239217.46200458, 99734.6563020667 -2239217.46200458, 99734.60570259861 -2239217.4570209673, 99734.60363151252 -2239217.459544593, 99734.55059372066 -2239217.5030715843, 99734.49008334044 -2239217.535415056, 99734.42442575181 -2239217.555332068, 99734.3561441391 -2239217.56205722, 99734.2560914965 -2239217.56205722, 99734.20606517524 -2239217.5571300574, 99734.156038854 -2239217.56205722, 99734.0559862114 -2239217.56205722, 99733.9877045987 -2239217.555332068, 99733.95593356885 -2239217.5456944313, 99733.92416253901 -2239217.555332068, 99733.90523330729 -2239217.5571964346, 99733.90326301461 -2239217.559597243, 99733.85022522275 -2239217.6031242344, 99733.84795227574 -2239217.60433915, 99733.84673736291 -2239217.606612092, 99733.80321037202 -2239217.6596498834, 99733.75017258016 -2239217.7031768747, 99733.68966219993 -2239217.7355203466, 99733.62400461131 -2239217.7554373583, 99733.5557229986 -2239217.7621625103, 99733.4556703561 -2239217.7621625103, 99733.38738874339 -2239217.7554373583, 99733.35561771355 -2239217.7457997217, 99733.3238466837 -2239217.7554373583, 99733.255565071 -2239217.7621625103, 99733.19989701382 -2239217.7621625103, 99733.14985672485 -2239217.8032295145, 99733.08934634463 -2239217.8355729864, 99733.023688756 -2239217.855489998, 99732.9554071433 -2239217.86221515, 99732.8553545008 -2239217.86221515, 99732.7870728881 -2239217.855489998, 99732.72141529947 -2239217.8355729864, 99732.66090491925 -2239217.8032295145, 99732.60786712739 -2239217.7597025232, 99732.6057960413 -2239217.7571788975, 99732.5551965731 -2239217.7621625103, 99732.4551439306 -2239217.7621625103, 99732.38686231789 -2239217.7554373583, 99732.32120472926 -2239217.7355203466, 99732.26069434904 -2239217.7031768747, 99732.2106540595 -2239217.66210987, 99732.1549860029 -2239217.66210987, 99732.0867043902 -2239217.655384718, 99732.02104680157 -2239217.6354677062, 99731.96053642135 -2239217.6031242344, 99731.90749862949 -2239217.559597243, 99731.8639716386 -2239217.5065594516, 99731.86275671844 -2239217.504286496, 99731.86048377874 -2239217.5030715843, 99731.80744598688 -2239217.459544593, 99731.76391899599 -2239217.4065068015, 99731.73157552393 -2239217.3459964213, 99731.71165851215 -2239217.2803388326, 99731.70493336029 -2239217.21205722, 99731.70493336029 -2239217.01195194, 99731.71165851215 -2239216.9436703273, 99731.73157552393 -2239216.8780127387, 99731.76391899599 -2239216.8175023585, 99731.8049860029 -2239216.767462066, 99731.8049860029 -2239216.61174137, 99731.81171115476 -2239216.543459757, 99731.83162816653 -2239216.4778021686, 99731.8639716386 -2239216.4172917884, 99731.90503864549 -2239216.367251496, 99731.90503864549 -2239216.31158344, 99731.90996580794 -2239216.26155712, 99731.90503864549 -2239216.2115308, 99731.90503864549 -2239216.11147815, 99731.91176379735 -2239216.043196537, 99731.93168080912 -2239215.9775389484, 99731.96402428119 -2239215.917028568, 99732.005091288 -2239215.866988276, 99732.005091288 -2239215.71126758, 99732.01181643986 -2239215.642985967, 99732.02145407554 -2239215.61121494, 99732.01181643986 -2239215.579443913, 99732.005091288 -2239215.5111623, 99732.005091288 -2239215.41110966, 99732.01001845092 -2239215.361083335, 99732.00995207312 -2239215.3604093897, 99732.00755127208 -2239215.3584391032, 99731.96402428119 -2239215.3054013117, 99731.93168080912 -2239215.2448909315, 99731.91176379735 -2239215.179233343, 99731.90989942956 -2239215.160304099, 99731.90749862949 -2239215.1583338133, 99731.8639716386 -2239215.105296022, 99731.83162816653 -2239215.0447856416, 99731.81171115476 -2239214.979128053, 99731.80984678802 -2239214.9601988196, 99731.80744598688 -2239214.958228533, 99731.76391899599 -2239214.9051907416, 99731.73157552393 -2239214.8446803614, 99731.71165851215 -2239214.779022773, 99731.70979414435 -2239214.760093529, 99731.70739334439 -2239214.758123243, 99731.6638663535 -2239214.7050854517, 99731.63152288143 -2239214.6445750715, 99731.61160586966 -2239214.578917483, 99731.6048807178 -2239214.51063587, 99731.6048807178 -2239214.41058323, 99731.60980788028 -2239214.36055691, 99731.60974150187 -2239214.3598829587, 99731.60734070178 -2239214.357912673, 99731.56381371089 -2239214.3048748816, 99731.53147023883 -2239214.2443645014, 99731.51155322706 -2239214.178706913, 99731.50968886031 -2239214.1597776795, 99731.50728805928 -2239214.157807393, 99731.46376106839 -2239214.1047696015, 99731.4625461559 -2239214.1024966603, 99731.46027320855 -2239214.1012817444, 99731.40723541669 -2239214.057754753, 99731.3637084258 -2239214.0047169616, 99731.33136495373 -2239213.9442065815, 99731.31144794196 -2239213.878548993, 99731.30958357417 -2239213.859619749, 99731.30718277418 -2239213.857649463, 99731.26365578329 -2239213.8046116717, 99731.2624408708 -2239213.8023387305, 99731.26016792345 -2239213.8011238147, 99731.20713013159 -2239213.7575968234, 99731.1636031407 -2239213.704559032, 99731.16238822782 -2239213.70228609, 99731.16011528095 -2239213.7010711743, 99731.10707748908 -2239213.657544183, 99731.1051071964 -2239213.6551433746, 99731.0861779647 -2239213.653279008, 99731.02052037607 -2239213.633361996, 99730.96000999585 -2239213.6010185243, 99730.90697220399 -2239213.557491533, 99730.90500192046 -2239213.5550907357, 99730.8860726795 -2239213.553226368, 99730.82041509087 -2239213.5333093563, 99730.75990471065 -2239213.5009658844, 99730.70686691879 -2239213.457438893, 99730.6633399279 -2239213.4044011016, 99730.63952485814 -2239213.35984624, 99730.554143722 -2239213.35984624, 99730.48586210929 -2239213.353121088, 99730.42020452066 -2239213.333204076, 99730.35969414044 -2239213.3008606043, 99730.30665634858 -2239213.257333613, 99730.30468605632 -2239213.254932805, 99730.28575682419 -2239213.2530684383, 99730.22009923556 -2239213.2331514265, 99730.15958885534 -2239213.2008079547, 99730.1095485658 -2239213.15974095, 99729.9538278667 -2239213.15974095, 99729.885546254 -2239213.153015798, 99729.81988866537 -2239213.133098786, 99729.75937828515 -2239213.1007553143, 99729.70933799617 -2239213.05968831, 99729.6536699391 -2239213.05968831, 99729.58538832639 -2239213.052963158, 99729.51973073777 -2239213.0330461464, 99729.45922035754 -2239213.0007026745, 99729.40618256568 -2239212.957175683, 99729.36265557479 -2239212.9041378917, 99729.36144066231 -2239212.9018649505, 99729.35916771494 -2239212.9006500347, 99729.30612992308 -2239212.8571230434, 99729.26260293218 -2239212.804085252, 99729.26138801203 -2239212.8018122963, 99729.25911507235 -2239212.8005973846, 99729.20607728048 -2239212.7570703933, 99729.16255028959 -2239212.704032602, 99729.13020681753 -2239212.6435222216, 99729.11028980576 -2239212.577864633, 99729.10842543902 -2239212.5589353996, 99729.10602463798 -2239212.556965113, 99729.10405435445 -2239212.554564316, 99729.08512511359 -2239212.552699948, 99729.01946752497 -2239212.5327829365, 99728.95895714474 -2239212.5004394646, 99728.90891684328 -2239212.45937245, 99728.7531961561 -2239212.45937245, 99728.6849145434 -2239212.452647298, 99728.65314351355 -2239212.4430096615, 99728.62137248371 -2239212.452647298, 99728.553090871 -2239212.45937245, 99728.4530382284 -2239212.45937245, 99728.38475661569 -2239212.452647298, 99728.31909902707 -2239212.4327302864, 99728.25858864684 -2239212.4003868145, 99728.20854835787 -2239212.3593198103, 99727.8527223731 -2239212.3593198103, 99727.7844407604 -2239212.3525946583, 99727.71878317177 -2239212.3326776465, 99727.65827279155 -2239212.3003341747, 99727.60523499969 -2239212.2568071834, 99727.60326471574 -2239212.2544063856, 99727.58433547529 -2239212.252542018, 99727.51867788666 -2239212.232625006, 99727.45816750644 -2239212.2002815343, 99727.40512971458 -2239212.156754543, 99727.4031594219 -2239212.1543537346, 99727.38423019019 -2239212.152489368, 99727.31857260157 -2239212.132572356, 99727.25806222134 -2239212.1002288843, 99727.20502442948 -2239212.056701893, 99727.16149743859 -2239212.0036641015, 99727.1602825261 -2239212.0013911603, 99727.15800957875 -2239212.0001762444, 99727.10497178689 -2239211.956649253, 99727.061444796 -2239211.9036114616, 99727.02910132393 -2239211.8431010814, 99727.00918431216 -2239211.777443493, 99727.0024591603 -2239211.70916188, 99727.0024591603 -2239211.5090566, 99727.00918431216 -2239211.440774987, 99727.02910132393 -2239211.3751173983, 99727.061444796 -2239211.314607018, 99727.10497178689 -2239211.2615692266, 99727.15800957875 -2239211.2180422354, 99727.16028251879 -2239211.2168273237, 99727.16149743859 -2239211.2145543685, 99727.20502442948 -2239211.161516577, 99727.25806222134 -2239211.1179895857, 99727.31857260157 -2239211.085646114, 99727.38423019019 -2239211.065729102, 99727.40315943063 -2239211.0638647345, 99727.40512971458 -2239211.0614639367, 99727.45816750644 -2239211.0179369454, 99727.51867788666 -2239210.9855934735, 99727.58433547529 -2239210.965676462, 99727.652617088 -2239210.95895131, 99727.70828514507 -2239210.95895131, 99727.75832543404 -2239210.9178843056, 99727.81883581427 -2239210.8855408337, 99727.88449340289 -2239210.865623822, 99727.9527750156 -2239210.85889867, 99728.50870628557 -2239210.85889867, 99728.55874657455 -2239210.8178316657, 99728.61925695477 -2239210.785488194, 99728.6849145434 -2239210.765571182, 99728.7531961561 -2239210.75884603, 99728.90891684328 -2239210.75884603, 99728.95895714474 -2239210.7177790157, 99729.00351201139 -2239210.6939639435, 99729.00351201139 -2239210.652967404, 99728.9624450045 -2239210.6029271116, 99728.93010153243 -2239210.5424167314, 99728.92761427246 -2239210.534217334, 99728.91941488237 -2239210.5317300763, 99728.85890450215 -2239210.4993866044, 99728.80886421318 -2239210.4583196, 99728.7531961561 -2239210.4583196, 99728.7031698348 -2239210.4533924377, 99728.6531435135 -2239210.4583196, 99727.99715960103 -2239210.4583196, 99727.94711931206 -2239210.4993866044, 99727.88660893183 -2239210.5317300763, 99727.82095134321 -2239210.551647088, 99727.7526697305 -2239210.55837224, 99727.1523538752 -2239210.55837224, 99727.08407226249 -2239210.551647088, 99727.01841467386 -2239210.5317300763, 99726.95790429364 -2239210.4993866044, 99726.90486650178 -2239210.455859613, 99726.90289621825 -2239210.453458816, 99726.88396697739 -2239210.451594448, 99726.81830938876 -2239210.4316774365, 99726.75779900854 -2239210.3993339646, 99726.707758719 -2239210.35826696, 99726.6520906625 -2239210.35826696, 99726.58380904979 -2239210.351541808, 99726.5520380199 -2239210.3419041713, 99726.52026699 -2239210.351541808, 99726.50133774956 -2239210.3534061755, 99726.49936746561 -2239210.3558069733, 99726.44632967375 -2239210.3993339646, 99726.44405672654 -2239210.40054888, 99726.44284181402 -2239210.4028218216, 99726.4017748071 -2239210.452862114, 99726.4017748071 -2239210.90874074, 99726.39504965524 -2239210.9770223526, 99726.37513264347 -2239211.0426799413, 99726.34278917141 -2239211.1031903215, 99726.29926218052 -2239211.156228113, 99726.29686138059 -2239211.1581983985, 99726.29499701274 -2239211.177127643, 99726.27508000097 -2239211.2427852317, 99726.2427365289 -2239211.303295612, 99726.20166952201 -2239211.3533359044, 99726.20166952201 -2239211.40900395, 99726.19494437015 -2239211.477285563, 99726.17502735837 -2239211.5429431517, 99726.14268388631 -2239211.603453532, 99726.09915689542 -2239211.6564913234, 99726.04611910356 -2239211.7000183146, 99726.04384616365 -2239211.7012332263, 99726.0426312438 -2239211.7035061815, 99725.99910425291 -2239211.756543973, 99725.94606646105 -2239211.8000709643, 99725.88555608083 -2239211.832414436, 99725.8198984922 -2239211.852331448, 99725.7516168795 -2239211.8590566, 99725.6515642369 -2239211.8590566, 99725.5832826242 -2239211.852331448, 99725.51762503557 -2239211.832414436, 99725.45711465535 -2239211.8000709643, 99725.40407686349 -2239211.756543973, 99725.3605498726 -2239211.7035061815, 99725.35933495275 -2239211.7012332263, 99725.35706201284 -2239211.7000183146, 99725.30402422098 -2239211.6564913234, 99725.26049723009 -2239211.603453532, 99725.22815375803 -2239211.5429431517, 99725.20823674626 -2239211.477285563, 99725.20637237951 -2239211.4583563297, 99725.20397157838 -2239211.456386043, 99725.16044458748 -2239211.4033482517, 99725.12810111542 -2239211.3428378715, 99725.10818410365 -2239211.277180283, 99725.10145895179 -2239211.20889867, 99725.10145895179 -2239210.50853017, 99725.10818410365 -2239210.4402485574, 99725.12810111542 -2239210.3745909687, 99725.16044458748 -2239210.3140805885, 99725.2015115944 -2239210.264040296), + (99729.4984977109 -2239209.7583196, 99729.5536172965 -2239209.7583196, 99729.60421676433 -2239209.763303213, 99729.60628785078 -2239209.7607795866, 99729.60868865077 -2239209.758809301, 99729.61055301856 -2239209.739880057, 99729.63047003033 -2239209.6742224684, 99729.6628135024 -2239209.613712088, 99729.70388050929 -2239209.5636717957, 99729.70388050929 -2239209.50800375, 99729.70880767224 -2239209.457977425, 99729.70388050929 -2239209.4079511, 99729.70388050929 -2239209.352283054, 99729.6628135024 -2239209.3022427615, 99729.66159858255 -2239209.2999698063, 99729.65932564264 -2239209.2987548946, 99729.60628785078 -2239209.2552279034, 99729.60421676433 -2239209.252704277, 99729.5536172965 -2239209.25768789, 99729.3033014412 -2239209.25768789, 99729.3033014412 -2239209.30789846, 99729.29837427876 -2239209.35792478, 99729.3033014412 -2239209.4079511, 99729.3033014412 -2239209.4933322333, 99729.34785630785 -2239209.5171473054, 99729.40089409972 -2239209.5606742967, 99729.44442109061 -2239209.613712088, 99729.47676456267 -2239209.6742224684, 99729.49668157444 -2239209.739880057, 99729.4984977109 -2239209.7583196)) + + + + + buffer-0.75: see http://trac.osgeo.org/geos/wiki/BufferRobustness + + POLYGON((99724.80151159 -2239210.14114081,99724.80151159 -2239209.90821432,99724.81592263 -2239209.76189657,99724.85860194 -2239209.62120174,99724.9042938714 -2239209.53571816,99724.90156424 -2239209.50800375,99724.90156424 -2239209.4079511,99724.91597528 -2239209.26163336,99724.95865459 -2239209.12093853,99725.02796203 -2239208.99127343,99725.0428380369 -2239208.97314696,99725.05870723 -2239208.92083324,99725.12801467 -2239208.79116814,99725.22128679 -2239208.67751573,99725.2762402889 -2239208.63241656,99725.32133944 -2239208.57746309,99725.3762929231 -2239208.53236393,99725.42139208 -2239208.47741045,99725.4763455623 -2239208.43231129,99725.52144472 -2239208.3773578,99725.5763982031 -2239208.33225864,99725.62149736 -2239208.27730516,99725.6764508589 -2239208.23220599,99725.72155001 -2239208.17725252,99725.83520242 -2239208.0839804,99725.96486752 -2239208.01467296,99726.0171812128 -2239207.99880377,99726.0353077 -2239207.98392775,99726.1649728 -2239207.91462031,99726.30566764 -2239207.871941,99726.45198538 -2239207.85752996,99727.4525118 -2239207.85752996,99727.5025381233 -2239207.86245712,99727.55256445 -2239207.85752996,99727.8488737358 -2239207.85752996,99727.86018122 -2239207.82025418,99727.90314351 -2239207.73987739,99727.90314351 -2239207.60700354,99727.91755455 -2239207.4606858,99727.96023386 -2239207.31999096,99728.0295413 -2239207.19032586,99728.12281343 -2239207.07667345,99728.1777669131 -2239207.03157429,99728.22286607 -2239206.97662081,99728.2778195531 -2239206.93152165,99728.32291871 -2239206.87656817,99728.3778722081 -2239206.831469,99728.42297136 -2239206.77651552,99728.4779248283 -2239206.73141638,99728.523024 -2239206.67646288,99728.63667641 -2239206.58319076,99728.76634151 -2239206.51388332,99728.8010181124 -2239206.50336429,99728.82318193 -2239206.4763576,99728.93683434 -2239206.38308547,99729.06649944 -2239206.31377803,99729.118813149 -2239206.29790884,99729.13693962 -2239206.28303283,99729.26660472 -2239206.21372539,99729.40729956 -2239206.17104608,99729.5536173 -2239206.15663504,99729.5864384989 -2239206.15663504,99729.5979079113 -2239206.15050451,99729.60403844 -2239206.1390351,99729.60403844 -2239206.00616126,99729.61844948 -2239205.85984352,99729.66112879 -2239205.71914868,99729.73043623 -2239205.58948358,99729.82370835 -2239205.47583117,99729.8786618331 -2239205.43073201,99729.92376099 -2239205.37577853,99729.9787145011 -2239205.33067935,99730.02381364 -2239205.27572589,99730.13746605 -2239205.18245376,99730.26713115 -2239205.11314632,99730.3018077423 -2239205.10262729,99730.32397156 -2239205.0756206,99730.43762397 -2239204.98234848,99730.56728908 -2239204.91304104,99730.6196027728 -2239204.89717186,99730.63772926 -2239204.88229583,99730.76739436 -2239204.81298839,99730.90808919 -2239204.77030908,99731.05440693 -2239204.75589804,99731.0872281389 -2239204.75589804,99731.16760493 -2239204.71293575,99731.30829976 -2239204.67025644,99731.45461751 -2239204.6558454,99731.5874913489 -2239204.6558454,99731.66786814 -2239204.61288311,99731.7201818627 -2239204.59701392,99731.73830833 -2239204.58213791,99731.86797343 -2239204.51283047,99731.9026500223 -2239204.50231144,99731.92481384 -2239204.47530475,99731.979767316 -2239204.4302056,99732.02486649 -2239204.3752521,99732.0518731808 -2239204.35308828,99732.06239221 -2239204.31841169,99732.13169965 -2239204.18874659,99732.22497177 -2239204.07509417,99732.2799252531 -2239204.02999501,99732.32502441 -2239203.97504153,99732.43867683 -2239203.88176941,99732.56834193 -2239203.81246197,99732.70903676 -2239203.76978266,99732.8553545 -2239203.75537162,99733.15551243 -2239203.75537162,99733.30183017 -2239203.76978266,99733.442525 -2239203.81246197,99733.5721901 -2239203.88176941,99733.5903165651 -2239203.89664542,99733.64263029 -2239203.91251461,99733.77229539 -2239203.98182205,99733.8859478 -2239204.07509417,99733.9081116236 -2239204.10210087,99733.94278822 -2239204.1126199,99734.07245332 -2239204.18192734,99734.090579791 -2239204.19680335,99734.1428935 -2239204.21267254,99734.2725586 -2239204.28197998,99734.2906850673 -2239204.29685599,99734.34299879 -2239204.31272518,99734.4385623232 -2239204.36380495,99734.50246188 -2239204.37009851,99734.64315671 -2239204.41277782,99734.77282181 -2239204.48208526,99734.8634839262 -2239204.55648974,99735.00272509 -2239204.5702038,99735.14341993 -2239204.61288311,99735.27308503 -2239204.68219055,99735.38673744 -2239204.77546267,99735.48000956 -2239204.88911508,99735.549317 -2239205.01878018,99735.59199631 -2239205.15947502,99735.60640735 -2239205.30579276,99735.60640735 -2239205.80605597,99735.59199631 -2239205.95237371,99735.549317 -2239206.09306855,99735.48000956 -2239206.22273365,99735.38673744 -2239206.33638606,99735.3863763185 -2239206.33668242,99735.439088742 -2239206.3648578,99735.50298831 -2239206.37115136,99735.64368314 -2239206.41383068,99735.77334824 -2239206.48313812,99735.88700065 -2239206.57641024,99735.98027277 -2239206.69006265,99736.04958021 -2239206.81972775,99736.0654493992 -2239206.87204146,99736.08032542 -2239206.89016794,99736.14963286 -2239207.01983304,99736.19231217 -2239207.16052787,99736.20672321 -2239207.30684561,99736.20672321 -2239207.40689825,99736.2017960474 -2239207.45692457,99736.20672321 -2239207.50695089,99736.20672321 -2239207.63982474,99736.2496855 -2239207.72020153,99736.29236481 -2239207.86089637,99736.30677585 -2239208.00721411,99736.30677585 -2239208.04003531,99736.34973814 -2239208.1204121,99736.39241745 -2239208.26110694,99736.40682849 -2239208.40742468,99736.40682849 -2239208.44024588,99736.44979078 -2239208.52062267,99736.4924701 -2239208.66131751,99736.50688113 -2239208.80763525,99736.50688113 -2239208.94050908,99736.54984343 -2239209.02088589,99736.59252274 -2239209.16158072,99736.5988162972 -2239209.22548028,99736.64989607 -2239209.32104381,99736.69257538 -2239209.46173865,99736.6988689372 -2239209.52563821,99736.74994871 -2239209.62120174,99736.79262802 -2239209.76189657,99736.7967393798 -2239209.80363991,99736.88752708 -2239209.87814744,99736.9807992 -2239209.99179985,99737.05010664 -2239210.12146495,99737.09278595 -2239210.26215979,99737.10719699 -2239210.40847753,99737.10719699 -2239210.50230287,99737.18090448 -2239210.59211571,99737.25021192 -2239210.72178081,99737.2854776711 -2239210.83803638,99737.37419052 -2239210.88545439,99737.48784293 -2239210.97872651,99737.5329420869 -2239211.03367999,99737.58789557 -2239211.07877915,99737.6329947341 -2239211.13373264,99737.68794822 -2239211.1788318,99737.7101120377 -2239211.20583849,99737.74478863 -2239211.21635752,99737.87445373 -2239211.28566496,99737.98810614 -2239211.37893708,99738.0332052911 -2239211.43389055,99738.08815879 -2239211.47898972,99738.1332579599 -2239211.53394322,99738.18821143 -2239211.57904237,99738.28148355 -2239211.69269478,99738.35079099 -2239211.82235988,99738.3934703 -2239211.96305471,99738.40788134 -2239212.10937245,99738.40788134 -2239212.20942509,99738.3934703 -2239212.35574284,99738.35079099 -2239212.49643767,99738.2941740377 -2239212.60236054,99738.38831671 -2239212.67962143,99738.4334158619 -2239212.73457491,99738.48836936 -2239212.77967408,99738.58164148 -2239212.89332649,99738.65094892 -2239213.02299159,99738.69362823 -2239213.16368642,99738.70803927 -2239213.31000416,99738.70803927 -2239213.41005681,99738.69362823 -2239213.55637455,99738.65094892 -2239213.69706938,99738.6171829562 -2239213.76024105,99738.65094892 -2239213.82341273,99738.69362823 -2239213.96410756,99738.70803927 -2239214.1104253,99738.70803927 -2239214.31053059,99738.69362823 -2239214.45684833,99738.65094892 -2239214.59754316,99738.58164148 -2239214.72720826,99738.48836936 -2239214.84086067,99738.4334158741 -2239214.88595983,99738.38831671 -2239214.94091332,99738.2784097438 -2239215.03111163,99738.18821143 -2239215.1410186,99738.07455902 -2239215.23429073,99737.94489392 -2239215.30359817,99737.8341295888 -2239215.33719816,99737.88127298 -2239215.39464255,99737.95058042 -2239215.52430765,99737.99325973 -2239215.66500249,99737.9957755359 -2239215.6905459,99738.0783044636 -2239215.79110768,99738.18821143 -2239215.881306,99738.2784097438 -2239215.99121297,99738.38831671 -2239216.08141128,99738.4543715263 -2239216.1618993,99738.75846041 -2239216.1618993,99738.90477815 -2239216.17631033,99739.04547299 -2239216.21898965,99739.17513809 -2239216.28829709,99739.193264561 -2239216.3031731,99739.24557827 -2239216.31904229,99739.37524337 -2239216.38834973,99739.48889578 -2239216.48162185,99739.5088552311 -2239216.50594251,99739.52881468 -2239216.48162185,99739.64246709 -2239216.38834973,99739.77213219 -2239216.31904229,99739.91282702 -2239216.27636298,99740.05914476 -2239216.26195194,99740.15919741 -2239216.26195194,99740.20922373 -2239216.2668791,99740.25925005 -2239216.26195194,99740.35930269 -2239216.26195194,99740.50562043 -2239216.27636298,99740.64631527 -2239216.31904229,99740.77598037 -2239216.38834973,99740.88963278 -2239216.48162185,99740.9829049 -2239216.59527426,99741.05221234 -2239216.72493936,99741.09489165 -2239216.8656342,99741.10930269 -2239217.01195194,99741.10930269 -2239217.21205722,99741.09489165 -2239217.35837496,99741.05221234 -2239217.4990698,99741.00925005 -2239217.57944659,99741.00925005 -2239217.71232044,99740.99483901 -2239217.85863818,99740.9521597 -2239217.99933301,99740.88285226 -2239218.12899811,99740.78958014 -2239218.24265052,99740.67592772 -2239218.33592264,99740.54626262 -2239218.40523008,99740.40556779 -2239218.4479094,99740.25925005 -2239218.46232044,99740.255319081 -2239218.46232044,99740.18926428 -2239218.54280845,99740.07561187 -2239218.63608057,99739.94594677 -2239218.70538801,99739.8936330476 -2239218.7212572,99739.87550658 -2239218.73613321,99739.74584148 -2239218.80544066,99739.60514665 -2239218.84811997,99739.4659054834 -2239218.86183403,99739.4339422969 -2239218.88806554,99739.38884314 -2239218.94301902,99739.27519073 -2239219.03629114,99739.14552563 -2239219.10559858,99739.1108490276 -2239219.11611761,99739.08868521 -2239219.1431243,99738.9750328 -2239219.23639643,99738.8453677 -2239219.30570387,99738.70467287 -2239219.34838318,99738.6629295295 -2239219.35249454,99738.588422 -2239219.44328223,99738.5334685047 -2239219.4883814,99738.48836936 -2239219.54333487,99738.37471695 -2239219.636607,99738.24505185 -2239219.70591444,99738.10435701 -2239219.74859375,99737.95803927 -2239219.76300479,99737.8251654211 -2239219.76300479,99737.74478863 -2239219.80596708,99737.6040938 -2239219.84864639,99737.45777606 -2239219.86305743,99737.4249548511 -2239219.86305743,99737.34457806 -2239219.90601972,99737.20388323 -2239219.94869903,99737.05756549 -2239219.96311007,99736.95751285 -2239219.96311007,99736.8111951 -2239219.94869903,99736.67050027 -2239219.90601972,99736.5901234789 -2239219.86305743,99736.45724963 -2239219.86305743,99736.31093189 -2239219.84864639,99736.17023706 -2239219.80596708,99736.04057196 -2239219.73665964,99735.9362647377 -2239219.65105692,99735.91072132 -2239219.64854111,99735.77002649 -2239219.6058618,99735.64036139 -2239219.53655436,99735.52670898 -2239219.44328223,99735.4816098189 -2239219.38832875,99735.42665633 -2239219.34322959,99735.33338421 -2239219.22957718,99735.26407677 -2239219.09991208,99735.22139746 -2239218.95921724,99735.20698642 -2239218.8128995,99735.20698642 -2239218.71284686,99735.2119135826 -2239218.66282054,99735.20698642 -2239218.61279422,99735.20698642 -2239218.47992037,99735.16402413 -2239218.39954358,99735.12134482 -2239218.25884875,99735.1172334606 -2239218.21710542,99735.02644576 -2239218.14259788,99734.93317364 -2239218.02894547,99734.8638662 -2239217.89928037,99734.8524401864 -2239217.86161385,99734.80638103 -2239217.85707742,99734.75635471 -2239217.86200458,99734.7235335011 -2239217.86200458,99734.64315671 -2239217.90496687,99734.50246188 -2239217.94764618,99734.35614414 -2239217.96205722,99734.2560915 -2239217.96205722,99734.2060651767 -2239217.95713006,99734.15603885 -2239217.96205722,99734.0622135113 -2239217.96205722,99733.97240067 -2239218.03576472,99733.84273557 -2239218.10507216,99733.70204074 -2239218.14775147,99733.555723 -2239218.16216251,99733.45567036 -2239218.16216251,99733.3556177116 -2239218.15230819,99733.3379832532 -2239218.15404503,99733.24241972 -2239218.2051248,99733.10172488 -2239218.24780411,99732.95540714 -2239218.26221515,99732.8553545 -2239218.26221515,99732.70903676 -2239218.24780411,99732.56834193 -2239218.2051248,99732.4879651389 -2239218.16216251,99732.45514393 -2239218.16216251,99732.30882619 -2239218.14775147,99732.16813136 -2239218.10507216,99732.072567829 -2239218.05399239,99732.00866826 -2239218.04769883,99731.86797343 -2239218.00501951,99731.73830833 -2239217.93571207,99731.62465592 -2239217.84243995,99731.579556759 -2239217.78748647,99731.52460327 -2239217.74238731,99731.43133115 -2239217.6287349,99731.36202371 -2239217.4990698,99731.3193444 -2239217.35837496,99731.30493336 -2239217.21205722,99731.30493336 -2239217.01195194,99731.3193444 -2239216.8656342,99731.36202371 -2239216.72493936,99731.404986 -2239216.64456257,99731.404986 -2239216.61174137,99731.41939704 -2239216.46542363,99731.46207635 -2239216.32472879,99731.5077682803 -2239216.2392452,99731.50503865 -2239216.2115308,99731.50503865 -2239216.11147815,99731.51944969 -2239215.96516041,99731.562129 -2239215.82446558,99731.60509129 -2239215.74408879,99731.60509129 -2239215.71126758,99731.6149456152 -2239215.61121494,99731.60509129 -2239215.5111623,99731.60509129 -2239215.47834109,99731.562129 -2239215.3979643,99731.5462598148 -2239215.34565061,99731.53138379 -2239215.32752412,99731.46207635 -2239215.19785902,99731.4462071551 -2239215.1455453,99731.43133115 -2239215.12741883,99731.36202371 -2239214.99775373,99731.3461545199 -2239214.94544002,99731.33127851 -2239214.92731355,99731.26197107 -2239214.79764845,99731.21929176 -2239214.65695361,99731.20488072 -2239214.51063587,99731.20488072 -2239214.47781467,99731.16191843 -2239214.39743788,99731.151399397 -2239214.36276128,99731.1243927 -2239214.34059746,99731.03112058 -2239214.22694505,99730.96181314 -2239214.09727995,99730.9512941077 -2239214.06260335,99730.92428742 -2239214.04043953,99730.9021236047 -2239214.01343284,99730.867447 -2239214.00291381,99730.7377819 -2239213.93360637,99730.719655429 -2239213.91873036,99730.66734172 -2239213.90286117,99730.53767662 -2239213.83355373,99730.4333693977 -2239213.74795101,99730.40782598 -2239213.7454352,99730.26713115 -2239213.70275589,99730.13746605 -2239213.63344844,99730.1193395827 -2239213.61857243,99730.06702586 -2239213.60270324,99729.9866490689 -2239213.55974095,99729.95382787 -2239213.55974095,99729.80751013 -2239213.54532991,99729.66681529 -2239213.5026506,99729.5712517568 -2239213.45157083,99729.5073522 -2239213.44527727,99729.36665736 -2239213.40259796,99729.23699226 -2239213.33329052,99729.12333985 -2239213.24001839,99729.0782406931 -2239213.18506491,99729.02328721 -2239213.13996575,99728.9781880531 -2239213.08501227,99728.92323457 -2239213.03991311,99728.82996244 -2239212.9262607,99728.7974867573 -2239212.86550297,99728.7860173589 -2239212.85937245,99728.75319616 -2239212.85937245,99728.6531435116 -2239212.84951812,99728.55309087 -2239212.85937245,99728.45303823 -2239212.85937245,99728.30672049 -2239212.84496141,99728.16602565 -2239212.8022821,99728.0856488589 -2239212.75931981,99727.85272237 -2239212.75931981,99727.70640463 -2239212.74490877,99727.5657098 -2239212.70222946,99727.4360447 -2239212.63292202,99727.4179182327 -2239212.61804601,99727.36560451 -2239212.60217682,99727.23593941 -2239212.53286938,99727.21781293 -2239212.51799336,99727.16549923 -2239212.50212417,99727.03583413 -2239212.43281673,99726.92218172 -2239212.33954461,99726.8770825589 -2239212.28459113,99726.82212907 -2239212.23949197,99726.72885695 -2239212.12583956,99726.65954951 -2239211.99617446,99726.6168702 -2239211.85547962,99726.60245916 -2239211.70916188,99726.60245916 -2239211.5090566,99726.6066003423 -2239211.46701047,99726.5935520379 -2239211.49142213,99726.58725848 -2239211.5553217,99726.54457917 -2239211.69601653,99726.47527173 -2239211.82568163,99726.38199961 -2239211.93933404,99726.3270461269 -2239211.9844332,99726.28194697 -2239212.03938668,99726.16829455 -2239212.13265881,99726.03862945 -2239212.20196625,99725.89793462 -2239212.24464556,99725.75161688 -2239212.2590566,99725.65156424 -2239212.2590566,99725.5052465 -2239212.24464556,99725.36455166 -2239212.20196625,99725.23488656 -2239212.13265881,99725.12123415 -2239212.03938668,99725.0761349931 -2239211.9844332,99725.02118151 -2239211.93933404,99724.92790939 -2239211.82568163,99724.85860194 -2239211.69601653,99724.8427327449 -2239211.6437028,99724.82785674 -2239211.62557634,99724.7585493 -2239211.49591124,99724.71586999 -2239211.35521641,99724.70145895 -2239211.20889867,99724.70145895 -2239210.50853017,99724.71586999 -2239210.36221243,99724.7585493 -2239210.2215176,99724.80151159 -2239210.14114081),(99726.8770825589 -2239210.93362735,99726.8959962418 -2239210.91058097,99726.8653413 -2239210.90128189,99726.80177481 -2239210.86730489,99726.80177481 -2239210.90874074,99726.7911658513 -2239211.0164553,99726.82212907 -2239210.97872651,99726.8770825589 -2239210.93362735)) + + + + + buffer-1.01 (#494) + + POLYGON ((99724.5415116 -2239210.07866999,99724.5415116 -2239209.9082143,99724.5609185 -2239209.7111731,99724.6183933 -2239209.521704,99724.6415642 -2239209.4783543,99724.6415642 -2239209.4079511,99724.6609711 -2239209.2109099,99724.7184459 -2239209.0214408,99724.8094364244 -2239208.85120953,99724.8184986 -2239208.8213356,99724.9118326 -2239208.6467199,99725.037439 -2239208.493668,99725.0923925052 -2239208.44856881,99725.1374917 -2239208.3936153,99725.19244517 -2239208.34851617,99725.2375443 -2239208.2935627,99725.2924978955 -2239208.24846343,99725.337597 -2239208.19351,99725.39255036 -2239208.14841096,99725.4376496 -2239208.0934574,99725.4926031603 -2239208.04835816,99725.5377022 -2239207.9934048,99725.6907542 -2239207.8677983,99725.8653698 -2239207.7744643,99725.8952440723 -2239207.76540204,99726.0654751 -2239207.6744116,99726.2549442 -2239207.6169368,99726.4519854 -2239207.59753,99727.4525118 -2239207.59753,99727.5025381 -2239207.60245714,99727.5525644 -2239207.59753,99727.64407656 -2239207.59753,99727.6625504 -2239207.4099623,99727.7200252 -2239207.2204933,99727.8133592 -2239207.0458776,99727.9389657 -2239206.8928257,99727.9939189892 -2239206.84772668,99728.0390183 -2239206.792773,99728.09397177 -2239206.74767387,99728.1390709 -2239206.6927204,99728.1940245825 -2239206.64762109,99728.2391236 -2239206.5926678,99728.2940769089 -2239206.54756877,99728.3391762 -2239206.4926151,99728.4922281 -2239206.3670087,99728.6537698364 -2239206.28066278,99728.7923861 -2239206.1669034,99728.9670017 -2239206.0735694,99728.9968758442 -2239206.06450717,99729.167107 -2239205.9735167,99729.3528016278 -2239205.91718687,99729.3634453 -2239205.80912,99729.4209201 -2239205.619651,99729.5142541 -2239205.4450353,99729.6398606 -2239205.2919834,99729.6948141603 -2239205.24688416,99729.7399132 -2239205.1919308,99729.7948667052 -2239205.14683161,99729.8399659 -2239205.0918781,99729.9930178 -2239204.9662717,99730.1545592497 -2239204.87992594,99730.2931757 -2239204.7661664,99730.4677914 -2239204.6728324,99730.4976652713 -2239204.66377026,99730.6678967 -2239204.5727797,99730.8573657 -2239204.5153049,99731.0180600617 -2239204.49947786,99731.0681072 -2239204.4727271,99731.2575763 -2239204.4152523,99731.4546175 -2239204.3958454,99731.5250206377 -2239204.3958454,99731.5683705 -2239204.3726744,99731.5982447981 -2239204.36361213,99731.7554017157 -2239204.27960999,99731.7959194991 -2239204.24635789,99731.8291718013 -2239204.2058398,99731.9155175 -2239204.0442983,99732.041124 -2239203.8912464,99732.0960776663 -2239203.84614711,99732.1411767 -2239203.7911938,99732.2942286 -2239203.6655873,99732.4688442 -2239203.5722533,99732.6583133 -2239203.5147785,99732.8553545 -2239203.4953716,99733.1555124 -2239203.4953716,99733.3525537 -2239203.5147785,99733.5420227 -2239203.5722533,99733.7122537168 -2239203.66324364,99733.742128 -2239203.6723059,99733.9167436 -2239203.76564,99734.0553600971 -2239203.8793995,99734.2125173287 -2239203.96340176,99734.2423912 -2239203.9724639,99734.4126222168 -2239204.06345424,99734.4424965 -2239204.0725165,99734.5151443635 -2239204.1113476,99734.5531854 -2239204.1150943,99734.7426544 -2239204.1725691,99734.9172701 -2239204.2659032,99734.9669580798 -2239204.30668106,99735.0534486 -2239204.3151996,99735.2429176 -2239204.3726744,99735.4175333 -2239204.4660085,99735.5705852 -2239204.5916149,99735.6961917 -2239204.7446668,99735.7895257 -2239204.9192825,99735.8470005 -2239205.1087515,99735.8664074 -2239205.3057928,99735.8664074 -2239205.806056,99735.8470005 -2239206.0030972,99735.7895257 -2239206.1925662,99735.7871029413 -2239206.19709886,99735.9177965 -2239206.266956,99736.0708484 -2239206.3925625,99736.1964549 -2239206.5456144,99736.2897889 -2239206.7202301,99736.2988511704 -2239206.7501044,99736.3898415 -2239206.9203353,99736.4473163 -2239207.1098044,99736.4667232 -2239207.3068456,99736.4667232 -2239207.4068983,99736.4617960304 -2239207.4569246,99736.4667232 -2239207.5069509,99736.4667232 -2239207.57735392,99736.4898942 -2239207.6207038,99736.547369 -2239207.8101729,99736.5631959389 -2239207.97086704,99736.5899468 -2239208.0209144,99736.6474216 -2239208.2103835,99736.6632486227 -2239208.37107766,99736.6899995 -2239208.421125,99736.7474743 -2239208.610594,99736.7668811 -2239208.8076352,99736.7668811 -2239208.87803829,99736.7900521 -2239208.9213882,99736.8475269 -2239209.1108572,99736.8512736244 -2239209.14889828,99736.8901047 -2239209.2215461,99736.9475796 -2239209.4110152,99736.951326291 -2239209.44905612,99736.9901574 -2239209.521704,99737.0329471384 -2239209.66276292,99737.0713748 -2239209.6942997,99737.1969813 -2239209.8473516,99737.2903153 -2239210.0219673,99737.3477901 -2239210.2114363,99737.367197 -2239210.4084775,99737.367197 -2239210.41124683,99737.3970866 -2239210.4476674,99737.4904206 -2239210.6222831,99737.5019722663 -2239210.66036386,99737.5186388 -2239210.6692723,99737.6716907 -2239210.7948787,99737.7167900108 -2239210.84983238,99737.7717433 -2239210.8949314,99737.8168423337 -2239210.94988471,99737.8573605503 -2239210.98313714,99738.018902 -2239211.0694829,99738.1719539 -2239211.1950893,99738.2170533011 -2239211.25004306,99738.2720065 -2239211.295142,99738.3171054434 -2239211.3500952,99738.3720592 -2239211.3951946,99738.4976657 -2239211.5482465,99738.5909997 -2239211.7228622,99738.6484745 -2239211.9123312,99738.6678813 -2239212.1093725,99738.6678813 -2239212.2094251,99738.6484745 -2239212.4064663,99738.6081004414 -2239212.53956179,99738.61726363 -2239212.55072717,99738.6722171 -2239212.5958263,99738.7978236 -2239212.7488782,99738.8911576 -2239212.9234939,99738.9486324 -2239213.1129629,99738.9680393 -2239213.3100042,99738.9680393 -2239213.4100568,99738.9486324 -2239213.607098,99738.9021769824 -2239213.76024105,99738.9486324 -2239213.9133841,99738.9680393 -2239214.1104253,99738.9680393 -2239214.3105306,99738.9486324 -2239214.5075718,99738.8911576 -2239214.6970409,99738.7978236 -2239214.8716565,99738.6722171 -2239215.0247084,99738.6172637911 -2239215.06980743,99738.5721645 -2239215.1247611,99738.462257725 -2239215.21495922,99738.3720592 -2239215.3248664,99738.2190073 -2239215.4504728,99738.2014247057 -2239215.45987089,99738.2367425085 -2239215.57629807,99738.2621522445 -2239215.60725993,99738.3720592 -2239215.6974582,99738.462257725 -2239215.80736538,99738.5721645 -2239215.8975635,99738.5757227977 -2239215.9018993,99738.7584604 -2239215.9018993,99738.9555016 -2239215.9213062,99739.1449707 -2239215.978781,99739.3152014914 -2239216.06977127,99739.345076 -2239216.0788336,99739.5088552031 -2239216.16637542,99739.6726345 -2239216.0788336,99739.8621035 -2239216.0213588,99740.0591448 -2239216.0019519,99740.1591974 -2239216.0019519,99740.2092237 -2239216.00687907,99740.25925 -2239216.0019519,99740.3593027 -2239216.0019519,99740.5563439 -2239216.0213588,99740.745813 -2239216.0788336,99740.9204286 -2239216.1721676,99741.0734805 -2239216.2977741,99741.199087 -2239216.450826,99741.292421 -2239216.6254417,99741.3498958 -2239216.8149107,99741.3693027 -2239217.0119519,99741.3693027 -2239217.2120572,99741.3498958 -2239217.4090984,99741.292421 -2239217.5985675,99741.26925 -2239217.64191741,99741.26925 -2239217.7123204,99741.2498432 -2239217.9093617,99741.1923684 -2239218.0988307,99741.0990344 -2239218.2734464,99740.9734279 -2239218.4264983,99740.820376 -2239218.5521047,99740.6457603 -2239218.6454388,99740.4562913 -2239218.7029136,99740.3869959453 -2239218.70973857,99740.373112 -2239218.7266562,99740.2200601 -2239218.8522627,99740.0454445 -2239218.9455967,99740.0155699914 -2239218.95465903,99739.8453392 -2239219.0456493,99739.6558701 -2239219.1031241,99739.5865749089 -2239219.10994909,99739.5726909 -2239219.1268668,99739.419639 -2239219.2524732,99739.2580975504 -2239219.33881896,99739.1194811 -2239219.4525785,99738.9448654 -2239219.5459125,99738.8038065828 -2239219.5887023,99738.7722698 -2239219.62713,99738.7173161175 -2239219.67222931,99738.6722171 -2239219.7271826,99738.5191652 -2239219.8527891,99738.3445495 -2239219.9461231,99738.1550805 -2239220.0035979,99737.9580393 -2239220.0230048,99737.8876361623 -2239220.0230048,99737.8442863 -2239220.0461758,99737.6548173 -2239220.1036506,99737.4941231253 -2239220.11947754,99737.4440758 -2239220.1462284,99737.2546067 -2239220.2037032,99737.0575655 -2239220.2231101,99736.9575128 -2239220.2231101,99736.7604716 -2239220.2037032,99736.5710026 -2239220.1462284,99736.5276526912 -2239220.1230574,99736.4572496 -2239220.1230574,99736.2602084 -2239220.1036506,99736.0707394 -2239220.0461758,99735.8961237 -2239219.9528417,99735.8220170434 -2239219.89202396,99735.6705288 -2239219.8460705,99735.4959131 -2239219.7527365,99735.3428612 -2239219.62713,99735.29776207 -2239219.57217653,99735.2428086 -2239219.5270774,99735.1172021 -2239219.3740254,99735.0238681 -2239219.1994098,99734.9663933 -2239219.0099407,99734.9469864 -2239218.8128995,99734.9469864 -2239218.7128469,99734.9519135732 -2239218.66282054,99734.9469864 -2239218.6127942,99734.9469864 -2239218.54239114,99734.9238154 -2239218.4990413,99734.8810256616 -2239218.35798238,99734.842598 -2239218.3264456,99734.7169915 -2239218.1733937,99734.7075934665 -2239218.15581122,99734.5531854 -2239218.2026504,99734.3561441 -2239218.2220572,99734.2560915 -2239218.2220572,99734.2060652 -2239218.21713006,99734.1560389 -2239218.2220572,99734.153269497 -2239218.2220572,99734.1168489 -2239218.2519468,99733.9422333 -2239218.3452808,99733.7527642 -2239218.4027556,99733.555723 -2239218.4221625,99733.4556704 -2239218.4221625,99733.3962216239 -2239218.4163073,99733.3419174 -2239218.4453335,99733.1524484 -2239218.5028083,99732.9554071 -2239218.5222152,99732.8553545 -2239218.5222152,99732.6583133 -2239218.5028083,99732.4688442 -2239218.4453335,99732.4187968324 -2239218.41858262,99732.2581027 -2239218.4027556,99732.0686337 -2239218.3452808,99731.9959858341 -2239218.30644972,99731.9579448 -2239218.302703,99731.7684757 -2239218.2452282,99731.5938601 -2239218.1518942,99731.4408082 -2239218.0262877,99731.3957091663 -2239217.97133439,99731.3407555 -2239217.9262351,99731.2151491 -2239217.7731832,99731.121815 -2239217.5985675,99731.0643402 -2239217.4090984,99731.0449334 -2239217.2120572,99731.0449334 -2239217.0119519,99731.0643402 -2239216.8149107,99731.121815 -2239216.6254417,99731.1485658751 -2239216.57539437,99731.1643929 -2239216.4147001,99731.2218677 -2239216.2252311,99731.2450386 -2239216.18188138,99731.2450386 -2239216.1114782,99731.2644455 -2239215.9144369,99731.3219203 -2239215.7249679,99731.3486711837 -2239215.6749205,99731.354945644 -2239215.61121495,99731.3486711837 -2239215.5475094,99731.3219203 -2239215.497462,99731.3128580278 -2239215.4675877,99731.2218677 -2239215.2973567,99731.2128054311 -2239215.26748241,99731.121815 -2239215.0972514,99731.1127527279 -2239215.0673771,99731.0217624 -2239214.8971461,99730.9642876 -2239214.7076771,99730.9484605738 -2239214.5469829,99730.9286978954 -2239214.51000958,99730.8149385 -2239214.3713933,99730.7377477001 -2239214.22697941,99730.5977179188 -2239214.15213197,99730.567844 -2239214.1430698,99730.3932284 -2239214.0497358,99730.3191216666 -2239213.98891804,99730.1676335 -2239213.9429646,99729.997402493 -2239213.85197417,99729.9675282 -2239213.8429119,99729.9174808437 -2239213.81616104,99729.7567866 -2239213.8003341,99729.5673176 -2239213.7428593,99729.4946695048 -2239213.7040281,99729.4566287 -2239213.7002814,99729.2671597 -2239213.6428066,99729.092544 -2239213.5494726,99728.9394921 -2239213.4238662,99728.8943929214 -2239213.36891268,99728.8394394 -2239213.3238135,99728.79434027 -2239213.26886003,99728.7393868 -2239213.2237609,99728.6461920537 -2239213.11020282,99728.5530909 -2239213.1193725,99728.4530382 -2239213.1193725,99728.255997 -2239213.0999656,99728.066528 -2239213.0424908,99728.0231780912 -2239213.0193198,99727.8527224 -2239213.0193198,99727.6556811 -2239212.9999129,99727.4662121 -2239212.9424381,99727.2959810832 -2239212.85144776,99727.2661068 -2239212.8423855,99727.0958760086 -2239212.75139523,99727.0660015 -2239212.7423329,99726.8913859 -2239212.6489988,99726.738334 -2239212.5233924,99726.6932348052 -2239212.4684389,99726.6382813 -2239212.4233397,99726.5126749 -2239212.2702878,99726.4789537659 -2239212.20720004,99726.4657947 -2239212.2232344,99726.3127428 -2239212.3488409,99726.1381271 -2239212.4421749,99725.9486581 -2239212.4996497,99725.7516169 -2239212.5190566,99725.6515642 -2239212.5190566,99725.454523 -2239212.4996497,99725.265054 -2239212.4421749,99725.0904383 -2239212.3488409,99724.9373864 -2239212.2232344,99724.8922873825 -2239212.16828111,99724.8373337 -2239212.1231818,99724.7117273 -2239211.9701299,99724.6183933 -2239211.7955142,99724.6093311591 -2239211.76564033,99724.5183406 -2239211.5954089,99724.4608658 -2239211.4059399,99724.441459 -2239211.2088987,99724.441459 -2239210.5085302,99724.4608658 -2239210.3114889,99724.5183406 -2239210.1220199,99724.5415116 -2239210.07866999)) + + + + + buffer-1.1 + + POLYGON ((99724.45151159 -2239210.0570456,99724.45151159 -2239209.90821432,99724.47264779 -2239209.69361496,99724.53524411 -2239209.48726254,99724.55156424 -2239209.45672972,99724.55156424 -2239209.4079511,99724.57270043 -2239209.19335175,99724.63529675 -2239208.98699933,99724.7262871367 -2239208.81676829,99724.73534939 -2239208.78689404,99724.83700031 -2239208.59671856,99724.97379942 -2239208.43002836,99725.0287529111 -2239208.38492919,99725.07385206 -2239208.32997572,99725.128805548 -2239208.28487656,99725.17390471 -2239208.22992307,99725.2288581827 -2239208.18482392,99725.27395735 -2239208.12987043,99725.3289108328 -2239208.08477127,99725.37400999 -2239208.02981779,99725.4289634811 -2239207.98471862,99725.47406263 -2239207.92976515,99725.64075284 -2239207.79296603,99725.83092832 -2239207.69131512,99725.8608025436 -2239207.68225287,99726.0310336 -2239207.59126248,99726.23738602 -2239207.52866615,99726.45198538 -2239207.50752996,99727.4525118 -2239207.50752996,99727.502538125 -2239207.51245712,99727.55256445 -2239207.50752996,99727.5629408061 -2239207.50752996,99727.57427971 -2239207.39240418,99727.63687603 -2239207.18605176,99727.73852694 -2239206.99587628,99727.87532605 -2239206.82918608,99727.9302795548 -2239206.7840869,99727.9753787 -2239206.72913344,99728.0303321742 -2239206.68403429,99728.07543134 -2239206.62908079,99728.1303848228 -2239206.58398163,99728.17548398 -2239206.52902815,99728.2304374628 -2239206.48392899,99728.27553662 -2239206.42897551,99728.44222683 -2239206.29217639,99728.6037683473 -2239206.20583065,99728.74238476 -2239206.09207111,99728.93256024 -2239205.9904202,99728.9624344654 -2239205.98135795,99729.13266552 -2239205.89036755,99729.2695322976 -2239205.84884947,99729.27517463 -2239205.7915619,99729.33777095 -2239205.58520948,99729.43942186 -2239205.395034,99729.57622098 -2239205.2283438,99729.6311744542 -2239205.18324465,99729.67627362 -2239205.12829115,99729.7312271028 -2239205.08319199,99729.77632626 -2239205.02823851,99729.94301647 -2239204.8914394,99730.1045579766 -2239204.80509367,99730.24317439 -2239204.69133411,99730.43334987 -2239204.5896832,99730.4632241149 -2239204.58062095,99730.63345516 -2239204.48963056,99730.83980758 -2239204.42703424,99730.9915507716 -2239204.41208883,99731.03366573 -2239204.38957792,99731.24001815 -2239204.32698159,99731.45461751 -2239204.3058454,99731.5033961238 -2239204.3058454,99731.53392894 -2239204.28952527,99731.5638031868 -2239204.28046302,99731.7054002625 -2239204.2047778,99731.7322799528 -2239204.18271821,99731.7543395289 -2239204.15583854,99731.84068528 -2239203.994297,99731.9774844 -2239203.8276068,99732.0324378828 -2239203.78250764,99732.07753704 -2239203.72755416,99732.24422724 -2239203.59075504,99732.43440273 -2239203.48910413,99732.64075515 -2239203.42650781,99732.8553545 -2239203.40537162,99733.15551243 -2239203.40537162,99733.37011178 -2239203.42650781,99733.5764642 -2239203.48910413,99733.7466952432 -2239203.58009452,99733.77656949 -2239203.58915677,99733.96674497 -2239203.69080769,99734.1053613588 -2239203.80456722,99734.2469584764 -2239203.88025245,99734.2768327 -2239203.8893147,99734.4470637803 -2239203.98030511,99734.47693799 -2239203.98936735,99734.5416536026 -2239204.02395857,99734.57074349 -2239204.02682367,99734.77709591 -2239204.08941999,99734.9672714 -2239204.1910709,99735.002776056 -2239204.22020882,99735.07100671 -2239204.22692895,99735.27735913 -2239204.28952527,99735.46753461 -2239204.39117618,99735.63422481 -2239204.5279753,99735.77102393 -2239204.6946655,99735.87267484 -2239204.88484098,99735.93527116 -2239205.0911934,99735.95640735 -2239205.30579276,99735.95640735 -2239205.80605597,99735.93527116 -2239206.02065533,99735.8950519575 -2239206.15324028,99735.96779782 -2239206.19212375,99736.13448802 -2239206.32892287,99736.27128714 -2239206.49561307,99736.37293805 -2239206.68578855,99736.3820002963 -2239206.71566277,99736.47299069 -2239206.88589383,99736.53558702 -2239207.09224626,99736.55672321 -2239207.30684561,99736.55672321 -2239207.40689825,99736.5517960479 -2239207.45692457,99736.55672321 -2239207.50695089,99736.55672321 -2239207.55572952,99736.57304334 -2239207.58626233,99736.63563966 -2239207.79261475,99736.6505850566 -2239207.94435792,99736.67309598 -2239207.9864729,99736.7356923 -2239208.19282532,99736.7506376966 -2239208.34456849,99736.77314862 -2239208.38668347,99736.83574494 -2239208.59303589,99736.85688113 -2239208.80763525,99736.85688113 -2239208.85641386,99736.87320126 -2239208.88694668,99736.93579759 -2239209.09329911,99736.9386626941 -2239209.122389,99736.97325391 -2239209.18710461,99737.03585023 -2239209.39345703,99737.0387153344 -2239209.42254693,99737.07330655 -2239209.48726254,99737.1107700712 -2239209.61076322,99737.13501445 -2239209.63066007,99737.27181356 -2239209.79735027,99737.37346448 -2239209.98752575,99737.4360608 -2239210.19387817,99737.4539791828 -2239210.37580658,99737.47191885 -2239210.39766613,99737.57356976 -2239210.58784161,99737.5778688697 -2239210.60201388,99737.7353303 -2239210.73123914,99737.7804294535 -2239210.78619261,99737.83538295 -2239210.83129178,99737.8804821072 -2239210.88624526,99737.9073617975 -2239210.90830485,99738.06890331 -2239210.99465059,99738.23559352 -2239211.13144971,99738.2806926772 -2239211.18640319,99738.33564616 -2239211.23150235,99738.3807453172 -2239211.28645583,99738.4356988 -2239211.33155499,99738.57249792 -2239211.4982452,99738.67414883 -2239211.68842068,99738.73674515 -2239211.8947731,99738.75788134 -2239212.10937245,99738.75788134 -2239212.20942509,99738.73674515 -2239212.42402445,99738.7102974729 -2239212.51121076,99738.73585673 -2239212.5321867,99738.87265584 -2239212.69887691,99738.97430676 -2239212.88905239,99739.03690308 -2239213.09540481,99739.05803927 -2239213.31000416,99739.05803927 -2239213.41005681,99739.03690308 -2239213.62465616,99738.9957738532 -2239213.76024105,99739.03690308 -2239213.89582595,99739.05803927 -2239214.1104253,99739.05803927 -2239214.31053059,99739.03690308 -2239214.52512994,99738.97430676 -2239214.73148236,99738.87265584 -2239214.92165784,99738.73585673 -2239215.08834805,99738.6809032472 -2239215.13344721,99738.63580409 -2239215.18840069,99738.5258971362 -2239215.27859899,99738.4356988 -2239215.38850598,99738.3057292327 -2239215.49516925,99738.3172807609 -2239215.53324953,99738.3257918344 -2239215.54362031,99738.4356988 -2239215.63381862,99738.5258971196 -2239215.74372559,99738.6089670129 -2239215.81189929,99738.75846041 -2239215.81189929,99738.97305977 -2239215.83303549,99739.17941219 -2239215.89563181,99739.3496432464 -2239215.9866222,99739.37951747 -2239215.99568445,99739.50885523 -2239216.06481692,99739.63819299 -2239215.99568445,99739.84454541 -2239215.93308813,99740.05914476 -2239215.91195194,99740.15919741 -2239215.91195194,99740.20922373 -2239215.9168791,99740.25925005 -2239215.91195194,99740.35930269 -2239215.91195194,99740.57390205 -2239215.93308813,99740.78025447 -2239215.99568445,99740.97042995 -2239216.09733536,99741.13712015 -2239216.23413448,99741.27391927 -2239216.40082468,99741.37557018 -2239216.59100016,99741.4381665 -2239216.79735258,99741.45930269 -2239217.01195194,99741.45930269 -2239217.21205722,99741.4381665 -2239217.42665658,99741.37557018 -2239217.633009,99741.35925005 -2239217.66354182,99741.35925005 -2239217.71232044,99741.33811386 -2239217.92691979,99741.27551754 -2239218.13327221,99741.17386662 -2239218.32344769,99741.03706751 -2239218.49013789,99740.87037731 -2239218.62693701,99740.68020183 -2239218.72858792,99740.4738494 -2239218.79118424,99740.4304621038 -2239218.79545752,99740.27006145 -2239218.92709494,99740.07988597 -2239219.02874585,99740.050011744 -2239219.0378081,99739.87978068 -2239219.12879849,99739.67342826 -2239219.19139481,99739.6300409638 -2239219.19566809,99739.46964031 -2239219.32730551,99739.3080987927 -2239219.41365125,99739.16948238 -2239219.52741079,99738.9793069 -2239219.6290617,99738.855806222 -2239219.66652523,99738.83590937 -2239219.69076961,99738.7809558789 -2239219.73586877,99738.73585673 -2239219.79082225,99738.56916653 -2239219.92762136,99738.37899105 -2239220.02927227,99738.17263863 -2239220.0918686,99737.95803927 -2239220.11300479,99737.9092606432 -2239220.11300479,99737.87872783 -2239220.12932492,99737.67237541 -2239220.19192124,99737.5206322346 -2239220.20686664,99737.47851726 -2239220.22937756,99737.27216484 -2239220.29197388,99737.05756549 -2239220.31311007,99736.95751285 -2239220.31311007,99736.74291349 -2239220.29197388,99736.53656107 -2239220.22937756,99736.5060282537 -2239220.21305743,99736.45724963 -2239220.21305743,99736.24265028 -2239220.19192124,99736.03629786 -2239220.12932492,99735.84612238 -2239220.027674,99735.778968366 -2239219.97256213,99735.63608729 -2239219.92921963,99735.44591181 -2239219.82756872,99735.2792216 -2239219.69076961,99735.2341224342 -2239219.63581611,99735.17916896 -2239219.59071696,99735.04236985 -2239219.42402676,99734.94071893 -2239219.23385128,99734.87812261 -2239219.02749886,99734.85698642 -2239218.8128995,99734.85698642 -2239218.71284686,99734.8619135822 -2239218.66282054,99734.85698642 -2239218.61279422,99734.85698642 -2239218.5640156,99734.84066629 -2239218.53348278,99734.8032027694 -2239218.4099821,99734.77895839 -2239218.39008525,99734.6722951221 -2239218.26011568,99734.57074349 -2239218.29092103,99734.35614414 -2239218.31205722,99734.2560915 -2239218.31205722,99734.206065175 -2239218.30713006,99734.1887097995 -2239218.30883941,99734.16685025 -2239218.32677908,99733.97667477 -2239218.42842999,99733.77032235 -2239218.49102632,99733.555723 -2239218.51216251,99733.45567036 -2239218.51216251,99733.4144813942 -2239218.50810575,99733.37635892 -2239218.52848264,99733.1700065 -2239218.59107896,99732.95540714 -2239218.61221515,99732.8553545 -2239218.61221515,99732.64075515 -2239218.59107896,99732.43440273 -2239218.52848264,99732.3922877578 -2239218.50597172,99732.24054458 -2239218.49102632,99732.03419215 -2239218.42842999,99731.9694765374 -2239218.39383877,99731.94038665 -2239218.39097367,99731.73403423 -2239218.32837735,99731.54385875 -2239218.22672644,99731.37716854 -2239218.08992732,99731.3320693911 -2239218.03497385,99731.2771159 -2239217.98987468,99731.14031679 -2239217.82318448,99731.03866587 -2239217.633009,99730.97606955 -2239217.42665658,99730.95493336 -2239217.21205722,99730.95493336 -2239217.01195194,99730.97606955 -2239216.79735258,99731.03866587 -2239216.59100016,99731.0611767929 -2239216.54888519,99731.07612219 -2239216.39714201,99731.13871852 -2239216.19078959,99731.15503865 -2239216.16025677,99731.15503865 -2239216.11147815,99731.17617484 -2239215.8968788,99731.23877116 -2239215.69052638,99731.2612820825 -2239215.64841141,99731.2649456144 -2239215.61121494,99731.2612820828 -2239215.57401848,99731.23877116 -2239215.5319035,99731.2297089137 -2239215.50202928,99731.13871852 -2239215.33179822,99731.129656271 -2239215.30192399,99731.03866587 -2239215.13169293,99731.0296036237 -2239215.10181871,99730.93861323 -2239214.93158765,99730.87601691 -2239214.72523523,99730.8610715134 -2239214.57349206,99730.8538657489 -2239214.56001102,99730.74010622 -2239214.42139463,99730.6715646238 -2239214.29316233,99730.5632767436 -2239214.23528126,99730.53340252 -2239214.22621901,99730.34322704 -2239214.12456809,99730.276073026 -2239214.06945622,99730.13319195 -2239214.02611372,99729.9629609068 -2239213.93512333,99729.93308666 -2239213.92606108,99729.8909716838 -2239213.90355016,99729.73922851 -2239213.88860476,99729.53287609 -2239213.82600844,99729.4681604841 -2239213.79141723,99729.43907058 -2239213.78855212,99729.23271816 -2239213.72595579,99729.04254268 -2239213.62430488,99728.87585248 -2239213.48750577,99728.8307533142 -2239213.43255227,99728.77579984 -2239213.38745312,99728.7307006948 -2239213.33249966,99728.67574719 -2239213.28740048,99728.6073273203 -2239213.20403063,99728.55309087 -2239213.20937245,99728.45303823 -2239213.20937245,99728.23843887 -2239213.18823626,99728.03208645 -2239213.12563994,99728.0015536337 -2239213.10931981,99727.85272237 -2239213.10931981,99727.63812302 -2239213.08818362,99727.4317706 -2239213.0255873,99727.2615395585 -2239212.93459691,99727.23166531 -2239212.92553465,99727.0614342536 -2239212.83454426,99727.03156003 -2239212.82548201,99726.84138455 -2239212.7238311,99726.67469434 -2239212.58703198,99726.6295951911 -2239212.53207851,99726.5746417 -2239212.48697934,99726.4583176232 -2239212.34523804,99726.36274414 -2239212.42367317,99726.17256866 -2239212.52532408,99725.96621623 -2239212.58792041,99725.75161688 -2239212.6090566,99725.65156424 -2239212.6090566,99725.43696488 -2239212.58792041,99725.23061246 -2239212.52532408,99725.04043698 -2239212.42367317,99724.87374678 -2239212.28687406,99724.8286476041 -2239212.23192056,99724.77369414 -2239212.18682141,99724.63689502 -2239212.02013121,99724.53524411 -2239211.82995573,99724.5261818637 -2239211.80008151,99724.43519147 -2239211.62985045,99724.37259514 -2239211.42349802,99724.35145895 -2239211.20889867,99724.35145895 -2239210.50853017,99724.37259514 -2239210.29393082,99724.43519147 -2239210.0875784,99724.45151159 -2239210.0570456)) + + + + + buffer-1.5 + +POLYGON ((99723.95146 -2239211.2089, 99723.95146 -2239210.50853, 99723.98028 -2239210.21589, 99724.05151 -2239209.98109, 99724.05151 -2239209.90821, 99724.08033 -2239209.61558, 99724.15553 -2239209.3677, 99724.18039 -2239209.11532, 99724.26574 -2239208.83393, 99724.35674 -2239208.66369, 99724.3658 -2239208.63382, 99724.50441 -2239208.37449, 99724.69096 -2239208.14719, 99724.7459 -2239208.1021, 99724.79101 -2239208.04713, 99724.84597 -2239208.00203, 99724.89106 -2239207.94708, 99724.94601 -2239207.90199, 99724.99111 -2239207.84703, 99725.04609 -2239207.80191, 99725.09117 -2239207.74698, 99725.14611 -2239207.70189, 99725.19122 -2239207.64692, 99725.41852 -2239207.46038, 99725.67785 -2239207.32176, 99725.70776 -2239207.31269, 99725.87796 -2239207.22171, 99726.15935 -2239207.13635, 99726.45199 -2239207.10753, 99727.24471 -2239207.10753, 99727.26732 -2239207.03298, 99727.40594 -2239206.77365, 99727.59248 -2239206.54634, 99727.64746 -2239206.50122, 99727.69254 -2239206.44629, 99727.74748 -2239206.4012, 99727.79259 -2239206.34624, 99727.84755 -2239206.30113, 99727.89264 -2239206.24619, 99727.94757 -2239206.20111, 99727.99269 -2239206.14613, 99728.22 -2239205.95959, 99728.38155 -2239205.87324, 99728.52016 -2239205.75948, 99728.77949 -2239205.62087, 99728.80935 -2239205.61181, 99728.93391 -2239205.54523, 99728.96822 -2239205.43214, 99729.10683 -2239205.17281, 99729.29338 -2239204.9455, 99729.34833 -2239204.9004, 99729.39343 -2239204.84545, 99729.44838 -2239204.80035, 99729.49348 -2239204.7454, 99729.72079 -2239204.55885, 99729.88233 -2239204.47251, 99730.02095 -2239204.35875, 99730.28028 -2239204.22013, 99730.31014 -2239204.21107, 99730.48038 -2239204.12008, 99730.76177 -2239204.03472, 99730.87374 -2239204.02369, 99730.88059 -2239204.02003, 99731.16198 -2239203.93467, 99731.41243 -2239203.91001, 99731.44315 -2239203.89359, 99731.5081 -2239203.77207, 99731.69464 -2239203.54476, 99731.74959 -2239203.49966, 99731.79469 -2239203.44471, 99732.022 -2239203.25817, 99732.28133 -2239203.11955, 99732.56272 -2239203.03419, 99732.85535 -2239203.00537, 99733.15551 -2239203.00537, 99733.44815 -2239203.03419, 99733.72954 -2239203.11955, 99733.89976 -2239203.21054, 99733.92964 -2239203.2196, 99734.18897 -2239203.35822, 99734.32761 -2239203.47199, 99734.4 -2239203.51069, 99734.42991 -2239203.51976, 99734.60016 -2239203.61077, 99734.63001 -2239203.61982, 99734.66893 -2239203.64062, 99734.93017 -2239203.71987, 99735.14389 -2239203.8341, 99735.14904 -2239203.83461, 99735.43043 -2239203.91997, 99735.68976 -2239204.05859, 99735.91707 -2239204.24513, 99736.10361 -2239204.47244, 99736.24223 -2239204.73177, 99736.32759 -2239205.01316, 99736.35641 -2239205.30579, 99736.35641 -2239205.80606, 99736.33909 -2239205.98187, 99736.41733 -2239206.04608, 99736.60387 -2239206.27338, 99736.74249 -2239206.53272, 99736.75155 -2239206.56258, 99736.84254 -2239206.73282, 99736.9279 -2239207.01421, 99736.95672 -2239207.30685, 99736.95672 -2239207.4069, 99736.95179 -2239207.45692, 99736.95275 -2239207.46666, 99737.02795 -2239207.71458, 99737.03898 -2239207.82653, 99737.04265 -2239207.8334, 99737.12801 -2239208.11479, 99737.13904 -2239208.22676, 99737.1427 -2239208.23361, 99737.22806 -2239208.515, 99737.25291 -2239208.76738, 99737.32199 -2239208.99507, 99737.34281 -2239209.03403, 99737.42204 -2239209.29524, 99737.44286 -2239209.33419, 99737.46408 -2239209.40414, 99737.6044 -2239209.57512, 99737.74302 -2239209.83445, 99737.82837 -2239210.11584, 99737.84096 -2239210.24364, 99737.89745 -2239210.34932, 99738.01817 -2239210.4484, 99738.06325 -2239210.50333, 99738.11823 -2239210.54845, 99738.14922 -2239210.58621, 99738.29113 -2239210.66206, 99738.51844 -2239210.84861, 99738.56354 -2239210.90357, 99738.61849 -2239210.94866, 99738.66359 -2239211.00361, 99738.71854 -2239211.04871, 99738.90509 -2239211.27602, 99739.0437 -2239211.53535, 99739.12906 -2239211.81674, 99739.15788 -2239212.10937, 99739.15788 -2239212.20943, 99739.13946 -2239212.39649, 99739.20524 -2239212.47665, 99739.34386 -2239212.73598, 99739.42922 -2239213.01737, 99739.45804 -2239213.31, 99739.45804 -2239213.41006, 99739.42922 -2239213.70269, 99739.41176 -2239213.76024, 99739.42922 -2239213.81779, 99739.45804 -2239214.11043, 99739.45804 -2239214.31053, 99739.42922 -2239214.60317, 99739.34386 -2239214.88456, 99739.20524 -2239215.14389, 99739.0187 -2239215.37119, 99738.96375 -2239215.41629, 99738.95173 -2239215.43093, 99739.0511 -2239215.44072, 99739.33249 -2239215.52608, 99739.50273 -2239215.61707, 99739.50886 -2239215.61893, 99739.76651 -2239215.54077, 99740.05914 -2239215.51195, 99740.1592 -2239215.51195, 99740.20922 -2239215.51688, 99740.25925 -2239215.51195, 99740.3593 -2239215.51195, 99740.65194 -2239215.54077, 99740.93333 -2239215.62613, 99741.19266 -2239215.76475, 99741.41996 -2239215.95129, 99741.60651 -2239216.1786, 99741.74512 -2239216.43793, 99741.83048 -2239216.71932, 99741.8593 -2239217.01195, 99741.8593 -2239217.21206, 99741.83048 -2239217.50469, 99741.75529 -2239217.75257, 99741.73043 -2239218.00496, 99741.64507 -2239218.28635, 99741.50645 -2239218.54568, 99741.31991 -2239218.77298, 99741.09261 -2239218.95952, 99740.83328 -2239219.09814, 99740.6046 -2239219.16751, 99740.49229 -2239219.25968, 99740.23296 -2239219.3983, 99740.20308 -2239219.40737, 99740.03285 -2239219.49835, 99739.80418 -2239219.56772, 99739.69187 -2239219.65989, 99739.53032 -2239219.74624, 99739.39171 -2239219.86, 99739.13238 -2239219.99861, 99739.06303 -2239220.01965, 99739.0187 -2239220.07366, 99738.79139 -2239220.26021, 99738.53206 -2239220.39882, 99738.25067 -2239220.48418, 99737.99834 -2239220.50903, 99737.75041 -2239220.58424, 99737.63844 -2239220.59527, 99737.63159 -2239220.59893, 99737.3502 -2239220.68429, 99737.05757 -2239220.71311, 99736.95751 -2239220.71311, 99736.66488 -2239220.68429, 99736.417 -2239220.6091, 99736.16461 -2239220.58424, 99735.88322 -2239220.49888, 99735.62389 -2239220.36026, 99735.58764 -2239220.33051, 99735.48301 -2239220.29877, 99735.22368 -2239220.16016, 99734.99638 -2239219.97361, 99734.95127 -2239219.91865, 99734.89633 -2239219.87356, 99734.70978 -2239219.64625, 99734.57117 -2239219.38692, 99734.48581 -2239219.10553, 99734.45699 -2239218.8129, 99734.45699 -2239218.71285, 99734.45806 -2239218.70202, 99734.35614 -2239218.71206, 99734.2905 -2239218.71206, 99734.12975 -2239218.79798, 99733.84836 -2239218.88334, 99733.55572 -2239218.91216, 99733.48285 -2239218.91216, 99733.24804 -2239218.98339, 99732.95541 -2239219.01222, 99732.85535 -2239219.01222, 99732.56272 -2239218.98339, 99732.28133 -2239218.89803, 99732.27448 -2239218.89437, 99732.16251 -2239218.88334, 99731.88112 -2239218.79798, 99731.8422 -2239218.77718, 99731.58096 -2239218.69793, 99731.32163 -2239218.55931, 99731.09433 -2239218.37277, 99731.04924 -2239218.31783, 99730.99427 -2239218.27272, 99730.80773 -2239218.04541, 99730.66911 -2239217.78608, 99730.58376 -2239217.50469, 99730.55493 -2239217.21206, 99730.55493 -2239217.01195, 99730.58376 -2239216.71932, 99730.66911 -2239216.43793, 99730.67278 -2239216.43105, 99730.68381 -2239216.31911, 99730.759 -2239216.07123, 99730.78386 -2239215.81884, 99730.84317 -2239215.62332, 99730.76917 -2239215.48487, 99730.76012 -2239215.45502, 99730.66911 -2239215.28477, 99730.66004 -2239215.25486, 99730.56906 -2239215.08466, 99730.4837 -2239214.80327, 99730.47622 -2239214.72734, 99730.40752 -2239214.64362, 99730.38225 -2239214.59635, 99730.38033 -2239214.59577, 99730.121 -2239214.45716, 99730.08474 -2239214.4274, 99729.98012 -2239214.39567, 99729.80988 -2239214.30467, 99729.78001 -2239214.29561, 99729.77316 -2239214.29195, 99729.66119 -2239214.28092, 99729.3798 -2239214.19556, 99729.34088 -2239214.17476, 99729.07964 -2239214.09551, 99728.82031 -2239213.95689, 99728.59301 -2239213.77035, 99728.54792 -2239213.7154, 99728.49296 -2239213.6703, 99728.44786 -2239213.61534, 99728.43888 -2239213.60798, 99728.1604 -2239213.58055, 99727.92559 -2239213.50932, 99727.85272 -2239213.50932, 99727.56009 -2239213.4805, 99727.2787 -2239213.39514, 99727.1085 -2239213.30416, 99727.07859 -2239213.29509, 99726.90834 -2239213.20408, 99726.87849 -2239213.19503, 99726.61916 -2239213.05642, 99726.39185 -2239212.86987, 99726.38593 -2239212.86265, 99726.32564 -2239212.89488, 99726.04425 -2239212.98023, 99725.75162 -2239213.00906, 99725.65156 -2239213.00906, 99725.35893 -2239212.98023, 99725.07754 -2239212.89488, 99724.81821 -2239212.75626, 99724.5909 -2239212.56972, 99724.54578 -2239212.51474, 99724.49085 -2239212.46966, 99724.30431 -2239212.24236, 99724.16569 -2239211.98303, 99724.15662 -2239211.95315, 99724.06564 -2239211.78292, 99723.98028 -2239211.50153, 99723.95146 -2239211.2089)) + + + + + buffer-2 + +POLYGON ((99723.45146 -2239211.2089, 99723.45146 -2239210.50853, 99723.48989 -2239210.11835, 99723.55151 -2239209.91521, 99723.55151 -2239209.90821, 99723.58994 -2239209.51803, 99723.66513 -2239209.27016, 99723.68999 -2239209.01777, 99723.80381 -2239208.64258, 99723.8948 -2239208.47236, 99723.90386 -2239208.44248, 99724.08868 -2239208.09671, 99724.3374 -2239207.79363, 99724.39237 -2239207.74852, 99724.43746 -2239207.69358, 99724.49241 -2239207.64848, 99724.53751 -2239207.59353, 99724.59245 -2239207.54844, 99724.63756 -2239207.49347, 99724.69251 -2239207.44837, 99724.73761 -2239207.39342, 99724.79258 -2239207.34831, 99724.83767 -2239207.29337, 99725.14074 -2239207.04464, 99725.48651 -2239206.85982, 99725.5164 -2239206.85075, 99725.68662 -2239206.75977, 99726.0618 -2239206.64596, 99726.45199 -2239206.60753, 99726.93051 -2239206.60753, 99726.9902 -2239206.49586, 99727.23893 -2239206.19279, 99727.29389 -2239206.14769, 99727.33898 -2239206.09274, 99727.39394 -2239206.04764, 99727.43904 -2239205.99268, 99727.49399 -2239205.94758, 99727.53909 -2239205.89263, 99727.59404 -2239205.84754, 99727.63914 -2239205.79258, 99727.94221 -2239205.54385, 99728.10377 -2239205.4575, 99728.24237 -2239205.34375, 99728.53479 -2239205.18745, 99728.6911 -2239204.89502, 99728.93982 -2239204.59195, 99728.9948 -2239204.54683, 99729.03988 -2239204.4919, 99729.09481 -2239204.44682, 99729.13993 -2239204.39184, 99729.443 -2239204.14312, 99729.60454 -2239204.05678, 99729.74316 -2239203.94301, 99730.08893 -2239203.75819, 99730.11883 -2239203.74912, 99730.28904 -2239203.65814, 99730.66423 -2239203.54433, 99730.76844 -2239203.53407, 99731.06444 -2239203.44427, 99731.13947 -2239203.43688, 99731.34109 -2239203.19121, 99731.39604 -2239203.14611, 99731.44114 -2239203.09116, 99731.74421 -2239202.84243, 99732.08999 -2239202.65761, 99732.46517 -2239202.5438, 99732.85535 -2239202.50537, 99733.15551 -2239202.50537, 99733.54569 -2239202.5438, 99733.92088 -2239202.65761, 99734.09114 -2239202.74862, 99734.12098 -2239202.75767, 99734.46676 -2239202.94249, 99734.59911 -2239203.0511, 99734.62125 -2239203.05782, 99734.79151 -2239203.14883, 99734.82135 -2239203.15788, 99734.86028 -2239203.17869, 99735.12151 -2239203.25793, 99735.33065 -2239203.36972, 99735.62177 -2239203.45803, 99735.96755 -2239203.64285, 99736.27062 -2239203.89158, 99736.51935 -2239204.19465, 99736.70417 -2239204.54043, 99736.81798 -2239204.91561, 99736.85641 -2239205.30579, 99736.85641 -2239205.79675, 99737.01961 -2239205.9956, 99737.20443 -2239206.34137, 99737.2135 -2239206.37127, 99737.30448 -2239206.54148, 99737.41829 -2239206.91666, 99737.45672 -2239207.30685, 99737.45672 -2239207.4069, 99737.4562 -2239207.41217, 99737.51835 -2239207.61703, 99737.52862 -2239207.72126, 99737.6184 -2239208.01724, 99737.62867 -2239208.12147, 99737.71845 -2239208.41745, 99737.74331 -2239208.66984, 99737.78392 -2239208.80372, 99737.80475 -2239208.84269, 99737.88399 -2239209.10392, 99737.9048 -2239209.14285, 99737.91151 -2239209.16498, 99738.02014 -2239209.29734, 99738.20496 -2239209.64311, 99738.31877 -2239210.0183, 99738.32231 -2239210.05429, 99738.37173 -2239210.09484, 99738.41684 -2239210.14981, 99738.47006 -2239210.19349, 99738.56892 -2239210.24633, 99738.87199 -2239210.49505, 99738.91711 -2239210.55003, 99738.97204 -2239210.59511, 99739.01714 -2239210.65006, 99739.07209 -2239210.69516, 99739.32082 -2239210.99823, 99739.50564 -2239211.34401, 99739.61945 -2239211.71919, 99739.65788 -2239212.10937, 99739.65788 -2239212.20943, 99739.65302 -2239212.2588, 99739.8058 -2239212.54464, 99739.91961 -2239212.91982, 99739.95804 -2239213.31, 99739.95804 -2239213.41006, 99739.92355 -2239213.76024, 99739.95804 -2239214.11043, 99739.95804 -2239214.31053, 99739.91961 -2239214.70071, 99739.81799 -2239215.0357, 99740.05914 -2239215.01195, 99740.1592 -2239215.01195, 99740.20923 -2239215.01688, 99740.25925 -2239215.01195, 99740.3593 -2239215.01195, 99740.74948 -2239215.05038, 99741.12467 -2239215.16419, 99741.47044 -2239215.34901, 99741.77352 -2239215.59774, 99742.02224 -2239215.90081, 99742.20706 -2239216.24659, 99742.32087 -2239216.62177, 99742.3593 -2239217.01195, 99742.3593 -2239217.21206, 99742.32087 -2239217.60224, 99742.24568 -2239217.85011, 99742.22082 -2239218.1025, 99742.10701 -2239218.47769, 99741.92219 -2239218.82346, 99741.67346 -2239219.12653, 99741.37039 -2239219.37526, 99741.02462 -2239219.56008, 99740.84376 -2239219.61494, 99740.77007 -2239219.67542, 99740.4243 -2239219.86024, 99740.39442 -2239219.8693, 99740.2242 -2239219.96029, 99740.04334 -2239220.01515, 99739.96965 -2239220.07563, 99739.80811 -2239220.16197, 99739.6695 -2239220.27573, 99739.34642 -2239220.44841, 99739.06918 -2239220.67594, 99738.72341 -2239220.86076, 99738.34822 -2239220.97458, 99738.09586 -2239220.99943, 99737.84796 -2239221.07463, 99737.74373 -2239221.0849, 99737.44775 -2239221.17468, 99737.05757 -2239221.21311, 99736.95751 -2239221.21311, 99736.56733 -2239221.17468, 99736.31946 -2239221.09949, 99736.06707 -2239221.07463, 99735.69188 -2239220.96082, 99735.3514 -2239220.77883, 99735.29167 -2239220.76071, 99734.9459 -2239220.57589, 99734.64283 -2239220.32717, 99734.59773 -2239220.27221, 99734.54277 -2239220.22711, 99734.29405 -2239219.92404, 99734.10923 -2239219.57827, 99734.03865 -2239219.3456, 99733.9459 -2239219.37373, 99733.55572 -2239219.41216, 99733.54874 -2239219.41216, 99733.34559 -2239219.47379, 99732.95541 -2239219.51222, 99732.85535 -2239219.51222, 99732.46517 -2239219.47379, 99732.16918 -2239219.384, 99732.06496 -2239219.37373, 99731.68978 -2239219.25992, 99731.65085 -2239219.23911, 99731.38962 -2239219.15987, 99731.04385 -2239218.97505, 99730.74077 -2239218.72632, 99730.69568 -2239218.67137, 99730.64072 -2239218.62627, 99730.39199 -2239218.3232, 99730.20717 -2239217.97742, 99730.09336 -2239217.60224, 99730.05493 -2239217.21206, 99730.05493 -2239217.01195, 99730.09336 -2239216.62177, 99730.18316 -2239216.32575, 99730.19342 -2239216.22156, 99730.26861 -2239215.97368, 99730.29347 -2239215.7213, 99730.30719 -2239215.67607, 99730.29818 -2239215.64638, 99730.20717 -2239215.47611, 99730.1981 -2239215.44622, 99730.10712 -2239215.276, 99730.01224 -2239214.96324, 99729.84854 -2239214.87574, 99729.78878 -2239214.85761, 99729.6417 -2239214.779, 99729.56365 -2239214.77131, 99729.18846 -2239214.6575, 99729.14953 -2239214.63669, 99728.8883 -2239214.55745, 99728.54253 -2239214.37263, 99728.23946 -2239214.1239, 99728.2077 -2239214.08521, 99728.06286 -2239214.07094, 99727.85972 -2239214.00932, 99727.85272 -2239214.00932, 99727.46254 -2239213.97089, 99727.08736 -2239213.85708, 99726.91714 -2239213.7661, 99726.88725 -2239213.75703, 99726.717 -2239213.66603, 99726.68714 -2239213.65697, 99726.34137 -2239213.47215, 99726.28616 -2239213.42684, 99726.1418 -2239213.47063, 99725.75162 -2239213.50906, 99725.65156 -2239213.50906, 99725.26138 -2239213.47063, 99724.8862 -2239213.35682, 99724.54042 -2239213.172, 99724.23735 -2239212.92327, 99724.19225 -2239212.86832, 99724.1373 -2239212.82322, 99723.88857 -2239212.52014, 99723.70375 -2239212.17437, 99723.69469 -2239212.14449, 99723.6037 -2239211.97427, 99723.48989 -2239211.59908, 99723.45146 -2239211.2089)) + + + + + buffer-5 + +POLYGON ((99720.45146 -2239211.2089, 99720.45146 -2239210.50853, 99720.54753 -2239209.53308, 99720.60814 -2239209.33328, 99720.64759 -2239208.93276, 99720.72278 -2239208.68488, 99720.74764 -2239208.4325, 99721.03217 -2239207.49453, 99721.12316 -2239207.32431, 99721.13222 -2239207.29443, 99721.59427 -2239206.42999, 99722.21608 -2239205.67231, 99722.27106 -2239205.62719, 99722.31614 -2239205.57226, 99722.37109 -2239205.52716, 99722.41619 -2239205.47221, 99722.47112 -2239205.42713, 99722.51624 -2239205.37215, 99722.57119 -2239205.32705, 99722.61629 -2239205.2721, 99722.67127 -2239205.22698, 99722.71635 -2239205.17205, 99723.47403 -2239204.55023, 99724.33846 -2239204.08818, 99724.36835 -2239204.07911, 99724.53857 -2239203.98813, 99725.47653 -2239203.7036, 99725.49258 -2239203.70202, 99725.51782 -2239203.67126, 99726.2755 -2239203.04944, 99726.39661 -2239202.98471, 99726.8185 -2239202.47063, 99726.87346 -2239202.42553, 99726.91856 -2239202.37057, 99726.97351 -2239202.32547, 99727.01861 -2239202.27052, 99727.77629 -2239201.64871, 99727.93782 -2239201.56237, 99728.07645 -2239201.4486, 99728.94088 -2239200.98655, 99728.97078 -2239200.97748, 99729.14099 -2239200.8865, 99729.58577 -2239200.75158, 99730.0775 -2239200.34802, 99730.94194 -2239199.88597, 99731.8799 -2239199.60145, 99732.85535 -2239199.50537, 99733.15551 -2239199.50537, 99734.13096 -2239199.60145, 99735.06893 -2239199.88597, 99735.2392 -2239199.97698, 99735.26903 -2239199.98603, 99736.12018 -2239200.44097, 99736.26956 -2239200.48629, 99736.47875 -2239200.5981, 99736.76982 -2239200.6864, 99737.63426 -2239201.14844, 99738.39194 -2239201.77026, 99739.01376 -2239202.52794, 99739.47581 -2239203.39238, 99739.76033 -2239204.33034, 99739.8158 -2239204.89347, 99739.97607 -2239205.19332, 99739.98514 -2239205.22321, 99740.07612 -2239205.39343, 99740.36065 -2239206.33139, 99740.41469 -2239206.88008, 99740.4607 -2239207.03176, 99740.47097 -2239207.13598, 99740.56075 -2239207.43197, 99740.57101 -2239207.53616, 99740.66081 -2239207.83218, 99740.66951 -2239207.92055, 99740.848 -2239208.25447, 99740.99331 -2239208.37373, 99741.03843 -2239208.42871, 99741.09336 -2239208.47379, 99741.13844 -2239208.52872, 99741.19342 -2239208.57384, 99741.81523 -2239209.33152, 99742.27728 -2239210.19596, 99742.56181 -2239211.13392, 99742.5926 -2239211.44657, 99742.86197 -2239212.33455, 99742.90074 -2239212.72824, 99743.13715 -2239212.8546, 99743.89484 -2239213.47642, 99744.51665 -2239214.2341, 99744.9787 -2239215.09853, 99745.26323 -2239216.0365, 99745.3593 -2239217.01195, 99745.3593 -2239217.21206, 99745.26323 -2239218.18751, 99745.18804 -2239218.43539, 99745.16318 -2239218.68777, 99744.87865 -2239219.62574, 99744.4166 -2239220.49017, 99743.79478 -2239221.24785, 99743.0371 -2239221.86967, 99742.17267 -2239222.33172, 99742.08305 -2239222.3589, 99741.57235 -2239222.63188, 99741.54248 -2239222.64094, 99741.40242 -2239222.7158, 99741.33621 -2239222.77014, 99741.01312 -2239222.94283, 99740.73589 -2239223.17035, 99739.87146 -2239223.6324, 99738.93349 -2239223.91693, 99738.68112 -2239223.94179, 99738.43323 -2239224.01698, 99738.32904 -2239224.02724, 99738.03302 -2239224.11704, 99737.05757 -2239224.21311, 99736.95751 -2239224.21311, 99735.98206 -2239224.11704, 99735.73415 -2239224.04184, 99735.4818 -2239224.01698, 99734.54383 -2239223.73246, 99734.20335 -2239223.55047, 99734.14362 -2239223.53235, 99733.27919 -2239223.0703, 99732.56422 -2239222.48354, 99731.8799 -2239222.41614, 99731.58392 -2239222.32636, 99731.47969 -2239222.31609, 99730.54173 -2239222.03156, 99730.50281 -2239222.01076, 99730.24157 -2239221.93151, 99729.37713 -2239221.46946, 99728.61945 -2239220.84764, 99728.57435 -2239220.79269, 99728.5194 -2239220.74759, 99727.89759 -2239219.98991, 99727.43554 -2239219.12547, 99727.15101 -2239218.18751, 99727.05493 -2239217.21206, 99727.05493 -2239217.01195, 99727.05953 -2239216.96524, 99726.98147 -2239216.92351, 99726.87727 -2239216.91325, 99725.93931 -2239216.62872, 99725.76905 -2239216.53772, 99725.7392 -2239216.52866, 99725.70253 -2239216.50906, 99725.65156 -2239216.50906, 99724.67611 -2239216.41298, 99723.73815 -2239216.12845, 99722.87371 -2239215.6664, 99722.11603 -2239215.04459, 99722.07093 -2239214.98964, 99722.01598 -2239214.94454, 99721.39416 -2239214.18686, 99720.93211 -2239213.32242, 99720.92305 -2239213.29255, 99720.83206 -2239213.12232, 99720.54753 -2239212.18435, 99720.45146 -2239211.2089)) + + + + + buffer-10 + + POLYGON((99739.3044617493 -2239228.93117449,99739.008469 -2239229.020963,99737.057565 -2239229.21311,99736.957513 -2239229.21311,99735.00661 -2239229.020963,99734.7587215452 -2239228.94576679,99734.506346 -2239228.92091,99732.630415 -2239228.351853,99732.2899489618 -2239228.16987015,99732.230205 -2239228.151747,99730.501337 -2239227.227648,99730.4848796373 -2239227.2141418,99728.62831 -2239226.650958,99728.5893723796 -2239226.63014541,99728.328152 -2239226.550905,99726.599284 -2239225.626806,99725.083918 -2239224.383178,99725.0388167068 -2239224.32822188,99724.983866 -2239224.283125,99723.740237 -2239222.76776,99722.8223261684 -2239221.05046925,99721.82473 -2239220.747852,99720.095862 -2239219.823753,99718.580496 -2239218.580124,99718.5353971293 -2239218.52517087,99718.480444 -2239218.480072,99717.236815 -2239216.964706,99716.312716 -2239215.235838,99716.3036531494 -2239215.20596176,99716.212664 -2239215.035733,99715.643606 -2239213.159802,99715.451459 -2239211.208899,99715.451459 -2239210.50853,99715.643606 -2239208.557627,99715.7042101752 -2239208.357842,99715.743659 -2239207.957311,99715.8188539234 -2239207.70942636,99715.843711 -2239207.457048,99716.412769 -2239205.581117,99716.5037597346 -2239205.41088527,99716.512822 -2239205.381011,99717.436921 -2239203.652143,99718.680549 -2239202.136778,99718.7355025838 -2239202.09167879,99718.780602 -2239202.036725,99718.8355551293 -2239201.99162613,99718.880654 -2239201.936673,99718.935607786 -2239201.89157358,99718.980707 -2239201.83662,99719.0356606586 -2239201.79152069,99719.08076 -2239201.736567,99719.1357131293 -2239201.69146813,99719.180812 -2239201.636515,99720.696178 -2239200.392886,99722.425046 -2239199.468787,99722.4549222379 -2239199.45972415,99722.625151 -2239199.368735,99723.0271739372 -2239199.24678256,99723.282971 -2239198.935093,99723.3379241293 -2239198.88999413,99723.383023 -2239198.835041,99723.437976786 -2239198.78994158,99723.483076 -2239198.734988,99724.998441 -2239197.49136,99725.1599836931 -2239197.40501365,99725.298599 -2239197.291255,99727.027467 -2239196.367155,99727.0573455502 -2239196.35809145,99727.1672091138 -2239196.29936816,99727.299652 -2239196.190675,99729.02852 -2239195.266576,99730.904451 -2239194.697519,99732.855355 -2239194.505372,99733.155512 -2239194.505372,99735.106416 -2239194.697519,99736.982347 -2239195.266576,99737.1525800191 -2239195.35756742,99737.182452 -2239195.366629,99738.0336074759 -2239195.82158098,99738.182978 -2239195.866892,99738.3921436726 -2239195.97869336,99738.683242 -2239196.066997,99740.41211 -2239196.991097,99741.927475 -2239198.234725,99743.171103 -2239199.75009,99744.095203 -2239201.478958,99744.66426 -2239203.35489,99744.6723060104 -2239203.43658259,99744.695519 -2239203.480011,99745.264576 -2239205.355942,99745.3020732906 -2239205.73665892,99745.972577 -2239206.55367,99746.896677 -2239208.282538,99747.3895739426 -2239209.90740274,99747.430371 -2239209.940884,99748.673999 -2239211.45625,99749.598098 -2239213.185118,99750.167155 -2239215.061049,99750.359303 -2239217.011952,99750.359303 -2239217.212057,99750.167155 -2239219.16296,99750.0919601843 -2239219.41084441,99750.067103 -2239219.663224,99749.498045 -2239221.539155,99748.573946 -2239223.268023,99747.330318 -2239224.783388,99745.814952 -2239226.027017,99744.086084 -2239226.951116,99744.0485605807 -2239226.9624986,99743.7909773231 -2239227.10017983,99743.513742 -2239227.327701,99741.784874 -2239228.2518,99739.908942 -2239228.820858,99739.6565636369 -2239228.84571508,99739.408679 -2239228.92091,99739.3044617493 -2239228.93117449)) + + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/Segfaults.xml geos-3.8.0/tests/xmltester/tests/misc/Segfaults.xml --- geos-3.7.1/tests/xmltester/tests/misc/Segfaults.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/Segfaults.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,36 @@ + + + + + SegFault + + POLYGON((1033707.6 1048313.1,1033694.9 1048315.7,1033659.9 1048344.3,1033627.6 1048388.8,1033620.9 1048426.8,1033623.6 1048471.3,1033623.6 1048480.8,1033616.8 1048503.2,1033629.1 1048541.3,1033668.3 1048707.6,1033696.3 1048755.6,1033721.4 1048771.6,1033724.5 1048772,1033737.2 1048772,1033772.1 1048756.4,1033794.6 1048721.9,1033811.1 1048667.4,1033814.8 1048613.6,1033815.1 1048597.5,1033809.2 1048556.1,1033809.3 1048549.6,1033797.1 1048501.9,1033790.9 1048492.2,1033773 1048399.6,1033760.6 1048377.6,1033741.8 1048357.8,1033742.1 1048341.8,1033713.9 1048313.4,1033707.6 1048313.1)) + + + true + + + + + Multipoint buffer + MULTIPOINT(0 0, 5 5) + + + POLYGON ((-10.0 -2.0, -10.0 -0.0, -10.0 2.0, -9.0 4.0, -8.0 6.0, -7.0 7.0, -6.0 8.0, -4.0 9.0, -3.0 11.0, -2.0 12.0, -1.0 13.0, 1.0 14.0, 3.0 15.0, 5.0 15.0, 7.0 15.0, 9.0 14.0, 11.0 13.0, 12.0 12.0, 13.0 11.0, 14.0 9.0, 15.0 7.0, 15.0 5.0, 15.0 3.0, 14.0 1.0, 13.0 -1.0, 12.0 -2.0, 11.0 -3.0, 9.0 -4.0, 8.0 -6.0, 7.0 -7.0, 6.0 -8.0, 4.0 -9.0, 2.0 -10.0, 0.0 -10.0, -2.0 -10.0, -4.0 -9.0, -6.0 -8.0, -7.0 -7.0, -8.0 -6.0, -9.0 -4.0, -10.0 -2.0)) + + + + + + Multipolygon buffering + + MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) + + + + MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/singlesidedbuffer.xml geos-3.8.0/tests/xmltester/tests/misc/singlesidedbuffer.xml --- geos-3.7.1/tests/xmltester/tests/misc/singlesidedbuffer.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/singlesidedbuffer.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,86 @@ + + + + +Single-sided buffer on vertical line (down-up) + +LINESTRING (0 10, 0 20) + + + +LINESTRING (2 10, 2 20) + + + + +LINESTRING (-2 10, -2 20) + + + + +Single-sided buffer on vertical line (up-down) + +LINESTRING (0 20, 0 10) + + + +LINESTRING (-3 10, -3 20) + + + + +LINESTRING (3 10, 3 20) + + + + +Single-sided buffer on horizontal line (left-right) + +LINESTRING (0 0, 5 0) + + + +LINESTRING (0 -2, 5 -2) + + + + +LINESTRING (0 2, 5 2) + + + + +Single-sided buffer on horizontal line (right-left) + +LINESTRING (5 0, 0 0) + + + +LINESTRING (0 2, 5 2) + + + + +LINESTRING (0 -2, 5 -2) + + + + + +Single-sided buffers on sharpe edged line + +LINESTRING (5 5,1 1,1.5 3) + + + +LINESTRING (0.889806640162438 3.15254833995939,3.86862915010152 6.13137084989848) + + + + +LINESTRING (6.13137084989848 3.86862915010152,2.13137084989848 -0.131370849898476,1.64334932914975 -0.464957897238882,1.06750928729122 -0.598575145599803,0.482454087349093 -0.513983562756987,-0.0319550194114402 -0.222730075655103,-0.405500120335007 0.235428609129087,-0.58719153245376 0.797952878498393,-0.552228000232531 1.38805700005813,-0.052228000232531 3.38805700005813) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/split.xml geos-3.8.0/tests/xmltester/tests/misc/split.xml --- geos-3.7.1/tests/xmltester/tests/misc/split.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/split.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,52 @@ + + + + + + Line/line difference/split + LINESTRING(2 0,10 0,10 10,0 10,0 2) + LINESTRING(-5 5, 15 5) + + + MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) + + + + + + Line/line difference/split with boundary intersection + LINESTRING(2 0,10 0,10 10,0 10,0 2) + LINESTRING(0 5, 10 5) + + + MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) + + + + + + Multiline/line difference/split + MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) + LINESTRING(-5 5, 15 5) + + + MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) + + + + + + Multiline/line difference/split with boundary intersection + MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) + LINESTRING(0 5, 10 5) + + + MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/stmlf-20061020-invalid-output.xml geos-3.8.0/tests/xmltester/tests/misc/stmlf-20061020-invalid-output.xml --- geos-3.7.1/tests/xmltester/tests/misc/stmlf-20061020-invalid-output.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/stmlf-20061020-invalid-output.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,61 @@ + + + + + 966094 - 2025063 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 + +010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441 + + + +0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441 + +5 + + + + 975328 - 1755529 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441 + + + +0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441 + +1 + + + + 589978 - 39794 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441 + + + +0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441 + +1 + + + 671968 - 1396084 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541 + + + +01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541 + +1 + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/stmlf-20061020.xml geos-3.8.0/tests/xmltester/tests/misc/stmlf-20061020.xml --- geos-3.7.1/tests/xmltester/tests/misc/stmlf-20061020.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/stmlf-20061020.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,282 @@ + + + + + + 99455 - 3082006 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -9 + +0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441 + + + +010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441 + +5 + + + + 275046 - 3361837 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -7 + +0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441 + + + +0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 + +5 + + + + 984559 - 984543 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541 + + + +01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541 + +1 + + + + 982104 - 1320680 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441 + + + +0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441 + +1 + + + + 720830 - 32827 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541 + + + +0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541 + +1 + + + + 11503 - 422581 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441 + + + +010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441 + +1 + + + + 35309 - 21138 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541 + + + +01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541 + +1 + + + + 189022 - 7822 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541 + + + +0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541 + +1 + + + + 191097 - 2916437 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441 + + + +0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441 + +1 + + + + 256271 - 367713 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 5 + +0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441 + + + +01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441 + +1 + + + + 275129 - 384120 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441 + + + +01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441 + +1 + + + + 275562 - 3361837 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441 + + + +0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 + +1 + + + + 466188 - 3072591 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541 + + + +0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541 + +1 + + + + 415163 - 3180189 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -5 + +010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441 + + + +0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441 + +1 + + + + 401167 - 3148390 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541 + + + +0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541 + +1 + + + + 164313 - 164648 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541 + + + +0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541 + +1 + + + + 464026 - 6704 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441 + + + +010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441 + +1 + + + + 469351 - 5219716 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541 + + + +01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541 + +1 + + + 525923 - 45230 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441 + + + +010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441 + +1 + + + + 532351 - 3180577 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441 + + + +0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441 + +1 + + + + 587497 - 409926 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441 + + + +01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441 + +1 + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/stmlf-20070119.xml geos-3.8.0/tests/xmltester/tests/misc/stmlf-20070119.xml --- geos-3.7.1/tests/xmltester/tests/misc/stmlf-20070119.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/stmlf-20070119.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,22 @@ + + + + + 3440675 - 39440 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 + +01060000000100000001030000000100000010000000ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F3389854419A99995994045141333333F33A985441EC51B81E94045141000000003F985441713D0A6799045141666666763F985441CDCCCCEC9D045141F6285C1F3F9854419A9999C9A3045141EC51B8DE3D985441666666E6AE0451411F85EBB13A985441E17A142EB8045141AE47E1CA36985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F9720736985441 + + + +01060000000100000001030000000100000011000000D7A3701D940451413D0AD7F33898544178DBFF36940451412E6318CD399854413579ED179A045141A0FF7BA5389854414304D81EA004514159B9FE6C3798544169437462A504514119BA06A235985441C01AAF28AB04514110CF31A333985441089AA624AF045141250D45D63298544191CD99DAB1045141B3DFA81232985441A5696F63B60451416745560832985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F338985441 + +5 + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/TestBufferExternal-1.xml geos-3.8.0/tests/xmltester/tests/misc/TestBufferExternal-1.xml --- geos-3.7.1/tests/xmltester/tests/misc/TestBufferExternal-1.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/TestBufferExternal-1.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,58 @@ + + + Various cases which have been reported or identified as causing buffer failures + in previous versions of JTS. + The cases in this file should all pass in the current version of JTS. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + JTS List reported error - Jan 4, 2007 + Causes return of tiny polygon in Ver 1.8 and earlier + + + POLYGON ((-2598.774169921875 61.087974548339844, + -2599.804443359375 57.09324264526367, -2599.35595703125 + 42.387855529785156, -2595.31298828125 24.86284828186035, + -2586.894287109375 7.970212459564209, -2572.63818359375 + -9.27978801727295, -2560.283935546875 -18.67239761352539, + -2551.49951171875 -22.76344108581543, -2539.59619140625 + -22.507848739624023, -2531.886474609375 -17.93946647644043, + -2531.310546875 -17.19328498840332, -2518.694580078125 + -27.471830368041992, -2564.515869140625 -44.53504943847656, + -2570.234619140625 -46.65970230102539, -2673.622314453125 + 27.439390182495117, -2682.3828125 31.62391471862793, -2698.79052734375 + 39.21870803833008, -2598.774169921875 61.087974548339844)) + + + + POLYGON ((-2598.9877800006584 62.06489354920029, -2597.8058559463916 60.838238598016815, -2598.80056722021 56.981393691373356, -2598.359422519401 42.51673068489857, -2594.36518642589 25.202964287692787, -2586.050417509141 8.518874855177339, -2571.9409713392497 -8.553669047985187, -2559.764298593386 -17.811272817091698, -2551.2883050682995 -21.758675476666994, -2539.8801180014552 -21.51371480841184, -2532.561054468898 -17.176813608772246, -2532.1021741477675 -16.582280683172275, -2530.6789157044022 -16.41801596133651, -2518.0629489075272 -26.696561340975183, -2518.345604985255 -28.40896236757903, -2564.166894047755 -45.4721814380136, -2564.1676040045695 -45.47244551005364, -2569.8863540045695 -47.59709837260247, -2570.8171618573137 -47.47250238913616, -2674.1330478688596 26.575123582663668, -2682.808365109433 30.71896080032791, -2699.2105884679977 38.31121222462303, -2699.784579453414 39.327613516943224, -2699.0041374225334 40.195627039190526, -2598.9877800006584 62.06489354920029)) + + + + + + JTS List reported error - Jan 4, 2007 + Causes return of tiny polygon in Ver 1.8 and earlier + + + POLYGON ((-2985.708251953125 16.51972770690918, -2982.37744140625 + 13.961258888244629, -2972.9091796875 11.138115882873535, -2956.294921875 + 11.763388633728027, -2941.1298828125 14.348956108093262, + -2922.595458984375 19.414688110351562, -2914.568359375 + -10.223998069763184, -2931.0537109375 -16.33589744567871, + -2946.358642578125 -24.970754623413086, -2959.0654296875 + -34.12342834472656, -2969.88330078125 -44.616554260253906, + -2978.60400390625 -55.14395523071289, -2980.379638671875 + -57.39796829223633, -2985.708251953125 16.51972770690918)) + + + + POLYGON ((-2986.70566366335 16.44782582720175, -2985.0990937741126 17.312776452537154, -2981.914734351797 14.8667999628029, -2972.781730022179 12.143620348943537, -2956.3982051078096 12.76020953441973, -2941.346258567696 15.3264952683113, -2922.8591038389686 20.379307926987252, -2921.6302322462557 19.676102233954516, -2913.6031326368807 -9.962583946160228, -2914.2207342589513 -11.161631675545383, -2930.6315593382983 -17.24590055998214, -2945.8190749722658 -25.814513047986875, -2958.4216504283336 -34.892123320729795, -2969.147953587571 -45.296430109246224, -2977.8260723815997 -55.7724244074717, -2979.594103917119 -58.016785833253174, -2980.672899897084 -58.35400064199699, -2981.3770503821 -57.469870171943754, -2986.70566366335 16.44782582720175)) + + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/misc/TestBufferExternal-2.xml geos-3.8.0/tests/xmltester/tests/misc/TestBufferExternal-2.xml --- geos-3.7.1/tests/xmltester/tests/misc/TestBufferExternal-2.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/TestBufferExternal-2.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,508 @@ + + + Basic buffer test cases. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + #1 Polygon - gid: 2501 + + POLYGON((152663.569985 545814.381985,152650.846985 545793.256985,152627.901985 545778.769985,152678.109985 545771.821985,152727.534985 545773.861985,152781.614985 545740.377985,152811.447985 545734.737985,152805.889985 545712.243985,152779.265985 545710.106985,152757.181985 545678.531985,152728.757985 545672.422985,152667.835985 545695.186985,152611.069985 545717.462985,152570.710985 545744.322985,152523.739985 545745.457985,152517.151985 545743.782985,152484.214985 545735.408985,152436.306985 545736.893985,152438.217985 545750.268985,152430.574985 545761.733985,152394.269985 545761.733985,152371.340985 545769.376985,152363.697985 545788.483985,152367.457985 545791.825985,152370.144985 545794.213985,152380.894985 545803.770985,152403.823985 545794.216985,152436.384985 545810.298985,152453.895985 545794.486985,152489.732985 545814.599985,152492.430985 545838.063985,152521.966985 545844.735985,152539.616985 545818.847985,152582.766985 545797.723985,152629.325985 545840.687985,152634.972885 545846.287385,152649.676985 545837.847985,152663.569985 545814.381985)) + POLYGON( EMPTY) + + #2 Polygon - gid: 2502 + + POLYGON((142903.674985 525488.153985,142887.424985 525486.421985,142876.299985 525510.439985,142859.487985 525524.993985,142857.580985 525565.813985,142858.104985 525616.072985,142881.339985 525658.486985,142907.528985 525716.283985,142929.703985 525786.082985,142957.279985 525858.237985,142960.930985 525890.791985,142975.490985 525922.709985,142984.234985 525947.127985,142986.419985 525953.232985,142993.173985 525984.254985,143000.571985 526013.485985,143007.015985 526020.469985,143016.093985 526003.985985,143035.005985 525986.830985,143053.948985 525965.933985,143071.269985 525941.972985,143091.351985 525917.505985,143099.479985 525910.991985,143095.500985 525903.225985,143092.658985 525881.416985,143085.816985 525850.459985,143076.886985 525815.718985,143061.518985 525786.881985,143044.455985 525757.313985,143032.301985 525728.902985,143013.483985 525713.680985,143000.030985 525684.275985,143000.320985 525648.294985,143005.159985 525613.976985,143003.725985 525572.864985,143004.494985 525550.515985,143001.962985 525548.017985,142985.622985 525535.307985,142974.204985 525515.602985,142968.977985 525509.074985,142939.044985 525498.260985,142903.674985 525488.153985)) + POLYGON( EMPTY) + + #3 Polygon - gid: 2503 + + POLYGON((146220.994985 549967.552985,146213.166985 549966.121985,146208.007985 549968.568985,146206.036985 549974.608985,146205.864985 549983.214985,146206.109985 549988.066985,146208.381985 549999.999985,146322.285985 549999.999985,146316.339985 549994.911985,146312.438985 549992.675985,146308.350985 549990.750985,146302.286985 549988.489985,146293.636985 549985.962985,146269.463985 549981.745985,146257.525985 549979.090985,146240.391985 549974.375985,146234.981985 549972.660985,146220.994985 549967.552985)) + POLYGON( EMPTY) + + #4 Polygon - gid: 2504 + + POLYGON((144896.566985 524882.672985,144899.299985 524881.825985,144903.913985 524879.874985,144908.281985 524877.329985,144911.797985 524874.348985,144913.851985 524871.090985,144914.168985 524869.389985,144913.622985 524865.233985,144911.859985 524860.681985,144909.399985 524856.197985,144906.748985 524852.222985,144903.927985 524848.842985,144900.666985 524845.737985,144897.109985 524842.856985,144889.669985 524837.573985,144883.779985 524833.850985,144879.800985 524831.683985,144875.716985 524829.743985,144871.552985 524828.061985,144867.693985 524826.762985,144863.373985 524825.537985,144816.049985 524814.269985,144768.463985 524802.145985,144743.475985 524796.359985,144724.202985 524791.404985,144714.293985 524789.489985,144705.353985 524788.164985,144700.870985 524787.764985,144696.389985 524787.619985,144689.024985 524787.828985,144680.046985 524788.515985,144662.118985 524790.538985,144653.609985 524791.745985,144640.283985 524793.947985,144634.330985 524794.724985,144629.764985 524794.975985,144620.521985 524795.100985,144615.989985 524795.370985,144611.611985 524796.041985,144606.579985 524797.679985,144602.565985 524799.585985,144598.598985 524801.833985,144594.733985 524804.380985,144591.026985 524807.186985,144587.534985 524810.208985,144584.313985 524813.405985,144581.419985 524816.734985,144581.806985 524818.560985,144583.642985 524822.862985,144586.460985 524826.772985,144589.858985 524829.672985,144591.561985 524830.552985,144595.734985 524831.793985,144604.956985 524833.056985,144609.445985 524833.994985,144619.190985 524837.204985,144627.621985 524840.384985,144636.348985 524843.925985,144652.801985 524851.249985,144701.221985 524871.437985,144720.997985 524878.409985,144729.636985 524881.012985,144733.994985 524882.035985,144740.905985 524883.100985,144745.358985 524883.385985,144749.845985 524883.427985,144772.449985 524882.398985,144799.041985 524881.859985,144816.235985 524881.915985,144834.523985 524882.327985,144857.002985 524883.450985,144883.361985 524884.143985,144887.877985 524883.994985,144892.292985 524883.537985,144896.566985 524882.672985)) + POLYGON( EMPTY) + + #5 Polygon - gid: 2505 + + POLYGON((144446.439985 524841.154985,144441.934985 524841.141985,144435.845985 524841.674985,144425.648985 524843.342985,144420.748985 524844.729985,144417.119985 524846.780985,144415.753985 524848.861985,144415.428985 524852.340985,144416.080985 524856.335985,144417.458985 524860.698985,144419.313985 524865.282985,144423.459985 524874.528985,144425.249985 524878.896985,144427.325985 524883.109985,144429.289985 524885.370985,144439.587985 524894.381985,144443.173985 524897.220985,144446.878985 524899.799985,144450.724985 524902.010985,144453.174985 524903.142985,144457.321985 524904.547985,144461.659985 524905.496985,144466.133985 524906.119985,144479.827985 524907.342985,144483.155985 524907.782985,144517.007985 524913.042985,144521.480985 524913.453985,144530.608985 524913.781985,144550.777985 524913.633985,144559.793985 524913.451985,144568.795985 524913.012985,144574.880985 524912.364985,144579.291985 524911.566985,144594.257985 524907.594985,144607.560985 524904.598985,144611.775985 524903.277985,144615.327985 524899.282985,144614.465985 524894.617985,144613.841985 524893.603985,144607.933985 524886.826985,144601.507985 524880.434985,144594.663985 524874.523985,144591.115985 524871.777985,144586.969985 524868.873985,144583.162985 524866.495985,144575.256985 524862.134985,144558.682985 524853.946985,144554.551985 524852.069985,144550.343985 524850.422985,144546.048985 524849.133985,144540.520985 524848.023985,144536.086985 524847.329985,144522.628985 524845.891985,144507.564985 524844.759985,144480.579985 524843.741985,144461.960985 524842.043985,144446.439985 524841.154985)) + POLYGON( EMPTY) + + #6 Polygon - gid: 2506 + + POLYGON((144455.196985 524980.805985,144461.047985 524980.714985,144465.526985 524981.158985,144474.517985 524982.448985,144479.009985 524982.843985,144490.646985 524982.725985,144495.270985 524982.522985,144499.829985 524982.093985,144504.251985 524981.331985,144508.466985 524980.130985,144509.918985 524979.570985,144513.913985 524977.623985,144517.852985 524975.167985,144521.610985 524972.300985,144525.060985 524969.118985,144528.074985 524965.720985,144530.334985 524962.519985,144532.084985 524958.448985,144532.948985 524953.701985,144532.919985 524948.863985,144531.990985 524944.516985,144529.776985 524940.368985,144526.744985 524936.825985,144523.097985 524933.699985,144519.179985 524931.193985,144517.924985 524930.555985,144513.860985 524929.018985,144509.523985 524927.994985,144493.342985 524925.809985,144437.476985 524916.661985,144433.088985 524915.698985,144428.782985 524914.494985,144423.543985 524912.609985,144419.404985 524910.860985,144411.280985 524906.906985,144400.576985 524901.079985,144396.728985 524898.765985,144393.000985 524896.236985,144385.751985 524890.870985,144381.960985 524887.848985,144375.108985 524881.988985,144371.554985 524879.239985,144363.304985 524873.572985,144355.718985 524868.636985,144347.909985 524864.180985,144344.379985 524862.452985,144340.237985 524860.702985,144335.937985 524859.212985,144331.535985 524858.026985,144327.084985 524857.185985,144323.250985 524856.770985,144318.804985 524856.633985,144309.840985 524857.119985,144296.319985 524858.530985,144291.864985 524858.855985,144278.326985 524858.971985,144273.869985 524859.393985,144269.275985 524860.279985,144251.862985 524864.968985,144247.472985 524865.953985,144238.178985 524867.630985,144229.241985 524868.924985,144219.237985 524869.738985,144214.767985 524869.549985,144205.816985 524868.188985,144200.865985 524867.789985,144191.538985 524867.752985,144186.945985 524868.099985,144182.709985 524869.007985,144181.284985 524869.531985,144177.852985 524872.620985,144176.025985 524877.123985,144175.996985 524878.261985,144176.451985 524882.564985,144177.369985 524887.022985,144178.706985 524891.527985,144180.417985 524895.971985,144182.460985 524900.245985,144184.791985 524904.243985,144188.570985 524909.302985,144191.772985 524912.018985,144195.672985 524914.042985,144208.945985 524918.742985,144213.022985 524920.777985,144217.149985 524923.817985,144220.469985 524926.853985,144226.873985 524933.289985,144230.199985 524936.340985,144232.588985 524938.226985,144239.984985 524943.454985,144247.712985 524948.238985,144251.712985 524950.295985,144255.808985 524952.038985,144260.553985 524953.530985,144264.923985 524954.479985,144269.384985 524955.181985,144282.909985 524956.875985,144311.048985 524961.124985,144317.314985 524962.407985,144321.673985 524963.513985,144325.997985 524964.818985,144330.259985 524966.323985,144337.091985 524969.241985,144349.052985 524975.446985,144371.128985 524988.101985,144374.990985 524990.509985,144382.600985 524995.675985,144386.503985 524997.875985,144390.576985 524999.444985,144395.149985 525000.415985,144399.750985 525000.903985,144404.419985 525000.929985,144408.992985 525000.459985,144413.301985 524999.458985,144417.441985 524997.544985,144421.099985 524994.911985,144428.244985 524988.981985,144432.035985 524986.535985,144437.425985 524984.344985,144441.760985 524983.043985,144446.208985 524982.029985,144450.707985 524981.288985,144455.196985 524980.805985)) + POLYGON( EMPTY) + + #7 Polygon - gid: 2507 + + POLYGON((144180.284985 525120.032985,144183.832985 525116.794985,144186.310985 525113.187985,144186.773985 525112.080985,144187.835985 525108.131985,144188.392985 525103.916985,144188.543985 525099.491985,144188.385985 525094.909985,144188.017985 525090.227985,144186.627985 525076.124985,144185.841985 525059.007985,144185.204985 525050.018985,144184.199985 525041.093985,144182.718985 525031.683985,144181.494985 525027.301985,144179.611985 525023.346985,144176.818985 525019.465985,144173.767985 525015.993985,144170.357985 525012.802985,144166.672985 525010.048985,144162.791985 525007.884985,144158.428985 525006.304985,144154.095985 525005.337985,144140.459985 525003.668985,144135.956985 525002.943985,144132.489985 525002.111985,144128.279985 525000.587985,144116.048985 524994.706985,144112.117985 524993.299985,144098.939985 524989.717985,144094.477985 524988.770985,144090.015985 524988.064985,144085.573985 524987.673985,144082.099985 524987.632985,144077.708985 524988.016985,144073.317985 524988.862985,144068.938985 524990.056985,144060.269985 524993.031985,144056.006985 524994.585985,144051.298985 524996.571985,144039.237985 525003.001985,144035.090985 525004.553985,144033.429985 525004.964985,144029.061985 525005.651985,144024.594985 525005.978985,144020.064985 525006.023985,144015.503985 525005.866985,144005.304985 525005.175985,144000.845985 525004.540985,143991.981985 525002.425985,143987.562985 525001.659985,143984.325985 525001.504985,143979.862985 525001.775985,143975.358985 525002.379985,143970.879985 525003.298985,143966.493985 525004.512985,143962.267985 525006.001985,143957.854985 525007.995985,143953.888985 525010.251985,143950.109985 525012.839985,143946.599985 525015.694985,143944.902985 525017.266985,143941.891985 525020.593985,143939.241985 525024.341985,143937.049985 525028.360985,143935.728985 525031.561985,143947.089985 525038.847985,143958.611985 525045.903985,143978.120985 525057.118985,143986.179985 525061.258985,144002.539985 525068.796985,144015.419985 525074.941985,144023.406985 525079.086985,144032.735985 525085.069985,144047.490985 525095.410985,144052.695985 525098.806985,144056.554985 525101.113985,144071.198985 525108.843985,144087.471985 525116.537985,144095.654985 525120.979985,144099.734985 525122.957985,144103.931985 525124.188985,144108.802985 525124.422985,144113.258985 525123.960985,144122.292985 525122.295985,144135.544985 525120.385985,144140.040985 525119.859985,144144.496985 525119.751985,144146.224985 525119.877985,144150.651985 525120.958985,144159.475985 525124.711985,144163.736985 525125.992985,144167.459985 525126.023985,144171.674985 525124.798985,144176.090985 525122.751985,144180.284985 525120.032985)) + POLYGON( EMPTY) + + #8 Polygon - gid: 2508 + + POLYGON((145511.322985 525055.058985,145421.842985 525011.893985,145360.382985 525010.401985,145268.686985 525018.327985,145146.589985 524998.812985,145037.826985 525008.605985,144973.835985 525025.487985,145025.537985 525040.060985,145053.665985 525046.467985,145095.857985 525056.078985,145116.953985 525060.883985,145237.680985 525091.930985,145337.492985 525112.002985,145422.613985 525124.136985,145582.586985 525143.477985,145594.862985 525133.291985,145599.488985 525122.480985,145601.426985 525108.224985,145582.118985 525096.831985,145543.502985 525074.046985,145511.322985 525055.058985)) + POLYGON( EMPTY) + + #9 Polygon - gid: 2509 + + POLYGON((144327.439985 525055.359985,144323.575985 525054.083985,144319.137985 525053.820985,144309.540985 525054.540985,144304.876985 525054.629985,144288.008985 525053.381985,144279.029985 525053.080985,144271.827985 525053.508985,144258.386985 525054.981985,144243.660985 525055.827985,144230.778985 525056.779985,144226.202985 525057.165985,144221.779985 525057.904985,144216.743985 525059.629985,144212.867985 525061.883985,144209.230985 525064.754985,144205.958985 525068.049985,144203.179985 525071.576985,144199.872985 525077.084985,144197.994985 525081.332985,144196.679985 525085.738985,144196.099985 525090.172985,144195.983985 525096.039985,144196.147985 525105.052985,144196.712985 525114.141985,144198.291985 525127.709985,144199.820985 525136.570985,144200.724985 525140.909985,144204.646985 525148.438985,144214.701985 525150.449985,144224.757985 525146.427985,144239.841985 525143.410985,144256.935985 525142.405985,144273.025985 525137.377985,144284.086985 525131.343985,144293.136985 525124.304985,144300.175985 525117.265985,144311.054985 525104.626985,144312.513985 525103.587985,144316.441985 525102.209985,144321.398985 525100.876985,144326.356985 525099.200985,144330.789985 525096.313985,144333.887985 525092.901985,144336.779985 525088.924985,144339.157985 525084.646985,144340.713985 525080.335985,144341.139985 525076.255985,144340.875985 525074.291985,144339.526985 525070.035985,144337.293985 525065.704985,144334.418985 525061.624985,144331.142985 525058.119985,144327.439985 525055.359985)) + POLYGON( EMPTY) + + #10 Polygon - gid: 2510 + + POLYGON((144510.896985 525506.174985,144491.815985 525502.887985,144452.960985 525504.373985,144356.543985 525498.078985,144342.420985 525498.616985,144329.347985 525503.644985,144327.336985 525503.644985,144316.275985 525508.672985,144310.241985 525515.711985,144314.264985 525527.778985,144324.779985 525538.713985,144356.897985 525552.292985,144379.210985 525556.506985,144460.334985 525561.721985,144473.144985 525559.956985,144485.211985 525553.922985,144497.278985 525540.850985,144512.361985 525525.766985,144520.406985 525516.716985,144517.389985 525510.683985,144510.896985 525506.174985)) + POLYGON( EMPTY) + + #11 Polygon - gid: 2511 + + POLYGON((145442.154985 525572.074985,145501.507985 525553.758985,145522.070985 525554.647985,145516.394985 525541.746985,145505.936985 525519.454985,145532.899985 525496.685985,145547.030985 525513.347985,145591.958985 525554.366985,145632.751985 525552.852985,145668.799985 525544.771985,145702.316985 525529.254985,145724.534985 525515.925985,145745.168985 525499.920985,145723.440985 525498.117985,145705.446985 525491.319985,145691.799985 525487.926985,145650.858985 525477.747985,145578.241985 525453.820985,145543.290985 525453.401985,145502.225985 525452.909985,145398.531985 525436.386985,145380.777985 525443.215985,145344.364985 525481.970985,145328.089985 525529.882985,145370.877985 525553.686985,145442.154985 525572.074985)) + POLYGON( EMPTY) + + #12 Polygon - gid: 2512 + + POLYGON((144625.991985 525513.700985,144598.841985 525508.672985,144583.757985 525509.677985,144566.662985 525514.705985,144552.584985 525519.733985,144542.529985 525530.794985,144526.439985 525542.861985,144519.400985 525555.934985,144519.400985 525571.017985,144522.417985 525577.051985,144538.506985 525584.090985,144554.595985 525589.117985,144566.662985 525595.151985,144585.768985 525597.162985,144602.863985 525597.162985,144612.919985 525594.145985,144623.980985 525590.123985,144647.108985 525580.067985,144660.180985 525574.034985,144674.259985 525562.973985,144689.342985 525551.911985,144692.359985 525544.872985,144691.353985 525537.833985,144678.281985 525530.794985,144658.169985 525524.761985,144625.991985 525513.700985)) + POLYGON( EMPTY) + + #13 Polygon - gid: 2513 + + POLYGON((146081.670985 525417.759985,146034.312985 525383.398985,146018.183985 525405.148985,145997.047985 525436.541985,145975.994985 525451.787985,145927.068985 525472.385985,145872.869985 525488.849985,145830.388985 525510.994985,145793.352985 525537.222985,145768.063985 525549.233985,145754.442985 525585.944985,145741.111985 525601.945985,145729.163985 525609.328985,145747.791985 525621.222985,145785.820985 525616.608985,145835.405985 525606.033985,145888.006985 525585.051985,145922.153985 525572.522985,145965.920985 525551.110985,145987.088985 525544.372985,146029.350985 525531.069985,146071.462985 525518.113985,146123.223985 525504.811985,146160.742985 525500.837985,146164.508985 525498.816985,146132.472985 525456.997985,146081.670985 525417.759985)) + POLYGON( EMPTY) + + #14 Polygon - gid: 2514 + + POLYGON((147625.665985 525733.355985,147685.615985 525723.612985,147746.451985 525726.828985,147807.643985 525705.752985,147778.828985 525680.379985,147736.635985 525673.137985,147681.802985 525656.781985,147634.046985 525660.702985,147593.909985 525649.092985,147543.925985 525630.287985,147525.748985 525647.754985,147521.204985 525652.120985,147486.998985 525649.400985,147473.315985 525648.312985,147433.858985 525642.752985,147433.938985 525662.319985,147457.769985 525676.556985,147464.271985 525685.355985,147463.991985 525695.137985,147478.318985 525707.779985,147479.694885 525707.945085,147513.227985 525711.970985,147572.805985 525729.496985,147625.665985 525733.355985)) + POLYGON( EMPTY) + + #15 Polygon - gid: 2515 + + POLYGON((149067.995985 525965.488985,149025.297985 525963.470985,148994.143985 525964.208985,148997.616985 525989.339985,149029.151985 526015.805985,149120.123985 526059.526985,149131.062985 526066.577985,149148.502985 526077.820985,149183.975985 526087.501985,149232.395985 526086.935985,149294.555985 526084.930985,149312.038985 526079.485985,149314.993985 526078.565985,149316.243985 526056.762985,149244.224985 526035.142985,149176.959985 526005.418985,149113.972985 525980.563985,149067.995985 525965.488985)) + POLYGON( EMPTY) + + #16 Polygon - gid: 2516 + + POLYGON((150716.409985 526216.711985,150707.088985 526192.800985,150622.180985 526127.431985,150583.008985 526115.338985,150539.865985 526092.923985,150506.113985 526087.030985,150457.230985 526063.119985,150414.652985 526045.317985,150412.516485 526044.107285,150403.373985 526054.606985,150398.109985 526096.678985,150386.500985 526126.603985,150356.405985 526157.275985,150349.132985 526185.598985,150364.836985 526203.184985,150392.348985 526202.980985,150449.647985 526187.409985,150479.794985 526174.863985,150494.337985 526175.134985,150530.693985 526175.812985,150537.911985 526177.023985,150588.433985 526185.497985,150654.506985 526212.614985,150706.931985 526211.847985,150716.409985 526216.711985)) + POLYGON( EMPTY) + + #17 Polygon - gid: 2517 + + POLYGON((142576.939985 544993.306985,142591.447985 544982.626985,142598.216985 544976.869985,142601.519985 544973.710985,142604.578985 544970.396985,142606.691985 544967.715985,142607.297985 544962.618985,142603.363985 544961.993985,142598.959985 544961.672985,142594.273985 544961.623985,142589.490985 544961.812985,142582.524985 544962.474985,142578.110985 544963.214985,142573.719985 544964.260985,142569.373985 544965.557985,142561.217985 544968.551985,142557.131985 544970.386985,142553.145985 544972.465985,142545.288985 544976.918985,142529.062985 544985.730985,142525.008985 544987.637985,142521.706985 544988.893985,142517.221985 544989.644985,142511.940985 544988.902985,142507.623985 544990.118985,142503.346985 544991.624985,142499.158985 544993.401985,142495.106985 544995.428985,142491.643985 544997.434985,142488.002985 545000.007985,142484.572985 545002.922985,142477.897985 545009.067985,142474.427985 545011.944985,142468.738985 545015.692985,142464.809985 545017.875985,142452.730985 545023.989985,142433.515985 545034.313985,142415.405985 545044.738985,142396.233985 545056.516985,142390.894985 545059.567985,142382.948985 545063.811985,142374.326985 545067.766985,142365.958985 545071.089985,142353.644985 545075.660985,142323.390985 545086.250985,142304.370985 545093.446985,142300.236985 545095.217985,142296.256985 545097.143985,142292.326985 545099.358985,142288.519985 545101.843985,142284.895985 545104.541985,142282.462985 545106.558985,142280.138985 545111.115985,142283.834985 545112.105985,142288.493985 545112.673985,142293.452985 545112.769985,142297.356985 545112.450985,142301.654985 545111.424985,142305.872985 545109.806985,142313.771985 545106.396985,142329.263985 545100.265985,142342.005985 545095.779985,142350.590985 545093.089985,142360.163985 545090.637985,142374.837985 545087.416985,142388.124985 545084.842985,142392.515985 545083.872985,142396.843985 545082.667985,142401.034985 545081.083985,142413.291985 545075.346985,142419.186985 545073.209985,142427.794985 545070.561985,142434.889985 545068.590985,142452.450985 545064.549985,142456.788985 545063.385985,142462.902985 545061.340985,142471.265985 545058.003985,142481.625985 545053.473985,142500.169985 545044.593985,142516.816985 545037.701985,142520.898985 545035.827985,142526.185985 545033.097985,142534.018985 545028.599985,142537.797985 545026.147985,142541.355985 545023.602985,142544.809985 545020.751985,142554.510985 545011.319985,142561.212985 545005.502985,142576.939985 544993.306985)) + POLYGON( EMPTY) + + #18 Polygon - gid: 2518 + + POLYGON((142142.650985 544835.425985,142145.030985 544834.924985,142149.928985 544836.666985,142147.868985 544839.863985,142145.054985 544843.328985,142141.764985 544846.863985,142135.589985 544852.711985,142131.385985 544855.469985,142121.934985 544860.323985,142119.418985 544862.762985,142120.643985 544866.423985,142123.832985 544869.166985,142142.007985 544880.482985,142146.185985 544882.686985,142150.034985 544885.110985,142152.992985 544888.177985,142154.918985 544892.177985,142156.098985 544896.476985,142157.758985 544905.619985,142158.869985 544910.072985,142159.515985 544911.889985,142161.471985 544915.923985,142166.292985 544923.628985,142168.551985 544927.529985,142170.143985 544931.144985,142171.234985 544935.498985,142172.207985 544944.679985,142172.887985 544949.148985,142174.226985 544953.296985,142176.709985 544957.283985,142179.723985 544960.618985,142201.533985 544980.806985,142208.081985 544987.628985,142214.086985 544994.480985,142216.762985 544998.084985,142218.813985 545001.396985,142220.731985 545005.664985,142221.760985 545010.296985,142221.410985 545013.929985,142219.731985 545017.878985,142217.358985 545021.757985,142214.506985 545025.474985,142211.394985 545028.938985,142209.403985 545030.945985,142205.982985 545033.801985,142202.150985 545036.254985,142198.084985 545038.353985,142194.906985 545039.761985,142190.673985 545041.191985,142181.848985 545043.208985,142175.903985 545044.966985,142167.646985 545048.537985,142159.620985 545052.668985,142151.626985 545057.376985,142144.153985 545062.424985,142140.530985 545065.106985,142133.753985 545070.520985,142130.329985 545073.481985,142127.047985 545076.586985,142123.979985 545079.866985,142120.258985 545084.585985,142117.704985 545088.320985,142115.321985 545092.177985,142111.638985 545098.836985,142110.590985 545104.805985,142114.324985 545106.169985,142118.865985 545107.103985,142123.727985 545107.542985,142128.424985 545107.422985,142133.319985 545106.555985,142137.609985 545105.268985,142146.150985 545102.097985,142152.816985 545099.968985,142161.600985 545098.020985,142170.475985 545096.461985,142179.596985 545095.135985,142193.021985 545093.676985,142203.872985 545092.852985,142217.391985 545092.380985,142223.658985 545091.743985,142228.073985 545090.957985,142236.822985 545088.833985,142260.302985 545082.618985,142275.993985 545078.035985,142284.552985 545075.245985,142292.377985 545072.316985,142304.771985 545066.945985,142315.772985 545061.600985,142326.339985 545055.888985,142334.073985 545051.287985,142344.223985 545044.758985,142358.879985 545034.305985,142372.971985 545025.050985,142382.274985 545019.649985,142386.325985 545017.721985,142394.717985 545014.429985,142415.323985 545006.078985,142427.651985 545000.555985,142435.089985 544996.886985,142439.032985 544994.722985,142446.714985 544990.017985,142457.124985 544983.221985,142464.485985 544977.997985,142467.866985 544975.111985,142470.779985 544971.360985,142476.685985 544960.284985,142479.910985 544956.180985,142483.304985 544953.234985,142493.778985 544944.676985,142496.933985 544941.723985,142499.886985 544938.302985,142505.255985 544930.884985,142508.155985 544927.477985,142510.754985 544925.197985,142514.462985 544922.808985,142518.456985 544920.774985,142522.642985 544918.997985,142537.322985 544913.615985,142545.912985 544910.920985,142554.584985 544908.470985,142570.055985 544904.514985,142609.687985 544895.396985,142618.402985 544893.149985,142625.191985 544891.116985,142633.745985 544888.300985,142642.213985 544885.246985,142647.284985 544883.222985,142659.650985 544877.784985,142663.825985 544876.113985,142672.611985 544873.031985,142681.231985 544870.419985,142688.566985 544868.542985,142701.784985 544865.776985,142712.430985 544863.748985,142735.115985 544859.827985,142748.404985 544857.440985,142759.820985 544854.793985,142772.902985 544851.448985,142791.990985 544847.041985,142836.872985 544838.059985,142856.026985 544833.591985,142866.014985 544830.834985,142870.276985 544829.394985,142882.911985 544824.582985,142891.044985 544822.276985,142899.893985 544820.435985,142907.005985 544819.604985,142911.480985 544819.457985,142915.973985 544819.549985,142931.392985 544820.445985,142949.396985 544820.976985,142953.877985 544821.305985,142963.412985 544822.566985,142997.291985 544828.686985,143001.762985 544829.190985,143015.237985 544830.244985,143021.078985 544830.979985,143029.925985 544832.658985,143034.317985 544833.689985,143042.431985 544835.985985,143046.664985 544837.487985,143059.123985 544842.750985,143063.328985 544844.341985,143069.061985 544846.084985,143073.419985 544847.201985,143091.561985 544851.204985,143104.799985 544853.865985,143117.818985 544855.976985,143131.660985 544857.736985,143149.611985 544859.148985,143158.523985 544860.304985,143171.796985 544862.806985,143187.420985 544865.182985,143195.694985 544866.198985,143218.129985 544867.941985,143229.421985 544869.235985,143238.331985 544870.546985,143242.752985 544871.361985,143248.974985 544872.787985,143245.893985 544864.243985,143243.278985 544855.627985,143239.596985 544845.254985,143238.703985 544840.809985,143239.565985 544838.343985,143242.559985 544836.757985,143246.782985 544835.973985,143251.747985 544835.772985,143256.966985 544835.932985,143263.459985 544836.324985,143267.887985 544836.914985,143281.079985 544840.308985,143285.493985 544841.010985,143291.165985 544841.147985,143295.708985 544840.906985,143300.240985 544840.360985,143304.693985 544839.501985,143308.795985 544838.387985,143312.930985 544836.782985,143316.929985 544834.744985,143328.699985 544827.895985,143340.615985 544821.459985,143349.622985 544816.936985,143353.765985 544815.199985,143379.048985 544806.047985,143383.197985 544804.295985,143387.085985 544802.178985,143391.866985 544798.607985,143395.237985 544795.519985,143398.377985 544792.144985,143401.217985 544788.550985,143403.683985 544784.802985,143406.240985 544779.636985,143407.710985 544775.344985,143408.807985 544770.880985,143409.578985 544766.357985,143410.053985 544762.114985,143410.135985 544757.674985,143409.747985 544753.192985,143409.089985 544748.693985,143407.345985 544737.228985,143405.081985 544723.917985,143403.266985 544711.498985,143400.336985 544688.230985,143398.896985 544674.807985,143397.734985 544659.841985,143397.090985 544646.826985,143396.850985 544637.820985,143396.972985 544632.012985,143396.751985 544622.050985,143396.978985 544617.243985,143398.170985 544613.367985,143399.194985 544612.065985,143402.692985 544610.512985,143407.447985 544610.199985,143412.699985 544610.353985,143417.686985 544610.201985,143421.647985 544608.970985,143424.221985 544605.463985,143425.185985 544600.971985,143426.503985 544586.295985,143426.695985 544576.790985,143427.602985 544572.592985,143428.607985 544570.612985,143431.663985 544567.852985,143435.852985 544565.881985,143440.409985 544564.122985,143444.574985 544561.998985,143446.602985 544560.270985,143449.266985 544556.772985,143451.512985 544552.774985,143453.316985 544548.468985,143454.651985 544544.046985,143455.302985 544540.930985,143455.737985 544536.554985,143455.685985 544532.081985,143455.310985 544527.548985,143454.248985 544518.460985,143453.293985 544507.420985,143452.183985 544498.480985,143451.387985 544494.277985,143450.256985 544489.941985,143444.947985 544474.661985,143441.252985 544461.587985,143439.691985 544457.395985,143436.586985 544451.416985,143434.254985 544447.469985,143431.718985 544443.640985,143428.959985 544440.027985,143425.961985 544436.729985,143424.373985 544435.233985,143420.802985 544432.682985,143416.748985 544430.681985,143412.436985 544429.034985,143402.691985 544425.747985,143398.354985 544424.509985,143389.557985 544422.502985,143382.443985 544421.349985,143377.969985 544420.862985,143361.255985 544419.733985,143322.639985 544418.450985,143317.223985 544418.508985,143307.965985 544419.035985,143303.487985 544418.885985,143299.248985 544418.062985,143294.848985 544416.073985,143291.138985 544413.485985,143287.645985 544410.410985,143284.360985 544407.112985,143282.416985 544405.061985,143279.570985 544401.609985,143272.098985 544390.222985,143269.351985 544386.691985,143264.746985 544382.250985,143261.177985 544379.420985,143257.402985 544376.844985,143253.487985 544374.564985,143250.331985 544372.994985,143246.011985 544371.209985,143241.373985 544369.908985,143236.897985 544369.654985,143234.944985 544370.069985,143230.996985 544371.823985,143227.070985 544374.360985,143223.425985 544377.476985,143220.320985 544380.965985,143218.559985 544383.604985,143216.857985 544387.535985,143215.805985 544391.869985,143215.175985 544396.447985,143213.672985 544410.851985,143212.338985 544428.813985,143211.334985 544435.596985,143204.880985 544467.076985,143202.713985 544478.328985,143195.991985 544515.066985,143188.876985 544557.021985,143187.823985 544561.374985,143184.665985 544571.935985,143182.777985 544576.196985,143180.223985 544579.484985,143175.783985 544581.612985,143171.287985 544582.118985,143155.656985 544581.868985,143136.206985 544580.819985,143122.601985 544580.581985,143118.118985 544580.285985,143113.728985 544579.627985,143108.946985 544578.417985,143104.513985 544576.714985,143100.732985 544574.296985,143099.409985 544572.940985,143097.056985 544569.351985,143095.214985 544565.213985,143093.790985 544560.757985,143092.692985 544556.218985,143091.497985 544549.010985,143091.198985 544544.529985,143091.120985 544540.004985,143091.190985 544525.360985,143091.987985 544506.978985,143093.802985 544482.938985,143096.515985 544453.401985,143097.660985 544445.625985,143100.216985 544432.363985,143102.727985 544417.272985,143103.883985 544408.352985,143104.696985 544397.702985,143104.824985 544393.173985,143104.700985 544388.683985,143104.380985 544385.282985,143103.655985 544380.423985,143102.277985 544375.659985,143099.755985 544372.531985,143095.802985 544371.270985,143091.229985 544370.919985,143086.346985 544371.240985,143081.583985 544372.059985,143079.325985 544372.617985,143075.204985 544374.152985,143071.230985 544376.260985,143063.417985 544381.056985,143059.424985 544383.176985,143057.485985 544383.999985,143052.909985 544385.539985,143048.244985 544386.078985,143045.943985 544385.387985,143042.625985 544382.880985,143039.587985 544379.631985,143030.944985 544368.616985,143018.916985 544355.157985,143006.538985 544342.290985,143003.228985 544339.249985,143000.059985 544336.689985,142996.399985 544334.047985,142992.577985 544331.547985,142988.612985 544329.303985,142984.520985 544327.429985,142981.796985 544326.464985,142977.495985 544325.372985,142973.057985 544324.651985,142963.981985 544323.950985,142953.878985 544323.685985,142949.368985 544323.805985,142940.377985 544324.559985,142928.660985 544326.438985,142919.876985 544328.519985,142915.586985 544329.838985,142910.935985 544331.578985,142906.815985 544333.396985,142898.760985 544337.492985,142891.323985 544341.669985,142883.714985 544346.485985,142873.049985 544353.650985,142865.638985 544358.793985,142862.071985 544361.528985,142852.868985 544369.200985,142849.644985 544372.462985,142847.241985 544376.065985,142846.832985 544377.001985,142845.639985 544381.155985,142845.045985 544385.649985,142844.939985 544390.314985,142845.205985 544394.983985,142845.730985 544399.487985,142847.359985 544404.070985,142849.883985 544408.193985,142851.902985 544412.235985,142852.270985 544414.588985,142851.234985 544418.764985,142848.804985 544422.901985,142845.666985 544426.437985,142841.451985 544429.726985,142837.382985 544432.073985,142833.070985 544433.782985,142829.180985 544434.554985,142824.843985 544434.518985,142820.388985 544433.803985,142815.908985 544432.626985,142808.656985 544430.234985,142804.514985 544428.545985,142792.485985 544422.309985,142789.356985 544420.953985,142780.856985 544417.736985,142776.523985 544416.379985,142772.150985 544415.400985,142769.493985 544415.056985,142765.048985 544415.082985,142751.517985 544417.132985,142747.071985 544417.221985,142741.891985 544416.537985,142737.389985 544415.594985,142732.957985 544414.305985,142728.713985 544412.646985,142724.776985 544410.591985,142720.722985 544407.567985,142717.590985 544404.379985,142708.851985 544393.768985,142695.798985 544379.805985,142685.746985 544368.505985,142681.717985 544363.733985,142676.115985 544356.691985,142646.529985 544317.476985,142637.252985 544305.929985,142629.738985 544297.399985,142626.583985 544294.195985,142619.961985 544288.074985,142606.708985 544277.250985,142603.032985 544274.509985,142599.218985 544272.148985,142595.218985 544270.380985,142590.945985 544269.249985,142586.455985 544268.616985,142581.850985 544268.406985,142577.242985 544268.544985,142572.745985 544268.960985,142568.202985 544269.774985,142563.879985 544270.976985,142559.588985 544272.441985,142512.041985 544289.931985,142499.063985 544293.973985,142494.844985 544295.512985,142490.821985 544297.411985,142486.858985 544299.660985,142482.929985 544302.124985,142479.179985 544304.838985,142475.776985 544307.826985,142472.884985 544311.110985,142470.374985 544315.361985,142468.770985 544319.648985,142467.680985 544324.191985,142466.879985 544330.867985,142466.891985 544335.290985,142467.346985 544339.759985,142468.106985 544344.244985,142469.978985 544353.154985,142472.266985 544362.401985,142476.753985 544376.733985,142479.688985 544385.253985,142482.130985 544391.383985,142485.988985 544399.514985,142490.328985 544407.410985,142493.108985 544412.007985,142500.694985 544423.185985,142503.886985 544427.401985,142512.460985 544437.928985,142515.999985 544443.400985,142518.088985 544447.422985,142520.010985 544451.634985,142521.614985 544455.961985,142522.756985 544460.330985,142523.276985 544464.467985,142523.056985 544468.822985,142522.131985 544473.237985,142520.735985 544477.644985,142519.105985 544481.978985,142516.222985 544488.854985,142507.660985 544504.729985,142498.246985 544525.424985,142495.238985 544531.607985,142491.152985 544539.627985,142482.068985 544556.762985,142476.213985 544566.860985,142471.338985 544575.732985,142468.701985 544579.756985,142465.777985 544582.273985,142464.715985 544582.617985,142461.172985 544582.107985,142457.227985 544579.900985,142453.175985 544576.750985,142447.704985 544572.038985,142444.441985 544568.990985,142435.526985 544558.787985,142427.051985 544549.664985,142423.735985 544546.556985,142420.069985 544544.196985,142415.422985 544542.528985,142411.043985 544541.542985,142406.504985 544540.908985,142401.901985 544540.531985,142395.232985 544540.246985,142390.735985 544540.243985,142386.201985 544540.518985,142381.689985 544541.072985,142377.257985 544541.902985,142370.099985 544543.816985,142365.592985 544545.677985,142362.366985 544548.445985,142360.671985 544552.905985,142359.988985 544557.315985,142359.794985 544562.023985,142360.111985 544571.441985,142360.600985 544576.236985,142361.477985 544580.650985,142363.537985 544589.470985,142366.377985 544604.633985,142366.965985 544609.086985,142367.335985 544617.125985,142367.289985 544621.772985,142366.887985 544626.340985,142365.944985 544630.666985,142365.333985 544632.397985,142363.153985 544636.188985,142360.091985 544639.631985,142356.569985 544642.705985,142354.358985 544644.404985,142350.648985 544646.900985,142346.683985 544649.103985,142342.551985 544651.012985,142338.337985 544652.626985,142329.120985 544655.754985,142324.613985 544656.911985,142320.187985 544657.470985,142316.566985 544657.265985,142312.451985 544656.082985,142308.414985 544654.079985,142304.498985 544651.523985,142300.747985 544648.684985,142297.537985 544646.100985,142294.429985 544642.836985,142289.020985 544635.306985,142285.887985 544632.242985,142284.879985 544631.587985,142280.948985 544629.665985,142276.699985 544628.156985,142272.248985 544626.990985,142267.710985 544626.098985,142261.157985 544625.144985,142256.637985 544625.059985,142252.097985 544625.862985,142250.010985 544626.622985,142241.865985 544627.069985,142232.842985 544626.961985,142228.189985 544626.652985,142219.256985 544625.578985,142210.379985 544623.978985,142201.928985 544621.981985,142189.033985 544617.937985,142173.175985 544613.480985,142168.754985 544612.685985,142164.493985 544612.651985,142159.712985 544614.117985,142155.595985 544616.806985,142152.724985 544620.553985,142151.801985 544624.611985,142151.792985 544629.186985,142152.818985 544644.306985,142153.735985 544653.425985,142153.819985 544657.896985,142153.318985 544662.241985,142152.623985 544664.931985,142151.012985 544669.139985,142148.905985 544673.227985,142146.451985 544677.131985,142143.800985 544680.784985,142141.760985 544683.177985,142138.544985 544686.291985,142127.599985 544695.435985,142117.560985 544704.466985,142109.963985 544710.975985,142099.369985 544719.346985,142082.249985 544732.007985,142078.514985 544734.516985,142074.669985 544736.825985,142070.918985 544738.762985,142040.406985 544751.752985,142036.369985 544753.717985,142032.516985 544755.964985,142027.531985 544759.240985,142023.678985 544761.987985,142020.080985 544764.951985,142016.968985 544768.159985,142014.575985 544771.637985,142013.343985 544775.609985,142013.207985 544780.181985,142013.704985 544784.959985,142014.681985 544791.876985,142015.536985 544796.277985,142019.864985 544813.795985,142022.666985 544828.695985,142025.800985 544848.146985,142027.072985 544858.744985,142027.856985 544867.714985,142028.179985 544873.963985,142028.369985 544882.972985,142028.035985 544892.629985,142027.589985 544897.101985,142025.218985 544914.955985,142024.641985 544922.434985,142023.963985 544936.376985,142023.670985 544943.302985,142023.091985 544947.790985,142020.706985 544959.048985,142019.522985 544963.574985,142017.933985 544967.794985,142015.721985 544971.446985,142013.338985 544973.773985,142009.459985 544976.166985,142005.088985 544977.998985,142000.003985 544979.579985,141995.653985 544980.532985,141991.200985 544981.173985,141977.392985 544982.301985,141968.411985 544982.825985,141939.455985 544983.523985,141916.541985 544984.122985,141907.570985 544984.733985,141899.202985 544985.735985,141890.317985 544987.263985,141885.942985 544988.266985,141877.874985 544990.674985,141873.665985 544992.331985,141869.642985 544994.298985,141866.567985 544996.096985,141862.799985 544998.647985,141859.259985 545001.498985,141855.939985 545004.762985,141853.094985 545008.215985,141850.524985 545011.948985,141848.222985 545015.872985,141843.299985 545026.123985,141841.513985 545030.329985,141839.937985 545034.597985,141838.672985 545038.912985,141837.817985 545043.263985,141837.564985 545045.479985,141837.372985 545049.948985,141837.531985 545054.478985,141837.971985 545059.024985,141839.581985 545068.905985,141840.655985 545073.249985,141842.000985 545077.543985,141849.605985 545098.429985,141852.868985 545106.820985,141856.108985 545114.396985,141863.822985 545130.663985,141870.756985 545147.135985,141873.752985 545155.384985,141879.091985 545172.579985,141883.341985 545185.112985,141884.625985 545189.420985,141885.627985 545193.781985,141886.145985 545197.442985,141886.449985 545201.927985,141886.736985 545210.964985,141887.107985 545215.451985,141888.688985 545225.889985,141890.837985 545235.495985,141892.625985 545240.137985,141895.222985 545246.128985,141896.344985 545249.128985,141899.344985 545249.585985,141901.987985 545249.987985,141910.946985 545254.647985,141922.303985 545260.209985,141934.615985 545265.751985,141949.278985 545271.886985,141952.650985 545273.232985,141953.085985 545270.082985,141953.697985 545260.435985,141955.736985 545245.635985,141956.724985 545241.274985,141957.339985 545239.311985,141959.039985 545235.186985,141961.133985 545231.187985,141963.487985 545227.299985,141969.128985 545218.902985,141971.839985 545215.291985,141974.698985 545211.797985,141977.702985 545208.448985,141981.598985 545204.640985,142003.749985 545186.021985,142007.106985 545183.020985,142010.279985 545179.861985,142011.503985 545178.509985,142014.209985 545174.939985,142021.256985 545163.293985,142023.970985 545159.756985,142027.727985 545156.132985,142031.253985 545153.355985,142042.379985 545145.535985,142054.026985 545136.633985,142060.975985 545130.928985,142064.714985 545127.423985,142070.881985 545120.853985,142082.306985 545108.149985,142087.613985 545102.034985,142096.113985 545091.529985,142099.094985 545088.167985,142102.615985 545084.656985,142116.917985 545071.592985,142126.193985 545061.774985,142132.719985 545055.619985,142139.502985 545049.705985,142152.899985 545038.492985,142163.689985 545030.315985,142167.166985 545027.473985,142169.362985 545025.434985,142175.735985 545018.911985,142178.744985 545015.461985,142181.470985 545011.872985,142183.788985 545008.130985,142185.713985 545003.380985,142186.467985 544998.647985,142185.842985 544994.279985,142183.834985 544990.319985,142181.236985 544986.676985,142178.209985 544983.168985,142171.763985 544976.505985,142168.169985 544973.241985,142160.932985 544967.826985,142150.992985 544959.115985,142147.610985 544955.911985,142144.697985 544952.514985,142142.553985 544948.835985,142141.448985 544944.453985,142141.366985 544939.973985,142142.555985 544927.576985,142143.282985 544922.932985,142144.283985 544918.248985,142144.317985 544913.913985,142143.855985 544912.514985,142141.673985 544908.912985,142138.777985 544905.543985,142135.430985 544902.337985,142124.215985 544892.360985,142113.700985 544883.804985,142110.516985 544880.674985,142107.108985 544876.724985,142104.234985 544873.018985,142101.700985 544869.152985,142099.737985 544865.197985,142099.013985 544863.104985,142098.927985 544858.542985,142100.632985 544853.979985,142102.038985 544852.214985,142105.407985 544849.594985,142109.303985 544847.361985,142113.516985 544845.413985,142125.369985 544840.695985,142129.650985 544839.159985,142138.320985 544836.494985,142142.650985 544835.425985)) + MULTIPOLYGON(((141915.20707389 545059.387655348,141919.801422452 545072.005349505,141922.317819047 545078.476414118,141924.497039105 545083.5720225,141931.58949003 545098.528322628,141932.948007704 545101.565338362,141939.882007704 545118.037338362,141941.251466939 545121.532703646,141944.247466939 545129.781703646,141945.379704287 545133.145086525,141946.3559021 545136.289068806,141953.641588396 545130.165092772,141957.089854983 545124.466424874,141961.755195593 545117.637254309,141964.469195593 545114.100254309,141971.902043368 545105.777124706,141975.659043368 545102.153124706,141981.323503868 545097.212495093,141984.849503868 545094.435495093,141988.126685407 545091.996095579,141998.026564897 545085.037884397,142007.445824641 545077.838584126,142011.481024278 545074.525760133,142011.672439934 545074.346323954,142015.650983665 545070.107791068,142026.098161322 545058.491078161,142030.123193498 545053.85322782,142036.276326015 545046.248679928,142034.080027084 545047.169206041,142027.356134783 545049.617237147,142022.271134783 545051.198237147,142016.054354808 545052.84242851,142011.704354808 545053.79542851,142006.339933412 545054.767818512,142001.886933412 545055.408818512,141997.307525709 545055.92497269,141983.499525709 545057.05297269,141981.761460455 545057.174653059,141972.780460455 545057.698653059,141970.219375418 545057.804204103,141941.339643255 545058.500365626,141920.0716525 545059.05633693,141915.20707389 545059.387655348)),((142293.528899252 544988.140168692,142294.601996184 544987.501777305,142302.137667721 544982.654447309,142315.330088769 544973.24530585,142317.708599738 544971.616934636,142331.800599738 544962.361934636,142335.315689827 544960.189567857,142344.618689827 544954.788567857,142350.044243235 544951.928649475,142354.095243235 544950.000649475,142358.937068202 544947.901878751,142366.937744911 544944.76338641,142385.89759784 544937.079520943,142395.719750516 544932.679151927,142400.441873082 544930.349833872,142401.383459124 544929.833071966,142406.6210572 544926.62519655,142411.537774632 544923.415397158,142417.71510139 544913.944561111,142420.94010139 544909.840561111,142430.748006338 544899.541762468,142434.142006338 544896.595762468,142435.850811608 544895.156577415,142442.412433986 544889.795267093,142444.49999699 544886.911016326,142448.144051661 544882.271951045,142451.044051661 544878.864951045,142458.695997856 544871.097938249,142461.294997856 544868.817938249,142470.134593455 544862.150512483,142473.842593455 544859.761512483,142480.427575735 544855.976426197,142484.421575735 544853.942426197,142489.150076298 544851.738001417,142493.336076298 544849.961001417,142496.826705207 544848.581227778,142511.506705207 544843.199227778,142514.871735859 544842.055231706,142523.461735859 544839.360231706,142525.522241398 544838.746075403,142534.194241398 544836.296075403,142536.004975022 544835.808868122,142551.475975022 544831.852868122,142553.240283912 544831.424409705,142591.914597139 544822.526741457,142598.275411491 544820.886724263,142602.704241198 544819.56048906,142609.292780478 544817.391524059,142615.583028111 544815.122934514,142618.279611019 544814.046641119,142629.45972981 544809.13013732,142631.782307416 544808.154985648,142635.957307416 544806.483985648,142639.000194615 544805.341955696,142647.786194615 544802.259955696,142650.862354779 544801.254874545,142659.482354779 544798.642874545,142662.638869661 544797.761220477,142669.973869661 544795.884220477,142673.205218145 544795.133066603,142686.423218145 544792.367066603,142687.75030488 544792.101834821,142698.39630488 544790.073834821,142699.656984019 544789.844824773,142722.099112074 544785.965804094,142733.29544748 544783.954693204,142742.05873277 544781.922771676,142754.323614283 544778.786704663,142756.030972713 544778.371387876,142775.118972713 544773.964387876,142777.273451963 544773.500199454,142820.991420451 544764.751150994,142837.522686446 544760.894948819,142844.015926493 544759.102611734,142844.917722818 544758.79792222,142856.218794477 544754.493944632,142862.453241526 544752.427321221,142870.586241526 544750.121321221,142875.768629606 544748.849245243,142884.617629605 544747.008245243,142891.189843383 544745.942777802,142898.301843383 544745.111777802,142904.543626015 544744.64541731,142909.018626015 544744.49841731,142913.016385389 544744.473703009,142917.509385389 544744.565703009,142920.324904418 544744.676294693,142934.674637347 544745.510159451,142951.608031998 544746.00958361,142954.88878603 544746.178321099,142959.36978603 544746.507321098,142963.711087962 544746.953378548,142973.246087962 544748.214378548,142976.745416005 544748.761522577,143008.170847153 544754.438302843,143008.88998273 544754.51936845,143021.086540262 544755.473370056,143024.601737995 544755.83181325,143030.442737995 544756.56681325,143035.06301864 544757.295205003,143043.91001864 544758.974205003,143047.065941417 544759.643768134,143051.457941418 544760.674768134,143054.738751825 544761.523564261,143062.852751825 544763.819564261,143067.512244981 544765.303734333,143071.745244981 544766.805734333,143075.849809935 544768.399302906,143086.996807532 544773.108079562,143087.534249256 544773.311425527,143089.290648579 544773.84542239,143090.815558434 544774.236272392,143107.033443497 544777.814719857,143118.197003623 544780.058732056,143128.554297917 544781.738142783,143139.336028988 544783.109031866,143155.49321177 544784.379932768,143159.259616953 544784.772085376,143168.171616953 544785.928085376,143172.417029432 544786.602995092,143183.484514979 544788.689249054,143192.757948937 544779.743577493,143204.458134003 544772.068508402,143207.452134003 544770.482508402,143217.877333406 544765.935907155,143228.870152028 544763.017979079,143233.093152028 544762.233979079,143243.749216234 544761.035368472,143248.714216234 544760.834368472,143254.046196302 544760.808205104,143259.265196302 544760.968205104,143261.486708783 544761.06929489,143267.979708783 544761.46129489,143273.365665557 544761.982012954,143277.793665557 544762.572012954,143286.575211331 544764.280368101,143288.189141126 544764.695595339,143290.978852032 544763.072253793,143293.057985348 544761.906229274,143304.973985348 544755.470229274,143306.958931092 544754.43608835,143315.965931092 544749.91308835,143320.623980386 544747.770101801,143324.766980386 544746.033101801,143328.238303539 544744.678091384,143332.286621343 544743.212671752,143331.143833831 544736.493747471,143330.870339244 544734.763796825,143329.055339244 544722.344796825,143328.854637586 544720.869286613,143325.924637586 544697.601286613,143325.764871004 544696.23097339,143324.324871004 544682.80797339,143324.122032336 544680.613710979,143322.960032336 544665.647710979,143322.826631958 544663.548552757,143322.182631958 544650.533552757,143322.117601971 544648.824943242,143321.877601971 544639.818943242,143321.867525705 544636.245919223,143321.955512321 544632.05717934,143321.77043356 544623.714398257,143321.835470129 544618.513217395,143322.062470129 544613.706217395,143325.292360964 544595.19794376,143326.484360964 544591.32194376,143331.729639817 544578.575059709,143339.219112454 544567.003378636,143340.243112454 544565.701378636,143353.146702893 544552.866696871,143356.357813689 544550.944227443,143360.724831274 544538.647255457,143361.729831274 544536.667255457,143369.036727648 544525.046930776,143378.339104196 544514.952948864,143378.62159647 544514.697818407,143378.155226847 544510.94165225,143374.102410185 544499.277113056,143373.007822462 544495.79929448,143372.379651765 544495.697483851,143371.381974607 544495.588885555,143357.48234826 544494.649991326,143321.795908582 544493.464324709,143319.758089386 544493.486147736,143312.228365485 544493.914767793,143305.455111006 544493.993943295,143300.977111006 544493.843943295,143289.193680868 544492.511203977,143284.954680868 544491.688203977,143277.00659789 544489.158340983,143276.426513723 544492.170388535,143269.854826429 544528.086878837,143262.821219905 544569.56192616,143261.774448627 544574.656037193,143260.721448627 544579.009037193,143259.680215806 544582.861773835,143256.522215806 544593.422773835,143253.23631489 544602.318708031,143251.34831489 544606.579708031,143242.008489251 544622.205107828,143239.454489251 544625.493107828,143227.30524964 544637.866099411,143212.639192566 544647.118218831,143208.199192566 544649.246218831,143196.474866603 544653.702425409,143184.171866906 544656.142465323,143179.675866906 544656.648465323,143170.088599017 544657.109394209,143154.457599017 544656.859394209,143151.617868051 544656.760142918,143133.53063217 544655.784641096,143121.290168068 544655.570511698,143117.660703231 544655.419032874,143113.177703231 544655.123032874,143107.001712981 544654.457450287,143102.611712981 544653.799450287,143095.331388678 544652.336502036,143090.549388678 544651.126502036,143082.051072215 544648.429483166,143077.618072215 544646.726483166,143064.106773636 544639.899296896,143060.325773636 544637.481296896,143047.050786815 544626.672758007,143045.727786815 544625.316758007,143036.688110558 544614.062347654,143034.335110558 544610.473347654,143028.538883685 544599.852309461,143026.696883685 544595.714309461,143023.774244043 544588.04423974,143022.350244043 544583.58823974,143020.893544138 544578.392131302,143019.795544138 544573.853131302,143018.702925331 544568.485649998,143017.507925331 544561.277649998,143016.664393871 544554.004344462,143016.365393871 544549.523344462,143016.210125035 544545.822610653,143016.132125035 544541.297610653,143016.121841841 544539.646480492,143016.191841841 544525.002480492,143016.261381424 544522.112214787,143017.058381424 544503.730214787,143017.200830162 544501.332617029,143019.015830162 544477.292617029,143019.117369181 544476.079044054,143020.974562841 544455.859387166,143012.017779016 544452.276044828,143000.730737927 544445.227455997,142997.412737927 544442.720455997,142987.84396231 544434.105295537,142984.80596231 544430.856295537,142980.583823832 544425.930029936,142973.422760994 544416.803672518,142963.91211261 544406.161519492,142956.819698158 544398.788915133,142953.893144036 544398.712152108,142953.503590826 544398.72251716,142949.462514144 544399.061408476,142943.263353163 544400.055538669,142939.663325572 544400.908414059,142939.238212841 544401.067454297,142938.976680873 544401.182858452,142934.137324015 544403.643690941,142929.769658667 544406.096795439,142926.652207278 544408.069938545,142927.198338169 544417.889249693,142925.064366118 544432.647879358,142924.028366118 544436.823879358,142915.90414904 544456.750498323,142913.47414904 544460.887498323,142904.900927942 544472.683961512,142901.762927942 544476.219961512,142891.805707433 544485.566812929,142887.590707433 544488.855812929,142878.925179228 544494.69435923,142874.856179228 544497.04135923,142865.016904724 544501.797485204,142860.704904724 544503.506485204,142847.670574801 544507.348275577,142843.780574801 544508.120275577,142828.558456297 544509.552401342,142824.221456297 544509.516401342,142812.959042535 544508.571318809,142808.504042535 544507.856318809,142801.33147797 544506.342329521,142796.85147797 544505.165329521,142792.415950273 544503.852523393,142785.163950273 544501.460523393,142780.337883578 544499.683012291,142776.195883578 544497.994012292,142769.99669122 544495.130423081,142762.606498738 544491.299245068,142753.019033808 544492.117962512,142748.573033808 544492.206962512,142737.253736829 544491.576554482,142732.073736829 544490.892554482,142726.515986909 544489.944923928,142722.013986909 544489.001923928,142716.444900051 544487.610979171,142712.012900051 544486.321979171,142705.652238558 544484.158660047,142701.408238558 544482.499660047,142694.009414955 544479.134523818,142690.072414955 544477.079523818,142679.933733744 544470.709227259,142675.879733744 544467.685227259,142667.222163891 544460.129017531,142664.090163891 544456.941017531,142659.697634783 544452.059750107,142652.455628131 544443.266417622,142641.010698615 544431.023595985,142639.761894936 544429.654199985,142629.709894936 544418.354199985,142628.440663554 544416.889717001,142624.411663554 544412.117717001,142623.024567126 544410.425340713,142617.422567126 544403.383340713,142616.24429217 544401.862555039,142587.346543277 544363.559802966,142579.850312854 544354.229311137,142574.837307005 544348.538475379,142574.380798773 544348.074877161,142573.482496771 544347.244537906,142549.020471652 544356.242809497,142550.021077146 544359.147463265,142550.918398887 544361.399953959,142552.790926445 544365.346434407,142555.308399385 544369.926610982,142556.270059459 544371.516809313,142561.662565615 544379.462687748,142562.879228922 544381.069659085,142570.613225941 544390.565318825,142575.437699753 544397.198978876,142578.976699753 544402.670978876,142582.557765089 544408.83131752,142584.646765089 544412.85331752,142586.320905962 544416.287716222,142588.242905962 544420.499716222,142590.33468939 544425.566294951,142591.93868939 544429.893294952,142594.177100548 544436.995188031,142595.319100548 544441.364188031,142597.171443512 544450.977463505,142597.691443512 544455.114463505,142598.181470333 544468.251908484,142597.961470333 544472.606908484,142596.463179074 544484.202538685,142595.538179074 544488.617538685,142593.630550396 544495.886498114,142592.234550396 544500.293498114,142590.935346415 544504.046682994,142589.305346415 544508.380682994,142588.272299374 544510.979346306,142585.389299374 544517.855346306,142582.234135189 544524.457345184,142574.877841918 544538.096816766,142566.515543165 544556.479839147,142565.689384712 544558.235390683,142562.681384712 544564.418390683,142562.065802624 544565.6546654,142557.979802624 544573.6746654,142557.417031773 544574.757404369,142548.333031773 544591.892404369,142546.951454584 544594.382994845,142541.529148564 544603.734736294,142537.069563867 544611.85072305,142534.069380318 544616.841347935,142531.432380318 544620.865347935,142517.631297233 544636.598188404,142514.707297233 544639.115188404,142502.521690675 544647.656705143,142488.889548013 544653.624217341,142487.827548013 544653.968217341,142471.094086772 544657.34629167,142454.030188709 544656.852840409,142450.487188709 544656.342840409,142437.358589199 544653.203168585,142436.668505703 544655.630630956,142436.057505703 544657.361630956,142430.350660746 544669.785574852,142428.170660746 544673.576574852,142419.197109221 544686.030415834,142416.135109221 544689.473415834,142409.409371599 544696.136811157,142405.887371599 544699.210811157,142402.268389353 544702.175774301,142400.057389353 544703.874774301,142396.224336385 544706.632730849,142392.514336385 544709.128730849,142387.07501259 544712.461220768,142383.11001259 544714.664220768,142378.13946881 544717.188877144,142374.00746881 544719.097877144,142369.377380348 544721.051532704,142365.163380348 544722.665532704,142362.440763496 544723.64850335,142353.223763496 544726.77650335,142347.769688407 544728.399502076,142343.262688407 544729.556502076,142334.011762954 544731.32086733,142329.585762954 544731.87986733,142315.948708737 544732.351079396,142312.327708737 544732.146079396,142295.844939335 544729.346473507,142291.729939335 544728.163473507,142279.117488381 544723.267889072,142275.080488381 544721.264889072,142267.421421377 544716.88546041,142263.505421377 544714.32946041,142259.236675046 544711.326353663,142255.485675046 544708.487353663,142253.718508244 544707.107825706,142250.508508244 544704.523825706,142247.621056086 544701.867004341,142245.975822652 544701.957295237,142240.968343436 544702.064613072,142231.945343436 544701.956613072,142227.873273827 544701.797150336,142223.220273827 544701.488150336,142219.237330033 544701.116734362,142218.770797848 544701.060643959,142217.679033889 544703.500397184,142215.572033889 544707.588397184,142212.403307436 544713.141517084,142209.949307436 544717.045517084,142207.152428394 544721.18259421,142204.501428394 544724.835594209,142200.876344685 544729.440953974,142198.836344685 544731.833953974,142193.932660441 544737.058559252,142190.716660441 544740.172559252,142186.630675434 544743.848621242,142176.739173701 544752.112476139,142167.720757309 544760.225367705,142166.358606458 544761.421283697,142164.679487397 544762.859928684,142170.162971622 544764.26110987,142175.060971622 544766.00310987,142188.609375456 544772.411032792,142200.613171778 544781.384861211,142210.593018116 544792.566247069,142218.150393529 544805.50868886,142222.983512571 544819.695361583,142224.899376364 544834.559754896,142223.821479538 544849.508295329,142221.544108779 544857.668809516,142222.493621098 544859.640797719,142227.243951322 544872.326051932,142228.423951322 544876.625051932,142229.892583503 544883.079044115,142230.100737768 544884.225522696,142231.196159123 544886.044706521,142233.455159123 544889.945706521,142237.190809781 544897.302319979,142238.782809781 544900.917319979,142242.894833084 544912.915500558,142243.985833084 544917.269500558,142244.120402998 544918.028161309,142252.480830463 544925.766827503,142255.642471805 544928.871720914,142262.190471805 544935.693720914,142264.486464574 544938.196863015,142270.491464574 544945.048863015,142274.302826793 544949.770221228,142276.978826793 544953.374221228,142280.526715791 544958.598447604,142282.577715791 544961.910447604,142287.223684419 544970.654294399,142289.141684419 544974.922294399,142293.528899252 544988.140168692))) + + #19 Polygon - gid: 2519 + + POLYGON((142639.054985 546593.084985,142638.983985 546578.467985,142637.899985 546522.015985,142637.938985 546492.896985,142637.097985 546450.097985,142637.323985 546438.583985,142638.161985 546425.106985,142640.378985 546405.030985,142641.014985 546394.820985,142641.331985 546384.084985,142641.148985 546370.582985,142641.244985 546363.069985,142641.584985 546354.071985,142642.254985 546344.252985,142643.286985 546335.313985,142644.522985 546326.394985,142648.737985 546299.023985,142650.292985 546287.844985,142651.629985 546274.394985,142652.493985 546269.090985,142653.436985 546264.685985,142655.832985 546255.985985,142657.324985 546251.745985,142659.948985 546245.601985,142667.821985 546229.388985,142674.155985 546214.865985,142677.911985 546205.201985,142679.361985 546200.940985,142681.914985 546192.299985,142684.417985 546181.838985,142686.974985 546168.576985,142689.654985 546153.350985,142694.878985 546120.270985,142697.142985 546106.960985,142699.359985 546095.284985,142703.219985 546077.702985,142704.624985 546066.572985,142705.358985 546062.133985,142706.612985 546057.889985,142708.252985 546054.334985,142710.527985 546050.471985,142713.073985 546046.712985,142719.613985 546037.284985,142728.418985 546025.982985,142730.690985 546022.264985,142732.054985 546018.591985,142731.686985 546016.665985,142724.660985 546009.840985,142717.691985 546000.791985,142714.941985 545996.960985,142712.738985 545993.180985,142711.360985 545988.681985,142714.052985 545984.850985,142718.418985 545982.397985,142721.651985 545982.033985,142726.312985 545982.683985,142730.716985 545984.217985,142731.895985 545984.775985,142735.810985 545986.892985,142743.367985 545991.857985,142750.724985 545997.160985,142754.125985 545999.891985,142761.223985 546006.385985,142764.713985 546009.110985,142768.178985 546010.905985,142772.098985 546007.143985,142774.143985 546005.180985,142774.113985 545999.566985,142773.537985 545995.098985,142768.381985 545968.404985,142767.068985 545958.959985,142766.199985 545949.980985,142765.940985 545945.485985,142765.750985 545931.805985,142766.233985 545927.222985,142767.634985 545923.521985,142769.098985 545922.223985,142773.757985 545921.006985,142778.814985 545921.309985,142783.002985 545922.544985,142787.137985 545924.271985,142795.346985 545928.342985,142811.462985 545935.870985,142815.626985 545937.556985,142820.576985 545938.996985,142825.031985 545939.950985,142829.609985 545940.709985,142834.206985 545941.141985,142838.717985 545941.118985,142843.041985 545940.509985,142847.204985 545939.284985,142851.513985 545937.443985,142855.628985 545935.100985,142859.326985 545932.341985,142862.380985 545929.253985,142863.263985 545928.078985,142865.435985 545924.062985,142866.966985 545919.494985,142867.782985 545914.817985,142867.736985 545909.942985,142866.022985 545905.989985,142862.937985 545902.315985,142859.441985 545899.133985,142854.047985 545895.067985,142850.262985 545892.621985,142837.767985 545885.201985,142825.932985 545878.689985,142819.751985 545874.844985,142805.176985 545864.270985,142794.436985 545857.191985,142790.895985 545854.458985,142787.923985 545851.332985,142786.743985 545846.536985,142788.245985 545842.303985,142791.773985 545840.313985,142796.261985 545838.819985,142801.083985 545837.998985,142802.463985 545837.997985,142805.463985 545837.994985,142805.357985 545834.997985,142805.262985 545828.997985,142805.520985 545820.191985,142805.877985 545815.707985,142807.383985 545802.278985,142807.642985 545798.275985,142807.624985 545793.783985,142807.104985 545784.785985,142806.722985 545767.919985,142806.979985 545763.439985,142807.737985 545759.086985,142809.044985 545754.836985,142810.745985 545750.671985,142812.747985 545746.584985,142814.955985 545742.585985,142818.189985 545737.179985,142820.793985 545733.508985,142829.696985 545723.146985,142832.161985 545719.462985,142832.897985 545718.055985,142834.513985 545713.945985,142835.658985 545709.600985,142836.487985 545705.114985,142837.768985 545696.409985,142838.248985 545691.931985,142838.646985 545682.880985,142839.065985 545678.409985,142839.638985 545675.304985,142841.047985 545671.041985,142844.967985 545662.753985,142846.660985 545658.581985,142847.581985 545654.707985,142847.927985 545650.295985,142847.867985 545645.793985,142847.478985 545641.250985,142846.840985 545636.716985,142845.620985 545630.188985,142844.442985 545625.866985,142839.491985 545613.185985,142838.170985 545608.906985,142836.982985 545602.039985,142836.453985 545597.426985,142836.195985 545592.787985,142836.317985 545588.225985,142836.932985 545583.845985,142837.506985 545581.601985,142839.204985 545577.594985,142841.653985 545573.762985,142844.599985 545570.136985,142850.556985 545564.008985,142855.814985 545562.041985,142856.880985 545561.642985,142856.292985 545557.919985,142855.390985 545553.820985,142854.135985 545549.506985,142852.244985 545544.563985,142850.361985 545540.478985,142844.125985 545527.977985,142834.606985 545507.539985,142826.544985 545491.433985,142821.485985 545479.737985,142819.843985 545475.499985,142818.480985 545471.212985,142817.540985 545466.871985,142817.213985 545464.155985,142817.030985 545459.662985,142817.207985 545455.117985,142817.660985 545450.581985,142818.485985 545445.117985,142819.662985 545440.740985,142822.757985 545432.078985,142823.990985 545427.764985,142824.559985 545422.879985,142823.987985 545418.543985,142822.645985 545414.208985,142819.284985 545405.255985,142813.283985 545388.284985,142808.968985 545375.562985,142806.315985 545366.954985,142804.586985 545358.943985,142803.925985 545354.485985,142803.102985 545345.493985,142802.904985 545340.751985,142802.834985 545331.720985,142803.009985 545327.199985,142803.393985 545322.710985,142804.037985 545318.278985,142805.452985 545311.744985,142806.650985 545307.380985,142809.573985 545298.818985,142811.266985 545294.665985,142813.004985 545291.210985,142815.400985 545287.398985,142820.519985 545279.931985,142826.842985 545268.466985,142829.338985 545264.782985,142832.164985 545262.098985,142833.230985 545261.695985,142835.992985 545262.345985,142846.160985 545258.387985,142854.318985 545254.575985,142858.403985 545252.356985,142869.987985 545245.401985,142875.644985 545242.347985,142912.309985 545224.049985,142926.307985 545216.705985,142951.656985 545202.846985,142972.226985 545191.088985,142985.020985 545184.003985,142989.016985 545181.876985,142993.087985 545179.977985,142997.011985 545178.519985,143001.320985 545177.379985,143005.734985 545176.563985,143019.196985 545174.781985,143029.936985 545172.947985,143038.782985 545171.290985,143053.861985 545168.157985,143058.239985 545167.099985,143064.886985 545165.078985,143073.421985 545161.808985,143077.597985 545159.899985,143081.563985 545157.748985,143085.208985 545155.311985,143088.708985 545151.406985,143090.492985 545147.010985,143090.813985 545144.727985,143089.978985 545140.305985,143088.118985 545135.725985,143086.667985 545131.314985,143086.751985 545128.175985,143088.720985 545124.505985,143091.965985 545121.090985,143095.880985 545118.148985,143099.492985 545116.076985,143103.605985 545114.680985,143108.081985 545114.016985,143112.694985 545113.606985,143117.223985 545112.973985,143130.923985 545110.673985,143135.304985 545109.618985,143139.420985 545108.092985,143140.758985 545107.421985,143144.429985 545105.021985,143147.844985 545102.071985,143151.027985 545098.743985,143154.002985 545095.206985,143156.794985 545091.631985,143159.329985 545087.702985,143165.032985 545075.706985,143169.544985 545068.380985,143174.812985 545061.053985,143177.619985 545057.534985,143179.712985 545055.221985,143186.158985 545048.939985,143193.007985 545043.061985,143196.559985 545040.305985,143204.126985 545034.852985,143207.925985 545032.379985,143211.823985 545030.116985,143215.833985 545028.136985,143220.506985 545026.334985,143224.814985 545025.059985,143229.211985 545023.991985,143247.739985 545020.064985,143271.248985 545015.903985,143300.088985 545011.067985,143319.233985 545008.037985,143322.181985 545007.660985,143320.621985 545004.756985,143318.426985 545000.669985,143317.771985 544996.915985,143316.818985 544987.902985,143316.483985 544978.913985,143318.127985 544975.428985,143320.969985 544971.163985,143325.529985 544961.287985,143327.718985 544957.410985,143330.469985 544955.005985,143333.411985 544952.432985,143330.469985 544950.953985,143324.550985 544948.182985,143312.064985 544943.041985,143303.953985 544939.926985,143290.772985 544935.169985,143255.834985 544921.723985,143240.383985 544916.255985,143231.802985 544913.548985,143223.892985 544911.297985,143215.153985 544909.116985,143210.750985 544908.213985,143206.364985 544907.516985,143192.930985 544906.053985,143187.453985 544905.270985,143183.055985 544904.302985,143178.713985 544903.106985,143172.673985 544900.844985,143164.258985 544899.268985,143136.152985 544894.663985,143127.654985 544893.030985,143118.870985 544891.059985,143108.925985 544888.514985,143090.565985 544883.345985,143073.319985 544878.131985,143068.474985 544876.994985,143064.055985 544876.187985,143059.601985 544875.538985,143050.639985 544874.541985,143041.819985 544873.776985,143028.327985 544873.125985,143023.847985 544872.745985,143018.942985 544872.112985,143000.433985 544869.180985,142987.018985 544867.640985,142978.053985 544866.860985,142970.405985 544866.438985,142944.598985 544865.635985,142935.601985 544865.579985,142927.194985 544865.844985,142918.206985 544866.397985,142911.314985 544867.017985,142902.373985 544868.047985,142889.004985 544869.952985,142864.821985 544874.363985,142848.911985 544876.576985,142844.480985 544877.334985,142838.073985 544878.661985,142829.326985 544880.811985,142819.324985 544883.870985,142800.796985 544890.606985,142773.388985 544901.131985,142760.875985 544906.196985,142750.977985 544910.668985,142742.913985 544914.664985,142737.069985 544917.874985,142724.981985 544924.919985,142713.020985 544931.285985,142709.136985 544933.547985,142705.137985 544936.250985,142701.645985 544939.051985,142695.074985 544945.218985,142680.742985 544959.330985,142671.103985 544969.088985,142662.768985 544973.041985,142652.842985 544978.358985,142641.271985 544985.338985,142634.830985 544989.779985,142627.829985 544995.416985,142602.075985 545017.695985,142591.628985 545026.268985,142584.723985 545031.405985,142577.151985 545036.249985,142563.479985 545044.293985,142523.221985 545068.752985,142513.631985 545074.114985,142504.669985 545078.768985,142449.282985 545105.186985,142429.396985 545115.264985,142420.658985 545120.011985,142411.075985 545125.488985,142395.834985 545135.064985,142387.294985 545140.246985,142363.037985 545154.362985,142356.402985 545157.748985,142344.050985 545163.201985,142339.898985 545164.937985,142325.684985 545170.528985,142317.212985 545173.561985,142303.543985 545177.834985,142294.845985 545180.144985,142285.745985 545182.081985,142259.033985 545187.070985,142250.228985 545188.919985,142245.783985 545190.007985,142229.466985 545194.445985,142212.023985 545198.894985,142204.533985 545201.039985,142191.663985 545205.131985,142180.193985 545209.385985,142171.855985 545212.806985,142165.722985 545215.687985,142161.756985 545217.791985,142154.012985 545222.384985,142140.577985 545231.018985,142133.147985 545236.100985,142115.719985 545248.557985,142102.333985 545258.662985,142094.400985 545265.020985,142087.591985 545270.906985,142078.153985 545279.664985,142065.304985 545292.272985,142061.463985 545295.538985,142058.168985 545298.695985,142057.175985 545300.454985,142056.463985 545305.537985,142057.721985 545310.009985,142062.115985 545310.976985,142066.520985 545310.561985,142076.187985 545308.856985,142080.192985 545308.520985,142089.203985 545308.646985,142098.195985 545309.362985,142102.054985 545309.894985,142106.458985 545310.741985,142110.825985 545311.824985,142130.830985 545317.813985,142152.372985 545324.883985,142164.840985 545328.945985,142177.742985 545332.933985,142189.838985 545336.203985,142198.607985 545338.303985,142203.018985 545339.200985,142207.448985 545339.939985,142216.683985 545340.889985,142225.692985 545341.292985,142234.270985 545341.415985,142251.656985 545340.922985,142291.579985 545340.124985,142300.184985 545339.602985,142309.174985 545338.801985,142313.628985 545338.177985,142321.257985 545336.558985,142325.609985 545335.368985,142334.166985 545332.488985,142341.767985 545329.286985,142345.811985 545327.301985,142349.793985 545325.177985,142357.421985 545320.738985,142361.221985 545318.337985,142368.622985 545313.204985,142382.291985 545302.859985,142389.289985 545297.184985,142392.681985 545294.234985,142397.402985 545289.625985,142406.329985 545279.577985,142412.737985 545273.259985,142419.291985 545267.086985,142429.992985 545257.467985,142440.308985 545248.759985,142441.612985 545247.714985,142446.109985 545245.262985,142446.338985 545248.994985,142446.199985 545253.571985,142445.640985 545258.488985,142444.609985 545263.241985,142443.857985 545265.512985,142442.012985 545269.516985,142439.699985 545273.376985,142437.056985 545277.103985,142431.323985 545284.203985,142427.990985 545287.884985,142424.744985 545290.998985,142418.000985 545297.012985,142412.625985 545302.081985,142402.843985 545311.388985,142393.281985 545319.861985,142386.339985 545325.596985,142383.071985 545328.078985,142375.719985 545333.293985,142368.108985 545338.125985,142364.187985 545340.316985,142359.849985 545342.473985,142355.742985 545344.307985,142347.378985 545347.681985,142328.337985 545354.886985,142316.107985 545358.925985,142307.469985 545361.469985,142299.454985 545363.561985,142286.275985 545366.538985,142276.143985 545368.318985,142267.208985 545369.345985,142248.532985 545370.511985,142219.161985 545371.185985,142203.715985 545371.164985,142199.205985 545371.018985,142194.733985 545370.628985,142188.003985 545369.399985,142183.639985 545368.295985,142179.306985 545367.017985,142170.748985 545364.137985,142165.665985 545362.193985,142149.185985 545354.923985,142140.126985 545351.437985,142131.579985 545348.557985,142127.240985 545347.464985,142122.210985 545346.513985,142117.678985 545345.875985,142113.128985 545345.532985,142108.629985 545345.592985,142105.518985 545345.933985,142101.168985 545346.844985,142096.841985 545348.164985,142092.578985 545349.812985,142088.422985 545351.707985,142084.414985 545353.767985,142080.190985 545356.407985,142076.653985 545359.241985,142073.333985 545362.356985,142067.997985 545368.049985,142062.268985 545375.019985,142056.981985 545382.321985,142054.076985 545386.833985,142049.685985 545394.701985,142044.122985 545405.734985,142038.521985 545418.021985,142023.289985 545452.443985,142017.545985 545464.659985,142014.837985 545469.791985,142005.253985 545486.555985,141988.171985 545519.134985,141977.076985 545541.374985,141973.492985 545549.619985,141971.566985 545555.125985,141970.306985 545559.444985,141965.979985 545576.568985,141962.918985 545589.719985,141960.635985 545598.142985,141955.825985 545613.701985,141951.434985 545626.601985,141950.141985 545630.915985,141948.934985 545636.962985,141948.704985 545641.499985,141949.123985 545646.141985,141950.244985 545650.549985,141951.056985 545652.499985,141953.342985 545656.425985,141956.355985 545660.122985,141959.910985 545663.037985,141962.039985 545664.112985,141966.156985 545665.317985,141970.561985 545665.989985,141975.146985 545666.276985,141979.804985 545666.327985,141986.719985 545666.292985,141991.278985 545665.940985,142000.535985 545664.247985,142005.024985 545663.753985,142009.282985 545664.058985,142010.548985 545664.383985,142014.485985 545666.064985,142018.279985 545668.475985,142021.898985 545671.414985,142025.310985 545674.677985,142028.480985 545678.062985,142030.032985 545679.813985,142032.714985 545683.400985,142034.950985 545687.417985,142036.704985 545691.669985,142037.858985 545695.616985,142038.718985 545700.121985,142039.089985 545704.851985,142038.672985 545709.406985,142037.721985 545712.350985,142035.592985 545716.121985,142032.841985 545719.745985,142029.638985 545723.145985,142026.149985 545726.245985,142022.543985 545728.968985,142018.629985 545731.298985,142014.527985 545733.136985,142010.234985 545734.681985,142001.549985 545737.362985,141997.219985 545738.546985,141983.982985 545741.310985,141979.609985 545742.365985,141969.681985 545745.217985,141965.394985 545746.710985,141961.337985 545748.534985,141959.777985 545749.404985,141955.834985 545752.283985,141952.703985 545755.965985,141951.963985 545758.506985,141952.751985 545762.553985,141954.762985 545766.861985,141957.561985 545770.888985,141959.982985 545773.460985,141963.411985 545776.158985,141967.224985 545778.496985,141971.289985 545780.580985,141985.212985 545786.896985,142000.150985 545792.668985,142008.343985 545796.429985,142016.334985 545800.578985,142022.250985 545804.295985,142046.437985 545822.371985,142052.748985 545826.682985,142056.617985 545828.963985,142064.603985 545833.129985,142070.922985 545836.248985,142083.286985 545841.758985,142087.295985 545843.769985,142092.594985 545847.153985,142096.154985 545849.929985,142099.578985 545852.884985,142104.802985 545857.704985,142111.182985 545864.060985,142117.370985 545870.603985,142120.682985 545874.288985,142142.202985 545899.659985,142165.737985 545927.016985,142172.879985 545934.881985,142182.253985 545944.598985,142186.214985 545948.917985,142202.883985 545967.751985,142211.384985 545977.403985,142225.593985 545992.922985,142238.418985 546008.296985,142250.230985 546021.879985,142259.725985 546033.693985,142269.350985 546046.564985,142278.361985 546059.624985,142298.361985 546090.836985,142309.584985 546107.625985,142341.472985 546156.462985,142356.456985 546178.710985,142366.251985 546193.812985,142376.758985 546209.595985,142385.270985 546221.615985,142387.634985 546225.427985,142392.256985 546234.208985,142394.167985 546238.328985,142395.821985 546242.520985,142397.123985 546246.785985,142398.005985 546251.510985,142398.388985 546255.983985,142399.224985 546283.243985,142399.697985 546292.227985,142400.941985 546305.891985,142401.545985 546310.351985,142403.237985 546319.045985,142405.506985 546327.777985,142408.303985 546336.338985,142410.310985 546341.331985,142418.668985 546358.807985,142424.819985 546375.738985,142426.239985 546379.047985,142430.073985 546387.302985,142432.170985 546391.346985,142434.510985 546395.185985,142437.187985 546398.706985,142440.399985 546401.785985,142444.036985 546404.428985,142451.744985 546409.342985,142464.608985 546418.886985,142474.778985 546427.251985,142481.544985 546433.292985,142484.647985 546436.537985,142486.778985 546439.146985,142489.315985 546442.826985,142491.601985 546446.723985,142493.656985 546450.776985,142496.820985 546458.222985,142498.276985 546462.456985,142499.496985 546466.785985,142503.472985 546484.744985,142506.642985 546502.467985,142509.386985 546520.985985,142510.336985 546525.363985,142510.840985 546527.218985,142512.350985 546531.439985,142518.183985 546543.729985,142519.807985 546547.903985,142520.462985 546550.160985,142521.369985 546554.533985,142521.977985 546559.000985,142522.344985 546563.520985,142522.608985 546574.349985,142522.280985 546578.872985,142521.351985 546583.333985,142520.542985 546585.903985,142517.219985 546589.425985,142514.512985 546586.565985,142511.824985 546583.070985,142509.171985 546579.181985,142498.742985 546562.904985,142494.176985 546555.142985,142490.162985 546547.838985,142484.052985 546535.786985,142480.174985 546526.738985,142475.650985 546514.011985,142472.138985 546503.403985,142468.153985 546490.503985,142463.423985 546476.206985,142461.831985 546471.994985,142459.996985 546467.916985,142456.960985 546462.582985,142454.434985 546458.849985,142451.705985 546455.233985,142445.862985 546448.329985,142442.104985 546444.394985,142428.626985 546432.421985,142418.075985 546422.798985,142411.737985 546416.428985,142408.499985 546412.663985,142405.701985 546409.137985,142400.377985 546401.856985,142392.425985 546390.103985,142387.707985 546382.429985,142380.885985 546369.973985,142378.896985 546365.914985,142377.106985 546361.786985,142375.751985 546358.075985,142374.507985 546353.777985,142373.513985 546349.392985,142370.442985 546330.776985,142368.191985 546312.914985,142365.265985 546293.674985,142363.190985 546283.190985,142361.213985 546274.351985,142359.975985 546270.025985,142358.455985 546265.821985,142356.394985 546261.322985,142354.263985 546257.363985,142351.945985 546253.483985,142345.725985 546243.935985,142343.151985 546240.252985,142316.274985 546206.202985,142310.966985 546198.936985,142307.937985 546194.352985,142294.814985 546172.627985,142290.329985 546164.823985,142287.005985 546158.186985,142275.101985 546130.634985,142271.989985 546124.071985,142267.678985 546116.171985,142261.093985 546105.453985,142258.578985 546101.726985,142253.279985 546094.447985,142243.571985 546081.658985,142236.439985 546072.727985,142230.606985 546065.874985,142222.765985 546057.102985,142213.581985 546047.200985,142208.292985 546041.857985,142201.735985 546035.693985,142192.537985 546027.675985,142181.948985 546019.303985,142169.155985 546009.780985,142160.153985 546003.473985,142152.572985 545998.626985,142143.089985 545992.867985,142131.365985 545986.142985,142125.570985 545982.482985,142118.447985 545976.998985,142096.890985 545958.860985,142084.848985 545949.882985,142068.162985 545938.270985,142059.174985 545932.384985,142042.151985 545921.873985,142030.906985 545914.386985,142023.584985 545909.156985,142018.526985 545905.193985,142015.089985 545902.283985,142007.356985 545895.188985,141997.952985 545885.504985,141978.411985 545863.813985,141970.581985 545855.994985,141963.934985 545849.915985,141957.167985 545844.315985,141949.939985 545838.921985,141943.509985 545834.697985,141935.696985 545830.192985,141927.585985 545826.245985,141920.060985 545823.365985,141915.730985 545822.001985,141911.337985 545820.882985,141906.909985 545820.080985,141900.193985 545819.531985,141895.681985 545819.481985,141891.151985 545819.648985,141882.152985 545820.550985,141875.954985 545821.657985,141871.598985 545822.759985,141835.260985 545833.483985,141828.631985 545835.167985,141819.750985 545837.019985,141815.382985 545838.106985,141811.145985 545839.501985,141805.788985 545841.924985,141801.806985 545844.098985,141797.952985 545846.526985,141794.270985 545849.180985,141790.809985 545852.035985,141787.313985 545855.407985,141784.315985 545858.759985,141778.763985 545865.928985,141772.511985 545874.919985,141762.709985 545891.608985,141755.482985 545903.062985,141753.252985 545906.957985,141749.978985 545913.877985,141748.666985 545918.387985,141748.768985 545921.000985,141751.304985 545924.740985,141755.513985 545927.302985,141756.711985 545927.533985,141760.888985 545927.181985,141765.244985 545925.936985,141769.700985 545924.397985,141774.175985 545923.166985,141780.031985 545922.354985,141784.630985 545921.853985,141789.209985 545921.625985,141793.664985 545921.852985,141796.571985 545922.361985,141800.821985 545923.878985,141804.901985 545926.294985,141808.334985 545929.381985,141809.624985 545931.053985,141811.674985 545934.859985,141813.219985 545939.084985,141814.397985 545943.557985,141815.347985 545948.104985,141816.698985 545956.095985,141817.630985 545969.607985,141818.087985 545974.081985,141819.103985 545980.957985,141820.067985 545985.702985,141821.975985 545989.546985,141822.773985 545990.339985,141826.310985 545992.454985,141830.547985 545993.897985,141842.968985 545996.468985,141847.509985 545997.140985,141856.800985 545997.868985,141861.005985 545998.965985,141862.625985 545999.768985,141866.109985 546002.355985,141869.292985 546005.647985,141872.113985 546009.408985,141874.515985 546013.402985,141875.853985 546016.074985,141877.440985 546020.184985,141878.605985 546024.508985,141879.480985 546028.971985,141881.195985 546039.871985,141881.790985 546044.335985,141882.519985 546053.351985,141883.053985 546057.813985,141883.746985 546061.327985,141884.939985 546065.652985,141886.382985 546069.934985,141888.045985 546074.147985,141889.902985 546078.266985,141893.383985 546084.869985,141898.220985 546092.482985,141903.490985 546099.802985,141906.468985 546103.551985,141909.433985 546106.937985,141929.822985 546129.167985,141938.792985 546139.272985,141943.052985 546143.689985,141949.747985 546149.692985,141964.954985 546162.315985,141973.916985 546169.572985,141988.206985 546180.523985,141994.103985 546185.427985,142000.869985 546191.374985,142006.985985 546197.194985,142010.101985 546200.434985,142022.076985 546213.883985,142031.699985 546223.931985,142040.717985 546233.530985,142049.725985 546243.589985,142058.221985 546253.642985,142066.572985 546264.239985,142071.784985 546271.572985,142087.501985 546294.715985,142092.258985 546301.453985,142100.397985 546312.229985,142108.079985 546321.503985,142125.060985 546340.016985,142133.543985 546348.938985,142143.242985 546358.327985,142163.998985 546377.305985,142173.789985 546386.599985,142191.111985 546403.493985,142204.870985 546417.738985,142212.229985 546425.909985,142226.183985 546442.081985,142233.915985 546451.275985,142245.281985 546465.234985,142249.865985 546470.532985,142260.724985 546482.422985,142276.240985 546498.862985,142283.837985 546507.332985,142289.597985 546514.245985,142305.035985 546533.383985,142311.432985 546541.561985,142319.545985 546552.352985,142325.631985 546560.748985,142331.597985 546569.324985,142352.206985 546601.281985,142358.484985 546610.374985,142363.806985 546617.636985,142370.309985 546626.052985,142375.995985 546633.031985,142381.874985 546639.851985,142388.050985 546646.513985,142394.445985 546652.851985,142406.112985 546663.869985,142412.850985 546669.837985,142418.240985 546674.127985,142443.384985 546692.509985,142450.371985 546698.165985,142457.310985 546704.523985,142460.526985 546707.694985,142466.605985 546714.329985,142470.300985 546719.095985,142475.145985 546726.700985,142483.032985 546740.420985,142501.498985 546775.196985,142510.156985 546792.354985,142514.053985 546800.467985,142518.478985 546810.391985,142522.272985 546820.003985,142525.007985 546828.570985,142528.781985 546841.541985,142532.004985 546851.396985,142534.853985 546859.935985,142539.055985 546873.966985,142541.391985 546882.669985,142542.843985 546889.440985,142543.557985 546893.873985,142544.550985 546902.823985,142545.871985 546922.835985,142546.360985 546938.371985,142546.544985 546956.386985,142546.739985 546960.876985,142547.362985 546967.620985,142548.653985 546976.536985,142550.299985 546985.393985,142551.436985 546990.406985,142554.966985 547003.451985,142555.834985 547007.422985,142557.197985 547016.310985,142558.683985 547029.428985,142559.219985 547035.983985,142568.219985 547036.121985,142572.728985 547036.024985,142581.714985 547035.501985,142591.573985 547035.199985,142595.869985 547034.180985,142597.816985 547032.770985,142600.066985 547029.423985,142601.774985 547025.338985,142603.042985 547020.781985,142603.973985 547016.020985,142604.933985 547009.293985,142605.238985 547004.860985,142605.137985 547000.377985,142603.950985 546984.754985,142603.663985 546971.251985,142603.742985 546962.255985,142604.252985 546952.983985,142607.153985 546916.365985,142607.517985 546898.350985,142607.740985 546893.863985,142608.381985 546887.057985,142608.975985 546882.544985,142609.858985 546878.111985,142611.177985 546873.849985,142613.093985 546869.621985,142615.298985 546865.709985,142622.403985 546854.127985,142624.843985 546849.369985,142627.944985 546842.588985,142629.542985 546838.792985,142626.214985 546838.483985,142622.666985 546837.753985,142618.842985 546836.097985,142616.469985 546834.131985,142613.916985 546830.574985,142611.830985 546826.313985,142607.626985 546815.755985,142606.081985 546811.513985,142604.771985 546807.169985,142603.734985 546802.764985,142603.006985 546798.336985,142602.576985 546792.392985,142602.860985 546774.337985,142602.460985 546761.163985,142602.555985 546756.672985,142603.363985 546746.339985,142604.441985 546737.393985,142606.371985 546725.978985,142608.360985 546717.192985,142611.192985 546706.280985,142617.884985 546683.219985,142621.661985 546670.257985,142624.159985 546661.045985,142628.692985 546643.625985,142629.847985 546640.178985,142633.051985 546631.746985,142634.346985 546627.450985,142636.677985 546616.584985,142638.067985 546607.674985,142638.672985 546602.065985,142639.054985 546593.084985)) + MULTIPOLYGON(((141877.641440651 545899.174621292,141877.705860312 545899.294221892,141882.11313423 545909.102129247,141883.65813423 545913.327129247,141885.747003497 545919.984419878,141886.925003497 545924.457419878,141887.812773449 545928.219509296,141888.066269442 545929.432821165,141894.314514948 545931.768203543,141895.934514948 545932.571203543,141907.337873997 545939.553978711,141910.821873997 545942.140978711,141920.028110834 545950.223119104,141923.211110834 545953.515119104,141929.291070623 545960.64543261,141932.112070623 545964.40643261,141936.386163135 545970.755561895,141938.788163135 545974.749561895,141941.577933878 545979.821814492,141942.915933878 545982.493814492,141945.819306375 545989.059178425,141947.406306375 545993.169178425,141949.858608213 546000.673761355,141951.023608213 546004.997761355,141952.204821483 546010.079457345,141953.079821483 546014.542457345,141953.569534375 546017.314933424,141955.284534375 546028.214933424,141955.538513823 546029.962978582,141956.133513823 546034.426978582,141956.547015579 546038.291492288,141957.068194351 546044.737236885,141957.152341479 546044.950412983,141957.325820875 546045.335206539,141958.314278321 546047.210180545,141960.358181963 546050.427099798,141963.321167297 546054.54266956,141964.077791321 546055.495182476,141965.289877034 546056.879372097,141985.095300574 546078.473102308,141985.912357827 546079.378606053,141993.853063383 546088.324072012,141995.14764048 546089.666360049,141998.751538347 546092.897756449,142012.507137526 546104.315980189,142020.334324491 546110.654062739,142033.82710591 546120.994122174,142036.162117405 546122.858525009,142042.059117405 546127.762525009,142043.617847653 546129.095246693,142050.383847653 546135.042246693,142052.571936283 546137.04351867,142058.687936283 546142.86351867,142061.043334899 546145.20649664,142064.159334899 546148.44649664,142066.115612895 546150.560407407,142077.185044474 546162.992372778,142085.866152691 546172.056882324,142086.361437562 546172.579033734,142095.379437562 546182.178033734,142096.589433311 546183.497183789,142105.597433311 546193.556183789,142107.009124291 546195.178809091,142115.505124291 546205.23180909,142117.128865006 546207.221228377,142125.479865006 546217.818228377,142127.704781975 546220.789974659,142132.916781975 546228.122974659,142133.82969278 546229.436845684,142149.16407951 546252.016454521,142152.833135573 546257.213448373,142159.230621321 546265.683691205,142164.630419358 546272.202530961,142179.877347538 546288.825013818,142186.825973671 546296.133235243,142194.640460695 546303.69795518,142214.608251982 546321.955265984,142215.633435038 546322.910364135,142225.424435038 546332.204364135,142226.155519359 546332.907799244,142243.477519359 546349.801799244,142245.057240492 546351.389192419,142258.816240492 546365.634192419,142260.60074664 546367.547415314,142267.95974664 546375.718415314,142269.0138111 546376.914096464,142282.9678111 546393.086096464,142283.584044577 546393.80949635,142291.316044577 546403.00349635,142292.07492763 546403.920548225,142302.732765765 546417.009828757,142305.924370984 546420.698555731,142315.690325376 546431.391731689,142330.784633982 546447.384927968,142332.07318498 546448.785390755,142339.67018498 546457.255390755,142341.457996817 546459.323254338,142347.217996817 546466.236254338,142347.972808202 546467.156920281,142363.410808202 546486.294920281,142364.109985813 546487.175085122,142370.506985813 546495.353085122,142371.380279621 546496.491796764,142379.493279621 546507.282796764,142380.270548754 546508.335632093,142386.356548754 546516.731632093,142387.199582483 546517.918727702,142393.165582483 546526.494727702,142394.627797238 546528.67719577,142409.419852589 546551.614248168,142404.98285813 546539.132013755,142404.451559945 546537.584042013,142400.939559945 546526.976042013,142400.480225918 546525.54043112,142396.715362473 546513.353043807,142392.913672221 546501.861972869,142390.068674641 546498.500366966,142389.992878233 546498.421000584,142378.817000124 546488.493059598,142378.086926955 546487.835905028,142367.535926955 546478.212905028,142364.909602613 546475.69828352,142358.571602613 546469.32828352,142354.874841929 546465.33279835,142351.636841929 546461.56779835,142349.749969065 546459.284105417,142346.951969065 546455.758105417,142345.160602985 546453.406947759,142339.836602985 546446.125947759,142338.260264246 546443.885413098,142330.308264246 546432.132413098,142328.535037117 546429.384346234,142323.817037117 546421.710346234,142321.927671973 546418.457063955,142315.105671973 546406.001063955,142313.537302447 546402.97633277,142311.548302447 546398.91733277,142310.087612695 546395.75238239,142308.297612695 546391.62438239,142306.656350972 546387.510673792,142305.301350972 546383.799673792,142303.708958315 546378.927898727,142302.464958315 546374.629898727,142301.363692554 546370.358469992,142300.369692554 546365.973469992,142299.514129585 546361.6004171,142296.443129585 546342.9844171,142296.031539165 546340.154443547,142293.900397619 546323.243537151,142291.369310869 546306.600300969,142289.797647252 546298.659423202,142288.737110427 546293.917852643,142288.308553476 546293.200509688,142283.551347786 546285.897969508,142282.92865993 546285.0069985,142257.404927525 546252.671429486,142255.713626811 546250.444615783,142250.405626811 546243.178615783,142248.3936298 546240.283994795,142245.3646298 546235.699994795,142243.741022598 546233.13120077,142230.618022598 546211.40620077,142229.788732319 546209.998915712,142225.303732319 546202.194915712,142223.270189057 546198.409454597,142219.946189057 546191.772454597,142218.157262755 546187.933471266,142206.773016008 546161.584448555,142205.134661009 546158.129267366,142202.766978579 546153.79043851,142198.029228403 546146.079093577,142197.157513648 546144.787292029,142193.087439501 546139.196412672,142184.390821916 546127.739774611,142178.566384699 546120.446161489,142174.083672624 546115.179570395,142167.308082543 546107.599481607,142159.422241281 546099.097129671,142155.940166917 546095.579503782,142151.391959633 546091.303897605,142144.611559904 546085.39334694,142136.289796977 546078.813896639,142125.237365832 546070.586561238,142118.417472551 546065.808393395,142112.902198665 546062.282139269,142104.960071982 546057.458907426,142094.048646282 546051.200007919,142091.316510646 546049.554652727,142085.521510646 546045.894652727,142079.817683837 546041.910549586,142072.694683837 546036.426549586,142070.161582194 546034.387340126,142050.293055847 546017.670017174,142041.002535456 546010.743402652,142026.189911721 546000.435109064,142018.921797166 545995.675415887,142002.7487187 545985.68920736,142000.586631141 545984.302515005,141989.341631141 545976.815515005,141987.314120471 545975.41699534,141979.992120471 545970.186995341,141977.328827015 545968.19398906,141972.270827015 545964.23098906,141970.064148329 545962.43342474,141966.627148329 545959.52342474,141964.385724723 545957.547698138,141956.652724723 545950.452698138,141953.551828905 545947.438436458,141944.147828905 545937.754436458,141942.230328359 545935.704442536,141924.014894557 545915.484854254,141918.751360697 545910.228714887,141914.688959696 545906.513454516,141910.802596742 545903.297312571,141906.884006543 545900.37300771,141904.155584242 545898.580650665,141900.513236871 545896.480461889,141897.716337661 545895.119426113,141896.158027917 545894.523023181,141892.501650467 545894.889514175,141891.765476277 545895.020999304,141891.418106088 545895.108878539,141877.641440651 545899.174621292)),((142522.12691348 546663.927344692,142525.878983767 546668.376621498,142529.573983767 546673.142621498,142533.555039396 546678.79803713,142538.400039396 546686.40303713,142538.732285602 546686.951715847,142539.164401741 546685.379234028,142545.856401741 546662.318234028,142545.879636654 546662.23833088,142547.048457102 546658.227144582,142546.952449096 546658.28076391,142532.429577358 546662.867582888,142522.12691348 546663.927344692)),((142563.173159694 546422.597768887,142563.306554182 546420.452473534,142563.615151908 546416.874751041,142565.635474263 546398.579761601,142566.083844628 546391.381866262,142566.316980211 546383.486145069,142566.155872751 546371.599407718,142566.155107006 546369.624724347,142566.251107006 546362.111724347,142566.298470045 546360.238042892,142566.638470045 546351.240042892,142566.758978497 546348.966228369,142567.428978497 546339.147228369,142567.749862505 546335.651431536,142568.781862505 546326.712431536,142568.996946745 546325.018830018,142570.232946745 546316.099830018,142570.396767822 546314.979910454,142574.528541313 546288.149359514,142575.805994456 546278.965662607,142576.99781354 546266.976158737,142577.605675477 546262.336726435,142578.469675477 546257.032726435,142579.155638085 546253.391084627,142580.098638085 546248.986084627,142581.12902275 546244.772205971,142583.52502275 546236.072205971,142585.085329672 546231.090819493,142586.577329672 546226.850819493,142588.352000116 546222.288772705,142590.976000116 546216.144772706,142592.48278958 546212.840536993,142599.687446415 546198.003867201,142604.801459699 546186.278130712,142607.426212139 546179.524774062,142607.868379264 546178.225412599,142609.43144457 546172.934990623,142611.089485303 546166.005400484,142613.216029802 546154.975978058,142615.676026847 546140.99989037,142620.79705315 546108.57195199,142620.94099002 546107.694304261,142623.20499002 546094.384304261,142623.459485201 546092.970207417,142625.676485201 546081.294207417,142626.104627492 546079.202304987,142629.236043552 546064.93894821,142630.215513188 546057.179875575,142630.629732904 546054.337680869,142631.363732904 546049.898680869,142633.433075569 546040.881607426,142634.687075569 546036.637607426,142638.510425367 546026.472770429,142640.150425367 546022.917770429,142642.480430748 546018.466523724,142641.027357955 546015.14555981,142639.649357955 546010.64655981,142636.858689639 545997.307991374,142636.527659805 545983.684641682,142638.667197159 545970.226275604,142643.206666449 545957.377211197,142649.996200436 545945.561650871,142652.688200436 545941.730650871,142663.754572282 545929.217634588,142677.316104529 545919.464429706,142681.682104529 545917.011429706,142693.426179898 545911.879893636,142696.091415905 545900.670772273,142697.492415905 545896.969772273,142705.889871009 545880.948038762,142715.414212808 545870.187671046,142715.095917569 545869.251483659,142713.915917569 545864.45548366,142711.827420359 545850.073698504,142712.551757998 545835.559123076,142716.061734334 545821.456725019,142717.563734334 545817.223725019,142723.160850488 545805.035697335,142730.839253034 545794.039431495,142732.423638146 545792.465251846,142732.229913007 545789.113061844,142732.124214445 545786.484233213,142731.742214445 545769.618233213,142731.846088725 545763.62459162,142732.103088725 545759.14459162,142733.091845837 545750.573637772,142733.849845837 545746.220637772,142736.051277823 545737.041214111,142737.358277823 545732.791214111,142739.612245794 545726.480420921,142741.313245794 545722.315420921,142743.392610534 545717.679213852,142745.394610534 545713.592213852,142747.091156317 545710.33335266,142749.299156317 545706.33435266,142750.593646243 545704.082876687,142753.827646243 545698.676876687,142757.017309888 545693.78754534,142759.621309888 545690.11654534,142763.473053418 545685.188206237,142763.719391077 545679.586190791,142763.97417557 545675.88301874,142764.39317557 545671.41201874,142765.311343032 545664.799224985,142765.884343032 545661.694224985,142768.427830273 545651.768387062,142769.836830273 545647.505387062,142771.122607947 545644.29092145,142769.627987702 545640.4627495,142767.829230953 545635.309494721,142766.508230953 545631.030494721,142764.268758247 545621.692167086,142763.080758247 545614.825167086,142762.471320045 545610.584678423,142761.942320045 545605.971678423,142761.569706987 545601.591706649,142761.311706987 545596.952706649,142761.222789487 545590.783002569,142761.344789487 545586.221002568,142762.046551039 545577.797461739,142762.661551039 545573.417461739,142764.272420575 545565.259904795,142764.846420575 545563.015904795,142768.451340483 545552.339073997,142770.149340483 545548.332073997,142770.531903099 545547.60567335,142767.066219406 545540.164593055,142759.477943146 545525.004982854,142757.708431209 545521.208619544,142752.649431209 545509.512619544,142751.551624273 545506.833836891,142749.909624273 545502.595836891,142748.369517131 545498.224430932,142747.006517131 545493.937430932,142745.17982804 545487.085615164,142744.23982804 545482.744615164,142743.078730528 545475.837064976,142742.751730528 545473.121064976,142742.276117764 545467.208206167,142742.093117764 545462.715206167,142742.087793899 545456.744405281,142742.264793899 545452.199405281,142742.579218995 545447.664979929,142743.032218995 545443.128979929,142743.501544877 545439.384778174,142744.326544877 545433.920778174,142746.058895095 545425.641931808,142746.440700134 545424.222084185,142742.574413931 545413.288115987,142742.258216828 545412.375237292,142737.943216828 545399.653237293,142737.295828758 545397.652771653,142734.642828758 545389.044771653,142733.004052335 545382.777770118,142731.275052335 545374.766770118,142730.39806615 545369.944181358,142729.73706615 545365.486181358,142729.2381615 545361.321847849,142728.4151615 545352.329847849,142728.168278677 545348.622848739,142727.970278677 545343.880848739,142727.90723787 545341.333298509,142727.83723787 545332.302298509,142727.891109263 545328.820038693,142728.066109263 545324.299038693,142728.282894716 545320.807647582,142728.666894716 545316.318647582,142729.173441485 545311.926230933,142729.817441485 545307.494230933,142730.73712472 545302.404984802,142732.15212472 545295.870984802,142733.128689816 545291.890606991,142734.326689816 545287.526606991,142735.673200147 545283.149723014,142738.596200148 545274.587723014,142740.12311926 545270.506845414,142741.81611926 545266.353845414,142744.266591111 545260.962168915,142746.004591111 545257.507168915,142749.506386092 545251.299483692,142751.902386092 545247.487483692,142753.541574429 545244.99128141,142756.602947282 545240.525707843,142761.168560631 545232.247239227,142764.752112802 545226.398902209,142767.248112802 545222.714902209,142777.68985613 545210.401301622,142780.51585613 545207.717301622,142792.291920722 545198.576243048,142805.643305572 545191.944865233,142806.709305572 545191.541865233,142819.295518248 545188.157532351,142820.513152317 545187.588566786,142821.183881269 545187.224222223,142831.382030154 545181.101283212,142834.358861949 545179.405276062,142840.015861949 545176.351276062,142842.154490622 545175.240706808,142878.139161168 545157.282231378,142890.894082364 545150.59040817,142915.054824443 545137.381061669,142935.007701726 545125.975814653,142935.893060169 545125.477660471,142948.687060169 545118.392660471,142949.781054504 545117.798643081,142953.777054504 545115.671643081,142957.311543596 545113.908131947,142961.382543596 545112.009131947,142966.965898379 545109.67409755,142970.889898379 545108.21609755,142977.829755463 545106.014522654,142982.138755463 545104.874522654,142987.687026808 545103.629627821,142992.101026808 545102.813627821,142995.892894258 545102.212567732,143007.959724981 545100.615249922,143016.719596759 545099.11938355,143018.248987647 545098.832903706,143020.662952108 545092.718408498,143022.631952108 545089.048408498,143034.351990238 545072.843499495,143037.596990238 545069.428499495,143046.909646142 545061.133280502,143050.824646142 545058.191280502,143058.561995631 545053.092908939,143062.173995631 545051.020908939,143075.387740364 545045.056303639,143079.500740364 545043.660303638,143092.60041902 545040.492862518,143097.07641902 545039.828862518,143099.449103684 545039.54767643,143101.172981562 545036.376335872,143105.684981562 545029.050335872,143108.650602588 545024.598863184,143113.918602588 545017.271863184,143116.181237624 545014.285211233,143118.988237624 545010.766211233,143122.008219297 545007.212708468,143124.101219297 545004.899708468,143127.367650635 545001.510105772,143133.813650635 544995.228105772,143137.31405608 544992.026252749,143144.16305608 544986.148252749,143147.031765936 544983.806712825,143150.583765936 544981.050712825,143152.71192648 544979.459064256,143158.471531126 544975.308525848,143152.488954432 544973.36863557,143151.290852891 544973.14424959,143124.026374215 544968.677127825,143121.99971731 544968.316446016,143113.50171731 544966.683446016,143111.234393337 544966.211338712,143102.450393337 544964.240338712,143100.277112445 544963.71855575,143090.332112445 544961.17355575,143088.600937133 544960.708422577,143070.240937133 544955.539422577,143068.861417602 544955.136734781,143053.880810284 544950.60763316,143053.161057972 544950.438725341,143051.908121465 544950.209913447,143050.045946936 544949.938572794,143043.252308486 544949.182797573,143036.770444719 544948.620595103,143024.713379063 544948.038831855,143021.989139953 544947.857631867,143017.509139953 544947.477631867,143014.248691155 544947.129138722,143009.343691155 544946.496138722,143007.208594828 544946.189324592,142990.285346989 544943.508522675,142979.490357485 544942.269291678,142972.736217625 544941.681647607,142967.173223031 544941.374693669,142943.1990916 544940.628724454,142936.550379826 544940.587340897,142930.68011804 544940.772379481,142923.870913325 544941.191325877,142918.967690534 544941.632416726,142911.957397573 544942.439999966,142901.028620542 544943.997283252,142878.280006558 544948.146650008,142875.154627162 544948.64881862,142860.404282733 544950.700516434,142858.413860331 544951.041012977,142854.636083924 544951.823455507,142849.26098959 544953.144645952,142843.121410858 544955.022367542,142827.055332059 544960.863316742,142800.904758162 544970.905450071,142790.397929902 544975.15839382,142783.07867129 544978.465296681,142777.633670208 544981.163489181,142774.012250742 544983.152667224,142762.746978398 544989.718173814,142760.219205152 544991.126769516,142749.907137747 544996.615158539,142747.05567702 544999.291304986,142733.734838985 545012.407664625,142724.461345351 545021.795645835,142714.509975712 545030.252045505,142703.242610105 545036.854084988,142696.565524036 545040.020794194,142689.943985687 545043.567713336,142681.965999583 545048.380291592,142679.697345719 545049.944503952,142675.897007748 545053.004424698,142651.14402007 545074.417479465,142649.653387682 545075.673487137,142639.206387682 545084.246487137,142636.395792489 545086.443173381,142629.490792489 545091.580173381,142625.140699585 545094.584218452,142617.568699585 545099.428218452,142615.184279799 545100.891647667,142601.969416944 545108.666688393,142562.164704472 545132.850290716,142559.823579005 545134.215365924,142550.233579005 545139.577365924,142548.196955126 545140.675204652,142539.234955126 545145.329204653,142536.958074485 545146.462997124,142482.383727063 545172.493385305,142474.761779489 545176.356102174,142482.406079363 545179.630725143,142494.771377493 545188.192249236,142505.179836294 545199.048780818,142513.212896402 545211.763742002,142518.547521275 545225.825821154,142520.969187589 545240.669534466,142521.198187589 545244.401534466,142521.304423008 545251.27162819,142521.165423008 545255.84862819,142520.719953948 545262.043952184,142520.160953948 545266.960952184,142518.93644197 545274.387915388,142517.90544197 545279.140915388,142515.808118995 545286.817941304,142515.056118995 545289.088941304,142511.974344504 545296.900268538,142510.129344504 545300.904268538,142506.347002978 545308.067395254,142504.034002978 545311.927395254,142500.87826191 545316.761526421,142498.23526191 545320.488526421,142495.409062494 545324.221232926,142489.676062494 545331.321232926,142486.919842444 545334.543836362,142483.586842444 545338.224836361,142479.912126979 545342.007023169,142476.666126979 545345.121023169,142474.661850396 545346.974931165,142468.697811973 545352.293396033,142464.203470399 545356.531873697,142454.541347208 545365.724817935,142452.584128009 545367.522024945,142443.022128009 545375.995024945,142441.04960024 545377.682871661,142434.107600241 545383.417871661,142431.701765061 545385.323937958,142428.433765061 545387.805937958,142426.46390746 545389.252026981,142419.11190746 545394.467026981,142415.918336539 545396.61138019,142408.307336539 545401.44338019,142404.693715607 545403.597791806,142400.772715607 545405.788791806,142397.580305623 545407.473168062,142393.242305623 545409.630168062,142390.430997905 545410.956111498,142386.323997905 545412.790111498,142383.800762344 545413.862000919,142375.436762344 545417.236000919,142373.921850366 545417.828091793,142354.880850366 545425.033091793,142351.857572356 545426.103759784,142339.627572356 545430.142759784,142337.296611591 545430.870700603,142328.658611591 545433.414700603,142326.411210068 545434.038779898,142318.396210068 545436.130779898,142315.980343142 545436.718751866,142302.801343142 545439.695751866,142299.253317627 545440.407712063,142289.121317627 545442.187712063,142284.708190846 545442.828409761,142275.773190846 545443.855409761,142271.882365889 545444.20024013,142253.206365889 545445.36624013,142250.25361744 545445.492245229,142220.88261744 545446.166245229,142219.060016947 545446.185915684,142203.614016947 545446.164915683,142201.2893183 545446.125716645,142196.7793183 545445.979716645,142192.690018858 545445.735396753,142188.218018858 545445.345396753,142181.260662092 545444.40885739,142174.530662092 545443.17985739,142169.610029942 545442.109423296,142165.246029942 545441.005423296,142162.422688099 545440.232250626,142158.089688099 545438.954250626,142155.385672467 545438.100829672,142146.827672467 545435.220829672,142143.957663255 545434.189573698,142138.874663255 545432.245573698,142135.395019772 545430.81372461,142120.566269665 545424.27215827,142119.500301508 545423.861962333,142118.932465517 545424.64621397,142118.416616784 545425.447422053,142115.945297515 545429.875647972,142111.755470398 545438.185258358,142106.938614375 545448.752069634,142091.875059809 545482.79340861,142091.161457398 545484.35735578,142085.417457398 545496.57335578,142083.87780535 545499.661265107,142081.16980535 545504.793265107,142079.948570884 545507.01578929,142071.042744047 545522.593552343,142054.94650702 545553.292493106,142045.071599927 545573.0868089,142043.375666967 545576.98830646,142043.012707197 545578.025926654,142042.687487035 545579.140709098,142038.867375782 545594.258708892,142038.702371777 545594.967616983,142039.999868991 545595.408297746,142043.936868991 545597.089297746,142054.71169485 545602.764967093,142058.50569485 545605.175967093,142065.560500836 545610.256118784,142069.179500836 545613.195118784,142073.735272826 545617.211670854,142077.147272826 545620.474670854,142080.054005554 545623.411995294,142083.224005554 545626.796995294,142084.607367054 545628.315329402,142086.159367054 545630.066329402,142090.099232188 545634.902450304,142092.781232188 545638.489450304,142098.246747572 545646.923757937,142100.482747572 545650.940757937,142104.283592674 545658.817469041,142106.037592674 545663.069469041,142108.691283741 545670.623066138,142109.845283741 545674.570066138,142111.528646058 545681.553520292,142112.388646058 545686.058520292,142113.489339174 545694.257333541,142113.860339174 545698.987333541,142113.777659688 545711.68947355,142113.360659688 545716.24447355,142110.041757597 545732.461231854,142109.090757597 545735.405231854,142103.032253541 545749.223316403,142100.903253541 545752.994316403,142095.330868988 545761.46936879,142093.646225074 545763.688616171,142098.550316565 545766.24689881,142102.797775984 545768.343405524,142113.816242033 545773.253770126,142116.914930893 545774.720479237,142120.923930893 545776.731479237,142127.662708786 545780.559799026,142132.961708786 545783.943799026,142138.714106076 545788.009867193,142142.274106076 545790.785867193,142145.156612386 545793.151111169,142148.580612386 545796.106111169,142150.437720568 545797.763401057,142155.661720568 545802.583401057,142157.735963031 545804.572134176,142164.115963031 545810.928134176,142165.673621997 545812.526816921,142171.861621997 545819.069816921,142173.151904 545820.469275711,142176.463904 545824.154275711,142177.878853344 545825.774733029,142199.229459399 545850.946026069,142221.937738805 545877.342049,142227.64281376 545883.624660946,142236.231104288 545892.527201918,142237.528325489 545893.90631015,142241.489325489 545898.22531015,142242.377659016 545899.211304892,142259.046659016 545918.045304892,142259.16655617 545918.181104611,142267.189603148 545927.29043874,142280.910275395 545942.276089567,142283.18600906 545944.879684065,142295.517998649 545959.662686634,142306.82496395 545972.664930935,142308.690271817 545974.895819744,142318.185271817 545986.709819744,142319.789204154 545988.778400791,142329.414204154 546001.649400791,142331.082877465 546003.971869915,142340.093877465 546017.031869915,142341.509990276 546019.161057488,142361.117748757 546049.760925374,142371.936714522 546065.945512046,142372.383540469 546066.621821419,142403.978907861 546115.010649734,142418.663908489 546136.81470032,142419.380778098 546137.899267784,142428.93169517 546152.624939006,142438.590926089 546167.134469946,142446.478024591 546178.272031506,142449.009493112 546182.088746497,142451.373493112 546185.900746497,142454.002540033 546190.494510525,142458.624540033 546199.275510525,142460.294366874 546202.650869281,142462.205366874 546206.770869281,142463.933813868 546210.802105003,142465.587813868 546214.994105003,142467.553964639 546220.622969176,142468.855964639 546224.887969176,142470.850503657 546233.023701517,142471.732503657 546237.748701517,142472.732551988 546245.112533143,142473.115551988 546249.585533143,142473.353740942 546253.684992485,142474.164517048 546280.122500448,142474.518945557 546286.854394166,142475.484082272 546297.455381361,142475.577554892 546298.145593092,142476.412377262 546302.435159099,142477.515627436 546306.680897539,142478.821771293 546310.678715758,142479.005469818 546311.135719612,142486.329182661 546326.449096693,142489.161147018 546333.19831702,142494.444598775 546347.741337944,142496.432724976 546349.110054672,142509.296724976 546358.654054672,142512.252083793 546360.963456642,142522.422083793 546369.328456642,142524.729839064 546371.306366957,142531.495839064 546377.347366957,142535.750742092 546381.459251793,142538.853742092 546384.704251793,142542.734440379 546389.093662879,142544.865440379 546391.702662879,142548.527244314 546396.577600794,142551.064244314 546400.257600794,142554.007091707 546404.878853121,142556.293091707 546408.775853121,142558.494817299 546412.807189941,142560.549817299 546416.860189941,142562.683639161 546421.445755647,142563.173159694 546422.597768887)),((142330.52667867 545247.979227065,142325.921467736 545249.418839789,142322.795018404 545250.322209481,142314.097018404 545252.632209481,142310.460457631 545253.50156783,142301.360457631 545255.43856783,142299.515629523 545255.807129216,142273.62732534 545260.642287556,142266.855884877 545262.064251601,142264.544640488 545262.629973512,142252.558719513 545265.889979474,142288.558655642 545265.17039555,142294.585171074 545264.804812626,142300.630922759 545264.266142203,142303.567647948 545263.642920539,142303.739033976 545263.596057171,142307.610458301 545262.293065229,142310.660293699 545261.008290469,142311.629833117 545260.532391423,142313.271351219 545259.656805173,142318.51700937 545256.60417322,142319.800897554 545255.792958607,142324.602377781 545252.462868348,142330.52667867 545247.979227065))) + + #20 Polygon - gid: 2520 + + POLYGON((158481.432985 510583.562985,158489.304985 510568.137985,158489.742985 510554.602985,158495.366985 510539.211985,158506.487985 510532.681985,158525.237985 510536.074985,158524.509985 510524.803985,158520.526985 510499.704985,158521.742985 510487.947985,158532.814985 510476.516985,158555.418985 510459.975985,158566.707985 510455.588985,158567.920985 510448.494985,158577.510985 510431.915985,158588.800985 510429.989985,158644.968985 510413.253985,158646.535985 510388.879985,158639.226985 510363.317985,158625.047985 510378.536985,158614.302985 510385.658985,158587.607985 510397.181985,158536.683985 510422.499985,158517.905985 510433.457985,158502.462985 510442.913985,158484.671985 510442.967985,158476.273985 510428.753985,158462.699985 510418.836985,158461.863985 510434.462985,158450.400985 510443.041985,158440.544985 510461.406985,158426.745985 510479.269985,158426.784985 510498.045985,158425.669985 510520.088985,158428.047985 510546.655985,158419.106985 510571.356985,158413.970985 510573.103985,158389.245985 510566.742985,158363.334985 510557.918985,158334.185985 510548.758985,158315.090985 510548.140985,158310.171985 510556.985985,158307.972985 510575.658985,158306.700985 510582.332985,158301.611985 510609.026985,158300.440985 510636.711985,158311.307985 510641.956985,158342.899985 510660.167985,158356.271985 510670.241985,158374.033985 510686.769985,158399.760985 510698.276985,158425.077985 510713.270985,158449.656985 510724.790985,158472.445985 510734.800985,158484.168985 510734.772985,158490.402985 510728.308985,158497.468985 510716.696985,158500.802985 510700.146985,158495.940985 510683.642985,158479.917985 510651.629985,158470.433985 510635.228985,158468.860985 510617.597985,158470.049985 510610.615985,158481.432985 510583.562985)) + POLYGON( EMPTY) + + #21 Polygon - gid: 2521 + + POLYGON((157869.315985 520433.637985,157856.178985 520399.216985,157834.269985 520383.765985,157837.129985 520350.383985,157849.976985 520324.750985,157884.267985 520315.565985,157928.572985 520281.754985,157969.435985 520288.428985,157995.223985 520278.692985,158043.757985 520253.692985,158088.001985 520238.144985,158131.710985 520233.176985,158161.789985 520246.081985,158177.706985 520240.052985,158184.062985 520208.456985,158173.722985 520194.194985,158141.933985 520199.529985,158117.247985 520208.894985,158058.927985 520207.808985,158035.018985 520213.752985,158019.448985 520203.796985,158016.808985 520180.093985,158007.024985 520150.917985,157971.159985 520128.594985,157943.413985 520100.672985,157936.868985 520070.503985,157895.009985 520063.382985,157866.038985 520063.004985,157831.988985 520058.373985,157815.198985 520060.788985,157814.667985 520062.114985,157805.376985 520079.736985,157805.131985 520111.664985,157793.919985 520111.222985,157780.766985 520105.771985,157761.185985 520162.929985,157768.122985 520191.771985,157788.795985 520203.076985,157809.040985 520190.281985,157822.093985 520173.832985,157849.686985 520173.862985,157865.312985 520195.645985,157879.132985 520236.462985,157885.168985 520252.260985,157867.794985 520266.033985,157813.882985 520286.000985,157795.021985 520258.542985,157778.258985 520254.263985,157744.848985 520244.603985,157712.168985 520249.566985,157684.754985 520260.299985,157665.400985 520256.359985,157651.387985 520249.849985,157648.472985 520254.899985,157628.126985 520277.906985,157632.442985 520323.400985,157637.148985 520356.136985,157613.676985 520373.009985,157611.837985 520410.654985,157615.005985 520437.710985,157641.030985 520432.938985,157674.459985 520440.319985,157700.786985 520441.225985,157736.859985 520437.355985,157780.029985 520431.763985,157800.420985 520439.994985,157800.694985 520446.629985,157801.243985 520459.900985,157790.056985 520479.632985,157799.422985 520483.141985,157816.313985 520487.074985,157838.367985 520462.690985,157869.315985 520433.637985)) + POLYGON((157709.297185021 520330.935932945,157711.385825117 520345.464985685,157712.092131453 520359.056710976,157711.360558615 520364.661253674,157728.04149239 520362.871682146,157761.152813139 520358.582627117,157762.403736042 520343.98182,157762.978712539 520340.826547721,157761.146281582 520339.328652421,157752.062634395 520328.465608525,157748.887917416 520323.843829254,157739.832907843 520321.225709156,157731.711564547 520322.459069829,157712.097710963 520330.138193288,157709.297185021 520330.935932945)) + + #22 Polygon - gid: 2522 + + POLYGON((153150.576985 520940.908985,153155.070985 520940.770985,153160.755985 520940.781985,153164.005985 520941.150985,153168.185985 520942.767985,153171.314985 520944.415985,153176.455985 520947.720985,153181.606985 520950.538985,153187.215985 520951.893985,153191.791985 520952.155985,153194.139985 520957.187985,153198.008985 520954.124985,153208.046985 520950.059985,153211.950985 520947.552985,153213.758985 520945.586985,153214.902985 520941.306985,153215.775985 520929.532985,153215.470985 520922.256985,153214.866985 520917.795985,153213.474985 520912.584985,153211.409985 520906.797985,153210.203985 520901.480985,153209.430985 520896.154985,153208.215985 520891.322985,153205.244985 520887.996985,153199.275985 520882.262985,153186.430985 520871.760985,153179.902985 520862.984985,153170.213985 520851.001985,153166.668985 520848.128985,153161.060985 520844.857985,153155.362985 520842.770985,153143.662985 520841.207985,153139.192985 520839.449985,153135.769985 520836.517985,153129.812985 520836.242985,153123.860985 520836.882985,153110.129985 520839.130985,153102.570985 520841.192985,153093.632985 520838.265985,153088.575985 520835.220985,153089.898985 520839.123985,153088.596985 520843.497985,153087.569985 520848.617985,153085.579985 520853.123985,153082.305985 520856.232985,153076.601985 520860.218985,153069.971985 520867.620985,153066.452985 520870.596985,153062.482985 520874.551985,153057.274985 520878.033985,153053.286985 520880.057985,153052.184985 520880.379985,153040.541985 520881.305985,153032.802985 520886.739985,153029.682985 520891.650985,153029.254985 520893.428985,153029.218985 520898.552985,153030.785985 520902.794985,153034.873985 520909.239985,153042.145985 520918.628985,153045.594985 520922.358985,153049.039985 520925.290985,153052.880985 520927.634985,153059.322985 520930.915985,153063.631985 520932.293985,153066.569985 520934.161985,153070.047985 520937.030985,153074.235985 520943.145985,153077.665985 520949.675985,153079.284985 520953.852985,153079.434985 520955.143985,153079.208985 520960.521985,153080.289985 520975.063985,153079.732985 520983.766985,153078.599985 520992.696985,153083.367985 520992.610985,153087.736985 520990.589985,153091.101985 520987.618985,153094.791985 520983.665985,153100.121985 520976.287985,153104.957985 520972.316985,153117.724985 520959.010985,153121.262985 520956.153985,153125.222985 520953.503985,153129.591985 520951.482985,153136.603985 520946.987985,153144.695985 520943.045985,153149.109985 520941.277985,153150.576985 520940.908985)) + POLYGON( EMPTY) + + #23 Polygon - gid: 2523 + + POLYGON((157261.821985 521212.042985,157255.517985 521158.904985,157227.447985 521110.819985,157193.480985 521080.159985,157154.275985 521056.383985,157110.994985 521055.200985,157075.666985 521042.824985,157053.089985 521016.601985,157057.673985 520992.362985,157039.358985 520960.816985,157034.486985 520926.714985,157029.615985 520902.356985,156995.512985 520877.997985,156966.282985 520873.125985,156937.052985 520873.125985,156907.821985 520863.382985,156873.719985 520843.895985,156855.757985 520822.219985,156849.459985 520818.621985,156836.865985 520811.424985,156793.392985 520777.048985,156766.039985 520737.460985,156728.760985 520722.977985,156710.216985 520732.313985,156697.880985 520740.090985,156693.336985 520756.434985,156668.342985 520768.289985,156629.440985 520764.303985,156604.591985 520776.688985,156602.502985 520800.105985,156616.097985 520861.121985,156609.482985 520899.994985,156586.751985 520928.161985,156566.844985 520935.459985,156563.162985 520961.757985,156557.828985 520985.666985,156555.414985 521022.078985,156562.430985 521063.373985,156560.713985 521082.827985,156553.817985 521111.533985,156555.075985 521118.090985,156559.312985 521117.477985,156590.563985 521112.953985,156645.119985 521099.542985,156681.977985 521069.587985,156745.810985 521043.788985,156797.577985 521042.609985,156839.811985 521059.742985,156900.802985 521071.653985,156963.644985 521085.826985,156980.767985 521096.550985,157015.014985 521117.998985,157045.450985 521159.433985,157060.450985 521187.893985,157099.503985 521191.189985,157138.274985 521174.733985,157191.026985 521169.054985,157232.239985 521201.560985,157257.694985 521216.582985,157261.821985 521212.042985)) + POLYGON((156631.095656882 521014.295354275,156634.676048003 521011.38552151,156643.851709985 521005.00170818,156653.874255463 521000.052523643,156717.707255463 520974.253523643,156730.658675837 520970.335547184,156744.103293312 520968.808428927,156795.870293312 520967.629428927,156811.101565777 520968.83930815,156825.771566439 520973.110906117,156861.294856822 520987.521583157,156915.178256666 520998.044532044,156917.303575206 520998.491627719,156978.458943209 521012.284235063,156979.041998034 521006.300667263,156974.497999612 520998.474023844,156968.502649166 520985.401119564,156965.112860065 520971.424196327,156961.82603665 520948.41778169,156960.075376293 520948.125985,156937.052985 520948.125985,156925.040076572 520947.157667617,156913.337363025 520944.277719163,156884.106363025 520934.534719163,156870.611358984 520928.501103151,156836.509358984 520909.014103151,156825.461831265 520901.308096946,156815.970836196 520891.750303639,156806.709938491 520880.574531528,156799.653894166 520876.542266084,156790.346650885 520870.254837571,156746.873650885 520835.878837571,156738.67880068 520828.345749364,156732.07152263 520820.156651212,156725.478303553 520824.198807514,156700.484303553 520836.053807514,156688.345254244 520840.513209791,156689.302884797 520844.811171234,156691.07391221 520859.221895786,156690.035101518 520873.703829102,156683.420101518 520912.576829102,156680.22196136 520924.914800881,156674.980833687 520936.533072215,156667.848085666 520947.096099894,156645.117085666 520975.263099894,156635.733933358 520984.95783639,156634.659225174 520985.727668446,156632.28366467 520996.375826696,156631.095656882 521014.295354275)) + + #24 Polygon - gid: 2524 + + POLYGON((157198.781985 521343.128985,157167.375985 521333.418985,157161.598985 521339.797985,157164.714985 521379.602985,157160.482985 521417.461985,157147.909985 521451.287985,157146.214985 521493.149985,157153.755985 521521.467985,157172.019985 521558.894985,157193.474985 521583.667985,157202.389985 521607.497985,157215.882985 521640.795985,157219.352985 521646.857985,157226.292985 521658.980985,157246.124985 521668.670985,157251.301985 521666.452985,157261.655985 521662.017985,157262.134985 521635.987985,157274.849985 521612.355985,157297.013985 521594.829985,157301.610985 521571.282985,157288.486985 521545.637985,157285.205985 521539.225985,157270.572985 521505.724985,157269.548985 521478.705985,157307.010985 521424.848985,157283.533985 521402.041985,157242.954985 521367.245985,157198.781985 521343.128985)) + POLYGON( EMPTY) + + #25 Polygon - gid: 2525 + + POLYGON((153125.509985 521860.224985,153129.708985 521849.726985,153136.136985 521836.144985,153138.731985 521832.043985,153142.336985 521823.841985,153148.967985 521810.226985,153150.370985 521805.542985,153153.006985 521792.564985,153154.402985 521777.197985,153153.618985 521769.895985,153152.742985 521765.487985,153148.961985 521758.774985,153144.279985 521752.074985,153143.056985 521750.968985,153139.230985 521748.538985,153134.217985 521746.356985,153114.663985 521739.427985,153109.650985 521737.245985,153103.330985 521736.862985,153086.671985 521737.137985,153084.952985 521736.685985,153066.181985 521728.868985,153061.034985 521727.319985,153055.740985 521726.155985,153040.417985 521725.642985,153034.931985 521727.163985,153030.266985 521728.048985,153025.756985 521727.483985,153021.504985 521725.925985,153021.401985 521740.811985,153025.620985 521762.422985,153028.396985 521782.239985,153029.073985 521790.804985,153029.015985 521795.534985,153024.560985 521796.077985,153020.647985 521795.895985,153016.211985 521796.659985,153013.478985 521797.356985,153008.572985 521799.235985,152992.029985 521803.995985,152987.552985 521804.245985,152977.157985 521803.766985,152967.736985 521805.261985,152960.981985 521805.362985,152944.483985 521808.310985,152939.425985 521807.940985,152933.133985 521808.486985,152926.828985 521808.580985,152920.548985 521809.576985,152911.549985 521809.710985,152907.098985 521810.416985,152899.442985 521812.148985,152887.438985 521818.195985,152882.959985 521819.165985,152878.228985 521818.958985,152873.052985 521819.313985,152871.421985 521823.741985,152865.942985 521823.030985,152861.490985 521823.806985,152857.111985 521826.478985,152855.683985 521831.547985,152854.440985 521846.644985,152854.133985 521857.957985,152854.309985 521860.213985,152855.839985 521866.961985,152865.036985 521874.045985,152874.713985 521882.075985,152878.858985 521884.969985,152882.944985 521886.866985,152892.209985 521888.583985,152896.537985 521889.822985,152903.363985 521892.428985,152907.024985 521893.185985,152911.504985 521893.661985,152917.130985 521892.998985,152921.564985 521892.074985,152925.843985 521890.738985,152929.677985 521888.711985,152935.486985 521884.287985,152943.654985 521875.835985,152946.532985 521872.376985,152949.115985 521867.824985,152953.949985 521863.238985,152957.006985 521859.582985,152964.207985 521853.973985,152968.477985 521851.612985,152980.671985 521851.556985,152998.660985 521850.384985,153009.055985 521850.742985,153026.285985 521852.273985,153035.705985 521854.344985,153040.268985 521856.533985,153046.370985 521860.369985,153050.401985 521863.561985,153053.601985 521866.714985,153054.745985 521870.862985,153054.699985 521875.367985,153050.734985 521877.589985,153036.784985 521883.448985,153031.563985 521884.752985,153019.770985 521884.870985,153013.815985 521886.226985,153007.358985 521888.514985,153003.322985 521890.484985,152999.693985 521893.183985,152996.722985 521896.450985,152996.967985 521901.236985,153000.089985 521904.523985,153001.564985 521905.515985,153009.179985 521909.352985,153018.336985 521912.795985,153031.944985 521916.685985,153035.712985 521918.129985,153039.695985 521920.180985,153040.907985 521921.185985,153047.115985 521928.193985,153060.087985 521944.758985,153063.400985 521947.809985,153066.383985 521949.961985,153070.274985 521952.220985,153072.724985 521953.203985,153077.118985 521954.381985,153081.603985 521954.758985,153084.286985 521954.026985,153088.286985 521951.951985,153089.550985 521950.525985,153093.585985 521943.221985,153095.608985 521939.204985,153100.205985 521925.595985,153104.279985 521909.286985,153106.388985 521903.838985,153108.425985 521895.684985,153111.363985 521887.516985,153114.763985 521879.792985,153125.509985 521860.224985)) + POLYGON( EMPTY) + + #26 Polygon - gid: 2526 + + POLYGON((157932.417985 522155.088985,157944.275985 522122.344985,157937.133985 522096.277985,157945.879985 522082.105985,157967.232985 522064.316985,157982.322985 522039.440985,158000.496985 522030.869985,158009.669985 522049.652985,158032.912985 522049.223985,158031.812985 522022.937985,158031.808985 521996.628985,158045.642985 521975.762985,158053.730985 521989.459985,158063.586985 522015.397985,158083.101985 522030.407985,158106.174985 522054.201985,158119.395985 522059.194985,158140.518985 522030.272985,158150.745985 522010.370985,158145.639985 521985.458985,158099.206985 521948.659985,158056.817985 521923.022985,158031.872985 521941.121985,157999.283985 521920.250985,157975.074985 521885.098985,157938.659985 521874.332985,157900.267985 521882.868985,157865.445985 521868.290985,157831.202985 521856.440985,157809.952985 521830.208985,157790.517985 521806.917985,157761.250985 521788.022985,157741.055985 521775.447985,157745.715985 521787.101985,157755.892985 521825.646985,157771.649985 521862.272985,157803.680985 521930.634985,157790.216985 521978.321985,157761.706985 521986.509985,157746.491985 522006.246985,157772.072985 522027.363985,157800.108985 522054.487985,157816.264985 522079.960985,157836.791985 522101.384985,157844.809985 522124.051985,157862.795985 522126.713985,157889.746985 522125.611985,157916.287985 522156.041985,157921.886985 522165.446985,157932.417985 522155.088985)) + POLYGON ((157858.57914185867 522008.3453885631, 157863.44444038192 522014.31809463963, 157875.59429040362 522033.47463893297, 157883.09502664296 522041.3031464203, 157889.22642461277 522032.95952942636, 157897.8743840681 522024.48253249004, 157909.60455873946 522014.7102252157, 157918.19873357913 522000.54265110625, 157926.94878182272 521988.85741432256, 157937.7967307582 521979.0885808789, 157946.77683321957 521973.72816572373, 157937.51531493766 521962.7907475608, 157930.72356280676 521952.92897421593, 157916.54584579886 521956.0812192769, 157901.29505984765 521957.86195211863, 157886.00122668233 521956.4995466379, 157875.2308944553 521953.23936733446, 157862.3952427896 521998.70087364636, 157858.57914185867 522008.3453885631)) + + #27 Polygon - gid: 2527 + + POLYGON((149946.529985 522862.341985,149966.481985 522827.471985,149971.102985 522795.593985,149955.120985 522773.194985,149939.535985 522777.700985,149919.295985 522795.320985,149896.669985 522804.718985,149890.945985 522795.728985,149898.974985 522765.579985,149920.144985 522727.754985,149913.346985 522702.453985,149883.812985 522706.570985,149875.847985 522712.141985,149848.867985 522733.237985,149847.635985 522734.278985,149844.408985 522737.640985,149838.341985 522744.662985,149834.815985 522747.431985,149824.076985 522739.434985,149816.408985 522734.720985,149812.125985 522731.061985,149802.392985 522719.891985,149798.360985 522714.476985,149788.169985 522702.133985,149784.674985 522696.954985,149783.454985 522694.846985,149781.555985 522690.771985,149780.739985 522687.972985,149780.149985 522683.502985,149780.341985 522679.629985,149782.374985 522664.239985,149783.390985 522660.945985,149785.909985 522654.333985,149795.392985 522633.032985,149790.732985 522630.377985,149788.450985 522629.815985,149783.947985 522629.324985,149779.954985 522629.236985,149763.488985 522630.011985,149759.275985 522628.393985,149754.474985 522624.634985,149751.188985 522621.536985,149746.287985 522615.463985,149744.142985 522613.104985,149740.146985 522609.133985,149736.579985 522606.158985,149729.751985 522601.390985,149726.308985 522598.550985,149724.513985 522596.066985,149722.709985 522591.906985,149718.527985 522593.569985,149708.661985 522598.397985,149706.262985 522599.786985,149703.001985 522602.886985,149699.606985 522606.922985,149697.587985 522611.774985,149695.862985 522616.877985,149695.505985 522618.594985,149695.224985 522623.072985,149695.263985 522627.591985,149695.661985 522632.426985,149694.473985 522637.230985,149693.005985 522640.325985,149689.515985 522643.252985,149684.312985 522644.206985,149680.293985 522644.052985,149676.063985 522642.545985,149670.784985 522639.861985,149661.685985 522633.920985,149656.545985 522630.804985,149652.902985 522628.165985,149645.682985 522622.646985,149640.918985 522618.527985,149634.442985 522612.273985,149630.501985 522609.470985,149628.581985 522608.498985,149624.066985 522606.761985,149622.208985 522606.930985,149618.814985 522609.527985,149615.790985 522613.190985,149614.293985 522615.264985,149612.288985 522619.274985,149611.210985 522622.320985,149608.321985 522633.178985,149608.059985 522634.774985,149607.991985 522646.548985,149608.575985 522654.849985,149610.186985 522665.048985,149611.456985 522683.114985,149612.528985 522687.482985,149614.559985 522694.254985,149615.501985 522696.106985,149618.647985 522699.565985,149620.744985 522700.686985,149625.134985 522700.457985,149632.636985 522698.591985,149637.449985 522697.223985,149639.247985 522696.603985,149643.376985 522694.800985,149645.312985 522693.777985,149650.006985 522690.545985,149656.345985 522685.250985,149661.382985 522680.526985,149666.521985 522677.267985,149670.359985 522674.578985,149674.725985 522673.240985,149679.179985 522672.528985,149684.103985 522674.538985,149686.519985 522678.573985,149687.938985 522682.812985,149688.390985 522687.254985,149688.214985 522693.094985,149687.852985 522697.577985,149687.255985 522702.043985,149686.243985 522707.382985,149684.070985 522716.888985,149682.707985 522721.337985,149682.734985 522723.346985,149684.410985 522727.516985,149689.127985 522735.746985,149690.970985 522739.883985,149691.645985 522744.652985,149686.699985 522813.572985,149681.925985 522845.160985,149688.863985 522854.293985,149701.543985 522856.177985,149715.246985 522845.580985,149731.486985 522843.349985,149755.832985 522836.089985,149821.720985 522854.503985,149835.820985 522867.489985,149866.684985 522900.071985,149876.926985 522910.894985,149904.293985 522940.758985,149925.071985 522967.911985,149942.329985 522987.487985,149953.714985 522987.343985,149958.169985 522985.691985,149957.918985 522959.085985,149944.105985 522944.060985,149933.546985 522923.664985,149934.447985 522897.200985,149946.529985 522862.341985)) + POLYGON( EMPTY) + + #28 Polygon - gid: 2528 + + POLYGON((149018.973985 523298.843985,149027.116985 523297.053985,149050.059985 523306.128985,149076.982985 523309.933985,149115.614985 523303.010985,149138.271985 523304.959985,149139.167985 523304.141985,149158.847985 523286.186985,149166.967985 523275.518985,149179.148985 523259.517985,149173.818985 523231.813985,149167.615985 523190.279985,149174.951985 523171.330985,149185.861985 523154.667985,149195.141985 523139.933985,149191.733985 523114.168985,149179.721985 523100.162985,149165.431985 523093.446985,149150.425985 523084.926985,149129.423985 523071.851985,149098.282985 523060.898985,149029.121985 523053.160985,148976.031985 523045.466985,148942.291985 523052.693985,148917.595985 523075.582985,148901.824985 523080.306985,148893.055985 523076.432985,148886.454985 523062.972985,148880.164985 523039.382985,148859.571985 523028.839985,148828.760985 523030.525985,148815.572985 523023.883985,148808.978985 523020.562985,148786.739985 522996.944985,148759.561985 522965.858985,148738.872985 522945.856985,148717.476985 522944.896985,148697.866985 522970.021985,148695.903985 522969.977985,148704.000985 522984.059985,148700.995985 523005.520985,148692.918985 523043.111985,148700.707985 523095.498985,148713.148985 523150.650985,148718.970985 523185.296985,148758.818985 523237.659985,148789.883985 523278.936985,148800.434985 523312.142985,148803.769985 523339.866985,148811.075985 523356.087985,148827.548985 523364.911985,148845.611985 523373.323985,148865.454985 523377.353985,148887.737985 523385.980985,148924.789985 523406.226985,148965.668985 523381.699985,148987.450985 523364.512985,148997.741985 523354.362985,149008.032985 523344.212985,149012.970985 523325.510985,149013.840985 523319.029985,149015.580985 523306.067985,149018.973985 523298.843985)) + POLYGON((148775.869980556 523087.862959271,148786.310671602 523134.147421339,148787.111961451 523138.222062501,148789.865944358 523154.610673249,148818.502518906 523192.24109267,148818.744164544 523192.560396791,148849.809164544 523233.837396791,148856.532562419 523244.542695822,148861.362459323 523256.225144291,148871.913459323 523289.431144291,148874.797171531 523302.720185688,148880.382311599 523303.854495746,148892.533152951 523307.412775256,148914.816152951 523316.039775256,148922.993522609 523319.837088612,148937.737582778 523308.203346892,148939.909113975 523306.06156848,148941.247736763 523296.089598028,148943.633232915 523284.889671328,148947.695961634 523274.183449523,148951.088961634 523266.959449523,148958.027601821 523255.134279242,148967.002982154 523244.769824229,148977.715158376 523236.212449607,148989.806145024 523229.748130485,149002.871878778 523225.592895075,149011.014878778 523223.802895075,149025.71461237 523222.06709714,149040.468968727 523223.252057311,149054.703261967 523227.311621095,149069.369014283 523233.112593168,149075.580815666 523233.990500691,149097.719711958 523230.023127037,149093.438673537 523201.358182694,149092.638110024 523188.458374701,149094.064168772 523175.612663174,149097.674500032 523163.202527946,149104.777682602 523144.854898924,149096.773874623 523139.87205018,149081.455489755 523134.484224822,149020.782728186 523127.695921746,149018.365082411 523127.38557019,148978.587395614 523121.620840068,148978.156201803 523121.713200402,148968.57836411 523130.590230162,148954.812334417 523140.697832278,148939.116564598 523147.429102875,148923.345564598 523152.153102875,148910.37689581 523154.81782194,148897.141731088 523155.160623073,148884.05250663 523153.170823854,148871.517110822 523148.910430707,148862.748110822 523145.036430707,148851.284582351 523138.723834414,148841.092845365 523130.514702052,148832.483202211 523120.658972668,148825.717786074 523109.456718366,148823.588688058 523105.115306566,148819.851506172 523104.994912661,148807.1123677 523102.333626439,148795.025066567 523097.510220515,148781.837066567 523090.868220515,148775.869980556 523087.862959271)) + + #29 Polygon - gid: 2529 + + POLYGON((166489.986985 524726.636985,166376.609985 524695.830985,166378.076985 524731.146985,166372.372985 524775.920985,166374.920985 524808.597985,166378.349985 524862.041985,166381.024985 524891.550985,166405.372985 524894.150985,166442.538985 524856.230985,166488.936985 524799.975985,166481.518985 524768.759985,166489.986985 524726.636985)) + POLYGON( EMPTY) + + #30 Polygon - gid: 2530 + + POLYGON((165889.593985 526270.470985,165805.380985 526135.686985,165716.140985 526213.946985,165715.046985 526215.272985,165666.137985 526274.538985,165628.837985 526322.818985,165601.443985 526328.382985,165602.962985 526339.012985,165604.480985 526357.234985,165631.029985 526379.970985,165679.641985 526437.375985,165710.443985 526485.694985,165719.290985 526538.574985,165726.370985 526574.918985,165757.470985 526592.793985,165821.282985 526618.710985,165829.798985 526578.755985,165848.131985 526528.820985,165848.301985 526502.670985,165846.277985 526476.475985,165868.778985 526437.395985,165879.115985 526419.443985,165895.576985 526384.512985,165905.738985 526349.287985,165898.707985 526305.446985,165893.362985 526284.934985,165889.593985 526270.470985)) + POLYGON((165703.241357534 526349.188222767,165736.877004846 526388.907928476,165742.884833191 526397.060452601,165773.686833191 526445.379452601,165776.198479916 526450.359932548,165781.281584047 526439.053159569,165803.782584047 526399.973159569,165803.783866343 526399.970932552,165812.584332105 526384.687391741,165825.177332734 526357.964464521,165829.030216992 526344.609037639,165825.224121391 526320.876561857,165820.786544579 526303.846893836,165820.786523568 526303.846813204,165819.910071494 526300.483320819,165788.513879131 526250.233307264,165770.138988224 526266.347370043,165724.751493689 526321.346148409,165703.241357534 526349.188222767)) + + #31 Polygon - gid: 2531 + + POLYGON((167187.935985 527215.129985,167246.663985 527205.580985,167280.107985 527210.602985,167314.083985 527213.149985,167354.196985 527218.563985,167363.609985 527204.834985,167358.459985 527177.204985,167344.405985 527172.240985,167323.325985 527164.793985,167304.557985 527167.748985,167285.789985 527170.703985,167260.854985 527176.007985,167211.198985 527149.591985,167165.408985 527140.439985,167141.660985 527146.308985,167119.062985 527137.503985,167119.967985 527139.010985,167078.296985 527188.560985,167105.238985 527267.140985,167090.957985 527316.213985,167094.770985 527321.819985,167082.593985 527377.599985,167065.952985 527417.668985,167056.312985 527449.383985,167043.546985 527485.510985,167019.927985 527525.916985,166982.769985 527539.710985,166961.717985 527606.388985,166933.263985 527657.009985,166899.206985 527710.191985,166916.325985 527722.287985,166973.067985 527744.810985,166978.160985 527695.099985,167043.308985 527684.770985,167080.550985 527644.941985,167101.716985 527610.077985,167109.672985 527576.692985,167099.068985 527561.394985,167097.537985 527527.027985,167105.044985 527510.384985,167137.888985 527502.771985,167160.386985 527500.228985,167174.041985 527468.108985,167205.365985 527466.936985,167200.090985 527446.692985,167182.286985 527416.893985,167214.905985 527399.163985,167245.980985 527379.346985,167258.755985 527325.736985,167261.469985 527296.920985,167237.119985 527273.314985,167201.524985 527264.407985,167192.491985 527252.494985,167172.090985 527216.630985,167187.935985 527215.129985)) + POLYGON((167167.684716539 527339.467819639,167176.568351121 527334.639135708,167168.740671452 527331.710602359,167168.045301243 527337.816065116,167167.684716539 527339.467819639)) + + #32 Polygon - gid: 2532 + + POLYGON((142944.641985 528279.290985,142921.268985 528196.701985,142908.679985 528170.159985,142909.618985 528164.288985,142912.434985 528146.676985,142911.663985 528129.837985,142892.611985 528111.135985,142875.445985 528095.294985,142871.223985 528075.213985,142854.274985 528025.284985,142841.880985 528009.836985,142829.662985 527984.586985,142829.518985 527971.020985,142821.625985 527942.611985,142810.393985 527922.096985,142789.127985 527903.516985,142784.945985 527870.354985,142783.608985 527857.660985,142778.632985 527857.959985,142770.042985 527846.295985,142767.281985 527824.398985,142767.032985 527762.941985,142754.713985 527740.629985,142749.027985 527714.461985,142756.918985 527695.423985,142775.315985 527696.868985,142782.056985 527690.556985,142783.976985 527671.253985,142777.663985 527661.951985,142758.085985 527654.506985,142741.418985 527651.378985,142749.028985 527626.803985,142752.867985 527606.969985,142752.399985 527587.588985,142752.387985 527556.136985,142751.802985 527550.469985,142750.634985 527539.133985,142751.546185 527536.749185,142733.070985 527540.946985,142718.408985 527549.965985,142690.566985 527548.196985,142650.139985 527549.089985,142626.239985 527552.656985,142624.198985 527552.960985,142624.067985 527566.105985,142630.327985 527597.955985,142624.594985 527613.792985,142600.863985 527617.535985,142581.009985 527622.064985,142574.816985 527639.138985,142579.145985 527659.088985,142596.746985 527682.702985,142605.791985 527694.419985,142613.689985 527704.650985,142638.048985 527728.309985,142660.964985 527755.984985,142669.209985 527774.633985,142695.332985 527818.005985,142686.660985 527842.858985,142682.940985 527858.629985,142701.685985 527880.643985,142711.497985 527934.757985,142716.267985 527963.420985,142735.213985 528000.631985,142745.226985 528012.751985,142773.134985 528057.404985,142816.514985 528078.155985,142825.383985 528108.455985,142801.994985 528142.618985,142779.507985 528173.811985,142780.961985 528203.725985,142794.349985 528212.859985,142840.494985 528200.237985,142842.379985 528210.587985,142861.982985 528212.674985,142888.962985 528201.345985,142905.705985 528247.638985,142932.216985 528293.509985,142941.837985 528289.539985,142944.641985 528279.290985)) + POLYGON( EMPTY) + + #33 Polygon - gid: 2533 + + POLYGON((157248.267985 510397.734985,157245.305985 510363.097985,157245.806985 510339.634985,157249.376985 510312.049985,157264.999985 510313.014985,157298.816985 510310.020985,157313.463985 510303.902985,157331.569985 510277.161985,157335.597985 510263.931985,157342.919985 510246.050985,157356.304985 510238.818985,157373.099985 510233.719985,157379.080985 510235.892985,157395.913985 510233.044985,157408.176985 510225.851985,157412.515985 510212.622985,157409.981985 510194.654985,157398.325985 510184.101985,157382.360985 510173.357985,157354.165985 510179.672985,157341.808985 510184.636985,157327.343985 510198.734985,157317.441985 510214.933985,157308.672985 510231.087985,157299.867985 510244.974985,157293.245985 510254.256985,157288.312985 510254.760985,157282.069985 510246.244985,157282.741985 510240.644985,157284.759985 510223.843985,157287.182985 510197.241985,157275.293985 510195.644985,157261.763985 510193.043985,157245.218985 510187.050985,157227.608985 510177.984985,157227.523985 510173.393985,157241.396985 510142.853985,157246.112985 510129.441985,157230.683985 510109.990985,157224.665985 510099.018985,157249.180985 510051.905985,157212.257985 510031.046985,157194.338985 510064.208985,157211.972985 510077.542985,157204.306985 510095.641985,157222.207985 510119.716985,157199.619985 510159.627985,157215.047985 510174.354985,157196.172985 510227.723985,157155.328985 510207.689985,157139.189985 510197.898985,157127.587985 510195.991985,157123.056985 510200.777985,157088.217985 510252.205985,157106.896985 510285.860985,157126.853985 510245.967985,157133.861985 510250.332985,157165.215985 510274.869985,157156.396985 510293.534985,157144.581985 510312.557985,157138.589985 510331.438985,157137.075985 510351.638985,157138.046985 510372.580985,157139.419985 510383.981985,157146.858985 510390.097985,157156.021985 510361.922985,157163.523985 510331.258985,157181.372985 510302.572985,157207.566985 510320.651985,157199.540985 510385.307985,157193.303985 510383.664985,157180.758985 510375.835985,157168.702985 510402.140985,157158.766985 510420.761985,157135.709985 510449.280985,157153.437985 510466.189985,157170.048985 510460.713985,157195.357985 510432.173985,157213.684985 510416.564985,157235.371985 510403.145985,157248.267985 510397.734985)) + POLYGON( EMPTY) + + #34 Polygon - gid: 2534 + + POLYGON((148568.584985 517215.314985,148572.193985 517207.069985,148579.062985 517190.138985,148582.935985 517182.009985,148585.298985 517176.571985,148590.114985 517163.127985,148593.549985 517154.807985,148597.590985 517143.996985,148600.469985 517135.577985,148608.361985 517111.099985,148609.844985 517106.851985,148612.196985 517100.884985,148622.119985 517079.608985,148627.202985 517066.037985,148629.036985 517061.925985,148631.715985 517056.590985,148633.922985 517052.667985,148636.222985 517048.798985,148640.302985 517042.471985,148642.585985 517038.589985,148645.384985 517033.290985,148649.309985 517023.332985,148650.753985 517019.073985,148653.515985 517009.328985,148656.822985 516996.237985,148657.633985 516992.786985,148659.628985 516988.121985,148661.362985 516983.557985,148665.486985 516963.310985,148660.494985 516962.211985,148654.487985 516960.588985,148645.936985 516957.776985,148635.343985 516953.477985,148633.216985 516952.851985,148628.798985 516951.955985,148618.420985 516950.600985,148610.940985 516948.509985,148606.474985 516948.012985,148596.479985 516947.539985,148583.884985 516947.227985,148578.576985 516948.520985,148573.335985 516949.453985,148568.101985 516949.901985,148563.600985 516949.922985,148557.829985 516950.415985,148551.628985 516950.385985,148538.365985 516949.276985,148531.699985 516950.682985,148527.384985 516949.334985,148523.285985 516949.346985,148518.771985 516949.590985,148497.282985 516949.746985,148489.616985 516950.081985,148471.013985 516949.990985,148458.481985 516951.381985,148447.844985 516952.931985,148445.775985 516960.073985,148444.006985 516964.211985,148439.749985 516975.102985,148439.138985 516980.117985,148438.535985 516987.396985,148438.974985 516992.234985,148440.426985 516998.642985,148438.052985 516999.297985,148434.382985 517002.110985,148433.464985 517004.416985,148433.080985 517009.095985,148433.160985 517012.537985,148433.810985 517017.196985,148435.364985 517021.423985,148438.897985 517029.838985,148440.124985 517034.169985,148440.387985 517035.613985,148440.767985 517040.101985,148439.957985 517047.071985,148439.243985 517059.119985,148437.869985 517063.408985,148436.038985 517067.531985,148435.453985 517068.518985,148432.633985 517072.210985,148428.173985 517080.220985,148425.223985 517084.065985,148420.701985 517084.881985,148419.037985 517084.605985,148414.693985 517083.070985,148410.519985 517081.244985,148406.277985 517079.881985,148401.927985 517079.498985,148397.300985 517079.560985,148392.976985 517080.302985,148391.493985 517081.154985,148388.218985 517085.555985,148385.939985 517089.438985,148383.889985 517093.599985,148382.148985 517097.753985,148380.707985 517102.019985,148384.575985 517104.329985,148387.963985 517107.541985,148388.744985 517108.571985,148388.577985 517113.061985,148386.761985 517129.667985,148386.096985 517138.880985,148383.851985 517150.211985,148381.844985 517157.153985,148381.255985 517161.619985,148379.568985 517166.273985,148378.896985 517171.011985,148375.602985 517182.746985,148375.188985 517183.854985,148372.920985 517187.744985,148371.004985 517192.626985,148369.776985 517197.309985,148368.879985 517199.356985,148366.322985 517203.048985,148363.430985 517206.559985,148360.265985 517209.805985,148362.396985 517211.296985,148366.277985 517213.583985,148368.574985 517214.675985,148372.756985 517216.354985,148379.858985 517218.946985,148383.740985 517221.386985,148387.723985 517223.321985,148391.527985 517223.539985,148398.523985 517222.910985,148402.982985 517222.342985,148413.732985 517218.530985,148420.566985 517215.834985,148422.017985 517215.401985,148426.452985 517214.656985,148427.536985 517214.761985,148431.947985 517215.979985,148436.367985 517216.822985,148437.734985 517217.291985,148441.849985 517219.129985,148444.098985 517220.426985,148447.861985 517222.907985,148462.423985 517233.358985,148486.641985 517247.438985,148491.717985 517250.701985,148501.712985 517257.844985,148508.651985 517262.200985,148516.517985 517266.864985,148528.978985 517274.823985,148533.037985 517276.758985,148535.665985 517277.495985,148540.045985 517278.576985,148548.901985 517280.224985,148550.178985 517272.247985,148551.544985 517265.555985,148552.858985 517261.250985,148555.563985 517251.244985,148562.513985 517233.664985,148568.584985 517215.314985)) + POLYGON ((148465.04603866642 517147.5219424748, 148468.32193007902 517148.81250785006, 148472.43693007904 517150.65050785005, 148479.31833130663 517154.15981472895, 148481.5673313066 517155.45681472897, 148485.38224162365 517157.8115498219, 148489.14524162366 517160.2925498219, 148491.5920858998 517161.976234038, 148503.2307818219 517170.32920829166, 148505.60300960566 517171.7083877117, 148509.5648041141 517161.94319003774, 148511.35506775207 517157.8800646531, 148514.66822819778 517150.926106155, 148515.52675331026 517148.95037210436, 148519.50861371885 517137.8348963292, 148520.79090495792 517134.5068053192, 148523.74161982184 517127.35980454256, 148526.96791581967 517118.7284048809, 148529.29095782075 517111.9351813287, 148536.9803214243 517088.0856828127, 148537.55288063685 517086.3801399501, 148539.03588063686 517082.1321399501, 148540.0697946662 517079.348843109, 148542.42179466618 517073.381843109, 148544.22615053327 517069.18379161716, 148552.9117266564 517050.5609640856, 148556.9678805225 517039.7315200335, 148558.7070182858 517035.4879842818, 148560.5410182858 517031.37598428177, 148562.0128355156 517028.2694345842, 148563.56937478343 517025.16971939424, 148557.4671445434 517025.4151073069, 148551.2661445434 517025.3851073069, 148545.3795881285 517025.1251650781, 148541.3465654276 517024.7879395503, 148534.52321633883 517025.62982859474, 148521.78631390657 517025.0248919264, 148519.75491128486 517024.57557388005, 148519.31643526338 517024.58900880005, 148514.50006083903 517024.6239734057, 148515.12058260432 517029.2863586431, 148515.50058260432 517033.7743586431, 148515.26660871692 517048.7596442845, 148514.70125120823 517053.6245107481, 148514.11262726612 517063.5569214688, 148510.66844475336 517082.0011245901, 148509.29444475335 517086.2901245901, 148506.41476057115 517093.8493158441, 148504.58376057114 517097.97231584415, 148500.5576643297 517105.7725396188, 148499.97266432972 517106.75953961874, 148495.78269539468 517112.9680895764, 148493.70102171606 517116.7067008243, 148487.67826782848 517125.8744659743, 148484.72826782847 517129.71946597425, 148475.34539209885 517139.8588568604, 148465.04603866642 517147.5219424748)) + + #35 Polygon - gid: 2535 + + POLYGON((163066.126985 517974.868985,163091.240985 517970.440985,163098.588985 517969.145985,163130.376985 517949.819985,163160.357985 517938.404985,163155.338985 517935.096985,163137.491985 517928.756985,163088.458985 517930.116985,163058.237985 517933.448985,163033.542985 517933.704985,162996.678985 517946.546985,162965.765985 517963.550985,162954.719985 517971.409985,162940.542985 517971.623985,162929.808985 517967.346985,162916.631985 517960.832985,162906.856985 517973.017985,162901.910985 517996.119985,162896.149985 518019.757985,162889.466985 518026.940985,162862.081985 518041.778985,162841.243985 518051.554985,162822.497985 518056.625985,162814.259985 518061.351985,162810.905985 518070.579985,162808.826985 518099.445985,162806.167985 518118.106985,162793.741985 518127.807985,162755.145985 518154.644985,162735.806985 518166.902985,162720.621985 518167.404985,162718.765985 518184.458985,162717.545985 518210.367985,162713.617985 518236.309985,162706.542985 518271.841985,162701.859985 518290.587985,162705.218985 518294.761985,162726.625985 518278.475985,162753.229985 518258.870985,162782.068985 518236.877985,162816.208985 518212.657985,162824.470985 518182.138985,162845.014985 518153.858985,162882.445985 518140.582985,162920.703985 518125.470985,162943.696985 518115.392985,162965.820985 518065.592985,162984.425985 518034.931985,163005.550985 518008.892985,163025.235985 517978.313985,163066.126985 517974.868985)) + POLYGON( EMPTY) + + #36 Polygon - gid: 2536 + + POLYGON((151640.372985 520078.439985,151631.962985 520059.790985,151629.274985 520055.812985,151626.569985 520052.200985,151615.221985 520034.782985,151606.240985 520019.252985,151596.253985 520003.198985,151594.521985 519999.999985,151585.007985 519979.511985,151579.071985 519969.479985,151573.199985 519957.304985,151572.035985 519955.222985,151567.491985 519949.971985,151564.650985 519946.439985,151563.903985 519945.128985,151561.474985 519937.032985,151559.718985 519932.885985,151558.187985 519929.892985,151554.220985 519932.057985,151549.028985 519934.369985,151543.618985 519935.855985,151538.622985 519936.867985,151534.164985 519937.482985,151528.132985 519939.763985,151523.603985 519940.766985,151518.324985 519941.678985,151514.201985 519943.500985,151511.453985 519945.404985,151507.599985 519948.857985,151505.118985 519952.626985,151501.093985 519964.334985,151499.289985 519968.439985,151498.111985 519970.475985,151495.027985 519973.673985,151492.288985 519974.096985,151486.380985 519973.413985,151480.685985 519972.343985,151476.198985 519971.871985,151471.575985 519971.639985,151467.126985 519972.326985,151465.579985 519972.930985,151461.230985 519976.087985,151459.824985 519980.451985,151459.120985 519986.854985,151457.196985 519995.647985,151457.505985 519999.999985,151457.755985 520002.163985,151458.895985 520006.518985,151459.809985 520012.864985,151461.700985 520019.709985,151462.600985 520024.748985,151466.236985 520038.107985,151470.320985 520048.063985,151476.146985 520063.414985,151477.708985 520067.993985,151480.097985 520076.675985,151484.051985 520078.930985,151488.522985 520079.897985,151492.694985 520078.104985,151494.938985 520076.848985,151506.520985 520073.368985,151510.381985 520072.425985,151515.922985 520072.149985,151520.376985 520071.501985,151525.461985 520071.155985,151533.320985 520071.044985,151541.199985 520071.316985,151545.772985 520072.216985,151550.689985 520074.159985,151556.344985 520076.869985,151559.924985 520080.906985,151561.475985 520085.626985,151562.598985 520089.906985,151564.866985 520095.728985,151566.733985 520099.823985,151570.978985 520111.588985,151575.985985 520119.712985,151580.454985 520125.992985,151585.750985 520135.315985,151588.951985 520138.478985,151591.959985 520142.387985,151595.794985 520145.608985,151596.717985 520146.180985,151600.930985 520147.761985,151610.593985 520152.335985,151615.876985 520148.420985,151619.366985 520145.538985,151620.268985 520145.005985,151624.502985 520143.522985,151627.066985 520142.840985,151640.810985 520139.486985,151645.648985 520138.596985,151646.664985 520138.210985,151650.623985 520136.078985,151654.429985 520133.610985,151656.825985 520131.812985,151657.034985 520127.310985,151655.434985 520118.142985,151654.368985 520103.131985,151653.199985 520098.779985,151649.007985 520092.899985,151646.566985 520089.118985,151642.541985 520082.381985,151640.372985 520078.439985)) + POLYGON( EMPTY) + + #37 Polygon - gid: 2537 + + POLYGON((149074.863985 521147.685985,149079.195985 521146.453985,149084.481985 521146.550985,149083.352985 521142.190985,149082.307985 521139.131985,149078.212985 521129.952985,149074.534985 521119.799985,149072.006985 521114.769985,149062.256985 521087.740985,149058.326985 521077.315985,149057.272985 521073.684985,149056.706985 521069.234985,149056.032985 521058.372985,149055.989985 521055.324985,149056.653985 521049.602985,149056.828985 521045.104985,149057.483985 521039.922985,149057.955985 521027.280985,149059.078985 521021.526985,149059.679985 521014.389985,149061.083985 521010.116985,149063.420985 521004.372985,149065.076985 521001.246985,149068.057985 520997.888985,149069.914985 520996.183985,149073.453985 520993.403985,149077.695985 520990.619985,149083.699985 520985.301985,149087.481985 520982.855985,149091.155985 520979.558985,149091.687985 520978.602985,149092.102085 520973.780785,149091.433985 520972.943985,149085.922985 520963.780985,149080.736985 520952.972985,149079.151985 520948.023985,149078.605985 520943.551985,149078.175985 520937.077985,149077.300985 520934.467985,149076.557985 520932.161985,149075.476985 520927.756985,149074.024985 520923.526985,149072.892985 520921.352985,149070.466985 520917.501985,149067.489985 520913.906985,149063.902985 520911.245985,149060.015985 520908.880985,149057.583985 520907.012985,149053.836985 520904.575985,149046.407985 520903.194985,149043.748985 520900.710985,149040.669985 520896.363985,149030.471985 520876.382985,149027.005985 520870.944985,149023.474985 520864.091985,149020.424985 520857.679985,149016.414985 520850.386985,149015.312985 520847.716985,149011.691985 520837.466985,149011.094985 520836.292985,149008.704985 520832.469985,149005.259985 520827.502985,149004.610985 520825.876985,149003.577985 520821.217985,149003.854985 520816.719985,149002.972985 520816.201985,148998.602985 520814.693985,148988.265985 520815.477985,148983.673985 520817.423985,148979.484985 520821.816985,148976.129985 520824.776985,148973.845985 520825.367985,148966.379985 520826.025985,148961.056985 520826.999985,148956.409985 520829.091985,148951.949985 520829.751985,148946.441985 520830.130985,148931.710985 520830.198985,148924.824985 520830.672985,148921.727985 520830.400985,148917.057985 520829.109985,148913.971985 520825.698985,148910.100985 520821.942985,148901.275985 520808.640985,148896.799985 520799.352985,148894.695985 520795.375985,148891.228985 520789.937985,148887.698985 520783.085985,148884.606985 520775.729985,148881.994985 520768.813985,148880.715985 520766.573985,148878.047985 520762.936985,148875.219985 520759.448985,148871.608985 520756.679985,148867.217985 520756.296985,148862.582985 520756.904985,148861.392985 520757.168985,148857.137985 520758.698985,148853.364985 520759.509985,148848.917985 520760.210985,148844.572985 520761.389985,148836.362985 520765.784985,148831.786985 520766.128985,148822.120985 520765.033985,148817.121985 520763.908985,148812.548985 520762.503985,148807.295985 520761.442985,148803.827985 520760.947985,148794.718985 520760.628985,148790.131985 520761.085985,148779.499985 520762.621985,148777.012985 520764.595985,148773.926985 520768.885985,148773.466985 520774.629985,148773.332985 520779.128985,148772.635985 520787.462985,148772.583985 520792.333985,148774.114985 520796.576985,148778.330985 520798.178985,148785.801985 520800.503985,148791.415985 520802.481985,148797.424985 520804.176985,148801.266985 520806.534985,148808.780985 520809.801985,148816.731985 520814.761985,148820.614985 520817.028985,148822.486985 520817.871985,148828.485985 520820.053985,148840.253985 520823.719985,148844.481985 520824.577985,148848.642985 520825.980985,148849.614985 520826.820985,148851.668985 520831.391985,148850.423985 520836.473985,148851.647985 520862.196985,148851.608985 520865.784985,148852.006985 520870.213985,148852.588985 520871.618985,148855.610985 520875.318985,148859.688985 520877.253985,148865.606985 520879.625985,148869.560985 520881.777985,148874.694985 520884.932985,148878.973985 520886.333985,148879.781985 520887.091985,148882.398985 520890.827985,148893.628985 520903.399985,148896.470985 520906.888985,148900.771985 520910.377985,148903.113985 520912.783985,148907.271985 520917.520985,148910.265985 520921.543985,148913.153985 520928.363985,148914.659985 520932.599985,148915.336985 520935.164985,148915.886985 520939.775985,148914.248985 520943.980985,148917.390985 520947.207985,148919.572985 520949.764985,148923.999985 520956.081985,148928.384985 520961.456985,148931.471985 520964.733985,148935.306985 520967.792985,148938.422985 520971.552985,148942.810985 520975.127985,148945.672985 520978.715985,148945.467985 520983.562985,148943.924985 520989.715985,148941.045985 520998.242985,148938.175985 521005.247985,148932.651985 521015.561985,148930.709985 521019.641985,148929.317985 521023.359985,148928.157985 521027.888985,148928.257985 521030.527985,148930.431985 521034.393985,148933.165985 521037.285985,148936.637985 521040.110985,148942.203985 521043.759985,148949.976985 521048.302985,148956.663985 521051.603985,148960.826985 521053.323985,148970.378985 521056.011985,148974.655985 521057.444985,148977.871985 521058.807985,148985.582985 521063.452985,148996.173985 521068.099985,149000.446985 521070.923985,149004.131985 521074.654985,149005.361985 521076.309985,149007.752985 521080.130985,149009.883985 521084.114985,149010.875985 521086.337985,149012.155985 521090.634985,149013.087985 521095.060985,149013.828985 521099.645985,149014.305985 521101.238985,149016.320985 521105.262985,149018.796985 521108.970985,149021.783985 521112.417985,149024.099985 521114.282985,149028.473985 521115.337985,149036.160985 521116.290985,149040.418985 521117.807985,149041.315985 521118.300985,149044.645985 521121.332985,149046.237985 521125.627985,149045.253985 521130.390985,149045.181985 521135.783985,149045.437985 521138.357985,149046.177985 521142.841985,149046.609985 521143.953985,149049.230985 521147.622985,149050.514985 521148.887985,149054.171985 521151.491985,149060.050985 521155.216985,149064.906985 521154.540985,149066.395985 521153.944985,149070.858985 521150.799985,149074.863985 521147.685985)) + POLYGON( EMPTY) + + #38 Polygon - gid: 2538 + + POLYGON((150340.263985 521736.242985,150319.707985 521734.229985,150320.397985 521743.203985,150320.776985 521753.617985,150321.365985 521762.839985,150321.838985 521767.321985,150322.439985 521771.069985,150323.456985 521775.456985,150325.665985 521782.261985,150327.698985 521786.281985,150328.983985 521788.230985,150331.756985 521791.771985,150334.245985 521794.557985,150337.451985 521797.714985,150345.035985 521804.348985,150348.315985 521807.525985,150350.157985 521808.786985,150354.399985 521810.150985,150370.210985 521813.514985,150374.540985 521814.689985,150378.907985 521817.179985,150387.202985 521823.648985,150391.093985 521825.901985,150398.280985 521829.395985,150414.053985 521839.397985,150417.301985 521841.772985,150425.706985 521851.706985,150429.010985 521854.761985,150432.472985 521857.645985,150437.069985 521860.954985,150439.941985 521862.714985,150449.894985 521867.787985,150455.159985 521869.676985,150457.271985 521870.216985,150461.740985 521869.363985,150463.846985 521868.400985,150466.973985 521865.126985,150468.871985 521858.611985,150470.712985 521854.484985,150471.314985 521852.772985,150472.425985 521842.584985,150472.585985 521837.769985,150471.114985 521817.439985,150467.720985 521797.270985,150467.236985 521792.050985,150467.787985 521786.877985,150468.844985 521782.176985,150469.472985 521777.288985,150470.980985 521770.720985,150464.397985 521768.068985,150460.133985 521766.625985,150453.794985 521764.881985,150449.391985 521763.947985,150441.118985 521762.424985,150435.455985 521761.036985,150424.480985 521757.289985,150408.178985 521751.226985,150399.551985 521747.851985,150390.966985 521745.146985,150382.787985 521742.940985,150374.289985 521739.977985,150369.950985 521738.975985,150358.848985 521736.928985,150354.376985 521736.424985,150340.263985 521736.242985)) + POLYGON( EMPTY) + + #39 Polygon - gid: 2539 + + POLYGON((151414.655985 521903.498985,151419.118985 521902.909985,151421.110985 521903.031985,151425.514985 521903.903985,151432.945985 521906.160985,151435.281985 521907.106985,151439.154985 521909.607985,151440.214985 521905.223985,151439.494985 521900.455985,151436.942985 521890.300985,151435.309985 521886.095985,151435.222985 521881.294985,151435.805985 521873.232985,151435.489985 521868.742985,151435.595985 521863.657985,151437.865985 521855.470985,151438.586985 521850.956985,151447.004985 521843.098985,151449.266985 521833.184985,151450.435985 521826.542985,151446.671985 521824.075985,151441.776985 521820.429985,151435.135985 521814.354985,151430.862985 521811.043985,151429.653985 521809.812985,151427.434985 521805.925985,151424.123985 521798.914985,151422.976985 521796.117985,151421.981985 521791.729985,151420.446985 521786.732985,151420.164985 521785.502985,151419.969985 521781.007985,151419.525985 521775.880985,151419.146985 521773.395985,151417.498985 521767.866985,151415.384985 521762.360985,151413.246985 521758.395985,151410.199985 521754.143985,151407.420985 521751.067985,151403.914985 521748.258985,151398.761985 521744.954985,151394.600985 521743.247985,151389.313985 521741.332985,151386.449985 521740.426985,151382.047985 521739.436985,151380.811985 521739.305985,151374.773985 521739.607985,151370.237985 521739.382985,151365.883985 521738.649985,151359.674985 521735.218985,151349.485985 521730.180985,151343.877985 521725.720985,151340.551985 521722.689985,151334.626985 521716.831985,151329.218985 521710.554985,151325.247985 521705.141985,151319.417985 521699.821985,151315.446985 521694.409985,151305.560985 521681.809985,151300.596985 521675.043985,151296.688985 521671.030985,151293.246985 521668.105985,151289.929985 521665.757985,151285.914985 521663.658985,151282.327985 521662.396985,151277.836985 521662.113985,151271.818985 521662.894985,151268.877985 521663.536985,151263.367985 521665.215985,151261.932985 521669.477985,151258.678985 521677.877985,151256.217985 521682.629985,151251.459985 521683.882985,151247.452985 521683.781985,151241.286985 521681.283985,151234.212985 521679.299985,151230.126985 521677.337985,151227.560985 521676.358985,151223.087985 521675.729985,151219.620985 521675.820985,151215.249985 521676.783985,151210.898985 521678.040985,151205.964985 521678.817985,151196.349985 521681.136985,151192.448985 521682.323985,151188.367985 521684.271985,151187.444985 521684.912985,151184.336985 521688.179985,151181.542985 521692.671985,151179.378985 521696.641985,151177.884985 521699.887985,151173.838985 521718.013985,151172.909985 521723.517985,151173.083985 521728.013985,151173.884985 521734.691985,151175.904985 521738.784985,151180.466985 521741.060985,151183.536985 521742.158985,151187.621985 521744.146985,151191.251985 521748.103985,151194.752985 521753.288985,151196.865985 521758.794985,151198.738985 521762.886985,151200.502985 521767.587985,151203.883985 521779.954985,151208.659985 521792.808985,151211.765985 521799.668985,151213.414985 521805.197985,151215.020985 521809.793985,151218.548985 521815.695985,151221.215985 521819.333985,151222.013985 521820.198985,151227.821985 521825.052985,151230.947985 521828.290985,151234.125985 521832.083985,151238.592985 521842.773985,151240.775985 521849.351985,151242.232985 521855.194985,151242.763985 521866.859985,151242.540985 521871.354985,151242.852985 521879.013985,151243.124985 521888.008985,151243.896985 521899.613985,151243.956985 521904.112985,151243.781985 521911.524985,151243.249985 521917.736985,151244.213985 521932.376985,151246.639985 521941.861985,151247.152985 521948.509985,151248.543985 521959.890985,151248.626985 521963.699985,151248.136985 521968.176985,151246.966985 521973.552985,151251.430985 521972.917985,151254.743985 521972.063985,151260.584985 521969.324985,151264.784985 521967.712985,151273.249985 521964.701985,151285.945985 521960.539985,151294.351985 521957.321985,151299.279985 521955.774985,151324.985985 521948.448985,151340.816985 521942.669985,151349.401985 521939.968985,151363.226985 521935.306985,151367.526985 521933.980985,151372.861985 521932.688985,151382.530985 521930.905985,151385.598985 521927.434985,151395.219985 521921.249985,151396.763985 521920.086985,151401.989985 521915.074985,151408.377985 521907.711985,151412.054985 521904.855985,151414.655985 521903.498985)) + POLYGON((151279.645830086 521767.755326376,151280.089101957 521768.734349246,151281.60849228 521772.801761659,151281.779965797 521772.961370432,151284.905965797 521776.199370432,151288.436416127 521780.123773262,151291.614416127 521783.916773262,151298.197909309 521793.099519948,151303.3272236 521803.167059572,151307.7942236 521813.857059572,151309.775551863 521819.151068694,151311.958551863 521825.729068694,151313.547648501 521831.205773513,151315.004648501 521837.048773513,151317.155400222 521851.784457569,151317.686400222 521863.449457569,151317.671859293 521870.576215471,151317.633144616 521871.356585304,151318.308321815 521871.127269916,151326.162616192 521868.656163438,151339.261758571 521864.238933653,151341.126044189 521863.637267439,151345.426044189 521862.311267439,151349.429937 521861.210224374,151351.72695172 521858.562616456,151362.371481661 521848.480222824,151362.64012267 521848.271563938,151363.173322839 521844.636869635,151362.301287147 521843.109333478,151359.617270262 521837.953435221,151356.306270262 521830.942435221,151354.732095129 521827.371366009,151353.585095129 521824.574366009,151349.833842604 521812.703542585,151349.58867297 521811.62233218,151341.169193044 521809.460853224,151329.609871097 521804.294395733,151324.898612404 521801.69102505,151316.24354186 521797.411483839,151302.802545748 521788.880699647,151297.194545748 521784.420699647,151293.360366598 521781.1553627,151290.034366598 521778.1243627,151287.821382925 521776.02368546,151281.896382925 521770.16568546,151279.645830086 521767.755326376)) + + #40 Polygon - gid: 2540 + + POLYGON((148804.969985 522529.061985,148825.777985 522528.289985,148844.208985 522531.065985,148856.496985 522532.916985,148882.440985 522530.570985,148894.474985 522523.984985,148904.794985 522513.633985,148902.807985 522495.733985,148896.519985 522475.100985,148873.973985 522465.040985,148844.137985 522468.478985,148809.638985 522482.020985,148787.006985 522487.163985,148762.897985 522493.321985,148738.759985 522488.933985,148716.846985 522484.385985,148694.991985 522485.158985,148688.417985 522484.461985,148687.828985 522493.001985,148665.144985 522531.758985,148646.934985 522583.394985,148650.294985 522613.315985,148667.775985 522637.046985,148692.509985 522655.222985,148702.550985 522673.036985,148703.442985 522695.940985,148697.442985 522721.471985,148703.390985 522728.395985,148743.857985 522739.557985,148760.692985 522732.650985,148771.972985 522702.999985,148787.125985 522672.393985,148803.225985 522652.100985,148801.228985 522634.074985,148780.811985 522619.038985,148757.441985 522607.968985,148749.196985 522601.119985,148766.539985 522585.682985,148782.051985 522574.165985,148778.702985 522559.073985,148779.149985 522545.714985,148791.097985 522529.576985,148804.969985 522529.061985)) + POLYGON( EMPTY) + + #41 Polygon - gid: 2541 + + POLYGON((148410.699985 522834.902985,148442.757985 522825.725985,148460.309985 522827.514985,148487.864985 522844.888985,148500.821985 522849.224985,148522.555985 522842.060985,148549.245985 522836.360985,148568.572985 522826.852985,148584.252985 522812.743985,148609.816985 522787.145985,148614.009985 522767.881985,148612.795985 522752.758985,148612.563985 522743.189985,148618.720985 522735.053985,148625.781585 522726.296485,148618.662985 522724.739985,148612.278985 522723.775985,148605.112985 522714.525985,148611.687985 522677.987985,148611.797985 522647.963985,148594.739985 522625.727985,148584.565985 522622.805985,148562.730985 522628.324985,148543.283985 522615.292985,148536.597985 522557.684985,148536.223985 522555.223985,148534.274985 522546.378985,148533.665985 522541.970985,148533.794985 522540.094985,148535.172985 522535.741985,148538.094985 522529.403985,148538.611985 522526.777985,148539.936985 522513.990985,148540.169985 522509.496985,148540.192985 522500.589985,148540.851985 522495.877985,148540.474985 522491.607985,148539.391985 522489.734985,148536.121985 522486.259985,148532.239985 522483.953985,148529.487985 522487.690985,148527.557985 522489.161985,148523.269985 522490.157985,148512.547985 522491.130985,148508.089985 522491.855985,148503.708985 522492.860985,148499.171985 522494.926985,148493.577985 522498.401985,148488.746985 522500.495985,148483.626985 522501.803985,148480.736985 522503.655985,148464.117985 522534.086985,148427.843985 522552.590985,148408.790985 522571.476985,148398.223985 522596.340985,148407.833985 522615.400985,148416.753985 522662.875985,148420.236985 522689.856985,148421.081985 522713.013985,148415.508985 522722.819985,148391.177985 522725.213985,148358.228985 522724.834985,148355.953985 522741.826985,148341.696985 522767.846985,148328.778985 522795.425985,148312.269985 522806.114985,148322.213985 522836.436985,148339.137985 522884.626985,148351.181985 522896.189985,148376.682985 522893.652985,148389.158985 522851.634985,148410.699985 522834.902985)) + POLYGON((148482.813746868 522756.183508667,148484.759834217 522756.612200335,148500.311458172 522764.073026139,148507.47578582 522768.590283572,148524.485305735 522764.957677221,148526.135900505 522764.145660091,148532.598883594 522758.330211851,148537.783159503 522753.13904088,148537.640235854 522747.24405639,148537.573978828 522747.137066634,148532.272275747 522732.393023801,148530.149598324 522716.869200329,148531.298587695 522701.24311067,148532.147803475 522696.523924938,148520.979243698 522690.629014551,148501.532243698 522677.597014551,148493.394526839 522670.763509214,148494.619771809 522680.254848443,148495.187102679 522687.122051743,148496.032102679 522710.279051743,148495.262613882 522724.069947131,148491.977169924 522737.485861809,148486.287201914 522750.071773483,148482.813746868 522756.183508667)) + + #42 Polygon - gid: 2542 + + POLYGON((150213.068985 524020.273985,150226.206985 524020.218985,150245.019985 524022.421985,150248.570985 524017.633985,150243.628985 523991.402985,150233.942985 523969.968985,150203.852985 523929.546985,150189.509985 523905.746985,150179.578985 523905.795985,150163.996985 523891.573985,150150.529985 523872.591985,150158.960985 523848.710985,150150.727985 523827.265985,150129.075985 523796.394985,150110.126985 523782.119985,150064.853985 523787.149985,150051.774985 523791.993985,150035.273985 523796.784985,150034.124985 523803.948985,150047.317985 523842.088985,150048.538985 523846.850985,150048.758985 523856.362985,150044.002985 523858.774985,150033.285985 523861.216985,150022.584985 523866.044985,150013.239985 523875.626985,150010.897985 523882.801985,150007.322985 523904.295985,150015.725985 523913.798985,150028.883985 523920.894985,150036.292985 523937.604985,150033.171985 523964.012985,150028.264985 524013.973985,150020.417985 524042.804985,150014.532985 524064.428985,150004.476985 524083.491985,149987.717985 524115.262985,149981.881985 524139.242985,149991.382985 524146.196985,150012.547985 524165.288985,150017.553385 524169.126585,150024.575985 524166.982985,150037.645985 524157.385985,150054.301985 524147.777985,150067.231985 524142.754985,150080.313985 524135.548985,150096.808985 524132.911985,150108.662985 524120.938985,150113.586985 524111.551985,150113.285985 524097.054985,150114.403985 524085.116985,150121.501985 524075.543985,150134.308985 524061.036985,150143.802985 524053.844985,150159.042985 524051.270985,150177.151985 524046.558985,150188.764985 524039.234985,150195.842985 524027.285985,150213.068985 524020.273985)) + POLYGON((150106.011000335 523989.689500602,150114.057919676 523984.995648846,150131.312562914 523979.892369386,150139.180475973 523978.563497456,150141.030635187 523976.094127171,150143.466198894 523973.995184804,150140.693804819 523969.864680568,150140.146542734 523969.593183191,150129.018561804 523961.19132421,150113.436561804 523946.96932421,150110.842199358 523944.035224328,150110.774630149 523946.407515086,150107.74049457 523972.080521291,150106.011000335 523989.689500602)) + + #43 Polygon - gid: 2543 + + POLYGON((144922.318985 524491.962985,144916.174985 524471.916985,144914.549985 524467.677985,144912.593985 524463.720985,144910.192985 524460.155985,144908.311985 524458.069985,144904.928985 524455.185985,144901.087985 524452.661985,144896.952985 524450.467985,144892.685985 524448.577985,144888.450985 524446.961985,144885.347985 524445.991985,144881.001985 524445.002985,144876.555985 524444.286985,144863.031985 524442.562985,144857.685985 524441.514985,144849.003985 524439.122985,144839.775985 524435.911985,144819.128985 524426.964985,144802.963985 524420.784985,144798.693985 524419.372985,144786.193985 524415.740985,144781.645985 524414.507985,144777.135985 524413.576985,144772.740985 524413.149985,144768.538985 524413.428985,144766.698985 524413.878985,144762.631985 524415.739985,144758.763985 524418.497985,144755.294985 524421.804985,144752.424985 524425.313985,144750.466985 524428.343985,144748.348985 524432.485985,144746.691985 524436.901985,144745.642985 524441.399985,144745.357985 524445.949985,144746.099985 524450.217985,144747.674985 524454.490985,144751.644985 524463.042985,144753.198985 524467.313985,144753.903985 524471.578985,144753.795985 524474.709985,144752.079885 524484.578885,144754.670985 524482.704985,144758.730985 524480.197985,144763.800985 524478.457985,144768.027985 524478.293985,144772.474985 524478.930985,144781.635985 524481.187985,144786.155985 524482.100985,144808.055985 524485.287985,144816.937985 524486.725985,144833.164985 524489.675985,144841.977985 524491.504985,144850.254985 524493.511985,144867.643985 524498.751985,144876.325985 524501.135985,144885.821985 524503.463985,144894.632985 524505.384985,144899.063985 524506.183985,144907.993985 524507.149985,144917.005985 524507.531985,144926.006985 524507.397985,144924.626985 524500.677985,144922.318985 524491.962985)) + POLYGON( EMPTY) + + #44 Polygon - gid: 2544 + + POLYGON((152738.586985 525524.931985,152740.326985 525497.058985,152695.275985 525498.501985,152656.986985 525505.098985,152622.061985 525523.010985,152648.325985 525540.128985,152652.935985 525590.321985,152647.410985 525629.067985,152666.698985 525650.755985,152708.041985 525659.923985,152735.752985 525671.255985,152760.563985 525666.811985,152771.160985 525648.828985,152770.241985 525625.353985,152756.879985 525597.961985,152746.550985 525573.880985,152738.586985 525524.931985)) + POLYGON( EMPTY) + + #45 Polygon - gid: 2545 + + POLYGON((149453.122985 526139.892985,149396.797985 526127.534985,149353.639985 526128.716985,149378.053985 526143.048985,149404.918985 526161.498985,149438.396985 526192.728985,149474.027985 526233.837985,149507.380985 526288.575985,149516.204985 526264.755985,149536.833985 526225.717985,149553.115985 526196.776985,149518.161985 526170.998985,149453.122985 526139.892985)) + POLYGON( EMPTY) + + #46 Polygon - gid: 2546 + + POLYGON((143371.698985 526340.324985,143367.501985 526296.992985,143367.318985 526278.597985,143349.180985 526262.013985,143334.789985 526251.329985,143319.597985 526245.894985,143315.281985 526251.019985,143278.726985 526298.107985,143265.495985 526287.517985,143253.409985 526293.227985,143236.509985 526310.988985,143223.254985 526345.656985,143210.652985 526371.956985,143208.644985 526376.798985,143242.636985 526387.900985,143277.186985 526389.196985,143320.427985 526393.579985,143367.418985 526393.302985,143375.058985 526381.563985,143371.698985 526340.324985)) + POLYGON( EMPTY) + + #47 Polygon - gid: 2547 + + POLYGON((158778.588985 529695.437985,158715.314985 529674.844985,158709.040985 529734.142985,158680.951985 529777.857985,158654.349985 529824.912985,158644.110985 529853.468985,158638.251985 529907.850985,158646.861985 529965.652985,158652.583985 529994.969985,158651.137985 529999.999985,158636.793985 530049.891985,158653.691985 530103.927985,158665.644985 530140.105985,158674.780985 530159.977985,158719.076985 530181.397985,158712.966985 530164.850985,158699.313985 530129.290985,158686.188985 530067.699985,158690.286985 530025.745985,158687.319985 529999.999985,158684.767985 529977.857985,158708.706985 529901.824985,158719.982985 529824.505985,158735.250985 529780.284985,158743.835985 529751.756985,158759.095985 529710.610985,158778.588985 529695.437985)) + POLYGON( EMPTY) + + #48 Polygon - gid: 2548 + + POLYGON((161952.205985 531803.507985,161950.166985 531785.171985,161948.777985 531776.277985,161947.155985 531767.422985,161941.486985 531770.695985,161937.729985 531773.172985,161932.269985 531777.472985,161926.725985 531782.098985,161924.613985 531783.667985,161920.829985 531786.099985,161918.605985 531787.218985,161914.388985 531788.805985,161912.462985 531789.286985,161907.980985 531789.764985,161906.546985 531789.681985,161902.168985 531788.569985,161900.603985 531787.696985,161897.146985 531784.749985,161895.220985 531782.338985,161888.204985 531771.801985,161886.264985 531769.242985,161883.356985 531765.807985,161881.285985 531763.666985,161877.947985 531760.643985,161875.477985 531758.658985,161871.750985 531756.139985,161869.201985 531754.809985,161868.431985 531755.733985,161866.239985 531759.658985,161864.319985 531763.806985,161862.714985 531768.076985,161861.469985 531772.366985,161861.207985 531774.035985,161861.449985 531778.536985,161862.001985 531783.085985,161863.613985 531807.082985,161864.280985 531822.215985,161864.630985 531826.696985,161866.742985 531841.487985,161867.721985 531846.033985,161869.164985 531850.249985,161871.272985 531853.934985,161872.321985 531855.188985,161875.579985 531857.980985,161879.435985 531860.329985,161887.847985 531864.517985,161891.856985 531866.765985,161905.113985 531875.495985,161909.626985 531878.077985,161917.664985 531882.167985,161925.928985 531885.781985,161936.320985 531889.414985,161940.808985 531890.825985,161945.292985 531891.980985,161949.678985 531892.708985,161953.873985 531892.835985,161955.851985 531892.353985,161959.869985 531889.472985,161962.230985 531885.504985,161962.474985 531884.239985,161962.567985 531879.959985,161961.965985 531875.401985,161960.428985 531866.167985,161959.158985 531853.444985,161957.935985 531843.738985,161952.205985 531803.507985)) + POLYGON( EMPTY) + + #49 Polygon - gid: 2549 + + POLYGON((144515.492985 534697.249985,144520.510985 534691.952985,144527.310985 534683.949985,144535.496985 534673.356985,144546.006985 534658.516985,144553.414985 534648.475985,144571.337985 534625.843985,144588.734985 534602.871985,144591.563985 534598.255985,144593.687985 534594.272985,144595.170985 534590.539985,144595.782985 534587.574985,144596.004985 534583.199985,144595.414985 534578.711985,144594.709985 534576.051985,144592.684985 534571.167985,144584.642985 534570.602985,144578.354985 534570.640985,144565.341985 534571.789985,144550.736985 534573.859985,144535.843985 534577.740985,144530.135985 534579.076985,144502.804985 534584.561985,144492.056985 534586.945985,144456.640985 534596.072985,144421.529985 534606.221985,144416.729985 534607.810985,144413.648985 534609.062985,144409.481985 534611.224985,144405.573985 534613.952985,144401.917985 534617.122985,144394.939985 534623.644985,144392.859085 534625.096885,144391.528985 534626.710985,144388.152985 534629.686985,144383.914985 534633.745985,144381.967985 534636.004985,144380.598985 534637.904985,144379.020985 534640.527985,144378.413985 534641.899985,144377.712985 534644.700985,144377.358985 534647.693985,144377.278985 534650.747985,144377.449985 534653.772985,144377.702985 534655.737985,144378.069985 534657.174985,144379.935985 534661.330985,144381.203985 534663.625985,144382.840985 534666.139985,144386.549985 534671.102985,144395.619985 534681.742985,144397.803985 534684.814985,144400.044985 534688.738985,144401.674985 534692.606985,144402.653985 534692.013985,144409.805985 534694.346985,144417.124985 534696.033985,144420.474985 534696.361985,144428.018985 534696.322985,144429.277985 534696.473985,144430.696985 534696.874985,144451.529985 534707.358985,144457.662985 534710.086985,144461.881985 534711.659985,144465.832985 534712.829985,144468.756985 534713.530985,144473.000985 534714.248985,144475.995985 534714.553985,144480.201985 534714.653985,144484.693985 534714.285985,144488.789985 534713.532985,144493.108985 534712.257985,144496.962985 534710.702985,144499.635985 534709.353985,144504.686985 534706.313985,144509.614985 534702.550985,144515.492985 534697.249985)) + POLYGON( EMPTY) + + #50 Polygon - gid: 2550 + + POLYGON((139580.306985 536284.245985,139581.537985 536275.353985,139582.391985 536270.934985,139584.727985 536262.895985,139588.416985 536252.326985,139591.066985 536246.306985,139593.754985 536241.295985,139596.494985 536237.619985,139599.804985 536234.137985,139603.593985 536230.963985,139607.726985 536228.169985,139622.104985 536219.993985,139630.326985 536215.966985,139647.195985 536208.674985,139656.268985 536204.452985,139664.079985 536200.252985,139671.632985 536195.480985,139678.904985 536190.269985,139684.418985 536185.885985,139690.667985 536180.238985,139699.139985 536171.792985,139704.019985 536167.257985,139707.535985 536164.362985,139719.234985 536155.582985,139724.584985 536151.291985,139728.111985 536147.960985,139730.160985 536145.764985,139731.363985 536144.185985,139731.781985 536143.091985,139730.140985 536138.628985,139728.244985 536134.603985,139725.033985 536129.308985,139723.167985 536126.742985,139720.321985 536123.255985,139715.151985 536117.777985,139709.530985 536112.704985,139702.374985 536107.119985,139693.638985 536101.087985,139672.813985 536087.921985,139664.262985 536082.684985,139655.423985 536077.697985,139647.610985 536073.673985,139639.545985 536070.005985,139626.896985 536064.817985,139618.344985 536061.630985,139595.270985 536053.548985,139589.311985 536051.161985,139582.993985 536048.148985,139578.633985 536045.693985,139573.206985 536042.191985,139559.712985 536032.655985,139544.953985 536022.737985,139538.344985 536017.628985,139533.269985 536012.957985,139527.127985 536006.378985,139522.507985 536000.966985,139517.569985 535994.673985,139514.710985 535990.549985,139512.017985 535986.156985,139509.458985 535981.492985,139503.627985 535970.144985,139500.680985 535965.036985,139498.267985 535961.301985,139493.873985 535955.337985,139482.644985 535941.539985,139476.252985 535933.272985,139471.574985 535926.605985,139468.229985 535920.871985,139466.243985 535916.364985,139465.202985 535913.222985,139464.494985 535910.303985,139463.964985 535907.107985,139463.809985 535904.115985,139464.450985 535898.265985,139465.320985 535895.316985,139466.778985 535892.646985,139467.714985 535891.405985,139469.884985 535889.355985,139472.222985 535888.202985,139473.703985 535887.781985,139478.694985 535887.027985,139527.523985 535887.045985,139534.405985 535886.815985,139539.706985 535886.209985,139543.334985 535885.541985,139549.575985 535883.796985,139555.393985 535881.390985,139561.941985 535877.533985,139566.488985 535874.094985,139570.786985 535869.895985,139574.370985 535865.516985,139577.146985 535860.922985,139578.381985 535858.167985,139579.597985 535854.520985,139580.483985 535850.089985,139580.752985 535847.100985,139580.748985 535844.297985,139580.113985 535838.063985,139579.392985 535835.150985,139578.222985 535831.671985,139577.100985 535828.887985,139575.349985 535825.206985,139573.169985 535821.251985,139570.621985 535817.165985,139565.947985 535810.671985,139563.686985 535807.948985,139560.612985 535804.659985,139558.108985 535802.262985,139554.445985 535799.139985,139549.466985 535795.479985,139544.282985 535792.276985,139538.972985 535789.483985,139532.216985 535786.483985,139528.012985 535784.877985,139522.443985 535783.012985,139498.844985 535775.793985,139481.569985 535769.907985,139475.702985 535767.695985,139470.596985 535765.137985,139468.001985 535763.386985,139466.883985 535762.396985,139464.852985 535760.143985,139462.813985 535757.076985,139461.575985 535754.350985,139459.684985 535748.568985,139458.819985 535743.777985,139458.353985 535740.212985,139457.651985 535731.980985,139457.160985 535721.682985,139457.087985 535713.035985,139457.389985 535710.492985,139458.081985 535707.539985,139459.525985 535704.076985,139461.210985 535701.557985,139463.801985 535698.894985,139466.281985 535697.157985,139469.421985 535695.731985,139473.755985 535694.584985,139480.230985 535693.382985,139487.658985 535692.342985,139497.732985 535690.655985,139507.707985 535688.863985,139515.608985 535688.004985,139536.445985 535687.421985,139560.876985 535685.892985,139568.980985 535685.624985,139575.288985 535685.903985,139579.849985 535686.480985,139588.121985 535688.083985,139596.121985 535690.179985,139601.973985 535691.519985,139606.159985 535692.152985,139612.312985 535692.703985,139618.514985 535692.777985,139621.601985 535692.529985,139627.534985 535691.492985,139631.225985 535690.396985,139635.337985 535688.505985,139638.406985 535686.551985,139639.584985 535685.626985,139642.840985 535682.480985,139645.451985 535679.212985,139648.795985 535673.937985,139651.978985 535668.218985,139668.201985 535637.219985,139672.423985 535629.667985,139677.545985 535622.037985,139680.573985 535618.604985,139682.864985 535616.615985,139685.943985 535614.660985,139688.770985 535613.559985,139692.249985 535612.928985,139695.280985 535613.008985,139698.224985 535613.644985,139700.766985 535614.733985,139702.087985 535615.482985,139705.439985 535617.839985,139707.680985 535619.832985,139712.062985 535624.286985,139715.241985 535628.088985,139718.403985 535632.235985,139721.539985 535636.765985,139724.665985 535641.644985,139731.570985 535653.529985,139737.212985 535664.169985,139739.633985 535669.254985,139741.716985 535674.194985,139743.466985 535678.998985,139744.879985 535683.722985,139745.639985 535686.957985,139746.437985 535691.658985,139746.900985 535696.335985,139746.980985 535699.429985,139746.262985 535708.502985,139744.114985 535718.330985,139740.327985 535733.143985,139738.458985 535739.114985,139735.962985 535745.484985,139733.105985 535751.646985,139724.889985 535768.299985,139722.678985 535773.301985,139720.685985 535778.355985,139718.976985 535783.420985,139717.642985 535788.432985,139716.487985 535794.996985,139716.255985 535798.802985,139716.424985 535806.302985,139716.897985 535814.641985,139720.252985 535833.369985,139721.254985 535840.218985,139722.032985 535848.318985,139722.636985 535860.654985,139723.041985 535865.500985,139723.595985 535869.969985,139724.425985 535873.622985,139725.907985 535877.893985,139727.294985 535880.672985,139728.946985 535883.210985,139731.655985 535886.283985,139734.007985 535888.197985,139736.641985 535889.770985,139739.492985 535890.878985,139740.985985 535891.198985,139742.449985 535891.287985,139744.945985 535890.794985,139746.374985 535890.179985,139748.401985 535888.804985,139750.468985 535886.617985,139753.620985 535882.153985,139757.971985 535874.263985,139766.546985 535856.319985,139770.020985 535849.785985,139775.406985 535840.970985,139787.949985 535822.120985,139792.813985 535813.795985,139795.325985 535808.760985,139797.476985 535803.700985,139799.223985 535798.645985,139800.003985 535795.747985,139800.796985 535792.077985,139801.378985 535788.309985,139801.878985 535781.357985,139801.971985 535757.446985,139801.772985 535751.399985,139801.317985 535745.229985,139799.979985 535735.531985,139797.665985 535724.587985,139795.239985 535715.729985,139790.553985 535700.992985,139787.074985 535690.615985,139784.300985 535683.246985,139781.903985 535677.405985,139774.772985 535661.279985,139771.370985 535653.166985,139767.425985 535643.120985,139764.622985 535635.052985,139762.357985 535626.853985,139760.604985 535617.923985,139759.689985 535609.708985,139759.670985 535602.051985,139760.175985 535597.480985,139761.074985 535592.961985,139762.333985 535588.513985,139764.487985 535582.705985,139767.018985 535577.178985,139769.898985 535571.857985,139773.045985 535567.308985,139774.918985 535564.960985,139776.980985 535562.899985,139779.363985 535561.024985,139782.591985 535559.191985,139785.460985 535558.179985,139786.945985 535557.864985,139788.990985 535557.684985,139790.500985 535557.739985,139793.505985 535558.303985,139795.110985 535558.903985,139796.414985 535559.597985,139798.880985 535561.344985,139802.353985 535564.379985,139805.549985 535568.247985,139808.696985 535572.568985,139814.126985 535580.708985,139823.426985 535595.492985,139828.793985 535604.633985,139833.129985 535612.775985,139838.706985 535624.155985,139843.536985 535634.544985,139847.396985 535643.335985,139852.464985 535655.668985,139857.816985 535669.898985,139867.280985 535697.844985,139870.030985 535705.535985,139874.258985 535716.398985,139878.906985 535727.026985,139883.055985 535735.583985,139886.787985 535742.582985,139890.766985 535749.443985,139897.980985 535760.815985,139901.071985 535765.981985,139903.940985 535771.255985,139912.046985 535787.324985,139914.373985 535791.455985,139918.063985 535797.258985,139921.357985 535801.454985,139923.505985 535803.573985,139924.970985 535804.706985,139926.243985 535805.496985,139928.986985 535806.781985,139932.583985 535807.856985,139935.570985 535808.318985,139938.005985 535808.411985,139941.020985 535808.199985,139943.963985 535807.605985,139946.733985 535806.629985,139949.456985 535805.316985,139952.528985 535803.450985,139954.949985 535801.662985,139958.129985 535798.972985,139963.401985 535793.632985,139968.154985 535787.926985,139971.450985 535782.908985,139972.879985 535780.264985,139974.014985 535777.692985,139974.980985 535774.850985,139976.502985 535769.142985,139979.454985 535754.014985,139980.658985 535746.509985,139981.662985 535736.074985,139982.932985 535711.663985,139983.270985 535696.456985,139983.238985 535689.010985,139982.549985 535678.406985,139980.323985 535658.404985,139979.190985 535646.066985,139978.378985 535634.706985,139977.762985 535622.123985,139976.315985 535580.869985,139975.971985 535561.243985,139976.099985 535549.548985,139977.004985 535534.281985,139979.934985 535490.984985,139981.030985 535482.383985,139982.469985 535475.733985,139984.430985 535469.066985,139986.517985 535463.165985,139987.679985 535460.401985,139990.234985 535455.396985,139991.909985 535452.941985,139993.957985 535450.827985,139996.385985 535448.994985,139999.024985 535447.621985,140001.905985 535446.712985,140006.993985 535445.807985,140011.507985 535445.571985,140015.764985 535445.938985,140021.851985 535447.221985,140024.694985 535448.179985,140030.425985 535450.706985,140036.028985 535453.823985,140040.617985 535457.090985,140045.514985 535461.247985,140049.628985 535465.627985,140052.229985 535469.119985,140053.784985 535471.700985,140055.287985 535475.350985,140056.580985 535480.715985,140057.299985 535485.168985,140057.913985 535487.470985,140058.937985 535490.320985,140059.568985 535491.686985,140060.850985 535493.785985,140061.778985 535494.965985,140065.399985 535498.531985,140067.800985 535500.346985,140070.706985 535502.078985,140073.444985 535503.331985,140077.253985 535504.488985,140080.220985 535504.966985,140084.207985 535505.256985,140088.710985 535505.234985,140093.405985 535504.976985,140098.169985 535504.301985,140102.967985 535503.305985,140107.692985 535501.965985,140112.290985 535500.232985,140115.396985 535498.769985,140119.794985 535496.227985,140124.107985 535493.220985,140127.651985 535490.446985,140132.374985 535486.472985,140136.271985 535482.899985,140139.926985 535479.270985,140143.308985 535475.520985,140148.197985 535469.094985,140157.833985 535454.685985,140162.452985 535448.684985,140165.258985 535445.833985,140168.592985 535442.802985,140172.883985 535439.551985,140176.709985 535437.178985,140180.297985 535435.354985,140184.482985 535433.693985,140188.370985 535432.634985,140192.812985 535431.857985,140197.194985 535431.510985,140203.273985 535431.345985,140218.438985 535431.784985,140223.355985 535431.715985,140226.351985 535431.429985,140228.064985 535431.012985,140229.448985 535430.482985,140232.118985 535429.063985,140235.867985 535426.512985,140238.434985 535423.996985,140242.173985 535419.828985,140246.735985 535413.958985,140251.061985 535407.683985,140254.278985 535402.487985,140257.229985 535397.194985,140259.817985 535391.773985,140261.404985 535387.658985,140263.054985 535382.041985,140264.205985 535376.314985,140264.964985 535370.504985,140265.716985 535361.336985,140266.322985 535350.243985,140266.837985 535333.228985,140267.009985 535310.682985,140266.988985 535300.110985,140266.512985 535282.732985,140266.469985 535273.905985,140266.663985 535269.411985,140267.088985 535264.675985,140267.757985 535259.825985,140268.568985 535255.397985,140270.540985 535247.578985,140272.980985 535240.592985,140276.555985 535232.562985,140281.174985 535223.841985,140284.880985 535217.943985,140288.095985 535213.604985,140291.593985 535209.455985,140300.508985 535199.762985,140303.734985 535195.825985,140306.452985 535191.609985,140307.757985 535188.901985,140308.504985 535186.947985,140309.798985 535181.881985,140310.622985 535175.071985,140311.020985 535164.614985,140311.111985 535143.903985,140311.541985 535136.992985,140312.125985 535133.284985,140312.934985 535130.353985,140313.482985 535128.949985,140314.663985 535126.829985,140316.736985 535124.574985,140318.681985 535123.326985,140320.096985 535122.827985,140321.594985 535122.491985,140325.004985 535122.068985,140329.517985 535122.050985,140333.688985 535122.249985,140338.046985 535122.680985,140342.500985 535123.340985,140346.868985 535124.218985,140352.700985 535125.724985,140357.000985 535127.058985,140361.769985 535128.868985,140365.893985 535130.673985,140370.855985 535133.092985,140376.893985 535136.308985,140381.311985 535138.990985,140386.114985 535142.595985,140390.161985 535146.262985,140396.094985 535152.500985,140402.651985 535160.317985,140406.637985 535166.186985,140408.086985 535168.819985,140409.150985 535171.253985,140410.478985 535175.562985,140411.454985 535179.981985,140411.791985 535184.591985,140411.749985 535187.599985,140411.076985 535193.566985,140410.362985 535197.454985,140408.200985 535205.090985,140406.393985 535210.820985,140405.547985 535214.829985,140405.220985 535217.828985,140405.477985 535221.410985,140406.248985 535224.350985,140407.091985 535226.325985,140407.834985 535227.629985,140409.638985 535230.070985,140412.571985 535232.946985,140415.007985 535234.735985,140418.789985 535236.858985,140422.981985 535238.528985,140426.187985 535239.435985,140431.511985 535240.551985,140444.577985 535242.758985,140451.616985 535244.179985,140456.451985 535245.428985,140462.114985 535247.443985,140464.307985 535248.483985,140466.910985 535250.001985,140469.343985 535251.758985,140471.538985 535253.752985,140472.546985 535254.879985,140473.907985 535256.799985,140474.620985 535258.138985,140475.485985 535260.538985,140477.086985 535260.852985,140479.858985 535262.010985,140485.998985 535265.048985,140497.212985 535272.587985,140502.401985 535275.601985,140506.981985 535277.963985,140515.753985 535282.120985,140520.316985 535284.063985,140524.534985 535285.638985,140530.215985 535287.306985,140533.160985 535287.824985,140537.199985 535287.933985,140540.948985 535287.423985,140543.882985 535286.586985,140545.275985 535285.996985,140546.977985 535284.982985,140548.154985 535284.034985,140550.199985 535281.745985,140551.314985 535279.744985,140552.235985 535276.904985,140553.238985 535271.991985,140553.703985 535266.730985,140553.976985 535261.326985,140554.223985 535250.450985,140554.140985 535235.153985,140553.689985 535228.522985,140552.718985 535221.486985,140551.431985 535214.670985,140548.875985 535202.927985,140548.084985 535198.157985,140547.564985 535191.826985,140547.545985 535186.972985,140547.729985 535182.096985,140548.541985 535172.313985,140550.093985 535162.251985,140551.974985 535154.083985,140556.616985 535137.953985,140558.129985 535131.991985,140558.777985 535128.123985,140559.194985 535122.126985,140558.828985 535116.905985,140557.672985 535111.402985,140555.608985 535105.762985,140553.963985 535100.689985,140550.879985 535094.895985,140550.582985 535093.633985,140547.674985 535086.614985,140544.826985 535081.157985,140540.731985 535075.516985,140536.634985 535070.725985,140532.837985 535067.360985,140528.420985 535064.135985,140524.987985 535060.547985,140522.647985 535058.438985,140515.451985 535050.544985,140510.767985 535045.123985,140507.746985 535042.235985,140498.425985 535035.674985,140497.011985 535035.121985,140495.522985 535034.908985,140494.213985 535035.000985,140483.052985 535036.945985,140481.288985 535037.516985,140470.264985 535043.040985,140459.888985 535049.152985,140451.570985 535053.489985,140448.087985 535054.901985,140443.674985 535055.846985,140439.213985 535056.280985,140437.365985 535055.718985,140436.189985 535054.770985,140434.891985 535053.225985,140433.170985 535050.768985,140431.587985 535048.207985,140429.521985 535044.372985,140428.541985 535041.540985,140428.349985 535040.066985,140428.414985 535037.029985,140429.080985 535033.642985,140431.959985 535025.978985,140437.970985 535012.180985,140441.433985 535004.957985,140442.520985 535002.161985,140444.779985 534995.680985,140446.918985 534988.089985,140447.830985 534983.115985,140448.041985 534980.115985,140448.067985 534976.101985,140447.958985 534974.597985,140447.484985 534972.392985,140445.934985 534969.613985,140442.502985 534965.963985,140440.878985 534964.878985,140434.970985 534964.190985,140432.581985 534964.231985,140429.211985 534964.880985,140419.422985 534963.985985,140412.037985 534963.573985,140406.589985 534962.345985,140404.198985 534961.905985,140398.724985 534961.259985,140392.228985 534959.924985,140388.840985 534958.945985,140386.096985 534957.699985,140384.810985 534956.932985,140382.742985 534955.224985,140381.314985 534953.714985,140379.548985 534951.284985,140377.433985 534947.807985,140376.736985 534946.372985,140375.493985 534942.046985,140374.387985 534939.275985,140369.021985 534927.245985,140367.341985 534923.070985,140366.161985 534920.648985,140362.125985 534913.096985,140348.646985 534890.235985,140346.185985 534886.399985,140340.156985 534878.582985,140338.021985 534876.008985,140332.861985 534870.325985,140325.793985 534864.759985,140322.300985 534862.358985,140320.999985 534861.615985,140316.091985 534859.481985,140313.404985 534858.117985,140289.152985 534843.579985,140283.129985 534840.332985,140280.196985 534839.230985,140270.767985 534836.812985,140268.395985 534836.550985,140264.431985 534837.035985,140261.915985 534837.946985,140258.399985 534839.743985,140255.958985 534841.489985,140255.068985 534842.413985,140252.241985 534846.335985,140250.636985 534848.868985,140249.317985 534851.316985,140248.088985 534854.054985,140246.920985 534858.179985,140246.664985 534861.168985,140247.428985 534872.649985,140247.973985 534878.666985,140248.255985 534880.138985,140249.969985 534885.156985,140252.936985 534892.820985,140254.655985 534896.813985,140266.365985 534919.755985,140267.822985 534922.376985,140271.482985 534927.812985,140275.051985 534934.410985,140279.541985 534940.825985,140281.945985 534944.629985,140285.361985 534950.376985,140287.187985 534953.884985,140288.441985 534956.616985,140289.360985 534959.482985,140290.166985 534965.964985,140290.128985 534967.672985,140289.844985 534969.134985,140288.872985 534972.725985,140287.580985 534978.738985,140286.713985 534981.607985,140283.568985 534990.459985,140281.708985 534999.392985,140280.605985 535003.757985,140278.935985 535013.332985,140276.071985 535028.122985,140273.766985 535037.947985,140272.565985 535045.351985,140270.781985 535053.996985,140267.939985 535070.338985,140267.049985 535074.638985,140264.681985 535083.629985,140262.124985 535094.986985,140259.633985 535105.080985,140257.324985 535112.628985,140254.862985 535119.003985,140254.045985 535120.295985,140252.515985 535121.828985,140251.200985 535122.602985,140248.949985 535123.338985,140247.425985 535123.533985,140245.402985 535123.264985,140242.580985 535122.286985,140238.106985 535120.252985,140234.151985 535118.094985,140231.083985 535115.983985,140224.514985 535110.280985,140219.876985 535107.707985,140217.334985 535106.077985,140215.997985 535105.431985,140213.564985 535104.791985,140202.236985 535102.879985,140203.060985 535106.831985,140203.249985 535112.368985,140202.870985 535114.529985,140202.232985 535116.056985,140201.439985 535119.281985,140199.089985 535125.794985,140197.089985 535128.776985,140196.021985 535129.930985,140193.315985 535131.267985,140191.140985 535131.820985,140188.152985 535132.081985,140182.311985 535132.222985,140178.272985 535131.905985,140171.238985 535130.223985,140166.918985 535128.959985,140161.858985 535127.208985,140157.472985 535126.136985,140155.339985 535125.322985,140151.491985 535122.966985,140143.886985 535119.310985,140140.533985 535117.044985,140134.495985 535112.594985,140132.690985 535111.964985,140132.591985 535116.758985,140133.193985 535124.798985,140132.877985 535132.797985,140133.264985 535137.308985,140133.141985 535141.806985,140134.180985 535154.799985,140134.230985 535161.325985,140135.180985 535167.325985,140134.694985 535173.307985,140134.768985 535180.436985,140134.511985 535184.933985,140134.020985 535189.622985,140132.969985 535193.999985,140130.296985 535211.773985,140130.152985 535216.772985,140130.483985 535223.319985,140130.987985 535226.790985,140130.998985 535228.298985,140129.698985 535229.685985,140128.371985 535229.879985,140121.819985 535229.406985,140114.812985 535229.358985,140110.320985 535229.666985,140106.544985 535230.140985,140096.959985 535232.159985,140092.659985 535232.188985,140089.160985 535231.737985,140087.234985 535231.118985,140084.488985 535229.880985,140081.339985 535227.816985,140075.055985 535222.764985,140069.553985 535217.390985,140058.896985 535209.433985,140055.811985 535207.661985,140052.908985 535206.682985,140051.409985 535206.419985,140049.938985 535206.351985,140048.540985 535206.542985,140047.094985 535206.993985,140043.881985 535208.465985,140042.590985 535209.230985,140039.517985 535211.655985,140036.378985 535214.890985,140034.416985 535216.648985,140032.004985 535218.446985,140028.812985 535220.321985,140023.891985 535222.473985,140020.987985 535223.247985,140017.304985 535223.940985,140012.839985 535224.522985,140008.579985 535224.869985,140004.271985 535224.983985,140000.726985 535224.755985,139991.620985 535222.385985,139980.642985 535218.147985,139976.590985 535216.220985,139970.813985 535212.595985,139963.060985 535208.257985,139960.458985 535206.495985,139958.259985 535204.477985,139954.212985 535200.011985,139950.851985 535195.994985,139944.482985 535189.621985,139941.329985 535186.243985,139936.998985 535180.118985,139931.563985 535173.032985,139929.868985 535170.570985,139927.461985 535165.212985,139925.360985 535163.349985,139922.568985 535160.114985,139908.953985 535143.622985,139905.486985 535139.190985,139901.433985 535133.560985,139895.564985 535124.415985,139888.179985 535114.063985,139882.622985 535104.655985,139876.825985 535095.889985,139873.897985 535092.106985,139870.957985 535088.698985,139862.467985 535079.806985,139860.188985 535077.835985,139858.445985 535076.757985,139857.026985 535076.297985,139852.667985 535075.738985,139849.657985 535075.687985,139845.757985 535076.064985,139844.290985 535076.553985,139841.735985 535078.096985,139838.563985 535080.460985,139837.273985 535081.847985,139835.644985 535084.379985,139834.712985 535086.347985,139822.859985 535120.960985,139821.772985 535124.628985,139817.808985 535144.003985,139815.981985 535157.572985,139813.602985 535180.207985,139810.843985 535213.080985,139808.202985 535231.937985,139807.272985 535235.411985,139805.576985 535239.595985,139803.498985 535245.955985,139802.607985 535247.923985,139800.882985 535250.388985,139798.520985 535253.177985,139794.469985 535257.125985,139790.983985 535259.661985,139789.648985 535260.326985,139786.940985 535261.222985,139785.460985 535261.547985,139783.467985 535261.730985,139781.992985 535261.435985,139777.419985 535259.850985,139767.456985 535255.351985,139757.514985 535251.322985,139749.332985 535247.573985,139743.283985 535245.221985,139739.177985 535243.346985,139737.320985 535242.730985,139731.388985 535241.792985,139725.950985 535240.505985,139724.191985 535240.234985,139715.787985 535240.185985,139714.330985 535240.482985,139713.014985 535241.140985,139710.528985 535242.883985,139707.610985 535245.432985,139702.496985 535251.004985,139699.773985 535254.580985,139695.755985 535262.914985,139694.924985 535265.663985,139694.254985 535268.599985,139693.910985 535271.629985,139693.843985 535274.629985,139694.395985 535288.182985,139694.935985 535293.205985,139698.184985 535312.557985,139698.401985 535318.113985,139698.331985 535324.742985,139697.885985 535330.729985,139696.769985 535337.460985,139695.373985 535342.903985,139692.205985 535352.885985,139690.615985 535356.610985,139688.348985 535360.684985,139686.555985 535363.086985,139682.976985 535367.067985,139670.956985 535378.401985,139667.649985 535380.806985,139665.862985 535382.309985,139662.748985 535385.564985,139659.886985 535388.248985,139657.574985 535390.172985,139654.486985 535392.070985,139645.811985 535395.942985,139640.779985 535397.682985,139637.638985 535398.419985,139627.571985 535400.047985,139626.086985 535400.245985,139622.765985 535400.265985,139619.772985 535399.924985,139615.927985 535399.162985,139608.762985 535396.929985,139604.126985 535397.211985,139598.119985 535397.050985,139593.613985 535396.546985,139587.709985 535395.435985,139582.905985 535394.251985,139574.205985 535391.195985,139562.531985 535388.361985,139559.299985 535387.180985,139555.330985 535384.999985,139554.167985 535385.182985,139554.356985 535389.318985,139555.044985 535392.524985,139555.398985 535396.109985,139557.087985 535403.488985,139557.241985 535404.991985,139556.820985 535407.038985,139553.825985 535415.329985,139552.035985 535421.066985,139551.328985 535425.310985,139551.184985 535429.773985,139551.681985 535434.246985,139552.627985 535438.656985,139554.313985 535444.464985,139556.074985 535448.477985,139558.544985 535452.208985,139561.411985 535455.719985,139565.435985 535460.273985,139568.557985 535462.977985,139571.141985 535464.460985,139584.237985 535470.517985,139586.503985 535471.376985,139593.668985 535473.612985,139598.687985 535475.707985,139602.933985 535477.933985,139604.020985 535478.940985,139604.533985 535480.482985,139604.866985 535483.813985,139606.271985 535492.704985,139606.804985 535498.248985,139606.777985 535499.741985,139606.314985 535503.020985,139604.821985 535509.007985,139603.021985 535514.733985,139601.600985 535520.071985,139601.043985 535521.446985,139598.935985 535524.578985,139595.269985 535529.391985,139591.348985 535534.002985,139588.301985 535537.258985,139586.464985 535538.377985,139579.904985 535538.899985,139575.514985 535538.902985,139574.105985 535538.705985,139571.152985 535537.945985,139569.775985 535537.346985,139567.971985 535535.995985,139558.235985 535525.528985,139554.190985 535520.960985,139553.092985 535519.974985,139551.210985 535518.832985,139548.269985 535517.989985,139545.546985 535517.716985,139540.672985 535518.378985,139537.739985 535519.077985,139536.353985 535519.563985,139535.014985 535520.213985,139531.146985 535522.544985,139524.426985 535525.648985,139520.505985 535527.857985,139514.722985 535530.645985,139512.707985 535531.967985,139506.205985 535537.460985,139504.142985 535539.613985,139500.756985 535544.674985,139490.017985 535562.863985,139483.034985 535575.309985,139481.369985 535577.781985,139479.936985 535579.366985,139477.659985 535581.322985,139468.886985 535587.682985,139467.595985 535588.447985,139465.277985 535589.398985,139463.794985 535589.646985,139462.170985 535589.641985,139460.563985 535589.370985,139459.135985 535588.819985,139457.345985 535587.287985,139455.504985 535584.838985,139454.027985 535582.019985,139453.087985 535579.127985,139452.866985 535577.169985,139453.221985 535574.213985,139454.052985 535571.208985,139455.938985 535565.568985,139457.701985 535561.409985,139459.377985 535558.048985,139460.959985 535555.511985,139468.242985 535545.227985,139470.055985 535542.130985,139471.381985 535539.436985,139472.228985 535537.299985,139473.089985 535534.404985,139473.345985 535532.931985,139473.544985 535529.790985,139473.052985 535511.213985,139472.672985 535506.749985,139472.245985 535504.385985,139471.092985 535501.582985,139468.019985 535496.222985,139466.240985 535493.791985,139465.240985 535492.732985,139463.860985 535491.761985,139462.409985 535491.206985,139460.885985 535490.885985,139458.629985 535490.789985,139457.113985 535490.968985,139454.295985 535491.715985,139452.943985 535492.368985,139451.714985 535493.290985,139450.985985 535494.052985,139449.229985 535496.453985,139445.203985 535503.081985,139440.597985 535511.241985,139439.176985 535513.361985,139438.183985 535514.476985,139435.886985 535516.435985,139432.947985 535518.499985,139429.292985 535520.347985,139426.442985 535521.320985,139423.421985 535522.038985,139418.953985 535522.644985,139415.086985 535522.753985,139405.229985 535522.513985,139398.935985 535523.454985,139397.055985 535523.531985,139392.550985 535523.406985,139385.713985 535523.826985,139382.359985 535523.869985,139377.014985 535523.663985,139372.533985 535523.228985,139368.639985 535523.038985,139365.764985 535523.028985,139358.901985 535523.395985,139352.037985 535523.311985,139350.543985 535523.443985,139348.721985 535524.098985,139344.531985 535526.261985,139343.144985 535526.680985,139341.956985 535526.738985,139344.312985 535541.041985,139344.781985 535545.978985,139344.872985 535552.866985,139344.745985 535555.864985,139344.378985 535558.230985,139343.620985 535561.141985,139341.916985 535566.051985,139340.141985 535570.191985,139334.077985 535581.003985,139330.716985 535587.709985,139327.445985 535594.730985,139321.842985 535607.611985,139311.911985 535631.802985,139307.926985 535640.247985,139305.909985 535646.602985,139304.759985 535651.531985,139304.319985 535654.520985,139304.320985 535655.940985,139304.672985 535658.901985,139306.569985 535667.331985,139309.298985 535675.337985,139311.277985 535680.026985,139313.291985 535684.055985,139314.594985 535686.249985,139324.683985 535701.010985,139328.374985 535706.014985,139330.247985 535709.049985,139333.267985 535715.439985,139336.405985 535723.879985,139337.956985 535729.191985,139339.254985 535735.057985,139339.965985 535739.703985,139340.333985 535744.195985,139340.488985 535748.689985,139340.347985 535753.192985,139339.698985 535757.116985,139338.541985 535761.181985,139333.834985 535774.093985,139330.743985 535781.597985,139328.768985 535785.647985,139326.442985 535789.755985,139324.780985 535792.267985,139322.984985 535794.593985,139320.784985 535796.638985,139317.034985 535798.995985,139309.875985 535802.400985,139304.190985 535804.395985,139301.761985 535805.793985,139298.141985 535808.463985,139286.886985 535817.737985,139283.524985 535820.727985,139280.744985 535823.457985,139275.774985 535829.099985,139273.210985 535832.538985,139271.575985 535835.043985,139267.939985 535841.620985,139266.006985 535845.485985,139264.273985 535849.641985,139257.668985 535867.878985,139254.447985 535874.600985,139248.687985 535885.134985,139239.109985 535899.576985,139236.806985 535903.449985,139235.467985 535906.129985,139222.758985 535935.269985,139218.757985 535944.996985,139214.967985 535954.740985,139212.922985 535960.311985,139212.544985 535962.399985,139213.872985 535966.725985,139214.457985 535969.337985,139215.059985 535973.798985,139215.361985 535979.096985,139215.233985 535982.446985,139214.623985 535986.910985,139213.582985 535991.775985,139212.443985 535996.131985,139211.037985 536000.887985,139209.570985 536004.718985,139208.867985 536006.032985,139205.748985 536010.832985,139202.012985 536019.020985,139196.508985 536028.023985,139193.752985 536033.960985,139191.136985 536041.551985,139185.845985 536060.914985,139184.695985 536064.146985,139182.251985 536069.591985,139180.979985 536072.081985,139179.312985 536074.584985,139177.948985 536075.898985,139176.737985 536076.803985,139174.690985 536077.732985,139165.450985 536080.395985,139164.104985 536080.741985,139162.607985 536080.840985,139155.248985 536082.210985,139153.937985 536082.710985,139153.402985 536084.303985,139153.711985 536085.826985,139156.356985 536093.057985,139158.557985 536098.139985,139159.347985 536099.447985,139159.781985 536101.659985,139159.839985 536103.160985,139159.666985 536109.541985,139159.192985 536118.407985,139158.693985 536121.775985,139156.142985 536130.712985,139154.566985 536135.078985,139153.366985 536140.956985,139151.410985 536148.587985,139151.034985 536151.564985,139150.105985 536156.119985,139149.442985 536160.574985,139148.108985 536165.856985,139147.217985 536168.724985,139146.011985 536171.763985,139143.883985 536175.739985,139142.534985 536178.735985,139138.221985 536190.634985,139135.120985 536198.181985,139132.997985 536201.772985,139129.278985 536206.605985,139128.223985 536207.663985,139127.030985 536208.570985,139124.729985 536210.052985,139121.139985 536212.776985,139119.376985 536213.599985,139116.517985 536214.580985,139114.620985 536216.016985,139113.566985 536217.101985,139111.812985 536217.600985,139109.701985 536217.540985,139107.064985 536217.186985,139104.274985 536222.606985,139106.650985 536223.998985,139108.467985 536225.621985,139110.372985 536227.758985,139113.634985 536232.128985,139115.101985 536234.750985,139116.269985 536237.632985,139119.094985 536248.394985,139119.441985 536258.707985,139119.084985 536262.309985,139119.038985 536264.577985,139119.158985 536268.730985,139119.361985 536270.400985,139120.184985 536274.028985,139121.742985 536279.104985,139122.687985 536281.195985,139125.576985 536286.680985,139126.289985 536287.509985,139127.625985 536288.091985,139129.180985 536288.317985,139130.867985 536288.281985,139136.723985 536286.994985,139138.343985 536285.291985,139139.628985 536284.393985,139140.966985 536283.755985,139141.986985 536283.598985,139145.652985 536283.996985,139150.149985 536284.130985,139152.737985 536284.686985,139170.372985 536289.333985,139177.323985 536290.759985,139180.190985 536291.636985,139182.875985 536292.951985,139184.562985 536294.429985,139186.322985 536298.559985,139187.023985 536300.802985,139187.542985 536303.788985,139187.992985 536305.195985,139189.250985 536307.428985,139191.192985 536309.734985,139192.620985 536309.942985,139196.984985 536311.296985,139207.398985 536313.624985,139211.158985 536314.025985,139214.750985 536313.860985,139226.458985 536310.802985,139227.958985 536310.711985,139231.027985 536309.928985,139234.113985 536310.030985,139235.572985 536310.361985,139237.446985 536311.468985,139239.651985 536313.662985,139240.737985 536315.338985,139241.907985 536312.463985,139243.362985 536309.812985,139244.852985 536307.492985,139246.692985 536305.118985,139249.714985 536301.688985,139252.882985 536298.487985,139261.604985 536290.682985,139264.851985 536287.558985,139267.358985 536284.624985,139269.958985 536280.927985,139271.167985 536278.583985,139272.642985 536274.325985,139273.863985 536269.860985,139275.682985 536261.698985,139277.976985 536254.114985,139281.137985 536247.564985,139283.562985 536243.806985,139286.536985 536240.387985,139288.028985 536239.104985,139290.590985 536237.405985,139291.970985 536236.766985,139293.946985 536236.266985,139296.987985 536236.296985,139298.506985 536236.584985,139300.735985 536237.364985,139303.320985 536238.858985,139307.150985 536241.609985,139313.057985 536246.684985,139329.186985 536261.910985,139337.424985 536269.251985,139339.812985 536271.063985,139343.434985 536273.282985,139347.491985 536275.193985,139351.619985 536276.124985,139357.829985 536276.737985,139419.726985 536276.633985,139424.622985 536276.791985,139429.727985 536277.342985,139433.511985 536278.012985,139437.399985 536278.909985,139445.643985 536281.428985,139458.811985 536286.331985,139474.140985 536292.642985,139478.189985 536294.606985,139481.873985 536296.640985,139485.725985 536299.011985,139489.666985 536301.691985,139493.379985 536304.574985,139499.949985 536310.724985,139508.143985 536318.870985,139512.767985 536324.433985,139517.950985 536331.394985,139520.965985 536336.046985,139523.329985 536340.050985,139532.860985 536331.971985,139544.945985 536324.366985,139558.648985 536313.804985,139563.238985 536309.939985,139568.581985 536305.092985,139571.546985 536301.976985,139574.386985 536298.469985,139577.138985 536294.067985,139578.415985 536291.338985,139579.359985 536288.658985,139580.306985 536284.245985)) + MULTIPOLYGON(((139209.864361365 536222.972189994,139210.431297005 536221.517745343,139213.592297005 536214.967745343,139218.119433008 536206.899740567,139220.544433008 536203.141740567,139226.975410525 536194.584567191,139229.949410525 536191.165567191,139237.636669051 536183.52183426,139239.128669051 536182.23883426,139246.578605338 536176.600056987,139249.140605338 536174.901056987,139259.077204942 536169.348056245,139260.457204942 536168.709056245,139273.573099412 536164.058541158,139275.549099412 536163.558541158,139294.686837194 536161.270634297,139297.727837194 536161.300634297,139310.958972088 536162.609730201,139312.477972088 536162.897730201,139323.27902284 536165.79412301,139325.50802284 536166.57412301,139338.265174743 536172.42994117,139340.850174743 536173.92394117,139347.074678732 536177.944173297,139350.904678732 536180.695173297,139356.026133182 536184.722201688,139361.933133182 536189.797201688,139364.542337504 536192.147278345,139374.67174683 536201.709581426,139419.600969378 536201.634090866,139422.146068807 536201.673008262,139427.042068807 536201.831008262,139432.671246054 536202.225065431,139437.776246054 536202.776065431,139442.804190975 536203.491696336,139446.588190975 536204.161696336,139450.37232967 536204.932695061,139454.26032967 536205.829695061,139459.31637517 536207.183617171,139467.56037517 536209.702617171,139471.814386673 536211.143068372,139484.982386673 536216.046068372,139487.364579531 536216.979628547,139502.693579531 536223.290628547,139506.872946853 536225.162479124,139510.921946853 536227.126479124,139514.440572203 536228.949579268,139516.703269686 536230.198853611,139517.606430487 536227.611294244,139519.773402566 536222.110125623,139522.423402566 536216.090125623,139524.975408584 536210.854149756,139527.663408584 536205.843149756,139533.621765 536196.474161606,139536.361765 536192.798161606,139542.136400548 536185.946546017,139545.446400548 536182.464546017,139551.643555573 536176.644709606,139555.432555573 536173.470709606,139561.589895469 536168.829803886,139565.722895469 536166.035803886,139570.653377554 536162.973760946,139585.031377554 536154.797760946,139589.115600527 536152.638951691,139597.337600527 536148.611951691,139600.567941215 536147.123689662,139614.605788305 536141.055518402,139609.780279514 536138.860854268,139599.564476841 536134.670832585,139592.850953429 536132.168961781,139570.478033169 536124.332525032,139567.382442866 536123.171030486,139561.423442866 536120.784030486,139557.028291501 536118.858093707,139550.710291501 536115.845093707,139546.19592971 536113.501132072,139541.83592971 536111.046132072,139537.968651123 536108.712479275,139532.541651123 536105.210479275,139529.922961463 536103.441420152,139517.149119949 536094.414344958,139503.122045358 536084.988196452,139499.083924571 536082.075473624,139492.474924571 536076.966473624,139487.553968081 536072.812973623,139482.478968081 536068.141973623,139478.447490872 536064.13897891,139472.305490872 536057.55997891,139470.085647335 536055.073663495,139465.465647335 536049.661663495,139463.50451461 536047.265910279,139458.56651461 536040.972910279,139455.933024069 536037.404361165,139453.074024069 536033.280361165,139450.769238377 536029.747600218,139448.076238377 536025.354600218,139446.264916956 536022.233764829,139443.705916956 536017.569764829,139442.750176555 536015.770308056,139437.752885533 536006.04483069,139436.660390725 536004.151222451,139436.520633654 536003.934897271,139434.563198932 536001.278060521,139424.473850796 535988.88044492,139423.312028848 535987.415908034,139416.920028848 535979.148908034,139414.858650413 535976.351235667,139410.180650413 535969.684235667,139406.79238699 535964.397716835,139403.44738699 535958.663716836,139399.597759121 535951.114629906,139397.611759121 535946.607629906,139395.049803009 535939.952872795,139394.008803009 535936.810872795,139392.316306585 535930.901562704,139391.608306585 535927.982562704,139390.505453999 535922.573838389,139389.975453999 535919.377838389,139389.065423082 535910.988142787,139388.910423082 535907.996142787,139389.256202186 535895.946929482,139389.897202186 535890.096929482,139392.516075974 535877.044089153,139393.386075974 535874.095089153,139399.495783559 535859.37198736,139400.953783559 535856.70198736,139406.900793906 535847.485029425,139407.836793906 535846.244029425,139416.210843149 535836.886966555,139418.380843149 535834.836966555,139427.069812462 535827.77789636,139428.282449354 535827.062723795,139426.051808198 535825.55757826,139418.280774941 535819.536795955,139417.162774941 535818.546795955,139411.177513878 535812.614403045,139409.146513878 535810.361403045,139403.176776753 535802.672230565,139400.091205427 535810.16305141,139398.155617167 535814.471558711,139396.180617167 535818.521558711,139394.033365481 535822.60147794,139391.707365481 535826.70947794,139388.991944659 535831.139890635,139387.329944659 535833.651890635,139384.144194408 535838.104753743,139382.348194408 535840.430753743,139374.047542467 535849.526809658,139371.847542467 535851.571809658,139360.69611695 535860.137816064,139356.94611695 535862.494816064,139349.248784927 535866.725381087,139342.089784927 535870.130381087,139340.396090461 535870.828023817,139335.672157912 535874.720493871,139335.049995174 535875.273815283,139335.005800216 535875.323985896,139334.326249791 535876.553194682,139334.238154548 535876.729339594,139334.183755187 535876.859797612,139328.186511935 535893.418726482,139325.305023776 535900.288339493,139322.084023776 535907.010339493,139320.252874876 535910.583153757,139314.492874876 535921.117153757,139311.191451761 535926.587568066,139302.946140159 535939.020099926,139291.820459021 535964.529766174,139289.905363157 535969.185636576,139289.938432344 535969.530715635,139290.240432344 535974.828715635,139290.307297712 535981.960567098,139290.179297712 535985.310567098,139289.543408393 535992.601274487,139288.933408393 535997.065274487,139287.96379567 536002.604046235,139286.92279567 536007.469046235,139286.143478057 536010.74898812,139285.004478057 536015.10498812,139284.366950036 536017.394324958,139282.960950036 536022.150324958,139281.078410585 536027.708476865,139279.611410585 536031.539476865,139275.701425462 536040.099273923,139274.998425462 536041.413273923,139271.757242369 536046.897900362,139271.671203889 536047.030309693,139270.245880296 536050.154118467,139266.002269543 536058.140947471,139263.129272395 536062.840364862,139262.840581028 536063.678077464,139258.193605811 536080.684197504,139256.506257371 536086.057099241,139255.356257371 536089.289099241,139253.119457724 536094.859008386,139250.675457724 536100.304008386,139249.041831343 536103.711135421,139247.769831343 536106.201135421,139243.402934482 536113.655719233,139241.735934482 536116.158719233,139233.753605977 536125.716781793,139233.383126401 536129.39993291,139232.884126401 536132.76793291,139230.813455626 536142.361950041,139228.262455626 536151.298950041,139227.011345979 536155.174874632,139226.851289519 536155.958884527,139226.018301756 536159.579180725,139225.047552546 536163.366393004,139224.522159551 536166.552819283,139223.993843355 536169.143217853,139223.625986791 536171.615014223,139222.15973211 536178.94002488,139220.82573211 536184.22202488,139219.732210239 536188.108133427,139218.841210239 536190.976133427,139216.929413838 536196.389342743,139215.723413838 536199.428342743,139212.136823127 536207.154743435,139211.740680059 536207.894905485,139208.732925569 536216.192904714,139207.594144186 536219.139432547,139206.556147112 536221.665638259,139209.864361365 536222.972189994)),((139393.648507081 535668.974736443,139397.187012699 535662.377434254,139398.872012699 535659.858434254,139407.456267504 535649.256643269,139410.047267504 535646.593643269,139410.699960735 535646.038230011,139410.368589237 535645.800166734,139408.578589237 535644.268166734,139397.3959599 535632.354541231,139395.5549599 535629.905541231,139394.594734167 535628.386189625,139390.928598216 535636.814441846,139383.694768091 535654.435384807,139385.84169416 535657.576506395,139388.732034058 535661.495027351,139392.199486509 535666.626750626,139393.648507081 535668.974736443)),((139548.724566362 535611.506800266,139554.628778365 535611.137288574,139552.459746567 535610.579054857,139549.764858782 535609.652657427,139548.724566362 535611.506800266)),((139593.98450066 535612.829328195,139594.118510319 535612.850765761,139596.104127044 535613.235551013,139596.587685007 535612.311565728,139593.98450066 535612.829328195)),((139673.793292709 535540.214143275,139675.386311294 535539.763978944,139678.865311294 535539.132978944,139694.228840552 535537.95509534,139697.259840552 535538.03509534,139702.578710636 535538.674149893,139703.940626818 535536.15791517,139708.219930733 535529.188390852,139711.366930733 535524.639390852,139714.415105893 535520.539122747,139716.288105893 535518.191122747,139721.898840694 535511.915115248,139723.960840694 535509.854115248,139730.603961741 535503.95788024,139732.986961741 535502.08288024,139742.32994248 535495.806278369,139745.55794248 535493.973278369,139757.643371885 535488.463159874,139760.512371885 535487.451159874,139769.898169371 535484.812425618,139771.383169371 535484.497425618,139780.369942617 535483.153836792,139782.414942617 535482.973836792,139791.720962751 535482.734686659,139793.230962751 535482.789686659,139804.33595446 535484.027071477,139807.34095446 535484.591071477,139819.768277813 535488.052351736,139821.373277813 535488.652351737,139830.347113557 535492.696619516,139831.651113557 535493.390619516,139839.770416859 535498.399075464,139842.236416859 535500.146075465,139848.23313285 535504.870517295,139851.70613285 535507.905517294,139860.17101037 535516.607696199,139863.36701037 535520.475696199,139866.175448217 535524.094239862,139869.322448217 535528.415239862,139871.088962473 535530.948783811,139876.518962473 535539.088783811,139877.61079229 535540.773960122,139886.91079229 535555.557960122,139888.103132131 535557.519362678,139893.470132131 535566.660362678,139894.992049347 535569.380385515,139899.328049347 535577.522385515,139900.477386794 535579.771023682,139901.31516658 535581.480533089,139900.983503197 535562.558365808,139900.97647671 535560.423170544,139901.10447671 535548.728170544,139901.231410096 535545.110912013,139902.136410096 535529.843912013,139902.176129275 535529.218157315,139905.106129275 535485.921157315,139905.536580389 535481.504616269,139906.632580389 535472.903616269,139907.727569766 535466.521787328,139909.166569766 535459.871787328,139910.517916095 535454.570342114,139912.478916095 535447.903342114,139913.722873363 535444.05972708,139915.809873363 535438.15872708,139917.379333372 535434.099735655,139918.541333372 535431.335735655,139920.880565071 535426.301581819,139923.435565071 535421.296581819,139928.281284908 535413.127148888,139929.956284908 535410.672148888,139938.042764184 535400.756522259,139940.090764184 535398.642522259,139948.768873328 535390.970285527,139951.196873328 535389.137285526,139961.770241772 535382.461156606,139964.409241772 535381.088156606,139976.45795545 535376.097659227,139979.338955449 535375.188659227,139988.77191981 535372.871964344,139993.85991981 535371.966964344,140003.078198775 535370.910277303,140007.592198775 535370.674277303,140017.949911065 535370.849153224,140022.206911065 535371.216153224,140031.233391578 535372.551462914,140037.320391578 535373.834462914,140045.801435499 535376.14861572,140048.644435499 535377.10661572,140054.954143977 535379.555038384,140060.685143977 535382.082038384,140066.886939636 535385.166167283,140072.489939636 535388.283167283,140079.526078487 535392.725680129,140084.115078487 535395.992680129,140089.15466377 535399.91414691,140094.05166377 535404.07114691,140098.726512732 535408.516819305,140103.01981089 535402.9389708,140108.999803458 535396.075505027,140111.805803459 535393.224505026,140114.807696967 535390.339232673,140118.141696967 535387.308232673,140123.301512613 535383.022699546,140127.592512613 535379.771699546,140133.352921212 535375.815849286,140137.178921212 535373.442849286,140142.722507012 535370.322038166,140146.310507012 535368.498038166,140152.630459311 535365.644813416,140156.815459311 535363.983813416,140164.772803628 535361.330259624,140168.660803628 535360.271259624,140175.448108298 535358.756711754,140179.890108298 535357.979711754,140186.892449945 535357.092035099,140190.838930916 535356.779522799,140190.884425591 535356.224874951,140191.384904544 535347.063467311,140191.846641347 535331.808221288,140192.00941674 535310.471395717,140191.991024918 535301.212427353,140191.541104092 535284.786536347,140191.513874886 535283.098336958,140191.470874886 535274.271336958,140191.512545689 535272.093904653,140185.720426649 535279.58800745,140184.420426649 535280.97500745,140171.647989504 535291.857369263,140156.775783199 535299.627725036,140140.548240181 535303.897127438,140139.221240181 535304.091127438,140122.971661697 535304.685309063,140118.859796961 535304.388466569,140117.960082912 535304.382303265,140112.418874501 535305.549512423,140097.46578745 535307.158279406,140093.16578745 535307.187279406,140083.072252838 535306.573629867,140079.573252838 535306.122629867,140066.212696596 535303.140898521,140064.286696596 535302.521898521,140056.410017786 535299.491650564,140053.664017786 535298.253650564,140045.91041656 535293.998970293,140043.207364236 535294.944090043,140040.303364236 535295.718090043,140034.856746414 535296.954548187,140031.173746414 535297.647548187,140026.999015077 535298.311851479,140022.534015077 535298.893851479,140018.928973161 535299.275404514,140014.668973161 535299.622404514,140010.563970137 535299.843739094,140006.255970137 535299.957739094,139999.458235513 535299.829344348,139995.913235513 535299.601344348,139981.836229486 535297.337934244,139972.730229486 535294.967934244,139964.610449657 535292.353341535,139953.632449657 535288.115341535,139948.432359296 535285.878890735,139944.380359296 535283.951890735,139936.727452829 535279.749709235,139932.54725805 535277.126685853,139926.439384794 535273.709175962,139921.007929164 535270.359035674,139918.405929164 535268.597035674,139909.748922084 535261.754373676,139907.549922084 535259.736373676,139902.684028655 535254.839806614,139898.637028655 535250.373806614,139896.691574038 535248.139807316,139895.458387161 535246.665927017,139891.433330773 535242.638342725,139889.65545913 535240.797588631,139886.50245913 535237.419588631,139883.656864185 535233.923766068,139882.478064239 535242.340513731,139880.651880309 535251.332766992,139879.721880309 535254.806766992,139876.779680676 535263.586783247,139876.060577869 535265.360796302,139874.79020805 535269.248934921,139871.822763689 535276.889159193,139870.931763689 535278.857159193,139864.05623411 535290.925295228,139862.33123411 535293.390295228,139858.115934725 535298.859485986,139855.753934725 535301.648485986,139850.866768772 535306.889426252,139846.815768772 535310.837426252,139838.591137687 535317.775172015,139835.105137687 535320.311172015,139824.424394308 535326.794235263,139823.089394308 535327.459235263,139813.208246239 535331.530645088,139810.500246239 535332.426645088,139803.02729072 535334.477546416,139801.54729072 535334.802546416,139792.31873936 535336.233801626,139790.32573936 535336.416801626,139772.739552331 535335.485350733,139772.678742189 535336.301651896,139771.875901206 535342.997515306,139770.759901206 535349.728515306,139769.418622067 535356.093631949,139768.022622067 535361.536631949,139766.860140665 535365.591636888,139763.692140665 535375.573636888,139761.184890728 535382.329329996,139759.594890728 535386.054329996,139756.15272478 535393.079269016,139753.88572478 535397.153269016,139748.450918814 535405.548751581,139746.657918814 535407.950751581,139742.330206559 535413.229145,139738.751206559 535417.210145,139734.43001005 535421.6352482,139722.41001005 535432.9692482,139716.367341855 535437.98096576,139714.053470745 535440.271929189,139711.191470745 535442.955929189,139707.861562168 535445.898268999,139705.549562168 535447.822268999,139696.847652128 535454.068662605,139693.759652128 535455.966662605,139685.055743243 535460.55858256,139677.244733764 535464.044948981,139679.161996055 535473.022424303,139679.281976452 535474.222588568,139680.352720534 535480.998379059,139680.927760864 535485.527580863,139681.460760864 535491.071580863,139681.792723809 535499.605092802,139681.765723809 535501.098092802,139681.041311863 535510.228084524,139680.578311863 535513.507084524,139679.086384778 535521.168254061,139677.593384778 535527.155254061,139676.370083997 535531.49952852,139675.069518067 535535.63677325,139674.076936689 535539.365414627,139673.793292709 535540.214143275)),((140348.349868583 535048.405807409,140349.040549268 535048.491083095,140353.494549268 535049.151083095,140353.949912521 535049.230533165,140353.367156934 535038.462150023,140353.432156934 535035.425150023,140354.487097864 535025.675012826,140353.046982524 535024.921582566,140352.820628165 535026.219392737,140352.568155198 535027.591439053,140349.704155198 535042.381439053,140349.089465707 535045.253294723,140348.349868583 535048.405807409)),((140470.06810426 535126.311451101,140472.345219058 535130.026794286,140473.794219058 535132.659794286,140476.807853807 535138.779309401,140477.871853807 535141.213309401,140477.93607927 535141.386279119,140478.88796169 535137.252852428,140479.90027765 535133.341840454,140482.491412105 535124.338178506,140481.861863133 535122.666316784,140481.426968742 535122.285601366,140481.294236525 535122.340592859,140481.273605186 535122.290795276,140479.748404943 535122.995617904,140476.265404943 535124.407617904,140470.06810426 535126.311451101))) + + #51 Polygon - gid: 2551 + + POLYGON((167603.370985 536610.679985,167627.312985 536610.283985,167671.695985 536624.130985,167685.005985 536588.552985,167710.046985 536546.816985,167709.176985 536506.215985,167690.358985 536469.760985,167672.327985 536431.817985,167630.130985 536412.716985,167595.078985 536402.756985,167542.703985 536389.811985,167506.924985 536432.458985,167469.539985 536465.608985,167446.234985 536432.913985,167420.629985 536414.438985,167396.383985 536428.615985,167396.997985 536430.166985,167397.062985 536435.715985,167395.979985 536476.018985,167395.650985 536485.335985,167393.612985 536527.161985,167393.405985 536534.767985,167393.625985 536539.256985,167394.056985 536541.856985,167395.254985 536546.202985,167396.337985 536548.977985,167398.387985 536552.990985,167400.219985 536555.799985,167403.048985 536559.308985,167405.697985 536561.920985,167409.163985 536564.807985,167412.098985 536566.934985,167418.852985 536571.198985,167422.776985 536573.403985,167443.578985 536583.279985,167447.746985 536585.454985,167451.828985 536587.817985,167455.912985 536590.371985,167464.088985 536595.878985,167471.759985 536601.610985,167474.551985 536604.070985,167511.324985 536596.279985,167534.715985 536616.533985,167548.609985 536632.724985,167575.399985 536624.196985,167603.370985 536610.679985)) + POLYGON((167518.99487489 536521.948060763,167523.287951439 536522.240215727,167536.666844921 536525.691103894,167549.185676584 536531.537664739,167560.419577491 536539.581475424,167566.761745414 536545.073086262,167570.737869345 536543.151622347,167586.028245886 536537.712667658,167602.130656777 536535.690241795,167626.072656777 536535.294241795,167629.371484375 536535.503008799,167634.600578813 536526.787642581,167634.56625147 536525.185660445,167623.714310522 536504.162836168,167622.618760385 536501.952008114,167616.376875282 536488.817082348,167604.275130745 536483.339076272,167575.825658869 536475.255179779,167570.105583803 536473.841406572,167564.382352842 536480.663247059,167556.684223921 536488.575098034,167519.299223921 536521.725098034,167518.99487489 536521.948060763)) + + #52 Polygon - gid: 2552 + + POLYGON((139328.097985 537673.993985,139333.694985 537673.778985,139339.685985 537674.116985,139343.484985 537674.560985,139347.201985 537675.198985,139349.266985 537662.315985,139350.795985 537650.307985,139350.815985 537648.813985,139350.170985 537642.977985,139349.497985 537639.338985,139348.573985 537636.478985,139347.401985 537633.734985,139336.285985 537613.547985,139333.452985 537607.471985,139331.129985 537601.716985,139328.904985 537595.513985,139326.508985 537587.806985,139319.008985 537559.965985,139317.097985 537554.004985,139314.973985 537548.226985,139312.575985 537542.468985,139306.136985 537528.279985,139299.926985 537514.031985,139288.894985 537489.864985,139279.105985 537467.759985,139274.759985 537456.114985,139264.851985 537426.033985,139261.266985 537416.840985,139258.190985 537410.222985,139246.959985 537387.429985,139229.076985 537347.488985,139217.864985 537323.218985,139213.134985 537312.367985,139200.100985 537278.784985,139189.030985 537249.549985,139177.539985 537217.909985,139166.856985 537192.155985,139162.415985 537180.965985,139158.622985 537170.454985,139150.636985 537146.582985,139135.766985 537108.920985,139128.573985 537089.138985,139126.052985 537082.845985,139123.397985 537077.227985,139120.597985 537072.327985,139117.710985 537068.104985,139114.766985 537064.522985,139112.716985 537062.323985,139107.519985 537058.085985,139104.012985 537055.863985,139101.294985 537054.558985,139100.275085 537053.707685,139098.476985 537053.526985,139095.233985 537052.734985,139092.248985 537052.457985,139089.268985 537052.711985,139087.784985 537053.032985,139084.678985 537054.199985,139080.094985 537057.047985,139075.290985 537060.908985,139069.415985 537066.744985,139061.822985 537075.205985,139058.488985 537078.691985,139054.032985 537082.720985,139050.724985 537085.113985,139048.133985 537086.645985,139045.410985 537087.957985,139042.557985 537088.968985,139040.380985 537089.363985,139037.334985 537089.294985,139035.878985 537088.972985,139033.462985 537087.869985,139030.014985 537085.492985,139025.487985 537081.543985,139018.084985 537074.336985,139013.673985 537069.604985,139009.409985 537064.385985,139006.208985 537059.858985,139002.414985 537053.912985,138998.748985 537047.430985,138995.999985 537041.968985,138993.942985 537037.449985,138990.339985 537028.148985,138987.242985 537017.910985,138981.534985 536995.496985,138978.988985 536986.537985,138977.585985 536982.260985,138976.022985 536978.202985,138973.066985 536972.030985,138970.402985 536968.255985,138968.487985 536965.910985,138966.359985 536963.834985,138963.995985 536962.186985,138961.235985 536960.885985,138958.980985 536960.276985,138955.951985 536960.106985,138952.749985 536960.533985,138949.931985 536961.489985,138935.372985 536968.382985,138907.537985 536979.752985,138901.926985 536982.393985,138896.463985 536985.384985,138891.293985 536988.728985,138886.976985 536992.219985,138884.882985 536994.338985,138883.500985 536996.130985,138882.011985 536998.803985,138881.564985 537000.190985,138881.413985 537001.324985,138881.475985 537002.858985,138881.775985 537004.391985,138882.629985 537006.611985,138883.396985 537007.887985,138887.677985 537013.078985,138890.845985 537016.283985,138895.056985 537020.219985,138905.804985 537029.443985,138913.316985 537036.186985,138920.975985 537043.717985,138932.473985 537056.309985,138954.679985 537081.634985,138960.113985 537088.091985,138965.986985 537095.578985,138977.422985 537111.070985,138982.004985 537117.556985,138986.599985 537124.630985,138993.679985 537137.096985,139005.600985 537160.149985,139020.608985 537187.869985,139033.486985 537210.770985,139044.059985 537228.558985,139053.006985 537244.088985,139060.092985 537255.519985,139080.707985 537286.417985,139090.120985 537300.972985,139103.078985 537322.123985,139116.233985 537344.359985,139119.222985 537349.562985,139122.383985 537355.881985,139125.129985 537362.380985,139130.126985 537375.644985,139131.858985 537379.337985,139134.566985 537383.961985,139137.705985 537388.053985,139140.085985 537390.525985,139142.627985 537392.724985,139146.633985 537395.533985,139157.818985 537402.034985,139160.679985 537403.920985,139163.066985 537405.758985,139166.396985 537408.850985,139168.416985 537411.072985,139169.280985 537412.268985,139170.702985 537414.781985,139171.293985 537416.228985,139171.679985 537417.695985,139171.789985 537419.141985,139171.407985 537421.760985,139170.997985 537423.212985,139169.908985 537426.097985,139168.082985 537430.080985,139164.605985 537435.318985,139160.534985 537442.262985,139157.693985 537447.550985,139155.404985 537452.605985,139153.763985 537456.816985,139152.517985 537461.396985,139151.670985 537466.320985,139151.198985 537471.522985,139151.025985 537479.913985,139151.322985 537488.108985,139151.969985 537496.769985,139153.000985 537505.180985,139154.541985 537513.906985,139156.515985 537522.716985,139158.932985 537531.649985,139161.825985 537540.914985,139164.822985 537549.648985,139168.521985 537559.663985,139171.990985 537568.494985,139174.560985 537574.436985,139178.737985 537582.989985,139191.871985 537607.370985,139200.694985 537624.740985,139204.472985 537633.189985,139210.692985 537649.126985,139214.176985 537657.443985,139221.014985 537672.431985,139229.336985 537691.644985,139232.848985 537698.786985,139235.354985 537703.365985,139240.767985 537712.073985,139247.162985 537721.413985,139250.052985 537724.904985,139254.219985 537729.231985,139256.988985 537731.610985,139259.413985 537733.383985,139264.102985 537736.538985,139269.901985 537740.072985,139273.000985 537741.589985,139275.922985 537742.341985,139277.410985 537742.524985,139279.635985 537727.507985,139281.333985 537721.724985,139283.443985 537716.470985,139285.539985 537712.482985,139287.579985 537709.020985,139295.083985 537697.805985,139298.702985 537692.885985,139303.840985 537687.353985,139308.168985 537683.551985,139313.904985 537679.507985,139316.481985 537677.948985,139319.149985 537676.579985,139323.819985 537674.867985,139328.097985 537673.993985)) + POLYGON( EMPTY) + + #53 Polygon - gid: 2553 + + POLYGON((159078.115985 538635.625985,159073.785985 538635.186985,159069.280985 538635.348985,159064.698985 538635.981985,159060.140985 538636.953985,159053.718985 538638.713985,159049.352985 538640.261985,159045.098985 538642.416985,159041.557985 538645.223985,159040.211985 538646.934985,159038.272985 538650.769985,159036.869985 538655.096985,159035.937985 538659.695985,159035.410985 538664.343985,159035.238985 538667.833985,159035.436985 538672.256985,159036.130985 538676.707985,159037.159985 538681.153985,159040.569985 538692.905985,159043.786985 538701.322985,159048.117985 538711.817985,159054.692985 538726.630985,159055.753985 538730.994985,159058.420985 538739.629985,159061.765985 538747.994985,159063.932985 538752.384985,159068.550985 538760.122985,159075.501985 538770.881985,159083.125985 538782.032985,159087.563985 538789.479985,159095.628985 538805.198985,159112.434985 538839.730985,159114.544985 538843.709985,159116.844985 538847.550985,159120.775985 538852.888985,159123.785985 538856.247985,159126.988985 538859.454985,159136.194985 538868.100985,159140.257985 538871.235985,159142.189985 538871.273985,159143.808985 538868.428985,159144.961985 538864.099985,159145.681985 538858.985985,159146.004985 538853.787985,159146.011985 538850.486985,159145.553985 538846.088985,159144.577985 538841.705985,159142.124985 538832.929985,159141.174985 538828.511985,159140.509985 538823.611985,159139.715985 538814.637985,159139.301985 538806.178985,159139.157985 538797.168985,159139.285985 538792.663985,159139.602985 538788.179985,159140.747985 538778.977985,159143.071985 538765.663985,159144.541985 538759.111985,159147.121985 538750.372985,159148.229985 538746.003985,159148.933985 538741.616985,159149.054985 538739.850985,159148.987985 538735.412985,159148.521985 538730.945985,159146.822985 538722.006985,159144.223985 538711.122985,159142.868985 538706.798985,159141.212985 538702.601985,159140.035985 538700.141985,159137.864985 538696.224985,159135.480985 538692.403985,159132.936985 538688.667985,159128.117985 538682.115985,159125.304985 538678.613985,159114.153985 538665.988985,159111.392985 538662.402985,159106.122985 538654.963985,159103.346985 538651.417985,159099.169985 538647.188985,159095.641985 538644.364985,159091.850985 538641.679985,159087.859985 538639.280985,159083.733985 538637.315985,159079.537985 538635.934985,159078.115985 538635.625985)) + POLYGON( EMPTY) + + #54 Polygon - gid: 2554 + + POLYGON((159293.559985 538980.522985,159275.390985 538925.668985,159258.421985 538914.962985,159239.576985 538917.108985,159216.488985 538918.359985,159211.120985 538917.908985,159109.160985 538909.360985,159070.236985 538904.177985,158994.276985 538919.645985,158907.657985 538925.081985,158879.874985 538905.635985,158856.684985 538889.787985,158848.906985 538928.927985,158849.561985 538935.309985,158856.845985 538954.454985,158919.290985 538985.661985,158941.977985 538986.370985,158963.373985 538974.307985,159015.169985 538975.497985,159047.536985 538978.284985,159103.429985 539036.779985,159124.581985 539056.686985,159201.858985 539071.122985,159248.370985 539062.766985,159298.256985 538995.795985,159293.559985 538980.522985)) + POLYGON((159178.260710927 538990.41719613,159202.122936517 538994.874862559,159205.932369085 538994.190488235,159206.951084137 538992.82288278,159204.848542186 538992.646234788,159178.260710927 538990.41719613)) + + #55 Polygon - gid: 2555 + + POLYGON((157894.850985 539376.542985,157892.525985 539323.248985,157914.055985 539274.176985,157921.162985 539246.664985,157923.305985 539204.844985,157931.860985 539190.504985,157926.415985 539170.883985,157884.235985 539120.656985,157872.168985 539101.762985,157863.337985 539018.735985,157870.107985 538987.808985,157855.347985 538912.078985,157845.930985 538889.356985,157836.700985 538868.127985,157832.085985 538857.051985,157829.933985 538849.014985,157827.652985 538828.317985,157824.558985 538808.198985,157824.169985 538803.715985,157824.279985 538799.462985,157824.905985 538795.026985,157826.159985 538791.593985,157828.431985 538787.680985,157830.534985 538785.180985,157833.976985 538782.242985,157836.893985 538780.476985,157841.164985 538778.627985,157845.477985 538777.369985,157850.291985 538776.294985,157855.209985 538775.547985,157860.070985 538775.108985,157864.887985 538774.919985,157869.668985 538774.988985,157874.460985 538775.379985,157879.234985 538776.127985,157883.962985 538777.336985,157888.619985 538779.057985,157893.193985 538781.401985,157897.645985 538784.384985,157901.081985 538787.293985,157905.846985 538792.271985,157913.197985 538801.228985,157916.806985 538805.366985,157919.960985 538808.577985,157924.360985 538812.466985,157928.241985 538815.462985,157932.185985 538818.104985,157936.120985 538820.297985,157940.258985 538822.065985,157944.049985 538823.115985,157948.470985 538823.935985,157951.507985 538824.056985,157957.445985 538823.609985,157962.089985 538822.710985,157966.395985 538821.399985,157967.516985 538821.197985,157978.098985 538820.149985,157983.664985 538819.095985,157987.936985 538817.671985,157993.610985 538815.038985,158009.406985 538806.036985,158013.444985 538804.049985,158021.216985 538800.892985,158025.239985 538799.556985,158029.581985 538798.376985,158033.885985 538797.537985,158038.348985 538796.937985,158047.069985 538796.476985,158055.493985 538796.531985,158059.440985 538796.795985,158063.897985 538797.395985,158067.999985 538798.407985,158072.465985 538799.848985,158076.903985 538801.904985,158090.543985 538808.987985,158095.284985 538811.078985,158100.145985 538812.821985,158105.063985 538814.186985,158109.978985 538815.246985,158114.795985 538816.011985,158119.457985 538816.484985,158124.006985 538816.661985,158128.505985 538816.527985,158146.349985 538815.322985,158150.970985 538815.210985,158155.747985 538815.325985,158160.700985 538815.703985,158188.319985 538818.681985,158198.973985 538820.038985,158224.467985 538824.125985,158249.631985 538827.579985,158282.513985 538833.577985,158297.911985 538835.739985,158309.261985 538836.962985,158322.577985 538838.114985,158350.431985 538840.147985,158373.537985 538841.500985,158393.243985 538842.897985,158403.919985 538843.057985,158417.449985 538842.716985,158446.769985 538842.727985,158454.328985 538842.431985,158477.319985 538840.930985,158485.069985 538839.962985,158487.523985 538839.435985,158491.846985 538838.176985,158493.370985 538837.623985,158497.890985 538835.417985,158501.542985 538832.151985,158503.237985 538827.961985,158503.543985 538826.486985,158503.986985 538821.992985,158504.118985 538819.313985,158504.107985 538811.859985,158503.701985 538805.305985,158502.893985 538800.236985,158501.004985 538795.729985,158497.499985 538792.873985,158495.013985 538791.985985,158490.503985 538790.995985,158485.352985 538790.283985,158475.110985 538789.285985,158460.091985 538788.446985,158443.718985 538788.015985,158419.535985 538788.139985,158370.102985 538785.725985,158363.523985 538785.576985,158341.759985 538785.543985,158328.013985 538784.975985,158315.142985 538784.111985,158309.210985 538783.546985,158303.783985 538782.812985,158298.653985 538781.775985,158293.695985 538780.383985,158288.891985 538778.574985,158284.493985 538776.409985,158280.587985 538773.824985,158277.161985 538770.813985,158274.219985 538767.365985,158271.819985 538763.557985,158269.485985 538759.344985,158267.810985 538755.165985,158266.174985 538750.044985,158265.046985 538745.351985,158264.334985 538740.709985,158264.009985 538736.128985,158263.951985 538731.628985,158264.820985 538714.602985,158264.696985 538711.176985,158264.065985 538706.727985,158263.152985 538703.633985,158261.153985 538699.601985,158258.338985 538696.437985,158254.234985 538693.033985,158248.922985 538690.248985,158244.763985 538688.523985,158238.701985 538686.365985,158219.956985 538680.881985,158214.905985 538679.588985,158209.880985 538678.512985,158204.789985 538677.634985,158194.991985 538676.496985,158190.391985 538676.269985,158185.894985 538676.461985,158181.499985 538677.416985,158177.267985 538678.902985,158173.525985 538681.123985,158170.075985 538684.071985,158167.147985 538687.454985,158155.693985 538703.261985,158152.504985 538707.158985,158149.100985 538710.705985,158145.361985 538713.823985,158141.173985 538716.406985,158136.519985 538718.383985,158131.652985 538719.748985,158126.839985 538720.697985,158117.628985 538722.144985,158113.056985 538722.697985,158108.422985 538723.049985,158103.729985 538723.101985,158099.001985 538722.677985,158094.281985 538721.555985,158089.580985 538719.729985,158084.972985 538717.302985,158080.509985 538714.483985,158076.807985 538711.924985,158064.225985 538702.839985,158059.555985 538699.062985,158055.796985 538695.251985,158052.555985 538690.995985,158049.871985 538686.466985,158047.646985 538681.856985,158045.714985 538677.292985,158042.545985 538668.600985,158041.272985 538664.284985,158040.567985 538660.514985,158040.181985 538656.045985,158040.422985 538653.092985,158041.614985 538648.744985,158042.988985 538646.338985,158045.975985 538642.906985,158049.107985 538640.411985,158053.137985 538637.772985,158057.450985 538635.399985,158069.991985 538628.978985,158073.367985 538626.988985,158076.908985 538624.277985,158078.558985 538622.151985,158080.301985 538617.970985,158080.363985 538614.351985,158079.497985 538609.782985,158078.086985 538605.522985,158076.318985 538601.292985,158070.542985 538589.426985,158068.926985 538585.236985,158067.994985 538581.148985,158067.361985 538576.584985,158067.374985 538571.859985,158067.748985 538567.085985,158068.393985 538562.314985,158070.227985 538552.962985,158072.642985 538543.813985,158074.086985 538539.333985,158078.921985 538526.522985,158080.207985 538522.633985,158081.174985 538518.267985,158081.197985 538515.026985,158080.286985 538510.603985,158078.490985 538507.288985,158075.655985 538503.563985,158072.129985 538500.224985,158068.272985 538497.122985,158064.230985 538494.194985,158048.184985 538483.456985,158044.526985 538480.501985,158041.153985 538477.160985,158038.257985 538473.456985,158035.905985 538469.491985,158034.038985 538465.378985,158032.606985 538461.112985,158031.773985 538456.880985,158031.263985 538452.412985,158031.321985 538448.226985,158031.779985 538443.737985,158032.454985 538439.607985,158033.482985 538435.224985,158034.695985 538431.234985,158036.329985 538427.040985,158038.173985 538423.260985,158040.536985 538419.428985,158042.856985 538416.351985,158048.788985 538409.566985,158051.573985 538406.967985,158055.068985 538404.117985,158061.460985 538399.268985,158063.495985 538397.453985,158066.529985 538394.137985,158067.820985 538392.177985,158069.642985 538388.050985,158070.119985 538385.776985,158070.207985 538381.247985,158069.715985 538378.650985,158068.212985 538374.373985,158066.928985 538371.761985,158061.014985 538361.608985,158059.800985 538358.879985,158058.368985 538354.611985,158057.626985 538350.721985,158057.157985 538346.234985,158056.977985 538341.777985,158057.089985 538332.997985,158057.300985 538328.502985,158057.558985 538324.295985,158058.435985 538316.173985,158059.366985 538311.783985,158060.130985 538309.651985,158062.391985 538305.757985,158063.681985 538304.510985,158067.577985 538302.144985,158069.820985 538301.225985,158074.188985 538300.056985,158076.684985 538299.637985,158081.181985 538299.322985,158083.170985 538299.331985,158087.634985 538299.892985,158089.280985 538300.425985,158093.269985 538302.556985,158095.089985 538304.054985,158098.111985 538307.423985,158100.076985 538310.360985,158102.302985 538314.444985,158106.037985 538322.825985,158109.425985 538331.312985,158113.039985 538339.731985,158115.042985 538343.775985,158117.384985 538347.618985,158119.861985 538350.533985,158123.195985 538353.524985,158126.449985 538355.133985,158130.893985 538356.553985,158135.882985 538357.249985,158141.180985 538357.583985,158152.139985 538357.780985,158168.051985 538357.678985,158188.401985 538357.183985,158202.609985 538356.222985,158207.082985 538355.729985,158210.973985 538354.835985,158215.136985 538353.233985,158217.729985 538351.307985,158220.493985 538347.735985,158221.433985 538344.432985,158221.372985 538339.617985,158219.946985 538335.383985,158217.662985 538330.880985,158214.641985 538326.800985,158211.346985 538323.025985,158207.875985 538319.480985,158200.767985 538312.736985,158193.677985 538306.380985,158190.103985 538303.374985,158186.291985 538300.525985,158182.249985 538297.930985,158166.312985 538289.347985,158151.859985 538281.067985,158148.211985 538277.990985,158145.853985 538274.126985,158143.951985 538269.908985,158142.731985 538265.633985,158142.984985 538262.325985,158145.929985 538254.323985,158147.844985 538250.241985,158155.192985 538236.687985,158156.224985 538234.422985,158157.763985 538230.195985,158158.398985 538227.494985,158158.947985 538223.020985,158158.877985 538219.108985,158158.464985 538214.348985,158157.713985 538209.333985,158156.661985 538204.204985,158155.368985 538199.075985,158152.362985 538189.255985,158144.650985 538168.703985,158142.349985 538161.187985,158141.388985 538156.791985,158140.973985 538153.813985,158140.468985 538146.374985,158140.397985 538134.390985,158140.686985 538124.819985,158141.168985 538120.349985,158141.665985 538118.248985,158143.141985 538113.987985,158143.956985 538112.177985,158146.935985 538107.017985,158150.157985 538102.798985,158153.495985 538099.192985,158156.280985 538095.660985,158156.827985 538094.007985,158157.212985 538089.323985,158155.053985 538085.353985,158154.319985 538084.377985,158151.243985 538081.080985,158149.720985 538079.744985,158146.073985 538077.099985,158143.919985 538075.876985,158139.789985 538074.073985,158137.153985 538073.271985,158132.717985 538072.477985,158129.626985 538072.391985,158125.124985 538072.754985,158121.831985 538073.284985,158117.451985 538074.342985,158114.286985 538075.324985,158110.105985 538076.993985,158106.980985 538078.619985,158103.162985 538081.015985,158099.949985 538083.412985,158087.029985 538094.229985,158083.349985 538096.801985,158081.179985 538097.975985,158076.918985 538099.391985,158075.075985 538099.453985,158070.640985 538098.406985,158068.071985 538096.893985,158064.644985 538093.890985,158062.142985 538090.949985,158059.592985 538087.217985,158057.747985 538083.957985,158044.570985 538058.204985,158041.020985 538049.863985,158035.247985 538034.982985,158032.494985 538030.015985,158030.781985 538028.331985,158026.737985 538025.714985,158021.573985 538025.298985,158016.216985 538026.502985,158012.235985 538028.622985,158011.213985 538029.459985,158008.190985 538032.821985,158007.233985 538034.176985,158004.100985 538039.870985,157996.432985 538057.069985,157989.897985 538069.852985,157982.231985 538086.803985,157980.959985 538091.121985,157980.237285 538096.385085,157980.018985 538098.246985,157981.218985 538102.537985,157982.150985 538106.968985,157982.792985 538111.477985,157983.105985 538116.000985,157983.049985 538120.473985,157982.818985 538123.211985,157982.150985 538127.670985,157981.161985 538132.109985,157979.900985 538136.476985,157977.381985 538143.277985,157975.445985 538147.335985,157973.268985 538151.299985,157970.931985 538155.180985,157966.403985 538162.108985,157960.987985 538169.299985,157944.405985 538190.387985,157938.918985 538197.853985,157933.800985 538205.258985,157925.858985 538217.287985,157921.028985 538224.884985,157915.684985 538233.737985,157911.252985 538241.570985,157904.469985 538254.211985,157889.954985 538283.213985,157872.365985 538317.704985,157869.421985 538324.117985,157865.994985 538332.439985,157850.146985 538373.508985,157848.054985 538378.057985,157843.903985 538386.079985,157839.265985 538393.818985,157836.681985 538397.474985,157835.511985 538398.919985,157832.386985 538402.141985,157825.693985 538408.250985,157822.657985 538411.557985,157816.062985 538420.021985,157813.484985 538423.769985,157811.194985 538427.638985,157809.201985 538431.900985,157807.927985 538436.127985,157807.156985 538440.551985,157806.141985 538449.623985,157805.406985 538454.090985,157803.584985 538462.511985,157801.351985 538471.241985,157798.925985 538478.573985,157797.268985 538482.902985,157795.271985 538486.997985,157792.758985 538490.567985,157789.944985 538493.109985,157785.739985 538495.510985,157781.509985 538496.489985,157779.126985 538496.112985,157774.783985 538493.943985,157771.498985 538490.729985,157770.302985 538487.250985,157769.943985 538482.564985,157769.120985 538478.016985,157765.407985 538467.734985,157763.532985 538463.466985,157761.262985 538459.640985,157758.444985 538456.507985,157757.260985 538455.596985,157753.480985 538453.635985,157749.173985 538452.289985,157739.939985 538450.302985,157735.492985 538449.094985,157720.063985 538444.009985,157707.829985 538438.930985,157703.698985 538436.982985,157699.789985 538434.765985,157696.234985 538432.162985,157694.135985 538430.282985,157690.829985 538426.887985,157687.852985 538423.152985,157685.503985 538419.230985,157684.078985 538415.272985,157683.931985 538412.866985,157684.996985 538408.546985,157687.004985 538404.139985,157691.766985 538394.860985,157694.075985 538390.973985,157696.564985 538387.200985,157700.504985 538381.882985,157706.366985 538375.007985,157709.523985 538371.780985,157715.421985 538366.520985,157718.953985 538363.583985,157722.623985 538360.832985,157726.452985 538358.449985,157731.239985 538356.344985,157735.523985 538355.147985,157739.996985 538354.347985,157744.569985 538353.900985,157749.150985 538353.760985,157754.339985 538353.933985,157758.737985 538354.662985,157771.845985 538358.438985,157776.724985 538359.145985,157781.252985 538359.339985,157785.861985 538359.295985,157790.447985 538358.943985,157794.906985 538358.210985,157799.135985 538357.025985,157803.133985 538355.158985,157806.933985 538352.553985,157810.391985 538349.443985,157813.628985 538345.736985,157816.180985 538342.092985,157818.466985 538338.181985,157820.491985 538334.084985,157822.264985 538329.878985,157823.791985 538325.644985,157825.241985 538320.266985,157826.059985 538315.842985,157829.628985 538291.410985,157832.528985 538267.630985,157832.704985 538263.149985,157832.440985 538258.726985,157831.456985 538252.638985,157830.382985 538248.145985,157828.976985 538243.756985,157827.203985 538239.587985,157825.032985 538235.753985,157821.223985 538230.814985,157817.992985 538227.513985,157814.450985 538224.503985,157810.696985 538221.866985,157806.826985 538219.683985,157805.027985 538218.891985,157800.815985 538217.618985,157796.373985 538216.812985,157787.242985 538215.661985,157782.774985 538214.843985,157774.650985 538213.190985,157770.281985 538212.022985,157766.222985 538210.266985,157761.186985 538207.260985,157757.325985 538204.628985,157753.690985 538201.737985,157750.453985 538198.594985,157747.787985 538195.204985,157746.441985 538192.257985,157745.667985 538187.829985,157745.010985 538176.371985,157744.896985 538167.227985,157744.610985 538162.735985,157743.513985 538157.837985,157741.963985 538153.529985,157740.076985 538149.198985,157737.848985 538145.063985,157735.278985 538141.346985,157732.362985 538138.266985,157731.013985 538137.365985,157726.813985 538136.259985,157722.014985 538135.977985,157717.325985 538135.483985,157701.969985 538133.163985,157697.707985 538131.947985,157693.949985 538130.011985,157692.656985 538129.033985,157689.531985 538125.960985,157686.756985 538122.299985,157684.322985 538118.262985,157682.220985 538114.058985,157679.890985 538108.330985,157678.970985 538103.997985,157678.572985 538099.470985,157678.128985 538090.325985,157676.777985 538069.713985,157674.658985 538041.742985,157674.212985 538032.747985,157674.225985 538028.257985,157674.653985 538020.461985,157675.673985 538011.499985,157676.808985 538005.013985,157679.061985 537996.303985,157687.726985 537967.493985,157691.624985 537951.552985,157693.043985 537946.610985,157695.798985 537938.016985,157698.944985 537929.570985,157700.764985 537925.475985,157702.499985 537922.122985,157704.831985 537918.255985,157707.394985 537914.526985,157716.260985 537902.940985,157719.273985 537899.377985,157722.469985 537896.284985,157725.906985 537893.933985,157699.757985 537858.216985,157696.717985 537861.534985,157693.117985 537864.316985,157689.466985 537866.704985,157685.256985 537868.294985,157680.818985 537869.271985,157676.120985 537869.814985,157671.133985 537870.090985,157655.686985 537870.508985,157650.862985 537870.058985,157646.963985 537869.269985,157642.838985 537867.507985,157639.159985 537865.479985,157635.448985 537862.933985,157631.255985 537859.617985,157620.465985 537850.340985,157617.253985 537847.942985,157613.306985 537845.716985,157610.491985 537844.634985,157606.031985 537843.942985,157603.608985 537843.964985,157599.159985 537844.692985,157596.682985 537845.448985,157592.534985 537847.253985,157590.327985 537848.622985,157586.982985 537851.671985,157585.725985 537853.299985,157583.691985 537857.346985,157583.184985 537859.128985,157582.840985 537863.647985,157583.066985 537865.460985,157584.506985 537869.751985,157585.586985 537871.656985,157588.477985 537875.120985,157590.700985 537877.039985,157594.509985 537879.411985,157598.223985 537881.289985,157602.400985 537882.962985,157606.757985 537884.423985,157614.839985 537886.561985,157621.994985 537888.022985,157628.701985 537889.090985,157633.094985 537890.106985,157635.078985 537890.731985,157639.232985 537892.495985,157641.014985 537893.504985,157644.631985 537896.194985,157646.430985 537897.874985,157649.393985 537901.271985,157651.034985 537903.602985,157653.254985 537907.525985,157654.555985 537910.486985,157655.953985 537914.769985,157656.789985 537918.485985,157657.337985 537922.945985,157657.634985 537927.445985,157657.729985 537931.973985,157657.414985 537943.723985,157656.551985 537953.906985,157655.576985 537960.555985,157653.309985 537971.679985,157650.554985 537983.222985,157646.076985 537999.896985,157644.766985 538005.718985,157644.011985 538010.155985,157643.252985 538016.621985,157642.710985 538026.241985,157642.686985 538033.156985,157643.281985 538046.170985,157648.640985 538127.079985,157649.926985 538144.736985,157650.397985 538149.211985,157651.502985 538157.833985,157653.322985 538169.315985,157655.151985 538178.166985,157656.832985 538184.178985,157658.907985 538190.036985,157661.365985 538195.831985,157664.119985 538201.663985,157672.816985 538218.797985,157675.695985 538224.841985,157688.117985 538254.313985,157690.185985 538259.777985,157691.983985 538265.088985,157695.235985 538275.605985,157696.570985 538280.841985,157697.331985 538286.018985,157697.398985 538291.073985,157696.925985 538296.088985,157695.991985 538301.369985,157694.545985 538306.988985,157692.577985 538312.661985,157690.141985 538318.220985,157686.480985 538324.864985,157683.185985 538329.860985,157679.585985 538334.674985,157675.687985 538339.434985,157671.404985 538344.219985,157648.215985 538367.966985,157626.002985 538389.847985,157620.155985 538396.224985,157616.230985 538401.133985,157612.753985 538406.141985,157609.722985 538411.230985,157607.082985 538416.385985,157604.866985 538421.568985,157603.364985 538425.810985,157601.886985 538431.022985,157600.749985 538436.136985,157600.010985 538441.116985,157599.729985 538445.850985,157600.011985 538450.412985,157600.713985 538454.693985,157602.157985 538458.998985,157604.116985 538462.578985,157607.135985 538465.879985,157610.622985 538468.799985,157614.677985 538471.377985,157619.375985 538473.843985,157624.328985 538476.070985,157629.351985 538477.911985,157634.398985 538479.357985,157649.427985 538482.622985,157654.405985 538483.448985,157659.287985 538484.000985,157664.051985 538484.198985,157668.653985 538483.904985,157673.141985 538483.278985,157681.535985 538481.385985,157686.075985 538480.892985,157689.165985 538481.106985,157693.343985 538482.731985,157696.278985 538484.445985,157699.623985 538487.455985,157702.733985 538490.853985,157705.956985 538494.813985,157709.169985 538499.121985,157712.204985 538503.661985,157714.931985 538508.386985,157717.580985 538514.358985,157718.997985 538518.630985,157720.436985 538524.371985,157721.422985 538530.422985,157721.923985 538536.618985,157722.084985 538543.809985,157721.267985 538570.228985,157721.565985 538588.334985,157721.925985 538592.820985,157722.989985 538601.368985,157724.124985 538608.022985,157725.099985 538612.415985,157728.908985 538626.314985,157734.432985 538644.392985,157736.458985 538650.344985,157751.780985 538692.488985,157755.982985 538704.913985,157759.725985 538717.638985,157761.686985 538725.851985,157762.870985 538732.135985,157763.517985 538736.589985,157764.164985 538743.030985,157764.533985 538749.625985,157764.635985 538758.218985,157763.571985 538781.415985,157763.560985 538787.517985,157763.985985 538795.140985,157765.090985 538805.619985,157767.118985 538817.780985,157771.069985 538836.646985,157772.226985 538842.835985,157774.950985 538861.298985,157776.209985 538868.595985,157777.203985 538872.984985,157778.685985 538878.475985,157785.242985 538900.066985,157787.862985 538909.639985,157789.220985 538918.429985,157790.549985 538939.199985,157791.472985 538968.735985,157785.934985 539003.809985,157781.319985 539027.807985,157779.473985 539056.420985,157781.391985 539100.007985,157797.747985 539180.876985,157803.491985 539200.448985,157827.922985 539240.544985,157833.664985 539260.134985,157826.269985 539283.508985,157788.481985 539323.838985,157766.071985 539330.904985,157748.957985 539338.548985,157724.435985 539343.146985,157719.837985 539350.809985,157723.668985 539360.005985,157755.088985 539363.071985,157784.668985 539359.430985,157814.248985 539355.790985,157845.111985 539361.041985,157836.673985 539450.713985,157848.437985 539555.994985,157862.922985 539563.816985,157877.311985 539544.437985,157890.813985 539516.196985,157928.073985 539487.990985,157945.996985 539481.522985,157939.848985 539455.276985,157917.797985 539437.388985,157895.036985 539412.848985,157894.850985 539376.542985)) + POLYGON((157796.315971774 538569.836655627,157796.287068268 538570.771296678,157796.51655414 538584.714488642,157796.554360558 538585.185598617,157797.206645716 538590.425949682,157797.745244705 538593.583515912,157797.919481214 538594.368563076,157800.953785266 538605.440705901,157805.813578304 538621.345003246,157807.209346082 538625.445501674,157822.267151913 538666.862821146,157822.828057742 538668.461636939,157827.030057742 538680.886636939,157827.934857368 538683.749673937,157831.677857368 538696.474673937,157832.675381246 538700.221017627,157833.391842316 538703.221677889,157833.946541803 538703.097809599,157839.029337825 538702.145455139,157843.947337825 538701.398455139,157848.464141048 538700.851977146,157853.325141048 538700.412977146,157857.130544557 538700.166648434,157861.947544557 538699.977648434,157865.97028183 538699.927794516,157870.75128183 538699.996794516,157875.768289503 538700.237406525,157880.560289503 538700.628406525,157886.070498612 538701.283971654,157890.844498612 538702.031971655,157897.815434141 538703.465980419,157902.543434141 538704.674980419,157909.960878759 538706.987077252,157914.617878759 538708.708077252,157922.824771831 538712.311954722,157927.398771831 538714.655954722,157934.941721853 538719.095272138,157939.393721853 538722.078272138,157946.107333833 538727.144285587,157949.543333833 538730.053285587,157955.261447511 538735.432767872,157960.026447511 538740.410767872,157963.822197432 538744.691792236,157964.38101881 538745.372701376,157972.27211218 538740.875637403,157976.293272272 538738.742988021,157980.331272272 538736.755988021,157985.219584274 538734.563822681,157990.250173409 538732.520388571,157988.035045636 538729.232726279,157985.351045636 538724.703726279,157982.327645477 538719.067018718,157980.102645477 538714.457018718,157978.580290662 538711.09380653,157976.648290662 538706.52980653,157975.252041945 538702.982937432,157972.083041945 538694.290937432,157970.609783042 538689.818497764,157969.336783042 538685.502497764,157967.550938196 538678.071203302,157966.845938196 538674.301203302,157965.846189067 538666.968915013,157965.460189067 538662.499915014,157965.430513151 538649.945373854,157965.671513151 538646.992373853,157968.091866643 538633.263478771,157969.283866643 538628.915478771,157976.48675695 538611.552056761,157977.86075695 538609.146056761,157986.415224019 538597.10069128,157989.402224019 538593.66869128,157993.472939651 538589.771346564,157993.073094374 538586.888417902,157992.362268865 538576.378636575,157992.375268865 538571.653636575,157992.604080307 538566.002356522,157992.978080307 538561.228356522,157993.425111595 538557.038007983,157994.070111595 538552.267007984,157994.795861715 538547.881820104,157996.629861715 538538.529820104,157996.70088911 538538.220715465,157991.747339704 538533.78715219,157988.374339704 538530.44615219,157982.069573379 538523.356572488,157979.173573379 538519.652572488,157973.753039013 538511.720700753,157971.401039013 538507.755700753,157967.612586264 538500.492173534,157965.745586264 538496.379173534,157962.93789653 538489.246017041,157961.50589653 538484.980017041,157959.018966831 538475.597583095,157958.185966831 538471.365583095,157957.257852642 538465.386631263,157956.747852642 538460.918631263,157956.271183239 538451.373906524,157956.329183239 538447.187906524,157956.709321548 538440.614465539,157957.167321548 538436.125465539,157957.762055759 538431.640623683,157958.437055759 538427.510623683,157959.436480734 538422.482038756,157960.464480734 538418.099038756,157961.725695513 538413.410049625,157962.938695513 538409.420049625,157964.812534203 538404.008099305,157966.446534203 538399.814099305,157968.923037128 538394.157807255,157970.767037128 538390.377807255,157974.335673585 538383.895136913,157976.698673585 538380.063136913,157980.651617094 538374.276546409,157982.971617094 538371.199546409,157984.778589215 538368.975203492,157984.697241855 538368.664538577,157983.955241855 538364.774538577,157983.033357126 538358.518822859,157982.564357126 538354.031822858,157982.219073597 538349.261461117,157982.039073597 538344.804461117,157981.984086341 538340.821343012,157982.096086341 538332.041343012,157982.172478513 538329.481278912,157982.383478513 538324.986278912,157982.441623023 538323.912132756,157982.699623023 538319.705132756,157982.992422962 538316.244412123,157983.869422962 538308.122412123,157985.067706085 538300.61456184,157985.998706085 538296.22456184,157988.763354436 538286.483246844,157989.527354436 538284.351246844,157995.271580689 538271.99222302,157997.532580689 538268.09822302,158010.265327737 538251.833856796,158011.555327737 538250.586856796,158024.751755253 538240.406092739,158028.647755253 538238.040092738,158039.143177393 538232.744252177,158041.386177393 538231.825252177,158050.431255267 538228.775737375,158054.799255267 538227.606737375,158061.772571758 538226.09190755,158064.268571758 538225.67290755,158071.444323691 538224.821305917,158075.941323691 538224.506305917,158077.197262624 538224.465217282,158078.030556455 538222.470137458,158079.945556455 538218.388137458,158081.751151683 538214.813369151,158081.327734832 538213.430151094,158074.431914697 538195.053219633,158072.936478878 538190.659157777,158070.635478878 538183.143157777,158069.080309692 538177.205309379,158068.266766762 538173.483837246,158057.843915446 538172.447517446,158053.408915446 538171.400517446,158047.613039717 538169.563495325,158045.073072605 538175.572205208,158043.137072605 538179.630205208,158041.184574479 538183.439140725,158039.007574479 538187.403140725,158037.519521703 538189.989370281,158035.182521703 538193.870370281,158033.712367603 538196.212967163,158029.184367603 538203.140967163,158026.31288683 538207.230193777,158020.89688683 538214.421193777,158019.944393919 538215.658822856,158004.117151368 538235.786967285,157999.997829803 538241.392007344,157995.951261752 538247.246801485,157988.803794101 538258.072398108,157984.787642157 538264.38931453,157980.440001128 538271.591722095,157976.942518167 538277.773081309,157971.061487748 538288.733144043,157957.024068947 538316.780902919,157956.768749663 538317.286273616,157939.881981569 538350.400237931,157938.204571002 538354.054189686,157935.664217882 538360.223089209,157920.118047022 538400.509919791,157918.286839608 538404.845229414,157916.194839608 538409.394229414,157914.665582115 538412.525772164,157910.514582115 538420.547772164,157908.235749676 538424.63415538,157903.597749676 538432.37315538,157900.512564652 538437.107048955,157897.928564652 538440.763048955,157894.970653103 538444.670653984,157893.800653103 538446.115653984,157889.349200165 538451.136402565,157886.224200165 538454.358402565,157882.948159266 538457.536638685,157880.416711585 538459.847204034,157880.146892975 538461.800749577,157879.411892975 538466.267749577,157878.710811231 538469.95128323,157876.888811231 538478.37228323,157876.245699025 538481.097480351,157874.012699024 538489.827480351,157872.555499637 538494.801685834,157870.129499637 538502.133685834,157868.970184323 538505.384619853,157867.313184323 538509.713619853,157864.680256862 538515.777297554,157862.683256862 538519.872297554,157856.601177321 538530.16892626,157854.088177321 538533.73892626,157843.033967768 538546.222509593,157840.219967768 538548.764509593,157827.133718922 538558.24060813,157822.928718922 538560.64160813,157802.651122881 538568.57953785,157798.421122881 538569.55853785,157796.315971774 538569.836655627)) + + #56 Polygon - gid: 2556 + + POLYGON((165866.082985 541862.721985,165851.682985 541848.138985,165804.193985 541863.105985,165801.945985 541874.734985,165814.893985 541890.902985,165824.346985 541905.179985,165834.300985 541928.120985,165826.139985 541936.876985,165823.907985 541948.444985,165827.893985 541968.536985,165846.896985 541979.346985,165875.377985 541971.704985,165921.822985 541960.759985,165900.301985 541937.964985,165886.338985 541910.918985,165892.219985 541895.974985,165878.605985 541877.133985,165866.082985 541862.721985)) + POLYGON( EMPTY) + + #57 Polygon - gid: 2557 + + POLYGON((164054.834985 543306.880985,164069.572985 543304.004985,164103.605985 543312.388985,164098.333985 543300.131985,164075.912985 543252.912985,164094.128985 543217.655985,164100.007985 543181.949985,164113.692985 543153.753985,164056.104985 543132.795985,164041.707985 543117.852985,164019.452985 543100.919985,163992.041985 543102.519985,163994.001985 543156.339985,163998.122985 543200.290985,163968.364985 543209.075985,163940.187985 543232.044985,163942.884985 543247.017985,163977.816985 543288.031985,163999.532985 543335.043985,164021.073985 543335.717985,164039.006985 543320.999985,164054.834985 543306.880985)) + POLYGON( EMPTY) + + #58 Polygon - gid: 2558 + + POLYGON((166001.678985 545096.446985,165986.188985 545050.627985,166031.006985 545078.395985,166053.356985 545047.590985,166042.301985 545030.529985,166001.118985 545004.006985,165970.376985 544983.927985,165949.330985 544958.286985,165946.693985 544938.892985,165963.120985 544919.755985,165995.255985 544914.667985,166022.427985 544917.764985,166062.571985 544932.058985,166097.433985 544907.541985,166121.008985 544885.492985,166149.252985 544896.697985,166161.300985 544855.607985,166120.499985 544852.803985,166098.819985 544833.284985,166055.523985 544765.349985,166034.012985 544756.903985,166001.675985 544764.667985,165941.932985 544777.760985,165896.886985 544801.133985,165869.851985 544814.425985,165811.901985 544827.664985,165792.911985 544829.897985,165725.363985 544817.517985,165706.523985 544809.004985,165670.402985 544807.309985,165679.523985 544816.702985,165708.514985 544857.040985,165719.255985 544868.100985,165743.555985 544882.196985,165762.492985 544890.766985,165804.664985 544895.609985,165839.702985 544901.606985,165850.419985 544915.467985,165839.532985 544931.763985,165828.625985 544950.808985,165805.144985 544992.480985,165777.668985 545014.324985,165794.091985 545037.066985,165845.431985 545028.795985,165878.092985 545037.633985,165894.460985 545035.084985,165902.747985 545013.031985,165924.190985 544999.320985,165937.750985 545007.789985,165924.471985 545029.942985,165905.294985 545049.089985,165910.679985 545063.023985,165933.681985 545062.029985,165942.031985 545072.420985,165942.314985 545083.029985,165940.263985 545106.979985,165926.679985 545138.892985,165924.557985 545160.165985,165927.736985 545178.652985,165939.544985 545184.712985,165957.986985 545197.293985,166012.773985 545218.448985,166021.131985 545230.145985,166042.780985 545212.268985,166042.259985 545193.319985,165989.913985 545147.241985,166007.501985 545109.760985,166001.678985 545096.446985)) + POLYGON((166006.280209145 544840.438913134,166015.082113057 544841.442133229,166013.442395777 544838.869281385,166006.280209145 544840.438913134)) + + #59 Polygon - gid: 2559 + + POLYGON((165400.049985 545327.155985,165416.553985 545307.426985,165440.890985 545317.388985,165451.763985 545309.292985,165455.551985 545256.760985,165447.188985 545219.754985,165398.556985 545171.589985,165389.391985 545144.568985,165415.765985 545137.758985,165442.139985 545130.948985,165489.105985 545131.514985,165494.821985 545142.545985,165481.339985 545161.579985,165465.034985 545177.852985,165498.516985 545230.195985,165501.015485 545233.148485,165500.118985 545227.637985,165495.059985 545208.332985,165494.628985 545189.451985,165502.564985 545178.421985,165543.025985 545176.478985,165553.648985 545165.414985,165533.901985 545125.965985,165527.694985 545101.709985,165538.434985 545096.018985,165543.367985 545074.397985,165455.769985 545021.301985,165446.998985 544999.756985,165456.894985 544967.294985,165470.818985 544959.256985,165498.705985 544959.917985,165512.415985 544957.533985,165543.312985 544958.262985,165559.703985 544955.955985,165576.629985 544937.412985,165585.025985 544918.665985,165601.227985 544929.893985,165617.565985 544930.296985,165631.216985 544927.924985,165645.767985 544866.148985,165647.031985 544810.287985,165637.518985 544792.335985,165631.176985 544780.367985,165623.202985 544753.101985,165617.222985 544732.652985,165603.753985 544721.524985,165569.450985 544664.526985,165591.777985 544638.643985,165605.444985 544628.162985,165630.409985 544619.262985,165676.081985 544636.350985,165692.189985 544644.760985,165703.053985 544639.627985,165714.273985 544611.021985,165711.822985 544589.522985,165717.739985 544537.900985,165709.916985 544513.571985,165688.731985 544478.238985,165664.676985 544458.963985,165649.007985 544415.726985,165633.175985 544388.605985,165620.914985 544351.710985,165616.066985 544331.517985,165621.967985 544306.302985,165608.605985 544308.702985,165557.297985 544334.741985,165548.928985 544345.515985,165535.686985 544374.908985,165530.527985 544420.499985,165516.300985 544469.034985,165507.960985 544482.428985,165470.557985 544508.864985,165473.122985 544522.557985,165487.876985 544573.189985,165495.818985 544598.017985,165498.986985 544643.158985,165497.702985 544705.431985,165497.357985 544732.783985,165492.488985 544763.520985,165489.441985 544787.979985,165475.893985 544776.771985,165461.065985 544768.463985,165445.447985 544782.600985,165426.917985 544783.943985,165387.584985 544770.301985,165336.710985 544775.354985,165307.761985 544818.243985,165296.603985 544828.963985,165272.205985 544863.745985,165246.740985 544798.278985,165233.268985 544781.600985,165225.202985 544770.505985,165186.730985 544815.540985,165165.320985 544803.562985,165100.432985 544802.416985,165068.731985 544809.183985,165045.724985 544775.915985,165029.079985 544781.054985,165025.965985 544805.761985,164992.296985 544823.851985,164975.557985 544831.778985,164939.477985 544836.522985,164925.475985 544847.265985,164976.638985 544865.093985,164981.929985 544881.753985,164984.490985 544917.716985,164982.509985 544967.675985,164975.129985 545022.482985,165012.349985 545052.423985,165001.279985 545060.555985,164980.136985 545083.879985,165029.438985 545065.380985,165085.830985 545066.792985,165152.434985 545059.322985,165208.605985 545056.969985,165236.407985 545062.741985,165253.818985 545076.317985,165267.921985 545098.393985,165269.473985 545169.154985,165280.723985 545180.182985,165294.528985 545180.342985,165328.757985 545168.612985,165334.547985 545185.199985,165365.423985 545204.772985,165367.357985 545210.305985,165371.225985 545221.370985,165365.881985 545235.094985,165359.200985 545246.854985,165349.177985 545264.494985,165335.491985 545269.816985,165294.894985 545285.114985,165266.383985 545324.205985,165274.795985 545337.924985,165288.510985 545338.064985,165318.892985 545349.229985,165343.732985 545360.387985,165374.453985 545370.711985,165396.429985 545376.374985,165420.281985 545364.710985,165400.264985 545340.826985,165400.049985 545327.155985),(165342.461985 545093.777985,165322.031985 545055.610985,165307.902985 545033.527985,165304.183985 545003.597985,165314.784985 544970.879985,165305.688985 544951.716985,165327.686985 544941.061985,165380.740985 544947.170985,165397.607985 544966.537985,165396.440985 545017.969985,165394.198985 545050.695985,165377.954985 545069.612985,165386.777985 545105.268985,165378.710985 545118.851985,165345.544985 545115.710985,165342.702985 545110.200985,165342.461985 545093.777985)) + MULTIPOLYGON(((165057.217205208 544883.120216485,165059.30153673 544912.389570074,165059.432092366 544920.688588389,165057.451092366 544970.647588389,165056.839151797 544977.684729339,165055.105079377 544990.562684236,165055.666345379 544991.014185186,165082.574837416 544991.687947258,165144.075738552 544984.790287485,165149.295992153 544984.388702299,165205.466992153 544982.035702299,165223.851710387 544983.535879454,165231.859198159 544985.198321703,165232.835721359 544980.480345081,165234.671869136 544974.813419038,165232.980105736 544970.113149715,165230.792111361 544955.6486919,165231.453631581 544941.034648987,165234.596064132 544928.226786517,165229.177458967 544925.175179585,165218.024334311 544915.604916041,165208.951612951 544904.043434258,165202.307658569 544890.934658417,165201.450878229 544888.731994426,165192.63043154 544890.308601857,165177.936402401 544890.023568984,165163.580078568 544886.878461346,165150.112731992 544880.994048692,165145.151531196 544878.218464239,165107.693212873 544877.556905356,165084.388987872 544882.531502075,165069.804209359 544884.176320174,165057.217205208 544883.120216485)),((165433.450985222 544894.243752377,165445.727600121 544888.578682779,165458.965228219 544885.199652816,165472.596195875 544884.27804448,165493.116772708 544884.764439621,165499.5672165 544883.642786958,165514.185081919 544882.554852596,165519.617671597 544882.683031962,165523.817930203 544875.323465139,165533.380754455 544864.280599446,165544.902815038 544855.300921817,165557.947005961 544848.72508928,165571.226811748 544845.023247916,165571.608985418 544828.133530063,165571.248634832 544827.453511802,165564.906634832 544815.485511802,165561.598307512 544807.342441787,165560.674592039 544811.451578352,165554.799933434 544824.767735359,165546.463962451 544836.698503939,165535.980603089 544846.794583753,165523.744647759 544854.675766933,165510.216889818 544860.045256316,165495.906770564 544862.700842514,165481.353194207 544862.542518913,165467.1042333 544859.576247815,165458.583903741 544855.97784482,165450.869543946 544857.404772996,165432.339543946 544858.747772996,165417.139633107 544858.30381175,165402.341694045 544854.803041746,165379.029034346 544846.717431606,165369.926358081 544860.203378698,165362.080227598 544869.526690428,165389.320308912 544872.663299482,165402.872948774 544875.510841409,165415.671006543 544880.801612583,165427.278136608 544888.355225886,165433.450985222 544894.243752377)),((165564.244956383 544565.763054216,165569.5976314 544562.284557272,165580.260093066 544557.517948244,165605.225093066 544548.617948244,165617.918405741 544545.31056484,165630.99381411 544544.265257411,165641.322078728 544545.252988251,165641.157714701 544544.741827264,165631.329809072 544528.350541467,165617.778879255 544517.492334349,165607.933959442 544508.007119591,165599.974337952 544496.892436919,165594.164474795 544484.51757388,165591.817078659 544478.040174765,165588.272635808 544490.131939281,165579.967528816 544508.678032292,165571.627528816 544522.072032292,165562.518379322 544533.89247424,165556.154902685 544539.416730683,165559.608905593 544551.269995916,165564.244956383 544565.763054216))) + + #60 Polygon - gid: 2560 + + POLYGON((165039.888985 545214.900985,165061.521985 545211.327985,165071.841985 545218.422985,165077.658585 545221.274385,165042.910985 545188.529985,165018.330985 545164.645985,165012.696985 545156.314985,165001.478985 545145.165985,164983.560985 545134.409985,164959.705985 545136.405985,164912.749985 545126.728985,164872.247985 545143.406985,164854.636985 545152.272985,164842.895985 545158.183985,164822.013985 545183.452985,164819.327985 545202.866985,164836.326985 545230.849985,164837.880985 545249.634985,164820.022985 545295.891985,164797.828985 545328.982985,164765.676985 545371.292985,164741.785985 545411.115985,164755.907985 545414.000985,164781.197985 545405.853985,164828.946985 545376.498985,164869.393985 545349.987985,164902.767985 545314.165985,164924.560985 545268.486985,164951.092985 545252.883985,164976.229985 545250.334985,164992.874985 545239.445985,165003.027985 545231.057985,165018.255985 545218.473985,165039.888985 545214.900985)) + POLYGON( EMPTY) + + #61 Polygon - gid: 2561 + + POLYGON((165238.510985 545710.471985,165192.124985 545700.368985,165160.156985 545630.008985,165164.336985 545624.861985,165176.876985 545609.422985,165172.523985 545591.077985,165168.170985 545572.732985,165167.980985 545556.368985,165147.570985 545540.142985,165125.931985 545556.256985,165090.936985 545602.197985,165089.392985 545634.903985,165089.504985 545645.843985,165092.417985 545662.279985,165111.877985 545683.285985,165129.554985 545701.137985,165121.586985 545728.577985,165086.923985 545743.977985,165052.963985 545734.373985,165039.091985 545717.850985,165027.966985 545701.352985,165001.879985 545672.568985,164978.299985 545619.010985,164961.459985 545577.792985,164935.200985 545546.003985,164911.800985 545505.448985,164900.849985 545521.874985,164920.431985 545580.077985,164932.021985 545610.339985,164933.689985 545628.314985,164928.252985 545677.904985,164913.400985 545715.258985,164921.835985 545729.167985,164935.169985 545781.427985,164942.610985 545813.897985,164966.247985 545817.882985,164988.465985 545801.288985,165002.312985 545787.436985,165021.889985 545790.358985,165045.185985 545849.211985,165056.368985 545885.476985,165064.812985 545891.120985,165084.289985 545868.904985,165091.803985 545835.123985,165099.316985 545801.341985,165105.409985 545799.161985,165129.781985 545790.441985,165134.147985 545761.590985,165141.310985 545750.056985,165158.590985 545709.009985,165176.243985 545724.213985,165199.478985 545747.702985,165208.061985 545779.326985,165211.808985 545797.165985,165223.206985 545816.746985,165225.387985 545823.733985,165238.473985 545865.656985,165240.654985 545872.643985,165224.011985 545880.913985,165213.049985 545897.603985,165243.117985 545899.699985,165243.477985 545927.700985,165258.375985 545942.579985,165264.112985 545953.801985,165275.516985 545970.657985,165295.826985 545982.700985,165309.815985 545985.574985,165329.383985 545988.480985,165354.767985 546001.160985,165354.562985 545987.341985,165383.586985 545955.589985,165373.711985 545912.320985,165357.023985 545909.441985,165340.294985 545903.784985,165317.425985 545856.465985,165311.411985 545823.162985,165287.933985 545774.854985,165249.668985 545718.827985,165238.510985 545710.471985)) + POLYGON( EMPTY) + + #62 Polygon - gid: 2562 + + POLYGON((167132.502985 546739.675985,167129.431985 546728.461985,167149.272985 546730.744985,167174.754985 546732.873985,167203.344985 546749.030985,167214.701985 546712.855985,167222.891985 546698.488985,167172.714985 546705.889985,167136.868985 546710.488985,167119.637985 546696.854985,167075.210985 546707.329985,167010.354985 546685.151985,166970.378985 546680.545985,166953.227985 546678.167985,166944.879985 546686.925985,166934.540985 546732.693985,166943.806985 546763.687985,166970.472985 546795.157985,166972.578985 546790.292985,166993.557985 546761.456985,166991.220985 546735.941985,166999.607985 546730.041985,167040.797985 546729.182985,167063.593985 546739.815985,167081.551985 546762.749985,167104.289985 546789.026985,167117.932985 546804.791985,167133.736985 546789.873985,167149.540985 546774.955985,167144.229985 546759.119985,167132.502985 546739.675985)) + POLYGON( EMPTY) + + #63 Polygon - gid: 2563 + + POLYGON((142722.192985 546177.308985,142726.778985 546176.811985,142731.932985 546176.961985,142741.768985 546177.534985,142746.228985 546178.131985,142757.116985 546179.802985,142766.625985 546181.831985,142771.037985 546182.101985,142773.400985 546181.387985,142776.497985 546178.776985,142779.106985 546174.996985,142781.284985 546170.613985,142783.085985 546166.194985,142784.732985 546161.198985,142785.744985 546156.827985,142788.327985 546142.074985,142788.603985 546137.521985,142789.852985 546132.215985,142789.471985 546113.620985,142789.307985 546106.890985,142788.828985 546101.181985,142787.251985 546087.771985,142785.818985 546077.995985,142784.285985 546069.126985,142781.610985 546055.891985,142777.385985 546039.293985,142776.636985 546036.164985,142776.002985 546033.293985,142774.917985 546027.582985,142773.500985 546018.687985,142772.098985 546007.143985,142768.178985 546010.905985,142764.713985 546009.110985,142761.223985 546006.385985,142754.125985 545999.891985,142750.724985 545997.160985,142743.367985 545991.857985,142735.810985 545986.892985,142731.895985 545984.775985,142730.716985 545984.217985,142726.312985 545982.683985,142721.651985 545982.033985,142718.418985 545982.397985,142714.052985 545984.850985,142711.360985 545988.681985,142712.738985 545993.180985,142714.941985 545996.960985,142717.691985 546000.791985,142724.660985 546009.840985,142731.686985 546016.665985,142732.054985 546018.591985,142730.690985 546022.264985,142728.418985 546025.982985,142719.613985 546037.284985,142713.073985 546046.712985,142710.527985 546050.471985,142708.252985 546054.334985,142706.612985 546057.889985,142705.358985 546062.133985,142704.624985 546066.572985,142703.219985 546077.702985,142699.359985 546095.284985,142697.142985 546106.960985,142694.878985 546120.270985,142689.654985 546153.350985,142686.974985 546168.576985,142684.417985 546181.838985,142681.914985 546192.299985,142679.361985 546200.940985,142677.911985 546205.201985,142674.155985 546214.865985,142667.821985 546229.388985,142659.948985 546245.601985,142657.324985 546251.745985,142655.832985 546255.985985,142653.436985 546264.685985,142652.493985 546269.090985,142651.629985 546274.394985,142650.292985 546287.844985,142648.737985 546299.023985,142644.522985 546326.394985,142643.286985 546335.313985,142642.254985 546344.252985,142641.584985 546354.071985,142641.244985 546363.069985,142641.148985 546370.582985,142641.331985 546384.084985,142641.014985 546394.820985,142640.378985 546405.030985,142638.161985 546425.106985,142637.323985 546438.583985,142637.097985 546450.097985,142637.938985 546492.896985,142637.899985 546522.015985,142638.983985 546578.467985,142639.054985 546593.084985,142638.672985 546602.065985,142638.067985 546607.674985,142636.677985 546616.584985,142634.346985 546627.450985,142633.051985 546631.746985,142629.847985 546640.178985,142628.692985 546643.625985,142624.159985 546661.045985,142621.661985 546670.257985,142617.884985 546683.219985,142611.192985 546706.280985,142608.360985 546717.192985,142606.371985 546725.978985,142604.441985 546737.393985,142603.363985 546746.339985,142602.555985 546756.672985,142602.460985 546761.163985,142602.860985 546774.337985,142602.576985 546792.392985,142603.006985 546798.336985,142603.734985 546802.764985,142604.771985 546807.169985,142606.081985 546811.513985,142607.626985 546815.755985,142611.830985 546826.313985,142613.916985 546830.574985,142616.469985 546834.131985,142618.842985 546836.097985,142622.666985 546837.753985,142626.214985 546838.483985,142629.542985 546838.792985,142632.214985 546838.947985,142636.772985 546838.722985,142641.319985 546838.062985,142646.320985 546836.579985,142650.481985 546834.504985,142654.367985 546831.854985,142657.767985 546828.806985,142658.902985 546827.563985,142661.479985 546824.014985,142663.628985 546820.007985,142665.381985 546815.716985,142666.772985 546811.314985,142667.543985 546808.276985,142668.299985 546803.903985,142668.664985 546799.432985,142669.208985 546770.941985,142669.215985 546758.058985,142668.827985 546740.061985,142668.678985 546721.600985,142668.824985 546701.557985,142669.123985 546692.563985,142669.921985 546681.612985,142671.489985 546668.197985,142672.558985 546661.898985,142675.484985 546648.710985,142678.156985 546634.495985,142679.352985 546625.575985,142679.521985 546623.224985,142679.455985 546618.725985,142678.608985 546609.684985,142678.607985 546605.216985,142679.456985 546599.497985,142680.422985 546595.072985,142681.628985 546590.688985,142683.064985 546586.385985,142684.719985 546582.209985,142687.493985 546577.462985,142693.608985 546570.163985,142695.807985 546566.427985,142696.403985 546564.167985,142696.269985 546560.021985,142695.131985 546555.716985,142689.869985 546543.023985,142687.819985 546538.859985,142685.414985 546534.767985,142683.696985 546530.666985,142683.426985 546528.227985,142684.250985 546524.018985,142686.016985 546519.785985,142690.072985 546511.275985,142691.212985 546507.010985,142691.313985 546505.828985,142690.736985 546501.570985,142689.136985 546497.313985,142687.185985 546493.037985,142685.555985 546488.722985,142684.996985 546485.984985,142684.940985 546481.564985,142686.794985 546468.070985,142686.805985 546461.676985,142686.570985 546457.185985,142684.003985 546424.297985,142682.826985 546413.320985,142681.650985 546404.390985,142679.775985 546393.190985,142678.747985 546388.810985,142676.254985 546380.136985,142675.183985 546375.772985,142674.211985 546369.312985,142673.537985 546360.327985,142673.033985 546348.190985,142672.839985 546339.186985,142673.098985 546325.855985,142673.657985 546316.845985,142674.183985 546312.381985,142676.192985 546300.558985,142677.569985 546296.219985,142679.674985 546292.826985,142682.886985 546290.084985,142686.799985 546287.904985,142702.595985 546281.269985,142715.240985 546276.391985,142719.265985 546274.457985,142724.245985 546271.640985,142728.191985 546268.787985,142730.616985 546265.350985,142731.096985 546260.779985,142730.599985 546256.356985,142729.561985 546251.755985,142727.094985 546242.736985,142725.781985 546238.435985,142722.504985 546229.989985,142721.019985 546225.740985,142720.025985 546221.775985,142719.361985 546217.356985,142718.965985 546212.880985,142718.544985 546197.266985,142717.538985 546187.249985,142717.532985 546182.587985,142718.818985 546179.148985,142722.192985 546177.308985)) + POLYGON( EMPTY) + + #64 Polygon - gid: 2564 + + POLYGON((164037.000985 546901.414985,164106.537985 546859.892985,164138.256985 546862.893985,164190.193985 546854.347985,164219.006985 546863.152985,164224.504985 546879.653985,164241.465985 546901.930985,164267.345985 546890.411985,164324.403985 546869.382985,164341.607985 546857.870985,164388.533985 546827.945985,164369.933985 546821.741985,164340.564985 546826.620985,164308.425985 546822.759985,164308.404985 546843.093985,164299.745985 546854.692985,164283.505985 546842.787985,164277.086985 546808.974985,164262.628985 546820.547985,164248.158985 546840.876985,164213.916985 546848.404985,164193.642985 546839.577985,164196.758985 546825.842985,164191.001985 546805.342985,164179.409985 546796.532985,164106.760985 546814.691985,164077.598985 546829.265985,164036.608985 546881.968985,164022.598985 546855.664985,164029.130985 546839.253985,163976.139985 546849.840985,163958.295985 546855.749985,163940.475985 546855.696985,163921.815985 546832.990985,163901.558985 546850.001985,163887.908985 546861.066985,163923.509985 546885.561985,163987.096985 546921.878985,164037.000985 546901.414985)) + POLYGON( EMPTY) + + #65 Polygon - gid: 2565 + + POLYGON((165997.948985 547128.168985,166014.238985 547102.270985,166026.375985 547112.440985,166060.687985 547117.495985,166091.450985 547096.872985,166113.825985 547082.132985,166119.200985 547070.590985,166109.259985 547010.901985,166075.888985 547034.320985,166069.749985 547061.434985,166058.900985 547078.693985,166028.270985 547076.283985,166018.907985 547042.519985,165995.926985 547026.000985,165977.533985 546969.846985,165948.195985 546992.608985,165951.810985 547025.403985,165967.402985 547043.519985,165969.936985 547070.390985,165940.250985 547086.636985,165949.182985 547103.514985,165974.111985 547121.355985,165997.948985 547128.168985)) + POLYGON( EMPTY) + + #66 Polygon - gid: 2566 + + POLYGON((165100.071985 522081.185985,165136.799985 522076.135985,165166.082985 522092.836985,165183.181985 522109.283985,165190.140985 522118.074985,165206.348985 522101.100985,165220.161985 522076.505985,165220.503985 522074.959985,165225.622985 522051.802985,165237.799985 522011.812985,165240.146985 521960.824985,165236.333985 521894.861985,165237.261985 521814.285985,165243.911985 521772.257985,165226.779985 521761.751985,165193.019985 521743.035985,165165.246985 521728.639985,165152.601985 521722.553985,165133.996985 521739.272985,165111.166985 521751.180985,165092.073985 521752.238985,165109.023985 521784.973985,165126.567985 521832.153985,165144.191985 521855.304985,165157.186985 521856.297985,165161.740985 521873.524985,165162.965985 521907.180985,165164.675985 521942.335985,165164.830985 521979.277985,165164.301985 521990.709985,165142.466985 521995.789985,165110.505985 522011.506985,165079.857985 522028.091985,165054.334985 522038.602985,165032.108985 522040.275985,165001.716985 522035.707985,164983.310985 522019.245985,164959.550985 521989.898985,164922.332985 521959.299985,164891.493985 521946.315985,164842.601985 521944.356985,164828.038985 521942.830985,164784.350985 521938.253985,164721.590985 521932.459985,164654.326985 521933.159985,164615.460985 521948.266985,164665.212985 521993.048985,164721.052985 522031.550985,164773.155985 522075.997985,164829.624985 522115.536985,164873.224985 522125.840985,164944.614985 522131.113985,164945.480985 522178.821985,164954.957985 522264.115985,164978.215985 522266.299985,165016.474985 522263.290985,165041.880985 522239.804985,165055.918985 522218.725985,165063.579985 522211.999985,165067.228985 522203.579985,165070.618985 522174.606985,165076.243985 522151.298985,165077.752985 522136.665985,165079.504985 522123.716985,165083.574985 522101.381985,165100.071985 522081.185985)) + POLYGON((164820.266857 522017.427204655,164860.865764155 522045.854132527,164884.683758641 522051.483045719,164914.706877136 522053.700609857,164906.045863843 522043.003019071,164883.150492441 522024.179453335,164874.91441489 522020.711856107,164839.599301485 522019.296853506,164834.785821452 522018.948590341,164820.266857 522017.427204655)) + + #67 Polygon - gid: 2567 + + POLYGON((154374.974985 540624.728985,154320.493985 540619.008985,154292.141985 540622.113985,154300.537985 540553.371985,154315.955985 540540.285985,154376.940985 540530.412985,154405.631985 540496.147985,154445.668985 540435.041985,154454.521985 540417.090985,154451.884985 540403.553985,154445.292985 540369.710985,154445.579985 540362.563985,154447.014985 540326.827985,154437.326985 540254.795985,154511.563985 540278.324985,154528.041985 540293.316985,154555.203985 540318.597985,154568.395985 540311.500985,154566.744985 540300.457985,154553.075985 540281.217985,154539.316985 540265.833985,154513.536985 540265.913985,154479.903985 540247.544985,154439.739985 540232.015985,154403.476985 540219.274985,154352.216985 540193.238985,154334.278985 540175.092985,154332.774985 540144.333985,154350.235985 540125.468985,154371.989985 540117.381985,154383.699985 540112.299985,154407.119985 540102.135985,154415.975985 540097.389985,154420.402985 540095.016985,154432.473985 540079.628985,154446.542985 540043.686985,154432.038985 540027.748985,154407.872985 540019.283985,154375.098985 540051.097985,154358.677985 540070.534985,154354.465985 540108.800985,154334.695985 540111.082985,154308.823985 540096.567985,154262.980985 540157.924985,154255.293985 540164.418985,154215.750985 540176.802985,154206.665985 540194.763985,154166.906985 540153.065985,154162.757985 540169.964985,154166.319985 540198.641985,154180.928985 540222.157985,154211.961985 540249.040985,154209.983985 540262.387985,154208.994985 540269.061985,154197.947985 540292.833985,154192.961985 540297.380985,154158.065985 540329.211985,154140.829985 540316.837985,154117.762985 540294.223985,154092.528985 540254.239985,154073.822985 540242.348985,154048.200985 540266.020985,154064.357985 540290.020985,154062.051985 540304.767985,154040.168985 540346.540985,154041.641985 540357.709985,154049.520985 540373.836985,154104.527985 540418.794985,154090.465985 540443.160985,154069.529985 540448.440985,154046.019985 540476.715985,154023.556985 540493.431985,154012.295985 540517.485985,153979.630985 540532.522985,153949.623985 540550.285985,153937.859985 540571.634985,153958.642985 540598.024985,154012.244985 540548.784985,154030.269985 540532.534985,154070.531985 540499.593985,154087.180985 540483.491985,154132.461985 540455.676985,154148.344985 540445.370985,154180.755985 540450.271985,154197.244985 540479.738985,154193.874985 540497.126985,154183.840985 540529.466985,154188.908985 540557.187985,154202.879985 540575.534985,154249.118985 540618.863985,154258.226985 540629.278985,154262.780985 540634.485985,154280.201985 540662.114985,154287.169985 540673.165985,154298.532985 540705.614985,154310.100985 540727.104985,154343.491985 540740.559985,154373.404985 540748.738985,154410.171985 540758.451985,154418.213985 540774.691985,154432.851985 540756.015985,154427.625985 540739.482985,154393.172985 540712.859985,154367.238985 540699.027985,154362.824985 540688.093985,154374.974985 540624.728985)) + POLYGON ((154211.34039180956 540382.1317209445, 154217.6503256708 540384.9741471609, 154228.8660526432 540392.7357234654, 154238.49064413007 540402.4001860456, 154246.20578777403 540413.6479038943, 154262.69478777403 540443.1149038943, 154268.08157501929 540455.0980127293, 154271.29462502326 540467.8372703156, 154272.15180599023 540479.7780934644, 154278.51581715897 540475.2995723275, 154290.83214622788 540469.6192125722, 154303.9701183911 540466.2499194533, 154337.37449228237 540460.8420095831, 154345.30698193613 540451.368420026, 154375.74125760913 540404.9184650026, 154371.67648756542 540384.050137885, 154370.35338301142 540366.7016572024, 154370.6403821483 540359.5546786959, 154371.8131743791 540330.3484744037, 154365.60057125118 540284.1566671671, 154318.252931651 540260.1078348488, 154307.99700814812 540253.816156007, 154298.8791629049 540245.9654179738, 154285.6658256004 540232.5988654748, 154284.9711923334 540232.8950064374, 154286.85393501408 540245.0165815549, 154286.15170738756 540260.035760671, 154284.17376698626 540273.3823585154, 154283.18482683104 540280.055954669, 154277.00972538022 540300.6688686018, 154265.96272538023 540324.4408686018, 154258.40762354335 540337.2145224822, 154248.48523614364 540348.2504649211, 154243.50247502665 540352.7945112105, 154211.34039180956 540382.1317209445)) + + #68 Polygon - gid: 2568 + + POLYGON((151090.928985 540950.574985,151117.445985 540939.721985,151149.481985 540941.866985,151212.221985 540950.239985,151224.726985 540959.131985,151249.097985 540961.645985,151268.213985 540941.565985,151298.490985 540913.861985,151331.140985 540899.607985,151337.670985 540896.756985,151348.111985 540887.739985,151353.647985 540867.974985,151359.183985 540848.209985,151369.021985 540811.954985,151379.284985 540781.097985,151400.204985 540762.390985,151448.885985 540728.437985,151463.818985 540705.351985,151467.765985 540683.006985,151476.666985 540635.436985,151502.123985 540589.717985,151524.591985 540550.077985,151549.839985 540521.107985,151566.568985 540511.980985,151568.176985 540482.157985,151563.945985 540460.707985,151540.525985 540413.008985,151531.631985 540402.717985,151516.708985 540476.937985,151515.687985 540483.808985,151509.564985 540525.034985,151508.544985 540531.905985,151482.998985 540568.953985,151467.271985 540597.511985,151456.715985 540625.756985,151448.935985 540653.713985,151423.440985 540680.452985,151380.551985 540719.880985,151350.280985 540763.588985,151319.225985 540796.248985,151296.298985 540802.965985,151285.001985 540839.802985,151267.089985 540869.796985,151235.102985 540900.984985,151195.281985 540918.277985,151141.469985 540910.674985,151100.987985 540911.757985,151081.554985 540915.883985,151051.966985 540895.325985,151048.320985 540889.129985,151026.445985 540851.954985,151007.887985 540827.846985,151044.137985 540791.294985,151075.221985 540763.652985,151091.194985 540751.370985,151090.038985 540734.632985,151083.686985 540723.848985,151064.053985 540703.043985,151053.089985 540686.671985,151050.667985 540661.563985,151063.916985 540610.385985,151108.013985 540532.246985,151121.916985 540503.720985,151119.042985 540462.231985,151138.133985 540416.520985,151140.118985 540378.023985,151158.122985 540338.727985,151164.124985 540325.628985,151178.649985 540301.860985,151189.543985 540284.034985,151224.790985 540245.614985,151236.485985 540217.614985,151242.398985 540178.166985,151252.590985 540145.914985,151264.740985 540108.947985,151277.958985 540082.053985,151275.701985 540049.776985,151262.771985 540058.740985,151247.206985 540085.158985,151233.574985 540106.623985,151183.995985 540125.600985,151183.849985 540187.672985,151167.715985 540232.645985,151145.098985 540276.657985,151124.279985 540320.641985,151108.773985 540335.412985,151085.813985 540350.102985,151070.872985 540391.428985,151052.396985 540415.220985,151020.243985 540439.842985,150982.357985 540466.123985,150936.027985 540486.159985,150893.723985 540505.026985,150878.560985 540522.467985,150839.929985 540557.935985,150820.111985 540562.409985,150778.385985 540607.088985,150766.205985 540627.265985,150708.205985 540687.434985,150691.026985 540725.163985,150659.099985 540758.887985,150603.544985 540779.848985,150572.506985 540787.861985,150565.131985 540805.432985,150578.367985 540817.865985,150622.790985 540865.068985,150638.099985 540848.467985,150624.889985 540826.636985,150650.151985 540813.062985,150687.839985 540773.076985,150744.405985 540759.742985,150794.881985 540710.287985,150801.830985 540687.127985,150805.950985 540664.161985,150796.514985 540650.612985,150798.383985 540636.310985,150816.631985 540612.414985,150843.735985 540593.600985,150877.839985 540583.571985,150887.979985 540551.552985,150921.691985 540521.649985,150965.257985 540501.931985,151002.649985 540474.224985,151015.114985 540468.395985,151040.044985 540456.737985,151051.554985 540457.180985,151063.064985 540457.624985,151084.186985 540492.617985,151070.647985 540537.901985,151049.601985 540575.147985,151021.902985 540596.656985,151007.014985 540622.638985,150965.907985 540664.320985,150940.152985 540688.413985,150936.950985 540716.690985,150931.070985 540753.445985,150916.065985 540779.631985,150873.511985 540808.008985,150882.496985 540821.066985,150907.599985 540814.139985,150933.307985 540820.832985,150937.628985 540842.986985,150925.954985 540877.445985,150903.298985 540910.400985,150878.953985 540924.700985,150854.609985 540939.000985,150848.572985 540949.540985,150839.517985 540965.350985,150833.587985 541002.358985,150828.749985 541024.918985,150841.377985 541046.423985,150859.617985 541023.612985,150895.948985 540986.867985,150908.718985 540964.327985,150920.310985 540934.969985,150933.505985 540917.905985,150946.847985 540895.692985,150973.058985 540868.670985,150994.634985 540855.997985,151011.929985 540871.185985,151031.681985 540896.146985,151051.614985 540918.938985,151063.916985 540934.921985,151046.624985 540959.176985,151017.447985 540963.574985,150995.564985 540966.871985,150975.912985 540968.450985,150943.158985 540971.082985,150926.615985 540975.000985,150961.104985 540994.376985,151021.350985 541033.454985,151067.459985 541065.693985,151094.333985 541073.195985,151089.675985 541035.539985,151088.718985 540990.623985,151085.166985 540969.224985,151090.928985 540950.574985)) + POLYGON( EMPTY) + + #69 Polygon - gid: 2569 + + POLYGON((157856.121985 509999.999985,157796.029985 509999.999985,157791.006985 510004.813985,157791.813985 510018.198985,157800.933985 510029.066985,157811.325985 510037.421985,157822.700985 510041.583985,157836.355985 510047.726985,157846.509985 510047.168985,157860.168985 510044.667985,157865.721985 510035.395985,157865.310985 510029.671985,157864.898985 510023.947985,157864.938985 510012.985985,157856.897985 510002.060985,157856.121985 509999.999985)) + POLYGON( EMPTY) + + #70 Polygon - gid: 2570 + + POLYGON((166912.823985 510008.038985,166922.037985 510006.063985,166931.908985 510006.063985,166939.147985 510009.354985,166945.070985 510014.619985,166951.361985 510005.018985,166956.501985 509999.999985,166817.427985 509999.999985,166829.662985 510020.674985,166846.946985 510042.171985,166864.977985 510054.010985,166876.718985 510056.295985,166886.332985 510051.098985,166888.756985 510038.698985,166892.223985 510028.810985,166906.901985 510012.644985,166912.823985 510008.038985)) + POLYGON( EMPTY) + + #71 Polygon - gid: 2571 + + POLYGON((160978.349985 510216.528985,160976.017985 510196.815985,160972.315985 510179.827985,160967.100985 510160.634985,160968.288985 510153.324985,160933.313985 510163.101985,160874.570985 510167.697985,160863.688985 510172.638985,160844.319985 510175.223985,160810.435985 510182.778985,160768.056985 510200.089985,160716.009985 510219.903985,160738.406985 510250.985985,160748.943985 510253.617985,160780.763985 510240.957985,160797.438985 510248.395985,160805.905985 510245.900985,160816.794985 510243.385985,160819.530985 510230.970985,160825.180985 510216.642985,160843.337985 510214.067985,160859.081985 510213.938985,160867.450985 510238.436985,160922.763985 510238.573985,160931.321985 510255.515985,160938.802985 510279.789985,160937.700985 510301.677985,160953.256985 510301.882985,160978.462985 510235.998985,160978.349985 510216.528985)) + POLYGON( EMPTY) + + #72 Polygon - gid: 2572 + + POLYGON((164410.173985 510269.608985,164385.850985 510262.988985,164380.056985 510272.454985,164384.086985 510288.828985,164411.898985 510335.704985,164423.329985 510359.345985,164423.798985 510376.111985,164433.397985 510390.825985,164433.551985 510400.397985,164424.317985 510428.944985,164425.629985 510436.100985,164434.162985 510445.550985,164452.393985 510464.357985,164473.162985 510490.376985,164484.334985 510507.267985,164489.125985 510507.205985,164520.300985 510472.028985,164486.035985 510438.688985,164469.919985 510416.977985,164461.182985 510395.537985,164460.812985 510357.662985,164462.293985 510314.057985,164459.977985 510300.216985,164455.056985 510293.082985,164433.141985 510278.881985,164410.173985 510269.608985)) + POLYGON( EMPTY) + + #73 Polygon - gid: 2573 + + POLYGON((165811.803985 510461.433985,165827.476985 510461.338985,165854.112985 510465.702985,165860.990985 510489.889985,165940.128985 510487.374985,165967.267985 510478.917985,165996.204985 510476.027985,166010.928985 510478.380985,166019.470985 510482.908985,166045.518985 510470.094985,166044.175985 510465.335985,166021.852985 510442.020985,166001.663985 510418.254985,165994.615985 510423.284985,165980.675985 510431.298985,165958.830985 510417.903985,165925.719985 510435.804985,165903.141985 510416.529985,165886.871985 510433.864985,165815.334985 510412.070985,165802.365985 510419.692985,165789.470985 510429.714985,165779.722985 510425.222985,165778.145985 510413.260985,165776.187985 510391.342985,165769.739985 510377.140985,165758.796985 510372.686985,165747.033985 510380.266985,165729.008985 510378.757985,165718.359985 510383.904985,165721.532985 510409.525985,165740.376985 510475.641985,165741.587985 510513.924985,165761.560985 510539.628985,165782.635985 510526.535985,165800.213985 510512.079985,165787.945985 510464.582985,165790.350985 510462.507985,165811.803985 510461.433985)) + POLYGON( EMPTY) + + #74 Polygon - gid: 2574 + + POLYGON((156787.353985 510717.616985,156798.209985 510707.476985,156835.337985 510722.081985,156846.303985 510701.194985,156809.056985 510660.576985,156747.023985 510612.786985,156725.321985 510631.224985,156706.853985 510627.359985,156670.055985 510617.736985,156669.633985 510645.101985,156641.531985 510673.194985,156607.232985 510646.565985,156586.956985 510678.596985,156610.864985 510701.168985,156633.590985 510723.694985,156644.244985 510734.684985,156664.910985 510709.964985,156667.638985 510693.338985,156677.663985 510681.579985,156691.318985 510674.355985,156706.414985 510680.618985,156733.650985 510698.475985,156758.149985 510713.483985,156755.055985 510727.250985,156776.436985 510742.942985,156787.353985 510717.616985)) + POLYGON( EMPTY) + + #75 Polygon - gid: 2575 + + POLYGON((158008.700985 510611.812985,158026.072985 510610.072985,158045.611985 510612.296985,158069.846985 510619.338985,158090.368985 510618.785985,158109.698985 510613.651985,158128.025985 510597.619985,158093.668985 510549.634985,158057.574985 510514.193985,158039.492985 510494.646985,158015.478985 510474.555985,157995.775985 510460.308985,157942.439985 510496.109985,157921.521985 510507.754985,157902.162985 510523.671985,157865.738985 510559.611985,157883.243985 510610.932985,157890.286985 510634.366985,157893.710985 510647.347985,157892.650985 510661.155985,157898.540985 510682.313985,157906.960985 510705.486985,157913.131985 510731.023985,157917.901985 510747.795985,157920.336985 510757.682985,157923.967985 510759.058985,157940.909985 510743.266985,157936.142985 510728.843985,157938.154985 510709.160985,157948.143985 510678.120985,157961.674985 510650.062985,157989.091985 510622.655985,158008.700985 510611.812985)) + POLYGON( EMPTY) + + #76 Polygon - gid: 2576 + + POLYGON((166305.250985 510805.834985,166318.509985 510802.975985,166330.838985 510809.846985,166344.515985 510802.850985,166343.020985 510793.191985,166337.462985 510785.456985,166339.794985 510768.209985,166353.422985 510755.048985,166364.727985 510750.532985,166376.738985 510747.721985,166389.828985 510743.756985,166403.788985 510746.369985,166415.423985 510749.148985,166427.334985 510741.479985,166440.525985 510736.196985,166441.389985 510724.034985,166448.601985 510697.764985,166461.649985 510665.331985,166471.117985 510635.466985,166472.253985 510610.734985,166471.971985 510578.827985,166450.104985 510554.829985,166436.845985 510555.257985,166419.250985 510572.731985,166370.997985 510552.013985,166344.073985 510538.399985,166314.873985 510529.684985,166260.933985 510516.455985,166239.242985 510517.141985,166214.020985 510520.366985,166199.574985 510535.799985,166179.736985 510555.676985,166167.104985 510575.319985,166158.002985 510592.441985,166148.310985 510604.147985,166128.052985 510621.052985,166117.555985 510630.988985,166109.528985 510643.243985,166108.834985 510660.055985,166116.902985 510679.485985,166129.322985 510693.478985,166155.820985 510708.809985,166202.941985 510748.637985,166216.897985 510760.809985,166224.033985 510771.474985,166226.512985 510787.120985,166225.393985 510816.346985,166224.544985 510828.097985,166226.469985 510838.410985,166239.357985 510850.789985,166263.214985 510837.894985,166280.875985 510820.358985,166305.250985 510805.834985)) + POLYGON((166205.479485534 510652.581119516,166251.356748955 510691.357878233,166252.239160589 510692.115525049,166266.195160589 510704.287525049,166279.231532196 510719.102325104,166281.223092437 510722.078781098,166287.694391735 510714.260673777,166301.322391735 510701.099673777,166312.697826602 510692.069135259,166325.600553693 510685.400493874,166336.905553693 510680.884493874,166347.637140521 510677.506256777,166357.30243744 510675.244234494,166368.086801066 510671.977618621,166378.921550784 510670.069434357,166379.021705943 510669.772400869,166390.259992941 510641.837747114,166389.661020874 510641.648122609,166341.408020874 510620.930122609,166337.155021141 510618.944200876,166316.207348437 510608.352104004,166295.204881635 510602.083730778,166253.041853345 510591.743080032,166249.594867469 510591.852094477,166238.483846016 510602.984959354,166231.869257152 510613.27077071,166224.227146735 510627.646535877,166215.772193165 510640.272086276,166206.080193165 510651.978086276,166205.479485534 510652.581119516)) + + #77 Polygon - gid: 2577 + + POLYGON((144747.238985 510959.113985,144755.551985 510958.391985,144759.999985 510957.706985,144761.994985 510957.120985,144771.077985 510953.546985,144775.163985 510951.478985,144778.521985 510947.974985,144780.605985 510943.978985,144783.010985 510937.753985,144785.651985 510927.645985,144788.862985 510919.396985,144791.739985 510910.868985,144793.064985 510907.386985,144797.114985 510897.469985,144801.720985 510888.417985,144806.413985 510877.909985,144812.059985 510868.414985,144816.693985 510858.877985,144823.432985 510847.907985,144827.479985 510839.866985,144834.878985 510826.552985,144841.353985 510811.739985,144851.055985 510795.249985,144855.529985 510786.973985,144859.568985 510778.929985,144864.231985 510768.907985,144870.294985 510757.055985,144880.482985 510735.040985,144889.839985 510714.509985,144891.739985 510708.263985,144893.819985 510702.414985,144900.412985 510685.150985,144904.567985 510672.305985,144908.464985 510662.652985,144909.972985 510658.420985,144911.556985 510652.787985,144917.287985 510628.138985,144918.793985 510620.165985,144920.156985 510611.264985,144921.001985 510603.657985,144921.262985 510599.163985,144921.704985 510582.021985,144921.011985 510568.365985,144920.854985 510559.601985,144920.289985 510555.194985,144918.636985 510551.096985,144916.208985 510547.234985,144912.630985 510542.505985,144909.599985 510539.168985,144904.439985 510534.334985,144900.938985 510531.501985,144888.767985 510523.199985,144879.383985 510515.890985,144875.229985 510513.144985,144871.087985 510511.405985,144865.524985 510509.747985,144861.155985 510508.663985,144853.171985 510506.969985,144848.717985 510506.417985,144846.972985 510506.478985,144842.481985 510507.088985,144838.009985 510507.423985,144833.879985 510506.773985,144826.316985 510504.723985,144817.749985 510501.823985,144813.612985 510500.064985,144808.494985 510497.375985,144804.803985 510494.824985,144801.777985 510491.930985,144795.754985 510485.194985,144790.391985 510479.676985,144787.152985 510476.557985,144784.745985 510474.805985,144780.836985 510471.086985,144779.143985 510466.926985,144777.440985 510461.086985,144776.698985 510456.647985,144776.804985 510454.324985,144777.616985 510449.872985,144778.467985 510446.885985,144780.081985 510442.676985,144781.219985 510440.385985,144790.599985 510424.970985,144792.765985 510421.025985,144795.397985 510415.850985,144801.206985 510403.663985,144814.508985 510378.077985,144817.035985 510373.557985,144824.707985 510361.955985,144828.960985 510354.013985,144830.830985 510349.922985,144832.887985 510344.566985,144834.325985 510340.296985,144844.487985 510308.646985,144847.131985 510299.010985,144851.930985 510282.590985,144853.658985 510277.818985,144856.216985 510274.101985,144858.400985 510272.120985,144864.813985 510267.654985,144868.883985 510265.877985,144871.922985 510266.041985,144881.496985 510268.362985,144886.044985 510268.061985,144890.714985 510268.243985,144895.858985 510267.153985,144899.844985 510265.018985,144903.565985 510262.479985,144905.971985 510256.254985,144907.871985 510250.007985,144910.335985 510242.811985,144916.629985 510224.581985,144919.195985 510215.951985,144920.522985 510210.838985,144923.217985 510197.609985,144925.864985 510187.491985,144928.414985 510179.174985,144931.325985 510170.656985,144934.161985 510161.574985,144945.007985 510123.082985,144951.327985 510101.949985,144953.064985 510095.110985,144954.861985 510090.194985,144957.165985 510086.165985,144960.615985 510082.533985,144965.980985 510081.919985,144970.351985 510080.854985,144973.430985 510080.840985,144983.058985 510081.509985,144987.516985 510082.067985,144997.989985 510084.944985,145001.100985 510085.352985,145018.225985 510086.588985,145031.277985 510087.813985,145034.023985 510087.583985,145038.746985 510086.578985,145043.185985 510085.397985,145047.248985 510083.622985,145048.202985 510082.830985,145050.585985 510078.877985,145051.978985 510074.620985,145056.128985 510060.096985,145057.553985 510055.831985,145063.088985 510042.322985,145066.150985 510034.166985,145069.126985 510025.644985,145071.569985 510017.003985,145072.764985 510011.254985,145073.282985 510006.603985,145072.958985 510002.462985,145072.176985 510001.292985,145067.525985 509999.999985,144820.948985 509999.999985,144819.191985 510006.807985,144817.797985 510013.075985,144817.072985 510017.518985,144816.707985 510022.887985,144816.139985 510027.720985,144815.755985 510030.023985,144814.530985 510034.358985,144813.610985 510047.578985,144813.566985 510049.397985,144814.106985 510057.207985,144813.995985 510061.708985,144813.679985 510066.204985,144813.429985 510068.372985,144811.294985 510078.502985,144810.411985 510093.065985,144808.486985 510108.070985,144806.898985 510131.620985,144806.743985 510136.109985,144806.915985 510141.233985,144807.389985 510145.737985,144808.036985 510148.932985,144809.863985 510153.023985,144814.180985 510159.646985,144816.820985 510162.931985,144819.994985 510166.132985,144823.469985 510168.999985,144830.897985 510173.260985,144834.408985 510176.059985,144850.660985 510190.157985,144857.639985 510195.848985,144860.332985 510197.867985,144867.177985 510202.050985,144870.801985 510204.797985,144871.522985 510205.641985,144873.715985 510209.796985,144873.726985 510211.088985,144872.243985 510215.158985,144869.975985 510219.190985,144867.963985 510222.524985,144865.436985 510226.291985,144864.099985 510227.714985,144858.836985 510230.898985,144855.291985 510233.691985,144848.874985 510236.316985,144840.763985 510240.217985,144825.553985 510248.383985,144822.676985 510250.294985,144819.567985 510253.537985,144812.468985 510261.818985,144809.626985 510264.829985,144802.536985 510270.407985,144801.628985 510271.304985,144799.024985 510274.943985,144796.656985 510278.806985,144788.849985 510289.744985,144786.429985 510293.536985,144777.870985 510307.318985,144775.474985 510311.721985,144773.491985 510315.763985,144769.628985 510325.155985,144765.706985 510336.945985,144761.518985 510347.475985,144757.242985 510359.461985,144752.043985 510369.948985,144748.608985 510378.269985,144745.802985 510386.171985,144744.461985 510390.470985,144743.491985 510393.920985,144742.009985 510401.644985,144740.079985 510408.376985,144736.020985 510433.511985,144734.117985 510442.308985,144731.955985 510450.373985,144731.311985 510454.824985,144730.521985 510463.096985,144730.379985 510467.588985,144730.705985 510472.313985,144731.923985 510481.243985,144733.045985 510486.401985,144735.374985 510494.319985,144737.113985 510498.490985,144741.895985 510503.842985,144744.758985 510507.317985,144748.950985 510512.901985,144751.358985 510516.696985,144755.859985 510524.387985,144758.284985 510528.189985,144760.097985 510533.152985,144760.327985 510534.309985,144760.479985 510540.156985,144760.990985 510548.451985,144760.920985 510552.976985,144760.519985 510556.218985,144758.114985 510562.443985,144757.126985 510566.831985,144756.006985 510573.652985,144754.061985 510578.134985,144752.979985 510580.233985,144750.126985 510585.466985,144746.174985 510592.112985,144743.798985 510597.851985,144739.787985 510605.468985,144728.326985 510634.151985,144724.192985 510643.531985,144716.312985 510659.718985,144710.915985 510671.895985,144704.293985 510683.664985,144701.675985 510689.308985,144688.772985 510721.296985,144686.795985 510726.842985,144684.601985 510737.943985,144680.325985 510749.929985,144677.804985 510758.571985,144676.148985 510765.873985,144674.837985 510773.544985,144674.582985 510778.037985,144673.654985 510784.687985,144673.065985 510793.668985,144672.865985 510800.351985,144672.925985 510810.570985,144673.228985 510816.790985,144674.961985 510830.004985,144676.832985 510853.625985,144678.406985 510863.803985,144680.015985 510872.072985,144681.138985 510876.426985,144685.448985 510891.059985,144686.723985 510895.230985,144689.315985 510902.640985,144690.423985 510907.002985,144690.926985 510909.521985,144692.208985 510918.431985,144693.494985 510923.676985,144693.735985 510930.081985,144694.095985 510934.577985,144694.246985 510938.376985,144693.763985 510942.859985,144693.358985 510944.665985,144696.127985 510949.162985,144701.143985 510951.096985,144705.788985 510953.835985,144710.002985 510955.607985,144714.455985 510956.265985,144719.900985 510958.442985,144721.946985 510958.696985,144734.595985 510958.578985,144747.238985 510959.113985)) + POLYGON((144749.805324897 510825.061482914,144752.789028351 510819.62041865,144757.866524274 510811.355078054,144760.486491976 510806.149454063,144761.923067335 510803.434986066,144767.587610419 510793.24202396,144772.632499225 510781.700720814,144776.712345391 510773.707651011,144785.72556147 510758.388342297,144789.013934301 510752.305514056,144792.041340364 510746.276186408,144796.232065554 510737.269227828,144797.461513493 510734.750933975,144802.851102428 510724.215323211,144812.32672505 510703.739682063,144819.532622703 510687.928601084,144819.986383875 510686.436920937,144821.075239258 510683.134446422,144823.155239258 510677.285446422,144823.755352034 510675.657795175,144829.653168763 510660.214156769,144833.20844985 510649.223161446,144835.021528296 510644.229475959,144838.337343242 510636.016090875,144838.465649457 510635.656016669,144838.893478571 510634.134576393,144843.881842558 510612.679649866,144844.855340723 510607.525798029,144845.786560233 510601.444517867,144846.242579414 510597.339265905,144846.319063859 510596.02232684,144846.597559236 510585.2214948,144846.505245047 510585.158526071,144842.681852769 510582.369811905,144842.420062933 510582.165909314,144830.869719025 510581.69593476,144830.480274411 510583.247819704,144830.403008562 510583.447811353,144830.015933856 510585.805165431,144824.807966602 510603.50972512,144822.862966602 510607.99172512,144820.726062732 510612.499221354,144819.644062732 510614.598221354,144818.829365104 510616.134669394,144815.976365104 510621.367669394,144814.590794636 510623.799963586,144813.402521291 510625.798259296,144813.0949506 510626.541166785,144810.160479719 510632.796970601,144807.977881994 510636.941784083,144797.972947012 510661.980746658,144796.957259087 510664.399058888,144792.823259087 510673.779058888,144791.627021635 510676.359575578,144784.335439559 510691.337854647,144779.483161999 510702.285822749,144776.279551757 510708.673751936,144771.096265127 510717.885787628,144770.516318056 510719.136063131,144759.249566685 510747.067617255,144758.178740747 510752.485684136,144755.241424314 510763.144572561,144751.706995828 510773.051883092,144750.442994832 510777.384884522,144749.737494578 510780.495731656,144749.478023586 510782.013963529,144749.462483862 510782.287767375,144748.863209928 510788.403706614,144748.314579795 510792.335161771,144747.992515989 510797.245951313,144747.872572957 510801.253847731,144747.915266496 510808.525268963,144747.990947665 510810.078855983,144749.325187901 510820.252341544,144749.727807841 510824.08284561,144749.805324897 510825.061482914)) + + #78 Polygon - gid: 2578 + + POLYGON((164261.154985 510650.157985,164222.546985 510625.817985,164154.918985 510621.315985,164140.780985 510624.098985,164100.762985 510630.061985,164079.139985 510626.535985,164059.912985 510617.594985,164015.891985 510599.380985,163982.805985 510602.715985,163983.143985 510614.572985,163970.818985 510623.941985,163962.940985 510638.400985,163944.888985 510642.579985,163933.276985 510650.021985,163930.136985 510664.321985,163942.960985 510666.830985,163941.293985 510678.107985,163929.785985 510687.883985,163929.852985 510705.547985,163938.943985 510721.193985,163934.579985 510733.094985,163953.814985 510756.399985,163950.048985 510774.682985,163998.911985 510843.113985,164035.797985 510852.162985,164061.288985 510859.960985,164064.966985 510901.893985,164073.003985 510919.767985,164104.848985 510938.739985,164122.787985 510951.327985,164144.387985 510967.544985,164162.825985 510996.374985,164172.641985 511008.200985,164185.573985 511018.018985,164202.763985 511022.535985,164212.601985 511010.055985,164213.482985 511003.929985,164225.152985 510978.161985,164230.919985 510950.063985,164230.938985 510918.038985,164233.340985 510891.355985,164227.100985 510877.482985,164217.221985 510859.031985,164207.163985 510838.163985,164213.661985 510828.524985,164218.967985 510814.960985,164226.671985 510801.335985,164224.750985 510783.190985,164225.316985 510765.035985,164230.416985 510743.577985,164239.929985 510713.941985,164248.933985 510702.513985,164260.336985 510694.005985,164268.258985 510684.930985,164271.205985 510666.516985,164261.154985 510650.157985)) + MULTIPOLYGON(((164014.772946481 510692.038226625,164012.326520825 510702.178274868,164011.527687693 510703.983065768,164012.792704249 510710.315333713,164019.220139731 510719.696228589,164024.701026238 510731.901634901,164027.926009408 510744.88668568,164028.625355324 510755.663210165,164043.789058394 510776.899470009,164053.667376006 510779.322852758,164057.737747794 510780.44376297,164083.228747794 510788.24176297,164096.890697277 510793.949485374,164109.165116963 510802.229918941,164119.573627528 510812.760344693,164127.710570996 510825.130353169,164132.468221954 510836.901739132,164133.325767413 510825.014170419,164137.645626258 510810.01797644,164144.975438653 510796.240427145,164146.837342966 510793.478516453,164149.121889886 510787.638411963,164149.973044149 510785.847891558,164149.787406278 510780.853921626,164150.353406278 510762.698921626,164152.349592409 510747.69356249,164157.449592409 510726.23556249,164159.005822839 510720.655377845,164166.517509919 510697.254099772,164159.752582182 510696.803758128,164155.266414285 510697.686839558,164151.834541591 510698.279972367,164111.816541591 510704.242972367,164100.248309551 510705.06021904,164088.69238323 510704.084282809,164067.06938323 510700.558282809,164047.515386117 510694.54249017,164029.749639703 510686.281006908,164022.566743301 510683.309032735,164019.818736513 510687.28780718,164014.772946481 510692.038226625)),((164136.84918064 510863.064920405,164137.537585488 510870.913446915,164140.559339427 510872.713689205,164139.602082474 510870.727604686,164136.84918064 510863.064920405))) + + #79 Polygon - gid: 2579 + + POLYGON((161163.886985 511013.234985,161189.226985 511008.259985,161204.882985 511010.529985,161216.939985 511017.641985,161227.792985 511024.762985,161248.543985 511023.948985,161299.183985 511005.191985,161318.473985 510994.650985,161337.727985 510983.346985,161348.559985 510978.469985,161375.078985 510969.443985,161394.349985 510955.624985,161394.328985 510946.004985,161386.939985 510926.037985,161379.543985 510910.182985,161373.427985 510893.386985,161363.695985 510872.502985,161346.474985 510842.958985,161332.028985 510828.673985,161317.614985 510828.796985,161308.031985 510836.768985,161299.658985 510853.659985,161291.142985 510866.375985,161274.318985 510871.326985,161257.475985 510869.066985,161241.807985 510872.311985,161238.216985 510879.558985,161240.655985 510891.564985,161229.883985 510913.302985,161231.180985 510932.556985,161185.371985 510950.503985,161191.407985 510980.108985,161185.480985 510984.191985,161121.102985 510988.479985,161103.734985 510957.896985,161083.239985 510960.482985,161098.380985 511024.842985,161108.119985 511034.441985,161137.241985 511023.833985,161163.886985 511013.234985)) + POLYGON( EMPTY) + + #80 Polygon - gid: 2580 + + POLYGON((153813.688985 511062.953985,153835.321985 511057.586985,153844.786985 511047.891985,153846.824985 511035.417985,153842.431985 511021.764985,153850.025985 511008.873985,153863.361985 510999.755985,153876.654985 510996.614985,153892.257985 510993.431985,153902.800985 510983.707985,153905.732985 510969.043985,153904.396985 510957.029985,153901.984985 510954.939985,153890.617985 510951.489985,153860.008985 510941.167985,153846.688985 510938.404985,153830.265985 510936.142985,153810.244985 510933.880985,153789.735985 510928.797985,153776.421985 510929.931985,153733.777985 510924.325985,153700.997985 510915.447985,153687.636985 510916.347985,153676.673985 510919.325985,153663.820985 510943.732985,153641.900985 510991.329985,153631.225985 511030.452985,153671.961985 511040.388985,153697.242985 511041.748985,153714.534985 511045.144985,153735.736985 511055.102985,153749.989985 511063.251985,153773.223985 511062.327985,153792.770985 511065.572985,153813.688985 511062.953985)) + POLYGON( EMPTY) + + #81 Polygon - gid: 2581 + + POLYGON((144665.365985 511341.906985,144664.510985 511337.457985,144663.984985 511333.542985,144661.230985 511335.031985,144656.989985 511336.582985,144654.973985 511336.925985,144649.894985 511337.240985,144645.424985 511337.740985,144643.682985 511337.588985,144639.352985 511336.370985,144637.147985 511334.599985,144633.775985 511330.501985,144631.204985 511326.779985,144628.821985 511322.413985,144627.874985 511317.609985,144627.824985 511311.225985,144628.204985 511306.750985,144629.551985 511302.647985,144631.234985 511298.457985,144632.940985 511294.276985,144634.697985 511290.801985,144636.006985 511286.610985,144635.336985 511282.657985,144632.316985 511273.996985,144630.183985 511267.028985,144629.061985 511262.662985,144628.107985 511257.545985,144627.616985 511253.074985,144627.010985 511243.356985,144627.072985 511241.389985,144627.116985 511234.355985,144626.579985 511230.453985,144622.517985 511209.850985,144621.773985 511205.415985,144620.186985 511189.774985,144618.065985 511174.597985,144617.482985 511167.000985,144617.043985 511158.007985,144616.767985 511145.828985,144617.268985 511137.576985,144620.089985 511116.855985,144620.822985 511112.419985,144623.492985 511101.825985,144624.945985 511094.587985,144627.469985 511086.420985,144630.555985 511069.704985,144634.070985 511056.450985,144634.616985 511052.168985,144634.472985 511051.111985,144631.341985 511047.649985,144625.618985 511056.693985,144623.466985 511060.456985,144613.544985 511081.937985,144608.763985 511093.902985,144604.703985 511101.953985,144604.128985 511103.439985,144602.908985 511107.755985,144601.369985 511115.489985,144598.939985 511130.473985,144596.298985 511140.582985,144594.291985 511149.356985,144592.663985 511157.537985,144591.198985 511166.160985,144589.244985 511181.651985,144588.862985 511187.962985,144587.885985 511195.707985,144587.384985 511203.960985,144586.684985 511208.405985,144584.601985 511224.769985,144584.400985 511229.274985,144582.378985 511236.355985,144581.725985 511240.804985,144581.099985 511248.591985,144581.095985 511253.941985,144581.897985 511269.049985,144581.451985 511276.710985,144581.585985 511281.208985,144582.173985 511289.881985,144582.056985 511291.823985,144575.283985 511305.626985,144572.076985 511322.283985,144568.363985 511349.427985,144566.469985 511360.018985,144564.565985 511367.244985,144560.273985 511380.836985,144557.896985 511388.835985,144555.477985 511397.505985,144553.900985 511404.108985,144552.233985 511412.954985,144551.618985 511417.905985,144549.373985 511444.507985,144547.950985 511456.490985,144547.265985 511469.973985,144545.938985 511482.897985,144544.783985 511500.860985,144543.674985 511514.445985,144543.507985 511521.138985,144543.695985 511525.637985,144544.907985 511534.198985,144545.816985 511543.153985,144546.797985 511550.352985,144551.118985 511574.736985,144551.888985 511582.932985,144552.571985 511587.378985,144555.698985 511605.441985,144558.436985 511618.524985,144558.653985 511620.435985,144558.639985 511624.942985,144558.299985 511628.256985,144565.200985 511620.333985,144568.479985 511617.196985,144569.415985 511612.446985,144570.165985 511606.524985,144570.813985 511597.777985,144571.561985 511593.330985,144572.193985 511590.917985,144573.736985 511586.693985,144577.541985 511578.519985,144579.708985 511574.574985,144582.277985 511570.335985,144584.829985 511566.786985,144587.868985 511563.470985,144591.176985 511560.405985,144594.825985 511557.595985,144596.719985 511556.343985,144602.203985 511553.326985,144608.153985 511548.349985,144619.625985 511542.308985,144623.156985 511539.530985,144631.920985 511531.965985,144635.205985 511527.763985,144641.644985 511518.581985,144647.686985 511508.167985,144651.603985 511502.244985,144655.044985 511497.794985,144658.227985 511494.613985,144668.411985 511483.048985,144672.012985 511478.307985,144675.713985 511475.049985,144678.988985 511470.922985,144681.256985 511466.552985,144685.996985 511456.770985,144687.908985 511451.367985,144691.283985 511443.499985,144692.095985 511439.073985,144693.475985 511434.284985,144694.371985 511429.253985,144694.509985 511427.819985,144694.410985 511423.320985,144694.807985 511417.069985,144694.285985 511412.598985,144692.567985 511405.382985,144691.736985 511400.949985,144689.740985 511395.877985,144687.240985 511390.324985,144685.113985 511384.496985,144683.189985 511380.429985,144681.438985 511376.739985,144679.837985 511372.530985,144678.788985 511369.942985,144673.535985 511360.160985,144668.260985 511351.627985,144666.478985 511346.301985,144665.365985 511341.906985)) + POLYGON( EMPTY) + + #82 Polygon - gid: 2582 + + POLYGON((150793.118985 511863.872985,150782.435985 511854.966985,150773.079985 511846.582985,150769.853985 511843.245985,150766.986985 511839.782985,150761.511985 511832.617985,150758.605985 511829.192985,150754.526985 511825.034985,150751.182985 511821.998985,150747.703985 511819.159985,150745.002985 511817.382985,150740.884985 511815.528985,150736.708985 511814.410985,150732.238985 511813.744985,150725.323985 511813.170985,150720.857985 511813.353985,150717.259985 511814.287985,150711.627985 511816.933985,150702.186985 511822.826985,150698.518985 511825.423985,150696.368985 511827.525985,150684.761985 511840.202985,150681.550985 511843.503985,150678.272985 511846.599985,150674.783985 511849.436985,150669.637985 511852.923985,150665.663985 511855.000985,150661.936985 511856.225985,150656.873985 511856.914985,150652.348985 511856.798985,150647.905985 511856.025985,150645.239985 511855.186985,150641.073985 511853.447985,150636.151985 511851.082985,150628.316985 511846.527985,150624.260985 511844.691985,150620.988985 511843.836985,150616.496985 511843.242985,150611.814985 511842.919985,150607.312985 511842.716985,150602.796985 511842.724985,150598.313985 511843.011985,150596.601985 511843.287985,150592.221985 511844.505985,150587.641985 511845.379985,150583.110985 511845.114985,150578.119985 511843.789985,150574.644985 511840.859985,150566.899985 511831.685985,150563.749985 511828.530985,150562.674985 511827.708985,150554.656985 511823.535985,150545.568985 511816.704985,150540.506985 511813.718985,150530.264985 511808.717985,150526.014985 511807.641985,150524.251985 511807.730985,150515.536985 511810.459985,150509.160985 511811.415985,150500.505985 511813.304985,150490.484985 511815.200985,150479.709985 511816.692985,150470.899985 511818.531985,150462.891985 511820.493985,150458.194985 511821.964985,150445.836985 511827.404985,150439.625985 511829.715985,150435.355985 511831.140985,150422.598985 511834.889985,150419.093985 511836.166985,150399.357985 511844.231985,150390.792985 511848.186985,150386.777985 511850.257985,150382.945985 511852.571985,150380.704985 511854.175985,150377.924985 511857.651985,150377.614985 511859.079985,150377.897985 511868.209985,150376.511985 511876.021985,150376.611985 511877.158985,150379.114985 511885.853985,150380.117985 511890.230985,150380.935985 511898.667985,150381.832985 511915.743985,150382.366985 511932.541985,150382.275985 511937.039985,150381.956985 511940.848985,150381.344985 511945.308985,150381.694985 511947.764985,150384.059985 511951.718985,150387.229985 511954.008985,150396.270985 511958.492985,150415.434985 511967.136985,150427.214985 511971.698985,150435.461985 511975.194985,150439.538985 511977.090985,150442.724985 511978.823985,150450.449985 511983.451985,150461.357985 511990.730985,150470.449985 511996.184985,150476.812985 512000.277985,150486.281985 512004.468985,150498.388985 512009.375985,150506.829985 512012.490985,150515.408985 512015.156985,150519.751985 512016.347985,150529.479985 512018.627985,150538.331985 512020.289985,150542.988985 512021.027985,150551.938985 512021.972985,150568.897985 512022.823985,150577.823985 512023.998985,150585.204985 512025.356985,150590.396985 512025.748985,150594.855985 512025.332985,150603.774985 512023.841985,150612.102985 512022.714985,150617.473985 512021.715985,150621.801985 512020.489985,150636.118985 512015.843985,150644.319985 512013.498985,150645.997985 512012.737985,150661.643985 512004.213985,150668.485985 511999.122985,150671.737985 511997.405985,150679.881985 511993.545985,150696.995985 511983.795985,150705.252985 511978.647985,150720.985985 511967.981985,150724.570985 511965.274985,150726.337985 511963.711985,150732.784985 511957.421985,150738.545985 511953.334985,150742.362985 511950.937985,150749.200985 511947.223985,150750.312985 511946.426985,150753.762985 511943.523985,150759.775985 511938.828985,150769.269985 511930.492985,150772.469985 511927.344985,150775.669985 511922.275985,150776.549985 511921.269985,150779.777985 511918.119985,150782.178985 511915.393985,150785.867985 511911.585985,150793.096985 511906.023985,150796.180985 511902.741985,150798.947985 511899.183985,150800.512985 511896.731985,150803.753985 511890.480985,150805.353985 511886.291985,150805.688985 511883.904985,150805.356985 511879.352985,150802.648985 511875.749985,150797.659985 511868.435985,150796.383985 511866.983985,150793.118985 511863.872985)) + POLYGON((150457.10488879 511902.90912939,150464.733870064 511906.143144005,150467.087964112 511907.189121685,150471.164964112 511909.085121685,150475.376080646 511911.206976503,150478.562080646 511912.939976503,150481.269290797 511914.486309485,150488.994290797 511919.114309485,150492.08021185 511921.066696571,150501.486797912 511927.343790442,150509.030924817 511931.869270879,150511.024338606 511933.107874813,150512.491255491 511934.051469158,150515.55259617 511935.406425202,150525.464472069 511939.423735439,150530.957806829 511941.45095233,150536.461059094 511943.161136564,150538.233258087 511943.647134491,150544.964737503 511945.224824979,150551.123863489 511946.381226628,150552.802642224 511946.647264572,150557.760384086 511947.17073564,150572.656744079 511947.918232683,150578.686383311 511948.465480049,150587.612383311 511949.640480049,150590.267735925 511950.059246398,150591.408748513 511949.868501946,150593.717167366 511949.519442629,150600.209475453 511948.640860591,150600.252315061 511948.632892472,150612.969191529 511944.506147479,150615.49980374 511943.73400397,150616.316038105 511943.500609313,150621.116996024 511940.885029273,150623.714257734 511938.952457018,150633.468454743 511932.799741904,150636.720454743 511931.082741904,150638.019151806 511930.432505435,150635.050484011 511929.916012029,150625.391778503 511927.56695582,150622.725778503 511926.72795582,150616.34901009 511924.399061755,150612.18301009 511922.660061755,150608.591920771 511921.049135163,150603.669920771 511918.684135163,150603.656921969 511918.677247374,150601.700523332 511919.050586328,150583.263019067 511920.25204025,150578.732019067 511919.98704025,150563.866752358 511917.604015274,150558.875752358 511916.279015274,150543.486379129 511910.314516899,150529.774245546 511901.128361997,150526.299245546 511898.198361997,150517.336788462 511889.24149603,150515.759481157 511887.373165854,150514.988775912 511886.887589413,150514.448819526 511886.997571909,150504.427819526 511888.893571909,150500.771984776 511889.492152952,150492.530977352 511890.633274351,150487.491266548 511891.685263927,150484.051346716 511892.528061469,150476.053921669 511896.04853341,150471.991319844 511897.696881893,150465.780319844 511900.007881893,150463.368057644 511900.858897413,150459.098057644 511902.283897413,150457.10488879 511902.90912939)) + + #83 Polygon - gid: 2583 + + POLYGON((156449.341985 511947.023985,156464.014985 511945.970985,156481.530985 511959.981985,156488.552985 511957.898985,156502.465985 511951.515985,156519.696985 511967.276985,156532.436985 511968.984985,156546.765985 511960.382985,156557.920985 511953.685985,156617.345985 511926.606985,156650.552985 511912.686985,156629.697985 511893.765985,156618.726985 511870.069985,156571.803985 511869.954985,156520.017985 511866.320985,156489.605985 511875.922985,156479.281985 511900.711985,156450.551985 511915.185985,156420.762985 511933.429985,156402.252985 511952.078985,156397.242985 511979.578985,156395.515985 512016.444985,156378.536985 512022.679985,156378.119985 512031.838985,156381.340985 512046.684985,156381.973985 512059.782985,156387.971985 512068.254985,156389.726985 512093.748985,156394.837985 512106.687985,156406.149985 512102.202985,156420.544985 512083.467985,156439.940985 512083.059985,156434.834985 512074.138985,156430.875985 512065.561985,156431.200985 512050.264985,156442.042985 512026.074985,156436.831985 511998.762985,156428.771985 511968.333985,156449.341985 511947.023985)) + POLYGON( EMPTY) + + #84 Polygon - gid: 2584 + + POLYGON((155602.027985 512384.736985,155651.324985 512362.529985,155690.321985 512347.470985,155728.819985 512327.098985,155734.742985 512356.836985,155759.349985 512351.936985,155787.291985 512340.198985,155805.031985 512324.680985,155807.589985 512298.852985,155807.126985 512268.633985,155818.253985 512240.316985,155826.566985 512208.914985,155827.900985 512153.049985,155845.759985 512111.821985,155872.507985 512069.193985,155889.837985 512044.252985,155912.490985 512003.645985,155927.073985 511997.027985,155950.234985 512000.369985,155966.659985 511999.703985,155977.448985 511982.546985,155986.844985 511959.429985,155997.767985 511948.403985,156006.318985 511939.771985,156026.620985 511926.970985,156045.097985 511907.642985,156056.068985 511885.544985,156051.584985 511870.282985,156034.120985 511859.853985,156026.020985 511861.511985,156014.495985 511863.870985,155993.202985 511891.082985,155979.638985 511907.819985,155960.158985 511915.091985,155951.804985 511911.642985,155944.020985 511895.340985,155936.829985 511869.525985,155922.587985 511855.727985,155888.814985 511836.983985,155840.846985 511835.381985,155800.677985 511839.829985,155775.670985 511860.233985,155774.333985 511899.906985,155795.411985 511943.754985,155816.206985 511963.053985,155845.433985 511975.560985,155878.744985 511980.178985,155881.067985 511998.835985,155876.445985 512018.197985,155856.169985 512033.153985,155847.373985 512031.370985,155820.826985 512018.441985,155810.139985 512012.400985,155794.109985 512003.338985,155772.511985 512000.769985,155747.437985 512018.467985,155743.449985 512037.075985,155734.345985 512063.507985,155719.020985 512086.564985,155704.834985 512109.490985,155702.872985 512125.983985,155716.012985 512136.488985,155732.291985 512135.876985,155741.646985 512132.513985,155752.134985 512114.732985,155766.085985 512102.084985,155788.547985 512103.687985,155796.852985 512111.554985,155796.473985 512128.617985,155787.305985 512152.726985,155777.070985 512175.994985,155766.262985 512204.174985,155762.622985 512221.408985,155755.035985 512230.476985,155736.132985 512235.898985,155721.747985 512236.656985,155705.074985 512229.699985,155686.855985 512217.112985,155670.731985 512211.063985,155654.433985 512228.409985,155640.417985 512242.145985,155618.476985 512253.328985,155601.188985 512251.812985,155596.704985 512241.110985,155597.324985 512234.943985,155608.428985 512222.055985,155617.613985 512215.614985,155621.498985 512204.875985,155620.091985 512189.821985,155601.632985 512166.310985,155571.728985 512189.472985,155512.046985 512240.386985,155484.043985 512264.760985,155478.016985 512282.219985,155490.242985 512305.307985,155510.088985 512325.660985,155531.257985 512342.424985,155545.862985 512369.388985,155548.396985 512380.288985,155551.240985 512378.547985,155571.923985 512396.101985,155602.027985 512384.736985)) + POLYGON( EMPTY) + + #85 Polygon - gid: 2585 + + POLYGON((158639.754985 512372.943985,158642.449985 512349.639985,158651.455985 512332.998985,158654.537985 512321.227985,158662.359985 512307.021985,158667.084985 512302.182985,158674.148985 512294.948985,158682.389985 512285.305985,158690.575985 512270.902985,158694.679985 512247.278985,158692.208985 512240.181985,158683.712985 512228.424985,158668.883985 512217.032985,158646.555985 512214.750985,158627.649985 512229.323985,158617.422985 512243.507985,158608.087985 512260.305985,158586.772985 512272.531985,158565.598985 512272.645985,158544.191985 512277.739985,158539.545985 512287.325985,158537.795985 512315.696985,158533.147985 512325.284985,158525.175985 512334.748985,158523.574985 512355.881985,158524.640985 512365.547985,158529.449985 512367.856985,158536.445985 512375.035985,158563.901985 512374.626985,158573.392985 512369.724985,158581.691985 512364.839985,158593.207985 512355.298985,158604.326985 512359.738985,158609.225985 512369.189985,158611.793985 512383.436985,158613.851985 512401.113985,158626.612985 512394.997985,158634.009985 512385.227985,158638.305985 512373.378985,158639.754985 512372.943985)) + POLYGON( EMPTY) + + #86 Polygon - gid: 2586 + + POLYGON((155727.202985 512684.126985,155741.919985 512679.921985,155754.534985 512679.921985,155769.250985 512673.614985,155781.865985 512667.307985,155798.163985 512654.965985,155820.165985 512662.878985,155835.705985 512670.729985,155850.180985 512672.093985,155857.418985 512672.776985,155870.184985 512655.342985,155879.069985 512649.526985,155883.511985 512646.618985,155904.577985 512658.609985,155930.402985 512657.713985,155952.915985 512644.276985,155976.753985 512624.405985,155979.221985 512607.413985,156006.945985 512594.025985,156026.550985 512576.591985,156049.621985 512550.417985,156054.729985 512531.129985,156054.755985 512505.514985,156044.897985 512478.134985,156019.611985 512455.590985,156003.719985 512436.978985,155985.013985 512416.265985,155959.225985 512408.307985,155929.903985 512411.681985,155923.048985 512441.509985,155927.659985 512492.523985,155928.478985 512511.588985,155908.647985 512524.923985,155882.165985 512527.804985,155865.679985 512509.153985,155855.593985 512479.621985,155854.702985 512472.706985,155852.030985 512451.962985,155847.595985 512433.051985,155825.610985 512418.598985,155813.750985 512399.623985,155799.230985 512404.242985,155778.543985 512443.422985,155785.678985 512477.221985,155802.478985 512510.914985,155793.319985 512534.784985,155772.281985 512535.697985,155760.161985 512563.378985,155745.307985 512608.348985,155729.305985 512650.488985,155722.998985 512656.795985,155712.486985 512652.590985,155693.564985 512646.283985,155625.087985 512605.101985,155576.978985 512579.241985,155565.134985 512573.289985,155585.397985 512555.877985,155608.591985 512548.877985,155605.820985 512529.964985,155602.102985 512511.257985,155573.935985 512503.813985,155483.898985 512506.544985,155470.203985 512506.897985,155425.981985 512510.850985,155377.120985 512514.465985,155322.665985 512512.452985,155316.148985 512512.497985,155316.519985 512514.568985,155310.172985 512526.065985,155306.522985 512576.960985,155296.149985 512617.554985,155292.347985 512627.995985,155313.655985 512633.929985,155348.186985 512651.970985,155370.507985 512655.437985,155395.810985 512650.471985,155419.682985 512637.003985,155449.809985 512621.252985,155479.012985 512613.969985,155504.153985 512617.337985,155528.206985 512637.756985,155555.101985 512657.978985,155582.666985 512663.452985,155608.860985 512671.327985,155653.082985 512686.633985,155695.712985 512698.015985,155710.383985 512700.946985,155718.793985 512694.638985,155727.202985 512684.126985)) + POLYGON( EMPTY) + + #87 Polygon - gid: 2587 + + POLYGON((146166.976985 512563.940985,146169.594985 512563.533985,146174.055985 512564.781985,146177.356985 512561.339985,146181.129985 512554.989985,146185.373985 512548.630985,146189.013985 512541.920985,146194.870985 512530.011985,146198.574985 512521.811985,146202.486985 512510.766985,146206.272985 512502.588985,146208.002985 512498.444985,146209.826985 512492.155985,146212.021985 512482.022985,146213.069985 512474.579985,146213.899985 512465.609985,146214.122985 512461.084985,146213.982985 512452.080985,146213.290985 512444.415985,146211.750985 512435.542985,146210.899985 512432.081985,146209.279985 512427.626985,146202.014985 512417.721985,146193.565985 512405.040985,146190.827985 512399.745985,146189.280985 512395.443985,146188.608985 512391.002985,146188.735985 512383.754985,146189.509985 512374.731985,146190.957985 512365.827985,146193.621985 512354.666985,146196.283985 512346.008985,146199.521985 512337.449985,146202.058985 512333.521985,146205.570985 512330.766985,146209.847985 512330.235985,146220.199985 512330.990985,146232.889985 512334.095985,146236.718985 512336.497985,146243.325985 512339.763985,146249.933985 512343.512985,146258.162985 512349.266985,146262.031985 512352.246985,146265.456985 512355.165985,146272.146985 512361.243985,146278.196985 512367.051985,146281.562985 512370.018985,146283.636985 512371.307985,146288.761985 512373.835985,146292.889985 512375.617985,146295.481985 512376.220985,146299.968985 512376.458985,146303.856985 512375.344985,146308.377985 512373.216985,146316.009985 512368.440985,146319.433985 512366.733985,146324.146985 512364.674985,146334.262985 512360.634985,146338.382985 512358.815985,146343.177985 512356.459985,146352.192985 512351.076985,146356.303985 512348.809985,146360.631985 512347.534985,146365.076985 512346.785985,146369.540985 512346.711985,146374.638985 512347.185985,146383.481985 512348.875985,146386.523985 512348.970985,146391.031985 512348.741985,146396.693985 512348.157985,146398.836985 512347.264985,146402.911985 512345.190985,146406.601985 512342.664985,146407.369985 512341.866985,146413.207985 512329.834985,146414.615985 512325.605985,146415.160985 512322.986985,146415.639985 512318.282985,146415.082985 512313.996985,146413.604985 512312.108985,146409.418985 512309.747985,146407.116985 512308.829985,146402.755985 512307.423985,146394.786985 512303.239985,146391.945985 512301.969985,146387.707985 512300.465985,146384.157985 512299.758985,146373.077985 512298.308985,146371.668985 512297.962985,146366.140985 512295.894985,146362.222985 512293.667985,146360.086985 512292.216985,146355.784985 512288.717985,146352.559985 512285.575985,146348.870985 512281.607985,146346.171985 512278.002985,146344.075985 512274.769985,146341.569985 512269.924985,146339.050985 512260.216985,146339.079985 512246.711985,146338.564985 512238.156985,146338.130985 512233.677985,146335.336985 512214.430985,146334.344985 512210.061985,146332.244985 512204.923985,146330.093985 512200.952985,146327.794985 512197.206985,146324.899985 512193.795985,146321.434985 512191.598985,146317.091985 512189.432985,146309.323985 512184.888985,146303.936985 512181.457985,146300.355985 512178.763985,146298.733985 512177.197985,146295.789985 512172.900985,146294.087985 512168.735985,146292.744985 512164.191985,146290.697985 512155.428985,146288.537985 512143.477985,146287.578985 512134.336985,146287.272985 512129.846985,146287.102985 512123.380985,146287.228985 512114.373985,146287.112985 512109.880985,146286.374985 512101.930985,146284.902985 512090.429985,146283.740985 512081.485985,146282.851985 512077.088985,146280.837985 512070.639985,146275.584985 512056.262985,146273.874985 512052.114985,146273.243985 512050.980985,146254.611985 512024.878985,146248.543985 512017.815985,146245.732985 512014.270985,146243.655985 512010.600985,146243.852985 512008.166985,146246.012985 512003.791985,146252.863985 511979.961985,146254.225985 511974.758985,146255.146985 511970.352985,146257.351985 511957.390985,146257.964985 511952.925985,146258.260985 511948.133985,146257.735985 511943.629985,146256.366985 511939.322985,146254.473985 511936.211985,146251.644985 511932.639985,146247.278985 511926.685985,146233.230985 511908.799985,146222.941985 511895.214985,146212.626985 511883.086985,146203.013985 511872.601985,146198.631985 511866.609985,146192.859985 511859.687985,146189.793985 511856.402985,146187.793985 511854.542985,146180.824985 511848.828985,146174.327985 511842.730985,146170.156985 511839.261985,146166.346985 511836.872985,146162.414985 511834.655985,146155.353985 511830.943985,146151.558985 511828.564985,146150.071985 511827.399985,146146.718985 511824.409985,146131.468985 511809.734985,146128.133985 511806.716985,146124.322985 511803.666985,146120.556985 511801.187985,146116.544985 511799.068985,146112.378985 511797.359985,146112.171985 511800.770985,146111.199985 511805.322985,146109.552985 511809.493985,146107.855985 511811.576985,146103.683985 511814.013985,146095.647985 511813.349985,146091.150985 511813.203985,146082.184985 511813.362985,146080.884985 511813.180985,146076.120985 511811.909985,146071.102985 511810.343985,146066.266985 511808.030985,146061.890985 511806.956985,146060.071985 511806.842985,146055.518985 511805.799985,146053.676985 511801.503985,146053.392985 511796.956985,146052.060985 511798.081985,146048.202985 511800.432985,146046.939985 511800.933985,146041.831985 511802.104985,146033.783985 511803.032985,146021.534985 511804.853985,146010.430985 511805.941985,146001.961985 511808.986985,145999.868985 511809.336985,145993.249985 511809.685985,145988.748985 511809.704985,145972.952985 511808.649985,145968.456985 511808.614985,145962.536985 511809.137985,145955.586985 511810.173985,145946.751985 511811.900985,145931.180985 511815.560985,145923.630985 511815.211985,145921.449985 511815.416985,145916.390985 511816.456985,145912.040985 511817.607985,145899.094985 511821.446985,145898.671985 511827.626985,145897.959985 511833.437985,145896.272985 511842.280985,145894.388985 511851.014985,145893.746985 511866.238985,145892.513985 511880.048985,145892.097985 511882.450985,145891.100985 511886.840985,145886.859985 511899.482985,145880.730985 511914.091985,145878.241985 511922.288985,145876.483985 511926.259985,145871.473985 511927.983985,145867.052985 511928.834985,145851.133985 511929.639985,145846.673985 511930.725985,145844.102985 511934.297985,145839.483985 511943.835985,145835.917985 511952.104985,145834.022985 511955.925985,145833.089985 511959.888985,145834.858985 511961.248985,145839.696985 511961.704985,145847.667985 511964.562985,145851.967985 511965.836985,145857.630985 511965.736985,145861.503985 511967.145985,145867.018985 511969.482985,145871.317985 511970.809985,145879.898985 511972.132985,145888.307985 511975.341985,145891.449985 511976.221985,145897.298985 511977.362985,145906.240985 511978.406985,145912.375985 511979.747985,145920.173985 511980.489985,145927.160985 511981.356985,145931.603985 511982.135985,145935.971985 511983.195985,145941.276985 511984.958985,145949.658985 511988.269985,145953.697985 511989.930985,145957.682985 511991.993985,145960.523985 511994.105985,145965.656985 511999.048985,145971.858985 512005.613985,145974.677985 512009.092985,145976.774985 512012.567985,145978.664985 512017.548985,145978.930985 512022.067985,145978.934985 512030.767985,145980.033985 512039.324985,145980.355985 512043.792985,145979.736985 512049.515985,145974.978985 512077.720985,145970.939985 512094.710985,145970.097985 512099.899985,145969.429985 512104.353985,145968.212985 512110.362985,145963.403985 512127.711985,145959.777985 512138.566985,145958.219985 512142.787985,145954.919985 512150.579985,145954.316985 512152.865985,145950.023985 512173.319985,145949.268985 512177.747985,145948.670985 512184.400985,145948.801985 512188.872985,145949.475985 512191.375985,145951.382985 512196.412985,145955.761985 512214.480985,145957.308985 512218.688985,145958.951985 512221.666985,145965.956985 512232.465985,145968.169985 512236.379985,145971.396985 512243.185985,145972.893985 512247.412985,145974.089985 512252.919985,145975.258985 512261.871985,145975.389985 512263.170985,145975.261985 512267.671985,145974.422985 512270.700985,145972.905985 512274.963985,145970.962985 512281.855985,145968.886985 512288.012985,145966.777985 512291.988985,145962.060985 512296.906985,145960.735985 512298.727985,145958.760985 512302.764985,145957.946985 512308.248985,145956.867985 512324.439985,145956.311985 512329.454985,145954.998985 512333.765985,145953.531985 512341.807985,145952.899985 512346.276985,145952.677985 512352.128985,145953.306985 512356.903985,145955.010985 512360.832985,145956.774985 512361.674985,145962.064985 512362.327985,145966.355985 512363.971985,145970.113985 512366.364985,145972.275985 512368.577985,145975.177985 512372.065985,145977.783985 512375.818985,145980.028985 512379.722985,145980.947985 512381.625985,145982.588985 512385.838985,145983.846985 512390.212985,145984.753985 512394.622985,145985.225985 512398.653985,145985.264985 512403.214985,145984.759985 512407.672985,145984.234985 512409.635985,145980.270985 512418.610985,145977.746985 512427.267985,145976.275985 512431.506985,145974.447985 512435.293985,145972.231985 512439.224985,145969.560985 512444.528985,145966.183985 512453.477985,145964.959985 512457.841985,145964.811985 512462.320985,145964.972985 512483.908985,145966.055985 512493.902985,145966.394985 512498.383985,145966.345985 512501.348985,145965.651985 512510.442985,145966.007985 512515.207985,145967.991985 512519.177985,145970.988985 512523.506985,145981.550985 512539.664985,145983.874985 512543.507985,145985.060985 512545.952985,145986.235985 512550.291985,145983.358985 512554.463985,145979.245985 512556.198985,145974.914985 512557.683985,145968.780985 512560.209985,145965.765985 512560.497985,145959.080985 512560.161985,145954.623985 512559.494985,145947.257985 512557.988985,145942.825985 512557.286985,145938.688985 512556.844985,145934.331985 512557.437985,145932.222985 512558.727985,145928.878985 512561.837985,145925.633985 512565.565985,145922.904985 512569.126985,145914.850985 512580.807985,145912.164985 512584.415985,145905.868985 512591.644985,145894.297985 512609.011985,145889.770985 512616.314985,145882.367985 512628.854985,145879.953985 512632.675985,145877.267985 512636.269985,145874.109985 512639.263985,145869.573985 512643.201985,145859.814985 512652.529985,145850.545985 512661.964985,145845.579985 512667.687985,145842.865985 512671.301985,145840.476985 512675.106985,145838.542985 512678.871985,145836.761985 512683.029985,145835.290985 512687.282985,145834.663985 512692.058985,145833.664985 512697.458985,145832.411985 512701.812985,145831.523985 512706.199985,145831.460985 512712.157985,145832.017985 512721.523985,145832.476985 512725.999985,145833.300985 512728.179985,145836.406985 512734.549985,145838.616985 512738.457985,145840.467985 512740.636985,145843.809985 512743.682985,145846.311985 512745.633985,145849.977985 512748.254985,145854.914985 512751.492985,145860.112985 512754.126985,145878.402985 512762.178985,145898.977985 512770.121985,145903.383985 512771.155985,145907.855985 512770.825985,145912.244985 512769.534985,145914.149985 512768.607985,145917.905985 512766.050985,145929.966985 512758.667985,145933.945985 512756.582985,145937.171985 512755.312985,145941.494985 512754.031985,145945.543985 512753.171985,145953.081985 512751.955985,145960.672985 512750.985985,145965.480985 512750.093985,145973.107985 512745.253985,145975.481985 512743.387985,145978.768985 512740.319985,145981.568985 512736.896985,145986.785985 512729.543985,145992.444985 512719.776985,145996.313985 512714.047985,145999.352985 512710.106985,146008.645985 512699.953985,146032.532985 512667.829985,146036.110985 512662.656985,146041.021985 512655.112985,146046.773985 512645.487985,146061.241985 512626.123985,146063.657985 512622.326985,146074.236985 512610.353985,146077.335985 512607.099985,146083.940985 512601.665985,146089.128985 512596.256985,146090.859985 512595.001985,146096.079985 512592.079985,146100.081985 512589.961985,146104.225985 512588.255985,146107.119985 512587.579985,146111.607985 512586.972985,146116.021985 512586.112985,146118.617985 512585.203985,146127.304985 512581.405985,146134.333985 512579.170985,146138.669985 512577.976985,146146.690985 512576.867985,146149.532985 512576.265985,146153.768985 512574.808985,146154.806985 512574.093985,146158.013985 512570.866985,146163.266985 512566.206985,146166.976985 512563.940985)) + POLYGON((145961.546571986 511912.662006029,145964.929660209 511913.786300946,145968.831148249 511915.203927207,145977.213148249 511918.514927207,145978.184122361 511918.906330695,145982.223122361 511920.567330695,145988.178345514 511923.326895495,145992.163345514 511925.389895495,146002.428346021 511931.803847377,146005.269346021 511933.915847377,146012.547718291 511940.082553283,146017.680718291 511945.025553283,146020.175831511 511947.544661152,146026.377831511 511954.109661152,146030.130500873 511958.397140147,146032.949500873 511961.876140147,146038.891918642 511970.342878856,146040.988918642 511973.817878856,146046.896740518 511985.960854318,146048.786740518 511990.941854318,146052.005918251 512001.861170943,146053.535391539 512013.141919689,146053.801391539 512017.660919689,146053.930977073 512022.033502245,146053.93277973 512025.954280873,146054.422971197 512029.770994603,146054.839972833 512033.933864122,146055.161972833 512038.401864122,146054.921099551 512051.857951959,146054.302099551 512057.580951959,146053.692078361 512061.991728103,146048.934078361 512090.196728103,146047.945483201 512095.067170181,146044.535831084 512109.409826645,146044.201732362 512111.468779462,146043.600455739 512115.477890356,146042.937560607 512119.241440403,146041.720560607 512125.250440403,146040.487739668 512130.396952099,146035.678739668 512147.745952099,146034.540145377 512151.474280488,146030.914145377 512162.329280488,146030.138053291 512164.537367942,146028.580053291 512168.758367942,146027.281759347 512172.036426395,146026.57950483 512173.694598273,146024.940649099 512181.502926976,146026.518236958 512188.012143106,146028.878434452 512191.650654561,146031.243915918 512195.552347259,146033.456915918 512199.466347259,146035.938356115 512204.248258055,146039.165356115 512211.054258055,146042.094355838 512218.148378153,146043.591355838 512222.375378153,146046.185453891 512231.495680334,146047.381453891 512237.002680334,146048.458578972 512243.208536569,146049.627578972 512252.160536569,146049.880491616 512254.346644456,146050.011491616 512255.645644456,146050.359676122 512265.302982437,146050.231676122 512269.803982437,146047.540509038 512287.692348707,146046.701509038 512290.721348707,146045.082457196 512295.845347966,146044.409241749 512297.737185443,146043.149165993 512302.206790234,146042.031853863 512305.818786975,146039.955853863 512311.975786975,146035.143089159 512323.157382301,146033.900092563 512325.500746201,146036.782654969 512329.289067883,146039.388654969 512333.042067883,146042.800518365 512338.43114755,146045.045518365 512342.33514755,146047.566044974 512347.107873011,146048.485044974 512349.010873011,146050.833693904 512354.404895916,146052.474693904 512358.617895916,146054.667103858 512365.108698415,146055.925103858 512369.482698415,146057.30935832 512375.104056972,146058.21635832 512379.514056972,146059.245062512 512385.900636058,146059.717062512 512389.931636058,146060.223243322 512398.012701713,146060.262243322 512402.573701713,146059.7883581 512411.656955259,146059.2833581 512416.114955259,146057.213496243 512427.050516025,146056.688496243 512429.013516025,146052.841276933 512439.937415777,146050.883339039 512444.370436111,146049.74912714 512448.260639125,146048.602040581 512451.855809194,146047.131040581 512456.094809194,146043.818802383 512464.110172266,146041.990802383 512467.897172266,146039.885701639 512471.925759398,146039.942773595 512479.578364232,146040.61946415 512485.822912165,146040.842276676 512488.245195917,146041.181276676 512492.726195917,146041.214881873 512493.865328219,146044.32877048 512498.629029421,146045.728476222 512500.854553149,146048.052476222 512504.697553149,146051.355132213 512510.775283735,146052.541132213 512513.220283735,146057.453576793 512526.349091164,146057.783246656 512527.566484813,146059.446185907 512526.635621117,146060.997538858 512525.79105702,146064.999538858 512523.67305702,146071.530800114 512520.609048209,146075.674800114 512518.903048209,146087.166213225 512515.221991634,146090.060213225 512514.545991634,146095.149883514 512513.609553683,146097.260587609 512512.686743259,146104.578561552 512509.932145889,146111.607561552 512507.697145889,146114.422443778 512506.86240649,146118.758443778 512505.66840649,146119.768804542 512505.460385872,146124.173587901 512502.201467244,146125.310248092 512501.507216032,146127.027052853 512498.01644808,146128.929097065 512493.805659059,146131.790404731 512485.727145977,146134.426614427 512479.258478887,146137.160638771 512473.35281299,146138.138723824 512468.83758026,146138.55356072 512465.891367461,146139.070326178 512460.306564851,146139.094263736 512459.820836383,146139.074009868 512458.518223309,146131.150856926 512446.62646068,146126.945590272 512439.489831226,146124.207590272 512434.194831226,146120.252440831 512425.124963807,146118.705440831 512420.822963807,146115.125150132 512406.665043552,146114.453150132 512402.224043552,146113.620495716 512389.689031063,146113.747495716 512382.441031063,146114.010409293 512377.344966647,146114.784409293 512368.321966647,146115.482478327 512362.693369809,146116.930478327 512353.789369809,146118.007278605 512348.415505667,146120.671278605 512337.254505667,146121.93390625 512332.625674578,146124.59590625 512323.967674578,146126.136049455 512319.470953069,146129.374049455 512310.911953069,146136.520249982 512296.758691278,146139.057249982 512292.830691278,146146.650527786 512282.975937982,146155.768390522 512274.511978536,146159.280390522 512271.756978536,146170.629720208 512264.403531091,146183.115063238 512259.207697847,146196.330495087 512256.338406173,146200.607495087 512255.807406173,146215.30345241 512255.434662316,146225.65545241 512256.189662316,146238.02521772 512258.140033884,146250.71521772 512261.245033884,146262.104322338 512265.019777129,146264.860929343 512266.455561697,146264.051157917 512260.055933909,146264.075141688 512248.886939879,146263.831185196 512244.834419908,146263.647011297 512244.717118879,146258.848664716 512241.391643106,146255.267664716 512238.697643106,146248.262583799 512232.720240905,146246.640583799 512231.154240905,146236.862440829 512219.587984079,146233.918440829 512215.290984079,146226.363081824 512201.271834749,146224.661081824 512197.106834749,146222.163612255 512189.993562596,146220.820612255 512185.449562596,146219.711138352 512181.252384873,146217.664138352 512172.489384873,146216.8937512 512168.768215609,146214.7337512 512156.817215609,146213.947353077 512151.303432546,146212.988353077 512142.162432546,146212.752553856 512139.436514606,146212.446553856 512134.946514606,146212.298892925 512131.818156614,146212.128892925 512125.352156614,146212.110322503 512122.331903677,146212.215442812 512114.817470142,146212.202599351 512114.320007444,146211.816466238 512110.160443428,146210.518873503 512100.022118668,146209.861513672 512094.9623714,146209.780118043 512094.701735643,146207.132247706 512087.454746906,146195.526825505 512071.19644236,146191.655494679 512066.690310254,146189.777206437 512064.414973587,146186.966206437 512060.869973587,146180.460987801 512051.211022651,146178.383987801 512047.541022651,146172.379144857 512033.937909804,146169.175992617 512019.417488541,146168.900437923 512004.550515496,146169.097437923 512002.116515496,146171.563840795 511988.185002364,146175.219078694 511978.594789147,146179.898286967 511962.318985156,146174.248642708 511955.125823338,146173.443425464 511954.081854714,146164.435871062 511942.188801302,146156.400986805 511932.741678058,146147.732020724 511923.286345762,146142.475204054 511916.874504711,146139.501988848 511912.808894142,146137.197065522 511910.044743195,146133.271902142 511906.826435899,146129.497770574 511903.514605224,146126.031658823 511900.261357655,146120.454780701 511897.329567315,146115.518307519 511894.490179218,146111.723307519 511892.111179218,146106.696454615 511888.580879625,146097.507919426 511888.75926053,146091.340424848 511888.249651719,146090.59870786 511888.22557107,146083.514800452 511888.351194679,146071.786396658 511887.638616,146070.486396658 511887.456616,146061.55176564 511885.646332782,146056.78776564 511884.375332782,146053.777983367 511883.504609645,146048.759983367 511881.938609645,146043.912861215 511880.034496976,146043.324811988 511879.949292499,146038.771811988 511878.906292499,146037.122148048 511878.360987132,146032.563666518 511879.038674687,146028.848664137 511879.496533841,146026.841995148 511879.693152705,146014.332026289 511882.9598319,146012.239026289 511883.3098319,146003.818024229 511884.232946768,145997.199024229 511884.581946768,145993.566578491 511884.685316788,145989.065578491 511884.704316787,145983.750940641 511884.538263377,145971.08566392 511883.692361443,145968.316353774 511884.105167963,145967.434787875 511884.277489899,145967.216830011 511886.718688686,145966.413880576 511892.847634692,145965.997880576 511895.249634692,145965.235566751 511899.061046277,145964.238566751 511903.451046277,145962.206542228 511910.694700251,145961.546571986 511912.662006029)) + + #88 Polygon - gid: 2588 + + POLYGON((167532.477985 512809.448985,167555.559985 512773.894985,167560.645985 512730.879985,167581.079985 512731.212985,167606.259985 512686.118985,167617.210985 512664.753985,167628.468985 512640.940985,167597.450985 512637.978985,167581.803985 512637.728985,167556.555985 512632.534985,167547.781985 512627.528985,167513.601985 512631.705985,167490.695985 512631.340985,167471.007985 512626.155985,167475.732985 512640.627985,167482.838985 512659.940985,167492.745985 512684.143985,167503.099985 512701.159985,167507.038985 512713.225985,167508.550985 512727.632985,167499.191985 512749.026985,167495.486985 512763.329985,167491.846985 512768.058985,167481.381985 512777.436985,167460.916985 512781.885985,167425.096985 512774.037985,167424.939985 512795.525985,167423.600985 512814.612985,167420.790985 512833.544985,167420.668985 512850.249985,167421.333985 512859.894985,167427.557985 512867.347985,167437.147985 512869.901985,167461.115985 512877.483985,167486.197985 512894.246985,167505.321985 512851.981985,167514.324985 512823.525985,167522.807985 512814.080985,167532.477985 512809.448985)) + POLYGON( EMPTY) + + #89 Polygon - gid: 2589 + + POLYGON((164372.606985 512890.176985,164324.811985 512880.193985,164323.666985 512914.388985,164331.604985 512958.853985,164350.402985 512964.195985,164391.299985 512979.726985,164454.259985 513002.043985,164502.492985 513022.119985,164552.192985 513041.053985,164558.382985 513043.657985,164576.953985 513051.470985,164592.038985 513040.219985,164595.863985 513032.750985,164611.578985 513009.064985,164629.578985 512994.920985,164626.260985 512987.836985,164600.829985 512976.485985,164523.959985 512955.303985,164510.527985 512945.800985,164431.119985 512911.854985,164372.606985 512890.176985)) + POLYGON( EMPTY) + + #90 Polygon - gid: 2590 + + POLYGON((155418.520985 513085.717985,155400.143985 513071.569985,155370.702985 513097.312985,155348.413985 513124.256985,155334.276985 513145.103985,155324.433985 513167.135985,155314.900985 513197.823985,155293.396985 513250.465985,155281.650985 513277.996985,155264.569985 513307.253985,155252.427985 513331.225985,155236.340985 513356.837985,155217.667985 513407.428985,155244.525985 513419.754985,155271.368985 513429.290985,155283.571985 513410.496985,155322.096985 513324.107985,155339.112985 513295.890985,155349.832985 513271.657985,155363.984985 513253.183985,155421.428985 513170.677985,155456.713985 513126.870985,155443.701985 513110.996985,155418.520985 513085.717985)) + POLYGON( EMPTY) + + #91 Polygon - gid: 2591 + + POLYGON((166387.863985 513465.987985,166413.814985 513435.239985,166454.386985 513435.727985,166462.438985 513436.310985,166456.999985 513382.178985,166446.221985 513361.906985,166439.149985 513358.988985,166405.819985 513348.211985,166349.398985 513333.283985,166288.061985 513312.194985,166276.204985 513316.629985,166264.022985 513356.675985,166262.695985 513364.228985,166258.961985 513385.471985,166282.343985 513410.305985,166286.133985 513412.866985,166327.046985 513440.506985,166354.031985 513472.209985,166380.174985 513466.677985,166387.863985 513465.987985)) + POLYGON( EMPTY) + + #92 Polygon - gid: 2592 + + POLYGON((153201.327985 513295.818985,153226.912985 513272.838985,153240.302985 513281.911985,153282.966985 513342.907985,153287.232985 513349.007985,153310.162985 513372.145985,153338.326985 513391.395985,153372.548985 513386.775985,153399.672985 513387.103985,153440.243985 513369.694985,153483.249985 513348.552985,153521.235985 513335.287985,153552.489985 513341.581985,153585.786985 513360.695985,153617.380985 513383.704985,153639.382985 513396.019985,153663.846985 513408.126985,153718.985985 513419.295985,153723.902985 513420.291985,153763.134985 513416.882985,153805.106985 513411.106985,153825.172985 513392.221985,153822.154985 513354.195985,153791.182985 513314.212985,153756.511985 513292.424985,153715.682985 513274.824985,153689.942985 513246.766985,153691.749985 513225.302985,153710.502985 513199.946985,153745.088985 513192.753985,153766.799985 513182.803985,153787.870985 513144.522985,153784.039985 513111.169985,153761.533985 513086.127985,153735.204985 513069.676985,153715.986985 513046.641985,153705.754985 513022.981985,153712.351985 512993.515985,153716.387985 512988.183985,153736.567985 512961.525985,153775.863985 512967.269985,153804.701985 512977.344985,153840.921985 512987.562985,153863.302985 513002.651985,153879.277985 513023.277985,153891.556985 513047.051985,153902.749985 513097.542985,153906.019985 513136.783985,153914.811985 513155.032985,153934.801985 513183.161985,153941.688985 513209.182985,153945.277985 513236.635985,153954.682985 513271.076985,153974.307985 513291.640985,153998.334985 513310.524985,154022.287985 513346.805985,154047.856985 513378.812985,154086.098985 513411.216985,154113.196985 513422.599985,154142.014985 513416.474985,154164.428985 513408.373985,154165.569985 513407.127985,154178.679985 513392.818985,154205.335985 513385.772985,154230.846985 513375.101985,154244.263985 513337.841985,154243.386985 513308.802985,154208.806985 513283.898985,154177.676985 513268.476985,154162.078985 513245.276985,154158.446985 513221.398985,154157.986985 513171.460985,154149.270985 513136.844985,154123.459985 513090.000985,154107.167985 513068.292985,154094.948985 513052.011985,154076.373985 513047.009985,154061.578985 513057.829985,154031.411985 513063.123985,153984.551985 513054.041985,153957.058985 513028.116985,153947.947985 513002.556985,153952.346985 512983.883985,153976.123985 512949.924985,153983.887985 512932.847985,153996.487985 512894.246985,154028.021985 512877.669985,154068.066985 512863.923985,154075.796985 512828.768985,154074.893985 512770.551985,154043.848985 512733.687985,154003.264985 512710.015985,153966.255985 512712.388985,153936.827985 512716.348985,153912.933985 512723.953985,153879.560985 512721.080985,153843.470985 512726.852985,153820.456985 512739.259985,153797.975985 512758.057985,153767.137985 512785.980985,153744.767985 512802.198985,153720.964985 512810.467985,153708.070985 512834.152985,153679.882985 512843.837985,153654.329985 512844.694985,153636.123985 512831.799985,153626.553985 512805.764985,153605.236985 512802.037985,153582.908985 512813.348985,153573.985985 512817.868985,153560.453985 512847.489985,153551.985985 512889.573985,153555.109985 512925.676985,153578.672985 512951.618985,153597.250985 512967.807985,153596.944985 512978.668985,153587.475985 512994.806985,153576.295985 513010.457985,153558.742985 513027.177985,153552.552985 513043.269985,153557.760985 513070.500985,153564.618985 513091.397985,153563.372985 513099.704985,153540.931985 513098.182985,153513.679985 513097.136985,153451.601985 513088.120985,153434.166985 513073.086985,153414.508985 513059.064985,153388.431985 513055.047985,153368.376985 513057.902985,153357.554985 513073.586985,153361.949985 513104.716985,153363.585985 513143.808985,153363.701985 513182.599985,153356.162985 513189.535985,153341.513985 513187.480985,153310.732985 513173.723985,153275.728985 513162.829985,153233.550985 513165.629985,153209.115985 513186.380985,153197.266985 513215.733985,153184.292985 513230.539985,153146.242985 513231.663985,153118.440985 513226.217985,153096.885985 513247.200985,153093.357985 513260.228985,153092.263985 513262.605985,153087.803985 513263.035985,153082.778985 513262.845985,153076.497985 513261.659985,153071.281985 513260.063985,153055.923985 513250.436985,153033.931985 513239.087985,153015.307985 513233.412985,153006.635985 513232.228985,152996.172985 513231.665985,152987.242985 513230.525985,152982.556985 513230.723985,152974.418985 513231.858985,152970.794985 513232.794985,152961.965985 513239.194985,152955.583985 513250.126985,152952.564985 513254.159985,152941.417985 513259.329985,152928.100985 513267.043985,152916.934985 513271.741985,152911.597985 513274.544985,152905.880985 513279.270985,152902.860985 513283.303985,152910.867985 513287.443985,152915.392985 513290.322985,152928.090985 513301.585985,152939.258985 513309.171985,152947.015985 513313.813985,152952.723985 513316.300985,152960.090985 513318.841985,152983.972985 513325.878985,152991.794985 513328.551985,152999.927985 513332.409985,153004.955985 513335.231985,153019.213985 513344.762985,153023.201985 513346.836985,153033.085985 513351.198985,153043.206985 513354.628985,153051.243985 513358.682985,153058.527985 513363.312985,153061.845985 513366.353985,153064.669985 513369.434985,153068.040985 513374.363985,153072.140985 513386.330985,153072.901985 513390.757985,153073.871985 513400.687985,153073.924985 513405.177985,153072.405985 513410.305985,153067.072985 513421.537985,153063.536985 513427.582985,153053.230985 513442.950985,153039.346985 513464.721985,153026.435985 513482.811985,153012.952985 513509.466985,153009.212985 513518.289985,153000.494985 513543.991985,152997.121985 513556.173985,152995.943985 513562.563985,152995.654985 513566.242985,152996.366985 513572.809985,152998.891985 513581.458985,153001.483985 513586.984985,153020.855985 513620.435985,153026.242985 513628.995985,153033.223985 513644.556985,153035.690985 513648.323985,153038.496985 513651.695985,153042.246985 513654.701985,153049.671985 513658.825985,153056.569985 513661.100985,153068.194985 513666.667985,153079.818985 513672.234985,153088.929985 513675.960985,153095.902985 513680.122985,153099.932985 513682.158985,153105.266985 513687.400985,153109.487985 513690.840985,153114.233985 513696.130985,153122.711985 513704.466985,153135.555985 513715.121985,153137.765985 513717.391985,153139.714985 513721.448985,153142.866985 513724.734985,153145.367985 513728.862985,153149.163985 513737.372985,153150.038985 513740.992985,153150.096985 513745.498985,153149.465985 513749.556985,153147.941985 513753.792985,153146.556985 513756.418985,153221.601985 513713.434985,153243.039985 513693.223985,153249.433985 513648.436985,153241.906985 513608.578985,153239.679985 513583.675985,153242.975985 513553.159985,153244.171985 513516.224985,153234.234985 513488.502985,153208.367985 513465.446985,153196.520985 513425.096985,153191.753985 513354.604985,153201.327985 513295.818985)) + MULTIPOLYGON(((153314.366408853 513256.946373533,153344.425090418 513299.920762731,153344.428307148 513299.925362002,153345.019027492 513300.770039474,153357.292865102 513313.15521412,153362.514942791 513312.450229054,153373.455864573 513311.781468071,153384.696070673 513311.917391519,153408.891657558 513301.535074788,153450.161712931 513281.246475274,153458.523693422 513277.746131484,153496.509693422 513264.481131484,153509.454653284 513261.219096639,153522.772872664 513260.303733478,153536.04239993 513261.764042798,153567.29639993 513268.058042798,153578.904974802 513271.387624017,153589.828661247 513276.537206147,153623.125661247 513295.651206147,153629.939444942 513300.069585791,153651.402601521 513315.70058439,153634.676215225 513297.467913577,153625.451760944 513285.053823728,153618.969762242 513271.011606082,153615.505862725 513255.938398603,153615.207362908 513240.475181556,153617.014362908 513219.011181556,153619.43248915 513205.423855392,153624.299289231 513192.5096375,153631.44997307 513180.70580391,153650.20297307 513155.34980391,153659.283744334 513145.160222132,153670.060787432 513136.785060901,153682.177189719 513130.501687667,153688.930355783 513128.441002977,153685.92154806 513126.211424445,153677.615653278 513117.723513198,153658.397653278 513094.688513198,153647.148394857 513076.411911219,153637.42076158 513053.918185328,153637.324677965 513054.052693795,153632.951539397 513059.089474235,153635.879610916 513068.011595924,153639.353840605 513085.097083656,153638.789276955 513102.523082361,153637.543276955 513110.830082361,153634.201590111 513124.368899897,153628.411229936 513137.055041166,153620.372379684 513148.449923257,153610.362956986 513158.159604431,153598.729005737 513165.8484034,153585.872732732 513171.250504441,153572.238602643 513174.179147122,153558.297972073 513174.533082957,153536.95533708 513173.085576586,153510.803415323 513172.081800344,153502.900335114 513171.358270009,153440.822335114 513162.342270009,153438.640153453 513161.811056861,153438.701649662 513182.375707175,153437.138951167 513197.831925132,153432.425490879 513212.634627326,153424.763496524 513226.148714148,153414.481700623 513237.794373132,153406.942700623 513244.730373132,153393.622779106 513254.511086581,153378.484258408 513261.137386896,153362.262083874 513264.287580253,153345.743810109 513263.808730975,153331.094810109 513261.753730975,153314.366408853 513256.946373533)),((153663.604508215 512933.649641924,153674.652150649 512919.055585829,153656.843931777 512919.652840303,153654.048229341 512919.443407929,153657.699714222 512923.412589569,153663.604508215 512933.649641924)),((153758.883863202 512888.990949085,153786.711657314 512893.058611173,153800.600235846 512896.466610122,153827.272897789 512905.785115881,153861.285378758 512915.380354162,153872.465013832 512919.518607333,153882.847749304 512925.375926157,153895.692678836 512934.035822574,153910.714944618 512912.580587528,153913.88546164 512905.607001851,153925.190173663 512870.974209091,153930.971355511 512857.742584438,153939.180996602 512845.864042957,153949.51479589 512835.778878268,153961.58971764 512827.860910141,153993.12371764 512811.283910141,154000.467606639 512808.115371856,154000.317352548 512798.428392478,153994.845561675 512791.930982307,153985.236205669 512786.325998191,153973.665681018 512787.067894892,153953.32758408 512789.804705544,153935.680678951 512795.421375566,153921.251842618 512798.491312861,153906.501211173 512798.677605234,153882.307675006 512796.594842839,153867.870062007 512798.903900812,153862.737031022 512801.671151852,153847.220330287 512814.645794457,153817.478242466 512841.57647473,153811.160108057 512846.702090734,153788.790108057 512862.920090734,153773.268486522 512871.017112799,153766.206508123 512881.53716961,153758.883863202 512888.990949085)),((153990.108182012 513131.514460519,153995.936815762 513139.716243348,154002.712902558 513151.332638848,154007.305505499 513163.972417125,154014.192505499 513189.993417125,154016.056172848 513199.460774779,154018.980204051 513221.827291528,154022.036739822 513233.020289774,154024.865966578 513235.984886921,154044.680163522 513251.557837979,154053.512327266 513259.726747821,154060.924709775 513269.202759109,154083.006073029 513302.648838523,154101.904440147 513326.305611818,154122.168713438 513343.476353717,154123.380753089 513342.153464673,154133.958162066 513332.611356302,154136.654555011 513330.981247067,154133.313214698 513328.948927954,154123.567306259 513320.411007245,154115.43630788 513310.323109212,154099.83830788 513287.123109212,154092.193301943 513272.498140444,154087.931829395 513256.555252408,154084.299829395 513232.677252408,154083.450166684 513222.089812354,154083.072573594 513181.097978162,154078.906777441 513164.553324694,154062.016455659 513133.899330911,154044.375613461 513136.995118314,154030.747603531 513138.121042257,154017.141679456 513136.753859234,153990.108182012 513131.514460519)),((153129.558892559 513463.256147829,153128.274910414 513465.451190834,153125.827034416 513469.355580607,153116.002068797 513484.006276477,153102.582457504 513505.049085282,153100.393635915 513508.291543318,153090.790757281 513521.74643252,153081.018927562 513541.064694122,153079.347575667 513545.007565183,153073.620678631 513561.891335271,153085.066941185 513581.656404892,153089.719238659 513589.048954806,153093.155431415 513595.464797976,153100.588321987 513599.024273401,153100.590588832 513599.025358999,153110.237478323 513603.645475464,153117.319437878 513606.54168678,153127.369021378 513611.56036014,153132.077087556 513614.370480811,153133.752777555 513615.217057693,153143.648069656 513621.216459835,153152.502673599 513628.666669284,153155.350295181 513631.465175534,153156.868974625 513632.702857904,153165.313688058 513640.756148192,153168.491595461 513644.298316368,153173.036019042 513648.766624338,153173.195605074 513648.899012159,153168.20959292 513622.496398573,153167.205092577 513615.259349391,153164.978092577 513590.356349391,153165.113666398 513575.622157955,153168.106611313 513547.911991985,153168.669434958 513530.530811951,153158.464435212 513521.434802591,153148.98341495 513511.256076238,153141.545183943 513499.501547968,153136.405612332 513486.575565644,153129.558892559 513463.256147829))) + + #93 Polygon - gid: 2593 + + POLYGON((144142.989985 514088.951985,144136.449985 514054.961985,144132.731985 514033.263985,144127.866985 514013.332985,144126.033985 514004.523985,144123.194985 513984.498985,144121.950985 513977.743985,144119.474985 513965.987985,144116.997985 513955.498985,144114.004985 513944.396985,144111.364985 513935.792985,144104.055985 513915.874985,144099.268985 513901.813985,144095.552985 513888.833985,144092.293985 513878.724985,144090.002985 513870.475985,144088.955985 513866.101985,144087.123985 513855.157985,144085.447985 513846.294985,144084.879985 513841.845985,144084.800985 513839.927985,144085.669985 513820.505985,144086.874985 513812.816985,144087.854985 513808.424985,144085.355985 513807.847985,144081.847985 513810.575985,144081.061985 513814.139985,144080.321985 513815.397985,144076.741985 513819.927985,144070.813985 513826.699985,144068.515985 513829.942985,144066.267985 513833.838985,144065.506985 513835.614985,144064.259985 513839.956985,144063.081985 513846.147985,144062.077985 513852.889985,144060.916985 513861.814985,144059.234985 513868.846985,144058.119985 513877.778985,144056.474985 513887.398985,144055.675985 513904.802985,144055.567985 513911.744985,144055.264985 513916.555985,144053.261985 513926.195985,144051.759985 513939.993985,144051.299985 513947.409985,144050.945985 513963.879985,144051.901985 513981.625985,144052.777985 514006.209985,144052.802985 514010.705985,144052.525985 514016.993985,144051.223985 514036.894985,144051.208985 514041.388985,144051.664985 514047.744985,144052.166985 514052.223985,144053.651985 514062.584985,144054.499985 514067.055985,144055.829985 514071.244985,144056.995985 514072.928985,144061.349985 514075.995985,144065.576985 514077.579985,144071.276985 514083.651985,144073.625985 514085.443985,144077.782985 514087.370985,144083.025985 514085.365985,144087.943985 514084.820985,144092.174985 514086.440985,144096.761985 514089.493985,144100.786985 514096.214985,144106.124985 514105.807985,144109.287985 514110.877985,144111.976985 514114.527985,144115.094985 514118.007985,144119.064985 514120.147985,144120.248985 514120.616985,144124.620985 514121.695985,144137.912985 514121.582985,144151.392985 514120.745985,144147.230985 514106.336985,144142.989985 514088.951985)) + POLYGON( EMPTY) + + #94 Polygon - gid: 2594 + + POLYGON((146479.081985 514136.773985,146478.714985 514132.400985,146477.568985 514128.020985,146476.252985 514124.982985,146473.696985 514121.266985,146471.885985 514119.791985,146467.951985 514117.478985,146464.896985 514115.364985,146459.731985 514111.590985,146449.118985 514103.426985,146445.431985 514100.853985,146438.988985 514097.422985,146420.476985 514084.864985,146410.008985 514078.144985,146406.594985 514075.475985,146403.293985 514072.424985,146402.417985 514071.373985,146399.916985 514067.612985,146396.063985 514062.810985,146394.253985 514060.275985,146390.917985 514055.377985,146385.928985 514047.887985,146381.971985 514040.637985,146371.896985 514023.770985,146363.206985 514010.769985,146359.366985 514005.398985,146356.174985 514000.205985,146350.242985 513986.956985,146348.661985 513982.759985,146348.018985 513980.004985,146345.920985 513967.273985,146343.206985 513954.080985,146342.126985 513949.607985,146340.683985 513945.344985,146336.388985 513938.017985,146333.562985 513933.769985,146325.253985 513924.184985,146323.627985 513922.704985,146316.621985 513917.038985,146310.551985 513911.712985,146307.028985 513908.936985,146303.951985 513907.084985,146299.856985 513905.177985,146294.015985 513903.097985,146288.626985 513900.881985,146284.619985 513897.582985,146282.346985 513893.679985,146280.440985 513888.656985,146279.676985 513884.231985,146279.152985 513879.731985,146278.585985 513876.871985,146278.129985 513872.432985,146278.560985 513870.690985,146280.450985 513866.529985,146282.958985 513858.900985,146284.615985 513854.733985,146286.254985 513851.405985,146288.509985 513847.461985,146291.167985 513843.864985,146292.806985 513842.160985,146296.325985 513839.297985,146300.136985 513836.851985,146302.653985 513835.598985,146311.462985 513832.015985,146315.327985 513829.714985,146320.784985 513825.997985,146328.041985 513820.671985,146334.570985 513816.117985,146337.956985 513813.151985,146340.303985 513810.793985,146346.430985 513804.195985,146350.723985 513799.305985,146354.581985 513794.164985,146356.967985 513790.337985,146359.098985 513786.371985,146356.925985 513784.344985,146353.343985 513781.608985,146351.160985 513780.340985,146347.127985 513778.317985,146341.387985 513775.017985,146334.128985 513769.411985,146330.367985 513766.944985,146326.816985 513765.066985,146321.737985 513762.782985,146317.469985 513761.348985,146307.868985 513759.381985,146298.937985 513757.947985,146293.990985 513756.697985,146290.285985 513754.090985,146283.117985 513750.818985,146281.983985 513750.147985,146274.500985 513745.136985,146267.323985 513740.889985,146260.479985 513737.509985,146252.565985 513731.306985,146244.686985 513726.625985,146240.634985 513724.637985,146236.699985 513722.476985,146231.698985 513718.659985,146224.714985 513712.958985,146211.868985 513703.630985,146205.062985 513697.739985,146194.890985 513691.020985,146191.411985 513688.135985,146188.225985 513684.826985,146185.687985 513681.124985,146181.993985 513674.493985,146178.581985 513666.935985,146177.129985 513662.679985,146176.213985 513658.394985,146175.616985 513653.926985,146175.504985 513652.576985,146175.600985 513647.593985,146176.461985 513643.173985,146178.964985 513636.048985,146180.631985 513631.864985,146183.762985 513624.568985,146186.478985 513619.197985,146188.785985 513615.318985,146192.164985 513610.645985,146195.164985 513607.272985,146198.434985 513604.177985,146213.147985 513593.658985,146218.529985 513590.075985,146226.316985 513585.557985,146231.500985 513581.909985,146235.294985 513579.520985,146244.772985 513575.912985,146248.280985 513573.656985,146252.907985 513570.075985,146259.880985 513564.383985,146265.073985 513560.374985,146266.003985 513559.291985,146268.532985 513555.045985,146270.217985 513550.871985,146271.596985 513546.578985,146272.254985 513544.163985,146272.984985 513538.959985,146272.872985 513534.455985,146272.384985 513529.970985,146271.633985 513526.049985,146270.401985 513521.714985,146268.823985 513517.605985,146264.736985 513508.248985,146262.619985 513504.303985,146260.103985 513501.227985,146255.643985 513496.995985,146252.055985 513494.269985,146242.001985 513487.640985,146234.786985 513483.442985,146230.921985 513480.977985,146227.280985 513478.321985,146223.757985 513475.497985,146220.334985 513472.346985,146217.293985 513469.037985,146214.461985 513465.521985,146211.480985 513461.477985,146209.011985 513457.691985,146206.944985 513453.700985,146206.040985 513450.812985,146204.852985 513446.079985,146201.554985 513437.705985,146199.723985 513430.002985,146198.858985 513423.346985,146198.729985 513418.833985,146198.981985 513413.944985,146199.585985 513409.495985,146202.341985 513393.330985,146204.018985 513381.604985,146204.289985 513377.137985,146203.940985 513373.739985,146202.588985 513368.770985,146201.014985 513364.562985,146193.633985 513347.926985,146188.343985 513337.470985,146179.395985 513322.231985,146177.406985 513317.723985,146176.277985 513313.368985,146175.554985 513308.909985,146174.522985 513300.450985,146173.700985 513291.481985,146173.067985 513279.144985,146173.153985 513274.609985,146173.776985 513270.271985,146175.536985 513266.566985,146178.912985 513263.457985,146160.329985 513252.483985,146153.075985 513248.510985,146144.955985 513244.623985,146137.312985 513241.362985,146125.568985 513235.881985,146114.189985 513230.108985,146101.309985 513223.226985,146097.454985 513220.539985,146094.341985 513217.256985,146091.850985 513213.488985,146083.684985 513205.357985,146082.597985 513212.274985,146081.647985 513216.686985,146080.306985 513221.732985,146078.908985 513226.013985,146077.270985 513230.221985,146075.406985 513234.316985,146075.851985 513239.281985,146074.445985 513243.892985,146070.610985 513252.849985,146068.317985 513256.754985,146065.673985 513260.377985,146063.670985 513262.207985,146060.010985 513264.884985,146055.763985 513268.385985,146048.871985 513273.568985,146045.377985 513276.403985,146037.835985 513283.388985,146032.176985 513288.382985,146030.188985 513290.728985,146026.831985 513295.149985,146023.917985 513299.329985,146022.121985 513303.449985,146018.110985 513313.677985,146016.770985 513317.973985,146015.995985 513322.317985,146015.430985 513326.785985,146015.139985 513330.588985,146015.036985 513335.089985,146019.408985 513334.005985,146022.631985 513333.471985,146027.107985 513333.051985,146041.611985 513332.575985,146049.738985 513332.923985,146054.240985 513332.921985,146063.738985 513332.380985,146070.654985 513331.525985,146075.071985 513330.688985,146087.871985 513327.862985,146093.290985 513327.494985,146095.749985 513331.216985,146097.615985 513335.493985,146099.166985 513339.883985,146099.857985 513344.684985,146099.817985 513346.552985,146099.080985 513351.001985,146097.127985 513355.574985,146093.783985 513361.802985,146091.249985 513365.509985,146084.546985 513374.375985,146081.780985 513377.936985,146080.165985 513379.645985,146076.645985 513382.432985,146072.783985 513384.802985,146066.921985 513387.233985,146054.515985 513394.555985,146051.789985 513396.322985,146039.520985 513406.330985,146029.153985 513416.300985,146025.727985 513419.223985,146023.019985 513421.304985,146019.116985 513423.591985,146017.345985 513424.834985,146012.642985 513430.297985,146007.454985 513434.794985,146004.348985 513438.307985,146002.742985 513439.282985,145998.366985 513439.664985,145993.737985 513439.140985,145988.546985 513437.396985,145980.808985 513433.869985,145976.757985 513431.823985,145974.597985 513431.066985,145970.142985 513430.351985,145965.622985 513430.248985,145960.693985 513431.184985,145956.534985 513432.407985,145952.110985 513433.378985,145950.366985 513433.996985,145946.424985 513436.225985,145944.222985 513438.024985,145941.424985 513441.523985,145937.088985 513448.257985,145934.927985 513452.199985,145933.224985 513456.550985,145931.146985 513462.688985,145928.360985 513469.576985,145926.520985 513475.958985,145924.971985 513480.182985,145920.025985 513492.681985,145911.406985 513513.274985,145907.967985 513524.157985,145905.191985 513532.021985,145901.510985 513544.159985,145897.336985 513555.604985,145896.428985 513560.011985,145897.275985 513564.439985,145899.152985 513569.022985,145905.340985 513581.631985,145908.586985 513587.097985,145910.309985 513591.256985,145912.982985 513600.599985,145913.783985 513605.107985,145915.301985 513610.334985,145916.864985 513614.554985,145918.881985 513618.827985,145920.821985 513621.986985,145923.849985 513625.397985,145925.144985 513626.290985,145929.423985 513627.576985,145936.173985 513629.294985,145938.023985 513629.934985,145941.998985 513632.053985,145945.757985 513635.203985,145947.126985 513636.582985,145950.141985 513639.958985,145951.459985 513641.863985,145953.146985 513646.046985,145953.414985 513647.191985,145953.874985 513651.661985,145954.096985 513658.513985,145954.043985 513662.795985,145953.626985 513671.814985,145953.228985 513676.297985,145952.779985 513679.412985,145951.502985 513683.703985,145949.833985 513687.915985,145947.235985 513696.116985,145944.953985 513705.922985,145943.415985 513710.166985,145941.636985 513714.326985,145939.837985 513717.738985,145937.228985 513721.588985,145934.193985 513724.196985,145929.917985 513725.238985,145925.266985 513725.352985,145917.072985 513724.542985,145912.531985 513724.375985,145908.987985 513724.705985,145904.524985 513726.029985,145901.883985 513727.777985,145899.550985 513731.507985,145897.946985 513735.873985,145896.436985 513740.961985,145895.477985 513745.374985,145894.359985 513752.883985,145894.105985 513759.166985,145894.366985 513763.684985,145894.953985 513768.180985,145895.652985 513771.335985,145898.043985 513775.170985,145904.293985 513779.456985,145907.725985 513782.450985,145911.235985 513785.240985,145916.251985 513786.864985,145928.643985 513788.724985,145938.188985 513791.948985,145949.160985 513795.142985,145953.342985 513796.792985,145961.102985 513800.269985,145971.617985 513805.424985,145979.736985 513808.676985,145983.834985 513810.547985,145990.251985 513813.832985,145996.957985 513818.576985,146007.477985 513824.220985,146011.119985 513826.855985,146019.141985 513833.212985,146024.607985 513838.295985,146044.502985 513858.336985,146047.324985 513861.479985,146050.061985 513865.094985,146051.186985 513867.257985,146052.620985 513871.495985,146055.812985 513883.744985,146056.619985 513887.643985,146056.676985 513893.498985,146055.930985 513897.935985,146054.457985 513909.647985,146051.861985 513924.853985,146051.872985 513940.661985,146052.072985 513947.397985,146052.482985 513950.679985,146054.529985 513959.445985,146057.420985 513969.123985,146060.476985 513967.705985,146064.865985 513966.275985,146069.275985 513965.468985,146070.291985 513965.510985,146074.526985 513967.314985,146081.217985 513970.595985,146082.397985 513970.826985,146086.929985 513970.967985,146092.645985 513971.828985,146113.599985 513974.332985,146133.112985 513975.402985,146136.737985 513974.998985,146147.199985 513973.338985,146151.996985 513972.512985,146156.382985 513971.516985,146157.539985 513971.824985,146161.637985 513973.850985,146174.892985 513977.638985,146178.820985 513979.847985,146184.075985 513982.181985,146186.092985 513984.501985,146188.418985 513988.437985,146193.920985 514000.829985,146196.035985 514004.799985,146200.597985 514012.678985,146209.606985 514027.052985,146214.200985 514032.039985,146221.768985 514039.326985,146230.115985 514046.868985,146233.730985 514049.498985,146235.757985 514050.548985,146252.830985 514056.920985,146259.961985 514059.868985,146264.241985 514061.286985,146268.851985 514062.519985,146273.342985 514062.849985,146274.575985 514062.465985,146282.815985 514058.754985,146286.427985 514057.728985,146290.885985 514057.127985,146293.866985 514057.134985,146298.432985 514057.472985,146303.313985 514058.553985,146307.456985 514062.565985,146313.362985 514069.361985,146320.712985 514078.294985,146323.474985 514081.845985,146325.878985 514085.271985,146329.490985 514090.982985,146339.561985 514107.851985,146346.200985 514119.450985,146349.975985 514124.212985,146355.077985 514130.172985,146358.228985 514133.359985,146360.327985 514134.759985,146364.444985 514136.649985,146368.646985 514138.201985,146373.966985 514138.806985,146382.511985 514135.796985,146385.640985 514135.815985,146392.037985 514137.070985,146401.238985 514140.001985,146405.401985 514141.678985,146408.384985 514143.356985,146418.276985 514149.793985,146422.151985 514152.075985,146427.537985 514154.576985,146432.140985 514156.430985,146436.476985 514157.642985,146444.150985 514161.340985,146449.150985 514162.902985,146456.343985 514163.308985,146460.788985 514163.007985,146462.874985 514161.871985,146466.456985 514158.988985,146471.437985 514155.719985,146473.998985 514152.004985,146475.591985 514148.803985,146477.255985 514144.618985,146478.341985 514141.194985,146479.081985 514136.773985)) + MULTIPOLYGON(((146011.847522543 513740.890335071,146014.984307229 513742.322478592,146018.011201398 513743.787321187,146024.428201398 513747.072321187,146033.566291871 513752.604961839,146036.493665821 513754.675862826,146042.935029827 513758.13166686,146051.440930471 513763.45702014,146055.082930471 513766.09202014,146057.700853077 513768.074842368,146065.722853077 513774.431842368,146070.2158857 513778.290706576,146075.6818857 513783.373706576,146077.834518588 513785.457210202,146097.729518588 513805.498210202,146100.309160202 513808.23039053,146103.131160202 513811.37339053,146107.119921677 513816.207857286,146109.856921677 513819.822857286,146116.600222878 513830.48771842,146117.725222878 513832.65071842,146122.230218704 513843.219288178,146123.664218704 513847.457288178,146125.197185838 513852.583156763,146128.389185838 513864.832156763,146129.256356421 513868.543958907,146130.063356421 513872.442958907,146131.616431173 513886.913874422,146131.673431173 513892.768874422,146131.108825876 513899.953929188,146134.959352858 513899.34296811,146137.318948726 513898.93666705,146139.774375819 513898.379073483,146157.765635587 513896.529730901,146175.676491337 513899.041053732,146176.833491337 513899.349053732,146186.164377291 513902.857601769,146195.501380849 513905.525920854,146209.222567228 513911.251698752,146206.534467748 513901.417341877,146205.770467748 513896.992341877,146205.1803459 513892.906704753,146204.989884337 513891.271061556,146203.978602791 513884.536090945,146203.522602791 513880.097090945,146203.314130135 513867.180570234,146205.325260586 513854.419875801,146205.756260586 513852.677875802,146210.275071433 513839.674311931,146210.477032007 513839.229678096,146211.710284299 513835.478289843,146213.266858336 513831.188037104,146214.923858336 513827.021037104,146217.332991849 513821.597919563,146218.971991849 513818.269919563,146221.145894415 513814.179565307,146223.400894415 513810.235565307,146227.060181039 513804.624529814,146214.213235884 513796.538689257,146210.103192982 513793.317234099,146208.958646493 513792.637246522,146207.600077938 513791.970703016,146204.532771508 513790.377091938,146200.597771508 513788.216091938,146191.196115791 513782.095756264,146186.195115791 513778.278756264,146184.271868982 513776.760489871,146178.930882644 513772.400672701,146167.80106412 513764.318861461,146162.78504905 513760.338720202,146159.661996558 513757.635531511,146153.554337978 513753.601186446,146147.016034602 513748.753030905,146143.537034602 513745.868030905,146137.384343372 513740.155346205,146134.198343372 513736.846346205,146126.367313328 513727.23576639,146123.829313328 513723.53376639,146120.168646448 513717.62452302,146116.474646448 513710.99352302,146113.636813155 513705.353295708,146110.224813155 513697.795295708,146107.599279608 513691.152829039,146106.147279608 513686.896829039,146103.787047984 513678.358428479,146102.871047984 513674.073428479,146101.874656251 513668.327970511,146101.277656251 513663.859970511,146100.873767208 513660.127903811,146100.761767208 513658.777903811,146100.518899611 513651.132340369,146100.614899612 513646.149340369,146101.984689183 513633.253797059,146102.845689183 513628.833797059,146105.701299377 513618.315880282,146108.204299377 513611.190880282,146109.291399104 513608.289456394,146110.958399104 513604.105456394,146111.710285435 513602.287978238,146114.841285435 513594.991978238,146116.833661888 513590.724255606,146119.549661888 513585.353255606,146122.017937054 513580.860362517,146124.324937054 513576.981362517,146128.010088172 513571.37253617,146131.389088172 513566.69953617,146136.123955204 513560.802199235,146139.123955204 513557.429199235,146143.609554063 513552.802465075,146146.879554063 513549.707465075,146154.815451024 513543.167033067,146169.528451024 513532.648033067,146171.585632309 513531.2284569,146172.731747701 513530.46544474,146169.539682841 513527.527029206,146165.112892883 513523.096571621,146162.071892883 513519.787571621,146158.884736665 513516.084342021,146156.052736665 513512.568342021,146154.091428412 513510.023624266,146151.110428412 513505.979624266,146148.659199946 513502.446550055,146146.190199946 513498.660550055,146142.413986224 513492.184108145,146140.346986224 513488.193108145,146135.369578457 513476.105475136,146134.465578457 513473.217475136,146133.297507522 513469.071859128,146133.291225392 513469.04683108,146131.771944583 513465.189202972,146128.588019266 513455.05020339,146126.757019266 513447.34720339,146125.349413787 513439.66855052,146125.333509108 513439.54616724,146123.202128707 513441.233711893,146115.873841133 513446.356183474,146112.011841133 513448.726183474,146101.514293052 513454.08190964,146100.511940734 513454.497590036,146095.499821203 513457.455734419,146089.301229719 513462.512014765,146081.141827901 513470.358955647,146077.832919083 513473.356759262,146074.406919083 513476.279759262,146071.427632069 513478.69281934,146068.719632069 513480.77381934,146066.359203061 513482.363239454,146061.767349912 513486.970701292,146060.053668985 513488.456133661,146052.447934138 513495.853541664,146043.270261658 513502.418313523,146041.664261658 513503.393313523,146026.075330476 513510.561324309,146009.265256284 513513.998846618,146004.889256284 513514.380846618,145992.162649537 513514.217644662,145989.764384456 513520.278282601,145989.210645291 513521.638552137,145981.900192566 513539.105097324,145979.482413151 513546.756360302,145978.690931684 513549.123257126,145976.475479026 513555.399308892,145976.438362152 513555.521700801,145977.876266427 513558.392663553,145979.599266427 513562.551663553,145981.828103128 513568.939622633,145990.170574216 513574.569221868,145993.929574216 513577.719221868,145998.983628831 513582.364313931,146000.352628831 513583.743313931,146003.066429269 513586.625217087,146006.081429269 513590.001217087,146011.819217687 513597.286757872,146013.137217687 513599.191757872,146021.016327875 513613.811976769,146022.703327875 513617.994976769,146026.173297299 513628.954363433,146026.441297299 513630.099363433,146028.020982394 513639.514410324,146028.480982394 513643.984410324,146028.835651666 513649.233311912,146029.057651666 513656.085311912,146029.091240665 513659.44221843,146029.038240665 513663.72421843,146028.963947968 513666.259963774,146028.546947968 513675.278963774,146028.333151116 513678.447386096,146027.935151116 513682.930386096,146027.461793032 513686.99799489,146027.012793032 513690.11299489,146024.664272548 513700.805722171,146023.387272548 513705.096722171,146021.228562699 513711.332662394,146020.533592679 513713.086535207,146019.619527672 513715.971926707,146018.002063619 513722.922344107,146015.466585062 513731.476325928,146013.928585062 513735.720325927,146012.374991285 513739.656906197,146011.847522543 513740.890335071)),((146263.503396356 513971.644383436,146264.845146421 513973.961711091,146269.154816161 513980.837856373,146272.633703185 513984.187572248,146272.694587294 513984.174888747,146272.160337612 513980.932976116,146271.322748897 513976.861381452,146269.459899281 513975.354829079,146267.156598206 513973.414294395,146266.521108814 513972.856696948,146265.492769349 513972.462429559,146263.503396356 513971.644383436))) + + #95 Polygon - gid: 2595 + + POLYGON((152747.244985 514163.075985,152750.222985 514162.865985,152762.227985 514163.357985,152765.838985 514164.275985,152776.630985 514167.853985,152784.077985 514169.654985,152795.626985 514175.727985,152800.056985 514177.203985,152805.566985 514178.290985,152810.480985 514178.365985,152815.012985 514179.178985,152819.420985 514179.392985,152823.072985 514177.882985,152827.019985 514175.502985,152835.565985 514171.245985,152837.084985 514170.146985,152841.503985 514165.822985,152844.238985 514162.245985,152847.722985 514154.557985,152849.262985 514149.500985,152849.452985 514142.388985,152850.715985 514130.165985,152854.579985 514108.250985,152855.312985 514098.346985,152857.278985 514089.733985,152859.500985 514081.827985,152862.415985 514074.361985,152866.473985 514066.324985,152871.582985 514058.454985,152874.488985 514054.574985,152880.379985 514047.771985,152891.153985 514036.794985,152902.009985 514027.885985,152907.437985 514023.431985,152923.267985 514009.540985,152929.973985 514004.580985,152935.475985 514001.216985,152939.529985 513999.220985,152947.627985 513996.379985,152952.070985 513995.270985,152956.453985 513994.775985,152957.977985 513995.027985,152962.007985 513997.311985,152968.886985 514002.852985,152975.323985 514007.391985,152983.086985 514014.935985,152989.043985 514019.895985,152995.859985 514027.807985,153008.635985 514044.568985,153011.618985 514047.976985,153014.918985 514050.909985,153017.338985 514052.376985,153021.618985 514054.009985,153026.424985 514055.095985,153030.899985 514055.144985,153055.639985 514052.224985,153061.294985 514050.966985,153068.401985 514047.971985,153084.487985 514042.766985,153091.735985 514040.113985,153096.408985 514037.940985,153103.935985 514032.998985,153110.244985 514027.659985,153117.783985 514020.217985,153122.060985 514015.234985,153127.554985 514008.104985,153139.559985 513997.107985,153145.303985 513992.530985,153154.505985 513987.088985,153158.166985 513984.484985,153163.747985 513978.577985,153171.147985 513969.045985,153173.668985 513965.324985,153180.637985 513949.947985,153183.187985 513942.152985,153188.073985 513933.422985,153189.159985 513929.039985,153190.078985 513921.778985,153190.426985 513916.983985,153190.068985 513912.495985,153185.862985 513905.476985,153179.518985 513886.559985,153176.400985 513880.496985,153172.336985 513874.800985,153160.951985 513862.562985,153156.433985 513856.339985,153151.396985 513851.959985,153142.738985 513842.886985,153135.922985 513834.974985,153130.949985 513828.224985,153126.944985 513825.146985,153119.109985 513820.649985,153115.239985 513819.412985,153111.703985 513816.997985,153095.957985 513803.789985,153090.619985 513800.267985,153086.268985 513799.212985,153079.246985 513798.413985,153077.385985 513798.511985,153069.766985 513801.027985,153052.681985 513805.263985,153048.530985 513806.983985,153035.310985 513813.782985,153022.371985 513819.572985,153010.779985 513826.491985,152998.307985 513832.718985,152986.401985 513840.022985,152978.337985 513844.031985,152964.726985 513848.610985,152951.529985 513853.757985,152928.653985 513860.833985,152920.997985 513862.406985,152912.173985 513864.930985,152904.462985 513866.658985,152895.879985 513868.220985,152890.402985 513868.449985,152880.815985 513868.059985,152864.829985 513865.581985,152860.332985 513865.146985,152857.986985 513864.721985,152853.735985 513863.281985,152848.769985 513861.216985,152840.910985 513857.601985,152835.803985 513854.706985,152824.859985 513844.217985,152823.050985 513842.027985,152821.482985 513837.821985,152820.962985 513835.100985,152820.667985 513827.554985,152821.148985 513823.064985,152824.742985 513813.937985,152825.940985 513811.508985,152828.593985 513807.866985,152833.790985 513803.295985,152841.590985 513798.778985,152861.106985 513792.783985,152881.771985 513783.860985,152889.672985 513781.216985,152894.045985 513780.183985,152911.753985 513777.044985,152924.313985 513773.178985,152938.498985 513764.447985,152941.841985 513761.432985,152945.914985 513756.742985,152948.841985 513750.352985,152950.467985 513745.487985,152951.187985 513740.696985,152949.197985 513726.637985,152944.856985 513711.713985,152938.590985 513697.248985,152932.892985 513679.260985,152932.052985 513669.392985,152932.301985 513664.167985,152931.064985 513655.751985,152930.540985 513640.871985,152928.716985 513629.667985,152928.469985 513624.260985,152929.623985 513618.961985,152936.827985 513594.240985,152925.855985 513592.298985,152912.444985 513589.295985,152892.923985 513586.002985,152884.722985 513585.253985,152873.280985 513582.877985,152865.965985 513582.437985,152861.459985 513582.424985,152855.123985 513582.942985,152846.852985 513582.590985,152842.379985 513582.092985,152823.641985 513578.893985,152820.885985 513578.940985,152812.601985 513580.109985,152802.841985 513582.175985,152789.868985 513585.914985,152777.216985 513587.422985,152765.958985 513589.763985,152750.899985 513591.610985,152742.030985 513593.139985,152729.904985 513596.497985,152719.099985 513598.801985,152715.833985 513600.302985,152709.204985 513604.531985,152705.819985 513607.458985,152704.964985 513608.634985,152703.307985 513612.868985,152703.112985 513614.477985,152703.547985 513619.000985,152706.348985 513625.244985,152709.568985 513633.649985,152711.881985 513642.244985,152712.847985 513647.448985,152711.808985 513652.345985,152708.137985 513655.059985,152704.382985 513656.694985,152698.688985 513658.421985,152692.786985 513659.189985,152681.958985 513659.969985,152674.629985 513659.687985,152661.943985 513657.891985,152655.571985 513657.466985,152649.688985 513657.947985,152642.863985 513657.559985,152626.064985 513657.514985,152613.920985 513660.400985,152600.982985 513666.190985,152597.955985 513667.872985,152594.342985 513670.518985,152593.520985 513671.490985,152588.828985 513680.433985,152585.901985 513686.823985,152583.628985 513692.792985,152581.790985 513698.405985,152581.080985 513702.833985,152581.877985 513705.678985,152584.660985 513710.396985,152589.111985 513713.700985,152592.947985 513716.057985,152598.515985 513718.920985,152602.238985 513721.449985,152606.006985 513724.926985,152607.497985 513725.822985,152629.149985 513736.282985,152634.862985 513738.251985,152644.738985 513740.211985,152650.242985 513741.654985,152654.804985 513742.227985,152659.856985 513743.707985,152664.473985 513745.695985,152668.657985 513748.192985,152675.140985 513751.447985,152680.210985 513753.398985,152686.638985 513755.238985,152695.915985 513759.948985,152707.390985 513764.833985,152716.642985 513767.925985,152723.560985 513770.672985,152731.786985 513774.899985,152737.193985 513778.352985,152746.398985 513785.838985,152754.987985 513796.492985,152757.040985 513801.273985,152757.627985 513806.000985,152756.984985 513813.706985,152755.505985 513821.538985,152752.715985 513831.219985,152746.744985 513843.680985,152735.140985 513857.735985,152731.651985 513863.630985,152729.550985 513867.824985,152727.840985 513872.403985,152725.525985 513876.860985,152725.078985 513881.527985,152733.081985 513886.294985,152737.828985 513891.584985,152743.443985 513895.856985,152749.473985 513899.149985,152760.195985 513906.316985,152778.305985 513916.664985,152782.507985 513919.632985,152790.819985 513923.211985,152794.352985 513925.072985,152817.785985 513939.459985,152822.336985 513942.969985,152833.310985 513952.333985,152840.480985 513959.124985,152843.334985 513962.648985,152845.629985 513966.518985,152848.522985 513974.605985,152852.091985 513987.549985,152853.072985 513992.664985,152852.731985 513997.167985,152851.866985 514000.228985,152845.740985 514015.720985,152841.492985 514023.165985,152838.001985 514026.762985,152835.133985 514029.112985,152831.380985 514031.563985,152825.534985 514032.987985,152804.881985 514042.418985,152800.333985 514043.552985,152795.944985 514042.505985,152778.924985 514036.800985,152772.912985 514033.979985,152769.227985 514032.625985,152765.542985 514031.270985,152760.435985 514028.375985,152750.277985 514024.001985,152741.910985 514019.008985,152724.617985 514010.196985,152714.925985 514002.288985,152703.547985 513989.970985,152694.149985 513980.780985,152690.812985 513977.762985,152679.079985 513968.842985,152671.575985 513961.828985,152663.594985 513953.465985,152656.937985 513947.411985,152652.772985 513945.386985,152646.215985 513940.244985,152632.252985 513931.449985,152611.390985 513920.380985,152604.472985 513917.634985,152601.112985 513916.755985,152595.709985 513915.766985,152583.472985 513914.620985,152579.510985 513917.783985,152574.246985 513922.472985,152565.980985 513931.665985,152557.589985 513944.756985,152554.632985 513949.932985,152545.321985 513972.156985,152541.526985 513979.564985,152540.007985 513981.605985,152536.733985 513984.688985,152535.315985 513985.408985,152530.905985 513986.584985,152525.946985 513987.463985,152513.202985 513986.612985,152499.250985 513983.503985,152489.827985 513980.953985,152480.251985 513979.844985,152468.426985 513980.337985,152456.720985 513981.769985,152450.800985 513981.307985,152443.107985 513981.936985,152431.715985 513982.252985,152425.601985 513983.102985,152415.362985 513985.867985,152401.539985 513988.792985,152397.098985 513989.485985,152382.988985 513990.080985,152378.507985 513990.059985,152367.405985 513987.636985,152353.905985 513987.813985,152328.397985 513985.641985,152326.159985 513984.727985,152343.155985 514009.776985,152345.547985 514013.575985,152348.450985 514020.382985,152350.886985 514024.172985,152354.067985 514027.864985,152361.872985 514039.241985,152375.524985 514057.714985,152380.879985 514063.460985,152384.223985 514066.497985,152391.301985 514072.064985,152399.165985 514075.815985,152403.841985 514078.756985,152407.937985 514080.620985,152417.977985 514083.085985,152422.390985 514083.220985,152424.943985 514082.052985,152442.772985 514066.832985,152446.324985 514064.070985,152455.412985 514057.977985,152463.242985 514053.204985,152467.279985 514051.239985,152474.609985 514049.455985,152479.056985 514048.777985,152484.181985 514049.837985,152499.921985 514056.864985,152512.577985 514064.400985,152520.205985 514069.166985,152529.937985 514073.130985,152544.200985 514082.842985,152556.472985 514093.900985,152571.160985 514108.272985,152579.390985 514115.870985,152590.270985 514129.477985,152593.414985 514136.321985,152600.252985 514153.416985,152602.311985 514157.738985,152606.845985 514165.536985,152612.066985 514172.868985,152614.883985 514176.092985,152621.659985 514182.048985,152625.286985 514184.242985,152630.331985 514185.979985,152634.803985 514186.432985,152640.693985 514186.427985,152649.669985 514185.718985,152657.684985 514183.778985,152668.022985 514182.579985,152704.755985 514175.352985,152719.865985 514170.892985,152729.749985 514169.166985,152738.749985 514165.436985,152742.867985 514164.085985,152747.244985 514163.075985)) + MULTIPOLYGON(((152597.239547324 514029.678575879,152606.678441824 514038.183733586,152608.926208731 514040.294461888,152622.835937061 514053.904934079,152630.265885999 514060.764320717,152637.967903619 514069.033557604,152648.847903619 514082.640557604,152658.423790211 514098.16991668,152661.567790211 514105.01391668,152662.517340891 514107.225410577,152686.862372445 514102.435669934,152698.633931665 514098.961073367,152706.964296294 514097.011008656,152708.68782781 514096.710035831,152710.035074062 514096.151677107,152715.370621248 514094.174053889,152719.488621248 514092.823053889,152720.136823795 514092.642335451,152711.844861917 514088.406138982,152705.628187309 514084.696343796,152690.566315703 514077.021260665,152677.203554368 514068.307842573,152667.511554368 514060.399842573,152659.83253405 514053.178194686,152649.748363042 514042.260914102,152642.836939028 514035.502456272,152633.689321872 514028.54799066,152627.866066085 514023.634722601,152620.362066085 514016.620722601,152617.318280618 514013.60833914,152611.557280295 514007.571596163,152611.474695349 514007.519958978,152608.277829548 514013.760375802,152601.692834863 514024.342998692,152600.173834863 514026.383998692,152597.239547324 514029.678575879)),((152979.39142877 513923.39395504,152982.971243821 513924.314923876,152994.958013 513929.778636121,152998.988013 513932.062636121,153009.055554761 513938.9037135,153014.067370819 513942.940706199,153018.544937842 513946.098027423,153027.592891475 513953.605728244,153033.290382452 513959.142488765,153037.034018889 513962.259567283,153045.866385123 513970.944837472,153049.565287583 513975.238516501,153060.015813883 513971.857005287,153062.890625998 513969.019181735,153063.860375556 513967.889356612,153068.145995532 513962.327567309,153076.89462411 513952.801026421,153088.89962411 513941.804026421,153092.821268542 513938.452274418,153098.565268542 513933.875274418,153107.126126376 513927.97518657,153108.665998205 513927.06451688,153110.631601416 513922.727441177,153111.575413015 513919.842338661,153111.447332744 513919.460419607,153106.039801021 513913.647738603,153100.619179573 513907.061733153,153097.137580943 513903.737558055,153088.479580943 513894.664558055,153085.916584877 513891.838132528,153079.738127788 513884.666191141,153072.940822268 513881.346665919,153070.786713562 513879.875463282,153069.612655922 513880.479277041,153065.94505217 513882.241395211,153057.027815264 513886.231719169,153049.219187626 513890.892510631,153044.282261894 513893.593381728,153034.737621442 513898.358814385,153025.62057717 513903.951867582,153019.789678547 513907.181468601,153011.725678547 513911.190468601,153002.252391439 513915.117153387,152990.324366736 513919.129968399,152979.39142877 513923.39395504)),((152801.412882746 513735.377900866,152804.005720959 513733.876381609,152819.567849259 513727.08532076,152835.151968897 513722.298130904,152852.040751769 513715.005674598,152857.971202143 513712.737692505,152864.167594032 513710.664124582,152861.394377541 513701.909365326,152858.163243385 513685.62225202,152857.323243385 513675.75425202,152857.195936799 513668.928851093,152856.862228842 513666.658449992,152856.111445543 513658.391477922,152856.09040641 513657.794030773,152851.934996434 513657.875156675,152843.663996434 513657.523156675,152838.554159662 513657.130434274,152834.081159662 513656.632434274,152829.758404822 513656.023328661,152822.218943343 513654.736172226,152821.016752643 513654.990652348,152810.639563306 513657.981503418,152798.745454116 513660.38785453,152789.312251617 513661.51220399,152786.312745304 513662.135924391,152786.214807049 513663.015276221,152785.175807049 513667.912276221,152781.167293184 513680.88411889,152774.88583807 513692.920738318,152766.537291284 513703.627682429,152763.113476725 513706.674866787,152766.065546159 513708.191812751,152772.153957948 513711.689958145,152777.560957948 513715.142958145,152784.514842389 513720.165903479,152793.719842389 513727.651903479,152801.412882746 513735.377900866))) + + #96 Polygon - gid: 2596 + + POLYGON((154470.187985 514355.480985,154486.830985 514323.594985,154500.001985 514288.890985,154498.444985 514263.472985,154497.741985 514239.518985,154493.223985 514222.771985,154489.801985 514204.219985,154488.879985 514182.090985,154478.186985 514157.249985,154474.040985 514134.114985,154467.747985 514111.146985,154466.497985 514095.633985,154470.929985 514076.999985,154488.837985 514040.402985,154492.458985 514010.825985,154489.681985 513972.417985,154476.127985 513929.415985,154462.300985 513907.359985,154442.174985 513901.882985,154433.051985 513885.013985,154426.097985 513857.073985,154434.970985 513823.089985,154437.859985 513804.326985,154431.686985 513785.260985,154412.115985 513791.727985,154392.134985 513804.951985,154371.213985 513800.320985,154338.806985 513824.583985,154337.552985 513838.841985,154340.231985 513863.853985,154341.818985 513883.430985,154325.354985 513942.782985,154308.149985 513990.662985,154286.061985 514032.755985,154276.691985 514036.801985,154273.287985 514053.119985,154278.102985 514068.611985,154281.466985 514088.671985,154268.460985 514110.359985,154256.186985 514135.862985,154255.695985 514155.176985,154260.846985 514174.967985,154273.610985 514186.731985,154296.316985 514203.897985,154304.090985 514222.423985,154304.305985 514232.504985,154274.433985 514236.105985,154245.243985 514243.659985,154199.558985 514250.286985,154168.633985 514270.372985,154143.684985 514291.596985,154128.476985 514317.331985,154126.062985 514342.110985,154129.235985 514339.245985,154157.746985 514338.714985,154195.964985 514348.920985,154238.413985 514354.748985,154265.909985 514362.594985,154277.321985 514360.996985,154291.054985 514356.469985,154316.729985 514343.357985,154339.936985 514337.091985,154355.837985 514336.573985,154383.710985 514341.477985,154410.238985 514348.604985,154426.380985 514358.909985,154440.500985 514366.676985,154453.903985 514366.741985,154470.187985 514355.480985)) + POLYGON((154372.475003626 514263.349143873,154396.706937495 514267.612531514,154403.170413394 514269.046426639,154423.988413027 514274.639380627,154423.585300499 514268.058575085,154423.477262909 514265.673131474,154423.033047317 514250.536943284,154420.812790206 514242.307052659,154419.468203972 514236.376571173,154416.046203972 514217.824571173,154414.866998649 514207.342135003,154414.520949841 514199.036588282,154409.298243715 514186.90367489,154404.363076076 514170.479893208,154400.813488545 514150.672920818,154395.413932334 514130.965784784,154392.990283739 514117.170779661,154391.740283739 514101.657779661,154391.717630648 514089.898254615,154393.533403613 514078.279738746,154397.965403613 514059.645738746,154403.562880398 514044.035258131,154415.926643621 514018.768525795,154417.127981621 514008.955774066,154415.510664071 513986.587055149,154410.12603403 513969.503547621,154408.340036344 513968.817253125,154397.830595583 513962.092880346,154397.625941273 513962.830650185,154395.936468377 513968.14544159,154378.731468377 514016.02544159,154374.561855468 514025.512137945,154353.616308301 514065.427970836,154355.434134709 514076.267922606,154356.462902434 514089.454524599,154355.15919933 514102.616788591,154351.563572263 514115.345351006,154345.787849925 514127.244336955,154337.521882801 514141.02815173,154341.546834423 514144.071061954,154351.291906253 514152.880752292,154359.35032728 514163.255670093,154365.474862182 514174.877509063,154373.248862182 514193.403509063,154377.45396137 514206.839579392,154379.073933883 514220.824804957,154379.288933883 514230.905804957,154377.970664843 514246.594518123,154373.406257847 514261.662356151,154372.475003626 514263.349143873)) + + #97 Polygon - gid: 2597 + + POLYGON((144573.637985 514299.611985,144569.108985 514299.348985,144562.201985 514299.403985,144559.226985 514299.220985,144554.798985 514298.485985,144551.780985 514297.383985,144547.881985 514295.120985,144545.571985 514292.973985,144542.929985 514289.294985,144542.014985 514286.888985,144540.935985 514282.467985,144536.953985 514270.768985,144535.431985 514264.430985,144527.414985 514231.256985,144525.265985 514220.631985,144523.947985 514211.728985,144523.487985 514204.993985,144523.420985 514200.490985,144524.298985 514164.227985,144524.246985 514144.674985,144524.388985 514131.151985,144524.184985 514126.675985,144523.627985 514123.147985,144522.187985 514118.870985,144520.491985 514115.580985,144517.606985 514111.957985,144512.831985 514110.603985,144508.249985 514111.180985,144503.782985 514111.952985,144498.898985 514113.438985,144494.884985 514115.441985,144487.162985 514120.130985,144485.689985 514121.174985,144478.796985 514127.041985,144477.763985 514127.744985,144471.584985 514131.179985,144467.467985 514132.997985,144463.910985 514134.276985,144459.581985 514135.505985,144456.662985 514136.016985,144444.326985 514137.623985,144439.854985 514138.108985,144426.535985 514138.704985,144419.602985 514139.421985,144415.193985 514140.261985,144408.154985 514142.204985,144404.351985 514144.259985,144403.046985 514146.503985,144401.777985 514151.441985,144391.539985 514175.978985,144389.658985 514180.059985,144386.465985 514186.103985,144381.806985 514193.809985,144376.400985 514200.696985,144374.525985 514204.168985,144372.626985 514208.272985,144371.009985 514212.470985,144374.512985 514215.316985,144375.460985 514216.345985,144378.007985 514220.054985,144380.900985 514225.738985,144383.595985 514232.197985,144386.138985 514236.910985,144387.373985 514240.200985,144387.317985 514244.627985,144384.667985 514260.523985,144384.974985 514262.704985,144387.859985 514266.096985,144390.911985 514268.033985,144395.098985 514269.518985,144399.531985 514270.567985,144407.215985 514272.774985,144408.690985 514274.244985,144408.377985 514278.224985,144406.906985 514282.756985,144405.074985 514287.247985,144402.861985 514292.013985,144397.918985 514301.215985,144396.222985 514305.380985,144394.726985 514309.633985,144393.515985 514313.470985,144392.388985 514317.822985,144389.131985 514332.080985,144388.711985 514336.562985,144388.628985 514344.005985,144389.175985 514346.743985,144391.242985 514350.685985,144393.902985 514354.402985,144395.123985 514355.983985,144398.178985 514359.312985,144400.071985 514360.831985,144403.826985 514363.306985,144407.752985 514365.546985,144410.944985 514367.097985,144415.106985 514368.785985,144419.373985 514370.244985,144424.773985 514371.874985,144437.115985 514374.708985,144441.437985 514375.956985,144457.977985 514381.432985,144463.670985 514383.077985,144481.352985 514387.388985,144495.281985 514390.226985,144508.880985 514394.003985,144514.170985 514394.585985,144523.083985 514394.435985,144526.965985 514394.025985,144538.798985 514391.486985,144547.666985 514389.950985,144556.364985 514387.609985,144561.437985 514386.414985,144564.927985 514385.410985,144568.997985 514383.496985,144573.050985 514381.530985,144580.697985 514379.417985,144595.229985 514372.568985,144602.375985 514369.467985,144607.797985 514367.957985,144615.688985 514366.916985,144623.577985 514365.386985,144626.043985 514365.367285,144624.394985 514363.206985,144621.092985 514359.540985,144616.630985 514352.244985,144609.694985 514342.524985,144604.237985 514332.792985,144598.713985 514323.815985,144590.528985 514311.126985,144587.880985 514307.506985,144586.451985 514305.981985,144582.933985 514303.147985,144581.553985 514302.214985,144577.498985 514300.258985,144573.637985 514299.611985)) + POLYGON( EMPTY) + + #98 Polygon - gid: 2598 + + POLYGON((146978.395985 514128.105985,146993.088985 514109.724985,146990.935985 514109.919985,146986.515985 514108.676985,146984.834985 514107.491985,146981.559985 514104.355985,146978.605985 514100.856985,146976.054985 514097.475985,146971.011985 514090.004985,146967.745985 514085.474985,146964.701985 514082.154985,146959.542985 514075.969985,146956.337985 514072.894985,146952.680985 514071.027985,146947.749985 514069.211985,146939.485985 514065.648985,146927.297985 514062.022985,146919.855985 514059.063985,146915.584985 514057.875985,146911.533985 514057.834985,146907.047985 514058.932985,146902.995985 514060.801985,146899.081985 514063.093985,146893.310985 514066.882985,146889.708985 514069.594985,146885.365985 514073.314985,146874.977985 514084.255985,146871.396985 514088.322985,146864.758985 514096.561985,146858.269985 514103.545985,146851.525985 514109.507985,146845.834985 514113.792985,146843.682985 514115.048985,146833.562985 514120.296985,146827.089985 514122.419985,146822.686985 514123.116985,146818.808985 514122.219985,146814.499985 514120.648985,146810.509985 514118.510985,146805.983985 514115.339985,146799.004985 514109.608985,146789.184985 514100.497985,146782.878985 514094.071985,146773.731985 514084.130985,146772.704985 514082.828985,146770.140985 514078.765985,146767.239985 514075.730985,146765.038985 514075.353985,146760.639985 514077.133985,146756.696985 514093.552985,146755.166985 514104.428985,146754.236985 514107.679985,146747.054985 514128.282985,146745.452985 514132.485985,146740.637985 514142.592985,146736.292985 514152.151985,146732.113985 514160.830985,146729.632985 514165.603985,146720.451985 514182.099985,146718.255985 514185.582985,146715.669985 514189.265985,146708.041985 514198.572985,146700.623985 514208.288985,146697.764985 514212.325985,146695.357985 514216.136985,146693.225985 514220.099985,146691.843985 514223.389985,146688.846985 514231.402985,146687.411985 514235.659985,146686.889985 514238.098985,146686.285985 514244.852985,146686.270985 514253.857985,146686.450985 514255.277985,146686.301985 514260.300985,146683.033985 514264.144985,146683.155985 514265.983985,146682.338985 514271.113985,146682.374985 514276.109985,146680.337985 514280.147985,146677.579985 514283.544985,146668.796985 514293.186985,146665.431985 514297.393985,146661.798985 514300.600985,146659.382985 514304.403985,146657.401985 514310.058985,146656.451985 514315.110985,146657.862985 514320.479985,146660.328985 514325.311985,146664.346985 514327.493985,146671.146985 514330.078985,146674.727985 514332.813985,146678.721985 514337.242985,146681.490985 514340.795985,146686.032985 514347.673985,146690.888985 514355.863985,146692.808985 514359.916985,146693.698985 514363.305985,146695.616985 514373.416985,146698.231985 514382.035985,146699.836985 514386.527985,146701.571985 514390.707985,146703.974985 514394.998985,146706.750985 514398.590985,146710.002985 514401.691985,146712.889985 514403.299985,146717.072985 514405.089985,146726.061985 514410.373985,146734.615985 514414.500985,146745.317985 514418.731985,146749.574985 514420.166985,146751.177985 514420.590985,146755.638985 514421.241985,146756.964985 514414.062985,146760.786985 514395.658985,146762.453985 514390.190985,146763.644985 514384.449985,146765.274985 514379.265985,146767.350985 514375.290985,146772.077985 514367.066985,146782.052985 514344.326985,146787.377985 514332.973985,146796.553985 514316.678985,146800.956985 514309.903985,146805.131985 514302.406985,146810.612985 514294.080985,146815.038985 514286.445985,146817.815985 514282.583985,146823.033985 514277.958985,146826.565985 514274.275985,146829.279985 514270.683985,146831.879985 514268.007985,146838.691985 514261.283985,146846.154985 514255.376985,146849.511985 514252.379985,146854.426985 514246.995985,146866.975985 514234.461985,146873.174985 514227.718985,146875.892985 514224.130985,146883.032985 514216.049985,146888.426985 514211.137985,146895.661985 514205.813985,146898.228985 514203.079985,146900.862985 514199.416985,146903.718985 514196.294985,146910.227985 514189.724985,146918.475985 514180.160985,146921.638985 514177.199985,146925.123985 514174.344985,146929.916985 514170.920985,146942.656985 514162.441985,146948.828985 514158.846985,146952.598985 514156.414985,146955.585985 514153.824985,146964.483985 514144.873985,146967.826985 514140.249985,146969.666985 514137.975985,146978.395985 514128.105985)) + POLYGON((146797.091534784 514198.560801946,146799.036341277 514196.430417783,146800.519647422 514194.878956067,146799.137713142 514194.468888446,146798.660722856 514195.421904049,146796.985503573 514198.644726154,146797.091534784 514198.560801946)) + + #99 Polygon - gid: 2599 + + POLYGON((144130.790985 514542.589985,144136.106985 514541.268985,144140.618985 514541.819985,144146.580985 514542.271985,144155.308985 514545.689985,144159.779985 514546.073985,144165.774985 514546.027985,144170.614985 514545.336985,144174.457985 514542.248985,144180.591985 514535.602985,144185.031985 514531.945985,144188.930985 514529.699985,144202.240985 514526.170985,144204.522985 514525.434985,144208.647985 514523.675985,144209.506985 514523.064985,144212.582985 514519.733985,144214.710985 514516.736985,144217.305985 514512.269985,144225.821985 514492.742985,144230.222985 514479.998985,144238.048985 514458.756985,144239.749985 514453.779985,144242.237985 514445.130985,144246.840985 514428.052985,144247.696985 514425.401985,144249.538985 514420.578985,144253.385985 514411.927985,144260.058985 514394.218985,144264.745985 514384.187985,144266.213985 514379.927985,144267.402985 514375.585985,144266.909985 514372.870985,144264.565985 514368.375985,144255.527985 514363.949985,144249.852985 514362.074985,144245.934985 514359.844985,144246.620985 514355.223985,144248.164985 514351.697985,144250.544985 514347.859985,144251.479985 514346.801985,144258.417985 514340.953985,144264.816985 514336.013985,144266.807985 514330.309985,144266.470985 514325.834985,144264.754985 514315.479985,144263.754985 514311.093985,144261.914985 514304.532985,144260.268985 514300.367985,144258.258985 514296.998985,144255.314985 514293.564985,144253.224985 514291.582985,144249.714985 514288.669985,144245.918985 514286.308985,144244.887985 514285.843985,144240.548985 514284.624985,144234.199985 514283.756985,144225.189985 514283.542985,144216.921985 514283.099985,144200.074985 514283.128985,144195.587985 514283.291985,144186.779985 514284.886985,144177.834985 514285.878985,144169.973985 514286.948985,144165.504985 514287.444985,144158.597985 514287.500985,144150.714985 514288.363985,144146.268985 514289.065985,144138.749985 514290.519985,144129.998985 514292.618985,144122.836985 514294.931985,144118.663985 514296.619985,144116.254985 514315.702985,144113.154985 514338.329985,144110.932985 514350.449985,144109.642985 514359.358985,144103.633985 514384.235985,144100.698985 514392.568985,144099.732985 514399.419985,144098.307985 514417.516985,144097.345985 514425.834985,144096.877985 514434.147985,144095.446985 514450.289985,144095.470985 514467.498985,144095.977985 514472.854985,144095.698985 514478.235985,144090.849985 514512.499985,144086.867985 514532.967985,144086.837985 514540.297985,144083.986985 514558.486985,144082.564985 514573.165985,144082.617985 514579.549985,144083.019985 514582.853985,144084.070985 514587.218985,144088.382985 514601.055985,144090.700985 514599.014985,144094.407985 514596.448985,144099.296985 514594.867985,144103.775985 514594.417985,144104.772985 514593.932985,144108.205985 514590.960985,144109.332985 514588.480985,144110.651985 514584.097985,144115.058985 514573.308985,144115.953985 514570.340985,144117.115985 514565.480985,144117.981985 514561.064985,144120.043985 514555.351985,144121.899985 514551.257985,144123.475985 514548.300985,144126.738985 514544.570985,144130.790985 514542.589985)) + POLYGON((144176.60740853 514401.555584319,144177.632982782 514398.643143597,144179.373625931 514394.085531269,144178.682298521 514392.965629534,144176.60740853 514401.555584319)) + + #100 Polygon - gid: 2600 + + POLYGON((153556.031985 514886.227985,153560.525985 514886.012985,153566.393985 514886.836985,153572.264985 514888.653985,153582.160985 514890.869985,153584.416985 514890.833985,153588.654985 514889.150985,153590.995985 514887.355985,153594.093985 514881.247985,153600.596985 514871.470985,153607.108985 514856.972985,153612.956985 514847.521985,153608.356985 514841.430985,153606.284985 514837.439985,153605.664985 514834.687985,153605.359985 514830.122985,153602.267985 514813.476985,153597.582985 514800.609985,153596.965985 514795.730985,153594.556985 514792.788985,153590.938985 514790.044985,153579.228985 514795.635985,153573.643985 514797.721985,153559.445985 514799.291985,153546.944985 514802.898985,153541.754985 514805.976985,153537.104985 514807.634985,153532.352985 514810.440985,153520.030985 514819.197985,153514.515985 514821.769985,153510.278985 514822.486985,153507.876985 514821.350985,153504.524985 514817.626985,153501.188985 514808.128985,153492.871985 514787.013985,153489.388985 514780.831985,153486.307985 514777.186985,153482.664985 514774.839985,153479.481985 514774.368985,153474.831985 514774.926985,153469.574985 514776.303985,153466.025985 514779.167985,153457.313985 514787.843985,153455.681985 514790.459985,153452.692985 514795.895985,153448.357985 514807.237985,153450.054985 514811.435985,153451.618985 514813.811985,153455.073985 514816.927985,153474.460985 514819.993985,153483.496985 514823.991985,153487.335985 514827.674985,153490.999985 514832.613985,153492.523985 514837.561985,153493.082985 514843.424985,153490.543985 514855.424985,153490.223985 514860.751985,153488.498985 514874.433985,153495.036985 514879.182985,153501.180985 514882.939985,153516.063985 514894.582985,153519.796985 514897.079985,153525.665985 514899.415985,153529.748985 514901.565985,153534.832985 514900.527985,153538.446985 514898.728985,153542.061985 514896.077985,153549.964985 514888.768985,153554.033985 514886.791985,153556.031985 514886.227985)) + POLYGON( EMPTY) + \ No newline at end of file diff -Nru geos-3.7.1/tests/xmltester/tests/misc/TestIsValid.xml geos-3.8.0/tests/xmltester/tests/misc/TestIsValid.xml --- geos-3.7.1/tests/xmltester/tests/misc/TestIsValid.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/misc/TestIsValid.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,102 @@ + + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (1) + + POLYGON((-84.738876 42.582151,-84.738888 42.596708,-84.724038 + 42.596646,-84.719287 42.596633,-84.719227 42.589677,-84.719189 + 42.582134,-84.72666 42.582141,-84.738876 42.582151),(-84.726654 + 42.587769,-84.726352 42.587513,-84.726232 42.587565,-84.726351 + 42.58774,-84.726654 42.587769),(-84.726654 42.587769,-84.727094 + 42.587452,-84.727147 42.58742,-84.727192 42.587315,-84.727168 + 42.587211,-84.727028 42.587189,-84.726797 42.587195,-84.726723 + 42.587239,-84.726654 42.587769)) + + + true + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (2) + + POLYGON((-82.509817 27.972398,-82.514117 27.972798,-82.514018 + 27.974298,-82.505617 27.973998,-82.505817 27.966898,-82.507967 + 27.96695,-82.509917 27.966998,-82.510617 27.966998,-82.511217 + 27.966898,-82.513917 27.966998,-82.514665 27.967018,-82.514633 + 27.967194,-82.514697 27.967306,-82.514761 27.967402,-82.514985 + 27.967386,-82.515257 27.967418,-82.515657 27.967498,-82.515881 + 27.967482,-82.516105 27.967354,-82.516105 27.967194,-82.516073 + 27.967018,-82.522762 27.96713,-82.522728 27.967269,-82.522698 + 27.967434,-82.522522 27.96745,-82.522346 27.967402,-82.522186 + 27.967434,-82.52201 27.967402,-82.521866 27.967466,-82.521866 + 27.967786,-82.520617 27.967798,-82.516017 27.968898,-82.509817 + 27.968798,-82.509817 27.972398),(-82.516169 27.967882,-82.516105 + 27.967722,-82.515945 27.967642,-82.515849 27.967642,-82.515801 + 27.967706,-82.515673 27.967754,-82.515657 27.967818,-82.515593 + 27.967946,-82.516169 27.967882),(-82.515593 27.967946,-82.515577 + 27.967786,-82.515433 27.967722,-82.515305 27.967722,-82.515129 + 27.967786,-82.515177 27.967946,-82.515593 27.967946)) + + + true + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (3) + + POLYGON((-71.931796 42.991371,-71.93256 42.991018,-71.93288 + 42.990854,-71.933182 42.990678,-71.933551 42.990446,-71.933835 + 42.99026,-71.93411 42.990064,-71.934374 42.98986,-71.934563 + 42.989701,-71.934805 42.98948,-71.935031 42.98925,-71.935299 + 42.988958,-71.935559 42.988664,-71.936008 42.988123,-71.936214 + 42.987883,-71.936407 42.987637,-71.936456 42.98757,-71.936383 + 42.991832,-71.936514 42.99218,-71.936843 42.992423,-71.937311 + 42.992499,-71.937807 42.992469,-71.942299 42.99218,-71.946553 + 42.991392,-71.947021 42.993047,-71.942798 42.99363,-71.942331 + 42.993745,-71.942443 42.994306,-71.937363 42.995159,-71.938871 + 42.997584,-71.939874 42.997559,-71.939932 42.999107,-71.938708 + 42.99946,-71.938807 43.000935,-71.938987 43.000993,-71.93738 + 43.002347,-71.937321 43.002418,-71.937093 43.002389,-71.936907 + 43.002351,-71.936541 43.002239,-71.936021 43.002065,-71.935846 + 43.002011,-71.935671 43.001975,-71.935472 43.001935,-71.935093 + 43.001869,-71.933985 43.00171,-71.933607 43.001674,-71.933126 + 43.001639,-71.932939 43.001615,-71.93285 43.001592,-71.932769 + 43.001558,-71.932627 43.001467,-71.931946 43.000986,-71.931801 + 43.000899,-71.931646 43.000819,-71.931466 43.000763,-71.93127 + 43.000744,-71.931078 43.000761,-71.930893 43.000798,-71.930528 + 43.000881,-71.929887 43.000996,-71.9297 43.00101,-71.929034 + 43.001018,-71.928727 43.001025,-71.928253 43.000345,-71.927829 + 42.999794,-71.927479 42.999373,-71.927353 42.999231,-71.927114 + 42.998965,-71.926971 42.998822,-71.926888 42.998722,-71.92683 + 42.99867,-71.92668 42.998502,-71.926461 42.998256,-71.926366 + 42.998132,-71.926283 42.998004,-71.92625 42.997947,-71.926207 + 42.997874,-71.926143 42.997741,-71.926086 42.997608,-71.926038 + 42.997471,-71.926002 42.997331,-71.925972 42.997122,-71.925968 + 42.996912,-71.926004 42.996632,-71.926095 42.996318,-71.926104 + 42.996288,-71.926203 42.996068,-71.926224 42.996021,-71.926372 + 42.995759,-71.926729 42.995183,-71.926877 42.994951,-71.926986 + 42.994781,-71.927784 42.994482,-71.927982 42.994385,-71.928404 + 42.994121,-71.928627 42.993843,-71.928705 42.993509,-71.928598 + 42.992996,-71.928837 42.992817,-71.928863 42.992798,-71.929156 + 42.992616,-71.929384 42.992486,-71.92978 42.992284,-71.930189 + 42.992093,-71.931796 42.991371),(-71.935914 43.001009,-71.935867 + 43.000784,-71.935867 43.000706,-71.935853 43.000638,-71.935832 + 43.000588,-71.935725 43.000595,-71.935689 43.000663,-71.9357 + 43.000852,-71.935732 43.000934,-71.935785 43.000977,-71.935914 + 43.001009),(-71.935914 43.001009,-71.936139 43.000984,-71.93621 + 43.000934,-71.936253 43.000874,-71.936257 43.000774,-71.936228 + 43.000552,-71.936209 43.000485,-71.936203 43.000463,-71.936121 + 43.000449,-71.93606 43.000456,-71.93601 43.000492,-71.936 + 43.000556,-71.936014 43.000638,-71.936032 43.000699,-71.936028 + 43.000806,-71.936003 43.000881,-71.935914 43.001009)) + + + true + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/robustness.xml geos-3.8.0/tests/xmltester/tests/robustness.xml --- geos-3.7.1/tests/xmltester/tests/robustness.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/robustness.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ - - - - - - - -http://geos.osgeo.org/pipermail/geos-devel/2005-May/001441.html - - - 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4A0DFE4065E0C34DA7E923417321EFAE10CEFD40D6CD6DEC17CB2341B7BD98BE948AFD40F954B20BADAC23414652253DDC42FD40B720CA0A698E234192D155C2ECF6FC40ADD0E5454E702341B3A10E3ACCA6FC40CCDBFE155F522341D166E1E38052FC4022B3A8D09D3423411747905211FAFB408628E2C70C172341F7B18A6B849DFB40B61CE749AEF92241F6B46366E13CFB40907802A184DC2241B9E841CC2FD8FA40FA74601392BF224194014977776FFA400135E1E2D8A22241500FFD91C002FA40CFB5EB4C5B8622416E789F961392F940DE17418A1B6A22418ABD854E791DF940FD44D0CE1B4E224122126AD1FAA4F84096F689495E32224164D8B584A128F840951F3524E5162241350EC61A77A8F7406EBD4383B2FB2141FEB929928524F7408B13A885C8E021417066DA34D79CF6408654AA4429C62141BCBC6E977611F64071BCBED3D6AB21414A4D47986E82F5407B1F5C40D39121416897B55ECAEFF44024F0D29120782141DA601D5A9559F4403AC024C9C05E2141AC6E1041DBBFF340C23FDCE0B545214109B16410A822F340EABCE5CC012D214160F4440A0882F2402528687AA61421417B2A3CB507DEF140659F9ECFA5FC2041975E3BDBB336F1408B83B2AB01E5204109689A88198CF040F01A96E6BBCD204192DE26168CBCEF40FDC3DF50D6B620418BB372E18D5AEE40A5BAA5B352A020414762D20D54F2EC409D735AD0328A204125366DB2FA83EB401B90A9607874204149EEA6609E0FEA40CC6C5516255F20412C71E5215C95E840C14E159B3A4A204167244D755115E740E4307490BA3520410516744D9C8FE5409C34B08FA621204130250C0E5B04E44024B89A29000E2041F2588489AC73E240152AF2CC91F51F414194A1FEAFDDE040A812CC8B04D01F41B9AE1D2C0A85DE40479B677D5BAB1F413F7ECABF9744DB4062B59D7D99871F4122E757A249FAD740CEC04256C1641F412B6FA08261A6D440A7E1EEBED5421F41A4982BCF2149D14038C2C75CD9211F41436DFF619BC5CB402FC54BC2CE011F41DF6CCA0C52E7C44028AC1E6FB8E21E41DD196F76E1EFBB409BB6D7CF98C41E41F3220E7C07E0AB40163DD13D72A71E4180CA45A3CBEE47C079CCF9FE468B1E4173AA092451DDACC0EBC4A64519701E41488EA3D140CBBCC00E806830EB551E41721152D143A2C5C0D501E0C9BE3C1E41BB857A0AAEECCCC05637960896241E4176759EC42622D2C0BAC6D4CE720D1E41BE846FDD47D4D5C0657380EA56F71D41F4583488708CD9C03319F51444E21D4153B71285564ADDC0B041E3F23BCE1D41F73ECE90D786E0C0E7552F1440BB1D417067519F176BE2C05E6FD2F351A91D413DDB08ABC551E4C0B5CABCF772981D41C6EB69C0BB3AE6C01FDEB970A4881D4115D45EBED325E8C00516569AE7791D4168E43F59E712EAC0BF39C69A3D6C1D4198FFCF1DD001ECC05C7AD082A75F1D41AE2E3C7467F2EDC0482DB74D26541D41D30E1EA386E4EFC0703425E1BA491D41C76E406903ECF0C06B151C0D66401D417873748760E6F1C014C1E38B28381D41AC8C2E2647E1F2C0D60CFC0103311D410441B9B4A3DCF3C0C9DE0FFEF52A1D41EDBA2C9962D8F4C0A10DEAF801261D419914F63170D4F5C053F56B5527221D41003D5FD7B8D0F6C024C18560661F1D41725717DD28CDF7C0C06B3051BF1D1D410D77BB93ACC9F8C0D0756948321D1D4181975F4A30C6F9C067533051BF1D1D4180B41750A0C2FAC075908560661F1D4127E180F5E8BEFBC051AC6B5527221D41C5404A8EF6BAFCC051ACE9F801261D4152C2BD72B5B6FDC033650FFEF52A1D41FF7F480112B2FEC0047BFB0103311D4139A402A0F8ACFFC01117E38B28381D41D05A1BDFAA5300C145531B0D66401D41B215F4EA8AD000C1365A24E1BA491D41C495ACB6124D01C10B3BB64D26541D4169AA478C38C901C12E70CF82A75F1D41EBBA6BBDF24402C1B517C59A3D6C1D418A0924A437C002C136DC549AE7791D41FC4EA1A3FD3A03C1A38CB870A4881D414F9FF9283BB503C1A661BBF772981D414689E7ABE62E04C1DAEED0F351A91D41386188AFF6A704C10ABE2D1440BB1D41B0A819C3612005C19B92E1F23BCE1D41F083B5821E9805C10753F31444E21D41B72E0E98230F06C145967EEA56F71D41AE6128BB678506C1CDD2D2CE720D1E41DA9914B3E1FA06C1C12C940896241E41C133A756886F07C1C2E0DDC9BE3C1E41D14B2F8D52E307C1A7486630EB551E41CA552C4F375608C15C77A44519701E410E5D02A72DC808C1F068F7FE468B1E41B1DFACB12C3909C1C3C3CE3D72A71E417036709F2BA909C1B027D5CF98C41E41AB7B89B421180AC1D7071C6FB8E21E41ACE3DC4906860AC1AD0B49C2CE011F41A378A2CDD0F20AC1BCF3C45CD9211F41E52C11C4785E0BC168FEEBBED5421F410D3608C8F5C80BC107C93F56C1641F41D1A3B68B3F320CC14DA99A7D99871F41742541D94D9A0CC1207B647D5BAB1F41F3F0659318010DC1AFDEC88B04D01F4116BF1EB697660DC189E2EECC91F51F41C9CF4057C3CA0DC1B60A9929000E20414EEA1AA7932D0EC1A77DAE8FA6212041DF4C11F1008F0EC189707290BA352041B07F379C03EF0EC12585139B3A4A20413BFFE72B944D0FC1129A5316255F204117B25940ABAA0FC167B4A76078742041528F99CB200310C1148F58D0328A20418BAA0D06283010C16DCDA3B352A020414941A4CC675C10C13DCEDD50D6B62041221106ACDC8710C1CE1C94E6BBCD2041B960AE4083B210C12F7DB0AB01E52041EEA52E3758DC10C1F8909CCFA5FC2041EAEA704C580511C1D011667AA6142141DEECF84D802D11C1D79EE3CC012D214154EF231ACD5411C11A1ADAE0B5452141313F67A03B7B11C1299322C9C05E214166608DE1C8A011C1D5BBD09120782141B1E1F1EF71C511C11AE45940D39121419ED1BBEF33E911C12B7ABCD3D6AB214159D016170C0C12C1870BA84429C62141C5B96AAEF72D12C101C4A585C8E0214195E39110F44E12C187674183B2FB21411BEB0DABFE6E12C181C33224E5162241BB0E3BFE148E12C1839487495E322241FB0E829D34AC12C11BDDCDCE1B4E22414D93882F5BC912C15CAA3E8A1B6A2241D00E606E86E512C1DF42E94C5B8622415A21B327B40013C1D3BCDEE2D8A222414B71F13CE21A13C1BFF75D1392BF2241AFFA79A30E3413C17BF6FFA084DC22416DD0C364374C13C1F895E449AEF922415D4C859E5A6313C1519DDFC70C1723411AABD982767913C1AA23A6D09D342341C6106558898E13C14348FC155F522341D5F3767A91A213C14839E3454E7023413AEB2A598DB513C1A885C70A698E23416FDD87797BC713C175B6AF0BADAC2341D48D9D755AD813C1112C6BEC17CB23413386A0FC28E813C1943BC14DA7E92341235A04D3E5F613C1AD88A0CD580824414D4294D28F0414C161984E072A2724419E0D8AEA251114C1DD98979318462441AA66A31FA71C14C1B25AFE0822652441856B358C122714C1B377ECFB4384244195963E60673014C1B9A3E2FE7BA32441FEF676E1A43814C18423A9A2C7C2244154B75E6BCA3F14C1FA65807624E2244180F14A6FD74514C1EFBB510890012541CBCE7074CB4A14C1B22AE0E40721254140F3EE17A64E14C18855F997894025419833D50C675114C1517AA6AC1260254128952A1C0E5314C1777D5DADA07F25414597F1249B5314C15C013224319F2541DAC52A1C0E5314C17985069BC1BE2541F994D50C675114C14189BD9B4FDE25414685EF17A64E14C11AAF6AB0D8FD25416D917174CB4A14C16DDB83635A1D2641AEE44B6FD74514C1194C1240D23C2641FCDA5F6BCA3F14C164A4E3D13D5C2641074B78E1A43814C19CE9BAA59A7B2641E61A4060673014C1946C8149E69A26410020378C122714C1339C774C1EBA26412D4BA51FA71C14C139BD653F40D9264102228CEA251114C17E83CCB449F82641698696D28F0414C1D588154138172741CBCD06D3E5F613C1CE9DC37A093627413529A3FC28E813C196F0A2FABA542741FB5FA0755AD813C13106F95B4A73274183DE8A797BC713C14F82B43CB5912741FF1A2E598DB513C107BA9C3DF9AF27410B527A7A91A213C1B90D810214CE27412B9D6858898E13C17706683203EC27416665DD82767913C13233BE77C40928414634899E5A6313C111C2848055272841A6E5C764374C13C157D27FFEB3442841E43C7EA30E3413C1257B64A7DD6128412AE0F53CE21A13C197830635D07E284189BCB727B40013C19BC88565899B2841F2D5646E86E512C10B4D7BFB06B8284104868D2F5BC912C16BF025BE46D42841E42C879D34AC12C1EBC8967946F02841705740FE148E12C1211DDDFE030C2941325E13ABFE6E12C121FA31247D272941A1809710F44E12C1756223C5AF422941578070AEF72D12C1B412BFC2995D2941FDBF1C170C0C12C143D8BC0339782941DEE9C1EF33E911C11077A8748B9229411322F8EF71C511C1EC1A0B088FAC29416DC893E1C8A011C1555194B641C629415DCE6DA03B7B11C17C88427FA1DF294123A52A1ACD5411C15E108B67ACF82941C9C8FF4D802D11C1C99A817B60112A4169EC774C580511C14D37FFCDBB292A4173CC353758DC10C1F5C7C878BC412A41B7ABB54083B210C1E0EBB49C60592A4108800DACDC8710C1B45CD161A6702A4182D3ABCC675C10C108BC87F78B872A417F5F1506283010C1E9CDC1940F9E2A416866A1CB200310C1A01D0D782FB42A414EA36940ABAA0FC1F609BEE7E9C92A413E32F82B944D0FC13F3612323DDF2A413DF3479C03EF0EC1685D52AD27F42A41AAFF21F1008F0EC18884F3B7A7082B410ADB2BA7932D0EC1358AB7B8BB1C2B4123FD5157C3CA0DC13510CD1E62302B41B72730B697660DC1F8BCEE6199432B418093779318010DC177D2810260562B418C0053D94D9A0CC11218B489B4682B4110B6C88B3F320CC10D159989957A2B410B7E1AC8F5C80BC17F99469D018C2B4134A923C4785E0BC15793F068F79C2B41D227B5CDD0F20AC1702D049A75AD2B4146C4EF4906860AC1733642E77ABD2B41378C9CB421180AC18FCDD81006CD2B417275839F2BA909C109537CE015DC2B41A84BC0B12C3909C1989A7F29A9EA2B4177F415A72DC808C1CD5DEBC8BEF82B411D17404F375608C191EC94A555062C418335438D52E307C1141A34B06C132C414644BB56886F07C15A6478E302202C41A1CF28B3E1FA06C1DA541D44172C2C4123BB3CBB678506C17B18FEE0A8372C4144AA2298230F06C18E4D28D3B6422C41FB1FCA821E9805C12106EE3D404D2C41A0632EC3612005C16EFDF64E44572C416D399DAFF6A704C1EFFE503EC2602C41207DFCABE62E04C1DF7D7F4EB9692C412DAD0E293BB503C1EF5B8ACC28722C413875B6A3FD3A03C104DE0B10107A2C417F4639A437C002C1E7CD3D7B6E812C41F10C81BDF24402C1EDC7057B43882C41D70F5D8C38C901C18CB300878E8E2C41ED0CC2B6124D01C10E668D214F942C41EA9C09EB8AD000C17C6ED6D784992C416AF030DFAA5300C1090ADB412F9E2C41D2E82DA0F8ACFFC0464077024EA22C419DDA730112B2FEC07D266BC7E0A52C41942FE972B5B6FDC0A2496149E7A82C4148BD758EF6BAFCC0593EF44B61AB2C418769ACF5E8BEFBC0A656B39D4EAD2C4158454350A0C2FAC0E77C2618AFAE2C416B2D8B4A30C6F9C0C433D19F82AF2C41A30EE793ACC9F8C0E8BA3424C9AF2C414FED42DD28CDF7C04858D19F82AF2C41BCCD8AD7B8D0F6C0EDC52618AFAE2C41CF9C213270D4F5C028C4B39D4EAD2C413837589962D8F4C04ED0F44B61AB2C41FFADE4B4A3DCF3C0FFFF6149E7A82C41F6E6592647E1F2C034016CC7E0A52C41AFB79F8760E6F1C0463F78024EA22C418B996B6903ECF0C03D2DDC412F9E2C41B92A74A386E4EFC0CEB5D7D784992C413B0A927467F2EDC065D18E214F942C411C94251ED001ECC0CB4202878E8E2C41352B9559E712EAC0F57A077B43882C4184C6B3BED325E8C096A43F7B6E812C413983BEC0BB3AE6C036D80D10107A2C411C115DABC551E4C07C798CCC28722C412835A59F176BE2C09DBE814EB9692C41009E2191D786E0C0B062533EC2602C41078BB885564ADDC00384F94E44572C415C35D988708CD9C058AFF03D404D2C41FF5C13DE47D4D5C031192BD3B6422C41C93C41C52622D2C0540601E1A8372C4123D9BD0BAEECCCC0AC642044172C2C41681093D243A2C5C0EA957BE302202C413EB120D440CBBCC0216D37B06C132C411BD7F92851DDACC0D96098A555062C4127FFB1DCCCEE47C00BF3EEC8BEF82B41B64F337707E0AB4085508329A9EA2B417C4F0774E1EFBB405A2980E015DC2B41506F990B52E7C440F8C3DC1006CD2B411C6FD1609BC5CB40A54C46E77ABD2B410A2596CE2149D1401A63089A75AD2B41B2920C8261A6D44024E8F468F79C2B414CADC5A149FAD740170D4B9D018C2B4172F239BF9744DB401AA79D89957A2B4139DC8E2B0A85DE4037C8B889B4682B413A0D5BFEAFDDE04058A0860260562B41A3B93E89AC73E24033A8F36199432B410773C70D5B04E4406918D21E62302B415C56304D9C8FE540FEAEBCB8BB1C2B41885C0A755115E7407FC5F8B7A7082B414AA6A3215C95E84024BA57AD27F42A41872566609E0FEA4053AE17323DDF2A418F742DB2FA83EB40F79CC3E7E9C92A41D6AC930D54F2EC401DCB12782FB42A41220F35E18D5AEE407195C7940F9E2A41FF4FEA158CBCEF40299D8DF78B872A4107AE7C88198CF040F756D761A6702A412F341EDBB336F140CFFEBA9C60592A41F1911FB507DEF14015F3CE78BC412A41F0EF280A0882F240247A05CEBB292A41E2424910A822F340DAF4877B60112A41F298F540DBBFF3402A819167ACF82941A425035A9559F440820F497FA1DF2941C0F89B5ECAEFF44013EE9AB641C62941314D2E986E82F540DECC11088FAC2941255D56977611F640B13DAF748B92294141A9C234D79CF6400BB3C3033978294111A112928524F7401A01C6C2995D2941579BAF1A77A8F740EF632AC5AF422941540DA084A128F840220E39247D27294193F054D1FAA4F8401D43E4FE030C29412347714E791DF94053009E7946F02841C8AE8B961392F940AF382DBE46D42841F4F3E991C002FA409AA582FB06B8284100963677776FFA40E2308D65899B28415D2E30CC2FD8FA4001FB0D35D07E284133AD5266E13CFB401E016CA7DD612841215E7A6B849DFB40496687FEB344284173A8805211FAFB4064638C8055272841987ED2E38052FC404EE1C577C40928410E71003ACCA6FC40C3C06F3203EC27419C5948C2ECF6FC409AD3880214CE27410C94183DDC42FD40E28AA43DF9AF274136BA8CBE948AFD40895DBC3CB59127419BD9E3AE10CEFD402CEB005C4A7327415819F0CA4A0DFE40B5DEAAFABA542741C1C77F243E48FE407294CB7A0936274170C7BF22E67EFE405F871D41381727411A5497823EB1FE404F89D4B449F826410318FD5643DFFE40B1C96D3F40D926416F8B4509F108FF40B1AE7F4C1EBA2641F6976A59442EFF4077848949E69A26411D7A4C5E3A4FFF404206C3A59A7B26412FDCEB85D06BFF402CC5EBD13D5C2641C2259D950484FF4060701A40D23C2641F9FB34AAD497FF4090028C635A1D2641F4EE2D383FA7FF4077D872B0D8FD25419651C70B43B2FF4035B4C59B4FDE254124391D49DFB8FF4060B10E9BC1BE2541ECA2396C13BBFF40E8BA3424319F2541 - - - 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED935770A41535871C71BFB2441A247FE423D360841CDF36716539B2441ECC1420680470741BD3D4C94710F23414D024D7D04380A41FEC5364D1A022241407DA7BAAF811D41DD0784C658ED184192B08CF1A618184108E3295E56ED104121896F9066610541F13A975D57FE1941096E8D134BEBFB406847DAE3D9661741AABE21A245A00B41845A019F2304FF40E48112BC1AF0F84080891F1A39C7F140DD811CEEB3B3EF40AE82AE28194B0341AB6F85D09F3409C1B06BA7169F6201413731C25DB7A40AC123BABA3D2F2E1541 - - - - - 1 - - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html - -POLYGON((742605.987032656 5087763.72510381,742599.903121688 -5087760.56016809,742598.666141033 -5087762.50894352,742591.100910753 -5087758.50480931,742586.861672536 -5087766.63211263,742591.417801844 -5087769.04526206,742592.428792606 -5087767.35034731,742601.541294342 -5087772.18101105,742605.987032656 5087763.72510381)) - - -POLYGON((742601.541294537 5087772.18101068,742592.428792606 -5087767.35034731,742589.944404072 -5087771.51539701,742583.880455986 5087782.54873438,742582.81550675 -5087784.27809355,742583.216887765 5087784.43459684,742582.99081514 -5087785.0349637,742592.341351823 5087789.67654,742593.375823205 -5087787.7060691,742599.28794443 5087776.4640487,742601.541294537 -5087772.18101068)) - - - - - 1 - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html - - -POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402.9999981909058988, 612145.0000000037252903 2365470.9999981913715601, 612061.0000000037252903 2365967.9999981918372214, 611724.0000000036088750 2366168.9999981927685440, 611334.0000000034924597 2366316.9999981927685440, 610743.0000000033760443 2366221.9999981932342052, 610174.0000000031432137 2366305.9999981927685440, 609973.0000000031432137 2367066.9999981955625117, 609073.0000000027939677 2367938.9999981974251568, 609061.0000000027939677 2368332.9999981974251568, 609151.0000000027939677 2368684.9999981992878020, 608919.0000000027939677 2368811.9999982002191246, 608801.0000000026775524 2369192.9999982002191246, 609161.0000000027939677 2369096.9999982006847858, 609161.0000000027939677 2369509.9999982025474310, 609857.0000000030267984 2369498.9999982011504471, 609762.0000000030267984 2369689.9999982020817697, 610796.0000000033760443 2369794.9999982025474310, 611332.0000000034924597 2370097.9999982025474310, 613149.0000000040745363 2370460.9999982034787536, 613613.0000000041909516 2369720.9999982016161084, 613697.0000000041909516 2369267.9999981997534633)) - - - -POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124.9999982002191246, 607980.0000000019790605 2367585.9999982002191246, 607295.0000000019790605 2367062.9999981899745762, 606251.0000000019790605 2366697.9999981899745762, 605456.0000000019790605 2367679.9999982002191246, 605108.0000000019790605 2368377.9999982002191246, 604906.0000000019790605 2369083.9999982002191246, 604191.0000000010477379 2369719.9999982002191246, 604107.0000000010477379 2370057.9999982002191246, 604264.0000000010477379 2370397.9999982002191246, 604141.0000000010477379 2370768.9999982002191246, 604561.0000000010477379 2370448.9999982002191246, 604940.0000000019790605 2370406.9999982002191246, 605460.0000000019790605 2370792.9999982002191246, 605942.0000000019790605 2370945.9999982099980116, 606364.0000000019790605 2370892.9999982002191246, 606881.0000000019790605 2370988.9999982002191246, 607216.0000000019790605 2370623.9999982002191246)) - - - - -1 - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2) - - - 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7BDB1A41D7FFFFFF8BB13E41FCFFFFFF4BDD1A41D6FFFFFF83B03E41FBFFFFFFB7D91A41D0FFFFFFADAE3E41FBFFFFFF07D81A41D6FFFFFFF4AD3E41FCFFFFFFBBD61A41D6FFFFFF45AB3E41FCFFFFFF67D61A41DBFFFFFFB3A93E41FCFFFFFF63D91A41D6FFFFFF92A83E41FBFFFFFF03C31A41D2FFFFFF75A93E41FBFFFFFF13BE1A41D7FFFFFFB7A83E41FBFFFFFF0FBF1A41D2FFFFFF84A73E41FBFFFFFFD7B41A41D5FFFFFF77A83E41FBFFFFFFAF871A41D6FFFFFFACA83E41FAFFFFFFDF811A41CEFFFFFF79AA3E41FBFFFFFFDF8B1A41D1FFFFFF9AAE3E41FAFFFFFF3B971A41D0FFFFFF76B03E41FBFFFFFF3B891A41D3FFFFFF4FB33E41FCFFFFFFE7871A41D3FFFFFF2EB43E41FBFFFFFFE7881A41D2FFFFFF16B53E41FCFFFFFFC3861A41D8FFFFFF9BB53E41FBFFFFFF27851A41D8FFFFFF67B73E41FBFFFFFFBB8C1A41D4FFFFFFA6B73E41FBFFFFFF03911A41D4FFFFFF38B93E41FBFFFFFF879E1A41D3FFFFFF11BC3E41FBFFFFFF37A91A41D4FFFFFF3EBB3E41FBFFFFFF0BA91A41D2FFFFFF46BC3E41FCFFFFFFC3B31A41D5FFFFFFFABC3E41FBFFFFFFF3B11A41D4FFFFFFDFC33E41FBFFFFFF0BB81A41D3FFFFFF12C63E41 - - - - 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E4100000000788B1A41D5FFFFFFF5C83E4100000000C48E1A41D5FFFFFF17C83E4100000000B8921A41D5FFFFFFCDC73E41000000001C9D1A41D5FFFFFFE2C73E410000000008A31A41D5FFFFFFCBC83E4100000000ECAC1A41D5FFFFFF41C83E41000000005CB21A41D5FFFFFF31C63E41000000000CB81A41D5FFFFFF12C63E4100000000F4B11A41D5FFFFFFDFC33E4100000000C4B31A41D5FFFFFFFABC3E41000000000CA91A41D5FFFFFF46BC3E410000000038A91A41D5FFFFFF3EBB3E4100000000889E1A41D5FFFFFF11BC3E410000000004911A41D5FFFFFF38B93E4100000000BC8C1A41D5FFFFFFA6B73E410000000028851A41D5FFFFFF67B73E4100000000C4861A41D5FFFFFF9BB53E4100000000F0791A41D5FFFFFFD5B53E410000000038701A41D5FFFFFFDDB63E4100000000D0681A41D5FFFFFF84B83E4100000000D0581A41D5FFFFFF9CB73E410000000028581A41D5FFFFFF23B93E4100000000445E1A41D5FFFFFFB5BA3E4100000000245B1A41D5FFFFFF3CBC3E410000000080591A41D5FFFFFF99BD3E4100000000F8501A41D5FFFFFFBABE3E410000000018511A41D5FFFFFF75BF3E4100000000A84B1A41D5FFFFFF31C13E41000000004C4D1A41D5FFFFFFCCC73E4100000000244F1A41D5FFFFFF50CB3E41000000006C441A41D5FFFFFF8DCC3E4100000000BC451A41D5FFFFFF14CE3E4100000000D84B1A41D5FFFFFFFBCF3E4100000000B4571A41D5FFFFFFD6D13E4100000000B0581A41D5FFFFFF09D33E410000000028561A41D5FFFFFF5AD43E4100000000F45E1A41D5FFFFFF59D53E4100000000506B1A41D5FFFFFFB4D73E410000000044701A41D5FFFFFF5FD73E410000000038731A41D5FFFFFF74D73E4100000000E4721A41D5FFFFFFB4D73E41000000009C801A41D5FFFFFF33D83E41 - - - - -1 - - - - - - - -postgis-users/2006-November/014013.html - - -MULTIPOLYGON(((-112.237615 33.491154,-112.237614 33.490469,-112.237752 -33.490529,-112.23774 33.494274,-112.235109 33.494339,-112.235109 -33.494222,-112.233468 33.494258,-112.233631 33.491873,-112.236704 -33.491169,-112.237615 33.491154)),((-112.237137 33.506662,-112.237111 -33.505964,-112.236836 33.505292,-112.235281 33.503124,-112.23644 -33.502654,-112.237714 33.502702,-112.237695 33.50665,-112.237137 -33.506662)),((-112.236804 33.501624,-112.236731 33.501185,-112.234285 -33.501218,-112.234295 33.499851,-112.237725 33.499804,-112.237714 -33.501536,-112.236804 33.501624))) - - - -POLYGON((-112.235266 33.502267,-112.234309 33.502505,-112.234451 -33.501985,-112.234479 33.501868,-112.234509 33.501141,-112.236709 -33.501141,-112.236909 33.501541,-112.235687 33.502032,-112.235266 -33.502267)) - - - - -0.001 - - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/safe/16595.xml geos-3.8.0/tests/xmltester/tests/safe/16595.xml --- geos-3.7.1/tests/xmltester/tests/safe/16595.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/safe/16595.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,273 +0,0 @@ - - -SAFE test 16595 line 1 - -LINESTRING(608919.148 232497.434 2047.83996582031,608912.759 232499.018 2054.42238984432,608908.967 232499.509 2058.24604268589,608904.178 232499.499 2063.0350492044,608899.288 232499.689 2067.92873501108,608892.205 232498.975 2075.0476255139,608886.918 232498.165 2080.39630966434,608882.13 232497.355 2085.25233740058,608877.841 232496.348 2089.65796314595,608873.953 232494.342 2094.03295442012,608870.963 232492.538 2097.52501627898,608868.671 232490.736 2100.44057009889,608865.882 232487.934 2104.39401156164,608864.088 232486.432 2106.73376176908,608861.298 232484.129 2110.35148032683,608856.515 232480.324 2116.46335833722,608851.432 232476.818 2122.63821562682,608844.353 232473.707 2130.37064500361,608838.072 232470.398 2137.46996605894,608832.189 232467.589 2143.98917616351,608826.604 232466.279 2149.72574927799,608815.232 232464.557 2161.22737748111,608809.944 232464.746 2166.51874962256,608804.854 232465.534 2171.66938070493,608799.763 232466.822 2176.9207785979,608795.171 232468.01 2181.66396014097,608789.88 232469.497 2187.15994053798,608783.791 232471.082 2193.45184654153,608776.705 232472.565 2200.69136304159,608771.415 232473.553 2206.0728309235,608765.827 232473.841 2211.66824303684,608761.536 232474.031 2215.96344393816,608756.147 232474.519 2221.37448977438,608751.159 232474.309 2226.36690433807,608746.57 232473.8 2230.98404274652,608739.986 232472.488 2237.69748643633,608734.9 232471.179 2242.94923203415,608728.317 232469.667 2249.70363491477,608718.443 232467.349 2259.84606221341,608713.656 232465.841 2264.86496565354,608709.567 232464.534 2269.15776658243,608698.698 232460.516 2280.74565962041,608692.815 232458.007 2287.14133808331,608686.734 232454.699 2294.06386265939,608679.954 232451.289 2301.65309224221,608673.872 232448.579 2308.31152684674,608666.994 232444.67 2316.22272539603,608662.209 232441.664 2321.87358450737,608655.829 232438.554 2328.97121914761,608650.545 232436.047 2334.81977871156,608645.26 232433.738 2340.58715693029,608638.38 232430.928 2348.01887338989,608632.796 232428.619 2354.06142890847,608626.016 232425.608 2361.47994836029,608620.932 232422.801 2367.28737892445,608614.351 232419.791 2374.5240615361,608608.768 232416.983 2380.7734366273,608602.987 232413.675 2387.43397356792,608597.903 232410.369 2393.49834754724,608589.032 232404.957 2403.88989257812) - - - -LINESTRING (608916.741593641 232487.72785718,608910.907705488 232489.174230452,608908.332673382 232489.50765365,608904.19888114 232489.499021801,608903.789744906 232489.506539943,608899.596850546 232489.669454039,608893.464514039 232489.051285429,608888.50930563 232488.292117884,608884.108834654 232487.547677305,608881.328810042 232486.894964602,608878.833975851 232485.607763628,608876.657972004 232484.294883715,608875.329586331 232483.250489744,608872.969490056 232480.879392661,608872.301483435 232480.266521117,608870.507483435 232478.764521117,608870.453885232 232478.719963614,608867.663885232 232476.416963614,608867.523577273 232476.30326121,608862.740577273 232472.49826121,608862.192859365 232472.09223755,608857.109859365 232468.58623755,608855.455311822 232467.663058057,608848.700607031 232464.6945757,608842.733005277 232461.550682338,608842.38080069 232461.373907989,608836.49780069 232458.564907989,608834.472591442 232457.853230378,608828.887591442 232456.543230378,608828.101178103 232456.391712317,608816.729178103 232454.669712317,608814.874815058 232454.56338109,608809.586815058 232454.75238109,608808.414091641 232454.863723925,608803.324091641 232455.651723925,608802.401321739 232455.839446408,608797.310321739 232457.127446408,608797.258354086 232457.140742393,608792.666354086 232458.328742393,608792.46538849 232458.382972091,608787.267396709 232459.843832756,608781.505872447 232461.343589031,608774.76256878 232462.754867515,608770.234457652 232463.600571446,608765.348463333 232463.852390766,608761.093646199 232464.040788635,608760.63414181 232464.07175044,608755.905332502 232464.499966981,608751.9214168 232464.332239977,608748.101194266 232463.908510783,608742.211089554 232462.734783963,608737.392502547 232461.494608896,608737.138538015 232461.43277265,608730.579005672 232459.926162761,608721.091725587 232457.698948335,608716.680647131 232456.309371082,608712.824647895 232455.076846992,608702.395405539 232451.221414498,608697.175628941 232448.995268062,608691.512599562 232445.91463968,608691.227206023 232445.765294183,608684.447206023 232442.355294183,608684.024022372 232442.154728388,608678.388313356 232439.643585436,608672.126811684 232436.084962284,608667.528540762 232433.196267949,608666.590737876 232432.67509722,608660.210737876 232429.56509722,608660.115522039 232429.519304166,608654.831522039 232427.012304166,608654.548548964 232426.883398323,608649.263548963 232424.574398323,608649.041088412 232424.480388514,608642.181175994 232421.67859289,608636.736650905 232419.427266165,608630.470442473 232416.644441152,608625.765458911 232414.046705342,608625.09136099 232413.707061571,608618.678787281 232410.774095933,608613.501319749 232408.170060677,608608.200242013 232405.136681478,608603.354506295 232401.985618873,608603.111075942 232401.832259113,608594.240075942 232396.420259112) - - - - -LINESTRING (608583.823924058 232413.493740887,608592.572105684 232418.830812126,608597.535493705 232422.058381127,608598.020437514 232422.354473317,608603.801437514 232425.662473317,608604.274754421 232425.916685923,608609.85775442 232428.724685923,608610.19163901 232428.884938429,608616.429176161 232431.737846319,608621.182541089 232434.362294658,608621.957241977 232434.747282429,608628.737241977 232437.758282429,608628.974772207 232437.860115634,608634.558772207 232440.169115634,608634.598911588 232440.185611486,608641.367113667 232442.949949835,608646.398962292 232445.14834879,608651.494749083 232447.566050812,608657.344361551 232450.417507673,608661.674459238 232453.137732051,608662.052906973 232453.363997912,608668.930906973 232457.272997912,608669.801977628 232457.713271612,608675.670037001 232460.327944565,608682.096894417 232463.560331555,608688.036400438 232466.79136032,608688.892041772 232467.205391095,608694.775041772 232469.714391095,608695.230590786 232469.895609445,608706.099590786 232473.913609445,608706.522370279 232474.059241722,608710.611370279 232475.366241722,608710.651362069 232475.378932213,608715.438362069 232476.886932213,608716.157552904 232477.084334179,608726.031552904 232479.402334179,608726.078461985 232479.41322735,608732.534075608 232480.895968926,608737.493497453 232482.172391104,608738.031713964 232482.295179314,608744.615713964 232483.607179314,608745.467586474 232483.739048466,608750.056586474 232484.248048466,608750.7383622 232484.300149275,608755.7263622 232484.510149275,608757.04885819 232484.47824956,608762.208462574 232484.011022442,608766.269353801 232483.831211365,608766.341706975 232483.827745052,608771.929706975 232483.539745052,608773.250928807 232483.383023673,608778.540928807 232482.395023673,608778.753477665 232482.352938458,608785.839477665 232480.869938458,608786.310107407 232480.759504734,608792.399107407 232479.174504734,608792.58561151 232479.124027909,608797.77641093 232477.665188609,608802.241679923 232476.509975289,608806.849717536 232475.344162591,608810.890831392 232474.718544179,608814.657044473 232474.583934823,608824.710579109 232476.106286797,608828.854389576 232477.078245921,608833.585355109 232479.33717541,608839.691994723 232482.554317662,608840.329688178 232482.861941943,608846.537488763 232485.590076937,608850.556356992 232488.362091891,608855.001755373 232491.898521085,608857.695238025 232494.121851031,608859.114608899 232495.310198329,608861.583509944 232497.790607339,608862.490361138 232498.59727873,608864.782361138 232500.39927873,608865.797001815 232501.100269719,608868.787001815 232502.904269719,608869.367851753 232503.228867589,608873.255851753 232505.234867589,608875.555287973 232506.08327198,608879.844287973 232507.09027198,608880.461971355 232507.214902659,608885.249971355 232508.024902659,608885.403610079 232508.049666063,608890.690610079 232508.859666063,608891.202035542 232508.924575986,608898.285035542 232509.638575986,608899.676255094 232509.681460057,608904.361763905 232509.499405522,608908.946118859 232509.508978199,608910.251111341 232509.426210196,608914.043111341 232508.935210196,608915.165406359 232508.72414282,608921.554406359 232507.14014282) - - - -SAFE test 16595 line 2 - -LINESTRING(609188.538 232627.432 1717.13000488281,609187.04 232627.928 1718.70807521457,609183.948 232627.123 1721.90333129484,609179.361 232625.415 1726.79828629907,609175.872 232623.61 1730.7267616047,609171.288 232620.305 1736.37828783883,609167.5 232617.7 1740.97583025788,609165.21 232614.7 1744.75018263909,609161.923 232611.597 1749.27072737107,609158.933 232609.293 1753.04566477512,609154.846 232606.588 1757.94702710631,609150.559 232604.482 1762.72366034349,609146.771 232602.477 1767.00980997084,609143.682 232599.874 1771.0495381826,609139.895 232596.869 1775.88421274695,609136.106 232595.563 1779.89220497454,609133.113 232595.557 1782.88538285307,609129.523 232594.351 1786.67275439575,609125.236 232592.045 1791.54088816792,609122.446 232589.742 1795.15881742541,609119.16 232585.64 1800.41499213391,609115.573 232582.137 1805.42901895725,609111.587 232579.033 1810.48133953794,609108.796 232577.529 1813.65196272768,609105.704 232576.524 1816.90337826442,609103.511 232575.221 1819.45441831082,609102.017 232573.72 1821.5723305127,609102.022 232570.924 1824.36849553563,609102.225 232568.627 1826.67458067964,609103.029 232564.834 1830.55207878163,609103.534 232561.04 1834.37975999249,609102.544 232556.244 1839.27715422177,609101.253 232552.646 1843.09997558594) - - - -LINESTRING (609186.9602967 232617.573896739,609183.418039307 232616.254913607,609181.122024306 232615.067092719,609177.136313611 232612.193450955,609176.954395972 232612.065342441,609174.480871301 232610.364304487,609173.158839862 232608.632385572,609172.074611158 232607.428334877,609168.787611158 232604.325334877,609168.026762934 232603.67588404,609165.036762934 232601.37188404,609164.452190674 232600.954023186,609160.365190674 232598.249023186,609159.255216338 232597.612543951,609155.103706964 232595.573104077,609152.395799275 232594.139800244,609150.125872788 232592.227006899,609149.897873505 232592.040551426,609146.110873505 232589.035551426,609143.153676462 232587.414846007,609139.364676462 232586.108846007,609136.126046736 232585.563020094,609134.75753066 232585.56027666,609133.512383768 232585.141990545,609130.841510087 232583.70531345,609129.606454841 232582.685839532,609126.964602725 232579.387946233,609126.146801772 232578.485658591,609122.559801772 232574.982658591,609121.717064274 232574.24710303,609117.731064274 232571.14310303,609116.330819346 232570.229808646,609113.539819346 232568.725808646,609112.518831632 232568.289004015,609112.811642575 232566.907621047,609112.941575395 232566.153412381,609113.446575395 232562.359412381,609113.327525233 232559.018400755,609112.337525233 232554.222400755,609111.956437207 232552.866719168,609110.665437207 232549.268719168) - - - - -LINESTRING (609091.840562793 232556.023280832,609092.893172374 232558.956889874,609093.397728796 232561.401185433,609093.166950182 232563.134995462,609092.442357425 232566.553378953,609092.263824436 232567.746669726,609092.060824436 232570.043669726,609092.02201599 232570.906117339,609092.01701599 232573.702117339,609092.770330549 232577.52776891,609094.929424844 232580.774521841,609096.423424844 232582.275521841,609098.402986025 232583.817987451,609100.595986024 232585.120987451,609102.612861086 232586.034250271,609104.846616915 232586.760293158,609106.104753839 232587.438271637,609108.986965062 232589.682723126,609111.736777614 232592.368140848,609114.641397275 232595.994053767,609116.080114768 232597.454036386,609118.870114768 232599.757036386,609120.498799826 232600.85175505,609124.785799826 232603.15775505,609126.338550739 232603.830413637,609129.928550739 232605.036413637,609133.092953264 232605.556979906,609134.421205178 232605.559642623,609135.019107031 232605.765728614,609137.350753774 232607.615899849,609140.327127212 232610.123993101,609142.09287323 232611.315276411,609145.88087323 232613.320276411,609146.149783662 232613.457456049,609149.861395144 232615.28079493,609153.114011866 232617.433554468,609155.422550839 232619.212442024,609157.754341326 232621.41370332,609159.551160138 232623.767614428,609161.833604028 232625.939657559,609165.529932565 232628.481615278,609170.023686389 232631.721549045,609171.27707829 232632.491818197,609174.76607829 232634.296818197,609175.871492792 232634.78641075,609180.458492792 232636.49441075,609181.428495445 232636.800401345,609184.520495445 232637.605401345,609190.183259659 232637.421151148,609191.681259659 232636.925151148) - - - -SAFE test 16595 line 3 - -LINESTRING(609093.181 232546.537 1853.38000488281,609091.088 232545.234 1855.84536607578,609088.795 232544.231 1858.34804304639,609086.102 232543.027 1861.29782569125,609083.81 232541.723 1863.93471072891,609078.925 232539.117 1869.47115187422,609074.936 232537.41 1873.8098808932,609072.644 232535.808 1876.60614380643,609069.853 232534.104 1879.87608287387,609067.359 232534.099 1882.36999511719) - - - -LINESTRING (609098.466033027 232538.047687548,609096.373033027 232536.744687548,609095.095559519 232536.072151568,609092.839598283 232535.085352998,609090.62587224 232534.095629212,609088.755044918 232533.03124927,609088.516819773 232532.89997061,609083.631819773 232530.29397061,609082.85918556 232529.923405274,609079.818982583 232528.622420947,609078.372861916 232527.611650742,609077.854912441 232527.272990244,609075.063912441 232525.568990244,609069.873048075 232524.104020096,609067.379048075 232524.099020096) - - - - -LINESTRING (609067.168870898 232544.181696538,609069.207138084 232545.606349258,609071.00181444 232546.603594726,609074.596551576 232548.14187908,609078.983174869 232550.482010155,609081.156955082 232551.71875073,609082.020495157 232552.156146631,609084.713495157 232553.360146631,609084.787440481 232553.392848432,609086.417366889 232554.105807956,609087.895966973 232555.026312452) - - - -SAFE test 16595 line 4 - -LINESTRING(609067.359 232534.099 1882.36999511719,609064.765 232533.594 1885.01256394715,609061.969 232535.086 1888.18158371422,609058.175 232536.876 1892.37643708604,609053.382 232538.863 1897.56472721392,609048.293 232539.052 1902.65698370207,609042.207 232539.039 1908.74269650551,609034.824 232538.524 1916.14327044958,609030.335 232537.516 1920.74382375671,609026.545 232536.509 1924.66512806707,609021.659 232534.701 1929.87465535857,609017.871 232532.696 1934.1603468529,609014.381 232531.191 1937.96083311229,609009.794 232529.383 1942.89104891279,609006.203 232529.076 1946.49496966992,609002.214 232527.57 1950.75857826658,609000.72 232526.268 1952.74020674876,608998.429 232523.767 1956.13174678721,608996.141 232519.168 1961.26819832597,608994.054 232514.37 1966.50018307343,608988.587 232509.148 1974.06005859375) - - - -LINESTRING (609069.269924747 232524.283279618,609066.675924747 232523.778279618,609063.280976628 232523.704729318,609060.057152467 232524.771518966,609057.478881915 232526.147334296,609054.124427721 232527.72995765,609051.213708413 232528.9366339,609048.118046122 232529.051603476,609042.56601786 232529.039744067,609036.275680762 232528.600962595,609032.715310609 232527.801485403,609029.570925419 232526.966024747,609025.75116778 232525.552573701,609022.54912677 232523.857723589,609021.830823674 232523.513418856,609018.340823674 232522.008418856,609018.048000857 232521.887607892,609013.461000857 232520.079607892,609010.645807887 232519.419344881,609008.437115 232519.230520399,609007.516432283 232518.882927476,609006.754607938 232518.051272003,609005.20861367 232514.943742441,609003.224062357 232510.381271334,609000.961179422 232507.1387572,608995.494179422 232501.9167572) - - - - -LINESTRING (608981.679820578 232516.3792428,608985.688398337 232520.20817879,608986.970937643 232523.156728666,608987.187790866 232523.622216677,608989.475790866 232528.221216677,608991.055133718 232530.521709177,608993.346133718 232533.022709177,608994.149971357 232533.806880794,608995.643971357 232535.108880794,608998.681955577 232536.925461624,609002.670955576 232538.431461624,609005.351192113 232539.039655119,609007.486358663 232539.222193724,609010.566630895 232540.436305822,609013.545162864 232541.720744393,609016.98087323 232543.539276411,609018.188607284 232544.079505979,609023.074607284 232545.887505979,609023.977103956 232546.173673295,609027.767103955 232547.180673295,609028.144067592 232547.273039263,609032.633067593 232548.281039263,609034.128142454 232548.499759734,609041.511142454 232549.014759734,609042.185639549 232549.038977187,609048.271639549 232549.051977187,609048.664133407 232549.045110627,609053.753133407 232548.856110627,609057.211588655 232548.100653963,609062.004588655 232546.113653963,609062.441922556 232545.919968814,609066.235922556 232544.129968814,609066.676847533 232543.908481034) - - - -SAFE test 16595 line 5 - -LINESTRING(610697.427 232662.077 82.0999984741211,610693.636 232661.769 85.9034983533511,610690.143 232662.261 89.4309861355961,610685.752 232662.551 93.8315622106401,610682.262 232661.246 97.5575773282136,610680.267 232660.742 99.6152605919326,610676.179 232659.236 103.971849512795,610672.59 232657.231 108.082934952672,610669.6 232655.626 111.476484392912,610665.511 232654.419 115.739916501307,610662.221 232652.615 119.492059962401,610657.137 232649.508 125.450303644566,610652.353 232646.502 131.1003335888,610649.063 232644.498 134.952629533395,610646.275 232640.896 139.50756566134,610643.487 232637.795 143.677604597904,610638.403 232634.788 149.584318148741,610635.409 232635.081 152.592627723176,610630.619 232635.271 157.386405499466,610628.321 232637.064 160.301142529422,610625.524 232639.055 163.734412697461,610623.226 232641.147 166.842034341098,610619.131 232643.635 171.633618032477,610615.637 232644.926 175.358504690936,610611.844 232645.418 179.183289662098,610606.755 232645.906 184.295645756759,610604.164 232644.103 187.452247677664,610599.875 232642.796 191.935980740536,610597.384 232640.793 195.132406376658,610591.801 232637.985 201.381800913136,610588.809 232637.18 204.480209055688,610585.216 232637.971 208.159256766947,610582.718 232639.764 211.234138285351,610578.126 232641.252 216.061219684784,610573.036 232642.24 221.246233404112,610567.747 232642.528 226.543080923488,610562.359 232642.517 231.931104504507,610556.271 232643.503 238.098447076676,610549.983 232644.987 244.559204879729,610544.392 232646.773 250.428551943498,610539.1 232649.059 256.193203916539,610532.512 232651.043 263.073481313022,610526.921 232652.828 268.942524159912,610520.534 232653.814 275.405198258445,610516.542 232654.105 279.407799719691,610511.654 232653.795 284.305631279915,610506.666 232652.786 289.394672815204,610500.281 232652.473 295.787354676403,610496.489 232652.964 299.611019415482,610490.101 232654.249 306.126996984121,610483.313 232656.232 313.198733850089,610477.223 232658.016 319.544672759963,610470.836 232659.002 326.007346858496,610465.846 232659.49 331.021163694299,610455.666 232661.067 341.322610950687,610452.076 232659.761 345.14279457383,610447.588 232658.953 349.702959411719,610442 232658.941 355.290985107422) - - - -LINESTRING (610698.236782348 232652.1098413,610694.445782348 232651.8018413,610692.241236479 232651.866745978,610689.114708683 232652.307127219,610687.239491508 232652.430974402,610685.764409278 232651.87940354,610684.711362175 232651.550608057,610683.228336126 232651.175948844,610680.371571622 232650.123530218,610677.467068662 232648.500925472,610677.319572113 232648.420146033,610674.329572113 232646.815146033,610672.43105896 232646.035113432,610669.374778925 232645.132953979,610667.235051967 232643.959681203,610662.404690575 232641.007688118,610657.673337983 232638.034768826,610657.555104468 232637.961618913,610655.841283449 232636.917698755,610654.182922651 232634.775153706,610653.711398452 232634.21019578,610650.923398452 232631.10919578,610648.577829051 232629.187825111,610643.493829051 232626.180825111,610640.568542672 232625.02529418,610637.429028856 232624.835544011,610634.723265729 232625.100336461,610630.222651975 232625.278857675,610627.17958304 232625.881089938,610624.467487558 232627.386908761,610622.342782336 232629.044696603,610619.724850888 232630.9082295,610618.792148327 232631.660260447,610617.208249154 232633.102173881,610614.761673608 232634.588640293,610613.230570686 232635.154368362,610610.723236588 232635.479601258,610609.30135993 232635.615949423,610607.078988422 232634.537288186,610604.636804622 232633.793074098,610603.650388836 232632.999902351,610601.877245579 232631.859314078,610596.29424558 232629.051314077,610594.399114285 232628.328406286,610591.407114285 232627.523406286,610586.658982182 232627.413863436,610583.065982182 232628.204863436,610579.384867646 232629.847091121,610578.152887828 232630.731374473,610575.62269551 232631.551262576,610571.805600089 232632.292184045,610567.485138921 232632.527444551,610562.379415696 232632.51702084,610560.760252648 232632.645626899,610554.672252648 232633.631626899,610553.974050559 232633.77037326,610547.686050559 232635.25437326,610546.940065113 232635.461216711,610541.349065113 232637.247216711,610540.42644362 232637.592893105,610535.664019734 232639.650130634,610529.628388724 232641.467782718,610529.470611244 232641.51672295,610524.623535964 232643.064215237,610519.405819519 232643.869705829,610516.494734339 232644.081911688,610512.967904379 232643.858237938,610508.648696164 232642.984524809,610507.155623486 232642.79799375,610500.770623486 232642.48499375,610498.996888659 232642.555789804,610495.204888659 232643.046789804,610494.516919936 232643.160383309,610488.128919936 232644.445383309,610487.296873399 232644.650204554,610480.508873399 232646.633204554,610475.045085022 232648.233759722,610469.585530831 232649.076584277,610464.872687383 232649.537479588,610464.31514363 232649.607870737,610456.672128903 232650.791862311,610455.494691673 232650.363524422,610453.847869836 232649.91922794,610449.359869836 232649.11122794,610447.609474539 232648.953023058,610442.021474539 232648.941023058) - - - - -LINESTRING (610441.978525461 232668.940976942,610446.68434957 232668.951082506,610449.461704023 232669.451105322,610452.247308327 232670.464475578,610457.19685637 232670.949129263,610467.099073827 232669.415160999,610471.809312617 232668.954520412,610472.361687735 232668.884928561,610478.748687735 232667.898928561,610480.034253174 232667.612710665,610486.120690298 232665.829754371,610492.493495075 232663.968046671,610498.11907708 232662.836413472,610500.681398212 232662.504636131,610505.422803497 232662.737065239,610509.671303836 232663.596475191,610511.02106539 232663.774949588,610515.90906539 232664.084949588,610517.269028833 232664.078536438,610521.261028833 232663.787536438,610522.059687735 232663.696928561,610528.446687735 232662.710928561,610529.962388756 232662.35427705,610535.47470214 232660.594398783,610541.983611276 232658.634217282,610543.06555638 232658.239106895,610547.904770448 232656.148698097,610552.656948263 232654.6306531,610558.221319142 232653.317433255,610563.153405385 232652.518642677,610567.726584304 232652.52797916,610568.290720882 232652.513207439,610573.579720882 232652.225207439,610574.941495951 232652.056775702,610580.031495952 232651.068775702,610581.208615121 232650.765016557,610585.800615121 232649.277016557,610588.549132354 232647.887908879,610588.831639811 232647.685132309,610591.943728061 232649.250373901,610593.608611164 232650.589097649,610596.960011578 232652.361711814,610599.743773599 232653.210016071,610601.043148526 232654.114212518,610604.221186316 232655.579664674,610607.709552284 232655.860337242,610612.798552284 232655.372337242,610613.130349773 232655.3349201,610616.923349773 232654.8429201,610619.102885215 232654.306172689,610622.596885215 232653.015172689,610624.323449646 232652.181254541,610628.418449646 232649.693254541,610629.957851673 232648.541739553,610631.812066449 232646.853742463,610634.120149112 232645.2107705,610634.220435135 232645.136009433,610635.805348025 232645.073142325,610636.113366419 232645.051979527,610637.076040587 232645.621366078,610638.592438941 232647.30800571,610641.155077349 232650.618846294,610643.860895532 232653.038381087,610647.091524512 232655.006217097,610651.816662017 232657.975231174,610651.922364129 232658.040735361,610657.006364129 232661.147735361,610657.413070467 232661.383341554,610660.703070467 232663.187341554,610662.67994104 232664.009886568,610665.779446364 232664.924805357,610667.786339985 232666.002084374,610671.301931338 232667.966074528,610672.722159155 232668.619509545,610676.810159155 232670.125509545,610677.817637825 232670.437391943,610679.2770324 232670.806081099,610682.249590722 232671.91759646,610686.411006139 232672.529261918,610690.802006139 232672.239261918,610691.537763521 232672.163254022,610693.93209123 232671.826005459,610696.617217652 232672.0441587) - - - -SAFE test 16595 line 6 - -LINESTRING(609243.805 232633.641 1657.5,609243.009 232632.141 1659.19849814777,609239.718 232631.036 1662.67082523786,609236.013 232629.856 1666.56005859375) - - - -LINESTRING (609252.63829116 232628.953466824,609251.84229116 232627.453466824,609249.477350762 232624.51470087,609246.192010078 232622.661103015,609242.901010078 232621.556103015,609242.752690253 232621.50758696,609239.047690253 232620.32758696) - - - - -LINESTRING (609232.978309747 232639.38441304,609236.608960551 232640.540733674) - - - -SAFE test 16595 line 7 - -LINESTRING(609624.315 232783.037 1234.64001464844,609622.224 232781.246 1237.39321386488,609619.931 232779.544 1240.2488762816,609616.144 232776.939 1244.84537442258,609612.557 232773.936 1249.5235143881,609607.775 232769.631 1255.95790131306,609603.193 232764.728 1262.66871259738,609601.2 232762.726 1265.49363817565,609594.621 232759.217 1272.95000308381,609587.241 232757.104 1280.62660962107,609582.654 232755.097 1285.6335142532,609578.165 232754.289 1290.19469611964,609574.076 232753.282 1294.40590814555,609570.285 232752.774 1298.23082942377,609566.494 232752.467 1302.03427584445,609563.701 232752.261 1304.83488897829,609559.909 232752.253 1308.62693341766,609556.816 232752.246 1311.71997070312) - - - -LINESTRING (609630.820221245 232775.442126956,609628.729221245 232773.651126956,609628.184144828 232773.216263166,609625.891144828 232771.514263166,609625.598411693 232771.305041043,609622.200847486 232768.967925976,609619.114095901 232766.383728872,609614.786473051 232762.487782329,609610.499190474 232757.900146695,609610.279979643 232757.672879906,609608.286979643 232755.670879906,609605.906091181 232753.902581966,609599.327091181 232750.393581966,609597.373544435 232749.603285883,609590.636651061 232747.674416546,609586.662502661 232745.935564173,609584.425487511 232745.255159115,609580.248464315 232744.50331355,609576.467258274 232743.572114117,609575.404144518 232743.37059081,609571.613144518 232742.86259081,609571.092170341 232742.806629432,609567.301170341 232742.499629432,609567.2295602 232742.494089131,609564.4365602 232742.288089131,609563.722097 232742.261022254,609559.930864244 232742.253023873,609556.838631691 232742.24602561) - - - - -LINESTRING (609556.793368309 232762.24597439,609559.886368309 232762.25297439,609563.322187287 232762.260223071,609565.722624782 232762.437269303,609569.216609265 232762.720216608,609572.210839173 232763.121448155,609575.773741726 232763.998885883,609576.393512489 232764.130840885,609579.723957178 232764.73030609,609583.232497339 232766.265435827,609584.488455565 232766.717714117,609590.849813415 232768.539062239,609595.170891925 232770.843768804,609595.994620681 232771.671217359,609600.468809526 232776.458853305,609601.084322363 232777.063014044,609605.866322363 232781.368014044,609606.137721116 232781.603650136,609609.724721116 232784.606650136,609610.476588306 232785.177958957,609614.115339406 232787.680981564,609615.983731686 232789.067812642,609617.809778755 232790.631873044) - - - -SAFE test 16595 line 8 - -LINESTRING(610442 232658.941 355.290985107422,610438.208 232659.232 359.094130190923,610435.413 232659.726 361.932447106464,610428.031 232659.211 369.332381299169,610418.452 232659.191 378.91139142481,610412.068 232658.178 385.375254913024,610403.487 232657.861 393.96209859711,610394.311 232656.044 403.316256418451,610383.735 232655.822 413.894574279224,610373.356 232656.599 424.302606119403,610359.587 232656.57 438.07162120207,610345.421 232654.942 452.330845707698,610334.746 232654.22 463.030221950211,610322.375 232653.395 475.428686406307,610300.616 232657.943 497.657885122763,610292.233 232659.124 506.123656740916,610284.05 232659.706 514.327318234372,610277.464 232659.892 520.915936795002,610271.177 232660.378 527.221686213318,610265.591 232659.867 532.831004028975,610259.803 232660.154 538.626108652756,610251.62 232661.135 546.867692086723,610243.836 232661.818 554.681590468218,610236.153 232661.802 562.364598503491,610227.772 232661.784 570.745608424561,610215.399 232662.058 583.121628023647,610205.719 232662.836 592.832831464125,610198.135 232663.519 600.447515621579,610185.261 232664.79 613.384089405171,610175.083 232665.268 623.573296190194,610165.504 232665.248 633.152306315953,610157.322 232665.43 641.336321077749,610146.746 232665.208 651.914638938522,610136.369 232665.386 662.293153821036,610113.217 232667.434 685.535533112759,610096.553 232668.398 702.227374426872,610073.702 232669.149 725.090686268668,610064.122 232670.327 734.742829804306,610056.537 232671.11 742.368128713434,610039.572 232673.071 759.446070368713,610024.303 232674.537 774.785268155239,610008.335 232677.1 790.957633652766,609994.36 232680.566 805.356012573512,609984.778 232682.343 815.101382744515,609977.391 232684.625 822.832822377346,609970.602 232686.907 829.995079691019,609965.01 232689.692 836.242207141137,609958.919 232692.975 843.161619146883,609953.824 232696.459 849.333911708401,609949.23 232699.046 854.606230229752,609943.938 232701.831 860.586314569434,609933.553 232706.603 872.015221592247,609928.959 232708.89 877.146999634257,609924.666 232710.879 881.878375727976,609919.373 232713.464 887.76887622425,609914.48 232715.95 893.257189022581,609908.688 232719.034 899.819065532172,609905.393 232720.525 903.43570439062,609901.598 232722.814 907.867577798319,609898.003 232724.305 911.759501743102,609894.009 232726.094 916.135860275022,609890.911 232728.884 920.304992675781) - - - -LINESTRING (610441.234844669 232648.970316106,610437.442844669 232649.261316106,610436.467533871 232649.38462585,610434.882853218 232649.664708942,610428.726951354 232649.23524681,610428.051878961 232649.211021797,610419.250831236 232649.192646084,610413.635172427 232648.301564885,610412.437168994 232648.184816611,610404.650104669 232647.897146247,610396.253449545 232646.234469442,610394.520862999 232646.046202366,610383.944862999 232645.824202366,610382.988462 232645.849904883,610372.992726062 232646.5982127,610360.170226137 232646.5712062,610346.562715787 232645.007389536,610346.095804935 232644.964794064,610335.420804936 232644.242794064,610323.040404234 232643.417162699,610320.329044609 232643.606534005,610298.893628239 232648.086899539,610291.179515034 232649.173666531,610283.553901563 232649.716023495,610277.181695311 232649.895985591,610276.693275662 232649.921745039,610271.247628824 232650.342706445,610266.501983195 232649.908580968,610265.095754967 232649.879270911,610259.307754967 232650.166270911,610258.61269609 232650.225093887,610250.58754588 232651.187170431,610243.40851384 232651.817088067,610236.174150784 232651.802022362,610227.793477101 232651.784023063,610227.550604348 232651.786451102,610215.177604348 232652.060451102,610214.597864351 232652.090142574,610204.917864352 232652.868142574,610204.822049819 232652.876307215,610197.238049819 232653.559307215,610197.152515306 232653.567380844,610184.534714939 232654.81308725,610174.858743135 232655.267509977,610165.524878961 232655.248021797,610165.281615509 232655.250473049,610157.315736329 232655.427665668,610146.955862999 232655.210202366,610146.574492032 232655.209470857,610136.197492032 232655.387470857,610135.487851958 232655.424896741,610112.487493449 232657.459482705,610096.099929355 232658.407491093,610073.373526522 232659.154396197,610072.481547079 232659.22375468,610062.998244964 232660.389864272,610055.51015616 232661.162860123,610055.388736446 232661.176144212,610038.519909445 232663.126027487,610023.347279646 232664.582774837,610022.718199605 232664.663378187,610006.750199605 232667.226378187,610005.927787266 232667.394057137,609992.24279121 232670.788132009,609982.954572081 232672.510649791,609981.826418475 232672.788515896,609974.439418475 232675.070515896,609974.204857226 232675.146155438,609967.415857226 232677.428155438,609966.14395605 232677.955695953,609960.55195605 232680.740695953,609960.265382521 232680.889238787,609954.174382521 232684.172238787,609953.274426198 232684.720377865,609948.538360987 232687.958935509,609944.447096938 232690.262831916,609939.518567813 232692.85654953,609929.377627295 232697.516402024,609929.096459959 232697.650947115,609924.627955868 232699.875472334,609920.462153745 232701.805539984,609920.277583261 232701.893355976,609914.984583261 232704.478355976,609914.843379877 232704.548701825,609909.950379877 232707.034701825,609909.780130179 232707.123266535,609904.27219258 232710.056015077,609901.270392284 232711.414341098,609900.228147082 232711.962039395,609897.074813538 232713.864010536,609894.171994186 232715.067933667,609893.915131105 232715.178701304,609889.921131105 232716.967701304,609887.316967702 232718.663205714,609884.218967702 232721.453205714) - - - - -LINESTRING (609897.603032298 232736.314794286,609899.532288331 232734.57734292,609901.963212053 232733.488478989,609905.429005814 232732.051066333,609906.762852918 232731.376960605,609910.052879695 232729.392541293,609912.810607716 232728.144658902,609913.387869821 232727.860733465,609919.095169898 232724.821832664,609923.832295877 232722.415028008,609928.962580253 232719.909495208,609933.162846255 232717.963460016,609933.415540041 232717.842052885,609937.870004945 232715.6245167,609948.113372705 232710.917597976,609948.595119725 232710.680363585,609953.887119725 232707.895363585,609954.136754183 232707.75942432,609958.730754183 232705.17242432,609959.468573802 232704.713622135,609964.12805569 232701.527432754,609969.612529551 232698.571345464,609974.442296672 232696.165962518,609980.460328229 232694.143109666,609987.173589478 232692.069241767,609996.183427919 232690.398350209,609996.767212734 232690.271942863,610010.334528125 232686.90705448,610025.57453903 232684.46090293,610040.527720354 232683.025225163,610040.720263554 232683.004855788,610057.624594263 232681.050868607,610065.14884384 232680.274139877,610065.342452921 232680.25224532,610074.478016082 232679.128895278,610096.881473478 232678.392603803,610097.130527008 232678.381309199,610113.794527008 232677.417309199,610114.098148042 232677.395103259,610136.895993321 232675.378431389,610146.726815509 232675.209800151,610157.112137001 232675.427797634,610157.544384491 232675.427526951,610165.604767675 232675.248232189,610175.062121039 232675.267978203,610175.552123332 232675.256990104,610185.730123332 232674.778990104,610186.243484694 232674.741619156,610199.074734778 232673.474839689,610206.568062544 232672.800005451,610215.910696729 232672.049120182,610227.87197402 232671.784237779,610236.131522899 232671.801976937,610243.815174847 232671.817978316,610244.710082564 232671.779725738,610252.494082564 232671.096725738,610252.81030391 232671.063906113,610260.646800885 232670.124445826,610265.382097721 232669.889644479,610270.266016805 232670.336419032,610271.947724338 232670.348254961,610277.99082958 232669.881108604,610284.332304689 232669.702014409,610284.75943852 232669.680803105,610292.94243852 232669.098803105,610293.628027798 232669.026216794,610302.011027798 232667.845216794,610302.661955391 232667.731465995,610323.078263685 232663.464111332,610334.075895279 232664.197523834,610344.51224023 232664.903382481,610358.445284213 232666.504610464,610359.565938241 232666.56997782,610373.334938241 232666.59897782,610374.102538 232666.571095117,610384.003952975 232665.829848423,610393.22660968 232666.023440498,610401.544550455 232667.670530558,610403.117831006 232667.854183389,610411.096309725 232668.148924999,610416.884827573 232669.067435115,610418.431121039 232669.190978203,610427.672175505 232669.210272607,610434.717048646 232669.70175319,610437.153466129 232669.57337415,610439.463844966 232669.165028123,610442.765155331 232668.911683894) - - - -SAFE test 16595 line 9 - -LINESTRING(609236.013 232629.856 1666.56005859375,609235.928 232629.829 1666.64923781753,609231.639 232629.021 1671.01339088307,609228.347 232628.814 1674.31167145913,609224.557 232628.007 1678.18637616007,609220.467 232627.2 1682.35495141766,609217.674 232626.495 1685.23536143201,609207.498 232625.674 1695.44374269009,609204.209 232623.371 1699.45861121687,609200.72 232621.865 1703.25850877845,609198.125 232621.86 1705.85333968766,609195.928 232623.353 1708.50944817875,609193.829 232625.446 1711.4734441922,609191.533 232626.44 1713.97520617731,609188.538 232627.432 1717.13000488281) - - - -LINESTRING (609239.040408113 232620.325270746,609238.955408113 232620.298270746,609237.779323358 232620.001864007,609233.490323358 232619.193864007,609232.266557671 232619.040710857,609229.709425503 232618.879919132,609226.639599785 232618.226264949,609226.492783494 232618.196151807,609222.660101445 232617.439923344,609220.121404189 232616.799113618,609218.478187225 232616.527388305,609211.009166319 232615.924787463,609209.944793454 232615.179499926,609208.171999131 232614.189788866,609204.682999131 232612.683788866,609200.739267787 232611.865018562,609198.144267787 232611.860018562,609195.193924692 232612.299205183,609192.504371364 232613.589054846,609190.307371364 232615.082054847,609188.867060224 232616.271818638,609188.113035068 232617.02368841,609187.967418884 232617.086729563,609185.393794577 232617.939162055) - - - - -LINESTRING (609191.682205423 232636.924837945,609194.677205423 232635.932837945,609195.505933443 232635.616916686,609197.801933443 232634.622916686,609200.36230491 232632.885270986,609201.762206546 232633.865500074,609206.693812775 232635.641611695,609216.036850676 232636.395408287,609218.019595811 232636.895886382,609218.531216506 232637.010848193,609222.547695529 232637.803341731,609226.264400215 232638.594735051,609227.719442329 232638.794289143,609230.394828341 232638.962516635,609234.076676642 232639.656135993) - - - -SAFE test 16595 line 10 - -LINESTRING(609556.816 232752.246 1311.71997070312,609554.023 232751.741 1314.55825551404,609552.028 232751.238 1316.61568765014,609548.24 232749.132 1320.94975605225,609543.951 232748.624 1325.26873210332,609539.563 232747.117 1329.90829645542,609535.076 232745.11 1334.8236985768,609531.486 232743.804 1338.64387028083,609526.402 232740.997 1344.45130079578,609522.115 232738.99 1349.1848386819,609516.832 232735.883 1355.3137436277,609512.745 232733.078 1360.27071380478,609507.463 232729.272 1366.78109703898,609503.378 232725.968 1372.035009421,609497.597 232721.961 1379.06892213882,609493.01 232720.154 1383.99901116188,609488.225 232717.547 1389.44810511055,609483.641 232714.042 1395.21854927843,609476.564 232709.233 1403.77485039758,609470.182 232706.923 1410.56204037313,609463.103 232704.112 1418.17872377157,609457.322 232700.005 1425.27007955011,609453.237 232696.201 1430.85197792229,609447.459 232691.096 1438.56211479659,609442.676 232687.091 1444.80046791227,609439.087 232684.786 1449.0659005855,609431.708 232682.174 1456.89354924909,609427.218 232682.165 1461.38355455381,609422.329 232681.955 1466.27705855098,609415.049 232679.942 1473.83023500769,609407.966 232679.128 1480.95984936457,609401.881 232677.817 1487.18446837927,609395.001 232675.505 1494.44254366266,609387.92 232673.193 1501.89142365735,609382.334 232671.983 1507.60696754556,609376.25 232670.472 1513.87578816551,609370.465 232669.362 1519.7663117057,609365.876 232669.152 1524.36011035991,609362.083 232669.643 1528.18475489143,609358.49 232670.135 1531.81128094744,609354.999 232669.828 1535.31575090389,609351.907 232669.123 1538.48710272217,609350.41 232669.119 1539.98410682745,609346.121 232668.112 1544.38973253541,609342.331 232667.305 1548.264693716,609338.041 232666.796 1552.58478053391,609332.954 232665.987 1557.73570337269,609329.163 232665.479 1561.56058517342,609320.484 232664.462 1570.2989605161,609316.693 232664.454 1574.08996582031) - - - -LINESTRING (609558.595242098 232742.405558061,609556.137468596 232741.961170084,609555.742611766 232741.861614703,609553.099171711 232740.391951357,609549.416203743 232739.201413675,609546.188438897 232738.819109049,609543.236011108 232737.805137153,609539.159080671 232735.981558061,609538.494691673 232735.712524422,609535.637140376 232734.672980691,609531.235458911 232732.242705342,609530.641954105 232731.940356627,609526.779934801 232730.132315399,609522.202604346 232727.440328701,609518.498122056 232724.897859207,609513.535049771 232721.321665887,609509.666641732 232718.192848222,609509.074682409 232717.749252557,609503.293682409 232713.742252557,609501.262245184 232712.656916072,609497.250936022 232711.076703372,609493.686450464 232709.134673309,609489.715050797 232706.09807736,609489.261414655 232705.770909437,609482.184414656 232700.961909437,609479.967467557 232699.830000022,609473.729860015 232697.572263666,609467.912823063 232695.262376553,609463.652796167 232692.235922573,609460.051880169 232688.882707284,609459.858148054 232688.706975817,609454.080148054 232683.601975817,609453.8789583 232683.428918715,609449.095958299 232679.423918715,609448.079902181 232678.676854695,609444.490902181 232676.371854695,609442.423886913 232675.359166718,609435.044886913 232672.747166718,609431.728044503 232672.174020089,609427.442686303 232672.165430284,609423.896195667 232672.013095853,609417.71410169 232670.303678934,609416.190715787 232670.007389536,609409.593821537 232669.249254294,609404.535095568 232668.1593628,609398.186414861 232666.025910795,609398.104819754 232665.998880764,609391.023819754 232663.686880764,609390.037032119 232663.419659987,609384.598199209 232662.241538286,609378.660339745 232660.766833216,609378.13438103 232660.651149317,609372.34938103 232659.541149317,609370.922137637 232659.372454205,609366.333137637 232659.162454205,609364.592221626 232659.234746696,609360.799221626 232659.725746696,609360.726330876 232659.735454952,609358.24664254 232660.075005929,609356.555760202 232659.926309029,609354.130024934 232659.373222559,609351.933720011 232659.123035698,609351.58136501 232659.122094202,609348.406712027 232658.37672802,609348.203599785 232658.331264949,609344.413599785 232657.524264949,609343.509216088 232657.374652229,609339.41594297 232656.888993484,609334.524591049 232656.111107951,609334.282144518 232656.07559081,609330.491144518 232655.56759081,609330.326830939 232655.546956024,609321.64783094 232654.529956024,609320.505102564 232654.462022266,609316.714102564 232654.454022266) - - - - -LINESTRING (609316.671897436 232674.453977734,609319.889585883 232674.460767897,609327.916926837 232675.401406882,609331.504414627 232675.882135924,609336.470408951 232676.671892049,609336.862783912 232676.726347771,609340.697159799 232677.181288873,609343.936607515 232677.871060458,609348.124287973 232678.85427198,609350.383279989 232679.118964302,609350.768216291 232679.119992856,609352.775975066 232679.577777441,609354.122976665 232679.789555256,609357.613976665 232680.096555256,609359.846669124 232680.042545048,609363.403241598 232679.555533176,609366.292481478 232679.181524006,609369.288163833 232679.318611236,609374.101081564 232680.242092425,609379.923660255 232681.688166784,609380.216967881 232681.756340013,609385.302735435 232682.857983181,609391.856324606 232684.997779561,609398.695585139 232687.296089205,609399.774848745 232687.592690609,609405.859848745 232688.903690609,609406.824284213 232689.062610464,609413.134060973 232689.787749286,609419.66389831 232691.593321066,609421.899860009 232691.9457877,609426.788860009 232692.1557877,609427.197955497 232692.164979911,609429.980606116 232692.170557607,609434.657941588 232693.826229141,609436.74046898 232695.163711905,609440.93729858 232698.677887641,609446.517836682 232703.608425373,609450.507119831 232707.323292716,609451.530446551 232708.15717202,609457.311446551 232712.26417202,609459.412420351 232713.406063797,609466.491420351 232716.217063797,609466.778532443 232716.325999978,609471.981068443 232718.209086496,609477.789190799 232722.155852133,609482.150949203 232725.49092264,609483.440722343 232726.328269117,609488.225722343 232728.935269117,609489.344754816 232729.458083928,609492.853124198 232730.840168836,609497.377128844 232733.975904282,609501.174358268 232737.047151778,609501.616958817 232737.38518695,609506.898958817 232741.19118695,609507.086306123 232741.322948975,609511.173306123 232744.127948975,609511.762583103 232744.502803497,609517.045583103 232747.609803497,609517.875045895 232748.046643373,609521.860255986 232749.912357544,609526.652541089 232752.558294658,609528.067308327 232753.201475578,609531.320289694 232754.384872142,609535.479919329 232756.245441939,609536.314852892 232756.574776714,609540.702852892 232758.081776714,609542.774796257 232758.554586325,609545.104889589 232758.830568468,609547.168828289 232759.978048643,609549.583206925 232760.934545097,609551.578206925 232761.437545097,609552.243757902 232761.581441939,609555.036757902 232762.086441939) - - - -SAFE test 16595 line 11 - -LINESTRING(610766.635 232685.492 0,610763.548 232681.99 4.66837115191394,610762.554 232679.491 7.35780893128456,610760.764 232676.092 11.1993424391044,610758.774 232672.293 15.4880017955653,610756.485 232668.992 19.50499171887,610754.192 232667.49 22.2461398481215,610749.704 232666.481 26.8461765691108,610745.313 232666.672 31.2413403894991,610741.022 232667.262 35.5727236603881,610735.432 232668.449 41.2873752805263,610730.942 232668.439 45.7773983875674,610726.055 232667.43 50.7674868417649,610722.566 232665.126 54.9485907891251,610718.778 232663.12 59.2349736431465,610716.486 232661.618 61.9752853119838,610713.693 232660.613 64.943604867428,610709.106 232659.305 69.7134638086124,610704.815 232659.296 74.0044846876773,610701.72 232660.588 77.3583405253578,610698.427 232661.08 80.6879008738046,610697.427 232662.077 82.0999984741211) - - - -LINESTRING (610774.136565799 232678.879397595,610772.198026247 232676.68025101,610771.845929644 232675.795050394,610771.402052621 232674.831390058,610769.617171836 232671.442110847,610767.632269713 232667.652842925,610766.991617828 232666.594688213,610764.702617829 232663.293688213,610761.964470404 232660.62686975,610759.671470404 232659.12486975,610756.385466599 232657.733530132,610751.897466599 232656.724530132,610749.269430284 232656.490447004,610744.878430284 232656.681447004,610743.950844919 232656.765207707,610739.659844919 232657.355207707,610738.944877467 232657.480100288,610734.393002697 232658.446661173,610731.974575859 232658.441274922,610729.960584503 232658.025453912,610728.076521077 232656.78129165,610727.245949078 232656.288688382,610723.869568034 232654.50066822,610721.967142973 232653.253965584,610719.871763092 232652.208610632,610717.078763092 232651.203610632,610716.435226769 232650.996337775,610711.848226769 232649.688337775,610709.126974086 232649.305021996,610704.835974086 232649.296021996,610700.962707274 232650.067791032,610699.013902576 232650.881314673,610696.949323489 232651.189778965,610693.932912854 232652.146737398,610691.366562691 232653.998317643,610690.366562691 232654.995317643) - - - - -LINESTRING (610703.197676511 232670.478221035,610705.572292726 232669.816208968,610706.80839071 232669.30020296,610707.697812474 232669.302068445,610710.625499676 232670.136909269,610711.990926434 232670.628228242,610713.296857028 232671.484034416,610714.098050923 232671.957311618,610717.4588588 232673.737084744,610720.544478923 232675.77470835,610724.032986364 232677.223439684,610728.919986364 232678.232439685,610730.91972834 232678.438975199,610735.40972834 232678.448975199,610737.509122533 232678.230899712,610742.743906457 232677.119327527,610746.213314799 232676.642293986,610748.80897506 232676.52938779,610749.678147326 232676.724796617,610750.203270484 232677.482084316,610751.905730287 232680.732157075,610751.915947379 232680.751609942,610753.458412337 232683.680569937,610754.256070356 232685.685949606,610756.046434201 232688.602602405,610759.133434201 232692.104602405) - - - -SAFE test 16595 line 12 - -LINESTRING(609780.059 232789.469 1051.80004882812,609775.468 232790.458 1056.49630718269,609773.97 232791.554 1058.35241402419,609772.968 232794.048 1061.04013736407,609771.167 232796.841 1064.36341433737,609768.668 232799.832 1068.26093876405,609767.367 232801.926 1070.72615332611,609765.368 232804.419 1073.92158615777,609762.566 232809.206 1079.4682781955,609758.265 232815.589 1087.16501693724,609752.669 232820.87 1094.85934440624,609749.076 232821.861 1098.58645825157,609746.281 232822.155 1101.39684268156,609741.692 232821.846 1105.99617582748,609736.203 232822.333 1111.50666761276,609729.618 232822.12 1118.09502802359,609722.938 232819.309 1125.34228879232,609718.949 232817.803 1129.60605424477,609714.663 232815.197 1134.62206797628,609709.578 232813.189 1140.08910838352,609704.791 232811.182 1145.27974750999,609701 232810.874 1149.08319042856,609698.207 232810.369 1151.92144158919,609696.113 232809.865 1154.07521370549,609693.82 232808.861 1156.57835294603,609691.03 232806.559 1160.19539208357,609688.837 232805.256 1162.74625329872,609683.95 232803.747 1167.86085850523,609679.96 232802.94 1171.93159905746,609676.368 232803.232 1175.53540240213,609674.073 232803.227 1177.83037874053,609670.082 232803.219 1181.82133613931,609667.486 232804.012 1184.53571969703,609664.193 232804.205 1187.83432879566,609660.403 232803.398 1191.70924403516,609656.912 232802.392 1195.34225686,609653.621 232801.386 1198.78353810281,609650.531 232799.382 1202.46644075248,609648.539 232797.581 1205.15186102975,609644.952 232793.978 1210.23590689137,609643.458 232792.277 1212.49982097676,609642.165 232790.177 1214.96593020487,609640.671 232788.676 1217.08369393832,609638.179 232787.172 1219.99434078967,609636.084 232786.669 1222.1488514645,609632.593 232786.162 1225.67643056876,609630.298 232785.857 1227.99157938358,609627.008 232784.353 1231.6090072061,609624.914 232783.549 1233.85202400835,609624.315 232783.037 1234.64001464844) - - - -LINESTRING (609777.95309487 232779.693256367,609773.36209487 232780.682256367,609769.563242393 232782.387446264,609768.065242393 232783.483446264,609764.690888825 232787.825985005,609764.045442382 232789.432515373,609763.097246367 232790.902982596,609760.993995332 232793.420319069,609760.173918092 232794.554635835,609759.189759254 232796.138670121,609757.566338967 232798.163275811,609756.737740284 232799.367404486,609754.095859976 232803.880852394,609750.593145291 232809.079138335,609747.613614536 232811.890950686,609747.210955152 232812.002009815,609746.092469002 232812.119660952,609742.363828004 232811.868593166,609740.808242538 232811.885127912,609735.921742667 232812.318672353,609731.790928203 232812.185056031,609726.816657657 232810.091841285,609726.470044423 232809.953538376,609723.350345279 232808.775732683,609719.858294684 232806.652474668,609718.33587304 232805.895924598,609713.348111958 232803.926322975,609708.65752683 232801.959745922,609705.600782347 232801.2148413,609702.297613224 232800.946475146,609700.268339052 232800.579563776,609699.313345089 232800.349708495,609699.108479911 232800.260007388,609697.394240793 232798.84560651,609696.138013976 232797.962012549,609693.945013976 232796.659012549,609691.787336927 232795.701131502,609686.900336927 232794.192131502,609685.932415126 232793.945467963,609681.942415126 232793.138467963,609679.149755188 232792.972878884,609675.973086275 232793.231115889,609674.09478644 232793.227023732,609670.102045061 232793.21902009,609667.160563419 232793.655255529,609665.707689518 232794.099064852,609664.955398053 232794.143156032,609662.831848245 232793.690991204,609659.758338898 232792.80529931,609657.885562047 232792.23282483,609656.643804825 232791.427491021,609655.440404315 232790.339476804,609652.259240652 232787.144123395,609651.529750824 232786.313559675,609650.680329902 232784.933989732,609649.252575156 232783.122478159,609647.758575156 232781.621478159,609645.838170739 232780.114437844,609643.34617074 232778.610437844,609640.513607232 232777.448337672,609638.418607232 232776.945337672,609637.521228067 232776.772820157,609634.030228066 232776.265820157,609633.910393205 232776.249156052,609633.096617542 232776.141007216,609631.165597603 232775.258255244,609630.592412751 232775.017477238) - - - - -LINESTRING (609617.817543303 232790.638516722,609618.416543303 232791.150516722,609621.329587249 232792.884522762,609623.133250702 232793.577046838,609626.140402397 232794.951744756,609628.980606795 232795.769843948,609631.21563896 232796.066874367,609634.194137018 232796.499443406,609634.335136482 232796.533296738,609634.942670098 232797.520010268,609635.944559288 232798.876106657,609637.438559288 232800.577106657,609637.865214396 232801.033315004,609641.452214396 232804.636315004,609641.83249982 232804.998739233,609643.82449982 232806.799739233,609645.089708787 232807.772014895,609648.179708787 232809.776014895,609650.69770728 232810.949177279,609653.98870728 232811.955177279,609654.142983514 232812.000982657,609657.633983514 232813.006982657,609658.320400215 232813.178735051,609662.110400215 232813.985735051,609664.778087673 232814.187868947,609668.071087673 232813.994868947,609670.407436581 232813.575744471,609671.565490603 232813.221993762,609674.052084217 232813.226978164,609676.34621356 232813.231976268,609677.178244812 232813.199121116,609679.3622187 232813.021582036,609681.477456736 232813.449400857,609684.750893787 232814.460167485,609685.259845378 232814.762567814,609687.455759207 232816.57439349,609689.809087424 232818.021381013,609692.102087424 232819.025381013,609693.772949241 232819.58735375,609695.866949241 232820.09135375,609696.427757902 232820.209441939,609699.220757902 232820.714441939,609700.190217652 232820.8411587,609702.393516261 232821.020165815,609705.71147317 232822.411254078,609705.90512696 232822.490075402,609710.19664521 232824.184739836,609713.753705316 232826.347525332,609715.416955577 232827.158461624,609719.231358415 232828.59854452,609725.739342343 232831.337158715,609729.294706669 232832.114772705,609735.879706669 232832.327772705,609737.086757462 232832.293872088,609741.79860975 232831.875822887,609745.609171996 232832.132406834,609747.327106959 232832.100132489,609750.122106959 232831.806132489,609751.734860105 232831.501044758,609755.327860105 232830.510044758,609759.532410793 232828.142798106,609765.128410793 232822.861798106,609766.558017675 232821.177010186,609770.859017675 232814.794010186,609771.196259716 232814.257595514,609773.628079558 232810.103019645,609775.168661033 232808.181724189,609775.861081908 232807.203364165,609776.791833851 232805.70528994,609778.841004668 232803.252680931,609779.571248571 232802.260280944,609781.372248571 232799.467280944,609781.402393726 232799.409004966,609782.16490513 232799.244743633) - - - -SAFE test 16595 line 13 - -LINESTRING(609890.911 232728.884 920.304992675781,609887.614 232731.673 924.623392735533,609884.315 232735.661 929.799040347982,609881.017 232738.75 934.317730396102,609877.22 232742.237 939.472937755411,609872.626 232745.024 944.846202250726,609868.33 232748.11 950.13569991747,609864.233 232751.897 955.714815088414,609858.64 232755.68 962.467027245764,609854.144 232758.966 968.035829722215,609849.249 232762.451 974.044653050655,609844.755 232765.038 979.23005442278,609839.861 232768.024 984.963043695717,609834.867 232771.309 990.940582639761,609830.772 232773.597 995.631402495782,609827.974 232776.688 999.800688324114,609824.975 232779.677 1004.0348325007,609822.678 232781.17 1006.77439400943,609818.383 232783.758 1011.78882972072,609813.99 232785.546 1016.5317413734,609809.498 232787.235 1021.33076196218,609805.703 232788.824 1025.44498230272,609802.111 232789.017 1029.04214900424,609799.118 232789.01 1032.03514507878,609796.324 232788.805 1034.83664422788,609794.03 232788.3 1037.18556235058,609790.44 232787.494 1040.86491371185,609787.946 232787.189 1043.37748409059,609785.351 232787.184 1045.97247840681,609783.155 232787.678 1048.2233473495,609780.059 232789.469 1051.80004882812) - - - -LINESTRING (609884.452615701 232721.249258862,609881.155615701 232724.038258862,609879.908715249 232725.298944234,609877.014957404 232728.797066782,609874.21682031 232731.417881058,609871.185924108 232734.201324581,609867.439229974 232736.474297274,609866.791821205 232736.902278644,609862.495821205 232739.988278644,609861.542212762 232740.766571345,609858.002175872 232744.038750916,609853.037414353 232747.396822224,609852.739293848 232747.606483609,609848.293529951 232750.855767454,609843.842071297 232754.024987762,609839.76601391 232756.37139641,609839.546568979 232756.501475748,609834.652568979 232759.487475748,609834.36544951 232759.669424917,609829.67364274 232762.75564543,609825.894407571 232764.867218096,609823.358290268 232766.886045671,609820.732741989 232769.786535209,609818.652774555 232771.859567108,609817.371044332 232772.692663852,609813.890354572 232774.789992164,609810.344703815 232776.23311157,609805.978546115 232777.874794642,609805.635801482 232778.010932426,609803.437715418 232778.931290464,609801.854226933 232779.016372112,609799.496042883 232779.010856813,609797.772269779 232778.884380977,609796.200265362 232778.53832072,609792.630594644 232777.736884898,609791.653891433 232777.567950051,609789.159891433 232777.262950051,609787.965267787 232777.189018562,609785.370267787 232777.184018562,609783.156300914 232777.427807304,609780.960300914 232777.921807304,609778.147613268 232779.022014896,609775.051613268 232780.813014896) - - - - -LINESTRING (609785.066386732 232798.124985104,609786.688527233 232797.186595686,609787.327204186 232797.187826278,609788.733565582 232797.359815141,609791.839405356 232798.057115102,609791.880082761 232798.066158706,609794.174082761 232798.571158706,609795.592251891 232798.7781913,609798.386251891 232798.9831913,609799.094612159 232799.00997265,609802.087612159 232799.01697265,609802.647531206 232799.00259634,609806.239531206 232798.80959634,609809.565198518 232798.048067574,609813.190081577 232796.530297039,609817.509453885 232794.906205358,609817.759820936 232794.808205467,609822.152820937 232793.020205467,609823.544078288 232792.323236185,609827.839078288 232789.735236185,609828.127755203 232789.554519559,609830.424755203 232788.061519559,609832.034249237 232786.759866666,609835.033249237 232783.770866666,609835.387709732 232783.398954329,609837.083445751 232781.52564481,609839.744592429 232780.038781904,609840.36255049 232779.663575083,609845.214537166 232776.471989934,609849.854538208 232773.640963553,609854.23798609 232771.11760359,609855.048780935 232770.59732071,609859.943780935 232767.11232071,609860.044706152 232767.039516391,609864.393556566 232763.861063886,609869.835585647 232760.180177776,609871.020787238 232759.240428655,609874.664978467 232755.871975595,609878.144784405 232753.372282596,609882.406770026 232750.786702726,609883.984007045 232749.602338328,609887.781007045 232746.115338328,609887.853024307 232746.048545861,609891.151024307 232742.959545861,609892.020284751 232742.035055766,609894.751940312 232738.732890752,609897.369384299 232736.518741138) - - - -SAFE test 16595 line 14 - -LINESTRING(609101.253 232552.646 1843.09997558594,609099.76 232550.645 1845.59684261421,609098.464 232549.644 1847.23457706256,609096.172 232548.041 1850.03180752373,609093.181 232546.537 1853.38000488281) - - - -LINESTRING (609109.26787555 232546.665885459,609107.77487555 232544.664885459,609105.872736883 232542.730807192,609104.576736883 232541.729807192,609104.195263585 232541.44932992,609101.903263585 232539.84632992,609100.664435969 232539.106906926,609097.673435969 232537.602906926) - - - - -LINESTRING (609088.688564031 232555.471093074,609091.033411058 232556.650180313,609092.538678781 232557.702948271,609092.56380557 232557.722355613,609093.23812445 232558.626114541) - - - -SAFE test 16595 line 15 - -LINESTRING(608988.587 232509.148 1974.06005859375,608987.977 232508.565 1974.90388095372,608983.194 232504.16 1981.4064893125,608977.911 232501.153 1987.48551772014,608973.125 232499.345 1992.60180487824,608968.038 232497.836 1997.90807621276,608961.654 232497.024 2004.34372257249,608955.371 232495.313 2010.85574373215,608947.989 232493.999 2018.35402654017,608940.407 232493.184 2025.9799561211,608936.316 232493.475 2030.08142860374,608928.229 232496.454 2038.69995117188) - - - -LINESTRING (608995.496265997 232501.918750842,608994.886265997 232501.335750842,608994.751429103 232501.209246447,608989.968429103 232496.804246447,608988.140678015 232495.469178599,608982.857678015 232492.462178599,608981.444929665 232491.798250344,608976.658929665 232489.990250344,608975.968899032 232489.75791294,608970.881899031 232488.24891294,608969.299764328 232487.915921836,608963.608122601 232487.19198495,608957.998535509 232485.664370193,608957.123459282 232485.467753103,608949.741459282 232484.153753103,608949.057757574 232484.056276166,608941.475757574 232483.241276166,608939.697475209 232483.209203031,608935.606475209 232483.500203031,608932.859376587 232484.091410358,608924.772376587 232487.070410358) - - - - -LINESTRING (608931.685623414 232505.837589642,608938.441022454 232503.349110139,608940.225951827 232503.222144985,608946.57670759 232503.904796785,608953.176589554 232505.07957935,608959.026464492 232506.672629807,608960.392235672 232506.944078164,608965.971664647 232507.653742376,608969.931853751 232508.828486893,608973.644707414 232510.23108602,608977.257412405 232512.287380532,608981.134567689 232515.858124631,608981.677734003 232516.377249158) - - - -SAFE test 16595 line 16 - -LINESTRING(608589.032 232404.957 2403.88989257812,608580.657 232400.945 2413.17630313634,608575.574 232397.639 2419.23986669253,608569.992 232393.732 2426.05336241927,608563.913 232389.425 2433.50352414116,608557.634 232385.117 2441.11832180329,608551.552 232382.108 2447.90397970466,608545.173 232378.2 2455.38492404065,608539.891 232374.394 2461.89533727516,608524.24 232365.472 2479.91084001694,608507.993 232354.852 2499.32094711831,608501.41 232353.34 2506.07538106635,608498.916 232353.335 2508.56939550729,608497.618 232354.031 2510.04222828865,608496.618 232355.028 2511.45432746263,608495.319 232356.623 2513.51137826287,608494.318 232358.618 2515.74343195181,608492.517 232361.411 2519.06676363997,608490.515 232365.202 2523.35393333254,608488.213 232369.791 2528.48796920112,608485.911 232374.08 2533.35571037761,608484.109 232378.071 2537.73468628396,608481.607 232382.66 2542.96145694711,608475.505 232392.034 2554.14659109725,608471.906 232396.621 2559.97699648898,608468.404 232402.206 2566.56915528426,608464.803 232407.991 2573.38338870365,608459.501 232416.668 2583.55208158137,608454.896 232425.746 2593.73131988617,608451.091 232433.828 2602.6642562657,608447.286 232442.209 2611.86859364442,608443.983 232448.793 2619.23468319474,608440.379 232456.375 2627.62968604655,608436.378 232462.159 2634.66268192299,608432.278 232467.743 2641.59026583592,608422.885 232476.112 2654.17079868258,608418.591 232478.4 2659.03634685311,608413.001 232480.386 2664.96867878049,608408.21 232481.375 2669.86071137999,608402.62 232482.661 2675.59675049931,608397.53 232483.449 2680.74740527242,608392.939 232484.139 2685.38998472464,608388.146 232486.425 2690.7002444374,608385.633 232497.605 2702.15923923827,608384.829 232501.199 2705.84208522401,608383.827 232504.193 2708.99931745662,608382.324 232507.785 2712.89310579697,608381.024 232509.48 2715.02923769884,608376.43 232512.267 2720.40254425147,608372.137 232514.055 2725.05302342309,608368.044 232515.045 2729.26406641519,608363.752 232516.135 2733.69232931061,608360.458 232517.126 2737.1321848989,608357.463 232517.819 2740.20632631654,608354.668 232518.812 2743.17249228029,608352.372 232519.606 2745.60191538601,608349.875 232521.099 2748.51123180031,608348.076 232522.893 2751.05187853029,608346.776 232524.688 2753.26819577766,608345.775 232526.483 2755.32344708559,608344.272 232530.475 2759.58903152118,608343.27 232533.269 2762.55728127779,608341.968 232535.863 2765.45971193092,608340.168 232538.356 2768.53462989599,608337.671 232540.348 2771.72886691719,608334.375 232541.939 2775.38878471431,608331.779 232542.932 2778.16823131617,608329.283 232544.425 2781.07668949199,608326.985 232546.217 2783.99081581232,608323.886 232549.706 2788.65740843004,608319.386 232555.789 2796.22400091953,608318.585 232557.585 2798.1905324451,608318.082 232560.38 2801.030443532,608317.579 232562.376 2803.08885482159,608316.279 232564.471 2805.55443202886,608315.278 232566.166 2807.52294804348,608313.978 232568.461 2810.16057531128,608313.474 232571.056 2812.80407561166,608313.468 232575.051 2816.79909522083,608313.462 232578.846 2820.59411431131,608312.955 232583.439 2825.21502974582,608311.452 232587.73 2829.76165995984,608309.95 232590.823 2833.20008145728,608307.351 232593.813 2837.161775498,608304.852 232596.604 2840.90807875851,608303.352 232598.698 2843.4839060368,608302.052 232600.693 2845.86509646852,608299.753 232603.185 2849.25560556301,608297.954 232604.979 2851.79625229297,608295.456 232606.971 2854.99127110131,608292.96 232608.264 2857.80230734227,608290.364 232609.057 2860.51673558994,608287.869 232609.551 2863.06018008786,608285.274 232610.045 2865.70179205077,608282.778 232611.039 2868.38844546662,608280.98 232612.033 2870.44292153487,608279.481 232613.329 2872.42449835394,608278.681 232614.625 2873.94753267372,608277.68 232616.321 2875.91690981522,608276.68 232618.116 2877.97167426005,608275.38 232619.911 2880.18799150742,608273.881 232621.406 2882.30507910349,608271.882 232623.499 2885.19933433379,608269.784 232625.192 2887.89524010994,608267.786 232626.487 2890.27622139187,608263.188 232631.77 2897.2799392539,608260.186 232636.857 2903.18670121015,608258.683 232640.649 2907.26572055381,608257.381 232643.742 2910.62160168299,608255.378 232648.032 2915.35618492689,608253.777 232650.825 2918.57552156121,608253.075 232653.62 2921.45734247769,608252.272 232656.115 2924.07838920453,608252.069 232658.411 2926.38335453431,608252.263 232662.007 2929.98459738374,608252.557 232665.303 2933.29369617281,608253.249 232669.1 2937.15325387188,608254.041 232672.896 2941.03101014288,608255.032 232676.893 2945.14904586687,608255.325 232680.789 2949.05606268529,608256.017 232684.785 2953.11155332869,608256.509 232689.08 2957.43465757359,608257.002 232692.876 2961.26255200685,608257.294 232697.271 2965.66725809213,608256.989 232700.766 2969.17555441143,608256.783 232704.86 2973.27474933887,608255.476 232711.149 2979.69815046092,608250.172 232720.526 2990.4713311686,608246.573 232725.112 2996.3009498493,608244.573 232727.904 2999.73538622035,608242.074 232730.695 3003.48168948079,608238.975 232734.284 3008.2235131819,608235.677 232737.572 3012.88054141732,608231.58 232741.059 3018.26057829983,608228.083 232743.848 3022.73357296574,608224.789 232745.139 3026.27154012849,608219.199 232746.326 3031.98619811714,608212.61 232748.409 3038.8966373997,608208.018 232750.197 3043.82447583168,608205.521 232751.69 3046.73379224609,608202.924 232753.183 3049.72937663817,608201.724 232754.678 3051.64641935748,608200.724 232756.474 3053.70205744595,608199.423 232758.768 3056.33930783015,608198.122 232761.062 3058.97655821426,608196.821 232763.356 3061.61380859838,608195.322 232764.851 3063.73089619446,608193.324 232766.345 3066.22570822375,608191.526 232767.639 3068.4409457065,608190.227 232768.635 3070.07784437768,608189.028 232769.931 3071.84341526829,608188.228 232770.928 3073.12170371586,608186.728 232773.222 3075.86259641773,608185.925 232775.717 3078.48364314458,608184.722 232779.31 3082.27270194006,608183.419 232782.802 3085.99989633256,608181.915 232787.393 3090.83099077106,608180.113 232791.184 3095.02849219697,608178.313 232793.977 3098.35128206131,608177.013 232795.772 3100.56759930861,608175.812 232797.567 3102.72733569735,608174.512 232799.262 3104.8634675992,608174.212 232800.06 3105.71599882766,608173.51 232802.056 3107.831856538,608173.006 232805.351 3111.1651919566,608172.703 232807.447 3113.28298772398,608171.901 232809.942 3115.90372825528,608170.199 232813.734 3120.0601929343,608168.396 232817.824 3124.52998712031,608166.394 232821.815 3128.99498832314,608164.293 232825.106 3132.89947257462,608161.993 232828.397 3136.91454454058,608159.994 232830.49 3139.80879977085,608157.496 232832.482 3143.0038185791,608154.9 232833.975 3145.99853606348,608150.904 232836.763 3150.8710240841,608148.605 232839.055 3154.11736736311,608147.104 232841.848 3157.28816001153,608145.304 232844.64 3160.61010935497,608144.002 232847.434 3163.69259404173,608142.701 232849.928 3166.505545664,608140.699 232853.519 3170.61692168784,608138.899 232856.012 3173.6918396529,608137.1 232858.105 3176.45175044753,608133.796 232865.389 3184.45009750894,608133.293 232867.685 3186.80055847926,608131.791 232870.977 3190.41903426351,608129.489 232875.566 3195.55307013207,608127.987 232878.359 3198.72433628964,608125.982 232884.147 3204.84979567686,608125.98 232885.945 3206.64780358676,608126.672 232889.742 3210.50736128584,608128.258 232896.336 3217.28943912292,608128.454 232898.334 3219.29703730853,608129.244 232903.229 3224.25539498961,608129.737 232906.726 3227.78698844074,608129.232 232910.52 3231.61446434111,608128.23 232913.314 3234.58271409775,608127.128 232916.108 3237.58619677766,608126.923 232919.203 3240.68799025031,608126.62 232921.999 3243.50037087977,608125.417 232924.993 3246.72702916995,608123.618 232927.286 3249.64152985222,608121.319 232929.278 3252.68349220694,608118.322 232931.569 3256.45586514732,608115.526 232933.361 3259.77685346293,608112.729 232935.352 3263.21012873967,608101.843 232941.221 3275.57747742449,608098.246 232944.509 3280.45082663975,608095.748 232946.501 3283.64584544809,608092.651 232949.092 3287.68376734975,608089.354 232951.781 3291.93830220853,608085.359 232954.369 3296.69833795636,608081.765 232955.66 3300.51718952058,608078.77 232956.153 3303.55250559343,608075.676 232957.145 3306.8016562245,608074.178 232957.841 3308.45345543453,608072.679 232959.436 3310.6423049556,608071.38 232960.432 3312.27920362678,608069.082 232962.224 3315.193329947,608067.286 232962.42 3317) - - - -LINESTRING (608593.352307769 232395.938411375,608585.563959691 232392.207443914,608581.168863295 232389.348858691,608575.749714229 232385.555842676,608569.694104416 232381.265414733,608569.570427128 232381.179181769,608563.291427128 232376.871181769,608562.0683694 232376.15394427,608556.391006459 232373.345133831,608550.715735792 232369.868263198,608545.737041183 232366.28081305,608544.843420067 232365.706449397,608529.456732874 232356.935123403,608513.464396986 232346.481586927,608510.231538015 232345.10577265,608503.648538015 232343.59377265,608501.430048075 232343.340020096,608498.936048075 232343.335020096,608494.190394757 232344.522017809,608492.892394757 232345.218017809,608490.557562691 232346.949317643,608489.557562691 232347.946317643,608488.864151481 232348.713110203,608487.565151481 232350.308110203,608486.381009161 232352.138323895,608485.621696517 232353.651639304,608484.112751429 232355.991719056,608483.674302827 232356.741234835,608481.672302827 232360.532234835,608481.576579103 232360.718181106,608479.336543822 232365.183655436,608477.099898383 232369.35088927,608476.79696244 232369.96486703,608475.1494546 232373.613703763,608473.013660981 232377.531032666,608467.365061436 232386.208510892,608464.03859279 232390.44816404,608463.433781281 232391.308607886,608459.931781281 232396.893607886,608459.914384933 232396.921453093,608456.313384933 232402.706453093,608456.269914274 232402.776937477,608450.967914274 232411.453937477,608450.582813738 232412.144068767,608445.977813738 232421.222068767,608445.848548847 232421.486466266,608442.043548847 232429.568466266,608441.985475789 232429.69406376,608438.260695321 232437.898369961,608435.04470941 232444.308921352,608434.951402515 232444.499953662,608431.694681596 232451.351357104,608428.234041662 232456.354191739,608424.840107944 232460.976563906,608417.126253919 232467.849473981,608414.543698533 232469.225553795,608410.303499368 232470.732000225,608406.188337799 232471.581487762,608405.96802634 232471.629562395,608400.731576839 232472.834226806,608396.021914292 232473.563345488,608391.452751642 232474.250063464,608388.634109531 232475.113041987,608383.841109531 232477.399041987,608380.3291398 232480.188278376,608378.389435431 232484.231954672,608375.876435431 232495.411954673,608375.874205846 232495.421897468,608375.182592692 232498.513511492,608374.460405727 232500.671423441,608373.846832799 232502.13779334,608371.888502471 232503.325835705,608369.019876917 232504.520595195,608365.6930296 232505.325280962,608365.582528885 232505.352675204,608361.290528885 232506.442675204,608360.871054213 232506.5589804,608357.887677219 232507.45652946,608355.208703513 232508.076405513,608354.11523131 232508.396025692,608351.35991799 232509.374925917,608349.103722029 232510.155160931,608347.240190902 232511.023195366,608344.743190902 232512.516195366,608342.813779086 232514.018098983,608341.014779086 232515.812098983,608339.976948349 232517.027391562,608338.676948349 232518.822391562,608338.042241849 232519.81753097,608337.041241849 232521.61253097,608336.416340823 232522.959436688,608334.913340823 232526.951436688,608334.859009881 232527.099260523,608334.061237696 232529.323786954,608333.39064202 232530.659827802,608332.86171491 232531.39239185,608332.312588374 232531.830461557,608330.408055611 232532.749791541,608328.20633286 232533.591975936,608326.645676589 232534.350100982,608324.149676589 232535.843100982,608323.133620811 232536.539244767,608320.835620811 232538.331244767,608319.508424528 232539.576155234,608316.409424528 232543.065155234,608315.846683748 232543.758782651,608311.346683748 232549.841782651,608310.253134513 232551.715823354,608309.452134513 232553.511823354,608308.743105373 232555.813811092,608308.301063294 232558.270088646,608308.262128242 232558.424590365,608307.781971741 232559.198381033,608307.668420276 232559.385931975,608306.667420276 232561.080931975,608306.576965155 232561.237309238,608305.276965155 232563.532309238,608304.161432889 232566.55442974,608303.657432889 232569.14942974,608303.474011278 232571.040981243,608303.468011873 232575.035585149,608303.462869931 232578.287863431,608303.14042713 232581.208928101,608302.204758354 232583.88022199,608301.533394851 232585.26273019,608299.851922758 232587.197167111,608297.401960968 232589.933398946,608296.722542197 232590.780606159,608295.222542197 232592.874606159,608294.973805985 232593.238525204,608294.132429228 232594.52971492,608292.544284932 232596.251183204,608291.285568673 232597.506401085,608289.986825044 232598.542068543,608289.168268344 232598.966104525,608287.925941707 232599.345597986,608285.962807894 232599.734290613,608283.403922659 232600.221415586,608281.574215904 232600.754596476,608279.078215904 232601.748596476,608277.939765215 232602.287343919,608276.141765215 232603.281343919,608274.439729206 232604.468288642,608272.940729206 232605.764288642,608270.971638899 232608.076307962,608270.171638899 232609.372307962,608270.069107559 232609.542155464,608269.068107559 232611.238155464,608268.944172442 232611.4542437,608268.232928297 232612.730926941,608267.750988902 232613.396374028,608266.819385475 232614.325491523,608266.649405872 232614.499188408,608265.097887015 232616.123665131,608263.908723111 232617.083271655,608262.347045458 232618.095470134,608260.24283496 232619.92189062,608255.64483496 232625.20489062,608254.575803894 232626.68767,608251.573803894 232631.77467,608250.889612764 232633.172276895,608249.425433771 232636.866333275,608248.238777183 232639.685326232,608246.494080979 232643.422094436,608245.10126684 232645.851906985,608244.078234366 232648.389030957,608243.455799132 232650.867245316,608242.752866262 232653.051326897,608242.310858066 232655.23428928,608242.107858066 232657.53028928,608242.083520693 232658.949704946,608242.277520693 232662.545704946,608242.302546502 232662.895462782,608242.596546502 232666.191462782,608242.719047957 232667.095958339,608243.411047957 232670.892958339,608243.459796951 232671.142425926,608244.251796951 232674.938425926,608244.334879463 232675.302496235,608245.123292064 232678.482400538,608245.35315982 232681.538935619,608245.471654354 232682.495335132,608246.114653787 232686.208378099,608246.573971848 232690.218075402,608246.592283598 232690.367919174,608247.044823826 232693.85238714,608247.265055121 232697.167169814,608247.026861984 232699.896628871,608247.001635285 232700.263460398,608246.83456706 232703.583738626,608246.002995895 232707.585078375,608241.839426068 232714.945899316,608238.706246463 232718.938331011,608238.443542197 232719.288606159,608236.760216177 232721.638529283,608234.623960968 232724.024398946,608234.505153508 232724.159515108,608231.650214458 232727.465864334,608228.895636045 232730.212090477,608225.220075959 232733.340398512,608223.028220515 232735.088492545,608221.906531186 232735.528110312,608217.121877467 232736.544100288,608216.184708448 232736.791114241,608209.595708448 232738.874114241,608208.981620571 232739.090477439,608204.389620571 232740.878477439,608202.886190902 232741.614195366,608200.462713639 232743.063234835,608197.939978691 232744.513540294,608195.125500588 232746.92333492,608193.925500588 232748.41833492,608192.98702047 232749.813312066,608192.006132454 232751.574986944,608190.724513552 232753.834813047,608188.794662705 232757.237639982,608188.763962426 232757.268258339,608187.408591987 232758.281733533,608185.684617746 232759.522458042,608185.44129981 232759.703231379,608184.14229981 232760.699231379,608182.886570303 232761.843969749,608181.687570304 232763.139969749,608181.22847892 232763.67260796,608180.42847892 232764.66960796,608179.858432409 232765.455309771,608178.358432409 232767.749309771,608177.208866262 232770.158326897,608176.423806436 232772.597585011,608175.293459778 232775.973591282,608174.049987187 232779.306059652,608173.915941397 232779.688822013,608172.610118269 232783.674881838,608171.358158326 232786.308722097,608170.054572148 232788.331453316,608168.913948349 232789.906391562,608168.701769076 232790.211115131,608167.680438217 232791.737583818,608166.577066737 232793.176210477,608165.151603685 232795.743054018,608164.851603685 232796.541054018,608164.778437732 232796.742184012,608164.076437732 232798.738184012,608163.624968813 232800.54399523,608163.120968813 232803.83899523,608163.108879813 232803.920261728,608162.925945282 232805.185709834,608162.55058234 232806.353453652,608161.075827716 232809.639158432,608161.048655952 232809.700241976,608159.34600946 232813.562595914,608157.687201748 232816.86943986,608155.976645839 232819.548849425,608154.233879021 232822.042521424,608153.229980728 232823.09362654,608151.853693563 232824.191130156,608149.914535921 232825.306369894,608149.178055629 232825.773820048,608145.182055629 232828.561820048,608143.84372181 232829.681159005,608141.54472181 232831.973159005,608139.796443689 232834.32115001,608138.483737269 232836.763780944,608136.899264506 232839.221474252,608136.239849333 232840.416118766,608135.03235409 232843.007318235,608133.899053167 232845.179841296,608132.249281488 232848.139047138,608131.039343484 232849.814811275,608129.516392889 232851.586648737,608127.993083931 232853.974130877,608124.689083931 232861.258130877,608124.027666429 232863.248986156,608123.752768352 232864.50378931,608122.769823776 232866.65815252,608120.614372939 232870.95500912,608119.179758916 232873.622703506,608118.537877059 232875.085763736,608116.532877059 232880.873763736,608115.982006187 232884.135876536,608115.980006187 232885.933876536,608116.142047957 232887.737958339,608116.834047957 232891.534958339,608116.949279194 232892.080525204,608118.37336719 232898.001355121,608118.501771671 232899.310294671,608118.581742247 232899.927275511,608119.355845234 232904.723774398,608119.64361318 232906.76500058,608119.459816017 232908.145845011,608118.869921339 232909.79072099,608117.825430747 232912.438912199,608117.149864034 232915.44708954,608116.958681912 232918.333473283,608116.826800746 232919.550436119,608116.669495966 232919.941932803,608116.343456887 232920.357501234,608115.002291135 232921.519572647,608112.577617211 232923.373068797,608110.129995544 232924.94178769,608109.726850888 232925.2142295,608107.436263799 232926.844747517,608097.097421673 232932.418756744,608095.096074456 232933.840011198,608091.74780203 232936.900650546,608089.513271348 232938.682550113,608089.331308794 232938.831184228,608086.282236329 232941.382087282,608083.45774781 232943.685711677,608080.891404814 232945.348213723,608079.241814275 232945.9407628,608077.145780802 232946.285786006,608075.716882853 232946.630475351,608072.622882853 232947.622475351,608071.462396875 232948.076066837,608069.964396875 232948.772066837,608066.891039363 232950.992627589,608065.948955538 232951.995045001,608065.29529981 232952.496231379,608065.230620811 232952.546244767) - - - - -LINESTRING (608068.370872917 232972.36097836,608070.166872917 232972.16497836,608075.231379189 232970.109755232,608077.497141918 232968.342894131,608078.76370019 232967.371768621,608079.965960637 232966.28437241,608079.983992397 232966.265185849,608081.121368857 232965.900519576,608083.389219198 232965.527213994,608085.145610267 232965.071241906,608088.739610267 232963.780241906,608090.795954513 232962.761825842,608094.790954513 232960.173825842,608095.67433878 232959.530407571,608098.97133878 232956.841407571,608099.067691206 232956.761815772,608102.074583037 232954.246201715,608104.480728653 232952.327449887,608104.992925544 232951.889988802,608107.677133752 232949.436367288,608117.474578327 232944.154243256,608118.528149112 232943.4987705,608121.126891814 232941.648896807,608123.718004456 232939.98821231,608124.395123463 232939.513631609,608127.392123463 232937.222631609,608127.867429266 232936.835650041,608130.166429266 232934.843650041,608131.48558666 232933.45860724,608133.28458666 232931.16560724,608134.695984788 232928.721329559,608135.898984788 232925.727329559,608136.561792876 232923.076383133,608136.864792876 232920.280383133,608136.901135966 232919.86391046,608137.003020658 232918.32570012,608137.532569253 232916.983087801,608137.642990119 232916.689739477,608138.644990119 232913.895739477,608139.144575395 232911.839412381,608139.649575395 232908.045412381,608139.639083207 232905.3300243,608139.146083207 232901.8330243,608139.116257753 232901.635724489,608138.37584393 232897.047970481,608138.210228329 232895.359705329,608137.980720806 232893.997474796,608136.459944629 232887.674651272,608136.074885425 232885.561833643,608137.173806645 232882.389486501,608138.296241084 232880.302296494,608138.427420897 232880.049818894,608140.729420897 232875.460818894,608140.888787693 232875.127934725,608142.390787693 232871.835934725,608143.061333571 232869.825013844,608143.338616934 232868.559322785,608145.616019298 232863.53856043,608146.482607111 232862.530351263,608147.006564018 232861.865836836,608148.806564018 232859.372836836,608149.433335063 232858.388434362,608151.435335063 232854.797434362,608151.56716538 232854.55305259,608152.86816538 232852.05905259,608153.066150667 232851.657881234,608154.07929215 232849.4837512,608155.508735494 232847.266525748,608155.912556311 232846.58184999,608156.713124455 232845.092185215,608157.344121525 232844.463109406,608160.263907892 232842.42598118,608162.481464079 232841.150630106,608163.730728653 232840.300449886,608166.228728653 232838.308449886,608167.225594128 232837.396811592,608169.224594128 232835.303811592,608170.189646212 232834.125437036,608172.489646212 232830.834437036,608172.721801936 232830.487012722,608174.822801936 232827.196012722,608175.332441239 232826.298778341,608177.334441239 232822.307778341,608177.546344048 232821.857758024,608179.335860262 232817.798345204,608181.024172284 232814.036841568,608181.421245911 232813.002215319,608182.223245911 232810.507215319,608182.600120187 232808.877738272,608182.897242611 232806.822396355,608183.253696096 232804.492010974,608183.381088971 232804.129794196,608183.746933263 232803.652789523,608184.123230924 232803.127884869,608185.220970503 232801.487216638,608186.412051651 232799.842608438,608186.718618993 232799.394155097,608188.518618993 232796.601155097,608189.144597485 232795.477046338,608190.946597485 232791.686046338,608191.418058603 232790.506177987,608192.85891729 232786.107918524,608194.091012813 232782.805940348,608194.204601822 232782.484942943,608195.407601822 232778.891942943,608195.444133738 232778.780673103,608195.834558178 232777.567585958,608196.331634073 232776.807391222,608196.607344754 232776.463786786,608196.988369906 232776.051936413,608197.490411287 232775.666999373,608199.165382254 232774.461541958,608199.312449754 232774.353649671,608201.310449754 232772.859649671,608202.383614525 232771.931508477,608203.882614525 232770.436508477,608205.519486448 232768.289186953,608208.121486448 232763.701186953,608209.422486448 232761.407186953,608209.46097953 232761.338687934,608209.771366011 232760.781233815,608210.505021309 232760.359459706,608210.652809098 232760.272804634,608212.428988625 232759.210795809,608215.934859151 232757.845705108,608221.75069908 232756.007126481,608226.866122533 232754.920899712,608228.438001874 232754.44946644,608231.732001874 232753.15846644,608234.31821992 232751.666058106,608237.81521992 232748.877058106,608238.06139271 232748.67421822,608242.15839271 232745.18721822,608242.73732316 232744.653796162,608246.03532316 232741.365796162,608246.543846492 232740.819484893,608249.584050546 232737.29857739,608252.023039032 232734.574601054,608252.702457803 232733.727393841,608254.574940724 232731.113407683,608258.038753537 232726.699668989,608258.876054731 232725.449355689,608264.180054731 232716.072355689,608265.26680032 232713.18375529,608266.57380032 232706.89475529,608266.770364715 232705.362539602,608266.967124015 232701.452187302,608267.256138016 232698.140371129,608267.272002007 232696.608070174,608266.980002007 232692.213070174,608266.918716402 232691.588080825,608266.435437798 232687.8669336,608265.952028152 232683.646924598,608265.870345646 232683.078664868,608265.260662054 232679.558006439,608265.00384018 232676.143064381,608264.738120537 232674.486503765,608263.792061254 232670.670763148,608263.064162953 232667.181998057,608262.476863833 232663.959491183,608262.239032956 232661.29319672,608262.092813931 232658.582868819,608262.134449369 232658.111957661,608262.594133738 232656.683673103,608262.773765634 232656.055969043,608263.139410584 232654.600160444,608264.05373316 232653.005093015,608264.439021843 232652.262588986,608266.442021843 232647.972588986,608266.597690265 232647.621770684,608267.899690265 232644.528770684,608267.979387236 232644.333723105,608269.194827113 232641.267224093,608271.33372717 232637.64277886,608274.405536954 232634.113337562,608275.222954542 232633.583529866,608276.063916811 232632.974200514,608278.161916811 232631.281200514,608279.113594128 232630.405811592,608281.028659744 232628.400692865,608282.441614525 232626.991508477,608283.479051651 232625.776608438,608284.779051651 232623.981608438,608285.415827558 232622.9827563,608286.355205828 232621.296572304,608287.063743037 232620.096093677,608287.064006874 232620.095947819,608288.084450372 232619.689569278,608289.739077341 232619.374584414,608289.811255347 232619.36056901,608292.306255347 232618.86656901,608293.285436581 232618.620744471,608295.881436581 232617.827744471,608297.55974464 232617.14332144,608300.05574464 232615.85032144,608301.690728653 232614.789449887,608304.188728653 232612.797449887,608305.015220914 232612.059901017,608306.814220914 232610.265901017,608307.102956457 232609.965718257,608309.401956457 232607.473718257,608310.430194015 232606.152474796,608311.609837294 232604.342176072,608312.664783823 232602.869470717,608314.801039032 232600.483601054,608314.898304949 232600.373349686,608317.497304949 232597.383349686,608318.945440773 232595.191300046,608320.447440773 232592.098300046,608320.889794632 232591.035757476,608322.392794632 232586.744757476,608322.894626529 232584.536189343,608323.40162653 232579.943189343,608323.461987502 232578.861810257,608323.467987502 232575.066810257,608323.472555135 232572.025548588,608323.483409917 232571.969659385,608323.93451357 232571.173287936,608324.833832053 232569.65046593,608326.076028259 232567.648618967,608327.2758354 232564.819641386,608327.7788354 232562.823641386,608327.923894627 232562.151188908,608328.182864715 232560.712180172,608331.659449934 232556.01260953,608333.854846816 232553.540928432,608334.945827368 232552.690172492,608336.165004362 232551.960913177,608337.94766714 232551.279024064,608338.722108605 232550.944700793,608342.018108605 232549.353700793,608343.907254598 232548.165232796,608346.404254598 232546.173232796,608348.275564017 232544.209836836,608350.075564018 232541.716836836,608350.90537049 232540.348912251,608352.20737049 232537.754912251,608352.682990119 232536.644739477,608353.658406692 232533.924865321,608354.871344446 232530.703276821,608355.22182074 232530.07480035,608355.704847018 232529.407852528,608356.064015167 232529.049682623,608356.616893295 232528.719107115,608357.936277971 232528.262839069,608358.01576869 232528.234974308,608360.273150392 232527.432977874,608362.712296487 232526.868594487,608363.338945787 232526.7020196,608366.424474441 232525.77373821,608370.450298729 232524.751336422,608374.4879704 232523.774719038,608375.981779632 232523.2863417,608380.274779632 232521.4983417,608381.616770026 232520.816702726,608386.210770026 232518.029702726,608388.958933263 232515.565789523,608390.258933263 232513.870789523,608391.54898417 232511.645008688,608393.05198417 232508.053008688,608393.310025316 232507.366677811,608394.312025316 232504.372677811,608394.587794154 232503.382102532,608395.390681893 232499.793074502,608396.765612242 232493.676193761,608399.016248358 232493.337936536,608399.059908359 232493.331276075,608404.149908359 232492.543276075,608404.86197366 232492.406437605,608410.342088963 232491.145716982,608415.022662201 232490.179512238,608416.34876869 232489.808974308,608421.93876869 232487.822974308,608423.293468396 232487.225349341,608427.587468396 232484.937349341,608429.53736659 232483.578325652,608438.930366591 232475.209325652,608440.338560769 232473.661391682,608444.438560768 232468.077391682,608444.602122364 232467.847920051,608448.603122364 232462.063920051,608449.410597485 232460.668046338,608452.968959441 232453.182058451,608456.22429059 232446.693078648,608456.391524211 232446.34293624,608460.167922176 232438.024935887,608463.880764256 232430.138683669,608468.240282024 232421.544611508,608473.314496319 232413.240394715,608476.88493975 232407.504483789,608480.098468429 232402.379538708,608483.37240721 232398.20683596,608483.8857984 232397.48947598,608489.9877984 232388.11547598,608490.386832989 232387.446912647,608492.888832989 232382.857912647,608493.22303756 232382.18613297,608494.884084673 232378.50730998,608497.024101617 232374.52011073,608497.151420897 232374.274818894,608499.406531303 232369.779292546,608501.156759057 232366.465050079,608502.722248571 232364.037280944,608502.790657901 232363.917493372,608504.015277578 232364.1987671,608518.768603014 232373.842413073,608519.287579932 232374.159550603,608534.476494346 232382.818134361,608539.326958816 232386.31318695,608539.949040832 232386.727030586,608546.328040832 232390.635030586,608547.1176306 232391.07105573,608552.562614221 232393.764899156,608558.193409183 232397.62816794,608564.210895584 232401.891585267,608564.257770571 232401.924595002,608569.839770571 232405.831595002,608570.121740008 232406.021890968,608575.204740008 232409.327890968,608576.336692231 232409.963588625,608584.711692231 232413.975588625) - - - -SAFE test 16595 line 17 - -LINESTRING(609316.693 232664.454 1574.08996582031,609314.198 232664.449 1576.58501397663,609310.605 232665.44 1580.31223954877,609306.013 232666.729 1585.0818068008,609302.821 232666.223 1588.31371974088,609299.429 232665.417 1591.80022521322,609295.64 232664.21 1595.77689680241,609292.151 232662.105 1599.85178579216,609289.559 232660.402 1602.95323798033,609284.274 232658.793 1608.47783403638,609279.188 232656.785 1613.9459684638,609274.103 232654.777 1619.41317275522,609269.317 232652.47 1624.72627178568,609264.231 232650.961 1630.03150037809,609260.244 232648.656 1634.6369240884,609256.456 232646.051 1639.23428202346,609252.668 232644.246 1643.43042048197,609249.081 232641.242 1648.1092389351,609246.789 232639.24 1651.15252471111,609245.296 232636.64 1654.15075083655,609243.805 232633.641 1657.5) - - - -LINESTRING (609316.71304004 232654.45402008,609314.21804004 232654.44902008,609311.539139895 232654.808955242,609307.946139895 232655.799955242,609307.902402002 232655.812125673,609305.417309672 232656.509704944,609304.762544835 232656.405910769,609302.10630535 232655.774740655,609299.797443009 232655.039243995,609297.481441016 232653.641942707,609295.050071107 232652.044480147,609292.471480493 232650.835524297,609287.571702984 232649.343803954,609282.860561445 232647.483801553,609278.115878653 232645.610188368,609273.659173714 232643.461918771,609272.161412958 232642.883065405,609268.210779581 232641.710925066,609265.587899278 232640.194562112,609262.122395972 232637.811342441,609260.757648365 232637.023496395,609258.115457869 232635.764480068,609255.581235013 232633.642147907,609254.627722574 232632.809280585,609254.117076832 232631.920011376,609252.75940057 232629.189178976) - - - - -LINESTRING (609234.85059943 232638.092821024,609236.34159943 232641.091821024,609236.624055813 232641.619697181,609238.117055813 232644.219697181,609240.210470187 232646.771463702,609242.502470187 232648.773463702,609242.660464605 232648.908598023,609246.247464605 232651.912598023,609248.366351635 232653.273503605,609251.440843269 232654.738513478,609254.577604028 232656.895657559,609255.238945079 232657.31333361,609259.225945079 232659.61833361,609261.386587042 232660.547934595,609265.700394399 232661.827827497,609269.760826286 232663.785081229,609270.43012696 232664.078075402,609275.51512696 232666.086075402,609280.60175172 232668.094322087,609281.361519507 232668.359475703,609285.270262501 232669.54947901,609286.659928893 232670.462519853,609286.985125771 232670.667344507,609290.474125771 232672.772344506,609292.604745905 232673.738233445,609296.393745905 232674.945233445,609297.117189665 232675.146107512,609300.509189665 232675.952107512,609301.255336693 232676.099674461,609304.447336693 232676.605674461,609308.715597998 232676.356874327,609313.285742868 232675.074009184,609315.541957617 232674.451713382,609316.67295996 232674.45397992) - - - -SAFE test 16595 line 18 - -LINESTRING(608928.229 232496.454 2038.69995117188,608923.439 232496.744 2043.49616183397,608919.148 232497.434 2047.83996582031) - - - -LINESTRING (608927.624678561 232486.472276922,608922.834678561 232486.762276922,608921.851377939 232486.870831502,608917.560377939 232487.560831502) - - - - -LINESTRING (608920.735622061 232507.307168498,608924.537659798 232506.69579445,608928.833321439 232506.435723078) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/safe/16596.xml geos-3.8.0/tests/xmltester/tests/safe/16596.xml --- geos-3.7.1/tests/xmltester/tests/safe/16596.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/safe/16596.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,1548 +0,0 @@ - - -SAFE test 16596 line 1 - -LINESTRING (658588.69478542 2088471.45516372,658599.81438543 2088528.25234777,658608.877809439 2088556.1276758,658620.369153449 2088574.02309982,658620.83814545 2088606.26271585,658625.151233454 2088642.98642788,658627.046657455 2088688.57797992,658622.179585451 2088709.65087594,658607.897841438 2088739.52709997,658598.270193429 2088770.558396,658598.120689429 2088786.11910001,658605.639921436 2088812.86802804) - - - -LINESTRING (658612.378734295 2088810.97372045,658605.129968417 2088785.18694906,658605.260007681 2088771.6521774,658614.432728887 2088742.08717598,658628.495091372 2088712.66987991,658629.00003324 2088711.22615114,658633.867105245 2088690.15325512,658634.04061589 2088688.28721297,658632.145191888 2088642.69566093,658632.103448984 2088642.16991136,658627.832188998 2088605.80234325,658627.368412906 2088573.92128109,658626.259326974 2088570.24079155,658615.255681816 2088553.104859,658606.60248678 2088526.49122492,658595.564371963 2088470.11025453) - - - - -LINESTRING (658581.825198876 2088472.80007291,658592.944798886 2088529.59725696,658593.157423756 2088530.41680181,658602.220847765 2088558.29212984,658602.987635914 2088559.90998407,658613.398967634 2088576.12350927,658613.838885993 2088606.36453457,658613.885929919 2088607.07923236,658618.168236492 2088643.54085644,658620.013422386 2088687.92400694,658615.532270894 2088707.32598812,658601.582335516 2088736.508096,658601.212224526 2088737.45284673,658591.584576517 2088768.48414276,658591.27051649 2088770.49114456,658591.12101249 2088786.05184858,658591.381876569 2088788.0134076,658598.901108576 2088814.76233563) - - - -SAFE test 16596 line 2 - -LINESTRING (658513.98065735 2088478.52178773,658522.161393358 2088517.50444376,658531.288305366 2088538.71148378,658544.346369378 2088555.5102038,658565.913841399 2088576.83602782,658578.21515341 2088591.40447583,658588.83404942 2088619.29516386,658590.899457422 2088647.10393188,658590.612737422 2088677.11327591,658584.637697416 2088732.63455596) - - - -LINESTRING (658591.59751109 2088733.38355104,658597.572551096 2088677.86227098,658597.612417943 2088677.18015336,658597.899137944 2088647.17080933,658597.880229869 2088646.58545716,658595.814821867 2088618.77668914,658595.375941612 2088616.8044518,658584.757045602 2088588.91376378,658583.563531656 2088586.88841005,658571.262219644 2088572.31996204,658570.835625365 2088571.85847394,658549.592827722 2088550.85368656,658537.36429324 2088535.12212583,658528.868239003 2088515.38092946,658520.83143047 2088477.08411333) - - - - -LINESTRING (658507.12988423 2088479.95946212,658515.310620238 2088518.94211816,658515.731576914 2088520.27165545,658524.858488923 2088541.47869547,658525.761627221 2088543.00750854,658538.819691233 2088559.80622855,658539.424585411 2088560.48775767,658560.768391846 2088581.59242212,658572.09752179 2088595.00951458,658581.92889485 2088620.83176189,658583.896976786 2088647.33012635,658583.616324804 2088676.70436562,658577.677883741 2088731.88556089) - - - -SAFE test 16596 line 3 - -LINESTRING (658719.186161541 2088486.04613973,658724.850929547 2088543.90111579) - - - -LINESTRING (658731.817614393 2088543.21898512,658726.152846388 2088485.36400907) - - - - -LINESTRING (658712.219476695 2088486.7282704,658717.8842447 2088544.58324646) - - - -SAFE test 16596 line 4 - -LINESTRING (659042.039025842 2088469.14604372,659035.357441836 2088516.87877976,659024.992513826 2088543.45567579) - - - -LINESTRING (659031.514100815 2088545.99907964,659041.879028825 2088519.42218361,659042.289853984 2088517.84917237,659048.97143799 2088470.11643632) - - - - -LINESTRING (659035.106613694 2088468.17565111,659028.538485803 2088515.09786516,659018.470926837 2088540.91227194) - - - -SAFE test 16596 line 5 - -LINESTRING (658743.362801564 2088478.49721173,658789.830897607 2088497.83954774,658823.805169639 2088522.62137177) - - - -LINESTRING (658827.930343794 2088516.96602579,658793.956071763 2088492.18420176,658792.520909691 2088491.37705326,658746.052813648 2088472.03471724) - - - - -LINESTRING (658740.67278948 2088484.95970621,658786.375507649 2088503.98345384,658819.679995483 2088528.27671775) - - - -SAFE test 16596 line 6 - -LINESTRING (659042.039025842 2088469.14604372,659119.584497914 2088491.01458774,659167.627505959 2088508.15225175,659184.710897975 2088510.54124376) - - - -LINESTRING (659185.680365075 2088503.60870212,659169.30551307 2088501.31879445,659121.936351023 2088484.42150144,659121.484457046 2088484.27736611,659043.938984974 2088462.40882209) - - - - -LINESTRING (659040.13906671 2088475.88326535,659117.456148718 2088497.68740125,659165.27565285 2088514.74533805,659166.658038858 2088515.08479339,659183.741430874 2088517.47378539) - - - -SAFE test 16596 line 7 - -LINESTRING (658743.362801564 2088478.49721173,658719.186161541 2088486.04613973) - - - -LINESTRING (658721.272507222 2088492.7279929,658745.449147245 2088485.17906489) - - - - -LINESTRING (658741.276455883 2088471.81535856,658717.099815861 2088479.36428657) - - - -SAFE test 16596 line 8 - -LINESTRING (658710.132977533 2088457.05772371,658719.186161541 2088486.04613973) - - - -LINESTRING (658725.867895062 2088483.95941092,658716.814711054 2088454.97099489) - - - - -LINESTRING (658703.451244012 2088459.14445252,658712.50442802 2088488.13286855) - - - -SAFE test 16596 line 9 - -LINESTRING (658588.69478542 2088471.45516372,658513.98065735 2088478.52178773) - - - -LINESTRING (658514.639790838 2088485.49068599,658589.353918907 2088478.42406199) - - - - -LINESTRING (658588.035651932 2088464.48626545,658513.321523863 2088471.55288946) - - - -SAFE test 16596 line 10 - -LINESTRING (658879.670529691 2088454.2417237,658872.640753684 2088457.50828371,658842.286337656 2088460.55161171,658804.923649621 2088464.63839571,658784.708849602 2088464.44383571,658769.915121589 2088466.52460372,658743.362801564 2088478.49721173) - - - -LINESTRING (658746.240162862 2088484.87849623,658771.880617381 2088473.31705411,658785.165189071 2088471.44855202,658804.856280321 2088471.63807152,658805.68477993 2088471.59689272,658843.016076514 2088467.51354236,658873.33907138 2088464.47336464,658875.590564811 2088463.85640267,658882.620340818 2088460.58984266) - - - - -LINESTRING (658876.720718563 2088447.89360475,658870.764519778 2088450.66130043,658841.588019961 2088453.58653078,658841.525207347 2088453.5931147,658804.575547015 2088457.63472114,658784.776218902 2088457.44415991,658783.733881993 2088457.51206551,658768.940153979 2088459.59283351,658767.03776029 2088460.14331921,658740.485440266 2088472.11592722) - - - -SAFE test 16596 line 11 - -LINESTRING (658879.670529691 2088454.2417237,658924.572929733 2088474.68178772) - - - -LINESTRING (658927.473063731 2088468.31082054,658882.57066369 2088447.87075653) - - - - -LINESTRING (658876.770395692 2088460.61269088,658921.672795734 2088481.0527549) - - - -SAFE test 16596 line 12 - -LINESTRING (658710.132977533 2088457.05772371,658588.69478542 2088471.45516372) - - - -LINESTRING (658589.51891797 2088478.40648054,658710.957110083 2088464.00904053) - - - - -LINESTRING (658709.308844983 2088450.10640689,658587.87065287 2088464.5038469) - - - -SAFE test 16596 line 13 - -LINESTRING (658582.165761414 2088422.48441167,658582.059249414 2088433.59890768,658588.69478542 2088471.45516372) - - - -LINESTRING (658595.589667793 2088470.24661208,658589.065086394 2088433.02336083,658589.165440006 2088422.55149072) - - - - -LINESTRING (658575.166082821 2088422.41733263,658575.059570821 2088433.53182864,658575.164367041 2088434.80745932,658581.799903047 2088472.66371536) - - - -SAFE test 16596 line 14 - -LINESTRING (659050.37132985 2088411.42418766,659042.039025842 2088469.14604372) - - - -LINESTRING (659048.967214278 2088470.14614621,659057.299518285 2088412.42429016) - - - - -LINESTRING (659043.443141414 2088410.42408517,659035.110837406 2088468.14594122) - - - -SAFE test 16596 line 15 - -LINESTRING (658986.953985791 2088456.38700371,659042.039025842 2088469.14604372) - - - -LINESTRING (659043.618578873 2088462.32658537,658988.533538822 2088449.56754535) - - - - -LINESTRING (658985.374432759 2088463.20646206,659040.459472811 2088475.96550207) - - - -SAFE test 16596 line 16 - -LINESTRING (658582.165761414 2088422.48441167,658551.800049385 2088426.63980368,658502.76478534 2088431.72805968) - - - -LINESTRING (658503.487276951 2088438.69067456,658552.522540997 2088433.60241855,658552.749118335 2088433.57516727,658583.114830363 2088429.41977526) - - - - -LINESTRING (658581.216692464 2088415.54904808,658550.964046971 2088419.68896751,658502.042293728 2088424.76544481) - - - -SAFE test 16596 line 17 - -LINESTRING (658646.889713474 2088403.09599566,658593.966337425 2088408.14738766,658586.127601417 2088414.74092367,658582.165761414 2088422.48441167) - - - -LINESTRING (658588.397480462 2088425.67277767,658591.715410208 2088419.18782391,658596.802945502 2088414.9084545,658647.554821637 2088410.06432624) - - - - -LINESTRING (658646.224605311 2088396.12766507,658593.301229262 2088401.17905708,658591.258177366 2088401.6924772,658589.460388674 2088402.79048316,658581.621652666 2088409.38401916,658579.895882369 2088411.55255768,658575.934042365 2088419.29604568) - - - -SAFE test 16596 line 18 - -LINESTRING (659066.742001865 2088407.13669966,659059.712241858 2088410.40325966,659050.37132985 2088411.42418766) - - - -LINESTRING (659051.131875469 2088418.3827486,659060.472787478 2088417.3618206,659062.662058507 2088416.75137606,659069.691818514 2088413.48481605) - - - - -LINESTRING (659063.792185216 2088400.78858327,659057.80684426 2088403.56982692,659049.61078423 2088404.46562672) - - - -SAFE test 16596 line 19 - -LINESTRING (659036.515569837 2088396.84037965,659041.094897841 2088405.77682766,659050.37132985 2088411.42418766) - - - -LINESTRING (659054.011351724 2088405.44503716,659046.423211801 2088400.82548539,659042.745272805 2088393.64807626) - - - - -LINESTRING (659030.285866869 2088400.03268304,659034.865194873 2088408.96913105,659037.454875967 2088411.75597816,659046.731307976 2088417.40333817) - - - -SAFE test 16596 line 20 - -LINESTRING (658803.90270562 2088409.05055566,658785.232113603 2088409.98239566) - - - -LINESTRING (658785.581045819 2088416.97369356,658804.251637836 2088416.04185356) - - - - -LINESTRING (658803.553773404 2088402.05925776,658784.883181387 2088402.99109776) - - - -SAFE test 16596 line 21 - -LINESTRING (658884.018433695 2088406.48645966,658803.90270562 2088409.05055566) - - - -LINESTRING (658804.126625279 2088416.04697332,658884.242353354 2088413.48287731) - - - - -LINESTRING (658883.794514035 2088399.49004201,658803.678785961 2088402.05413801) - - - -SAFE test 16596 line 22 - -LINESTRING (658885.904641696 2088372.04626763,658823.715057639 2088370.33618763,658818.239745633 2088373.61810763,658807.940337624 2088393.52671565,658803.90270562 2088409.05055566) - - - -LINESTRING (658810.67731078 2088410.81257863,658814.517690904 2088396.04713032,658823.543624862 2088378.60012938,658825.563097716 2088377.38965072,658885.712229461 2088379.04362267) - - - - -LINESTRING (658886.097053932 2088365.04891259,658823.907469874 2088363.33883259,658820.116222031 2088364.33215712,658814.640910026 2088367.61407713,658812.022458177 2088370.40169088,658801.723050168 2088390.3102989,658801.165732464 2088391.76469268,658797.12810046 2088407.2885327) - - - -SAFE test 16596 line 23 - -LINESTRING (658885.904641696 2088372.04626763,658884.018433695 2088406.48645966) - - - -LINESTRING (658891.007959023 2088406.86925946,658892.894167025 2088372.42906743) - - - - -LINESTRING (658878.915116368 2088371.66346783,658877.028908367 2088406.10365986) - - - -SAFE test 16596 line 24 - -LINESTRING (658576.254193408 2088390.19257164,658528.730353364 2088399.74137165,658516.237569352 2088405.17983566,658498.344177336 2088406.11986766) - - - -LINESTRING (658498.711416942 2088413.11022781,658516.604808959 2088412.17019581,658519.031598067 2088411.59804441,658530.840518733 2088406.45728556,658577.633119837 2088397.05541085) - - - - -LINESTRING (658574.87526698 2088383.32973244,658527.351426935 2088392.87853245,658525.936324649 2088393.3231629,658514.605158943 2088398.25594144,658497.976937729 2088399.12950751) - - - -SAFE test 16596 line 25 - -LINESTRING (659041.341697841 2088380.21369164,659036.612865837 2088386.83692364,659036.515569837 2088396.84037965) - - - -LINESTRING (659043.515238761 2088396.9084601,659043.591089527 2088389.10988874,659047.038665203 2088384.28119245) - - - - -LINESTRING (659035.64473048 2088376.14619082,659030.915898476 2088382.76942283,659029.957042517 2088384.66897163,659029.613196912 2088386.76884319,659029.515900912 2088396.7722992) - - - -SAFE test 16596 line 26 - -LINESTRING (659010.944257813 2088387.70117964,659036.515569837 2088396.84037965) - - - -LINESTRING (659038.871430803 2088390.24872439,659013.300118779 2088381.10952438) - - - - -LINESTRING (659008.588396847 2088394.29283491,659034.159708871 2088403.43203491) - - - -SAFE test 16596 line 27 - -LINESTRING (658885.969153697 2088365.37695562,658964.32563377 2088383.91647564,659002.348785805 2088392.06444365,659010.944257813 2088387.70117964) - - - -LINESTRING (659007.775752529 2088381.45933903,659001.391146847 2088384.70031522,658965.865039028 2088377.08743795,658887.580887757 2088358.56503127) - - - - -LINESTRING (658884.357419636 2088372.18887997,658962.713899709 2088390.72839999,658962.858904381 2088390.76108702,659000.882056417 2088398.90905502,659003.251472599 2088399.00599654,659005.517291089 2088398.30628426,659014.112763097 2088393.94302026) - - - -SAFE test 16596 line 28 - -LINESTRING (658733.993217555 2088320.56466758,658765.019377584 2088328.64402759,658785.170673603 2088335.50687559,659010.944257813 2088387.70117964) - - - -LINESTRING (659012.520933138 2088380.88105538,658787.092253745 2088328.76648638,658767.276058773 2088322.01776242,658766.783382737 2088321.86993829,658735.757222708 2088313.79057828) - - - - -LINESTRING (658732.229212402 2088327.33875688,658763.006316968 2088335.35326166,658782.913992414 2088342.13314076,658783.593998278 2088342.32699985,659009.367582488 2088394.5213039) - - - -SAFE test 16596 line 29 - -LINESTRING (659055.401201854 2088373.67954763,659066.243313864 2088378.23122763,659072.38833787 2088386.07097164) - - - -LINESTRING (659077.897606519 2088381.75264338,659071.752582513 2088373.91289937,659068.952925589 2088371.77692641,659058.110813579 2088367.2252464) - - - - -LINESTRING (659052.691590129 2088380.13384885,659061.85631881 2088383.98133837,659066.879069222 2088390.3892999) - - - -SAFE test 16596 line 30 - -LINESTRING (659055.401201854 2088373.67954763,659047.615729847 2088374.71583563,659041.341697841 2088380.21369164) - - - -LINESTRING (659045.95506798 2088385.47836788,659050.637300688 2088381.37538575,659056.324793594 2088380.61835) - - - - -LINESTRING (659054.477610115 2088366.74074526,659046.692138107 2088367.77703326,659043.002359708 2088369.45115939,659036.728327702 2088374.94901539) - - - -SAFE test 16596 line 31 - -LINESTRING (659025.802481827 2088378.95212363,659041.341697841 2088380.21369164) - - - -LINESTRING (659041.908136702 2088373.23664735,659026.368920688 2088371.97507934) - - - - -LINESTRING (659025.236042966 2088385.92916792,659040.77525898 2088387.19073592) - - - -SAFE test 16596 line 32 - -LINESTRING (658736.432369557 2088309.47269957,658785.288449603 2088323.28031558,659025.802481827 2088378.95212363) - - - -LINESTRING (659027.381036091 2088372.13243402,658787.030607875 2088316.4984954,658738.336127704 2088302.73655045) - - - - -LINESTRING (658734.528611411 2088316.20884869,658783.384691456 2088330.0164647,658783.709895339 2088330.1000052,659024.223927563 2088385.77181325) - - - -SAFE test 16596 line 33 - -LINESTRING (659076.181233874 2088234.9347155,659073.633537871 2088257.14117952,659054.753009854 2088360.33477962,659055.401201854 2088373.67954763) - - - -LINESTRING (659062.392958847 2088373.33993881,659061.7839081 2088360.80099831,659080.519236605 2088258.4010021,659080.587919182 2088257.93903952,659083.135615184 2088235.7325755) - - - - -LINESTRING (659069.226852563 2088234.1368555,659066.705788015 2088256.11119196,659047.86731112 2088359.07495703,659047.761252861 2088360.67438844,659048.409444861 2088374.01915645) - - - -SAFE test 16596 line 34 - -LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) - - - -LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) - - - - -LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) - - - -SAFE test 16596 line 35 - -LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) - - - -LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) - - - - -LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) - - - -SAFE test 16596 line 36 - -LINESTRING (658733.993217555 2088320.56466758,658749.415681569 2088334.05177159,658786.640129604 2088344.4136276,658831.650033646 2088353.73817161,658885.969153697 2088365.37695562) - - - -LINESTRING (658887.435733537 2088358.5323122,658833.116613487 2088346.89352819,658833.07004718 2088346.88371601,658788.290580457 2088337.60691089,658752.825874018 2088327.73489933,658738.60128825 2088315.29535221) - - - - -LINESTRING (658729.38514686 2088325.83398295,658744.807610874 2088339.32108696,658747.538519906 2088340.79538072,658784.762967941 2088351.15723673,658785.22011607 2088351.2680832,658830.206720283 2088360.58780027,658884.502573856 2088372.22159904) - - - -SAFE test 16596 line 37 - -LINESTRING (658716.931329539 2088315.95461958,658719.071489541 2088335.98303559) - - - -LINESTRING (658726.031864704 2088335.2392765,658723.891704702 2088315.21086048) - - - - -LINESTRING (658709.970954376 2088316.69837867,658712.111114378 2088336.72679469) - - - -SAFE test 16596 line 38 - -LINESTRING (658925.925633734 2088253.49369152,658910.66086572 2088304.47865156,658911.38481772 2088310.04306757,658923.706609732 2088322.38943558,658939.214081746 2088326.98514759,658971.848945777 2088329.52261959) - - - -LINESTRING (658972.391581848 2088322.5436837,658940.49401693 2088320.06353922,658927.4031826 2088316.18400912,658918.019483354 2088306.78159394,658917.794987784 2088305.05608349,658932.631528772 2088255.50141952) - - - - -LINESTRING (658919.219738696 2088251.48596351,658903.954970682 2088302.47092356,658903.719368599 2088305.38176713,658904.4433206 2088310.94618314,658905.102814348 2088313.13117923,658906.430141456 2088314.98788133,658918.751933467 2088327.33424934,658921.717631171 2088329.10091562,658937.225103185 2088333.69662762,658938.671445674 2088333.96408347,658971.306309705 2088336.50155547) - - - -SAFE test 16596 line 39 - -LINESTRING (658716.931329539 2088315.95461958,658733.993217555 2088320.56466758) - - - -LINESTRING (658735.819110824 2088313.80699684,658718.757222808 2088309.19694884) - - - - -LINESTRING (658715.10543627 2088322.71229031,658732.167324286 2088327.32233832) - - - -SAFE test 16596 line 40 - -LINESTRING (658714.715393537 2088303.70655556,658716.931329539 2088315.95461958) - - - -LINESTRING (658723.819503587 2088314.70840198,658721.603567585 2088302.46033797) - - - - -LINESTRING (658707.827219489 2088304.95277316,658710.043155492 2088317.20083717) - - - -SAFE test 16596 line 41 - -LINESTRING (658503.04844934 2088239.4300755,658513.146097349 2088240.63839551,658548.007169382 2088254.31084352,658565.794049398 2088264.48530753,658627.772673456 2088288.42233155,658716.931329539 2088315.95461958) - - - -LINESTRING (658718.99670384 2088309.26625438,658630.069070018 2088281.80530627,658568.810029811 2088258.14619574,658551.482853956 2088248.23469204,658550.563015286 2088247.79412259,658515.701943253 2088234.12167457,658513.977808301 2088233.68798135,658503.880160292 2088232.47966135) - - - - -LINESTRING (658502.216738388 2088246.38048966,658511.424557054 2088247.48232956,658544.975313579 2088260.64087425,658562.318364824 2088270.561459,658563.27210359 2088271.01522248,658625.250727647 2088294.95224651,658625.707299155 2088295.11069675,658714.865955238 2088322.64298477) - - - -SAFE test 16596 line 42 - -LINESTRING (658714.715393537 2088303.70655556,658736.432369557 2088309.47269957) - - - -LINESTRING (658738.22872135 2088302.70711606,658716.51174533 2088296.94097205) - - - - -LINESTRING (658712.919041745 2088310.47213907,658734.636017765 2088316.23828308) - - - -SAFE test 16596 line 43 - -LINESTRING (658901.023985711 2088255.47717952,658892.734721703 2088308.75180357) - - - -LINESTRING (658899.651495565 2088309.82801885,658907.940759573 2088256.5533948) - - - - -LINESTRING (658894.107211848 2088254.40096424,658885.81794784 2088307.67558829) - - - -SAFE test 16596 line 44 - -LINESTRING (658559.169793392 2088306.66079557,658495.403265333 2088307.16255557) - - - -LINESTRING (658495.458344563 2088314.16233887,658559.224872622 2088313.66057887) - - - - -LINESTRING (658559.114714162 2088299.66101226,658495.348186103 2088300.16277227) - - - -SAFE test 16596 line 45 - -LINESTRING (658708.059377531 2088268.07237953,658714.715393537 2088303.70655556) - - - -LINESTRING (658721.596385345 2088302.42127282,658714.940369339 2088266.78709679) - - - - -LINESTRING (658701.178385723 2088269.35766228,658707.834401729 2088304.99183831) - - - -SAFE test 16596 line 46 - -LINESTRING (658503.17643334 2088226.09247549,658610.85824144 2088268.25157953,658682.145025507 2088294.50079556,658714.715393537 2088303.70655556) - - - -LINESTRING (658716.61930148 2088296.97044878,658684.309603231 2088287.83836505,658613.343880804 2088261.70737033,658505.728422689 2088219.57424334) - - - - -LINESTRING (658500.624443991 2088232.61070764,658608.306252091 2088274.76981168,658608.439467102 2088274.82040977,658679.726251169 2088301.06962579,658680.241117564 2088301.23690233,658712.811485594 2088310.44266234) - - - -SAFE test 16596 line 47 - -LINESTRING (658768.717057587 2088267.54297153,658767.608065586 2088301.99135556) - - - -LINESTRING (658774.604441073 2088302.2165889,658775.713433074 2088267.76820487) - - - - -LINESTRING (658761.720682101 2088267.31773819,658760.6116901 2088301.76612223) - - - -SAFE test 16596 line 48 - -LINESTRING (658768.717057587 2088267.54297153,658708.059377531 2088268.07237953) - - - -LINESTRING (658708.120469793 2088275.07211294,658768.778149849 2088274.54270493) - - - - -LINESTRING (658768.655965326 2088260.54323813,658707.998285269 2088261.07264613) - - - -SAFE test 16596 line 49 - -LINESTRING (658687.663345512 2088205.62885947,658692.179185516 2088221.23359549,658708.059377531 2088268.07237953) - - - -LINESTRING (658714.688725152 2088265.82476966,658698.859319083 2088219.13577927,658694.38744731 2088203.68297792) - - - - -LINESTRING (658680.939243713 2088207.57474102,658685.455083718 2088223.17947704,658685.549837895 2088223.48120535,658701.430029909 2088270.3199894) - - - -SAFE test 16596 line 50 - -LINESTRING (658869.880049682 2088259.62335552,658768.717057587 2088267.54297153) - - - -LINESTRING (658769.263385941 2088274.52161935,658870.426378036 2088266.60200334) - - - - -LINESTRING (658869.333721328 2088252.64470771,658768.170729233 2088260.56432371) - - - -SAFE test 16596 line 51 - -LINESTRING (658901.023985711 2088255.47717952,658869.880049682 2088259.62335552) - - - -LINESTRING (658870.803805916 2088266.56213599,658901.947741945 2088262.41595999) - - - - -LINESTRING (658900.100229476 2088248.53839905,658868.956293447 2088252.68457505) - - - -SAFE test 16596 line 52 - -LINESTRING (658865.007873677 2088119.51967539,658857.91360167 2088129.4555474,658842.298609656 2088135.97433141,658836.802801651 2088141.47935541,658838.282481652 2088149.27404342,658842.904817656 2088153.76530742,658863.844609676 2088159.52428343,658867.65796968 2088167.34252344,658868.32868968 2088178.46418745,658864.269553676 2088196.21010746,658869.880049682 2088259.62335552) - - - -LINESTRING (658876.852812011 2088259.0064394,658871.339695188 2088196.69383026,658875.152454764 2088180.02503019,658875.315994808 2088178.04280039,658874.645274807 2088166.92113638,658873.949480581 2088164.27382818,658870.136120577 2088156.45558817,658868.314890249 2088154.13757835,658865.700864836 2088152.77488962,658846.49392341 2088147.49249165,658844.747096179 2088145.79519785,658844.369767638 2088143.80749899,658846.273742746 2088141.90033108,658860.61032801 2088135.91524299,658863.610489615 2088133.52315945,658870.704761621 2088123.58728744) - - - - -LINESTRING (658859.310985733 2088115.45206335,658853.375936379 2088123.76438781,658839.601883316 2088129.51463582,658837.344717251 2088131.02873235,658831.848909246 2088136.53375636,658830.112310405 2088139.42087858,658829.925618512 2088142.78486377,658831.405298514 2088150.57955178,658832.118348005 2088152.59118924,658833.404426032 2088154.29445908,658838.026762036 2088158.78572308,658841.048562496 2088160.51470123,658858.939361231 2088165.43512645,658860.754673655 2088169.1569225,658861.280905098 2088177.88272359,658857.445788592 2088194.64926472,658857.296791347 2088196.82702359,658862.907287353 2088260.24027165) - - - -SAFE test 16596 line 53 - -LINESTRING (658911.14212972 2088254.46239552,658901.023985711 2088255.47717952) - - - -LINESTRING (658901.722535667 2088262.44223716,658911.840679677 2088261.42745316) - - - - -LINESTRING (658910.443579763 2088247.49733788,658900.325435754 2088248.51212188) - - - -SAFE test 16596 line 54 - -LINESTRING (658925.925633734 2088253.49369152,658911.14212972 2088254.46239552) - - - -LINESTRING (658911.599830223 2088261.44741594,658926.383334237 2088260.47871194) - - - - -LINESTRING (658925.467933231 2088246.5086711,658910.684429217 2088247.4773751) - - - -SAFE test 16596 line 55 - -LINESTRING (658908.646657718 2088109.93503538,658911.14212972 2088254.46239552) - - - -LINESTRING (658918.141086499 2088254.3415485,658915.645614497 2088109.81418836) - - - - -LINESTRING (658901.647700938 2088110.0558824,658904.143172941 2088254.58324254) - - - -SAFE test 16596 line 56 - -LINESTRING (658995.296497798 2088236.3775315,658947.728625754 2088250.36946751,658925.925633734 2088253.49369152) - - - -LINESTRING (658926.918545335 2088260.42291417,658948.721537356 2088257.29869017,658949.703970038 2088257.08497308,658997.271842082 2088243.09303706) - - - - -LINESTRING (658993.321153515 2088229.66202594,658946.236803901 2088243.51173539,658924.932722132 2088246.56446887) - - - -SAFE test 16596 line 57 - -LINESTRING (659056.979185856 2088210.29522748,658995.296497798 2088236.3775315) - - - -LINESTRING (658998.022717199 2088242.82483542,659059.705405256 2088216.74253139) - - - - -LINESTRING (659054.252966455 2088203.84792356,658992.570278398 2088229.93022759) - - - -SAFE test 16596 line 58 - -LINESTRING (658983.381233787 2088181.79525945,658995.296497798 2088236.3775315) - - - -LINESTRING (659002.135440955 2088234.88459597,658990.220176944 2088180.30232392) - - - - -LINESTRING (658976.54229063 2088183.28819498,658988.457554642 2088237.87046703) - - - -SAFE test 16596 line 59 - -LINESTRING (659056.979185856 2088210.29522748,659076.181233874 2088234.9347155) - - - -LINESTRING (659081.702570046 2088230.6318273,659062.500522028 2088205.99233928) - - - - -LINESTRING (659051.457849684 2088214.59811568,659070.659897701 2088239.2376037) - - - -SAFE test 16596 line 60 - -LINESTRING (658687.663345512 2088205.62885947,658626.089217455 2088220.59973949,658613.648625443 2088220.48095549,658606.704881437 2088214.85714748) - - - -LINESTRING (658602.299224729 2088220.29683396,658609.242968735 2088225.92064196,658611.280252971 2088227.06812573,658613.581791799 2088227.48063643,658626.02238381 2088227.59942043,658627.742989048 2088227.40158038,658689.317117105 2088212.43070036) - - - - -LINESTRING (658686.009573919 2088198.82701858,658625.283416339 2088213.59172654,658616.156931879 2088213.50458597,658611.110538144 2088209.417461) - - - -SAFE test 16596 line 61 - -LINESTRING (658777.965825596 2088114.23583539,658787.879153605 2088215.48383548,658787.090673605 2088216.58770748) - - - -LINESTRING (658792.786807903 2088220.65637484,658793.575287904 2088219.55250284,658794.641493787 2088217.29235843,658794.84583973 2088214.80171786,658784.93251172 2088113.55371777) - - - - -LINESTRING (658770.999139472 2088114.91795301,658780.912467481 2088216.1659531) - - - -SAFE test 16596 line 62 - -LINESTRING (658673.348849499 2088157.69439543,658621.22212945 2088160.52882743,658608.771329438 2088161.52108343,658600.953073431 2088165.89253944,658597.757169428 2088174.75423544,658597.650673428 2088185.86873145,658602.135793432 2088204.80863547,658606.704881437 2088214.85714748) - - - -LINESTRING (658613.077068671 2088211.95969518,658608.790259684 2088202.53198191,658604.65851091 2088185.0843049,658604.745454588 2088176.01039453,658606.65104579 2088170.72651556,658610.852328431 2088168.37743384,658621.690286332 2088167.51371193,658673.728918619 2088164.68406977) - - - - -LINESTRING (658672.968780378 2088150.70472108,658620.842060329 2088153.53915308,658620.666033488 2088153.55095116,658608.215233477 2088154.54320716,658605.355132591 2088155.41128809,658597.536876584 2088159.7827441,658595.615201201 2088161.36406066,658594.3682109 2088163.5177583,658591.172306897 2088172.37945431,658590.757490739 2088174.68716648,658590.650994739 2088185.80166249,658590.839059257 2088187.4817759,658595.324179261 2088206.42167992,658595.763606197 2088207.70608777,658600.332694202 2088217.75459978) - - - -SAFE test 16596 line 63 - -LINESTRING (659134.212337928 2088184.36345145,659093.70496189 2088191.75263546,659056.979185856 2088210.29522748) - - - -LINESTRING (659060.134117743 2088216.54393973,659095.956606612 2088198.45741119,659135.468519278 2088191.2498154) - - - - -LINESTRING (659132.956156577 2088177.47708751,659092.448780539 2088184.86627151,659090.550030003 2088185.50392321,659053.824253969 2088204.04651523) - - - -SAFE test 16596 line 64 - -LINESTRING (659028.681969829 2088161.11250743,659056.979185856 2088210.29522748) - - - -LINESTRING (659063.046615405 2088206.80433953,659034.749399379 2088157.62161948) - - - - -LINESTRING (659022.61454028 2088164.60339538,659050.911756307 2088213.78611543) - - - -SAFE test 16596 line 65 - -LINESTRING (658673.348849499 2088157.69439543,658687.663345512 2088205.62885947) - - - -LINESTRING (658694.370659931 2088203.62587837,658680.056163917 2088155.69141433) - - - - -LINESTRING (658666.64153508 2088159.69737653,658680.956031093 2088207.63184057) - - - -SAFE test 16596 line 66 - -LINESTRING (659037.391089838 2088064.49093934,659028.681969829 2088161.11250743) - - - -LINESTRING (659035.653705942 2088161.7409146,659044.36282595 2088065.11934651) - - - - -LINESTRING (659030.419353725 2088063.86253217,659021.710233717 2088160.48410026) - - - -SAFE test 16596 line 67 - -LINESTRING (658808.666369625 2087994.48210728,658873.841905685 2088009.55948329,658910.279921719 2088021.0252113,658941.242609748 2088035.77388331,658962.799857768 2088058.21381934,658988.116209792 2088094.02719537,659028.681969829 2088161.11250743) - - - -LINESTRING (659034.671992973 2088157.49040545,658994.106232936 2088090.40509339,658993.83225228 2088089.98654464,658968.515900256 2088054.17316861,658967.847893114 2088053.36435141,658946.290645094 2088030.92441539,658944.252899291 2088029.45421901,658913.290211262 2088014.705547,658912.381005961 2088014.34797797,658875.942989927 2088002.88224995,658875.419584741 2088002.73959115,658810.24404868 2087987.66221514) - - - - -LINESTRING (658807.088690569 2088001.30199942,658871.999757953 2088016.3181946,658907.711727856 2088027.5554621,658937.079332744 2088041.5443371,658957.387431424 2088062.68397582,658982.255694399 2088097.86346979,659022.691946686 2088164.73460941) - - - -SAFE test 16596 line 68 - -LINESTRING (658661.387505487 2088107.55935538,658673.348849499 2088157.69439543) - - - -LINESTRING (658680.157744699 2088156.06991208,658668.196400687 2088105.93487203) - - - - -LINESTRING (658654.578610287 2088109.18383873,658666.539954299 2088159.31887878) - - - -SAFE test 16596 line 69 - -LINESTRING (658908.646657718 2088109.93503538,658792.036593609 2088106.59065138,658777.965825596 2088114.23583539) - - - -LINESTRING (658781.307753182 2088120.38656868,658793.72124556 2088113.64184562,658908.445979792 2088116.93215825) - - - - -LINESTRING (658908.847335643 2088102.93791252,658792.237271535 2088099.59352852,658788.694666023 2088100.43991809,658774.62389801 2088108.0851021) - - - -SAFE test 16596 line 70 - -LINESTRING (658746.875121567 2088112.82578739,658777.965825596 2088114.23583539) - - - -LINESTRING (658778.282968644 2088107.24302334,658747.192264615 2088105.83297534) - - - - -LINESTRING (658746.557978519 2088119.81859943,658777.648682548 2088121.22864743) - - - -SAFE test 16596 line 71 - -LINESTRING (658754.801905574 2088016.1960273,658746.919153567 2088027.23577131,658746.875121567 2088112.82578739) - - - -LINESTRING (658753.875120641 2088112.82938855,658753.917999945 2088029.47999885,658760.498718161 2088020.26374488) - - - - -LINESTRING (658749.105092988 2088012.12830971,658741.222340981 2088023.16805372,658740.253456518 2088025.09837035,658739.919154493 2088027.23217014,658739.875122493 2088112.82218622) - - - -SAFE test 16596 line 72 - -LINESTRING (658661.387505487 2088107.55935538,658746.875121567 2088112.82578739) - - - -LINESTRING (658747.30553793 2088105.83903265,658661.81792185 2088100.57260064) - - - - -LINESTRING (658660.957089125 2088114.54611012,658746.444705204 2088119.81254212) - - - -SAFE test 16596 line 73 - -LINESTRING (658656.947441483 2088003.02943528,658655.881473482 2088033.03161131,658661.387505487 2088107.55935538) - - - -LINESTRING (658668.368479983 2088107.04360827,658662.890651237 2088032.89761374,658663.943027406 2088003.27798628) - - - - -LINESTRING (658649.951855561 2088002.78088429,658648.88588756 2088032.78306032,658648.900498986 2088033.54735843,658654.406530991 2088108.0751025) - - - -SAFE test 16596 line 74 - -LINESTRING (659037.391089838 2088064.49093934,659082.44606588 2088069.37234735) - - - -LINESTRING (659083.200057108 2088062.41307316,659038.145081066 2088057.53166515) - - - - -LINESTRING (659036.637098609 2088071.45021353,659081.692074651 2088076.33162153) - - - -SAFE test 16596 line 75 - -LINESTRING (659031.873777832 2087911.0414672,659040.785665841 2087954.47852324,659037.391089838 2088064.49093934) - - - -LINESTRING (659044.387759826 2088064.70683068,659047.782335829 2087954.69441458,659047.642831209 2087953.07165327,659038.7309432 2087909.63459723) - - - - -LINESTRING (659025.016612465 2087912.44833717,659033.76370754 2087955.08218295,659030.394419849 2088064.275048) - - - -SAFE test 16596 line 76 - -LINESTRING (658656.947441483 2088003.02943528,658612.615425442 2088003.71551528,658579.149057411 2088006.73017129,658576.763121409 2088012.26489129,658578.925825411 2088030.07020331) - - - -LINESTRING (658585.874752606 2088029.22615898,658583.943532267 2088013.32662734,658612.984103381 2088010.71064786,658657.055760153 2088010.02859717) - - - - -LINESTRING (658656.839122814 2087996.0302734,658612.507106773 2087996.7163534,658611.987407136 2087996.74374413,658578.521039105 2087999.75840013,658576.118050621 2088000.42041711,658574.099357928 2088001.88243624,658572.720907371 2088003.9590908,658570.334971369 2088009.49381081,658569.814194213 2088013.10893562,658571.976898215 2088030.91424764) - - - -SAFE test 16596 line 77 - -LINESTRING (658658.992369485 2087951.91647524,658656.947441483 2088003.02943528) - - - -LINESTRING (658663.941845956 2088003.30926751,658665.986773958 2087952.19630747) - - - - -LINESTRING (658651.997965013 2087951.63664301,658649.953037011 2088002.74960305) - - - -SAFE test 16596 line 78 - -LINESTRING (658810.705153627 2087863.33637915,658808.666369625 2087994.48210728) - - - -LINESTRING (658815.665523911 2087994.59091573,658817.704307913 2087863.44518761) - - - - -LINESTRING (658803.70599934 2087863.2275707,658801.667215338 2087994.37329882) - - - -SAFE test 16596 line 79 - -LINESTRING (658752.821505573 2087979.49484326,658808.666369625 2087994.48210728) - - - -LINESTRING (658810.48077729 2087987.72134365,658754.635913238 2087972.73407963) - - - - -LINESTRING (658751.007097907 2087986.25560689,658806.851961959 2088001.2428709) - - - -SAFE test 16596 line 80 - -LINESTRING (659031.873777832 2087911.0414672,659000.696065803 2087918.52178721,658992.088305795 2087923.99609121,658988.892401792 2087932.85778722,658991.150321795 2087940.66066723,659005.699313808 2087964.14405925,659007.157505809 2087974.16185126,659000.861937804 2087981.88281126,658992.276737796 2087985.13401127,658980.645121785 2087981.68722726,658972.135681777 2087977.15909926,658965.989617771 2087969.31935525,658960.686337766 2087954.81746724,658958.610673764 2087928.11973921) - - - -LINESTRING (658951.631734335 2087928.6623297,658953.707398337 2087955.36005773,658954.112143073 2087957.22162284,658959.415423078 2087971.72351085,658960.480703964 2087973.63813618,658966.626767969 2087981.47788018,658968.847355075 2087983.33865487,658977.356795083 2087987.86678287,658978.656302304 2087988.39875444,658990.287918315 2087991.84553845,658992.535411416 2087992.1292302,658994.755813966 2087991.68032178,659003.341013974 2087988.42912178,659006.287063112 2087986.30638622,659012.582631118 2087978.58542621,659013.904361337 2087976.02731112,659014.08450658 2087973.15355551,659012.626314579 2087963.1357635,659011.649847832 2087960.45744226,658997.607208981 2087937.79135014,658996.248197502 2087933.09490231,658997.862106366 2087928.61980865,659003.466043627 2087925.05585518,659033.506907325 2087917.84829378) - - - - -LINESTRING (659030.24064834 2087904.23464062,658999.062936311 2087911.71496063,658996.93957929 2087912.61511225,658988.331819282 2087918.08941625,658986.624383806 2087919.62052765,658985.503443265 2087921.62131007,658982.307539262 2087930.48300608,658981.896035825 2087932.63225839,658982.1682659 2087934.80355095,658984.426185902 2087942.60643096,658985.19978777 2087944.34728422,658998.982022424 2087966.59306035,658999.787105083 2087972.12398537,658996.624798388 2087976.00227618,658992.003770415 2087977.75225127,658983.31050802 2087975.17618637,658976.731095698 2087971.67508393,658972.182862711 2087965.87348761,658967.590750705 2087953.31629772,658965.589613194 2087927.57714872) - - - -SAFE test 16596 line 81 - -LINESTRING (658696.19840152 2087964.50143525,658752.821505573 2087979.49484326) - - - -LINESTRING (658754.613305111 2087972.72805271,658697.990201059 2087957.73464469) - - - - -LINESTRING (658694.406601981 2087971.2682258,658751.029706034 2087986.26163382) - - - -SAFE test 16596 line 82 - -LINESTRING (658699.010289522 2087914.5077072,658696.19840152 2087964.50143525) - - - -LINESTRING (658703.187355543 2087964.89452768,658705.999243546 2087914.90079963) - - - - -LINESTRING (658692.021335499 2087914.11461477,658689.209447496 2087964.10834282) - - - -SAFE test 16596 line 83 - -LINESTRING (658658.992369485 2087951.91647524,658696.19840152 2087964.50143525) - - - -LINESTRING (658698.44131932 2087957.87049868,658661.235287285 2087945.28553867) - - - - -LINESTRING (658656.749451685 2087958.5474118,658693.95548372 2087971.13237181) - - - -SAFE test 16596 line 84 - -LINESTRING (658601.708785432 2087924.69036321,658658.992369485 2087951.91647524) - - - -LINESTRING (658661.997244788 2087945.59423478,658604.713660735 2087918.36812275) - - - - -LINESTRING (658598.703910129 2087931.01260367,658655.987494182 2087958.23871569) - - - -SAFE test 16596 line 85 - -LINESTRING (659030.066433831 2087856.55749915,659108.139249903 2087905.10841119,659176.210673967 2087942.44857123) - - - -LINESTRING (659179.577241767 2087936.31128997,659111.673464515 2087899.06309156,659033.763024924 2087850.6131561) - - - - -LINESTRING (659026.369842737 2087862.5018422,659104.44265881 2087911.05275424,659104.772682103 2087911.24569245,659172.844106167 2087948.58585249) - - - -SAFE test 16596 line 86 - -LINESTRING (658561.986801395 2087687.54629899,658585.645313417 2087815.60261911,658601.708785432 2087924.69036321) - - - -LINESTRING (658608.634105919 2087923.67059062,658592.570633904 2087814.58284651,658592.528822164 2087814.33088512,658568.870310142 2087686.274565) - - - - -LINESTRING (658555.103292648 2087688.81803298,658578.738600106 2087816.74875386,658594.783464944 2087925.71013581) - - - -SAFE test 16596 line 87 - -LINESTRING (658481.77073732 2087862.40658715,658601.708785432 2087924.69036321) - - - -LINESTRING (658604.934828941 2087918.47806547,658484.996780829 2087856.19428941) - - - - -LINESTRING (658478.544693811 2087868.6188849,658598.482741923 2087930.90266096) - - - -SAFE test 16596 line 88 - -LINESTRING (658765.126897584 2087831.77465112,658763.847921583 2087884.00581917,658758.159617578 2087909.5177552,658699.010289522 2087914.5077072) - - - -LINESTRING (658699.598732851 2087921.4829301,658758.748060906 2087916.49297809,658761.555952341 2087915.63861381,658763.766768635 2087913.7082035,658764.991848616 2087911.04111301,658770.680152621 2087885.52917699,658770.845823908 2087884.17717565,658772.12479991 2087831.9460076) - - - - -LINESTRING (658758.128995259 2087831.60329464,658756.866770664 2087883.15036421,658752.4465761 2087902.97485334,658698.421846194 2087907.53248431) - - - -SAFE test 16596 line 89 - -LINESTRING (658691.683585516 2087786.60703508,658706.96881753 2087814.54277911,658699.010289522 2087914.5077072) - - - -LINESTRING (658705.988210507 2087915.06324183,658713.946738515 2087815.09831374,658713.109686896 2087811.18276074,658697.824454882 2087783.24701672) - - - - -LINESTRING (658685.542716149 2087789.96705345,658699.825086646 2087816.06993798,658692.032368538 2087913.95217257) - - - -SAFE test 16596 line 90 - -LINESTRING (659031.267569832 2087893.25049118,659031.873777832 2087911.0414672) - - - -LINESTRING (659038.869717759 2087910.80308822,659038.263509759 2087893.0121122) - - - - -LINESTRING (659024.271629905 2087893.48887016,659024.877837906 2087911.27984618) - - - -SAFE test 16596 line 91 - -LINESTRING (659030.066433831 2087856.55749915,659031.267569832 2087893.25049118) - - - -LINESTRING (659038.263822369 2087893.02147059,659037.062686368 2087856.32847855) - - - - -LINESTRING (659023.070181293 2087856.78651974,659024.271317294 2087893.47951177) - - - -SAFE test 16596 line 92 - -LINESTRING (658955.842801762 2087892.52345118,659031.267569832 2087893.25049118) - - - -LINESTRING (659031.335041615 2087886.25081636,658955.910273545 2087885.52377636) - - - - -LINESTRING (658955.775329979 2087899.523126,659031.200098049 2087900.250166) - - - -SAFE test 16596 line 93 - -LINESTRING (658719.071489541 2088335.98303559,658720.306433542 2088369.34188363,658719.815921542 2088420.46917967,658710.132977533 2088457.05772371) - - - -LINESTRING (658716.900017461 2088458.84858121,658726.58296147 2088422.26003718,658726.815599411 2088420.53633413,658727.306111412 2088369.40903809,658727.30164179 2088369.08292113,658726.066697789 2088335.7240731) - - - - -LINESTRING (658712.076281294 2088336.24199809,658713.3051908 2088369.43783972,658712.824651947 2088419.52560962,658703.365937604 2088455.2668662) - - - -SAFE test 16596 line 94 - -LINESTRING (658884.018433695 2088406.48645966,658883.653889694 2088444.27615569,658882.024689693 2088452.0411477,658879.670529691 2088454.2417237) - - - -LINESTRING (658884.450656758 2088459.35546844,658886.80481676 2088457.15489244,658888.123761929 2088455.47645233,658888.875521066 2088453.47854448,658890.504721068 2088445.71355247,658890.653564015 2088444.34367911,658891.018108015 2088406.55398307) - - - - -LINESTRING (658877.018759375 2088406.41893625,658876.660893724 2088443.516335,658875.628194971 2088448.43831976,658874.890402624 2088449.12797897) - - - -SAFE test 16596 line 95 - -LINESTRING (658719.071489541 2088335.98303559,658613.265665443 2088341.6375636,658491.068657329 2088353.80677961) - - - -LINESTRING (658491.762334033 2088360.77232429,658613.799566772 2088348.6190198,658719.445053969 2088342.9730606) - - - - -LINESTRING (658718.697925113 2088328.99301059,658612.892101014 2088334.64753859,658612.571988739 2088334.67201892,658490.374980625 2088346.84123493) - - - -SAFE test 16596 line 96 - -LINESTRING (658752.821505573 2087979.49484326,658754.801905574 2088016.1960273) - - - -LINESTRING (658761.791736847 2088015.81885522,658759.811336845 2087979.11767118) - - - - -LINESTRING (658745.8316743 2087979.87201534,658747.812074302 2088016.57319937) - - - -SAFE test 16596 line 97 - -LINESTRING (659022.622977824 2087822.02719512,659030.066433831 2087856.55749915) - - - -LINESTRING (659036.909254942 2087855.08244008,659029.465798935 2087820.55213605) - - - - -LINESTRING (659015.780156713 2087823.50225418,659023.223612719 2087858.03255821) - - - -SAFE test 16596 line 98 - -LINESTRING (658981.346545785 2087828.29817112,659030.066433831 2087856.55749915) - - - -LINESTRING (659033.578627202 2087850.50237754,658984.858739157 2087822.24304951) - - - - -LINESTRING (658977.834352414 2087834.35329273,659026.554240459 2087862.61262076) - - - -SAFE test 16596 line 99 - -LINESTRING (658940.349681747 2087805.6718671,658939.325697746 2087831.22783512,658940.752113748 2087844.57977114,658945.332465752 2087853.51724314,658953.086193759 2087855.81509915,658964.77105777 2087853.70463514,658983.518449787 2087844.99244314) - - - -LINESTRING (658980.568429602 2087838.64442133,658962.639130405 2087846.97643343,658953.47964302 2087848.63077604,658950.195073637 2087847.6573775,658947.574443173 2087842.54383789,658946.340647232 2087830.99491777,658947.344069366 2087805.95212027) - - - - -LINESTRING (658933.355294129 2087805.39161393,658932.331310128 2087830.94758196,658932.365304913 2087831.97142884,658933.791720915 2087845.32336485,658934.522552024 2087847.77235015,658939.102904028 2087856.70982215,658940.862367992 2087858.90409993,658943.343485305 2087860.22872262,658951.097213312 2087862.52657862,658954.330369335 2087862.70364233,658966.015233346 2087860.59317832,658967.721077956 2087860.05265696,658986.468469973 2087851.34046495) - - - -SAFE test 16596 line 100 - -LINESTRING (659022.622977824 2087822.02719512,658981.346545785 2087828.29817112) - - - -LINESTRING (658982.397964957 2087835.21875764,659023.674396996 2087828.94778163) - - - - -LINESTRING (659021.571558652 2087815.1066086,658980.295126614 2087821.37758461) - - - -SAFE test 16596 line 101 - -LINESTRING (658940.349681747 2087805.6718671,658981.346545785 2087828.29817112) - - - -LINESTRING (658984.728928867 2087822.16959178,658943.732064828 2087799.54328776) - - - - -LINESTRING (658936.967298666 2087811.80044644,658977.964162704 2087834.42675046) - - - -SAFE test 16596 line 102 - -LINESTRING (659119.289585914 2087797.39385109,659081.879809879 2087805.9247951,659060.809985859 2087813.50239511,659029.62099383 2087822.09477912,659022.622977824 2087822.02719512) - - - -LINESTRING (659022.555377816 2087829.0268687,659029.553393822 2087829.0944527,659031.480189196 2087828.8433636,659062.669181225 2087820.2509796,659063.178936196 2087820.08935756,659083.849655145 2087812.65529262,659120.845915752 2087804.21864687) - - - - -LINESTRING (659117.733256076 2087790.56905531,659080.323480041 2087799.09999932,659079.510859543 2087799.33783265,659058.692823986 2087806.82487888,659028.707601294 2087815.08563151,659022.690577832 2087815.02752153) - - - -SAFE test 16596 line 103 - -LINESTRING (658990.832897794 2087731.68274703,659003.751665806 2087762.93215506,659022.622977824 2087822.02719512) - - - -LINESTRING (659029.291226382 2087819.89776769,659010.419914364 2087760.80272763,659010.220662504 2087760.25781744,658997.301894492 2087729.00840941) - - - - -LINESTRING (658984.363901097 2087734.35708465,658997.171742213 2087765.3381699,659015.954729266 2087824.15662254) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/safe/TestBufferJagged.xml geos-3.8.0/tests/xmltester/tests/safe/TestBufferJagged.xml --- geos-3.7.1/tests/xmltester/tests/safe/TestBufferJagged.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/safe/TestBufferJagged.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ - - -com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - -Test case from Safe Software. -See http://trac.osgeo.org/geos/wiki/BufferRobustness - - - - POLYGON ((99736.4572496327 -2239219.11305743, 99736.6573549178 -2239219.11305743, 99736.6573549178 -2239219.01300479, 99736.5573022753 -2239219.01300479, 99736.5573022753 -2239218.8128995, 99736.6573549178 -2239218.8128995, 99736.6573549178 -2239218.91295215, 99736.7574075604 -2239218.91295215, 99736.7574075604 -2239219.01300479, 99736.8574602029 -2239219.01300479, 99736.8574602029 -2239219.11305743, 99736.9575128455 -2239219.11305743, 99736.9575128455 -2239219.21311007, 99737.057565488 -2239219.21311007, 99737.057565488 -2239219.01300479, 99737.2576707731 -2239219.01300479, 99737.2576707731 -2239219.11305743, 99737.4577760582 -2239219.11305743, 99737.4577760582 -2239219.01300479, 99737.958039271 -2239219.01300479, 99737.958039271 -2239218.91295215, 99738.0580919136 -2239218.91295215, 99738.0580919136 -2239218.51274158, 99738.1581445561 -2239218.51274158, 99738.1581445561 -2239218.61279422, 99738.3582498412 -2239218.61279422, 99738.3582498412 -2239218.41268893, 99738.4583024838 -2239218.41268893, 99738.4583024838 -2239218.61279422, 99738.5583551263 -2239218.61279422, 99738.5583551263 -2239218.41268893, 99738.6584077689 -2239218.41268893, 99738.6584077689 -2239218.31263629, 99738.4583024838 -2239218.31263629, 99738.4583024838 -2239218.11253101, 99738.5583551263 -2239218.11253101, 99738.5583551263 -2239218.21258365, 99738.6584077689 -2239218.21258365, 99738.6584077689 -2239218.11253101, 99738.7584604114 -2239218.11253101, 99738.7584604114 -2239218.41268893, 99738.858513054 -2239218.41268893, 99738.858513054 -2239218.31263629, 99738.9585656965 -2239218.31263629, 99738.9585656965 -2239218.21258365, 99738.858513054 -2239218.21258365, 99738.858513054 -2239217.91242572, 99738.9585656965 -2239217.91242572, 99738.9585656965 -2239218.01247836, 99739.1586709816 -2239218.01247836, 99739.1586709816 -2239217.91242572, 99739.2587236242 -2239217.91242572, 99739.2587236242 -2239218.01247836, 99739.3587762667 -2239218.01247836, 99739.3587762667 -2239218.11253101, 99739.4588289093 -2239218.11253101, 99739.4588289093 -2239217.91242572, 99739.5588815519 -2239217.91242572, 99739.5588815519 -2239218.01247836, 99739.6589341944 -2239218.01247836, 99739.6589341944 -2239217.81237308, 99739.8590394795 -2239217.81237308, 99739.8590394795 -2239217.71232044, 99740.0591447646 -2239217.71232044, 99740.0591447646 -2239217.61226779, 99740.1591974072 -2239217.61226779, 99740.1591974072 -2239217.71232044, 99740.2592500497 -2239217.71232044, 99740.2592500497 -2239217.51221515, 99740.0591447646 -2239217.51221515, 99740.0591447646 -2239217.41216251, 99740.2592500497 -2239217.41216251, 99740.2592500497 -2239217.21205722, 99740.3593026923 -2239217.21205722, 99740.3593026923 -2239217.01195194, 99740.2592500497 -2239217.01195194, 99740.2592500497 -2239217.11200458, 99740.1591974072 -2239217.11200458, 99740.1591974072 -2239217.01195194, 99740.0591447646 -2239217.01195194, 99740.0591447646 -2239217.31210987, 99739.8590394795 -2239217.31210987, 99739.8590394795 -2239217.41216251, 99739.6589341944 -2239217.41216251, 99739.6589341944 -2239217.51221515, 99739.4588289093 -2239217.51221515, 99739.4588289093 -2239217.61226779, 99738.9585656965 -2239217.61226779, 99738.9585656965 -2239217.51221515, 99738.7584604114 -2239217.51221515, 99738.7584604114 -2239217.41216251, 99738.5583551263 -2239217.41216251, 99738.5583551263 -2239217.31210987, 99738.4583024838 -2239217.31210987, 99738.4583024838 -2239217.21205722, 99738.6584077689 -2239217.21205722, 99738.6584077689 -2239217.11200458, 99738.9585656965 -2239217.11200458, 99738.9585656965 -2239217.01195194, 99738.7584604114 -2239217.01195194, 99738.7584604114 -2239216.9118993, 99738.3582498412 -2239216.9118993, 99738.3582498412 -2239217.01195194, 99738.2581971987 -2239217.01195194, 99738.2581971987 -2239216.9118993, 99738.1581445561 -2239216.9118993, 99738.1581445561 -2239217.01195194, 99738.0580919136 -2239217.01195194, 99738.0580919136 -2239216.9118993, 99737.8579866284 -2239216.9118993, 99737.8579866284 -2239216.61174137, 99737.6578813433 -2239216.61174137, 99737.6578813433 -2239216.41163608, 99737.4577760582 -2239216.41163608, 99737.4577760582 -2239216.2115308, 99737.2576707731 -2239216.2115308, 99737.2576707731 -2239215.81132023, 99737.057565488 -2239215.81132023, 99737.057565488 -2239215.41110966, 99736.9575128455 -2239215.41110966, 99736.9575128455 -2239215.31105701, 99736.8574602029 -2239215.31105701, 99736.8574602029 -2239215.01089909, 99736.9575128455 -2239215.01089909, 99736.9575128455 -2239214.91084644, 99737.057565488 -2239214.91084644, 99737.057565488 -2239214.8107938, 99737.1576181306 -2239214.8107938, 99737.1576181306 -2239214.71074116, 99737.3577234157 -2239214.71074116, 99737.3577234157 -2239214.61068852, 99737.6578813433 -2239214.61068852, 99737.6578813433 -2239214.41058323, 99737.8579866284 -2239214.41058323, 99737.8579866284 -2239214.31053059, 99737.958039271 -2239214.31053059, 99737.958039271 -2239214.1104253, 99737.5578287008 -2239214.1104253, 99737.5578287008 -2239214.21047795, 99737.4577760582 -2239214.21047795, 99737.4577760582 -2239214.01037266, 99737.6578813433 -2239214.01037266, 99737.6578813433 -2239213.91032002, 99737.7579339859 -2239213.91032002, 99737.7579339859 -2239213.71021473, 99737.8579866284 -2239213.71021473, 99737.8579866284 -2239213.61016209, 99737.7579339859 -2239213.61016209, 99737.7579339859 -2239213.51010945, 99737.8579866284 -2239213.51010945, 99737.8579866284 -2239213.41005681, 99737.958039271 -2239213.41005681, 99737.958039271 -2239213.31000416, 99737.8579866284 -2239213.31000416, 99737.8579866284 -2239213.20995152, 99737.7579339859 -2239213.20995152, 99737.7579339859 -2239213.31000416, 99737.5578287008 -2239213.31000416, 99737.5578287008 -2239213.10989888, 99737.3577234157 -2239213.10989888, 99737.3577234157 -2239212.90979359, 99737.4577760582 -2239212.90979359, 99737.4577760582 -2239212.80974095, 99737.3577234157 -2239212.80974095, 99737.3577234157 -2239212.70968831, 99737.2576707731 -2239212.70968831, 99737.2576707731 -2239212.30947774, 99737.057565488 -2239212.30947774, 99737.057565488 -2239212.2094251, 99736.9575128455 -2239212.2094251, 99736.9575128455 -2239212.10937245, 99737.057565488 -2239212.10937245, 99737.057565488 -2239212.00931981, 99737.1576181306 -2239212.00931981, 99737.1576181306 -2239212.10937245, 99737.2576707731 -2239212.10937245, 99737.2576707731 -2239212.2094251, 99737.3577234157 -2239212.2094251, 99737.3577234157 -2239212.40953038, 99737.4577760582 -2239212.40953038, 99737.4577760582 -2239212.30947774, 99737.5578287008 -2239212.30947774, 99737.5578287008 -2239212.2094251, 99737.6578813433 -2239212.2094251, 99737.6578813433 -2239212.10937245, 99737.5578287008 -2239212.10937245, 99737.5578287008 -2239212.00931981, 99737.4577760582 -2239212.00931981, 99737.4577760582 -2239211.90926717, 99737.2576707731 -2239211.90926717, 99737.2576707731 -2239211.80921452, 99737.1576181306 -2239211.80921452, 99737.1576181306 -2239211.70916188, 99737.057565488 -2239211.70916188, 99737.057565488 -2239211.60910924, 99736.9575128455 -2239211.60910924, 99736.9575128455 -2239211.5090566, 99736.7574075604 -2239211.5090566, 99736.7574075604 -2239211.40900395, 99736.5573022753 -2239211.40900395, 99736.5573022753 -2239211.00879338, 99736.4572496327 -2239211.00879338, 99736.4572496327 -2239210.90874074, 99736.157091705 -2239210.90874074, 99736.157091705 -2239210.8086881, 99736.2571443476 -2239210.8086881, 99736.2571443476 -2239210.60858281, 99736.3571969901 -2239210.60858281, 99736.3571969901 -2239210.40847753, 99736.2571443476 -2239210.40847753, 99736.2571443476 -2239210.50853017, 99736.0570390625 -2239210.50853017, 99736.0570390625 -2239210.40847753, 99736.157091705 -2239210.40847753, 99736.157091705 -2239210.30842489, 99735.9569864199 -2239210.30842489, 99735.9569864199 -2239210.20837224, 99736.0570390625 -2239210.20837224, 99736.0570390625 -2239209.90821432, 99735.8569337774 -2239209.90821432, 99735.8569337774 -2239209.80816167, 99735.9569864199 -2239209.80816167, 99735.9569864199 -2239209.60805639, 99735.8569337774 -2239209.60805639, 99735.8569337774 -2239209.50800375, 99735.7568811348 -2239209.50800375, 99735.7568811348 -2239209.4079511, 99735.8569337774 -2239209.4079511, 99735.8569337774 -2239209.30789846, 99735.7568811348 -2239209.30789846, 99735.7568811348 -2239209.20784582, 99735.6568284923 -2239209.20784582, 99735.6568284923 -2239209.00774053, 99735.7568811348 -2239209.00774053, 99735.7568811348 -2239208.80763525, 99735.6568284923 -2239208.80763525, 99735.6568284923 -2239208.60752996, 99735.5567758497 -2239208.60752996, 99735.5567758497 -2239208.50747732, 99735.6568284923 -2239208.50747732, 99735.6568284923 -2239208.40742468, 99735.5567758497 -2239208.40742468, 99735.5567758497 -2239208.30737204, 99735.4567232072 -2239208.30737204, 99735.4567232072 -2239208.20731939, 99735.5567758497 -2239208.20731939, 99735.5567758497 -2239208.00721411, 99735.4567232072 -2239208.00721411, 99735.4567232072 -2239207.90716147, 99735.3566705646 -2239207.90716147, 99735.3566705646 -2239207.70705618, 99735.4567232072 -2239207.70705618, 99735.4567232072 -2239207.50695089, 99735.3566705646 -2239207.50695089, 99735.3566705646 -2239207.40689825, 99735.4567232072 -2239207.40689825, 99735.4567232072 -2239207.30684561, 99735.2566179221 -2239207.30684561, 99735.2566179221 -2239207.20679297, 99735.3566705646 -2239207.20679297, 99735.3566705646 -2239207.10674032, 99735.1565652795 -2239207.10674032, 99735.1565652795 -2239207.30684561, 99735.0565126369 -2239207.30684561, 99735.0565126369 -2239207.00668768, 99734.9564599944 -2239207.00668768, 99734.9564599944 -2239207.40689825, 99734.8564073518 -2239207.40689825, 99734.8564073518 -2239207.00668768, 99734.7563547093 -2239207.00668768, 99734.7563547093 -2239206.90663504, 99734.6563020667 -2239206.90663504, 99734.6563020667 -2239206.8065824, 99734.5562494242 -2239206.8065824, 99734.5562494242 -2239206.70652975, 99734.2560914965 -2239206.70652975, 99734.2560914965 -2239206.60647711, 99734.3561441391 -2239206.60647711, 99734.3561441391 -2239206.30631918, 99734.156038854 -2239206.30631918, 99734.156038854 -2239206.20626654, 99734.0559862114 -2239206.20626654, 99734.0559862114 -2239206.1062139, 99734.2560914965 -2239206.1062139, 99734.2560914965 -2239205.90610861, 99734.3561441391 -2239205.90610861, 99734.3561441391 -2239205.80605597, 99734.4561967816 -2239205.80605597, 99734.4561967816 -2239205.70600333, 99734.6563020667 -2239205.70600333, 99734.6563020667 -2239205.80605597, 99734.8564073518 -2239205.80605597, 99734.8564073518 -2239205.30579276, 99734.3561441391 -2239205.30579276, 99734.3561441391 -2239205.10568747, 99734.0559862114 -2239205.10568747, 99734.0559862114 -2239205.00563483, 99733.8558809263 -2239205.00563483, 99733.8558809263 -2239204.90558219, 99733.6557756412 -2239204.90558219, 99733.6557756412 -2239204.80552955, 99733.4556703561 -2239204.80552955, 99733.4556703561 -2239204.7054769, 99733.3556177135 -2239204.7054769, 99733.3556177135 -2239204.60542426, 99733.1555124284 -2239204.60542426, 99733.1555124284 -2239204.50537162, 99732.8553545008 -2239204.50537162, 99732.8553545008 -2239204.60542426, 99732.7553018582 -2239204.60542426, 99732.7553018582 -2239204.90558219, 99732.5551965731 -2239204.90558219, 99732.5551965731 -2239205.00563483, 99732.4551439306 -2239205.00563483, 99732.4551439306 -2239205.10568747, 99732.355091288 -2239205.10568747, 99732.355091288 -2239205.20574012, 99732.1549860029 -2239205.20574012, 99732.1549860029 -2239205.30579276, 99731.9548807178 -2239205.30579276, 99731.9548807178 -2239205.4058454, 99731.454617505 -2239205.4058454, 99731.454617505 -2239205.50589804, 99731.0544069348 -2239205.50589804, 99731.0544069348 -2239205.60595069, 99730.8543016497 -2239205.60595069, 99730.8543016497 -2239205.70600333, 99730.7542490072 -2239205.70600333, 99730.7542490072 -2239205.80605597, 99730.554143722 -2239205.80605597, 99730.554143722 -2239205.90610861, 99730.4540910795 -2239205.90610861, 99730.4540910795 -2239206.00616126, 99730.3540384369 -2239206.00616126, 99730.3540384369 -2239206.50642447, 99730.2539857944 -2239206.50642447, 99730.2539857944 -2239206.70652975, 99730.1539331518 -2239206.70652975, 99730.1539331518 -2239206.8065824, 99729.9538278667 -2239206.8065824, 99729.9538278667 -2239206.90663504, 99729.5536172965 -2239206.90663504, 99729.5536172965 -2239207.00668768, 99729.3535120114 -2239207.00668768, 99729.3535120114 -2239207.10674032, 99729.2534593688 -2239207.10674032, 99729.2534593688 -2239207.20679297, 99729.0533540837 -2239207.20679297, 99729.0533540837 -2239207.30684561, 99728.9533014412 -2239207.30684561, 99728.9533014412 -2239207.40689825, 99728.8532487986 -2239207.40689825, 99728.8532487986 -2239207.50695089, 99728.7531961561 -2239207.50695089, 99728.7531961561 -2239207.60700354, 99728.6531435135 -2239207.60700354, 99728.6531435135 -2239208.10726675, 99728.553090871 -2239208.10726675, 99728.553090871 -2239208.30737204, 99728.4530382284 -2239208.30737204, 99728.4530382284 -2239208.50747732, 99728.6531435135 -2239208.50747732, 99728.6531435135 -2239208.60752996, 99728.2529329433 -2239208.60752996, 99728.2529329433 -2239208.70758261, 99727.8527223731 -2239208.70758261, 99727.8527223731 -2239208.60752996, 99727.5525644454 -2239208.60752996, 99727.5525644454 -2239208.70758261, 99727.4525118029 -2239208.70758261, 99727.4525118029 -2239208.60752996, 99726.4519853773 -2239208.60752996, 99726.4519853773 -2239208.70758261, 99726.2518800922 -2239208.70758261, 99726.2518800922 -2239208.80763525, 99726.1518274497 -2239208.80763525, 99726.1518274497 -2239208.90768789, 99726.0517748071 -2239208.90768789, 99726.0517748071 -2239209.00774053, 99725.9517221646 -2239209.00774053, 99725.9517221646 -2239209.10779318, 99725.851669522 -2239209.10779318, 99725.851669522 -2239209.20784582, 99725.7516168795 -2239209.20784582, 99725.7516168795 -2239209.4079511, 99725.6515642369 -2239209.4079511, 99725.6515642369 -2239209.50800375, 99725.7516168795 -2239209.50800375, 99725.7516168795 -2239209.60805639, 99725.6515642369 -2239209.60805639, 99725.6515642369 -2239209.90821432, 99725.5515115944 -2239209.90821432, 99725.5515115944 -2239210.50853017, 99725.4514589518 -2239210.50853017, 99725.4514589518 -2239211.20889867, 99725.5515115944 -2239211.20889867, 99725.5515115944 -2239211.40900395, 99725.6515642369 -2239211.40900395, 99725.6515642369 -2239211.5090566, 99725.7516168795 -2239211.5090566, 99725.7516168795 -2239211.40900395, 99725.851669522 -2239211.40900395, 99725.851669522 -2239211.10884603, 99725.9517221646 -2239211.10884603, 99725.9517221646 -2239210.90874074, 99726.0517748071 -2239210.90874074, 99726.0517748071 -2239210.20837224, 99726.1518274497 -2239210.20837224, 99726.1518274497 -2239210.1083196, 99726.2518800922 -2239210.1083196, 99726.2518800922 -2239210.00826696, 99726.4519853773 -2239210.00826696, 99726.4519853773 -2239209.90821432, 99726.6520906625 -2239209.90821432, 99726.6520906625 -2239210.00826696, 99726.9522485901 -2239210.00826696, 99726.9522485901 -2239210.1083196, 99727.1523538752 -2239210.1083196, 99727.1523538752 -2239210.20837224, 99727.7526697305 -2239210.20837224, 99727.7526697305 -2239210.1083196, 99728.6531435135 -2239210.1083196, 99728.6531435135 -2239210.00826696, 99728.7531961561 -2239210.00826696, 99728.7531961561 -2239210.1083196, 99729.0533540837 -2239210.1083196, 99729.0533540837 -2239210.20837224, 99729.1534067263 -2239210.20837224, 99729.1534067263 -2239210.00826696, 99728.9533014412 -2239210.00826696, 99728.9533014412 -2239209.90821432, 99729.1534067263 -2239209.90821432, 99729.1534067263 -2239209.80816167, 99728.9533014412 -2239209.80816167, 99728.9533014412 -2239209.70810903, 99728.8532487986 -2239209.70810903, 99728.8532487986 -2239209.60805639, 99728.9533014412 -2239209.60805639, 99728.9533014412 -2239209.4079511, 99728.8532487986 -2239209.4079511, 99728.8532487986 -2239209.30789846, 99728.9533014412 -2239209.30789846, 99728.9533014412 -2239209.00774053, 99729.0533540837 -2239209.00774053, 99729.0533540837 -2239208.90768789, 99729.5536172965 -2239208.90768789, 99729.5536172965 -2239208.80763525, 99729.7537225816 -2239208.80763525, 99729.7537225816 -2239208.90768789, 99729.8537752242 -2239208.90768789, 99729.8537752242 -2239209.00774053, 99729.9538278667 -2239209.00774053, 99729.9538278667 -2239209.10779318, 99730.1539331518 -2239209.10779318, 99730.1539331518 -2239209.30789846, 99730.0538805093 -2239209.30789846, 99730.0538805093 -2239209.4079511, 99730.1539331518 -2239209.4079511, 99730.1539331518 -2239209.50800375, 99730.0538805093 -2239209.50800375, 99730.0538805093 -2239209.80816167, 99729.9538278667 -2239209.80816167, 99729.9538278667 -2239210.00826696, 99729.8537752242 -2239210.00826696, 99729.8537752242 -2239210.1083196, 99729.7537225816 -2239210.1083196, 99729.7537225816 -2239210.20837224, 99729.5536172965 -2239210.20837224, 99729.5536172965 -2239210.1083196, 99729.3535120114 -2239210.1083196, 99729.3535120114 -2239210.30842489, 99729.2534593688 -2239210.30842489, 99729.2534593688 -2239210.40847753, 99729.3535120114 -2239210.40847753, 99729.3535120114 -2239210.8086881, 99729.4535646539 -2239210.8086881, 99729.4535646539 -2239210.90874074, 99729.3535120114 -2239210.90874074, 99729.3535120114 -2239211.00879338, 99729.1534067263 -2239211.00879338, 99729.1534067263 -2239211.10884603, 99728.7531961561 -2239211.10884603, 99728.7531961561 -2239211.20889867, 99727.9527750156 -2239211.20889867, 99727.9527750156 -2239211.30895131, 99727.652617088 -2239211.30895131, 99727.652617088 -2239211.40900395, 99727.4525118029 -2239211.40900395, 99727.4525118029 -2239211.5090566, 99727.3524591603 -2239211.5090566, 99727.3524591603 -2239211.70916188, 99727.4525118029 -2239211.70916188, 99727.4525118029 -2239211.80921452, 99727.652617088 -2239211.80921452, 99727.652617088 -2239211.90926717, 99727.8527223731 -2239211.90926717, 99727.8527223731 -2239212.00931981, 99728.4530382284 -2239212.00931981, 99728.4530382284 -2239212.10937245, 99728.553090871 -2239212.10937245, 99728.553090871 -2239212.00931981, 99728.7531961561 -2239212.00931981, 99728.7531961561 -2239212.10937245, 99729.1534067263 -2239212.10937245, 99729.1534067263 -2239212.2094251, 99729.3535120114 -2239212.2094251, 99729.3535120114 -2239212.30947774, 99729.4535646539 -2239212.30947774, 99729.4535646539 -2239212.50958302, 99729.5536172965 -2239212.50958302, 99729.5536172965 -2239212.60963567, 99729.6536699391 -2239212.60963567, 99729.6536699391 -2239212.70968831, 99729.9538278667 -2239212.70968831, 99729.9538278667 -2239212.80974095, 99730.3540384369 -2239212.80974095, 99730.3540384369 -2239212.90979359, 99730.554143722 -2239212.90979359, 99730.554143722 -2239213.00984624, 99730.7542490072 -2239213.00984624, 99730.7542490072 -2239212.90979359, 99730.8543016497 -2239212.90979359, 99730.8543016497 -2239213.00984624, 99730.9543542922 -2239213.00984624, 99730.9543542922 -2239213.20995152, 99731.0544069348 -2239213.20995152, 99731.0544069348 -2239213.10989888, 99731.1544595774 -2239213.10989888, 99731.1544595774 -2239213.31000416, 99731.3545648625 -2239213.31000416, 99731.3545648625 -2239213.41005681, 99731.454617505 -2239213.41005681, 99731.454617505 -2239213.51010945, 99731.5546701476 -2239213.51010945, 99731.5546701476 -2239213.61016209, 99731.6547227901 -2239213.61016209, 99731.6547227901 -2239213.81026738, 99731.7547754327 -2239213.81026738, 99731.7547754327 -2239213.91032002, 99731.8548280752 -2239213.91032002, 99731.8548280752 -2239214.1104253, 99731.9548807178 -2239214.1104253, 99731.9548807178 -2239214.31053059, 99732.0549333603 -2239214.31053059, 99732.0549333603 -2239214.41058323, 99731.9548807178 -2239214.41058323, 99731.9548807178 -2239214.51063587, 99732.0549333603 -2239214.51063587, 99732.0549333603 -2239214.71074116, 99732.1549860029 -2239214.71074116, 99732.1549860029 -2239214.91084644, 99732.2550386455 -2239214.91084644, 99732.2550386455 -2239215.11095173, 99732.355091288 -2239215.11095173, 99732.355091288 -2239215.31105701, 99732.4551439306 -2239215.31105701, 99732.4551439306 -2239215.41110966, 99732.355091288 -2239215.41110966, 99732.355091288 -2239215.5111623, 99732.4551439306 -2239215.5111623, 99732.4551439306 -2239215.71126758, 99732.355091288 -2239215.71126758, 99732.355091288 -2239215.91137287, 99732.4551439306 -2239215.91137287, 99732.4551439306 -2239216.01142551, 99732.355091288 -2239216.01142551, 99732.355091288 -2239216.11147815, 99732.2550386455 -2239216.11147815, 99732.2550386455 -2239216.2115308, 99732.355091288 -2239216.2115308, 99732.355091288 -2239216.31158344, 99732.2550386455 -2239216.31158344, 99732.2550386455 -2239216.61174137, 99732.1549860029 -2239216.61174137, 99732.1549860029 -2239217.01195194, 99732.0549333603 -2239217.01195194, 99732.0549333603 -2239217.21205722, 99732.1549860029 -2239217.21205722, 99732.1549860029 -2239217.31210987, 99732.4551439306 -2239217.31210987, 99732.4551439306 -2239217.41216251, 99732.5551965731 -2239217.41216251, 99732.5551965731 -2239217.31210987, 99732.7553018582 -2239217.31210987, 99732.7553018582 -2239217.41216251, 99732.8553545008 -2239217.41216251, 99732.8553545008 -2239217.51221515, 99732.9554071433 -2239217.51221515, 99732.9554071433 -2239217.31210987, 99733.1555124284 -2239217.31210987, 99733.1555124284 -2239217.41216251, 99733.255565071 -2239217.41216251, 99733.255565071 -2239217.31210987, 99733.4556703561 -2239217.31210987, 99733.4556703561 -2239217.41216251, 99733.5557229986 -2239217.41216251, 99733.5557229986 -2239217.31210987, 99733.6557756412 -2239217.31210987, 99733.6557756412 -2239217.21205722, 99733.8558809263 -2239217.21205722, 99733.8558809263 -2239217.11200458, 99733.9559335689 -2239217.11200458, 99733.9559335689 -2239217.01195194, 99734.0559862114 -2239217.01195194, 99734.0559862114 -2239217.21205722, 99734.156038854 -2239217.21205722, 99734.156038854 -2239217.11200458, 99734.2560914965 -2239217.11200458, 99734.2560914965 -2239217.21205722, 99734.3561441391 -2239217.21205722, 99734.3561441391 -2239217.11200458, 99734.4561967816 -2239217.11200458, 99734.4561967816 -2239217.01195194, 99734.3561441391 -2239217.01195194, 99734.3561441391 -2239216.9118993, 99734.4561967816 -2239216.9118993, 99734.4561967816 -2239216.81184665, 99734.6563020667 -2239216.81184665, 99734.6563020667 -2239216.9118993, 99734.5562494242 -2239216.9118993, 99734.5562494242 -2239217.01195194, 99734.6563020667 -2239217.01195194, 99734.6563020667 -2239217.11200458, 99734.7563547093 -2239217.11200458, 99734.7563547093 -2239217.01195194, 99734.8564073518 -2239217.01195194, 99734.8564073518 -2239217.11200458, 99735.3566705646 -2239217.11200458, 99735.3566705646 -2239217.21205722, 99735.7568811348 -2239217.21205722, 99735.7568811348 -2239217.31210987, 99735.6568284923 -2239217.31210987, 99735.6568284923 -2239217.41216251, 99735.5567758497 -2239217.41216251, 99735.5567758497 -2239217.61226779, 99735.7568811348 -2239217.61226779, 99735.7568811348 -2239217.71232044, 99735.9569864199 -2239217.71232044, 99735.9569864199 -2239218.01247836, 99735.8569337774 -2239218.01247836, 99735.8569337774 -2239218.11253101, 99735.9569864199 -2239218.11253101, 99735.9569864199 -2239218.21258365, 99736.0570390625 -2239218.21258365, 99736.0570390625 -2239218.41268893, 99735.9569864199 -2239218.41268893, 99735.9569864199 -2239218.61279422, 99736.0570390625 -2239218.61279422, 99736.0570390625 -2239218.71284686, 99735.9569864199 -2239218.71284686, 99735.9569864199 -2239218.8128995, 99736.0570390625 -2239218.8128995, 99736.0570390625 -2239218.91295215, 99736.3571969901 -2239218.91295215, 99736.3571969901 -2239219.01300479, 99736.4572496327 -2239219.01300479, 99736.4572496327 -2239219.11305743)) - - - - buffer-0.35: see http://trac.osgeo.org/geos/wiki/BufferRobustness - - POLYGON ((99725.2015115944 -2239210.264040296, 99725.2015115944 -2239209.90821432, 99725.20823674626 -2239209.839932707, 99725.22815375803 -2239209.7742751185, 99725.26049723009 -2239209.7137647383, 99725.3015642369 -2239209.663724446, 99725.3015642369 -2239209.60805639, 99725.30649139937 -2239209.5580300703, 99725.3015642369 -2239209.50800375, 99725.3015642369 -2239209.4079511, 99725.30828938876 -2239209.339669487, 99725.32820640053 -2239209.2740118983, 99725.3605498726 -2239209.213501518, 99725.40407686349 -2239209.1604637266, 99725.40647766467 -2239209.15849344, 99725.40834203135 -2239209.1395642073, 99725.42825904312 -2239209.0739066186, 99725.46060251519 -2239209.0133962384, 99725.50412950608 -2239208.960358447, 99725.55716729794 -2239208.9168314557, 99725.55944024482 -2239208.9156165402, 99725.5606551577 -2239208.913343598, 99725.60418214859 -2239208.8603058066, 99725.65721994045 -2239208.8167788154, 99725.65949288048 -2239208.8155639037, 99725.66070780029 -2239208.8132909485, 99725.70423479118 -2239208.760253157, 99725.75727258304 -2239208.7167261657, 99725.75954552992 -2239208.7155112503, 99725.76076044279 -2239208.713238308, 99725.80428743368 -2239208.6602005167, 99725.85732522554 -2239208.6166735254, 99725.85959817292 -2239208.6154586095, 99725.8608130854 -2239208.6131856684, 99725.90434007629 -2239208.560147877, 99725.95737786815 -2239208.5166208856, 99725.95965081536 -2239208.51540597, 99725.96086572789 -2239208.5131330285, 99726.00439271878 -2239208.460095237, 99726.05743051064 -2239208.4165682457, 99726.11794089086 -2239208.384224774, 99726.18359847949 -2239208.364307762, 99726.2025277112 -2239208.3624433954, 99726.20449800388 -2239208.360042587, 99726.25753579574 -2239208.3165155957, 99726.31804617596 -2239208.2841721238, 99726.38370376459 -2239208.264255112, 99726.4519853773 -2239208.25752996, 99727.4525118029 -2239208.25752996, 99727.50253812416 -2239208.2624571226, 99727.5525644454 -2239208.25752996, 99727.8527223731 -2239208.25752996, 99727.92100398582 -2239208.264255112, 99727.98666157444 -2239208.2841721238, 99728.04717195466 -2239208.3165155957, 99728.0528276582 -2239208.321157112, 99728.05848336175 -2239208.3165155957, 99728.10456354666 -2239208.2918852237, 99728.10976338026 -2239208.2390904273, 99728.12968039203 -2239208.1734328386, 99728.16202386409 -2239208.1129224584, 99728.20555085498 -2239208.059884667, 99728.20795165507 -2239208.0579143814, 99728.20981602286 -2239208.0389851374, 99728.22973303463 -2239207.9733275487, 99728.2620765067 -2239207.9128171685, 99728.30314351349 -2239207.8627768764, 99728.30314351349 -2239207.60700354, 99728.30986866535 -2239207.538721927, 99728.32978567712 -2239207.4730643383, 99728.36212914919 -2239207.412553958, 99728.40565614008 -2239207.3595161666, 99728.45869393194 -2239207.3159891753, 99728.460966872 -2239207.3147742637, 99728.4621817918 -2239207.3125013085, 99728.50570878269 -2239207.259463517, 99728.55874657455 -2239207.2159365257, 99728.56101952141 -2239207.2147216103, 99728.56223443428 -2239207.212448668, 99728.60576142518 -2239207.1594108767, 99728.65879921704 -2239207.1158838854, 99728.66107216441 -2239207.1146689695, 99728.66228707689 -2239207.1123960284, 99728.70581406778 -2239207.059358237, 99728.75885185965 -2239207.0158312456, 99728.76112480687 -2239207.01461633, 99728.7623397194 -2239207.0123433885, 99728.80586671029 -2239206.959305597, 99728.85890450215 -2239206.9157786057, 99728.91941488237 -2239206.883435134, 99728.985072471 -2239206.863518122, 99729.0040017027 -2239206.8616537554, 99729.00597199539 -2239206.859252947, 99729.05900978725 -2239206.8157259556, 99729.06128273426 -2239206.81451104, 99729.06249764709 -2239206.812238098, 99729.10602463798 -2239206.7592003066, 99729.15906242984 -2239206.7156733153, 99729.21957281006 -2239206.6833298435, 99729.28523039869 -2239206.6634128317, 99729.30415963955 -2239206.661548464, 99729.30612992308 -2239206.659147667, 99729.35916771494 -2239206.6156206755, 99729.41967809516 -2239206.5832772036, 99729.48533568378 -2239206.563360192, 99729.5536172965 -2239206.55663504, 99729.70933799617 -2239206.55663504, 99729.75937828515 -2239206.5155680357, 99729.81988866537 -2239206.4832245638, 99729.885546254 -2239206.463307552, 99729.9044754857 -2239206.4614431853, 99729.90644577838 -2239206.459042377, 99729.90884657952 -2239206.4570720904, 99729.91071094626 -2239206.438142857, 99729.93062795803 -2239206.3724852684, 99729.9629714301 -2239206.311974888, 99730.00403843689 -2239206.261934596, 99730.00403843689 -2239206.00616126, 99730.01076358875 -2239205.937879647, 99730.03068060052 -2239205.8722220585, 99730.06302407259 -2239205.8117116783, 99730.10655106348 -2239205.758673887, 99730.15958885534 -2239205.7151468955, 99730.16186179504 -2239205.713931984, 99730.1630767152 -2239205.711659028, 99730.20660370609 -2239205.6586212367, 99730.25964149795 -2239205.6150942454, 99730.26191444516 -2239205.61387933, 99730.26312935769 -2239205.6116063884, 99730.30665634858 -2239205.558568597, 99730.35969414044 -2239205.5150416056, 99730.42020452066 -2239205.4826981337, 99730.48586210929 -2239205.462781122, 99730.50479135025 -2239205.4609167543, 99730.50676163378 -2239205.458515957, 99730.55979942564 -2239205.4149889657, 99730.56207237252 -2239205.4137740503, 99730.56328728539 -2239205.411501108, 99730.60681427628 -2239205.3584633167, 99730.65985206814 -2239205.3149363254, 99730.72036244837 -2239205.2825928535, 99730.78602003699 -2239205.262675842, 99730.8049492687 -2239205.260811475, 99730.80691956138 -2239205.2584106666, 99730.85995735324 -2239205.2148836753, 99730.92046773346 -2239205.1825402034, 99730.98612532209 -2239205.1626231917, 99731.0544069348 -2239205.1558980397, 99731.21012763448 -2239205.1558980397, 99731.26016792345 -2239205.1148310355, 99731.32067830367 -2239205.0824875636, 99731.3863358923 -2239205.062570552, 99731.454617505 -2239205.0558454, 99731.71039084728 -2239205.0558454, 99731.76043113625 -2239205.0147783956, 99731.82094151647 -2239204.9824349238, 99731.8865991051 -2239204.962517912, 99731.90552834554 -2239204.9606535444, 99731.90749862949 -2239204.9582527466, 99731.96053642135 -2239204.9147257553, 99732.02104680157 -2239204.8823822835, 99732.0867043902 -2239204.8624652717, 99732.10563362233 -2239204.860600905, 99732.10760391458 -2239204.858200097, 99732.16064170645 -2239204.8146731057, 99732.16291465345 -2239204.8134581903, 99732.16412956628 -2239204.811185248, 99732.20765655718 -2239204.7581474567, 99732.26069434904 -2239204.7146204654, 99732.26296729626 -2239204.71340555, 99732.26418220879 -2239204.7111326084, 99732.30770919968 -2239204.658094817, 99732.36074699154 -2239204.6145678256, 99732.4068271754 -2239204.589937454, 99732.41202701005 -2239204.537142647, 99732.43194402182 -2239204.4714850583, 99732.46428749389 -2239204.410974678, 99732.50781448478 -2239204.3579368866, 99732.56085227664 -2239204.3144098953, 99732.56312522401 -2239204.3131949794, 99732.5643401365 -2239204.3109220383, 99732.60786712739 -2239204.2578842468, 99732.66090491925 -2239204.2143572555, 99732.72141529947 -2239204.1820137836, 99732.7870728881 -2239204.162096772, 99732.8553545008 -2239204.15537162, 99733.1555124284 -2239204.15537162, 99733.22379404111 -2239204.162096772, 99733.28945162974 -2239204.1820137836, 99733.34996200996 -2239204.2143572555, 99733.40299980182 -2239204.2578842468, 99733.40497008535 -2239204.260285044, 99733.42389932621 -2239204.2621494117, 99733.48955691484 -2239204.2820664234, 99733.55006729506 -2239204.3144098953, 99733.60310508692 -2239204.3579368866, 99733.64663207781 -2239204.410974678, 99733.64784699064 -2239204.41324762, 99733.65011993765 -2239204.4144625356, 99733.70315772951 -2239204.457989527, 99733.7051280222 -2239204.4603903354, 99733.7240572539 -2239204.462254702, 99733.78971484253 -2239204.482171714, 99733.85022522275 -2239204.5145151857, 99733.90326301461 -2239204.558042177, 99733.90523329814 -2239204.5604429743, 99733.92416253901 -2239204.562307342, 99733.98982012764 -2239204.5822243537, 99734.05033050786 -2239204.6145678256, 99734.10336829972 -2239204.658094817, 99734.10533858325 -2239204.660495614, 99734.12426782411 -2239204.662359982, 99734.18992541273 -2239204.6822769935, 99734.25043579296 -2239204.7146204654, 99734.3004760825 -2239204.75568747, 99734.3561441391 -2239204.75568747, 99734.42442575181 -2239204.762412622, 99734.49008334044 -2239204.782329634, 99734.55059372066 -2239204.8146731057, 99734.60363151252 -2239204.858200097, 99734.64715850342 -2239204.9112378885, 99734.67097357841 -2239204.95579276, 99734.8564073518 -2239204.95579276, 99734.92468896451 -2239204.962517912, 99734.99034655314 -2239204.9824349238, 99735.05085693336 -2239205.0147783956, 99735.10389472522 -2239205.058305387, 99735.14742171612 -2239205.1113431784, 99735.17976518818 -2239205.1718535586, 99735.19968219995 -2239205.2375111473, 99735.20640735181 -2239205.30579276, 99735.20640735181 -2239205.80605597, 99735.19968219995 -2239205.874337583, 99735.17976518818 -2239205.9399951715, 99735.14742171612 -2239206.0005055517, 99735.10389472522 -2239206.053543343, 99735.05085693336 -2239206.0970703345, 99734.99034655314 -2239206.1294138064, 99734.92468896451 -2239206.149330818, 99734.8564073518 -2239206.15605597, 99734.67077661124 -2239206.15605597, 99734.67950197548 -2239206.1723799785, 99734.69941898725 -2239206.238037567, 99734.70614413911 -2239206.30631918, 99734.70614413911 -2239206.3917003134, 99734.75069900576 -2239206.4155153856, 99734.80373679762 -2239206.459042377, 99734.84726378851 -2239206.5120801684, 99734.8484787087 -2239206.514353124, 99734.85075164825 -2239206.5155680357, 99734.90378944011 -2239206.559095027, 99734.947316431 -2239206.6121328184, 99734.94853134349 -2239206.6144057596, 99734.95080429086 -2239206.6156206755, 99735.00084457983 -2239206.6566876797, 99735.0565126369 -2239206.6566876797, 99735.12479424961 -2239206.6634128317, 99735.19045183824 -2239206.6833298435, 99735.25096221846 -2239206.7156733153, 99735.301002508 -2239206.75674032, 99735.3566705646 -2239206.75674032, 99735.4249521773 -2239206.763465472, 99735.49060976593 -2239206.7833824838, 99735.55112014615 -2239206.8157259556, 99735.60415793801 -2239206.859252947, 99735.6476849289 -2239206.9122907384, 99735.68002840097 -2239206.9728011186, 99735.69994541274 -2239207.0384587073, 99735.70180978053 -2239207.0573879513, 99735.70421058062 -2239207.059358237, 99735.74773757151 -2239207.1123960284, 99735.78008104357 -2239207.1729064086, 99735.79999805534 -2239207.238563997, 99735.8067232072 -2239207.30684561, 99735.8067232072 -2239207.40689825, 99735.80179604473 -2239207.4569245703, 99735.8067232072 -2239207.50695089, 99735.8067232072 -2239207.70705618, 99735.80173959458 -2239207.757655648, 99735.80426322312 -2239207.7597267367, 99735.84779021401 -2239207.812764528, 99735.88013368608 -2239207.8732749084, 99735.90005069785 -2239207.938932497, 99735.90677584971 -2239208.00721411, 99735.90677584971 -2239208.1629348057, 99735.9478428566 -2239208.2129750983, 99735.98018632867 -2239208.2734854785, 99736.00010334044 -2239208.339143067, 99736.0068284923 -2239208.40742468, 99736.0068284923 -2239208.50747732, 99736.00190132983 -2239208.55750364, 99736.00196770823 -2239208.5581775913, 99736.00436850822 -2239208.560147877, 99736.04789549911 -2239208.6131856684, 99736.08023897118 -2239208.6736960486, 99736.10015598295 -2239208.739353637, 99736.10688113481 -2239208.80763525, 99736.10688113481 -2239209.00774053, 99736.1018975222 -2239209.058339998, 99736.10442115081 -2239209.060411087, 99736.1479481417 -2239209.1134488783, 99736.18029161377 -2239209.1739592585, 99736.20020862554 -2239209.239616847, 99736.2069337774 -2239209.30789846, 99736.2069337774 -2239209.3635665164, 99736.24800078421 -2239209.4136068085, 99736.28034425627 -2239209.4741171887, 99736.30026126804 -2239209.5397747774, 99736.3069864199 -2239209.60805639, 99736.3069864199 -2239209.6637244457, 99736.34805342682 -2239209.7137647383, 99736.38039689888 -2239209.7742751185, 99736.40031391065 -2239209.839932707, 99736.40703906251 -2239209.90821432, 99736.40703906251 -2239210.0633865455, 99736.4254786028 -2239210.065202682, 99736.49113619143 -2239210.0851196935, 99736.55164657165 -2239210.1174631654, 99736.60468436351 -2239210.1609901567, 99736.6482113544 -2239210.214027948, 99736.68055482647 -2239210.2745383284, 99736.70047183824 -2239210.340195917, 99736.7071969901 -2239210.40847753, 99736.7071969901 -2239210.60858281, 99736.70221337749 -2239210.659182278, 99736.70473700612 -2239210.6612533666, 99736.74826399701 -2239210.714291158, 99736.74947890984 -2239210.7165641002, 99736.75175185685 -2239210.7177790157, 99736.80478964871 -2239210.761306007, 99736.8483166396 -2239210.8143437984, 99736.88066011167 -2239210.8748541786, 99736.90057712344 -2239210.9405117673, 99736.9073022753 -2239211.00879338, 99736.9073022753 -2239211.0941745136, 99736.95185714196 -2239211.1179895857, 99737.00489493382 -2239211.161516577, 99737.00686522608 -2239211.163917385, 99737.02579445821 -2239211.1657817517, 99737.09145204684 -2239211.1856987635, 99737.15196242706 -2239211.2180422354, 99737.20500021892 -2239211.2615692266, 99737.24852720981 -2239211.314607018, 99737.24974212269 -2239211.3168799602, 99737.25201506955 -2239211.3180948757, 99737.30505286141 -2239211.361621867, 99737.3485798523 -2239211.4146596584, 99737.34979476478 -2239211.4169325996, 99737.35206771216 -2239211.4181475155, 99737.40510550402 -2239211.461674507, 99737.44863249491 -2239211.5147122983, 99737.44984740744 -2239211.51698524, 99737.45212035466 -2239211.5182001553, 99737.50515814652 -2239211.5617271466, 99737.5071284392 -2239211.564127955, 99737.52605767091 -2239211.565992322, 99737.59171525954 -2239211.5859093335, 99737.65222563976 -2239211.6182528054, 99737.70526343162 -2239211.6617797967, 99737.74879042251 -2239211.714817588, 99737.75000533534 -2239211.7170905303, 99737.75227828235 -2239211.7183054457, 99737.80531607421 -2239211.761832437, 99737.8488430651 -2239211.8148702285, 99737.85005797763 -2239211.81714317, 99737.85233092486 -2239211.8183580856, 99737.90536871672 -2239211.861885077, 99737.94889570761 -2239211.9149228684, 99737.98123917967 -2239211.9754332486, 99738.00115619144 -2239212.041090837, 99738.0078813433 -2239212.10937245, 99738.0078813433 -2239212.2094251, 99738.00115619144 -2239212.277706713, 99737.98123917967 -2239212.3433643016, 99737.94889570761 -2239212.403874682, 99737.90536871672 -2239212.4569124733, 99737.85233092486 -2239212.5004394646, 99737.85005797763 -2239212.50165438, 99737.8488430651 -2239212.5039273216, 99737.80531607421 -2239212.556965113, 99737.75227828235 -2239212.6004921044, 99737.750005335 -2239212.6017070203, 99737.74879042251 -2239212.6039799615, 99737.74414890668 -2239212.609635665, 99737.74879042251 -2239212.615291368, 99737.78113389458 -2239212.6758017484, 99737.80105090635 -2239212.741459337, 99737.80777605821 -2239212.80974095, 99737.80777605821 -2239212.85995152, 99737.8579866284 -2239212.85995152, 99737.9262682411 -2239212.866676672, 99737.99192582973 -2239212.8865936836, 99738.05243620995 -2239212.9189371555, 99738.10547400182 -2239212.962464147, 99738.14900099271 -2239213.0155019383, 99738.15021590519 -2239213.0177748795, 99738.15248885256 -2239213.0189897954, 99738.20552664442 -2239213.0625167866, 99738.24905363531 -2239213.115554578, 99738.28139710738 -2239213.1760649583, 99738.30131411915 -2239213.241722547, 99738.30803927101 -2239213.31000416, 99738.30803927101 -2239213.41005681, 99738.30131411915 -2239213.4783384227, 99738.28139710738 -2239213.5439960114, 99738.24905363531 -2239213.6045063916, 99738.2079866284 -2239213.654546684, 99738.2079866284 -2239213.71021473, 99738.20126147654 -2239213.7784963427, 99738.1816023578 -2239213.843303772, 99738.20552664442 -2239213.862937927, 99738.24905363531 -2239213.9159757183, 99738.28139710738 -2239213.9764860985, 99738.30131411915 -2239214.042143687, 99738.30803927101 -2239214.1104253, 99738.30803927101 -2239214.31053059, 99738.30131411915 -2239214.3788122027, 99738.28139710738 -2239214.4444697914, 99738.24905363531 -2239214.5049801716, 99738.20552664442 -2239214.558017963, 99738.15248885256 -2239214.6015449543, 99738.15021590554 -2239214.60275987, 99738.14900099271 -2239214.605032812, 99738.10547400182 -2239214.6580706034, 99738.05243620995 -2239214.7015975947, 99737.99192582973 -2239214.7339410665, 99737.98372643965 -2239214.736428324, 99737.98123917967 -2239214.7446277216, 99737.94889570761 -2239214.805138102, 99737.90536871672 -2239214.8581758933, 99737.85233092486 -2239214.9017028846, 99737.79182054463 -2239214.9340463565, 99737.72616295601 -2239214.953963368, 99737.6578813433 -2239214.96068852, 99737.60221328623 -2239214.96068852, 99737.55217299725 -2239215.0017555244, 99737.49166261703 -2239215.0340989963, 99737.4260050284 -2239215.054016008, 99737.40707578755 -2239215.0558803757, 99737.40510550402 -2239215.058281173, 99737.35206771216 -2239215.1018081643, 99737.34979476513 -2239215.1030230797, 99737.3485798523 -2239215.105296022, 99737.30505286141 -2239215.1583338133, 99737.30183084974 -2239215.16097805, 99737.30505286141 -2239215.1636222866, 99737.3485798523 -2239215.216660078, 99737.38092332437 -2239215.2771704583, 99737.40084033614 -2239215.342828047, 99737.407565488 -2239215.41110966, 99737.407565488 -2239215.4964907933, 99737.45212035466 -2239215.5203058654, 99737.50515814652 -2239215.5638328567, 99737.54868513742 -2239215.616870648, 99737.58102860948 -2239215.6773810284, 99737.60094562125 -2239215.743038617, 99737.60767077311 -2239215.81132023, 99737.60767077311 -2239215.8967013634, 99737.65222563976 -2239215.9205164355, 99737.70526343162 -2239215.964043427, 99737.74879042251 -2239216.0170812183, 99737.78113389458 -2239216.0775915985, 99737.78362115128 -2239216.085790985, 99737.79182054463 -2239216.088278244, 99737.85233092486 -2239216.1206217157, 99737.90536871672 -2239216.164148707, 99737.94889570761 -2239216.2171864985, 99737.98123917967 -2239216.2776968786, 99737.98372643965 -2239216.285896276, 99737.99192582973 -2239216.2883835337, 99738.05243620995 -2239216.3207270056, 99738.10547400182 -2239216.364253997, 99738.14900099271 -2239216.4172917884, 99738.18134446477 -2239216.4778021686, 99738.20126147654 -2239216.543459757, 99738.20307761295 -2239216.5618992997, 99738.2581971987 -2239216.5618992997, 99738.30822351994 -2239216.5668264623, 99738.3582498412 -2239216.5618992997, 99738.7584604114 -2239216.5618992997, 99738.8267420241 -2239216.5686244518, 99738.89239961273 -2239216.5885414635, 99738.95290999295 -2239216.6208849354, 99739.00594778481 -2239216.6644119266, 99739.00791806876 -2239216.6668127244, 99739.02684730921 -2239216.668677092, 99739.09250489784 -2239216.688594104, 99739.15301527806 -2239216.7209375757, 99739.20605306992 -2239216.764464567, 99739.24958006082 -2239216.8175023585, 99739.28192353288 -2239216.8780127387, 99739.30184054465 -2239216.9436703273, 99739.30856569651 -2239217.01195194, 99739.30856569651 -2239217.11200458, 99739.30184054465 -2239217.180286193, 99739.2942768954 -2239217.205220203, 99739.32488970796 -2239217.1888573137, 99739.39054729659 -2239217.168940302, 99739.40947653746 -2239217.1670759344, 99739.41144682099 -2239217.164675137, 99739.46448461285 -2239217.1211481458, 99739.52499499307 -2239217.088804674, 99739.5906525817 -2239217.068887662, 99739.60958182214 -2239217.0670232945, 99739.61155210609 -2239217.0646224967, 99739.66458989795 -2239217.0210955054, 99739.71067008185 -2239216.996465134, 99739.71586991646 -2239216.9436703273, 99739.73578692823 -2239216.8780127387, 99739.76813040029 -2239216.8175023585, 99739.81165739118 -2239216.764464567, 99739.86469518305 -2239216.7209375757, 99739.92520556327 -2239216.688594104, 99739.99086315189 -2239216.668677092, 99740.0591447646 -2239216.66195194, 99740.1591974072 -2239216.66195194, 99740.20922372845 -2239216.6668791026, 99740.2592500497 -2239216.66195194, 99740.3593026923 -2239216.66195194, 99740.42758430501 -2239216.668677092, 99740.49324189364 -2239216.688594104, 99740.55375227386 -2239216.7209375757, 99740.60679006572 -2239216.764464567, 99740.65031705661 -2239216.8175023585, 99740.68266052868 -2239216.8780127387, 99740.70257754045 -2239216.9436703273, 99740.70930269231 -2239217.01195194, 99740.70930269231 -2239217.21205722, 99740.70257754045 -2239217.2803388326, 99740.68266052868 -2239217.3459964213, 99740.65031705661 -2239217.4065068015, 99740.60679006572 -2239217.459544593, 99740.60438926567 -2239217.4615148786, 99740.60432288726 -2239217.46218883, 99740.6092500497 -2239217.51221515, 99740.6092500497 -2239217.71232044, 99740.60252489784 -2239217.780602053, 99740.58260788607 -2239217.8462596415, 99740.550264414 -2239217.9067700217, 99740.50673742311 -2239217.959807813, 99740.45369963125 -2239218.0033348044, 99740.39318925103 -2239218.0356782763, 99740.3275316624 -2239218.055595288, 99740.2592500497 -2239218.06232044, 99740.1591974072 -2239218.06232044, 99740.1091710859 -2239218.0573932775, 99740.10849713645 -2239218.0574596557, 99740.10652685292 -2239218.059860453, 99740.05348906106 -2239218.1033874443, 99739.99297868084 -2239218.135730916, 99739.98477928748 -2239218.138218175, 99739.98229203078 -2239218.1464175615, 99739.94994855871 -2239218.2069279416, 99739.90642156782 -2239218.259965733, 99739.85338377596 -2239218.3034927244, 99739.79287339574 -2239218.3358361963, 99739.72721580711 -2239218.355753208, 99739.70828657539 -2239218.3576175747, 99739.70631628271 -2239218.3600183832, 99739.65327849085 -2239218.4035453745, 99739.59276811063 -2239218.4358888464, 99739.527110522 -2239218.455805858, 99739.4588289093 -2239218.46253101, 99739.3587762667 -2239218.46253101, 99739.290494654 -2239218.455805858, 99739.27887399775 -2239218.4522807705, 99739.24958006082 -2239218.507085872, 99739.20605306992 -2239218.5601236634, 99739.15301527806 -2239218.6036506547, 99739.15074233084 -2239218.60486557, 99739.14952741831 -2239218.6071385117, 99739.10600042742 -2239218.6601763032, 99739.05296263556 -2239218.7037032945, 99738.99245225533 -2239218.7360467664, 99738.92679466671 -2239218.755963778, 99738.87399986494 -2239218.7611636124, 99738.8493694906 -2239218.8072438017, 99738.80584249971 -2239218.860281593, 99738.75280470785 -2239218.9038085844, 99738.69229432763 -2239218.9361520563, 99738.626636739 -2239218.956069068, 99738.5583551263 -2239218.96279422, 99738.4583024838 -2239218.96279422, 99738.4082761625 -2239218.9578670575, 99738.40362304353 -2239218.9583253497, 99738.40136676174 -2239218.981233763, 99738.38144974997 -2239219.0468913517, 99738.3491062779 -2239219.107401732, 99738.30557928701 -2239219.1604395234, 99738.25254149515 -2239219.2039665147, 99738.2502685478 -2239219.2051814306, 99738.24905363531 -2239219.2074543717, 99738.20552664442 -2239219.2604921632, 99738.15248885256 -2239219.3040191545, 99738.09197847234 -2239219.3363626264, 99738.02632088371 -2239219.356279638, 99737.958039271 -2239219.36300479, 99737.70226592873 -2239219.36300479, 99737.65222563976 -2239219.4040717944, 99737.59171525954 -2239219.4364152662, 99737.52605767091 -2239219.456332278, 99737.4577760582 -2239219.46305743, 99737.30205535909 -2239219.46305743, 99737.25201506955 -2239219.5041244347, 99737.19150468933 -2239219.5364679066, 99737.1258471007 -2239219.5563849183, 99737.057565488 -2239219.5631100703, 99736.9575128455 -2239219.5631100703, 99736.8892312328 -2239219.5563849183, 99736.82357364417 -2239219.5364679066, 99736.76306326395 -2239219.5041244347, 99736.71002547209 -2239219.4605974434, 99736.70795438564 -2239219.458073817, 99736.6573549178 -2239219.46305743, 99736.4572496327 -2239219.46305743, 99736.38896802 -2239219.456332278, 99736.32331043137 -2239219.4364152662, 99736.26280005115 -2239219.4040717944, 99736.20976225928 -2239219.360544803, 99736.16623526839 -2239219.3075070116, 99736.16502035591 -2239219.3052340704, 99736.16274740854 -2239219.3040191545, 99736.11270711957 -2239219.2629521503, 99736.0570390625 -2239219.2629521503, 99735.9887574498 -2239219.2562269983, 99735.92309986117 -2239219.2363099866, 99735.86258948095 -2239219.2039665147, 99735.80955168909 -2239219.1604395234, 99735.7660246982 -2239219.107401732, 99735.76480977805 -2239219.1051287763, 99735.76253683835 -2239219.1039138646, 99735.70949904648 -2239219.0603868733, 99735.66597205559 -2239219.007349082, 99735.63362858353 -2239218.9468387016, 99735.61371157176 -2239218.881181113, 99735.6069864199 -2239218.8128995, 99735.6069864199 -2239218.71284686, 99735.61191358234 -2239218.66282054, 99735.6069864199 -2239218.61279422, 99735.6069864199 -2239218.41268893, 99735.61197003162 -2239218.362089471, 99735.60944640398 -2239218.3600183832, 99735.56591941309 -2239218.3069805917, 99735.53357594102 -2239218.2464702115, 99735.51365892925 -2239218.180812623, 99735.50693377739 -2239218.11253101, 99735.50693377739 -2239218.01247836, 99735.51191738911 -2239217.961878901, 99735.50939376139 -2239217.959807813, 99735.5074234687 -2239217.9574070047, 99735.488494237 -2239217.955542638, 99735.42283664837 -2239217.9356256262, 99735.36232626815 -2239217.9032821544, 99735.30928847629 -2239217.859755163, 99735.2657614854 -2239217.8067173716, 99735.23341801333 -2239217.7462069914, 99735.21350100156 -2239217.6805494027, 99735.2067758497 -2239217.61226779, 99735.2067758497 -2239217.5268866564, 99735.16222098304 -2239217.5030715843, 99735.11218069406 -2239217.46200458, 99734.8564073518 -2239217.46200458, 99734.80638103056 -2239217.4570774175, 99734.7563547093 -2239217.46200458, 99734.6563020667 -2239217.46200458, 99734.60570259861 -2239217.4570209673, 99734.60363151252 -2239217.459544593, 99734.55059372066 -2239217.5030715843, 99734.49008334044 -2239217.535415056, 99734.42442575181 -2239217.555332068, 99734.3561441391 -2239217.56205722, 99734.2560914965 -2239217.56205722, 99734.20606517524 -2239217.5571300574, 99734.156038854 -2239217.56205722, 99734.0559862114 -2239217.56205722, 99733.9877045987 -2239217.555332068, 99733.95593356885 -2239217.5456944313, 99733.92416253901 -2239217.555332068, 99733.90523330729 -2239217.5571964346, 99733.90326301461 -2239217.559597243, 99733.85022522275 -2239217.6031242344, 99733.84795227574 -2239217.60433915, 99733.84673736291 -2239217.606612092, 99733.80321037202 -2239217.6596498834, 99733.75017258016 -2239217.7031768747, 99733.68966219993 -2239217.7355203466, 99733.62400461131 -2239217.7554373583, 99733.5557229986 -2239217.7621625103, 99733.4556703561 -2239217.7621625103, 99733.38738874339 -2239217.7554373583, 99733.35561771355 -2239217.7457997217, 99733.3238466837 -2239217.7554373583, 99733.255565071 -2239217.7621625103, 99733.19989701382 -2239217.7621625103, 99733.14985672485 -2239217.8032295145, 99733.08934634463 -2239217.8355729864, 99733.023688756 -2239217.855489998, 99732.9554071433 -2239217.86221515, 99732.8553545008 -2239217.86221515, 99732.7870728881 -2239217.855489998, 99732.72141529947 -2239217.8355729864, 99732.66090491925 -2239217.8032295145, 99732.60786712739 -2239217.7597025232, 99732.6057960413 -2239217.7571788975, 99732.5551965731 -2239217.7621625103, 99732.4551439306 -2239217.7621625103, 99732.38686231789 -2239217.7554373583, 99732.32120472926 -2239217.7355203466, 99732.26069434904 -2239217.7031768747, 99732.2106540595 -2239217.66210987, 99732.1549860029 -2239217.66210987, 99732.0867043902 -2239217.655384718, 99732.02104680157 -2239217.6354677062, 99731.96053642135 -2239217.6031242344, 99731.90749862949 -2239217.559597243, 99731.8639716386 -2239217.5065594516, 99731.86275671844 -2239217.504286496, 99731.86048377874 -2239217.5030715843, 99731.80744598688 -2239217.459544593, 99731.76391899599 -2239217.4065068015, 99731.73157552393 -2239217.3459964213, 99731.71165851215 -2239217.2803388326, 99731.70493336029 -2239217.21205722, 99731.70493336029 -2239217.01195194, 99731.71165851215 -2239216.9436703273, 99731.73157552393 -2239216.8780127387, 99731.76391899599 -2239216.8175023585, 99731.8049860029 -2239216.767462066, 99731.8049860029 -2239216.61174137, 99731.81171115476 -2239216.543459757, 99731.83162816653 -2239216.4778021686, 99731.8639716386 -2239216.4172917884, 99731.90503864549 -2239216.367251496, 99731.90503864549 -2239216.31158344, 99731.90996580794 -2239216.26155712, 99731.90503864549 -2239216.2115308, 99731.90503864549 -2239216.11147815, 99731.91176379735 -2239216.043196537, 99731.93168080912 -2239215.9775389484, 99731.96402428119 -2239215.917028568, 99732.005091288 -2239215.866988276, 99732.005091288 -2239215.71126758, 99732.01181643986 -2239215.642985967, 99732.02145407554 -2239215.61121494, 99732.01181643986 -2239215.579443913, 99732.005091288 -2239215.5111623, 99732.005091288 -2239215.41110966, 99732.01001845092 -2239215.361083335, 99732.00995207312 -2239215.3604093897, 99732.00755127208 -2239215.3584391032, 99731.96402428119 -2239215.3054013117, 99731.93168080912 -2239215.2448909315, 99731.91176379735 -2239215.179233343, 99731.90989942956 -2239215.160304099, 99731.90749862949 -2239215.1583338133, 99731.8639716386 -2239215.105296022, 99731.83162816653 -2239215.0447856416, 99731.81171115476 -2239214.979128053, 99731.80984678802 -2239214.9601988196, 99731.80744598688 -2239214.958228533, 99731.76391899599 -2239214.9051907416, 99731.73157552393 -2239214.8446803614, 99731.71165851215 -2239214.779022773, 99731.70979414435 -2239214.760093529, 99731.70739334439 -2239214.758123243, 99731.6638663535 -2239214.7050854517, 99731.63152288143 -2239214.6445750715, 99731.61160586966 -2239214.578917483, 99731.6048807178 -2239214.51063587, 99731.6048807178 -2239214.41058323, 99731.60980788028 -2239214.36055691, 99731.60974150187 -2239214.3598829587, 99731.60734070178 -2239214.357912673, 99731.56381371089 -2239214.3048748816, 99731.53147023883 -2239214.2443645014, 99731.51155322706 -2239214.178706913, 99731.50968886031 -2239214.1597776795, 99731.50728805928 -2239214.157807393, 99731.46376106839 -2239214.1047696015, 99731.4625461559 -2239214.1024966603, 99731.46027320855 -2239214.1012817444, 99731.40723541669 -2239214.057754753, 99731.3637084258 -2239214.0047169616, 99731.33136495373 -2239213.9442065815, 99731.31144794196 -2239213.878548993, 99731.30958357417 -2239213.859619749, 99731.30718277418 -2239213.857649463, 99731.26365578329 -2239213.8046116717, 99731.2624408708 -2239213.8023387305, 99731.26016792345 -2239213.8011238147, 99731.20713013159 -2239213.7575968234, 99731.1636031407 -2239213.704559032, 99731.16238822782 -2239213.70228609, 99731.16011528095 -2239213.7010711743, 99731.10707748908 -2239213.657544183, 99731.1051071964 -2239213.6551433746, 99731.0861779647 -2239213.653279008, 99731.02052037607 -2239213.633361996, 99730.96000999585 -2239213.6010185243, 99730.90697220399 -2239213.557491533, 99730.90500192046 -2239213.5550907357, 99730.8860726795 -2239213.553226368, 99730.82041509087 -2239213.5333093563, 99730.75990471065 -2239213.5009658844, 99730.70686691879 -2239213.457438893, 99730.6633399279 -2239213.4044011016, 99730.63952485814 -2239213.35984624, 99730.554143722 -2239213.35984624, 99730.48586210929 -2239213.353121088, 99730.42020452066 -2239213.333204076, 99730.35969414044 -2239213.3008606043, 99730.30665634858 -2239213.257333613, 99730.30468605632 -2239213.254932805, 99730.28575682419 -2239213.2530684383, 99730.22009923556 -2239213.2331514265, 99730.15958885534 -2239213.2008079547, 99730.1095485658 -2239213.15974095, 99729.9538278667 -2239213.15974095, 99729.885546254 -2239213.153015798, 99729.81988866537 -2239213.133098786, 99729.75937828515 -2239213.1007553143, 99729.70933799617 -2239213.05968831, 99729.6536699391 -2239213.05968831, 99729.58538832639 -2239213.052963158, 99729.51973073777 -2239213.0330461464, 99729.45922035754 -2239213.0007026745, 99729.40618256568 -2239212.957175683, 99729.36265557479 -2239212.9041378917, 99729.36144066231 -2239212.9018649505, 99729.35916771494 -2239212.9006500347, 99729.30612992308 -2239212.8571230434, 99729.26260293218 -2239212.804085252, 99729.26138801203 -2239212.8018122963, 99729.25911507235 -2239212.8005973846, 99729.20607728048 -2239212.7570703933, 99729.16255028959 -2239212.704032602, 99729.13020681753 -2239212.6435222216, 99729.11028980576 -2239212.577864633, 99729.10842543902 -2239212.5589353996, 99729.10602463798 -2239212.556965113, 99729.10405435445 -2239212.554564316, 99729.08512511359 -2239212.552699948, 99729.01946752497 -2239212.5327829365, 99728.95895714474 -2239212.5004394646, 99728.90891684328 -2239212.45937245, 99728.7531961561 -2239212.45937245, 99728.6849145434 -2239212.452647298, 99728.65314351355 -2239212.4430096615, 99728.62137248371 -2239212.452647298, 99728.553090871 -2239212.45937245, 99728.4530382284 -2239212.45937245, 99728.38475661569 -2239212.452647298, 99728.31909902707 -2239212.4327302864, 99728.25858864684 -2239212.4003868145, 99728.20854835787 -2239212.3593198103, 99727.8527223731 -2239212.3593198103, 99727.7844407604 -2239212.3525946583, 99727.71878317177 -2239212.3326776465, 99727.65827279155 -2239212.3003341747, 99727.60523499969 -2239212.2568071834, 99727.60326471574 -2239212.2544063856, 99727.58433547529 -2239212.252542018, 99727.51867788666 -2239212.232625006, 99727.45816750644 -2239212.2002815343, 99727.40512971458 -2239212.156754543, 99727.4031594219 -2239212.1543537346, 99727.38423019019 -2239212.152489368, 99727.31857260157 -2239212.132572356, 99727.25806222134 -2239212.1002288843, 99727.20502442948 -2239212.056701893, 99727.16149743859 -2239212.0036641015, 99727.1602825261 -2239212.0013911603, 99727.15800957875 -2239212.0001762444, 99727.10497178689 -2239211.956649253, 99727.061444796 -2239211.9036114616, 99727.02910132393 -2239211.8431010814, 99727.00918431216 -2239211.777443493, 99727.0024591603 -2239211.70916188, 99727.0024591603 -2239211.5090566, 99727.00918431216 -2239211.440774987, 99727.02910132393 -2239211.3751173983, 99727.061444796 -2239211.314607018, 99727.10497178689 -2239211.2615692266, 99727.15800957875 -2239211.2180422354, 99727.16028251879 -2239211.2168273237, 99727.16149743859 -2239211.2145543685, 99727.20502442948 -2239211.161516577, 99727.25806222134 -2239211.1179895857, 99727.31857260157 -2239211.085646114, 99727.38423019019 -2239211.065729102, 99727.40315943063 -2239211.0638647345, 99727.40512971458 -2239211.0614639367, 99727.45816750644 -2239211.0179369454, 99727.51867788666 -2239210.9855934735, 99727.58433547529 -2239210.965676462, 99727.652617088 -2239210.95895131, 99727.70828514507 -2239210.95895131, 99727.75832543404 -2239210.9178843056, 99727.81883581427 -2239210.8855408337, 99727.88449340289 -2239210.865623822, 99727.9527750156 -2239210.85889867, 99728.50870628557 -2239210.85889867, 99728.55874657455 -2239210.8178316657, 99728.61925695477 -2239210.785488194, 99728.6849145434 -2239210.765571182, 99728.7531961561 -2239210.75884603, 99728.90891684328 -2239210.75884603, 99728.95895714474 -2239210.7177790157, 99729.00351201139 -2239210.6939639435, 99729.00351201139 -2239210.652967404, 99728.9624450045 -2239210.6029271116, 99728.93010153243 -2239210.5424167314, 99728.92761427246 -2239210.534217334, 99728.91941488237 -2239210.5317300763, 99728.85890450215 -2239210.4993866044, 99728.80886421318 -2239210.4583196, 99728.7531961561 -2239210.4583196, 99728.7031698348 -2239210.4533924377, 99728.6531435135 -2239210.4583196, 99727.99715960103 -2239210.4583196, 99727.94711931206 -2239210.4993866044, 99727.88660893183 -2239210.5317300763, 99727.82095134321 -2239210.551647088, 99727.7526697305 -2239210.55837224, 99727.1523538752 -2239210.55837224, 99727.08407226249 -2239210.551647088, 99727.01841467386 -2239210.5317300763, 99726.95790429364 -2239210.4993866044, 99726.90486650178 -2239210.455859613, 99726.90289621825 -2239210.453458816, 99726.88396697739 -2239210.451594448, 99726.81830938876 -2239210.4316774365, 99726.75779900854 -2239210.3993339646, 99726.707758719 -2239210.35826696, 99726.6520906625 -2239210.35826696, 99726.58380904979 -2239210.351541808, 99726.5520380199 -2239210.3419041713, 99726.52026699 -2239210.351541808, 99726.50133774956 -2239210.3534061755, 99726.49936746561 -2239210.3558069733, 99726.44632967375 -2239210.3993339646, 99726.44405672654 -2239210.40054888, 99726.44284181402 -2239210.4028218216, 99726.4017748071 -2239210.452862114, 99726.4017748071 -2239210.90874074, 99726.39504965524 -2239210.9770223526, 99726.37513264347 -2239211.0426799413, 99726.34278917141 -2239211.1031903215, 99726.29926218052 -2239211.156228113, 99726.29686138059 -2239211.1581983985, 99726.29499701274 -2239211.177127643, 99726.27508000097 -2239211.2427852317, 99726.2427365289 -2239211.303295612, 99726.20166952201 -2239211.3533359044, 99726.20166952201 -2239211.40900395, 99726.19494437015 -2239211.477285563, 99726.17502735837 -2239211.5429431517, 99726.14268388631 -2239211.603453532, 99726.09915689542 -2239211.6564913234, 99726.04611910356 -2239211.7000183146, 99726.04384616365 -2239211.7012332263, 99726.0426312438 -2239211.7035061815, 99725.99910425291 -2239211.756543973, 99725.94606646105 -2239211.8000709643, 99725.88555608083 -2239211.832414436, 99725.8198984922 -2239211.852331448, 99725.7516168795 -2239211.8590566, 99725.6515642369 -2239211.8590566, 99725.5832826242 -2239211.852331448, 99725.51762503557 -2239211.832414436, 99725.45711465535 -2239211.8000709643, 99725.40407686349 -2239211.756543973, 99725.3605498726 -2239211.7035061815, 99725.35933495275 -2239211.7012332263, 99725.35706201284 -2239211.7000183146, 99725.30402422098 -2239211.6564913234, 99725.26049723009 -2239211.603453532, 99725.22815375803 -2239211.5429431517, 99725.20823674626 -2239211.477285563, 99725.20637237951 -2239211.4583563297, 99725.20397157838 -2239211.456386043, 99725.16044458748 -2239211.4033482517, 99725.12810111542 -2239211.3428378715, 99725.10818410365 -2239211.277180283, 99725.10145895179 -2239211.20889867, 99725.10145895179 -2239210.50853017, 99725.10818410365 -2239210.4402485574, 99725.12810111542 -2239210.3745909687, 99725.16044458748 -2239210.3140805885, 99725.2015115944 -2239210.264040296), - (99729.4984977109 -2239209.7583196, 99729.5536172965 -2239209.7583196, 99729.60421676433 -2239209.763303213, 99729.60628785078 -2239209.7607795866, 99729.60868865077 -2239209.758809301, 99729.61055301856 -2239209.739880057, 99729.63047003033 -2239209.6742224684, 99729.6628135024 -2239209.613712088, 99729.70388050929 -2239209.5636717957, 99729.70388050929 -2239209.50800375, 99729.70880767224 -2239209.457977425, 99729.70388050929 -2239209.4079511, 99729.70388050929 -2239209.352283054, 99729.6628135024 -2239209.3022427615, 99729.66159858255 -2239209.2999698063, 99729.65932564264 -2239209.2987548946, 99729.60628785078 -2239209.2552279034, 99729.60421676433 -2239209.252704277, 99729.5536172965 -2239209.25768789, 99729.3033014412 -2239209.25768789, 99729.3033014412 -2239209.30789846, 99729.29837427876 -2239209.35792478, 99729.3033014412 -2239209.4079511, 99729.3033014412 -2239209.4933322333, 99729.34785630785 -2239209.5171473054, 99729.40089409972 -2239209.5606742967, 99729.44442109061 -2239209.613712088, 99729.47676456267 -2239209.6742224684, 99729.49668157444 -2239209.739880057, 99729.4984977109 -2239209.7583196)) - - - - - buffer-0.75: see http://trac.osgeo.org/geos/wiki/BufferRobustness - - POLYGON((99724.80151159 -2239210.14114081,99724.80151159 -2239209.90821432,99724.81592263 -2239209.76189657,99724.85860194 -2239209.62120174,99724.9042938714 -2239209.53571816,99724.90156424 -2239209.50800375,99724.90156424 -2239209.4079511,99724.91597528 -2239209.26163336,99724.95865459 -2239209.12093853,99725.02796203 -2239208.99127343,99725.0428380369 -2239208.97314696,99725.05870723 -2239208.92083324,99725.12801467 -2239208.79116814,99725.22128679 -2239208.67751573,99725.2762402889 -2239208.63241656,99725.32133944 -2239208.57746309,99725.3762929231 -2239208.53236393,99725.42139208 -2239208.47741045,99725.4763455623 -2239208.43231129,99725.52144472 -2239208.3773578,99725.5763982031 -2239208.33225864,99725.62149736 -2239208.27730516,99725.6764508589 -2239208.23220599,99725.72155001 -2239208.17725252,99725.83520242 -2239208.0839804,99725.96486752 -2239208.01467296,99726.0171812128 -2239207.99880377,99726.0353077 -2239207.98392775,99726.1649728 -2239207.91462031,99726.30566764 -2239207.871941,99726.45198538 -2239207.85752996,99727.4525118 -2239207.85752996,99727.5025381233 -2239207.86245712,99727.55256445 -2239207.85752996,99727.8488737358 -2239207.85752996,99727.86018122 -2239207.82025418,99727.90314351 -2239207.73987739,99727.90314351 -2239207.60700354,99727.91755455 -2239207.4606858,99727.96023386 -2239207.31999096,99728.0295413 -2239207.19032586,99728.12281343 -2239207.07667345,99728.1777669131 -2239207.03157429,99728.22286607 -2239206.97662081,99728.2778195531 -2239206.93152165,99728.32291871 -2239206.87656817,99728.3778722081 -2239206.831469,99728.42297136 -2239206.77651552,99728.4779248283 -2239206.73141638,99728.523024 -2239206.67646288,99728.63667641 -2239206.58319076,99728.76634151 -2239206.51388332,99728.8010181124 -2239206.50336429,99728.82318193 -2239206.4763576,99728.93683434 -2239206.38308547,99729.06649944 -2239206.31377803,99729.118813149 -2239206.29790884,99729.13693962 -2239206.28303283,99729.26660472 -2239206.21372539,99729.40729956 -2239206.17104608,99729.5536173 -2239206.15663504,99729.5864384989 -2239206.15663504,99729.5979079113 -2239206.15050451,99729.60403844 -2239206.1390351,99729.60403844 -2239206.00616126,99729.61844948 -2239205.85984352,99729.66112879 -2239205.71914868,99729.73043623 -2239205.58948358,99729.82370835 -2239205.47583117,99729.8786618331 -2239205.43073201,99729.92376099 -2239205.37577853,99729.9787145011 -2239205.33067935,99730.02381364 -2239205.27572589,99730.13746605 -2239205.18245376,99730.26713115 -2239205.11314632,99730.3018077423 -2239205.10262729,99730.32397156 -2239205.0756206,99730.43762397 -2239204.98234848,99730.56728908 -2239204.91304104,99730.6196027728 -2239204.89717186,99730.63772926 -2239204.88229583,99730.76739436 -2239204.81298839,99730.90808919 -2239204.77030908,99731.05440693 -2239204.75589804,99731.0872281389 -2239204.75589804,99731.16760493 -2239204.71293575,99731.30829976 -2239204.67025644,99731.45461751 -2239204.6558454,99731.5874913489 -2239204.6558454,99731.66786814 -2239204.61288311,99731.7201818627 -2239204.59701392,99731.73830833 -2239204.58213791,99731.86797343 -2239204.51283047,99731.9026500223 -2239204.50231144,99731.92481384 -2239204.47530475,99731.979767316 -2239204.4302056,99732.02486649 -2239204.3752521,99732.0518731808 -2239204.35308828,99732.06239221 -2239204.31841169,99732.13169965 -2239204.18874659,99732.22497177 -2239204.07509417,99732.2799252531 -2239204.02999501,99732.32502441 -2239203.97504153,99732.43867683 -2239203.88176941,99732.56834193 -2239203.81246197,99732.70903676 -2239203.76978266,99732.8553545 -2239203.75537162,99733.15551243 -2239203.75537162,99733.30183017 -2239203.76978266,99733.442525 -2239203.81246197,99733.5721901 -2239203.88176941,99733.5903165651 -2239203.89664542,99733.64263029 -2239203.91251461,99733.77229539 -2239203.98182205,99733.8859478 -2239204.07509417,99733.9081116236 -2239204.10210087,99733.94278822 -2239204.1126199,99734.07245332 -2239204.18192734,99734.090579791 -2239204.19680335,99734.1428935 -2239204.21267254,99734.2725586 -2239204.28197998,99734.2906850673 -2239204.29685599,99734.34299879 -2239204.31272518,99734.4385623232 -2239204.36380495,99734.50246188 -2239204.37009851,99734.64315671 -2239204.41277782,99734.77282181 -2239204.48208526,99734.8634839262 -2239204.55648974,99735.00272509 -2239204.5702038,99735.14341993 -2239204.61288311,99735.27308503 -2239204.68219055,99735.38673744 -2239204.77546267,99735.48000956 -2239204.88911508,99735.549317 -2239205.01878018,99735.59199631 -2239205.15947502,99735.60640735 -2239205.30579276,99735.60640735 -2239205.80605597,99735.59199631 -2239205.95237371,99735.549317 -2239206.09306855,99735.48000956 -2239206.22273365,99735.38673744 -2239206.33638606,99735.3863763185 -2239206.33668242,99735.439088742 -2239206.3648578,99735.50298831 -2239206.37115136,99735.64368314 -2239206.41383068,99735.77334824 -2239206.48313812,99735.88700065 -2239206.57641024,99735.98027277 -2239206.69006265,99736.04958021 -2239206.81972775,99736.0654493992 -2239206.87204146,99736.08032542 -2239206.89016794,99736.14963286 -2239207.01983304,99736.19231217 -2239207.16052787,99736.20672321 -2239207.30684561,99736.20672321 -2239207.40689825,99736.2017960474 -2239207.45692457,99736.20672321 -2239207.50695089,99736.20672321 -2239207.63982474,99736.2496855 -2239207.72020153,99736.29236481 -2239207.86089637,99736.30677585 -2239208.00721411,99736.30677585 -2239208.04003531,99736.34973814 -2239208.1204121,99736.39241745 -2239208.26110694,99736.40682849 -2239208.40742468,99736.40682849 -2239208.44024588,99736.44979078 -2239208.52062267,99736.4924701 -2239208.66131751,99736.50688113 -2239208.80763525,99736.50688113 -2239208.94050908,99736.54984343 -2239209.02088589,99736.59252274 -2239209.16158072,99736.5988162972 -2239209.22548028,99736.64989607 -2239209.32104381,99736.69257538 -2239209.46173865,99736.6988689372 -2239209.52563821,99736.74994871 -2239209.62120174,99736.79262802 -2239209.76189657,99736.7967393798 -2239209.80363991,99736.88752708 -2239209.87814744,99736.9807992 -2239209.99179985,99737.05010664 -2239210.12146495,99737.09278595 -2239210.26215979,99737.10719699 -2239210.40847753,99737.10719699 -2239210.50230287,99737.18090448 -2239210.59211571,99737.25021192 -2239210.72178081,99737.2854776711 -2239210.83803638,99737.37419052 -2239210.88545439,99737.48784293 -2239210.97872651,99737.5329420869 -2239211.03367999,99737.58789557 -2239211.07877915,99737.6329947341 -2239211.13373264,99737.68794822 -2239211.1788318,99737.7101120377 -2239211.20583849,99737.74478863 -2239211.21635752,99737.87445373 -2239211.28566496,99737.98810614 -2239211.37893708,99738.0332052911 -2239211.43389055,99738.08815879 -2239211.47898972,99738.1332579599 -2239211.53394322,99738.18821143 -2239211.57904237,99738.28148355 -2239211.69269478,99738.35079099 -2239211.82235988,99738.3934703 -2239211.96305471,99738.40788134 -2239212.10937245,99738.40788134 -2239212.20942509,99738.3934703 -2239212.35574284,99738.35079099 -2239212.49643767,99738.2941740377 -2239212.60236054,99738.38831671 -2239212.67962143,99738.4334158619 -2239212.73457491,99738.48836936 -2239212.77967408,99738.58164148 -2239212.89332649,99738.65094892 -2239213.02299159,99738.69362823 -2239213.16368642,99738.70803927 -2239213.31000416,99738.70803927 -2239213.41005681,99738.69362823 -2239213.55637455,99738.65094892 -2239213.69706938,99738.6171829562 -2239213.76024105,99738.65094892 -2239213.82341273,99738.69362823 -2239213.96410756,99738.70803927 -2239214.1104253,99738.70803927 -2239214.31053059,99738.69362823 -2239214.45684833,99738.65094892 -2239214.59754316,99738.58164148 -2239214.72720826,99738.48836936 -2239214.84086067,99738.4334158741 -2239214.88595983,99738.38831671 -2239214.94091332,99738.2784097438 -2239215.03111163,99738.18821143 -2239215.1410186,99738.07455902 -2239215.23429073,99737.94489392 -2239215.30359817,99737.8341295888 -2239215.33719816,99737.88127298 -2239215.39464255,99737.95058042 -2239215.52430765,99737.99325973 -2239215.66500249,99737.9957755359 -2239215.6905459,99738.0783044636 -2239215.79110768,99738.18821143 -2239215.881306,99738.2784097438 -2239215.99121297,99738.38831671 -2239216.08141128,99738.4543715263 -2239216.1618993,99738.75846041 -2239216.1618993,99738.90477815 -2239216.17631033,99739.04547299 -2239216.21898965,99739.17513809 -2239216.28829709,99739.193264561 -2239216.3031731,99739.24557827 -2239216.31904229,99739.37524337 -2239216.38834973,99739.48889578 -2239216.48162185,99739.5088552311 -2239216.50594251,99739.52881468 -2239216.48162185,99739.64246709 -2239216.38834973,99739.77213219 -2239216.31904229,99739.91282702 -2239216.27636298,99740.05914476 -2239216.26195194,99740.15919741 -2239216.26195194,99740.20922373 -2239216.2668791,99740.25925005 -2239216.26195194,99740.35930269 -2239216.26195194,99740.50562043 -2239216.27636298,99740.64631527 -2239216.31904229,99740.77598037 -2239216.38834973,99740.88963278 -2239216.48162185,99740.9829049 -2239216.59527426,99741.05221234 -2239216.72493936,99741.09489165 -2239216.8656342,99741.10930269 -2239217.01195194,99741.10930269 -2239217.21205722,99741.09489165 -2239217.35837496,99741.05221234 -2239217.4990698,99741.00925005 -2239217.57944659,99741.00925005 -2239217.71232044,99740.99483901 -2239217.85863818,99740.9521597 -2239217.99933301,99740.88285226 -2239218.12899811,99740.78958014 -2239218.24265052,99740.67592772 -2239218.33592264,99740.54626262 -2239218.40523008,99740.40556779 -2239218.4479094,99740.25925005 -2239218.46232044,99740.255319081 -2239218.46232044,99740.18926428 -2239218.54280845,99740.07561187 -2239218.63608057,99739.94594677 -2239218.70538801,99739.8936330476 -2239218.7212572,99739.87550658 -2239218.73613321,99739.74584148 -2239218.80544066,99739.60514665 -2239218.84811997,99739.4659054834 -2239218.86183403,99739.4339422969 -2239218.88806554,99739.38884314 -2239218.94301902,99739.27519073 -2239219.03629114,99739.14552563 -2239219.10559858,99739.1108490276 -2239219.11611761,99739.08868521 -2239219.1431243,99738.9750328 -2239219.23639643,99738.8453677 -2239219.30570387,99738.70467287 -2239219.34838318,99738.6629295295 -2239219.35249454,99738.588422 -2239219.44328223,99738.5334685047 -2239219.4883814,99738.48836936 -2239219.54333487,99738.37471695 -2239219.636607,99738.24505185 -2239219.70591444,99738.10435701 -2239219.74859375,99737.95803927 -2239219.76300479,99737.8251654211 -2239219.76300479,99737.74478863 -2239219.80596708,99737.6040938 -2239219.84864639,99737.45777606 -2239219.86305743,99737.4249548511 -2239219.86305743,99737.34457806 -2239219.90601972,99737.20388323 -2239219.94869903,99737.05756549 -2239219.96311007,99736.95751285 -2239219.96311007,99736.8111951 -2239219.94869903,99736.67050027 -2239219.90601972,99736.5901234789 -2239219.86305743,99736.45724963 -2239219.86305743,99736.31093189 -2239219.84864639,99736.17023706 -2239219.80596708,99736.04057196 -2239219.73665964,99735.9362647377 -2239219.65105692,99735.91072132 -2239219.64854111,99735.77002649 -2239219.6058618,99735.64036139 -2239219.53655436,99735.52670898 -2239219.44328223,99735.4816098189 -2239219.38832875,99735.42665633 -2239219.34322959,99735.33338421 -2239219.22957718,99735.26407677 -2239219.09991208,99735.22139746 -2239218.95921724,99735.20698642 -2239218.8128995,99735.20698642 -2239218.71284686,99735.2119135826 -2239218.66282054,99735.20698642 -2239218.61279422,99735.20698642 -2239218.47992037,99735.16402413 -2239218.39954358,99735.12134482 -2239218.25884875,99735.1172334606 -2239218.21710542,99735.02644576 -2239218.14259788,99734.93317364 -2239218.02894547,99734.8638662 -2239217.89928037,99734.8524401864 -2239217.86161385,99734.80638103 -2239217.85707742,99734.75635471 -2239217.86200458,99734.7235335011 -2239217.86200458,99734.64315671 -2239217.90496687,99734.50246188 -2239217.94764618,99734.35614414 -2239217.96205722,99734.2560915 -2239217.96205722,99734.2060651767 -2239217.95713006,99734.15603885 -2239217.96205722,99734.0622135113 -2239217.96205722,99733.97240067 -2239218.03576472,99733.84273557 -2239218.10507216,99733.70204074 -2239218.14775147,99733.555723 -2239218.16216251,99733.45567036 -2239218.16216251,99733.3556177116 -2239218.15230819,99733.3379832532 -2239218.15404503,99733.24241972 -2239218.2051248,99733.10172488 -2239218.24780411,99732.95540714 -2239218.26221515,99732.8553545 -2239218.26221515,99732.70903676 -2239218.24780411,99732.56834193 -2239218.2051248,99732.4879651389 -2239218.16216251,99732.45514393 -2239218.16216251,99732.30882619 -2239218.14775147,99732.16813136 -2239218.10507216,99732.072567829 -2239218.05399239,99732.00866826 -2239218.04769883,99731.86797343 -2239218.00501951,99731.73830833 -2239217.93571207,99731.62465592 -2239217.84243995,99731.579556759 -2239217.78748647,99731.52460327 -2239217.74238731,99731.43133115 -2239217.6287349,99731.36202371 -2239217.4990698,99731.3193444 -2239217.35837496,99731.30493336 -2239217.21205722,99731.30493336 -2239217.01195194,99731.3193444 -2239216.8656342,99731.36202371 -2239216.72493936,99731.404986 -2239216.64456257,99731.404986 -2239216.61174137,99731.41939704 -2239216.46542363,99731.46207635 -2239216.32472879,99731.5077682803 -2239216.2392452,99731.50503865 -2239216.2115308,99731.50503865 -2239216.11147815,99731.51944969 -2239215.96516041,99731.562129 -2239215.82446558,99731.60509129 -2239215.74408879,99731.60509129 -2239215.71126758,99731.6149456152 -2239215.61121494,99731.60509129 -2239215.5111623,99731.60509129 -2239215.47834109,99731.562129 -2239215.3979643,99731.5462598148 -2239215.34565061,99731.53138379 -2239215.32752412,99731.46207635 -2239215.19785902,99731.4462071551 -2239215.1455453,99731.43133115 -2239215.12741883,99731.36202371 -2239214.99775373,99731.3461545199 -2239214.94544002,99731.33127851 -2239214.92731355,99731.26197107 -2239214.79764845,99731.21929176 -2239214.65695361,99731.20488072 -2239214.51063587,99731.20488072 -2239214.47781467,99731.16191843 -2239214.39743788,99731.151399397 -2239214.36276128,99731.1243927 -2239214.34059746,99731.03112058 -2239214.22694505,99730.96181314 -2239214.09727995,99730.9512941077 -2239214.06260335,99730.92428742 -2239214.04043953,99730.9021236047 -2239214.01343284,99730.867447 -2239214.00291381,99730.7377819 -2239213.93360637,99730.719655429 -2239213.91873036,99730.66734172 -2239213.90286117,99730.53767662 -2239213.83355373,99730.4333693977 -2239213.74795101,99730.40782598 -2239213.7454352,99730.26713115 -2239213.70275589,99730.13746605 -2239213.63344844,99730.1193395827 -2239213.61857243,99730.06702586 -2239213.60270324,99729.9866490689 -2239213.55974095,99729.95382787 -2239213.55974095,99729.80751013 -2239213.54532991,99729.66681529 -2239213.5026506,99729.5712517568 -2239213.45157083,99729.5073522 -2239213.44527727,99729.36665736 -2239213.40259796,99729.23699226 -2239213.33329052,99729.12333985 -2239213.24001839,99729.0782406931 -2239213.18506491,99729.02328721 -2239213.13996575,99728.9781880531 -2239213.08501227,99728.92323457 -2239213.03991311,99728.82996244 -2239212.9262607,99728.7974867573 -2239212.86550297,99728.7860173589 -2239212.85937245,99728.75319616 -2239212.85937245,99728.6531435116 -2239212.84951812,99728.55309087 -2239212.85937245,99728.45303823 -2239212.85937245,99728.30672049 -2239212.84496141,99728.16602565 -2239212.8022821,99728.0856488589 -2239212.75931981,99727.85272237 -2239212.75931981,99727.70640463 -2239212.74490877,99727.5657098 -2239212.70222946,99727.4360447 -2239212.63292202,99727.4179182327 -2239212.61804601,99727.36560451 -2239212.60217682,99727.23593941 -2239212.53286938,99727.21781293 -2239212.51799336,99727.16549923 -2239212.50212417,99727.03583413 -2239212.43281673,99726.92218172 -2239212.33954461,99726.8770825589 -2239212.28459113,99726.82212907 -2239212.23949197,99726.72885695 -2239212.12583956,99726.65954951 -2239211.99617446,99726.6168702 -2239211.85547962,99726.60245916 -2239211.70916188,99726.60245916 -2239211.5090566,99726.6066003423 -2239211.46701047,99726.5935520379 -2239211.49142213,99726.58725848 -2239211.5553217,99726.54457917 -2239211.69601653,99726.47527173 -2239211.82568163,99726.38199961 -2239211.93933404,99726.3270461269 -2239211.9844332,99726.28194697 -2239212.03938668,99726.16829455 -2239212.13265881,99726.03862945 -2239212.20196625,99725.89793462 -2239212.24464556,99725.75161688 -2239212.2590566,99725.65156424 -2239212.2590566,99725.5052465 -2239212.24464556,99725.36455166 -2239212.20196625,99725.23488656 -2239212.13265881,99725.12123415 -2239212.03938668,99725.0761349931 -2239211.9844332,99725.02118151 -2239211.93933404,99724.92790939 -2239211.82568163,99724.85860194 -2239211.69601653,99724.8427327449 -2239211.6437028,99724.82785674 -2239211.62557634,99724.7585493 -2239211.49591124,99724.71586999 -2239211.35521641,99724.70145895 -2239211.20889867,99724.70145895 -2239210.50853017,99724.71586999 -2239210.36221243,99724.7585493 -2239210.2215176,99724.80151159 -2239210.14114081),(99726.8770825589 -2239210.93362735,99726.8959962418 -2239210.91058097,99726.8653413 -2239210.90128189,99726.80177481 -2239210.86730489,99726.80177481 -2239210.90874074,99726.7911658513 -2239211.0164553,99726.82212907 -2239210.97872651,99726.8770825589 -2239210.93362735)) - - - - - buffer-1.01 (#494) - - POLYGON ((99724.5415116 -2239210.07866999,99724.5415116 -2239209.9082143,99724.5609185 -2239209.7111731,99724.6183933 -2239209.521704,99724.6415642 -2239209.4783543,99724.6415642 -2239209.4079511,99724.6609711 -2239209.2109099,99724.7184459 -2239209.0214408,99724.8094364244 -2239208.85120953,99724.8184986 -2239208.8213356,99724.9118326 -2239208.6467199,99725.037439 -2239208.493668,99725.0923925052 -2239208.44856881,99725.1374917 -2239208.3936153,99725.19244517 -2239208.34851617,99725.2375443 -2239208.2935627,99725.2924978955 -2239208.24846343,99725.337597 -2239208.19351,99725.39255036 -2239208.14841096,99725.4376496 -2239208.0934574,99725.4926031603 -2239208.04835816,99725.5377022 -2239207.9934048,99725.6907542 -2239207.8677983,99725.8653698 -2239207.7744643,99725.8952440723 -2239207.76540204,99726.0654751 -2239207.6744116,99726.2549442 -2239207.6169368,99726.4519854 -2239207.59753,99727.4525118 -2239207.59753,99727.5025381 -2239207.60245714,99727.5525644 -2239207.59753,99727.64407656 -2239207.59753,99727.6625504 -2239207.4099623,99727.7200252 -2239207.2204933,99727.8133592 -2239207.0458776,99727.9389657 -2239206.8928257,99727.9939189892 -2239206.84772668,99728.0390183 -2239206.792773,99728.09397177 -2239206.74767387,99728.1390709 -2239206.6927204,99728.1940245825 -2239206.64762109,99728.2391236 -2239206.5926678,99728.2940769089 -2239206.54756877,99728.3391762 -2239206.4926151,99728.4922281 -2239206.3670087,99728.6537698364 -2239206.28066278,99728.7923861 -2239206.1669034,99728.9670017 -2239206.0735694,99728.9968758442 -2239206.06450717,99729.167107 -2239205.9735167,99729.3528016278 -2239205.91718687,99729.3634453 -2239205.80912,99729.4209201 -2239205.619651,99729.5142541 -2239205.4450353,99729.6398606 -2239205.2919834,99729.6948141603 -2239205.24688416,99729.7399132 -2239205.1919308,99729.7948667052 -2239205.14683161,99729.8399659 -2239205.0918781,99729.9930178 -2239204.9662717,99730.1545592497 -2239204.87992594,99730.2931757 -2239204.7661664,99730.4677914 -2239204.6728324,99730.4976652713 -2239204.66377026,99730.6678967 -2239204.5727797,99730.8573657 -2239204.5153049,99731.0180600617 -2239204.49947786,99731.0681072 -2239204.4727271,99731.2575763 -2239204.4152523,99731.4546175 -2239204.3958454,99731.5250206377 -2239204.3958454,99731.5683705 -2239204.3726744,99731.5982447981 -2239204.36361213,99731.7554017157 -2239204.27960999,99731.7959194991 -2239204.24635789,99731.8291718013 -2239204.2058398,99731.9155175 -2239204.0442983,99732.041124 -2239203.8912464,99732.0960776663 -2239203.84614711,99732.1411767 -2239203.7911938,99732.2942286 -2239203.6655873,99732.4688442 -2239203.5722533,99732.6583133 -2239203.5147785,99732.8553545 -2239203.4953716,99733.1555124 -2239203.4953716,99733.3525537 -2239203.5147785,99733.5420227 -2239203.5722533,99733.7122537168 -2239203.66324364,99733.742128 -2239203.6723059,99733.9167436 -2239203.76564,99734.0553600971 -2239203.8793995,99734.2125173287 -2239203.96340176,99734.2423912 -2239203.9724639,99734.4126222168 -2239204.06345424,99734.4424965 -2239204.0725165,99734.5151443635 -2239204.1113476,99734.5531854 -2239204.1150943,99734.7426544 -2239204.1725691,99734.9172701 -2239204.2659032,99734.9669580798 -2239204.30668106,99735.0534486 -2239204.3151996,99735.2429176 -2239204.3726744,99735.4175333 -2239204.4660085,99735.5705852 -2239204.5916149,99735.6961917 -2239204.7446668,99735.7895257 -2239204.9192825,99735.8470005 -2239205.1087515,99735.8664074 -2239205.3057928,99735.8664074 -2239205.806056,99735.8470005 -2239206.0030972,99735.7895257 -2239206.1925662,99735.7871029413 -2239206.19709886,99735.9177965 -2239206.266956,99736.0708484 -2239206.3925625,99736.1964549 -2239206.5456144,99736.2897889 -2239206.7202301,99736.2988511704 -2239206.7501044,99736.3898415 -2239206.9203353,99736.4473163 -2239207.1098044,99736.4667232 -2239207.3068456,99736.4667232 -2239207.4068983,99736.4617960304 -2239207.4569246,99736.4667232 -2239207.5069509,99736.4667232 -2239207.57735392,99736.4898942 -2239207.6207038,99736.547369 -2239207.8101729,99736.5631959389 -2239207.97086704,99736.5899468 -2239208.0209144,99736.6474216 -2239208.2103835,99736.6632486227 -2239208.37107766,99736.6899995 -2239208.421125,99736.7474743 -2239208.610594,99736.7668811 -2239208.8076352,99736.7668811 -2239208.87803829,99736.7900521 -2239208.9213882,99736.8475269 -2239209.1108572,99736.8512736244 -2239209.14889828,99736.8901047 -2239209.2215461,99736.9475796 -2239209.4110152,99736.951326291 -2239209.44905612,99736.9901574 -2239209.521704,99737.0329471384 -2239209.66276292,99737.0713748 -2239209.6942997,99737.1969813 -2239209.8473516,99737.2903153 -2239210.0219673,99737.3477901 -2239210.2114363,99737.367197 -2239210.4084775,99737.367197 -2239210.41124683,99737.3970866 -2239210.4476674,99737.4904206 -2239210.6222831,99737.5019722663 -2239210.66036386,99737.5186388 -2239210.6692723,99737.6716907 -2239210.7948787,99737.7167900108 -2239210.84983238,99737.7717433 -2239210.8949314,99737.8168423337 -2239210.94988471,99737.8573605503 -2239210.98313714,99738.018902 -2239211.0694829,99738.1719539 -2239211.1950893,99738.2170533011 -2239211.25004306,99738.2720065 -2239211.295142,99738.3171054434 -2239211.3500952,99738.3720592 -2239211.3951946,99738.4976657 -2239211.5482465,99738.5909997 -2239211.7228622,99738.6484745 -2239211.9123312,99738.6678813 -2239212.1093725,99738.6678813 -2239212.2094251,99738.6484745 -2239212.4064663,99738.6081004414 -2239212.53956179,99738.61726363 -2239212.55072717,99738.6722171 -2239212.5958263,99738.7978236 -2239212.7488782,99738.8911576 -2239212.9234939,99738.9486324 -2239213.1129629,99738.9680393 -2239213.3100042,99738.9680393 -2239213.4100568,99738.9486324 -2239213.607098,99738.9021769824 -2239213.76024105,99738.9486324 -2239213.9133841,99738.9680393 -2239214.1104253,99738.9680393 -2239214.3105306,99738.9486324 -2239214.5075718,99738.8911576 -2239214.6970409,99738.7978236 -2239214.8716565,99738.6722171 -2239215.0247084,99738.6172637911 -2239215.06980743,99738.5721645 -2239215.1247611,99738.462257725 -2239215.21495922,99738.3720592 -2239215.3248664,99738.2190073 -2239215.4504728,99738.2014247057 -2239215.45987089,99738.2367425085 -2239215.57629807,99738.2621522445 -2239215.60725993,99738.3720592 -2239215.6974582,99738.462257725 -2239215.80736538,99738.5721645 -2239215.8975635,99738.5757227977 -2239215.9018993,99738.7584604 -2239215.9018993,99738.9555016 -2239215.9213062,99739.1449707 -2239215.978781,99739.3152014914 -2239216.06977127,99739.345076 -2239216.0788336,99739.5088552031 -2239216.16637542,99739.6726345 -2239216.0788336,99739.8621035 -2239216.0213588,99740.0591448 -2239216.0019519,99740.1591974 -2239216.0019519,99740.2092237 -2239216.00687907,99740.25925 -2239216.0019519,99740.3593027 -2239216.0019519,99740.5563439 -2239216.0213588,99740.745813 -2239216.0788336,99740.9204286 -2239216.1721676,99741.0734805 -2239216.2977741,99741.199087 -2239216.450826,99741.292421 -2239216.6254417,99741.3498958 -2239216.8149107,99741.3693027 -2239217.0119519,99741.3693027 -2239217.2120572,99741.3498958 -2239217.4090984,99741.292421 -2239217.5985675,99741.26925 -2239217.64191741,99741.26925 -2239217.7123204,99741.2498432 -2239217.9093617,99741.1923684 -2239218.0988307,99741.0990344 -2239218.2734464,99740.9734279 -2239218.4264983,99740.820376 -2239218.5521047,99740.6457603 -2239218.6454388,99740.4562913 -2239218.7029136,99740.3869959453 -2239218.70973857,99740.373112 -2239218.7266562,99740.2200601 -2239218.8522627,99740.0454445 -2239218.9455967,99740.0155699914 -2239218.95465903,99739.8453392 -2239219.0456493,99739.6558701 -2239219.1031241,99739.5865749089 -2239219.10994909,99739.5726909 -2239219.1268668,99739.419639 -2239219.2524732,99739.2580975504 -2239219.33881896,99739.1194811 -2239219.4525785,99738.9448654 -2239219.5459125,99738.8038065828 -2239219.5887023,99738.7722698 -2239219.62713,99738.7173161175 -2239219.67222931,99738.6722171 -2239219.7271826,99738.5191652 -2239219.8527891,99738.3445495 -2239219.9461231,99738.1550805 -2239220.0035979,99737.9580393 -2239220.0230048,99737.8876361623 -2239220.0230048,99737.8442863 -2239220.0461758,99737.6548173 -2239220.1036506,99737.4941231253 -2239220.11947754,99737.4440758 -2239220.1462284,99737.2546067 -2239220.2037032,99737.0575655 -2239220.2231101,99736.9575128 -2239220.2231101,99736.7604716 -2239220.2037032,99736.5710026 -2239220.1462284,99736.5276526912 -2239220.1230574,99736.4572496 -2239220.1230574,99736.2602084 -2239220.1036506,99736.0707394 -2239220.0461758,99735.8961237 -2239219.9528417,99735.8220170434 -2239219.89202396,99735.6705288 -2239219.8460705,99735.4959131 -2239219.7527365,99735.3428612 -2239219.62713,99735.29776207 -2239219.57217653,99735.2428086 -2239219.5270774,99735.1172021 -2239219.3740254,99735.0238681 -2239219.1994098,99734.9663933 -2239219.0099407,99734.9469864 -2239218.8128995,99734.9469864 -2239218.7128469,99734.9519135732 -2239218.66282054,99734.9469864 -2239218.6127942,99734.9469864 -2239218.54239114,99734.9238154 -2239218.4990413,99734.8810256616 -2239218.35798238,99734.842598 -2239218.3264456,99734.7169915 -2239218.1733937,99734.7075934665 -2239218.15581122,99734.5531854 -2239218.2026504,99734.3561441 -2239218.2220572,99734.2560915 -2239218.2220572,99734.2060652 -2239218.21713006,99734.1560389 -2239218.2220572,99734.153269497 -2239218.2220572,99734.1168489 -2239218.2519468,99733.9422333 -2239218.3452808,99733.7527642 -2239218.4027556,99733.555723 -2239218.4221625,99733.4556704 -2239218.4221625,99733.3962216239 -2239218.4163073,99733.3419174 -2239218.4453335,99733.1524484 -2239218.5028083,99732.9554071 -2239218.5222152,99732.8553545 -2239218.5222152,99732.6583133 -2239218.5028083,99732.4688442 -2239218.4453335,99732.4187968324 -2239218.41858262,99732.2581027 -2239218.4027556,99732.0686337 -2239218.3452808,99731.9959858341 -2239218.30644972,99731.9579448 -2239218.302703,99731.7684757 -2239218.2452282,99731.5938601 -2239218.1518942,99731.4408082 -2239218.0262877,99731.3957091663 -2239217.97133439,99731.3407555 -2239217.9262351,99731.2151491 -2239217.7731832,99731.121815 -2239217.5985675,99731.0643402 -2239217.4090984,99731.0449334 -2239217.2120572,99731.0449334 -2239217.0119519,99731.0643402 -2239216.8149107,99731.121815 -2239216.6254417,99731.1485658751 -2239216.57539437,99731.1643929 -2239216.4147001,99731.2218677 -2239216.2252311,99731.2450386 -2239216.18188138,99731.2450386 -2239216.1114782,99731.2644455 -2239215.9144369,99731.3219203 -2239215.7249679,99731.3486711837 -2239215.6749205,99731.354945644 -2239215.61121495,99731.3486711837 -2239215.5475094,99731.3219203 -2239215.497462,99731.3128580278 -2239215.4675877,99731.2218677 -2239215.2973567,99731.2128054311 -2239215.26748241,99731.121815 -2239215.0972514,99731.1127527279 -2239215.0673771,99731.0217624 -2239214.8971461,99730.9642876 -2239214.7076771,99730.9484605738 -2239214.5469829,99730.9286978954 -2239214.51000958,99730.8149385 -2239214.3713933,99730.7377477001 -2239214.22697941,99730.5977179188 -2239214.15213197,99730.567844 -2239214.1430698,99730.3932284 -2239214.0497358,99730.3191216666 -2239213.98891804,99730.1676335 -2239213.9429646,99729.997402493 -2239213.85197417,99729.9675282 -2239213.8429119,99729.9174808437 -2239213.81616104,99729.7567866 -2239213.8003341,99729.5673176 -2239213.7428593,99729.4946695048 -2239213.7040281,99729.4566287 -2239213.7002814,99729.2671597 -2239213.6428066,99729.092544 -2239213.5494726,99728.9394921 -2239213.4238662,99728.8943929214 -2239213.36891268,99728.8394394 -2239213.3238135,99728.79434027 -2239213.26886003,99728.7393868 -2239213.2237609,99728.6461920537 -2239213.11020282,99728.5530909 -2239213.1193725,99728.4530382 -2239213.1193725,99728.255997 -2239213.0999656,99728.066528 -2239213.0424908,99728.0231780912 -2239213.0193198,99727.8527224 -2239213.0193198,99727.6556811 -2239212.9999129,99727.4662121 -2239212.9424381,99727.2959810832 -2239212.85144776,99727.2661068 -2239212.8423855,99727.0958760086 -2239212.75139523,99727.0660015 -2239212.7423329,99726.8913859 -2239212.6489988,99726.738334 -2239212.5233924,99726.6932348052 -2239212.4684389,99726.6382813 -2239212.4233397,99726.5126749 -2239212.2702878,99726.4789537659 -2239212.20720004,99726.4657947 -2239212.2232344,99726.3127428 -2239212.3488409,99726.1381271 -2239212.4421749,99725.9486581 -2239212.4996497,99725.7516169 -2239212.5190566,99725.6515642 -2239212.5190566,99725.454523 -2239212.4996497,99725.265054 -2239212.4421749,99725.0904383 -2239212.3488409,99724.9373864 -2239212.2232344,99724.8922873825 -2239212.16828111,99724.8373337 -2239212.1231818,99724.7117273 -2239211.9701299,99724.6183933 -2239211.7955142,99724.6093311591 -2239211.76564033,99724.5183406 -2239211.5954089,99724.4608658 -2239211.4059399,99724.441459 -2239211.2088987,99724.441459 -2239210.5085302,99724.4608658 -2239210.3114889,99724.5183406 -2239210.1220199,99724.5415116 -2239210.07866999)) - - - - - buffer-1.1 - - POLYGON ((99724.45151159 -2239210.0570456,99724.45151159 -2239209.90821432,99724.47264779 -2239209.69361496,99724.53524411 -2239209.48726254,99724.55156424 -2239209.45672972,99724.55156424 -2239209.4079511,99724.57270043 -2239209.19335175,99724.63529675 -2239208.98699933,99724.7262871367 -2239208.81676829,99724.73534939 -2239208.78689404,99724.83700031 -2239208.59671856,99724.97379942 -2239208.43002836,99725.0287529111 -2239208.38492919,99725.07385206 -2239208.32997572,99725.128805548 -2239208.28487656,99725.17390471 -2239208.22992307,99725.2288581827 -2239208.18482392,99725.27395735 -2239208.12987043,99725.3289108328 -2239208.08477127,99725.37400999 -2239208.02981779,99725.4289634811 -2239207.98471862,99725.47406263 -2239207.92976515,99725.64075284 -2239207.79296603,99725.83092832 -2239207.69131512,99725.8608025436 -2239207.68225287,99726.0310336 -2239207.59126248,99726.23738602 -2239207.52866615,99726.45198538 -2239207.50752996,99727.4525118 -2239207.50752996,99727.502538125 -2239207.51245712,99727.55256445 -2239207.50752996,99727.5629408061 -2239207.50752996,99727.57427971 -2239207.39240418,99727.63687603 -2239207.18605176,99727.73852694 -2239206.99587628,99727.87532605 -2239206.82918608,99727.9302795548 -2239206.7840869,99727.9753787 -2239206.72913344,99728.0303321742 -2239206.68403429,99728.07543134 -2239206.62908079,99728.1303848228 -2239206.58398163,99728.17548398 -2239206.52902815,99728.2304374628 -2239206.48392899,99728.27553662 -2239206.42897551,99728.44222683 -2239206.29217639,99728.6037683473 -2239206.20583065,99728.74238476 -2239206.09207111,99728.93256024 -2239205.9904202,99728.9624344654 -2239205.98135795,99729.13266552 -2239205.89036755,99729.2695322976 -2239205.84884947,99729.27517463 -2239205.7915619,99729.33777095 -2239205.58520948,99729.43942186 -2239205.395034,99729.57622098 -2239205.2283438,99729.6311744542 -2239205.18324465,99729.67627362 -2239205.12829115,99729.7312271028 -2239205.08319199,99729.77632626 -2239205.02823851,99729.94301647 -2239204.8914394,99730.1045579766 -2239204.80509367,99730.24317439 -2239204.69133411,99730.43334987 -2239204.5896832,99730.4632241149 -2239204.58062095,99730.63345516 -2239204.48963056,99730.83980758 -2239204.42703424,99730.9915507716 -2239204.41208883,99731.03366573 -2239204.38957792,99731.24001815 -2239204.32698159,99731.45461751 -2239204.3058454,99731.5033961238 -2239204.3058454,99731.53392894 -2239204.28952527,99731.5638031868 -2239204.28046302,99731.7054002625 -2239204.2047778,99731.7322799528 -2239204.18271821,99731.7543395289 -2239204.15583854,99731.84068528 -2239203.994297,99731.9774844 -2239203.8276068,99732.0324378828 -2239203.78250764,99732.07753704 -2239203.72755416,99732.24422724 -2239203.59075504,99732.43440273 -2239203.48910413,99732.64075515 -2239203.42650781,99732.8553545 -2239203.40537162,99733.15551243 -2239203.40537162,99733.37011178 -2239203.42650781,99733.5764642 -2239203.48910413,99733.7466952432 -2239203.58009452,99733.77656949 -2239203.58915677,99733.96674497 -2239203.69080769,99734.1053613588 -2239203.80456722,99734.2469584764 -2239203.88025245,99734.2768327 -2239203.8893147,99734.4470637803 -2239203.98030511,99734.47693799 -2239203.98936735,99734.5416536026 -2239204.02395857,99734.57074349 -2239204.02682367,99734.77709591 -2239204.08941999,99734.9672714 -2239204.1910709,99735.002776056 -2239204.22020882,99735.07100671 -2239204.22692895,99735.27735913 -2239204.28952527,99735.46753461 -2239204.39117618,99735.63422481 -2239204.5279753,99735.77102393 -2239204.6946655,99735.87267484 -2239204.88484098,99735.93527116 -2239205.0911934,99735.95640735 -2239205.30579276,99735.95640735 -2239205.80605597,99735.93527116 -2239206.02065533,99735.8950519575 -2239206.15324028,99735.96779782 -2239206.19212375,99736.13448802 -2239206.32892287,99736.27128714 -2239206.49561307,99736.37293805 -2239206.68578855,99736.3820002963 -2239206.71566277,99736.47299069 -2239206.88589383,99736.53558702 -2239207.09224626,99736.55672321 -2239207.30684561,99736.55672321 -2239207.40689825,99736.5517960479 -2239207.45692457,99736.55672321 -2239207.50695089,99736.55672321 -2239207.55572952,99736.57304334 -2239207.58626233,99736.63563966 -2239207.79261475,99736.6505850566 -2239207.94435792,99736.67309598 -2239207.9864729,99736.7356923 -2239208.19282532,99736.7506376966 -2239208.34456849,99736.77314862 -2239208.38668347,99736.83574494 -2239208.59303589,99736.85688113 -2239208.80763525,99736.85688113 -2239208.85641386,99736.87320126 -2239208.88694668,99736.93579759 -2239209.09329911,99736.9386626941 -2239209.122389,99736.97325391 -2239209.18710461,99737.03585023 -2239209.39345703,99737.0387153344 -2239209.42254693,99737.07330655 -2239209.48726254,99737.1107700712 -2239209.61076322,99737.13501445 -2239209.63066007,99737.27181356 -2239209.79735027,99737.37346448 -2239209.98752575,99737.4360608 -2239210.19387817,99737.4539791828 -2239210.37580658,99737.47191885 -2239210.39766613,99737.57356976 -2239210.58784161,99737.5778688697 -2239210.60201388,99737.7353303 -2239210.73123914,99737.7804294535 -2239210.78619261,99737.83538295 -2239210.83129178,99737.8804821072 -2239210.88624526,99737.9073617975 -2239210.90830485,99738.06890331 -2239210.99465059,99738.23559352 -2239211.13144971,99738.2806926772 -2239211.18640319,99738.33564616 -2239211.23150235,99738.3807453172 -2239211.28645583,99738.4356988 -2239211.33155499,99738.57249792 -2239211.4982452,99738.67414883 -2239211.68842068,99738.73674515 -2239211.8947731,99738.75788134 -2239212.10937245,99738.75788134 -2239212.20942509,99738.73674515 -2239212.42402445,99738.7102974729 -2239212.51121076,99738.73585673 -2239212.5321867,99738.87265584 -2239212.69887691,99738.97430676 -2239212.88905239,99739.03690308 -2239213.09540481,99739.05803927 -2239213.31000416,99739.05803927 -2239213.41005681,99739.03690308 -2239213.62465616,99738.9957738532 -2239213.76024105,99739.03690308 -2239213.89582595,99739.05803927 -2239214.1104253,99739.05803927 -2239214.31053059,99739.03690308 -2239214.52512994,99738.97430676 -2239214.73148236,99738.87265584 -2239214.92165784,99738.73585673 -2239215.08834805,99738.6809032472 -2239215.13344721,99738.63580409 -2239215.18840069,99738.5258971362 -2239215.27859899,99738.4356988 -2239215.38850598,99738.3057292327 -2239215.49516925,99738.3172807609 -2239215.53324953,99738.3257918344 -2239215.54362031,99738.4356988 -2239215.63381862,99738.5258971196 -2239215.74372559,99738.6089670129 -2239215.81189929,99738.75846041 -2239215.81189929,99738.97305977 -2239215.83303549,99739.17941219 -2239215.89563181,99739.3496432464 -2239215.9866222,99739.37951747 -2239215.99568445,99739.50885523 -2239216.06481692,99739.63819299 -2239215.99568445,99739.84454541 -2239215.93308813,99740.05914476 -2239215.91195194,99740.15919741 -2239215.91195194,99740.20922373 -2239215.9168791,99740.25925005 -2239215.91195194,99740.35930269 -2239215.91195194,99740.57390205 -2239215.93308813,99740.78025447 -2239215.99568445,99740.97042995 -2239216.09733536,99741.13712015 -2239216.23413448,99741.27391927 -2239216.40082468,99741.37557018 -2239216.59100016,99741.4381665 -2239216.79735258,99741.45930269 -2239217.01195194,99741.45930269 -2239217.21205722,99741.4381665 -2239217.42665658,99741.37557018 -2239217.633009,99741.35925005 -2239217.66354182,99741.35925005 -2239217.71232044,99741.33811386 -2239217.92691979,99741.27551754 -2239218.13327221,99741.17386662 -2239218.32344769,99741.03706751 -2239218.49013789,99740.87037731 -2239218.62693701,99740.68020183 -2239218.72858792,99740.4738494 -2239218.79118424,99740.4304621038 -2239218.79545752,99740.27006145 -2239218.92709494,99740.07988597 -2239219.02874585,99740.050011744 -2239219.0378081,99739.87978068 -2239219.12879849,99739.67342826 -2239219.19139481,99739.6300409638 -2239219.19566809,99739.46964031 -2239219.32730551,99739.3080987927 -2239219.41365125,99739.16948238 -2239219.52741079,99738.9793069 -2239219.6290617,99738.855806222 -2239219.66652523,99738.83590937 -2239219.69076961,99738.7809558789 -2239219.73586877,99738.73585673 -2239219.79082225,99738.56916653 -2239219.92762136,99738.37899105 -2239220.02927227,99738.17263863 -2239220.0918686,99737.95803927 -2239220.11300479,99737.9092606432 -2239220.11300479,99737.87872783 -2239220.12932492,99737.67237541 -2239220.19192124,99737.5206322346 -2239220.20686664,99737.47851726 -2239220.22937756,99737.27216484 -2239220.29197388,99737.05756549 -2239220.31311007,99736.95751285 -2239220.31311007,99736.74291349 -2239220.29197388,99736.53656107 -2239220.22937756,99736.5060282537 -2239220.21305743,99736.45724963 -2239220.21305743,99736.24265028 -2239220.19192124,99736.03629786 -2239220.12932492,99735.84612238 -2239220.027674,99735.778968366 -2239219.97256213,99735.63608729 -2239219.92921963,99735.44591181 -2239219.82756872,99735.2792216 -2239219.69076961,99735.2341224342 -2239219.63581611,99735.17916896 -2239219.59071696,99735.04236985 -2239219.42402676,99734.94071893 -2239219.23385128,99734.87812261 -2239219.02749886,99734.85698642 -2239218.8128995,99734.85698642 -2239218.71284686,99734.8619135822 -2239218.66282054,99734.85698642 -2239218.61279422,99734.85698642 -2239218.5640156,99734.84066629 -2239218.53348278,99734.8032027694 -2239218.4099821,99734.77895839 -2239218.39008525,99734.6722951221 -2239218.26011568,99734.57074349 -2239218.29092103,99734.35614414 -2239218.31205722,99734.2560915 -2239218.31205722,99734.206065175 -2239218.30713006,99734.1887097995 -2239218.30883941,99734.16685025 -2239218.32677908,99733.97667477 -2239218.42842999,99733.77032235 -2239218.49102632,99733.555723 -2239218.51216251,99733.45567036 -2239218.51216251,99733.4144813942 -2239218.50810575,99733.37635892 -2239218.52848264,99733.1700065 -2239218.59107896,99732.95540714 -2239218.61221515,99732.8553545 -2239218.61221515,99732.64075515 -2239218.59107896,99732.43440273 -2239218.52848264,99732.3922877578 -2239218.50597172,99732.24054458 -2239218.49102632,99732.03419215 -2239218.42842999,99731.9694765374 -2239218.39383877,99731.94038665 -2239218.39097367,99731.73403423 -2239218.32837735,99731.54385875 -2239218.22672644,99731.37716854 -2239218.08992732,99731.3320693911 -2239218.03497385,99731.2771159 -2239217.98987468,99731.14031679 -2239217.82318448,99731.03866587 -2239217.633009,99730.97606955 -2239217.42665658,99730.95493336 -2239217.21205722,99730.95493336 -2239217.01195194,99730.97606955 -2239216.79735258,99731.03866587 -2239216.59100016,99731.0611767929 -2239216.54888519,99731.07612219 -2239216.39714201,99731.13871852 -2239216.19078959,99731.15503865 -2239216.16025677,99731.15503865 -2239216.11147815,99731.17617484 -2239215.8968788,99731.23877116 -2239215.69052638,99731.2612820825 -2239215.64841141,99731.2649456144 -2239215.61121494,99731.2612820828 -2239215.57401848,99731.23877116 -2239215.5319035,99731.2297089137 -2239215.50202928,99731.13871852 -2239215.33179822,99731.129656271 -2239215.30192399,99731.03866587 -2239215.13169293,99731.0296036237 -2239215.10181871,99730.93861323 -2239214.93158765,99730.87601691 -2239214.72523523,99730.8610715134 -2239214.57349206,99730.8538657489 -2239214.56001102,99730.74010622 -2239214.42139463,99730.6715646238 -2239214.29316233,99730.5632767436 -2239214.23528126,99730.53340252 -2239214.22621901,99730.34322704 -2239214.12456809,99730.276073026 -2239214.06945622,99730.13319195 -2239214.02611372,99729.9629609068 -2239213.93512333,99729.93308666 -2239213.92606108,99729.8909716838 -2239213.90355016,99729.73922851 -2239213.88860476,99729.53287609 -2239213.82600844,99729.4681604841 -2239213.79141723,99729.43907058 -2239213.78855212,99729.23271816 -2239213.72595579,99729.04254268 -2239213.62430488,99728.87585248 -2239213.48750577,99728.8307533142 -2239213.43255227,99728.77579984 -2239213.38745312,99728.7307006948 -2239213.33249966,99728.67574719 -2239213.28740048,99728.6073273203 -2239213.20403063,99728.55309087 -2239213.20937245,99728.45303823 -2239213.20937245,99728.23843887 -2239213.18823626,99728.03208645 -2239213.12563994,99728.0015536337 -2239213.10931981,99727.85272237 -2239213.10931981,99727.63812302 -2239213.08818362,99727.4317706 -2239213.0255873,99727.2615395585 -2239212.93459691,99727.23166531 -2239212.92553465,99727.0614342536 -2239212.83454426,99727.03156003 -2239212.82548201,99726.84138455 -2239212.7238311,99726.67469434 -2239212.58703198,99726.6295951911 -2239212.53207851,99726.5746417 -2239212.48697934,99726.4583176232 -2239212.34523804,99726.36274414 -2239212.42367317,99726.17256866 -2239212.52532408,99725.96621623 -2239212.58792041,99725.75161688 -2239212.6090566,99725.65156424 -2239212.6090566,99725.43696488 -2239212.58792041,99725.23061246 -2239212.52532408,99725.04043698 -2239212.42367317,99724.87374678 -2239212.28687406,99724.8286476041 -2239212.23192056,99724.77369414 -2239212.18682141,99724.63689502 -2239212.02013121,99724.53524411 -2239211.82995573,99724.5261818637 -2239211.80008151,99724.43519147 -2239211.62985045,99724.37259514 -2239211.42349802,99724.35145895 -2239211.20889867,99724.35145895 -2239210.50853017,99724.37259514 -2239210.29393082,99724.43519147 -2239210.0875784,99724.45151159 -2239210.0570456)) - - - - - buffer-1.5 - -POLYGON ((99723.95146 -2239211.2089, 99723.95146 -2239210.50853, 99723.98028 -2239210.21589, 99724.05151 -2239209.98109, 99724.05151 -2239209.90821, 99724.08033 -2239209.61558, 99724.15553 -2239209.3677, 99724.18039 -2239209.11532, 99724.26574 -2239208.83393, 99724.35674 -2239208.66369, 99724.3658 -2239208.63382, 99724.50441 -2239208.37449, 99724.69096 -2239208.14719, 99724.7459 -2239208.1021, 99724.79101 -2239208.04713, 99724.84597 -2239208.00203, 99724.89106 -2239207.94708, 99724.94601 -2239207.90199, 99724.99111 -2239207.84703, 99725.04609 -2239207.80191, 99725.09117 -2239207.74698, 99725.14611 -2239207.70189, 99725.19122 -2239207.64692, 99725.41852 -2239207.46038, 99725.67785 -2239207.32176, 99725.70776 -2239207.31269, 99725.87796 -2239207.22171, 99726.15935 -2239207.13635, 99726.45199 -2239207.10753, 99727.24471 -2239207.10753, 99727.26732 -2239207.03298, 99727.40594 -2239206.77365, 99727.59248 -2239206.54634, 99727.64746 -2239206.50122, 99727.69254 -2239206.44629, 99727.74748 -2239206.4012, 99727.79259 -2239206.34624, 99727.84755 -2239206.30113, 99727.89264 -2239206.24619, 99727.94757 -2239206.20111, 99727.99269 -2239206.14613, 99728.22 -2239205.95959, 99728.38155 -2239205.87324, 99728.52016 -2239205.75948, 99728.77949 -2239205.62087, 99728.80935 -2239205.61181, 99728.93391 -2239205.54523, 99728.96822 -2239205.43214, 99729.10683 -2239205.17281, 99729.29338 -2239204.9455, 99729.34833 -2239204.9004, 99729.39343 -2239204.84545, 99729.44838 -2239204.80035, 99729.49348 -2239204.7454, 99729.72079 -2239204.55885, 99729.88233 -2239204.47251, 99730.02095 -2239204.35875, 99730.28028 -2239204.22013, 99730.31014 -2239204.21107, 99730.48038 -2239204.12008, 99730.76177 -2239204.03472, 99730.87374 -2239204.02369, 99730.88059 -2239204.02003, 99731.16198 -2239203.93467, 99731.41243 -2239203.91001, 99731.44315 -2239203.89359, 99731.5081 -2239203.77207, 99731.69464 -2239203.54476, 99731.74959 -2239203.49966, 99731.79469 -2239203.44471, 99732.022 -2239203.25817, 99732.28133 -2239203.11955, 99732.56272 -2239203.03419, 99732.85535 -2239203.00537, 99733.15551 -2239203.00537, 99733.44815 -2239203.03419, 99733.72954 -2239203.11955, 99733.89976 -2239203.21054, 99733.92964 -2239203.2196, 99734.18897 -2239203.35822, 99734.32761 -2239203.47199, 99734.4 -2239203.51069, 99734.42991 -2239203.51976, 99734.60016 -2239203.61077, 99734.63001 -2239203.61982, 99734.66893 -2239203.64062, 99734.93017 -2239203.71987, 99735.14389 -2239203.8341, 99735.14904 -2239203.83461, 99735.43043 -2239203.91997, 99735.68976 -2239204.05859, 99735.91707 -2239204.24513, 99736.10361 -2239204.47244, 99736.24223 -2239204.73177, 99736.32759 -2239205.01316, 99736.35641 -2239205.30579, 99736.35641 -2239205.80606, 99736.33909 -2239205.98187, 99736.41733 -2239206.04608, 99736.60387 -2239206.27338, 99736.74249 -2239206.53272, 99736.75155 -2239206.56258, 99736.84254 -2239206.73282, 99736.9279 -2239207.01421, 99736.95672 -2239207.30685, 99736.95672 -2239207.4069, 99736.95179 -2239207.45692, 99736.95275 -2239207.46666, 99737.02795 -2239207.71458, 99737.03898 -2239207.82653, 99737.04265 -2239207.8334, 99737.12801 -2239208.11479, 99737.13904 -2239208.22676, 99737.1427 -2239208.23361, 99737.22806 -2239208.515, 99737.25291 -2239208.76738, 99737.32199 -2239208.99507, 99737.34281 -2239209.03403, 99737.42204 -2239209.29524, 99737.44286 -2239209.33419, 99737.46408 -2239209.40414, 99737.6044 -2239209.57512, 99737.74302 -2239209.83445, 99737.82837 -2239210.11584, 99737.84096 -2239210.24364, 99737.89745 -2239210.34932, 99738.01817 -2239210.4484, 99738.06325 -2239210.50333, 99738.11823 -2239210.54845, 99738.14922 -2239210.58621, 99738.29113 -2239210.66206, 99738.51844 -2239210.84861, 99738.56354 -2239210.90357, 99738.61849 -2239210.94866, 99738.66359 -2239211.00361, 99738.71854 -2239211.04871, 99738.90509 -2239211.27602, 99739.0437 -2239211.53535, 99739.12906 -2239211.81674, 99739.15788 -2239212.10937, 99739.15788 -2239212.20943, 99739.13946 -2239212.39649, 99739.20524 -2239212.47665, 99739.34386 -2239212.73598, 99739.42922 -2239213.01737, 99739.45804 -2239213.31, 99739.45804 -2239213.41006, 99739.42922 -2239213.70269, 99739.41176 -2239213.76024, 99739.42922 -2239213.81779, 99739.45804 -2239214.11043, 99739.45804 -2239214.31053, 99739.42922 -2239214.60317, 99739.34386 -2239214.88456, 99739.20524 -2239215.14389, 99739.0187 -2239215.37119, 99738.96375 -2239215.41629, 99738.95173 -2239215.43093, 99739.0511 -2239215.44072, 99739.33249 -2239215.52608, 99739.50273 -2239215.61707, 99739.50886 -2239215.61893, 99739.76651 -2239215.54077, 99740.05914 -2239215.51195, 99740.1592 -2239215.51195, 99740.20922 -2239215.51688, 99740.25925 -2239215.51195, 99740.3593 -2239215.51195, 99740.65194 -2239215.54077, 99740.93333 -2239215.62613, 99741.19266 -2239215.76475, 99741.41996 -2239215.95129, 99741.60651 -2239216.1786, 99741.74512 -2239216.43793, 99741.83048 -2239216.71932, 99741.8593 -2239217.01195, 99741.8593 -2239217.21206, 99741.83048 -2239217.50469, 99741.75529 -2239217.75257, 99741.73043 -2239218.00496, 99741.64507 -2239218.28635, 99741.50645 -2239218.54568, 99741.31991 -2239218.77298, 99741.09261 -2239218.95952, 99740.83328 -2239219.09814, 99740.6046 -2239219.16751, 99740.49229 -2239219.25968, 99740.23296 -2239219.3983, 99740.20308 -2239219.40737, 99740.03285 -2239219.49835, 99739.80418 -2239219.56772, 99739.69187 -2239219.65989, 99739.53032 -2239219.74624, 99739.39171 -2239219.86, 99739.13238 -2239219.99861, 99739.06303 -2239220.01965, 99739.0187 -2239220.07366, 99738.79139 -2239220.26021, 99738.53206 -2239220.39882, 99738.25067 -2239220.48418, 99737.99834 -2239220.50903, 99737.75041 -2239220.58424, 99737.63844 -2239220.59527, 99737.63159 -2239220.59893, 99737.3502 -2239220.68429, 99737.05757 -2239220.71311, 99736.95751 -2239220.71311, 99736.66488 -2239220.68429, 99736.417 -2239220.6091, 99736.16461 -2239220.58424, 99735.88322 -2239220.49888, 99735.62389 -2239220.36026, 99735.58764 -2239220.33051, 99735.48301 -2239220.29877, 99735.22368 -2239220.16016, 99734.99638 -2239219.97361, 99734.95127 -2239219.91865, 99734.89633 -2239219.87356, 99734.70978 -2239219.64625, 99734.57117 -2239219.38692, 99734.48581 -2239219.10553, 99734.45699 -2239218.8129, 99734.45699 -2239218.71285, 99734.45806 -2239218.70202, 99734.35614 -2239218.71206, 99734.2905 -2239218.71206, 99734.12975 -2239218.79798, 99733.84836 -2239218.88334, 99733.55572 -2239218.91216, 99733.48285 -2239218.91216, 99733.24804 -2239218.98339, 99732.95541 -2239219.01222, 99732.85535 -2239219.01222, 99732.56272 -2239218.98339, 99732.28133 -2239218.89803, 99732.27448 -2239218.89437, 99732.16251 -2239218.88334, 99731.88112 -2239218.79798, 99731.8422 -2239218.77718, 99731.58096 -2239218.69793, 99731.32163 -2239218.55931, 99731.09433 -2239218.37277, 99731.04924 -2239218.31783, 99730.99427 -2239218.27272, 99730.80773 -2239218.04541, 99730.66911 -2239217.78608, 99730.58376 -2239217.50469, 99730.55493 -2239217.21206, 99730.55493 -2239217.01195, 99730.58376 -2239216.71932, 99730.66911 -2239216.43793, 99730.67278 -2239216.43105, 99730.68381 -2239216.31911, 99730.759 -2239216.07123, 99730.78386 -2239215.81884, 99730.84317 -2239215.62332, 99730.76917 -2239215.48487, 99730.76012 -2239215.45502, 99730.66911 -2239215.28477, 99730.66004 -2239215.25486, 99730.56906 -2239215.08466, 99730.4837 -2239214.80327, 99730.47622 -2239214.72734, 99730.40752 -2239214.64362, 99730.38225 -2239214.59635, 99730.38033 -2239214.59577, 99730.121 -2239214.45716, 99730.08474 -2239214.4274, 99729.98012 -2239214.39567, 99729.80988 -2239214.30467, 99729.78001 -2239214.29561, 99729.77316 -2239214.29195, 99729.66119 -2239214.28092, 99729.3798 -2239214.19556, 99729.34088 -2239214.17476, 99729.07964 -2239214.09551, 99728.82031 -2239213.95689, 99728.59301 -2239213.77035, 99728.54792 -2239213.7154, 99728.49296 -2239213.6703, 99728.44786 -2239213.61534, 99728.43888 -2239213.60798, 99728.1604 -2239213.58055, 99727.92559 -2239213.50932, 99727.85272 -2239213.50932, 99727.56009 -2239213.4805, 99727.2787 -2239213.39514, 99727.1085 -2239213.30416, 99727.07859 -2239213.29509, 99726.90834 -2239213.20408, 99726.87849 -2239213.19503, 99726.61916 -2239213.05642, 99726.39185 -2239212.86987, 99726.38593 -2239212.86265, 99726.32564 -2239212.89488, 99726.04425 -2239212.98023, 99725.75162 -2239213.00906, 99725.65156 -2239213.00906, 99725.35893 -2239212.98023, 99725.07754 -2239212.89488, 99724.81821 -2239212.75626, 99724.5909 -2239212.56972, 99724.54578 -2239212.51474, 99724.49085 -2239212.46966, 99724.30431 -2239212.24236, 99724.16569 -2239211.98303, 99724.15662 -2239211.95315, 99724.06564 -2239211.78292, 99723.98028 -2239211.50153, 99723.95146 -2239211.2089)) - - - - - buffer-2 - -POLYGON ((99723.45146 -2239211.2089, 99723.45146 -2239210.50853, 99723.48989 -2239210.11835, 99723.55151 -2239209.91521, 99723.55151 -2239209.90821, 99723.58994 -2239209.51803, 99723.66513 -2239209.27016, 99723.68999 -2239209.01777, 99723.80381 -2239208.64258, 99723.8948 -2239208.47236, 99723.90386 -2239208.44248, 99724.08868 -2239208.09671, 99724.3374 -2239207.79363, 99724.39237 -2239207.74852, 99724.43746 -2239207.69358, 99724.49241 -2239207.64848, 99724.53751 -2239207.59353, 99724.59245 -2239207.54844, 99724.63756 -2239207.49347, 99724.69251 -2239207.44837, 99724.73761 -2239207.39342, 99724.79258 -2239207.34831, 99724.83767 -2239207.29337, 99725.14074 -2239207.04464, 99725.48651 -2239206.85982, 99725.5164 -2239206.85075, 99725.68662 -2239206.75977, 99726.0618 -2239206.64596, 99726.45199 -2239206.60753, 99726.93051 -2239206.60753, 99726.9902 -2239206.49586, 99727.23893 -2239206.19279, 99727.29389 -2239206.14769, 99727.33898 -2239206.09274, 99727.39394 -2239206.04764, 99727.43904 -2239205.99268, 99727.49399 -2239205.94758, 99727.53909 -2239205.89263, 99727.59404 -2239205.84754, 99727.63914 -2239205.79258, 99727.94221 -2239205.54385, 99728.10377 -2239205.4575, 99728.24237 -2239205.34375, 99728.53479 -2239205.18745, 99728.6911 -2239204.89502, 99728.93982 -2239204.59195, 99728.9948 -2239204.54683, 99729.03988 -2239204.4919, 99729.09481 -2239204.44682, 99729.13993 -2239204.39184, 99729.443 -2239204.14312, 99729.60454 -2239204.05678, 99729.74316 -2239203.94301, 99730.08893 -2239203.75819, 99730.11883 -2239203.74912, 99730.28904 -2239203.65814, 99730.66423 -2239203.54433, 99730.76844 -2239203.53407, 99731.06444 -2239203.44427, 99731.13947 -2239203.43688, 99731.34109 -2239203.19121, 99731.39604 -2239203.14611, 99731.44114 -2239203.09116, 99731.74421 -2239202.84243, 99732.08999 -2239202.65761, 99732.46517 -2239202.5438, 99732.85535 -2239202.50537, 99733.15551 -2239202.50537, 99733.54569 -2239202.5438, 99733.92088 -2239202.65761, 99734.09114 -2239202.74862, 99734.12098 -2239202.75767, 99734.46676 -2239202.94249, 99734.59911 -2239203.0511, 99734.62125 -2239203.05782, 99734.79151 -2239203.14883, 99734.82135 -2239203.15788, 99734.86028 -2239203.17869, 99735.12151 -2239203.25793, 99735.33065 -2239203.36972, 99735.62177 -2239203.45803, 99735.96755 -2239203.64285, 99736.27062 -2239203.89158, 99736.51935 -2239204.19465, 99736.70417 -2239204.54043, 99736.81798 -2239204.91561, 99736.85641 -2239205.30579, 99736.85641 -2239205.79675, 99737.01961 -2239205.9956, 99737.20443 -2239206.34137, 99737.2135 -2239206.37127, 99737.30448 -2239206.54148, 99737.41829 -2239206.91666, 99737.45672 -2239207.30685, 99737.45672 -2239207.4069, 99737.4562 -2239207.41217, 99737.51835 -2239207.61703, 99737.52862 -2239207.72126, 99737.6184 -2239208.01724, 99737.62867 -2239208.12147, 99737.71845 -2239208.41745, 99737.74331 -2239208.66984, 99737.78392 -2239208.80372, 99737.80475 -2239208.84269, 99737.88399 -2239209.10392, 99737.9048 -2239209.14285, 99737.91151 -2239209.16498, 99738.02014 -2239209.29734, 99738.20496 -2239209.64311, 99738.31877 -2239210.0183, 99738.32231 -2239210.05429, 99738.37173 -2239210.09484, 99738.41684 -2239210.14981, 99738.47006 -2239210.19349, 99738.56892 -2239210.24633, 99738.87199 -2239210.49505, 99738.91711 -2239210.55003, 99738.97204 -2239210.59511, 99739.01714 -2239210.65006, 99739.07209 -2239210.69516, 99739.32082 -2239210.99823, 99739.50564 -2239211.34401, 99739.61945 -2239211.71919, 99739.65788 -2239212.10937, 99739.65788 -2239212.20943, 99739.65302 -2239212.2588, 99739.8058 -2239212.54464, 99739.91961 -2239212.91982, 99739.95804 -2239213.31, 99739.95804 -2239213.41006, 99739.92355 -2239213.76024, 99739.95804 -2239214.11043, 99739.95804 -2239214.31053, 99739.91961 -2239214.70071, 99739.81799 -2239215.0357, 99740.05914 -2239215.01195, 99740.1592 -2239215.01195, 99740.20923 -2239215.01688, 99740.25925 -2239215.01195, 99740.3593 -2239215.01195, 99740.74948 -2239215.05038, 99741.12467 -2239215.16419, 99741.47044 -2239215.34901, 99741.77352 -2239215.59774, 99742.02224 -2239215.90081, 99742.20706 -2239216.24659, 99742.32087 -2239216.62177, 99742.3593 -2239217.01195, 99742.3593 -2239217.21206, 99742.32087 -2239217.60224, 99742.24568 -2239217.85011, 99742.22082 -2239218.1025, 99742.10701 -2239218.47769, 99741.92219 -2239218.82346, 99741.67346 -2239219.12653, 99741.37039 -2239219.37526, 99741.02462 -2239219.56008, 99740.84376 -2239219.61494, 99740.77007 -2239219.67542, 99740.4243 -2239219.86024, 99740.39442 -2239219.8693, 99740.2242 -2239219.96029, 99740.04334 -2239220.01515, 99739.96965 -2239220.07563, 99739.80811 -2239220.16197, 99739.6695 -2239220.27573, 99739.34642 -2239220.44841, 99739.06918 -2239220.67594, 99738.72341 -2239220.86076, 99738.34822 -2239220.97458, 99738.09586 -2239220.99943, 99737.84796 -2239221.07463, 99737.74373 -2239221.0849, 99737.44775 -2239221.17468, 99737.05757 -2239221.21311, 99736.95751 -2239221.21311, 99736.56733 -2239221.17468, 99736.31946 -2239221.09949, 99736.06707 -2239221.07463, 99735.69188 -2239220.96082, 99735.3514 -2239220.77883, 99735.29167 -2239220.76071, 99734.9459 -2239220.57589, 99734.64283 -2239220.32717, 99734.59773 -2239220.27221, 99734.54277 -2239220.22711, 99734.29405 -2239219.92404, 99734.10923 -2239219.57827, 99734.03865 -2239219.3456, 99733.9459 -2239219.37373, 99733.55572 -2239219.41216, 99733.54874 -2239219.41216, 99733.34559 -2239219.47379, 99732.95541 -2239219.51222, 99732.85535 -2239219.51222, 99732.46517 -2239219.47379, 99732.16918 -2239219.384, 99732.06496 -2239219.37373, 99731.68978 -2239219.25992, 99731.65085 -2239219.23911, 99731.38962 -2239219.15987, 99731.04385 -2239218.97505, 99730.74077 -2239218.72632, 99730.69568 -2239218.67137, 99730.64072 -2239218.62627, 99730.39199 -2239218.3232, 99730.20717 -2239217.97742, 99730.09336 -2239217.60224, 99730.05493 -2239217.21206, 99730.05493 -2239217.01195, 99730.09336 -2239216.62177, 99730.18316 -2239216.32575, 99730.19342 -2239216.22156, 99730.26861 -2239215.97368, 99730.29347 -2239215.7213, 99730.30719 -2239215.67607, 99730.29818 -2239215.64638, 99730.20717 -2239215.47611, 99730.1981 -2239215.44622, 99730.10712 -2239215.276, 99730.01224 -2239214.96324, 99729.84854 -2239214.87574, 99729.78878 -2239214.85761, 99729.6417 -2239214.779, 99729.56365 -2239214.77131, 99729.18846 -2239214.6575, 99729.14953 -2239214.63669, 99728.8883 -2239214.55745, 99728.54253 -2239214.37263, 99728.23946 -2239214.1239, 99728.2077 -2239214.08521, 99728.06286 -2239214.07094, 99727.85972 -2239214.00932, 99727.85272 -2239214.00932, 99727.46254 -2239213.97089, 99727.08736 -2239213.85708, 99726.91714 -2239213.7661, 99726.88725 -2239213.75703, 99726.717 -2239213.66603, 99726.68714 -2239213.65697, 99726.34137 -2239213.47215, 99726.28616 -2239213.42684, 99726.1418 -2239213.47063, 99725.75162 -2239213.50906, 99725.65156 -2239213.50906, 99725.26138 -2239213.47063, 99724.8862 -2239213.35682, 99724.54042 -2239213.172, 99724.23735 -2239212.92327, 99724.19225 -2239212.86832, 99724.1373 -2239212.82322, 99723.88857 -2239212.52014, 99723.70375 -2239212.17437, 99723.69469 -2239212.14449, 99723.6037 -2239211.97427, 99723.48989 -2239211.59908, 99723.45146 -2239211.2089)) - - - - - buffer-5 - -POLYGON ((99720.45146 -2239211.2089, 99720.45146 -2239210.50853, 99720.54753 -2239209.53308, 99720.60814 -2239209.33328, 99720.64759 -2239208.93276, 99720.72278 -2239208.68488, 99720.74764 -2239208.4325, 99721.03217 -2239207.49453, 99721.12316 -2239207.32431, 99721.13222 -2239207.29443, 99721.59427 -2239206.42999, 99722.21608 -2239205.67231, 99722.27106 -2239205.62719, 99722.31614 -2239205.57226, 99722.37109 -2239205.52716, 99722.41619 -2239205.47221, 99722.47112 -2239205.42713, 99722.51624 -2239205.37215, 99722.57119 -2239205.32705, 99722.61629 -2239205.2721, 99722.67127 -2239205.22698, 99722.71635 -2239205.17205, 99723.47403 -2239204.55023, 99724.33846 -2239204.08818, 99724.36835 -2239204.07911, 99724.53857 -2239203.98813, 99725.47653 -2239203.7036, 99725.49258 -2239203.70202, 99725.51782 -2239203.67126, 99726.2755 -2239203.04944, 99726.39661 -2239202.98471, 99726.8185 -2239202.47063, 99726.87346 -2239202.42553, 99726.91856 -2239202.37057, 99726.97351 -2239202.32547, 99727.01861 -2239202.27052, 99727.77629 -2239201.64871, 99727.93782 -2239201.56237, 99728.07645 -2239201.4486, 99728.94088 -2239200.98655, 99728.97078 -2239200.97748, 99729.14099 -2239200.8865, 99729.58577 -2239200.75158, 99730.0775 -2239200.34802, 99730.94194 -2239199.88597, 99731.8799 -2239199.60145, 99732.85535 -2239199.50537, 99733.15551 -2239199.50537, 99734.13096 -2239199.60145, 99735.06893 -2239199.88597, 99735.2392 -2239199.97698, 99735.26903 -2239199.98603, 99736.12018 -2239200.44097, 99736.26956 -2239200.48629, 99736.47875 -2239200.5981, 99736.76982 -2239200.6864, 99737.63426 -2239201.14844, 99738.39194 -2239201.77026, 99739.01376 -2239202.52794, 99739.47581 -2239203.39238, 99739.76033 -2239204.33034, 99739.8158 -2239204.89347, 99739.97607 -2239205.19332, 99739.98514 -2239205.22321, 99740.07612 -2239205.39343, 99740.36065 -2239206.33139, 99740.41469 -2239206.88008, 99740.4607 -2239207.03176, 99740.47097 -2239207.13598, 99740.56075 -2239207.43197, 99740.57101 -2239207.53616, 99740.66081 -2239207.83218, 99740.66951 -2239207.92055, 99740.848 -2239208.25447, 99740.99331 -2239208.37373, 99741.03843 -2239208.42871, 99741.09336 -2239208.47379, 99741.13844 -2239208.52872, 99741.19342 -2239208.57384, 99741.81523 -2239209.33152, 99742.27728 -2239210.19596, 99742.56181 -2239211.13392, 99742.5926 -2239211.44657, 99742.86197 -2239212.33455, 99742.90074 -2239212.72824, 99743.13715 -2239212.8546, 99743.89484 -2239213.47642, 99744.51665 -2239214.2341, 99744.9787 -2239215.09853, 99745.26323 -2239216.0365, 99745.3593 -2239217.01195, 99745.3593 -2239217.21206, 99745.26323 -2239218.18751, 99745.18804 -2239218.43539, 99745.16318 -2239218.68777, 99744.87865 -2239219.62574, 99744.4166 -2239220.49017, 99743.79478 -2239221.24785, 99743.0371 -2239221.86967, 99742.17267 -2239222.33172, 99742.08305 -2239222.3589, 99741.57235 -2239222.63188, 99741.54248 -2239222.64094, 99741.40242 -2239222.7158, 99741.33621 -2239222.77014, 99741.01312 -2239222.94283, 99740.73589 -2239223.17035, 99739.87146 -2239223.6324, 99738.93349 -2239223.91693, 99738.68112 -2239223.94179, 99738.43323 -2239224.01698, 99738.32904 -2239224.02724, 99738.03302 -2239224.11704, 99737.05757 -2239224.21311, 99736.95751 -2239224.21311, 99735.98206 -2239224.11704, 99735.73415 -2239224.04184, 99735.4818 -2239224.01698, 99734.54383 -2239223.73246, 99734.20335 -2239223.55047, 99734.14362 -2239223.53235, 99733.27919 -2239223.0703, 99732.56422 -2239222.48354, 99731.8799 -2239222.41614, 99731.58392 -2239222.32636, 99731.47969 -2239222.31609, 99730.54173 -2239222.03156, 99730.50281 -2239222.01076, 99730.24157 -2239221.93151, 99729.37713 -2239221.46946, 99728.61945 -2239220.84764, 99728.57435 -2239220.79269, 99728.5194 -2239220.74759, 99727.89759 -2239219.98991, 99727.43554 -2239219.12547, 99727.15101 -2239218.18751, 99727.05493 -2239217.21206, 99727.05493 -2239217.01195, 99727.05953 -2239216.96524, 99726.98147 -2239216.92351, 99726.87727 -2239216.91325, 99725.93931 -2239216.62872, 99725.76905 -2239216.53772, 99725.7392 -2239216.52866, 99725.70253 -2239216.50906, 99725.65156 -2239216.50906, 99724.67611 -2239216.41298, 99723.73815 -2239216.12845, 99722.87371 -2239215.6664, 99722.11603 -2239215.04459, 99722.07093 -2239214.98964, 99722.01598 -2239214.94454, 99721.39416 -2239214.18686, 99720.93211 -2239213.32242, 99720.92305 -2239213.29255, 99720.83206 -2239213.12232, 99720.54753 -2239212.18435, 99720.45146 -2239211.2089)) - - - - - buffer-10 - - POLYGON((99739.3044617493 -2239228.93117449,99739.008469 -2239229.020963,99737.057565 -2239229.21311,99736.957513 -2239229.21311,99735.00661 -2239229.020963,99734.7587215452 -2239228.94576679,99734.506346 -2239228.92091,99732.630415 -2239228.351853,99732.2899489618 -2239228.16987015,99732.230205 -2239228.151747,99730.501337 -2239227.227648,99730.4848796373 -2239227.2141418,99728.62831 -2239226.650958,99728.5893723796 -2239226.63014541,99728.328152 -2239226.550905,99726.599284 -2239225.626806,99725.083918 -2239224.383178,99725.0388167068 -2239224.32822188,99724.983866 -2239224.283125,99723.740237 -2239222.76776,99722.8223261684 -2239221.05046925,99721.82473 -2239220.747852,99720.095862 -2239219.823753,99718.580496 -2239218.580124,99718.5353971293 -2239218.52517087,99718.480444 -2239218.480072,99717.236815 -2239216.964706,99716.312716 -2239215.235838,99716.3036531494 -2239215.20596176,99716.212664 -2239215.035733,99715.643606 -2239213.159802,99715.451459 -2239211.208899,99715.451459 -2239210.50853,99715.643606 -2239208.557627,99715.7042101752 -2239208.357842,99715.743659 -2239207.957311,99715.8188539234 -2239207.70942636,99715.843711 -2239207.457048,99716.412769 -2239205.581117,99716.5037597346 -2239205.41088527,99716.512822 -2239205.381011,99717.436921 -2239203.652143,99718.680549 -2239202.136778,99718.7355025838 -2239202.09167879,99718.780602 -2239202.036725,99718.8355551293 -2239201.99162613,99718.880654 -2239201.936673,99718.935607786 -2239201.89157358,99718.980707 -2239201.83662,99719.0356606586 -2239201.79152069,99719.08076 -2239201.736567,99719.1357131293 -2239201.69146813,99719.180812 -2239201.636515,99720.696178 -2239200.392886,99722.425046 -2239199.468787,99722.4549222379 -2239199.45972415,99722.625151 -2239199.368735,99723.0271739372 -2239199.24678256,99723.282971 -2239198.935093,99723.3379241293 -2239198.88999413,99723.383023 -2239198.835041,99723.437976786 -2239198.78994158,99723.483076 -2239198.734988,99724.998441 -2239197.49136,99725.1599836931 -2239197.40501365,99725.298599 -2239197.291255,99727.027467 -2239196.367155,99727.0573455502 -2239196.35809145,99727.1672091138 -2239196.29936816,99727.299652 -2239196.190675,99729.02852 -2239195.266576,99730.904451 -2239194.697519,99732.855355 -2239194.505372,99733.155512 -2239194.505372,99735.106416 -2239194.697519,99736.982347 -2239195.266576,99737.1525800191 -2239195.35756742,99737.182452 -2239195.366629,99738.0336074759 -2239195.82158098,99738.182978 -2239195.866892,99738.3921436726 -2239195.97869336,99738.683242 -2239196.066997,99740.41211 -2239196.991097,99741.927475 -2239198.234725,99743.171103 -2239199.75009,99744.095203 -2239201.478958,99744.66426 -2239203.35489,99744.6723060104 -2239203.43658259,99744.695519 -2239203.480011,99745.264576 -2239205.355942,99745.3020732906 -2239205.73665892,99745.972577 -2239206.55367,99746.896677 -2239208.282538,99747.3895739426 -2239209.90740274,99747.430371 -2239209.940884,99748.673999 -2239211.45625,99749.598098 -2239213.185118,99750.167155 -2239215.061049,99750.359303 -2239217.011952,99750.359303 -2239217.212057,99750.167155 -2239219.16296,99750.0919601843 -2239219.41084441,99750.067103 -2239219.663224,99749.498045 -2239221.539155,99748.573946 -2239223.268023,99747.330318 -2239224.783388,99745.814952 -2239226.027017,99744.086084 -2239226.951116,99744.0485605807 -2239226.9624986,99743.7909773231 -2239227.10017983,99743.513742 -2239227.327701,99741.784874 -2239228.2518,99739.908942 -2239228.820858,99739.6565636369 -2239228.84571508,99739.408679 -2239228.92091,99739.3044617493 -2239228.93117449)) - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/singlesidedbuffer.xml geos-3.8.0/tests/xmltester/tests/singlesidedbuffer.xml --- geos-3.7.1/tests/xmltester/tests/singlesidedbuffer.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/singlesidedbuffer.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ - - - - -Single-sided buffer on vertical line (down-up) - -LINESTRING (0 10, 0 20) - - - -LINESTRING (2 10, 2 20) - - - - -LINESTRING (-2 10, -2 20) - - - - -Single-sided buffer on vertical line (up-down) - -LINESTRING (0 20, 0 10) - - - -LINESTRING (-3 10, -3 20) - - - - -LINESTRING (3 10, 3 20) - - - - -Single-sided buffer on horizontal line (left-right) - -LINESTRING (0 0, 5 0) - - - -LINESTRING (0 -2, 5 -2) - - - - -LINESTRING (0 2, 5 2) - - - - -Single-sided buffer on horizontal line (right-left) - -LINESTRING (5 0, 0 0) - - - -LINESTRING (0 2, 5 2) - - - - -LINESTRING (0 -2, 5 -2) - - - - - -Single-sided buffers on sharpe edged line - -LINESTRING (5 5,1 1,1.5 3) - - - -LINESTRING (0.889806640162438 3.15254833995939,3.86862915010152 6.13137084989848) - - - - -LINESTRING (6.13137084989848 3.86862915010152,2.13137084989848 -0.131370849898476,1.64334932914975 -0.464957897238882,1.06750928729122 -0.598575145599803,0.482454087349093 -0.513983562756987,-0.0319550194114402 -0.222730075655103,-0.405500120335007 0.235428609129087,-0.58719153245376 0.797952878498393,-0.552228000232531 1.38805700005813,-0.052228000232531 3.38805700005813) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/split.xml geos-3.8.0/tests/xmltester/tests/split.xml --- geos-3.7.1/tests/xmltester/tests/split.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/split.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ - - - - - - Line/line difference/split - LINESTRING(2 0,10 0,10 10,0 10,0 2) - LINESTRING(-5 5, 15 5) - - - MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) - - - - - - Line/line difference/split with boundary intersection - LINESTRING(2 0,10 0,10 10,0 10,0 2) - LINESTRING(0 5, 10 5) - - - MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) - - - - - - Multiline/line difference/split - MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) - LINESTRING(-5 5, 15 5) - - - MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) - - - - - - Multiline/line difference/split with boundary intersection - MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) - LINESTRING(0 5, 10 5) - - - MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml --- geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020-invalid-output.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ - - - - - 966094 - 2025063 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 - -010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441 - - - -0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441 - -5 - - - - 975328 - 1755529 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441 - - - -0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441 - -1 - - - - 589978 - 39794 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441 - - - -0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441 - -1 - - - 671968 - 1396084 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541 - - - -01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541 - -1 - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml --- geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ - - - - - - 99455 - 3082006 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -9 - -0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441 - - - -010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441 - -5 - - - - 275046 - 3361837 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -7 - -0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441 - - - -0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 - -5 - - - - 984559 - 984543 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541 - - - -01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541 - -1 - - - - 982104 - 1320680 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441 - - - -0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441 - -1 - - - - 720830 - 32827 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541 - - - -0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541 - -1 - - - - 11503 - 422581 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441 - - - -010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441 - -1 - - - - 35309 - 21138 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541 - - - -01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541 - -1 - - - - 189022 - 7822 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541 - - - -0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541 - -1 - - - - 191097 - 2916437 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441 - - - -0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441 - -1 - - - - 256271 - 367713 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 5 - -0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441 - - - -01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441 - -1 - - - - 275129 - 384120 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441 - - - -01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441 - -1 - - - - 275562 - 3361837 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441 - - - -0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 - -1 - - - - 466188 - 3072591 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541 - - - -0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541 - -1 - - - - 415163 - 3180189 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -5 - -010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441 - - - -0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441 - -1 - - - - 401167 - 3148390 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541 - - - -0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541 - -1 - - - - 164313 - 164648 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541 - - - -0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541 - -1 - - - - 464026 - 6704 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441 - - - -010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441 - -1 - - - - 469351 - 5219716 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541 - - - -01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541 - -1 - - - 525923 - 45230 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441 - - - -010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441 - -1 - - - - 532351 - 3180577 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441 - - - -0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441 - -1 - - - - 587497 - 409926 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441 - - - -01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441 - -1 - - - diff -Nru geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml --- geos-3.7.1/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - - - 3440675 - 39440 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 - -01060000000100000001030000000100000010000000ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F3389854419A99995994045141333333F33A985441EC51B81E94045141000000003F985441713D0A6799045141666666763F985441CDCCCCEC9D045141F6285C1F3F9854419A9999C9A3045141EC51B8DE3D985441666666E6AE0451411F85EBB13A985441E17A142EB8045141AE47E1CA36985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F9720736985441 - - - -01060000000100000001030000000100000011000000D7A3701D940451413D0AD7F33898544178DBFF36940451412E6318CD399854413579ED179A045141A0FF7BA5389854414304D81EA004514159B9FE6C3798544169437462A504514119BA06A235985441C01AAF28AB04514110CF31A333985441089AA624AF045141250D45D63298544191CD99DAB1045141B3DFA81232985441A5696F63B60451416745560832985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F338985441 - -5 - - - diff -Nru geos-3.7.1/tests/xmltester/tests/TestBufferExternal2.xml geos-3.8.0/tests/xmltester/tests/TestBufferExternal2.xml --- geos-3.7.1/tests/xmltester/tests/TestBufferExternal2.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/TestBufferExternal2.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,508 +0,0 @@ - - - Basic buffer test cases. - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - #1 Polygon - gid: 2501 - - POLYGON((152663.569985 545814.381985,152650.846985 545793.256985,152627.901985 545778.769985,152678.109985 545771.821985,152727.534985 545773.861985,152781.614985 545740.377985,152811.447985 545734.737985,152805.889985 545712.243985,152779.265985 545710.106985,152757.181985 545678.531985,152728.757985 545672.422985,152667.835985 545695.186985,152611.069985 545717.462985,152570.710985 545744.322985,152523.739985 545745.457985,152517.151985 545743.782985,152484.214985 545735.408985,152436.306985 545736.893985,152438.217985 545750.268985,152430.574985 545761.733985,152394.269985 545761.733985,152371.340985 545769.376985,152363.697985 545788.483985,152367.457985 545791.825985,152370.144985 545794.213985,152380.894985 545803.770985,152403.823985 545794.216985,152436.384985 545810.298985,152453.895985 545794.486985,152489.732985 545814.599985,152492.430985 545838.063985,152521.966985 545844.735985,152539.616985 545818.847985,152582.766985 545797.723985,152629.325985 545840.687985,152634.972885 545846.287385,152649.676985 545837.847985,152663.569985 545814.381985)) - POLYGON( EMPTY) - - #2 Polygon - gid: 2502 - - POLYGON((142903.674985 525488.153985,142887.424985 525486.421985,142876.299985 525510.439985,142859.487985 525524.993985,142857.580985 525565.813985,142858.104985 525616.072985,142881.339985 525658.486985,142907.528985 525716.283985,142929.703985 525786.082985,142957.279985 525858.237985,142960.930985 525890.791985,142975.490985 525922.709985,142984.234985 525947.127985,142986.419985 525953.232985,142993.173985 525984.254985,143000.571985 526013.485985,143007.015985 526020.469985,143016.093985 526003.985985,143035.005985 525986.830985,143053.948985 525965.933985,143071.269985 525941.972985,143091.351985 525917.505985,143099.479985 525910.991985,143095.500985 525903.225985,143092.658985 525881.416985,143085.816985 525850.459985,143076.886985 525815.718985,143061.518985 525786.881985,143044.455985 525757.313985,143032.301985 525728.902985,143013.483985 525713.680985,143000.030985 525684.275985,143000.320985 525648.294985,143005.159985 525613.976985,143003.725985 525572.864985,143004.494985 525550.515985,143001.962985 525548.017985,142985.622985 525535.307985,142974.204985 525515.602985,142968.977985 525509.074985,142939.044985 525498.260985,142903.674985 525488.153985)) - POLYGON( EMPTY) - - #3 Polygon - gid: 2503 - - POLYGON((146220.994985 549967.552985,146213.166985 549966.121985,146208.007985 549968.568985,146206.036985 549974.608985,146205.864985 549983.214985,146206.109985 549988.066985,146208.381985 549999.999985,146322.285985 549999.999985,146316.339985 549994.911985,146312.438985 549992.675985,146308.350985 549990.750985,146302.286985 549988.489985,146293.636985 549985.962985,146269.463985 549981.745985,146257.525985 549979.090985,146240.391985 549974.375985,146234.981985 549972.660985,146220.994985 549967.552985)) - POLYGON( EMPTY) - - #4 Polygon - gid: 2504 - - POLYGON((144896.566985 524882.672985,144899.299985 524881.825985,144903.913985 524879.874985,144908.281985 524877.329985,144911.797985 524874.348985,144913.851985 524871.090985,144914.168985 524869.389985,144913.622985 524865.233985,144911.859985 524860.681985,144909.399985 524856.197985,144906.748985 524852.222985,144903.927985 524848.842985,144900.666985 524845.737985,144897.109985 524842.856985,144889.669985 524837.573985,144883.779985 524833.850985,144879.800985 524831.683985,144875.716985 524829.743985,144871.552985 524828.061985,144867.693985 524826.762985,144863.373985 524825.537985,144816.049985 524814.269985,144768.463985 524802.145985,144743.475985 524796.359985,144724.202985 524791.404985,144714.293985 524789.489985,144705.353985 524788.164985,144700.870985 524787.764985,144696.389985 524787.619985,144689.024985 524787.828985,144680.046985 524788.515985,144662.118985 524790.538985,144653.609985 524791.745985,144640.283985 524793.947985,144634.330985 524794.724985,144629.764985 524794.975985,144620.521985 524795.100985,144615.989985 524795.370985,144611.611985 524796.041985,144606.579985 524797.679985,144602.565985 524799.585985,144598.598985 524801.833985,144594.733985 524804.380985,144591.026985 524807.186985,144587.534985 524810.208985,144584.313985 524813.405985,144581.419985 524816.734985,144581.806985 524818.560985,144583.642985 524822.862985,144586.460985 524826.772985,144589.858985 524829.672985,144591.561985 524830.552985,144595.734985 524831.793985,144604.956985 524833.056985,144609.445985 524833.994985,144619.190985 524837.204985,144627.621985 524840.384985,144636.348985 524843.925985,144652.801985 524851.249985,144701.221985 524871.437985,144720.997985 524878.409985,144729.636985 524881.012985,144733.994985 524882.035985,144740.905985 524883.100985,144745.358985 524883.385985,144749.845985 524883.427985,144772.449985 524882.398985,144799.041985 524881.859985,144816.235985 524881.915985,144834.523985 524882.327985,144857.002985 524883.450985,144883.361985 524884.143985,144887.877985 524883.994985,144892.292985 524883.537985,144896.566985 524882.672985)) - POLYGON( EMPTY) - - #5 Polygon - gid: 2505 - - POLYGON((144446.439985 524841.154985,144441.934985 524841.141985,144435.845985 524841.674985,144425.648985 524843.342985,144420.748985 524844.729985,144417.119985 524846.780985,144415.753985 524848.861985,144415.428985 524852.340985,144416.080985 524856.335985,144417.458985 524860.698985,144419.313985 524865.282985,144423.459985 524874.528985,144425.249985 524878.896985,144427.325985 524883.109985,144429.289985 524885.370985,144439.587985 524894.381985,144443.173985 524897.220985,144446.878985 524899.799985,144450.724985 524902.010985,144453.174985 524903.142985,144457.321985 524904.547985,144461.659985 524905.496985,144466.133985 524906.119985,144479.827985 524907.342985,144483.155985 524907.782985,144517.007985 524913.042985,144521.480985 524913.453985,144530.608985 524913.781985,144550.777985 524913.633985,144559.793985 524913.451985,144568.795985 524913.012985,144574.880985 524912.364985,144579.291985 524911.566985,144594.257985 524907.594985,144607.560985 524904.598985,144611.775985 524903.277985,144615.327985 524899.282985,144614.465985 524894.617985,144613.841985 524893.603985,144607.933985 524886.826985,144601.507985 524880.434985,144594.663985 524874.523985,144591.115985 524871.777985,144586.969985 524868.873985,144583.162985 524866.495985,144575.256985 524862.134985,144558.682985 524853.946985,144554.551985 524852.069985,144550.343985 524850.422985,144546.048985 524849.133985,144540.520985 524848.023985,144536.086985 524847.329985,144522.628985 524845.891985,144507.564985 524844.759985,144480.579985 524843.741985,144461.960985 524842.043985,144446.439985 524841.154985)) - POLYGON( EMPTY) - - #6 Polygon - gid: 2506 - - POLYGON((144455.196985 524980.805985,144461.047985 524980.714985,144465.526985 524981.158985,144474.517985 524982.448985,144479.009985 524982.843985,144490.646985 524982.725985,144495.270985 524982.522985,144499.829985 524982.093985,144504.251985 524981.331985,144508.466985 524980.130985,144509.918985 524979.570985,144513.913985 524977.623985,144517.852985 524975.167985,144521.610985 524972.300985,144525.060985 524969.118985,144528.074985 524965.720985,144530.334985 524962.519985,144532.084985 524958.448985,144532.948985 524953.701985,144532.919985 524948.863985,144531.990985 524944.516985,144529.776985 524940.368985,144526.744985 524936.825985,144523.097985 524933.699985,144519.179985 524931.193985,144517.924985 524930.555985,144513.860985 524929.018985,144509.523985 524927.994985,144493.342985 524925.809985,144437.476985 524916.661985,144433.088985 524915.698985,144428.782985 524914.494985,144423.543985 524912.609985,144419.404985 524910.860985,144411.280985 524906.906985,144400.576985 524901.079985,144396.728985 524898.765985,144393.000985 524896.236985,144385.751985 524890.870985,144381.960985 524887.848985,144375.108985 524881.988985,144371.554985 524879.239985,144363.304985 524873.572985,144355.718985 524868.636985,144347.909985 524864.180985,144344.379985 524862.452985,144340.237985 524860.702985,144335.937985 524859.212985,144331.535985 524858.026985,144327.084985 524857.185985,144323.250985 524856.770985,144318.804985 524856.633985,144309.840985 524857.119985,144296.319985 524858.530985,144291.864985 524858.855985,144278.326985 524858.971985,144273.869985 524859.393985,144269.275985 524860.279985,144251.862985 524864.968985,144247.472985 524865.953985,144238.178985 524867.630985,144229.241985 524868.924985,144219.237985 524869.738985,144214.767985 524869.549985,144205.816985 524868.188985,144200.865985 524867.789985,144191.538985 524867.752985,144186.945985 524868.099985,144182.709985 524869.007985,144181.284985 524869.531985,144177.852985 524872.620985,144176.025985 524877.123985,144175.996985 524878.261985,144176.451985 524882.564985,144177.369985 524887.022985,144178.706985 524891.527985,144180.417985 524895.971985,144182.460985 524900.245985,144184.791985 524904.243985,144188.570985 524909.302985,144191.772985 524912.018985,144195.672985 524914.042985,144208.945985 524918.742985,144213.022985 524920.777985,144217.149985 524923.817985,144220.469985 524926.853985,144226.873985 524933.289985,144230.199985 524936.340985,144232.588985 524938.226985,144239.984985 524943.454985,144247.712985 524948.238985,144251.712985 524950.295985,144255.808985 524952.038985,144260.553985 524953.530985,144264.923985 524954.479985,144269.384985 524955.181985,144282.909985 524956.875985,144311.048985 524961.124985,144317.314985 524962.407985,144321.673985 524963.513985,144325.997985 524964.818985,144330.259985 524966.323985,144337.091985 524969.241985,144349.052985 524975.446985,144371.128985 524988.101985,144374.990985 524990.509985,144382.600985 524995.675985,144386.503985 524997.875985,144390.576985 524999.444985,144395.149985 525000.415985,144399.750985 525000.903985,144404.419985 525000.929985,144408.992985 525000.459985,144413.301985 524999.458985,144417.441985 524997.544985,144421.099985 524994.911985,144428.244985 524988.981985,144432.035985 524986.535985,144437.425985 524984.344985,144441.760985 524983.043985,144446.208985 524982.029985,144450.707985 524981.288985,144455.196985 524980.805985)) - POLYGON( EMPTY) - - #7 Polygon - gid: 2507 - - POLYGON((144180.284985 525120.032985,144183.832985 525116.794985,144186.310985 525113.187985,144186.773985 525112.080985,144187.835985 525108.131985,144188.392985 525103.916985,144188.543985 525099.491985,144188.385985 525094.909985,144188.017985 525090.227985,144186.627985 525076.124985,144185.841985 525059.007985,144185.204985 525050.018985,144184.199985 525041.093985,144182.718985 525031.683985,144181.494985 525027.301985,144179.611985 525023.346985,144176.818985 525019.465985,144173.767985 525015.993985,144170.357985 525012.802985,144166.672985 525010.048985,144162.791985 525007.884985,144158.428985 525006.304985,144154.095985 525005.337985,144140.459985 525003.668985,144135.956985 525002.943985,144132.489985 525002.111985,144128.279985 525000.587985,144116.048985 524994.706985,144112.117985 524993.299985,144098.939985 524989.717985,144094.477985 524988.770985,144090.015985 524988.064985,144085.573985 524987.673985,144082.099985 524987.632985,144077.708985 524988.016985,144073.317985 524988.862985,144068.938985 524990.056985,144060.269985 524993.031985,144056.006985 524994.585985,144051.298985 524996.571985,144039.237985 525003.001985,144035.090985 525004.553985,144033.429985 525004.964985,144029.061985 525005.651985,144024.594985 525005.978985,144020.064985 525006.023985,144015.503985 525005.866985,144005.304985 525005.175985,144000.845985 525004.540985,143991.981985 525002.425985,143987.562985 525001.659985,143984.325985 525001.504985,143979.862985 525001.775985,143975.358985 525002.379985,143970.879985 525003.298985,143966.493985 525004.512985,143962.267985 525006.001985,143957.854985 525007.995985,143953.888985 525010.251985,143950.109985 525012.839985,143946.599985 525015.694985,143944.902985 525017.266985,143941.891985 525020.593985,143939.241985 525024.341985,143937.049985 525028.360985,143935.728985 525031.561985,143947.089985 525038.847985,143958.611985 525045.903985,143978.120985 525057.118985,143986.179985 525061.258985,144002.539985 525068.796985,144015.419985 525074.941985,144023.406985 525079.086985,144032.735985 525085.069985,144047.490985 525095.410985,144052.695985 525098.806985,144056.554985 525101.113985,144071.198985 525108.843985,144087.471985 525116.537985,144095.654985 525120.979985,144099.734985 525122.957985,144103.931985 525124.188985,144108.802985 525124.422985,144113.258985 525123.960985,144122.292985 525122.295985,144135.544985 525120.385985,144140.040985 525119.859985,144144.496985 525119.751985,144146.224985 525119.877985,144150.651985 525120.958985,144159.475985 525124.711985,144163.736985 525125.992985,144167.459985 525126.023985,144171.674985 525124.798985,144176.090985 525122.751985,144180.284985 525120.032985)) - POLYGON( EMPTY) - - #8 Polygon - gid: 2508 - - POLYGON((145511.322985 525055.058985,145421.842985 525011.893985,145360.382985 525010.401985,145268.686985 525018.327985,145146.589985 524998.812985,145037.826985 525008.605985,144973.835985 525025.487985,145025.537985 525040.060985,145053.665985 525046.467985,145095.857985 525056.078985,145116.953985 525060.883985,145237.680985 525091.930985,145337.492985 525112.002985,145422.613985 525124.136985,145582.586985 525143.477985,145594.862985 525133.291985,145599.488985 525122.480985,145601.426985 525108.224985,145582.118985 525096.831985,145543.502985 525074.046985,145511.322985 525055.058985)) - POLYGON( EMPTY) - - #9 Polygon - gid: 2509 - - POLYGON((144327.439985 525055.359985,144323.575985 525054.083985,144319.137985 525053.820985,144309.540985 525054.540985,144304.876985 525054.629985,144288.008985 525053.381985,144279.029985 525053.080985,144271.827985 525053.508985,144258.386985 525054.981985,144243.660985 525055.827985,144230.778985 525056.779985,144226.202985 525057.165985,144221.779985 525057.904985,144216.743985 525059.629985,144212.867985 525061.883985,144209.230985 525064.754985,144205.958985 525068.049985,144203.179985 525071.576985,144199.872985 525077.084985,144197.994985 525081.332985,144196.679985 525085.738985,144196.099985 525090.172985,144195.983985 525096.039985,144196.147985 525105.052985,144196.712985 525114.141985,144198.291985 525127.709985,144199.820985 525136.570985,144200.724985 525140.909985,144204.646985 525148.438985,144214.701985 525150.449985,144224.757985 525146.427985,144239.841985 525143.410985,144256.935985 525142.405985,144273.025985 525137.377985,144284.086985 525131.343985,144293.136985 525124.304985,144300.175985 525117.265985,144311.054985 525104.626985,144312.513985 525103.587985,144316.441985 525102.209985,144321.398985 525100.876985,144326.356985 525099.200985,144330.789985 525096.313985,144333.887985 525092.901985,144336.779985 525088.924985,144339.157985 525084.646985,144340.713985 525080.335985,144341.139985 525076.255985,144340.875985 525074.291985,144339.526985 525070.035985,144337.293985 525065.704985,144334.418985 525061.624985,144331.142985 525058.119985,144327.439985 525055.359985)) - POLYGON( EMPTY) - - #10 Polygon - gid: 2510 - - POLYGON((144510.896985 525506.174985,144491.815985 525502.887985,144452.960985 525504.373985,144356.543985 525498.078985,144342.420985 525498.616985,144329.347985 525503.644985,144327.336985 525503.644985,144316.275985 525508.672985,144310.241985 525515.711985,144314.264985 525527.778985,144324.779985 525538.713985,144356.897985 525552.292985,144379.210985 525556.506985,144460.334985 525561.721985,144473.144985 525559.956985,144485.211985 525553.922985,144497.278985 525540.850985,144512.361985 525525.766985,144520.406985 525516.716985,144517.389985 525510.683985,144510.896985 525506.174985)) - POLYGON( EMPTY) - - #11 Polygon - gid: 2511 - - POLYGON((145442.154985 525572.074985,145501.507985 525553.758985,145522.070985 525554.647985,145516.394985 525541.746985,145505.936985 525519.454985,145532.899985 525496.685985,145547.030985 525513.347985,145591.958985 525554.366985,145632.751985 525552.852985,145668.799985 525544.771985,145702.316985 525529.254985,145724.534985 525515.925985,145745.168985 525499.920985,145723.440985 525498.117985,145705.446985 525491.319985,145691.799985 525487.926985,145650.858985 525477.747985,145578.241985 525453.820985,145543.290985 525453.401985,145502.225985 525452.909985,145398.531985 525436.386985,145380.777985 525443.215985,145344.364985 525481.970985,145328.089985 525529.882985,145370.877985 525553.686985,145442.154985 525572.074985)) - POLYGON( EMPTY) - - #12 Polygon - gid: 2512 - - POLYGON((144625.991985 525513.700985,144598.841985 525508.672985,144583.757985 525509.677985,144566.662985 525514.705985,144552.584985 525519.733985,144542.529985 525530.794985,144526.439985 525542.861985,144519.400985 525555.934985,144519.400985 525571.017985,144522.417985 525577.051985,144538.506985 525584.090985,144554.595985 525589.117985,144566.662985 525595.151985,144585.768985 525597.162985,144602.863985 525597.162985,144612.919985 525594.145985,144623.980985 525590.123985,144647.108985 525580.067985,144660.180985 525574.034985,144674.259985 525562.973985,144689.342985 525551.911985,144692.359985 525544.872985,144691.353985 525537.833985,144678.281985 525530.794985,144658.169985 525524.761985,144625.991985 525513.700985)) - POLYGON( EMPTY) - - #13 Polygon - gid: 2513 - - POLYGON((146081.670985 525417.759985,146034.312985 525383.398985,146018.183985 525405.148985,145997.047985 525436.541985,145975.994985 525451.787985,145927.068985 525472.385985,145872.869985 525488.849985,145830.388985 525510.994985,145793.352985 525537.222985,145768.063985 525549.233985,145754.442985 525585.944985,145741.111985 525601.945985,145729.163985 525609.328985,145747.791985 525621.222985,145785.820985 525616.608985,145835.405985 525606.033985,145888.006985 525585.051985,145922.153985 525572.522985,145965.920985 525551.110985,145987.088985 525544.372985,146029.350985 525531.069985,146071.462985 525518.113985,146123.223985 525504.811985,146160.742985 525500.837985,146164.508985 525498.816985,146132.472985 525456.997985,146081.670985 525417.759985)) - POLYGON( EMPTY) - - #14 Polygon - gid: 2514 - - POLYGON((147625.665985 525733.355985,147685.615985 525723.612985,147746.451985 525726.828985,147807.643985 525705.752985,147778.828985 525680.379985,147736.635985 525673.137985,147681.802985 525656.781985,147634.046985 525660.702985,147593.909985 525649.092985,147543.925985 525630.287985,147525.748985 525647.754985,147521.204985 525652.120985,147486.998985 525649.400985,147473.315985 525648.312985,147433.858985 525642.752985,147433.938985 525662.319985,147457.769985 525676.556985,147464.271985 525685.355985,147463.991985 525695.137985,147478.318985 525707.779985,147479.694885 525707.945085,147513.227985 525711.970985,147572.805985 525729.496985,147625.665985 525733.355985)) - POLYGON( EMPTY) - - #15 Polygon - gid: 2515 - - POLYGON((149067.995985 525965.488985,149025.297985 525963.470985,148994.143985 525964.208985,148997.616985 525989.339985,149029.151985 526015.805985,149120.123985 526059.526985,149131.062985 526066.577985,149148.502985 526077.820985,149183.975985 526087.501985,149232.395985 526086.935985,149294.555985 526084.930985,149312.038985 526079.485985,149314.993985 526078.565985,149316.243985 526056.762985,149244.224985 526035.142985,149176.959985 526005.418985,149113.972985 525980.563985,149067.995985 525965.488985)) - POLYGON( EMPTY) - - #16 Polygon - gid: 2516 - - POLYGON((150716.409985 526216.711985,150707.088985 526192.800985,150622.180985 526127.431985,150583.008985 526115.338985,150539.865985 526092.923985,150506.113985 526087.030985,150457.230985 526063.119985,150414.652985 526045.317985,150412.516485 526044.107285,150403.373985 526054.606985,150398.109985 526096.678985,150386.500985 526126.603985,150356.405985 526157.275985,150349.132985 526185.598985,150364.836985 526203.184985,150392.348985 526202.980985,150449.647985 526187.409985,150479.794985 526174.863985,150494.337985 526175.134985,150530.693985 526175.812985,150537.911985 526177.023985,150588.433985 526185.497985,150654.506985 526212.614985,150706.931985 526211.847985,150716.409985 526216.711985)) - POLYGON( EMPTY) - - #17 Polygon - gid: 2517 - - POLYGON((142576.939985 544993.306985,142591.447985 544982.626985,142598.216985 544976.869985,142601.519985 544973.710985,142604.578985 544970.396985,142606.691985 544967.715985,142607.297985 544962.618985,142603.363985 544961.993985,142598.959985 544961.672985,142594.273985 544961.623985,142589.490985 544961.812985,142582.524985 544962.474985,142578.110985 544963.214985,142573.719985 544964.260985,142569.373985 544965.557985,142561.217985 544968.551985,142557.131985 544970.386985,142553.145985 544972.465985,142545.288985 544976.918985,142529.062985 544985.730985,142525.008985 544987.637985,142521.706985 544988.893985,142517.221985 544989.644985,142511.940985 544988.902985,142507.623985 544990.118985,142503.346985 544991.624985,142499.158985 544993.401985,142495.106985 544995.428985,142491.643985 544997.434985,142488.002985 545000.007985,142484.572985 545002.922985,142477.897985 545009.067985,142474.427985 545011.944985,142468.738985 545015.692985,142464.809985 545017.875985,142452.730985 545023.989985,142433.515985 545034.313985,142415.405985 545044.738985,142396.233985 545056.516985,142390.894985 545059.567985,142382.948985 545063.811985,142374.326985 545067.766985,142365.958985 545071.089985,142353.644985 545075.660985,142323.390985 545086.250985,142304.370985 545093.446985,142300.236985 545095.217985,142296.256985 545097.143985,142292.326985 545099.358985,142288.519985 545101.843985,142284.895985 545104.541985,142282.462985 545106.558985,142280.138985 545111.115985,142283.834985 545112.105985,142288.493985 545112.673985,142293.452985 545112.769985,142297.356985 545112.450985,142301.654985 545111.424985,142305.872985 545109.806985,142313.771985 545106.396985,142329.263985 545100.265985,142342.005985 545095.779985,142350.590985 545093.089985,142360.163985 545090.637985,142374.837985 545087.416985,142388.124985 545084.842985,142392.515985 545083.872985,142396.843985 545082.667985,142401.034985 545081.083985,142413.291985 545075.346985,142419.186985 545073.209985,142427.794985 545070.561985,142434.889985 545068.590985,142452.450985 545064.549985,142456.788985 545063.385985,142462.902985 545061.340985,142471.265985 545058.003985,142481.625985 545053.473985,142500.169985 545044.593985,142516.816985 545037.701985,142520.898985 545035.827985,142526.185985 545033.097985,142534.018985 545028.599985,142537.797985 545026.147985,142541.355985 545023.602985,142544.809985 545020.751985,142554.510985 545011.319985,142561.212985 545005.502985,142576.939985 544993.306985)) - POLYGON( EMPTY) - - #18 Polygon - gid: 2518 - - POLYGON((142142.650985 544835.425985,142145.030985 544834.924985,142149.928985 544836.666985,142147.868985 544839.863985,142145.054985 544843.328985,142141.764985 544846.863985,142135.589985 544852.711985,142131.385985 544855.469985,142121.934985 544860.323985,142119.418985 544862.762985,142120.643985 544866.423985,142123.832985 544869.166985,142142.007985 544880.482985,142146.185985 544882.686985,142150.034985 544885.110985,142152.992985 544888.177985,142154.918985 544892.177985,142156.098985 544896.476985,142157.758985 544905.619985,142158.869985 544910.072985,142159.515985 544911.889985,142161.471985 544915.923985,142166.292985 544923.628985,142168.551985 544927.529985,142170.143985 544931.144985,142171.234985 544935.498985,142172.207985 544944.679985,142172.887985 544949.148985,142174.226985 544953.296985,142176.709985 544957.283985,142179.723985 544960.618985,142201.533985 544980.806985,142208.081985 544987.628985,142214.086985 544994.480985,142216.762985 544998.084985,142218.813985 545001.396985,142220.731985 545005.664985,142221.760985 545010.296985,142221.410985 545013.929985,142219.731985 545017.878985,142217.358985 545021.757985,142214.506985 545025.474985,142211.394985 545028.938985,142209.403985 545030.945985,142205.982985 545033.801985,142202.150985 545036.254985,142198.084985 545038.353985,142194.906985 545039.761985,142190.673985 545041.191985,142181.848985 545043.208985,142175.903985 545044.966985,142167.646985 545048.537985,142159.620985 545052.668985,142151.626985 545057.376985,142144.153985 545062.424985,142140.530985 545065.106985,142133.753985 545070.520985,142130.329985 545073.481985,142127.047985 545076.586985,142123.979985 545079.866985,142120.258985 545084.585985,142117.704985 545088.320985,142115.321985 545092.177985,142111.638985 545098.836985,142110.590985 545104.805985,142114.324985 545106.169985,142118.865985 545107.103985,142123.727985 545107.542985,142128.424985 545107.422985,142133.319985 545106.555985,142137.609985 545105.268985,142146.150985 545102.097985,142152.816985 545099.968985,142161.600985 545098.020985,142170.475985 545096.461985,142179.596985 545095.135985,142193.021985 545093.676985,142203.872985 545092.852985,142217.391985 545092.380985,142223.658985 545091.743985,142228.073985 545090.957985,142236.822985 545088.833985,142260.302985 545082.618985,142275.993985 545078.035985,142284.552985 545075.245985,142292.377985 545072.316985,142304.771985 545066.945985,142315.772985 545061.600985,142326.339985 545055.888985,142334.073985 545051.287985,142344.223985 545044.758985,142358.879985 545034.305985,142372.971985 545025.050985,142382.274985 545019.649985,142386.325985 545017.721985,142394.717985 545014.429985,142415.323985 545006.078985,142427.651985 545000.555985,142435.089985 544996.886985,142439.032985 544994.722985,142446.714985 544990.017985,142457.124985 544983.221985,142464.485985 544977.997985,142467.866985 544975.111985,142470.779985 544971.360985,142476.685985 544960.284985,142479.910985 544956.180985,142483.304985 544953.234985,142493.778985 544944.676985,142496.933985 544941.723985,142499.886985 544938.302985,142505.255985 544930.884985,142508.155985 544927.477985,142510.754985 544925.197985,142514.462985 544922.808985,142518.456985 544920.774985,142522.642985 544918.997985,142537.322985 544913.615985,142545.912985 544910.920985,142554.584985 544908.470985,142570.055985 544904.514985,142609.687985 544895.396985,142618.402985 544893.149985,142625.191985 544891.116985,142633.745985 544888.300985,142642.213985 544885.246985,142647.284985 544883.222985,142659.650985 544877.784985,142663.825985 544876.113985,142672.611985 544873.031985,142681.231985 544870.419985,142688.566985 544868.542985,142701.784985 544865.776985,142712.430985 544863.748985,142735.115985 544859.827985,142748.404985 544857.440985,142759.820985 544854.793985,142772.902985 544851.448985,142791.990985 544847.041985,142836.872985 544838.059985,142856.026985 544833.591985,142866.014985 544830.834985,142870.276985 544829.394985,142882.911985 544824.582985,142891.044985 544822.276985,142899.893985 544820.435985,142907.005985 544819.604985,142911.480985 544819.457985,142915.973985 544819.549985,142931.392985 544820.445985,142949.396985 544820.976985,142953.877985 544821.305985,142963.412985 544822.566985,142997.291985 544828.686985,143001.762985 544829.190985,143015.237985 544830.244985,143021.078985 544830.979985,143029.925985 544832.658985,143034.317985 544833.689985,143042.431985 544835.985985,143046.664985 544837.487985,143059.123985 544842.750985,143063.328985 544844.341985,143069.061985 544846.084985,143073.419985 544847.201985,143091.561985 544851.204985,143104.799985 544853.865985,143117.818985 544855.976985,143131.660985 544857.736985,143149.611985 544859.148985,143158.523985 544860.304985,143171.796985 544862.806985,143187.420985 544865.182985,143195.694985 544866.198985,143218.129985 544867.941985,143229.421985 544869.235985,143238.331985 544870.546985,143242.752985 544871.361985,143248.974985 544872.787985,143245.893985 544864.243985,143243.278985 544855.627985,143239.596985 544845.254985,143238.703985 544840.809985,143239.565985 544838.343985,143242.559985 544836.757985,143246.782985 544835.973985,143251.747985 544835.772985,143256.966985 544835.932985,143263.459985 544836.324985,143267.887985 544836.914985,143281.079985 544840.308985,143285.493985 544841.010985,143291.165985 544841.147985,143295.708985 544840.906985,143300.240985 544840.360985,143304.693985 544839.501985,143308.795985 544838.387985,143312.930985 544836.782985,143316.929985 544834.744985,143328.699985 544827.895985,143340.615985 544821.459985,143349.622985 544816.936985,143353.765985 544815.199985,143379.048985 544806.047985,143383.197985 544804.295985,143387.085985 544802.178985,143391.866985 544798.607985,143395.237985 544795.519985,143398.377985 544792.144985,143401.217985 544788.550985,143403.683985 544784.802985,143406.240985 544779.636985,143407.710985 544775.344985,143408.807985 544770.880985,143409.578985 544766.357985,143410.053985 544762.114985,143410.135985 544757.674985,143409.747985 544753.192985,143409.089985 544748.693985,143407.345985 544737.228985,143405.081985 544723.917985,143403.266985 544711.498985,143400.336985 544688.230985,143398.896985 544674.807985,143397.734985 544659.841985,143397.090985 544646.826985,143396.850985 544637.820985,143396.972985 544632.012985,143396.751985 544622.050985,143396.978985 544617.243985,143398.170985 544613.367985,143399.194985 544612.065985,143402.692985 544610.512985,143407.447985 544610.199985,143412.699985 544610.353985,143417.686985 544610.201985,143421.647985 544608.970985,143424.221985 544605.463985,143425.185985 544600.971985,143426.503985 544586.295985,143426.695985 544576.790985,143427.602985 544572.592985,143428.607985 544570.612985,143431.663985 544567.852985,143435.852985 544565.881985,143440.409985 544564.122985,143444.574985 544561.998985,143446.602985 544560.270985,143449.266985 544556.772985,143451.512985 544552.774985,143453.316985 544548.468985,143454.651985 544544.046985,143455.302985 544540.930985,143455.737985 544536.554985,143455.685985 544532.081985,143455.310985 544527.548985,143454.248985 544518.460985,143453.293985 544507.420985,143452.183985 544498.480985,143451.387985 544494.277985,143450.256985 544489.941985,143444.947985 544474.661985,143441.252985 544461.587985,143439.691985 544457.395985,143436.586985 544451.416985,143434.254985 544447.469985,143431.718985 544443.640985,143428.959985 544440.027985,143425.961985 544436.729985,143424.373985 544435.233985,143420.802985 544432.682985,143416.748985 544430.681985,143412.436985 544429.034985,143402.691985 544425.747985,143398.354985 544424.509985,143389.557985 544422.502985,143382.443985 544421.349985,143377.969985 544420.862985,143361.255985 544419.733985,143322.639985 544418.450985,143317.223985 544418.508985,143307.965985 544419.035985,143303.487985 544418.885985,143299.248985 544418.062985,143294.848985 544416.073985,143291.138985 544413.485985,143287.645985 544410.410985,143284.360985 544407.112985,143282.416985 544405.061985,143279.570985 544401.609985,143272.098985 544390.222985,143269.351985 544386.691985,143264.746985 544382.250985,143261.177985 544379.420985,143257.402985 544376.844985,143253.487985 544374.564985,143250.331985 544372.994985,143246.011985 544371.209985,143241.373985 544369.908985,143236.897985 544369.654985,143234.944985 544370.069985,143230.996985 544371.823985,143227.070985 544374.360985,143223.425985 544377.476985,143220.320985 544380.965985,143218.559985 544383.604985,143216.857985 544387.535985,143215.805985 544391.869985,143215.175985 544396.447985,143213.672985 544410.851985,143212.338985 544428.813985,143211.334985 544435.596985,143204.880985 544467.076985,143202.713985 544478.328985,143195.991985 544515.066985,143188.876985 544557.021985,143187.823985 544561.374985,143184.665985 544571.935985,143182.777985 544576.196985,143180.223985 544579.484985,143175.783985 544581.612985,143171.287985 544582.118985,143155.656985 544581.868985,143136.206985 544580.819985,143122.601985 544580.581985,143118.118985 544580.285985,143113.728985 544579.627985,143108.946985 544578.417985,143104.513985 544576.714985,143100.732985 544574.296985,143099.409985 544572.940985,143097.056985 544569.351985,143095.214985 544565.213985,143093.790985 544560.757985,143092.692985 544556.218985,143091.497985 544549.010985,143091.198985 544544.529985,143091.120985 544540.004985,143091.190985 544525.360985,143091.987985 544506.978985,143093.802985 544482.938985,143096.515985 544453.401985,143097.660985 544445.625985,143100.216985 544432.363985,143102.727985 544417.272985,143103.883985 544408.352985,143104.696985 544397.702985,143104.824985 544393.173985,143104.700985 544388.683985,143104.380985 544385.282985,143103.655985 544380.423985,143102.277985 544375.659985,143099.755985 544372.531985,143095.802985 544371.270985,143091.229985 544370.919985,143086.346985 544371.240985,143081.583985 544372.059985,143079.325985 544372.617985,143075.204985 544374.152985,143071.230985 544376.260985,143063.417985 544381.056985,143059.424985 544383.176985,143057.485985 544383.999985,143052.909985 544385.539985,143048.244985 544386.078985,143045.943985 544385.387985,143042.625985 544382.880985,143039.587985 544379.631985,143030.944985 544368.616985,143018.916985 544355.157985,143006.538985 544342.290985,143003.228985 544339.249985,143000.059985 544336.689985,142996.399985 544334.047985,142992.577985 544331.547985,142988.612985 544329.303985,142984.520985 544327.429985,142981.796985 544326.464985,142977.495985 544325.372985,142973.057985 544324.651985,142963.981985 544323.950985,142953.878985 544323.685985,142949.368985 544323.805985,142940.377985 544324.559985,142928.660985 544326.438985,142919.876985 544328.519985,142915.586985 544329.838985,142910.935985 544331.578985,142906.815985 544333.396985,142898.760985 544337.492985,142891.323985 544341.669985,142883.714985 544346.485985,142873.049985 544353.650985,142865.638985 544358.793985,142862.071985 544361.528985,142852.868985 544369.200985,142849.644985 544372.462985,142847.241985 544376.065985,142846.832985 544377.001985,142845.639985 544381.155985,142845.045985 544385.649985,142844.939985 544390.314985,142845.205985 544394.983985,142845.730985 544399.487985,142847.359985 544404.070985,142849.883985 544408.193985,142851.902985 544412.235985,142852.270985 544414.588985,142851.234985 544418.764985,142848.804985 544422.901985,142845.666985 544426.437985,142841.451985 544429.726985,142837.382985 544432.073985,142833.070985 544433.782985,142829.180985 544434.554985,142824.843985 544434.518985,142820.388985 544433.803985,142815.908985 544432.626985,142808.656985 544430.234985,142804.514985 544428.545985,142792.485985 544422.309985,142789.356985 544420.953985,142780.856985 544417.736985,142776.523985 544416.379985,142772.150985 544415.400985,142769.493985 544415.056985,142765.048985 544415.082985,142751.517985 544417.132985,142747.071985 544417.221985,142741.891985 544416.537985,142737.389985 544415.594985,142732.957985 544414.305985,142728.713985 544412.646985,142724.776985 544410.591985,142720.722985 544407.567985,142717.590985 544404.379985,142708.851985 544393.768985,142695.798985 544379.805985,142685.746985 544368.505985,142681.717985 544363.733985,142676.115985 544356.691985,142646.529985 544317.476985,142637.252985 544305.929985,142629.738985 544297.399985,142626.583985 544294.195985,142619.961985 544288.074985,142606.708985 544277.250985,142603.032985 544274.509985,142599.218985 544272.148985,142595.218985 544270.380985,142590.945985 544269.249985,142586.455985 544268.616985,142581.850985 544268.406985,142577.242985 544268.544985,142572.745985 544268.960985,142568.202985 544269.774985,142563.879985 544270.976985,142559.588985 544272.441985,142512.041985 544289.931985,142499.063985 544293.973985,142494.844985 544295.512985,142490.821985 544297.411985,142486.858985 544299.660985,142482.929985 544302.124985,142479.179985 544304.838985,142475.776985 544307.826985,142472.884985 544311.110985,142470.374985 544315.361985,142468.770985 544319.648985,142467.680985 544324.191985,142466.879985 544330.867985,142466.891985 544335.290985,142467.346985 544339.759985,142468.106985 544344.244985,142469.978985 544353.154985,142472.266985 544362.401985,142476.753985 544376.733985,142479.688985 544385.253985,142482.130985 544391.383985,142485.988985 544399.514985,142490.328985 544407.410985,142493.108985 544412.007985,142500.694985 544423.185985,142503.886985 544427.401985,142512.460985 544437.928985,142515.999985 544443.400985,142518.088985 544447.422985,142520.010985 544451.634985,142521.614985 544455.961985,142522.756985 544460.330985,142523.276985 544464.467985,142523.056985 544468.822985,142522.131985 544473.237985,142520.735985 544477.644985,142519.105985 544481.978985,142516.222985 544488.854985,142507.660985 544504.729985,142498.246985 544525.424985,142495.238985 544531.607985,142491.152985 544539.627985,142482.068985 544556.762985,142476.213985 544566.860985,142471.338985 544575.732985,142468.701985 544579.756985,142465.777985 544582.273985,142464.715985 544582.617985,142461.172985 544582.107985,142457.227985 544579.900985,142453.175985 544576.750985,142447.704985 544572.038985,142444.441985 544568.990985,142435.526985 544558.787985,142427.051985 544549.664985,142423.735985 544546.556985,142420.069985 544544.196985,142415.422985 544542.528985,142411.043985 544541.542985,142406.504985 544540.908985,142401.901985 544540.531985,142395.232985 544540.246985,142390.735985 544540.243985,142386.201985 544540.518985,142381.689985 544541.072985,142377.257985 544541.902985,142370.099985 544543.816985,142365.592985 544545.677985,142362.366985 544548.445985,142360.671985 544552.905985,142359.988985 544557.315985,142359.794985 544562.023985,142360.111985 544571.441985,142360.600985 544576.236985,142361.477985 544580.650985,142363.537985 544589.470985,142366.377985 544604.633985,142366.965985 544609.086985,142367.335985 544617.125985,142367.289985 544621.772985,142366.887985 544626.340985,142365.944985 544630.666985,142365.333985 544632.397985,142363.153985 544636.188985,142360.091985 544639.631985,142356.569985 544642.705985,142354.358985 544644.404985,142350.648985 544646.900985,142346.683985 544649.103985,142342.551985 544651.012985,142338.337985 544652.626985,142329.120985 544655.754985,142324.613985 544656.911985,142320.187985 544657.470985,142316.566985 544657.265985,142312.451985 544656.082985,142308.414985 544654.079985,142304.498985 544651.523985,142300.747985 544648.684985,142297.537985 544646.100985,142294.429985 544642.836985,142289.020985 544635.306985,142285.887985 544632.242985,142284.879985 544631.587985,142280.948985 544629.665985,142276.699985 544628.156985,142272.248985 544626.990985,142267.710985 544626.098985,142261.157985 544625.144985,142256.637985 544625.059985,142252.097985 544625.862985,142250.010985 544626.622985,142241.865985 544627.069985,142232.842985 544626.961985,142228.189985 544626.652985,142219.256985 544625.578985,142210.379985 544623.978985,142201.928985 544621.981985,142189.033985 544617.937985,142173.175985 544613.480985,142168.754985 544612.685985,142164.493985 544612.651985,142159.712985 544614.117985,142155.595985 544616.806985,142152.724985 544620.553985,142151.801985 544624.611985,142151.792985 544629.186985,142152.818985 544644.306985,142153.735985 544653.425985,142153.819985 544657.896985,142153.318985 544662.241985,142152.623985 544664.931985,142151.012985 544669.139985,142148.905985 544673.227985,142146.451985 544677.131985,142143.800985 544680.784985,142141.760985 544683.177985,142138.544985 544686.291985,142127.599985 544695.435985,142117.560985 544704.466985,142109.963985 544710.975985,142099.369985 544719.346985,142082.249985 544732.007985,142078.514985 544734.516985,142074.669985 544736.825985,142070.918985 544738.762985,142040.406985 544751.752985,142036.369985 544753.717985,142032.516985 544755.964985,142027.531985 544759.240985,142023.678985 544761.987985,142020.080985 544764.951985,142016.968985 544768.159985,142014.575985 544771.637985,142013.343985 544775.609985,142013.207985 544780.181985,142013.704985 544784.959985,142014.681985 544791.876985,142015.536985 544796.277985,142019.864985 544813.795985,142022.666985 544828.695985,142025.800985 544848.146985,142027.072985 544858.744985,142027.856985 544867.714985,142028.179985 544873.963985,142028.369985 544882.972985,142028.035985 544892.629985,142027.589985 544897.101985,142025.218985 544914.955985,142024.641985 544922.434985,142023.963985 544936.376985,142023.670985 544943.302985,142023.091985 544947.790985,142020.706985 544959.048985,142019.522985 544963.574985,142017.933985 544967.794985,142015.721985 544971.446985,142013.338985 544973.773985,142009.459985 544976.166985,142005.088985 544977.998985,142000.003985 544979.579985,141995.653985 544980.532985,141991.200985 544981.173985,141977.392985 544982.301985,141968.411985 544982.825985,141939.455985 544983.523985,141916.541985 544984.122985,141907.570985 544984.733985,141899.202985 544985.735985,141890.317985 544987.263985,141885.942985 544988.266985,141877.874985 544990.674985,141873.665985 544992.331985,141869.642985 544994.298985,141866.567985 544996.096985,141862.799985 544998.647985,141859.259985 545001.498985,141855.939985 545004.762985,141853.094985 545008.215985,141850.524985 545011.948985,141848.222985 545015.872985,141843.299985 545026.123985,141841.513985 545030.329985,141839.937985 545034.597985,141838.672985 545038.912985,141837.817985 545043.263985,141837.564985 545045.479985,141837.372985 545049.948985,141837.531985 545054.478985,141837.971985 545059.024985,141839.581985 545068.905985,141840.655985 545073.249985,141842.000985 545077.543985,141849.605985 545098.429985,141852.868985 545106.820985,141856.108985 545114.396985,141863.822985 545130.663985,141870.756985 545147.135985,141873.752985 545155.384985,141879.091985 545172.579985,141883.341985 545185.112985,141884.625985 545189.420985,141885.627985 545193.781985,141886.145985 545197.442985,141886.449985 545201.927985,141886.736985 545210.964985,141887.107985 545215.451985,141888.688985 545225.889985,141890.837985 545235.495985,141892.625985 545240.137985,141895.222985 545246.128985,141896.344985 545249.128985,141899.344985 545249.585985,141901.987985 545249.987985,141910.946985 545254.647985,141922.303985 545260.209985,141934.615985 545265.751985,141949.278985 545271.886985,141952.650985 545273.232985,141953.085985 545270.082985,141953.697985 545260.435985,141955.736985 545245.635985,141956.724985 545241.274985,141957.339985 545239.311985,141959.039985 545235.186985,141961.133985 545231.187985,141963.487985 545227.299985,141969.128985 545218.902985,141971.839985 545215.291985,141974.698985 545211.797985,141977.702985 545208.448985,141981.598985 545204.640985,142003.749985 545186.021985,142007.106985 545183.020985,142010.279985 545179.861985,142011.503985 545178.509985,142014.209985 545174.939985,142021.256985 545163.293985,142023.970985 545159.756985,142027.727985 545156.132985,142031.253985 545153.355985,142042.379985 545145.535985,142054.026985 545136.633985,142060.975985 545130.928985,142064.714985 545127.423985,142070.881985 545120.853985,142082.306985 545108.149985,142087.613985 545102.034985,142096.113985 545091.529985,142099.094985 545088.167985,142102.615985 545084.656985,142116.917985 545071.592985,142126.193985 545061.774985,142132.719985 545055.619985,142139.502985 545049.705985,142152.899985 545038.492985,142163.689985 545030.315985,142167.166985 545027.473985,142169.362985 545025.434985,142175.735985 545018.911985,142178.744985 545015.461985,142181.470985 545011.872985,142183.788985 545008.130985,142185.713985 545003.380985,142186.467985 544998.647985,142185.842985 544994.279985,142183.834985 544990.319985,142181.236985 544986.676985,142178.209985 544983.168985,142171.763985 544976.505985,142168.169985 544973.241985,142160.932985 544967.826985,142150.992985 544959.115985,142147.610985 544955.911985,142144.697985 544952.514985,142142.553985 544948.835985,142141.448985 544944.453985,142141.366985 544939.973985,142142.555985 544927.576985,142143.282985 544922.932985,142144.283985 544918.248985,142144.317985 544913.913985,142143.855985 544912.514985,142141.673985 544908.912985,142138.777985 544905.543985,142135.430985 544902.337985,142124.215985 544892.360985,142113.700985 544883.804985,142110.516985 544880.674985,142107.108985 544876.724985,142104.234985 544873.018985,142101.700985 544869.152985,142099.737985 544865.197985,142099.013985 544863.104985,142098.927985 544858.542985,142100.632985 544853.979985,142102.038985 544852.214985,142105.407985 544849.594985,142109.303985 544847.361985,142113.516985 544845.413985,142125.369985 544840.695985,142129.650985 544839.159985,142138.320985 544836.494985,142142.650985 544835.425985)) - MULTIPOLYGON(((141915.20707389 545059.387655348,141919.801422452 545072.005349505,141922.317819047 545078.476414118,141924.497039105 545083.5720225,141931.58949003 545098.528322628,141932.948007704 545101.565338362,141939.882007704 545118.037338362,141941.251466939 545121.532703646,141944.247466939 545129.781703646,141945.379704287 545133.145086525,141946.3559021 545136.289068806,141953.641588396 545130.165092772,141957.089854983 545124.466424874,141961.755195593 545117.637254309,141964.469195593 545114.100254309,141971.902043368 545105.777124706,141975.659043368 545102.153124706,141981.323503868 545097.212495093,141984.849503868 545094.435495093,141988.126685407 545091.996095579,141998.026564897 545085.037884397,142007.445824641 545077.838584126,142011.481024278 545074.525760133,142011.672439934 545074.346323954,142015.650983665 545070.107791068,142026.098161322 545058.491078161,142030.123193498 545053.85322782,142036.276326015 545046.248679928,142034.080027084 545047.169206041,142027.356134783 545049.617237147,142022.271134783 545051.198237147,142016.054354808 545052.84242851,142011.704354808 545053.79542851,142006.339933412 545054.767818512,142001.886933412 545055.408818512,141997.307525709 545055.92497269,141983.499525709 545057.05297269,141981.761460455 545057.174653059,141972.780460455 545057.698653059,141970.219375418 545057.804204103,141941.339643255 545058.500365626,141920.0716525 545059.05633693,141915.20707389 545059.387655348)),((142293.528899252 544988.140168692,142294.601996184 544987.501777305,142302.137667721 544982.654447309,142315.330088769 544973.24530585,142317.708599738 544971.616934636,142331.800599738 544962.361934636,142335.315689827 544960.189567857,142344.618689827 544954.788567857,142350.044243235 544951.928649475,142354.095243235 544950.000649475,142358.937068202 544947.901878751,142366.937744911 544944.76338641,142385.89759784 544937.079520943,142395.719750516 544932.679151927,142400.441873082 544930.349833872,142401.383459124 544929.833071966,142406.6210572 544926.62519655,142411.537774632 544923.415397158,142417.71510139 544913.944561111,142420.94010139 544909.840561111,142430.748006338 544899.541762468,142434.142006338 544896.595762468,142435.850811608 544895.156577415,142442.412433986 544889.795267093,142444.49999699 544886.911016326,142448.144051661 544882.271951045,142451.044051661 544878.864951045,142458.695997856 544871.097938249,142461.294997856 544868.817938249,142470.134593455 544862.150512483,142473.842593455 544859.761512483,142480.427575735 544855.976426197,142484.421575735 544853.942426197,142489.150076298 544851.738001417,142493.336076298 544849.961001417,142496.826705207 544848.581227778,142511.506705207 544843.199227778,142514.871735859 544842.055231706,142523.461735859 544839.360231706,142525.522241398 544838.746075403,142534.194241398 544836.296075403,142536.004975022 544835.808868122,142551.475975022 544831.852868122,142553.240283912 544831.424409705,142591.914597139 544822.526741457,142598.275411491 544820.886724263,142602.704241198 544819.56048906,142609.292780478 544817.391524059,142615.583028111 544815.122934514,142618.279611019 544814.046641119,142629.45972981 544809.13013732,142631.782307416 544808.154985648,142635.957307416 544806.483985648,142639.000194615 544805.341955696,142647.786194615 544802.259955696,142650.862354779 544801.254874545,142659.482354779 544798.642874545,142662.638869661 544797.761220477,142669.973869661 544795.884220477,142673.205218145 544795.133066603,142686.423218145 544792.367066603,142687.75030488 544792.101834821,142698.39630488 544790.073834821,142699.656984019 544789.844824773,142722.099112074 544785.965804094,142733.29544748 544783.954693204,142742.05873277 544781.922771676,142754.323614283 544778.786704663,142756.030972713 544778.371387876,142775.118972713 544773.964387876,142777.273451963 544773.500199454,142820.991420451 544764.751150994,142837.522686446 544760.894948819,142844.015926493 544759.102611734,142844.917722818 544758.79792222,142856.218794477 544754.493944632,142862.453241526 544752.427321221,142870.586241526 544750.121321221,142875.768629606 544748.849245243,142884.617629605 544747.008245243,142891.189843383 544745.942777802,142898.301843383 544745.111777802,142904.543626015 544744.64541731,142909.018626015 544744.49841731,142913.016385389 544744.473703009,142917.509385389 544744.565703009,142920.324904418 544744.676294693,142934.674637347 544745.510159451,142951.608031998 544746.00958361,142954.88878603 544746.178321099,142959.36978603 544746.507321098,142963.711087962 544746.953378548,142973.246087962 544748.214378548,142976.745416005 544748.761522577,143008.170847153 544754.438302843,143008.88998273 544754.51936845,143021.086540262 544755.473370056,143024.601737995 544755.83181325,143030.442737995 544756.56681325,143035.06301864 544757.295205003,143043.91001864 544758.974205003,143047.065941417 544759.643768134,143051.457941418 544760.674768134,143054.738751825 544761.523564261,143062.852751825 544763.819564261,143067.512244981 544765.303734333,143071.745244981 544766.805734333,143075.849809935 544768.399302906,143086.996807532 544773.108079562,143087.534249256 544773.311425527,143089.290648579 544773.84542239,143090.815558434 544774.236272392,143107.033443497 544777.814719857,143118.197003623 544780.058732056,143128.554297917 544781.738142783,143139.336028988 544783.109031866,143155.49321177 544784.379932768,143159.259616953 544784.772085376,143168.171616953 544785.928085376,143172.417029432 544786.602995092,143183.484514979 544788.689249054,143192.757948937 544779.743577493,143204.458134003 544772.068508402,143207.452134003 544770.482508402,143217.877333406 544765.935907155,143228.870152028 544763.017979079,143233.093152028 544762.233979079,143243.749216234 544761.035368472,143248.714216234 544760.834368472,143254.046196302 544760.808205104,143259.265196302 544760.968205104,143261.486708783 544761.06929489,143267.979708783 544761.46129489,143273.365665557 544761.982012954,143277.793665557 544762.572012954,143286.575211331 544764.280368101,143288.189141126 544764.695595339,143290.978852032 544763.072253793,143293.057985348 544761.906229274,143304.973985348 544755.470229274,143306.958931092 544754.43608835,143315.965931092 544749.91308835,143320.623980386 544747.770101801,143324.766980386 544746.033101801,143328.238303539 544744.678091384,143332.286621343 544743.212671752,143331.143833831 544736.493747471,143330.870339244 544734.763796825,143329.055339244 544722.344796825,143328.854637586 544720.869286613,143325.924637586 544697.601286613,143325.764871004 544696.23097339,143324.324871004 544682.80797339,143324.122032336 544680.613710979,143322.960032336 544665.647710979,143322.826631958 544663.548552757,143322.182631958 544650.533552757,143322.117601971 544648.824943242,143321.877601971 544639.818943242,143321.867525705 544636.245919223,143321.955512321 544632.05717934,143321.77043356 544623.714398257,143321.835470129 544618.513217395,143322.062470129 544613.706217395,143325.292360964 544595.19794376,143326.484360964 544591.32194376,143331.729639817 544578.575059709,143339.219112454 544567.003378636,143340.243112454 544565.701378636,143353.146702893 544552.866696871,143356.357813689 544550.944227443,143360.724831274 544538.647255457,143361.729831274 544536.667255457,143369.036727648 544525.046930776,143378.339104196 544514.952948864,143378.62159647 544514.697818407,143378.155226847 544510.94165225,143374.102410185 544499.277113056,143373.007822462 544495.79929448,143372.379651765 544495.697483851,143371.381974607 544495.588885555,143357.48234826 544494.649991326,143321.795908582 544493.464324709,143319.758089386 544493.486147736,143312.228365485 544493.914767793,143305.455111006 544493.993943295,143300.977111006 544493.843943295,143289.193680868 544492.511203977,143284.954680868 544491.688203977,143277.00659789 544489.158340983,143276.426513723 544492.170388535,143269.854826429 544528.086878837,143262.821219905 544569.56192616,143261.774448627 544574.656037193,143260.721448627 544579.009037193,143259.680215806 544582.861773835,143256.522215806 544593.422773835,143253.23631489 544602.318708031,143251.34831489 544606.579708031,143242.008489251 544622.205107828,143239.454489251 544625.493107828,143227.30524964 544637.866099411,143212.639192566 544647.118218831,143208.199192566 544649.246218831,143196.474866603 544653.702425409,143184.171866906 544656.142465323,143179.675866906 544656.648465323,143170.088599017 544657.109394209,143154.457599017 544656.859394209,143151.617868051 544656.760142918,143133.53063217 544655.784641096,143121.290168068 544655.570511698,143117.660703231 544655.419032874,143113.177703231 544655.123032874,143107.001712981 544654.457450287,143102.611712981 544653.799450287,143095.331388678 544652.336502036,143090.549388678 544651.126502036,143082.051072215 544648.429483166,143077.618072215 544646.726483166,143064.106773636 544639.899296896,143060.325773636 544637.481296896,143047.050786815 544626.672758007,143045.727786815 544625.316758007,143036.688110558 544614.062347654,143034.335110558 544610.473347654,143028.538883685 544599.852309461,143026.696883685 544595.714309461,143023.774244043 544588.04423974,143022.350244043 544583.58823974,143020.893544138 544578.392131302,143019.795544138 544573.853131302,143018.702925331 544568.485649998,143017.507925331 544561.277649998,143016.664393871 544554.004344462,143016.365393871 544549.523344462,143016.210125035 544545.822610653,143016.132125035 544541.297610653,143016.121841841 544539.646480492,143016.191841841 544525.002480492,143016.261381424 544522.112214787,143017.058381424 544503.730214787,143017.200830162 544501.332617029,143019.015830162 544477.292617029,143019.117369181 544476.079044054,143020.974562841 544455.859387166,143012.017779016 544452.276044828,143000.730737927 544445.227455997,142997.412737927 544442.720455997,142987.84396231 544434.105295537,142984.80596231 544430.856295537,142980.583823832 544425.930029936,142973.422760994 544416.803672518,142963.91211261 544406.161519492,142956.819698158 544398.788915133,142953.893144036 544398.712152108,142953.503590826 544398.72251716,142949.462514144 544399.061408476,142943.263353163 544400.055538669,142939.663325572 544400.908414059,142939.238212841 544401.067454297,142938.976680873 544401.182858452,142934.137324015 544403.643690941,142929.769658667 544406.096795439,142926.652207278 544408.069938545,142927.198338169 544417.889249693,142925.064366118 544432.647879358,142924.028366118 544436.823879358,142915.90414904 544456.750498323,142913.47414904 544460.887498323,142904.900927942 544472.683961512,142901.762927942 544476.219961512,142891.805707433 544485.566812929,142887.590707433 544488.855812929,142878.925179228 544494.69435923,142874.856179228 544497.04135923,142865.016904724 544501.797485204,142860.704904724 544503.506485204,142847.670574801 544507.348275577,142843.780574801 544508.120275577,142828.558456297 544509.552401342,142824.221456297 544509.516401342,142812.959042535 544508.571318809,142808.504042535 544507.856318809,142801.33147797 544506.342329521,142796.85147797 544505.165329521,142792.415950273 544503.852523393,142785.163950273 544501.460523393,142780.337883578 544499.683012291,142776.195883578 544497.994012292,142769.99669122 544495.130423081,142762.606498738 544491.299245068,142753.019033808 544492.117962512,142748.573033808 544492.206962512,142737.253736829 544491.576554482,142732.073736829 544490.892554482,142726.515986909 544489.944923928,142722.013986909 544489.001923928,142716.444900051 544487.610979171,142712.012900051 544486.321979171,142705.652238558 544484.158660047,142701.408238558 544482.499660047,142694.009414955 544479.134523818,142690.072414955 544477.079523818,142679.933733744 544470.709227259,142675.879733744 544467.685227259,142667.222163891 544460.129017531,142664.090163891 544456.941017531,142659.697634783 544452.059750107,142652.455628131 544443.266417622,142641.010698615 544431.023595985,142639.761894936 544429.654199985,142629.709894936 544418.354199985,142628.440663554 544416.889717001,142624.411663554 544412.117717001,142623.024567126 544410.425340713,142617.422567126 544403.383340713,142616.24429217 544401.862555039,142587.346543277 544363.559802966,142579.850312854 544354.229311137,142574.837307005 544348.538475379,142574.380798773 544348.074877161,142573.482496771 544347.244537906,142549.020471652 544356.242809497,142550.021077146 544359.147463265,142550.918398887 544361.399953959,142552.790926445 544365.346434407,142555.308399385 544369.926610982,142556.270059459 544371.516809313,142561.662565615 544379.462687748,142562.879228922 544381.069659085,142570.613225941 544390.565318825,142575.437699753 544397.198978876,142578.976699753 544402.670978876,142582.557765089 544408.83131752,142584.646765089 544412.85331752,142586.320905962 544416.287716222,142588.242905962 544420.499716222,142590.33468939 544425.566294951,142591.93868939 544429.893294952,142594.177100548 544436.995188031,142595.319100548 544441.364188031,142597.171443512 544450.977463505,142597.691443512 544455.114463505,142598.181470333 544468.251908484,142597.961470333 544472.606908484,142596.463179074 544484.202538685,142595.538179074 544488.617538685,142593.630550396 544495.886498114,142592.234550396 544500.293498114,142590.935346415 544504.046682994,142589.305346415 544508.380682994,142588.272299374 544510.979346306,142585.389299374 544517.855346306,142582.234135189 544524.457345184,142574.877841918 544538.096816766,142566.515543165 544556.479839147,142565.689384712 544558.235390683,142562.681384712 544564.418390683,142562.065802624 544565.6546654,142557.979802624 544573.6746654,142557.417031773 544574.757404369,142548.333031773 544591.892404369,142546.951454584 544594.382994845,142541.529148564 544603.734736294,142537.069563867 544611.85072305,142534.069380318 544616.841347935,142531.432380318 544620.865347935,142517.631297233 544636.598188404,142514.707297233 544639.115188404,142502.521690675 544647.656705143,142488.889548013 544653.624217341,142487.827548013 544653.968217341,142471.094086772 544657.34629167,142454.030188709 544656.852840409,142450.487188709 544656.342840409,142437.358589199 544653.203168585,142436.668505703 544655.630630956,142436.057505703 544657.361630956,142430.350660746 544669.785574852,142428.170660746 544673.576574852,142419.197109221 544686.030415834,142416.135109221 544689.473415834,142409.409371599 544696.136811157,142405.887371599 544699.210811157,142402.268389353 544702.175774301,142400.057389353 544703.874774301,142396.224336385 544706.632730849,142392.514336385 544709.128730849,142387.07501259 544712.461220768,142383.11001259 544714.664220768,142378.13946881 544717.188877144,142374.00746881 544719.097877144,142369.377380348 544721.051532704,142365.163380348 544722.665532704,142362.440763496 544723.64850335,142353.223763496 544726.77650335,142347.769688407 544728.399502076,142343.262688407 544729.556502076,142334.011762954 544731.32086733,142329.585762954 544731.87986733,142315.948708737 544732.351079396,142312.327708737 544732.146079396,142295.844939335 544729.346473507,142291.729939335 544728.163473507,142279.117488381 544723.267889072,142275.080488381 544721.264889072,142267.421421377 544716.88546041,142263.505421377 544714.32946041,142259.236675046 544711.326353663,142255.485675046 544708.487353663,142253.718508244 544707.107825706,142250.508508244 544704.523825706,142247.621056086 544701.867004341,142245.975822652 544701.957295237,142240.968343436 544702.064613072,142231.945343436 544701.956613072,142227.873273827 544701.797150336,142223.220273827 544701.488150336,142219.237330033 544701.116734362,142218.770797848 544701.060643959,142217.679033889 544703.500397184,142215.572033889 544707.588397184,142212.403307436 544713.141517084,142209.949307436 544717.045517084,142207.152428394 544721.18259421,142204.501428394 544724.835594209,142200.876344685 544729.440953974,142198.836344685 544731.833953974,142193.932660441 544737.058559252,142190.716660441 544740.172559252,142186.630675434 544743.848621242,142176.739173701 544752.112476139,142167.720757309 544760.225367705,142166.358606458 544761.421283697,142164.679487397 544762.859928684,142170.162971622 544764.26110987,142175.060971622 544766.00310987,142188.609375456 544772.411032792,142200.613171778 544781.384861211,142210.593018116 544792.566247069,142218.150393529 544805.50868886,142222.983512571 544819.695361583,142224.899376364 544834.559754896,142223.821479538 544849.508295329,142221.544108779 544857.668809516,142222.493621098 544859.640797719,142227.243951322 544872.326051932,142228.423951322 544876.625051932,142229.892583503 544883.079044115,142230.100737768 544884.225522696,142231.196159123 544886.044706521,142233.455159123 544889.945706521,142237.190809781 544897.302319979,142238.782809781 544900.917319979,142242.894833084 544912.915500558,142243.985833084 544917.269500558,142244.120402998 544918.028161309,142252.480830463 544925.766827503,142255.642471805 544928.871720914,142262.190471805 544935.693720914,142264.486464574 544938.196863015,142270.491464574 544945.048863015,142274.302826793 544949.770221228,142276.978826793 544953.374221228,142280.526715791 544958.598447604,142282.577715791 544961.910447604,142287.223684419 544970.654294399,142289.141684419 544974.922294399,142293.528899252 544988.140168692))) - - #19 Polygon - gid: 2519 - - POLYGON((142639.054985 546593.084985,142638.983985 546578.467985,142637.899985 546522.015985,142637.938985 546492.896985,142637.097985 546450.097985,142637.323985 546438.583985,142638.161985 546425.106985,142640.378985 546405.030985,142641.014985 546394.820985,142641.331985 546384.084985,142641.148985 546370.582985,142641.244985 546363.069985,142641.584985 546354.071985,142642.254985 546344.252985,142643.286985 546335.313985,142644.522985 546326.394985,142648.737985 546299.023985,142650.292985 546287.844985,142651.629985 546274.394985,142652.493985 546269.090985,142653.436985 546264.685985,142655.832985 546255.985985,142657.324985 546251.745985,142659.948985 546245.601985,142667.821985 546229.388985,142674.155985 546214.865985,142677.911985 546205.201985,142679.361985 546200.940985,142681.914985 546192.299985,142684.417985 546181.838985,142686.974985 546168.576985,142689.654985 546153.350985,142694.878985 546120.270985,142697.142985 546106.960985,142699.359985 546095.284985,142703.219985 546077.702985,142704.624985 546066.572985,142705.358985 546062.133985,142706.612985 546057.889985,142708.252985 546054.334985,142710.527985 546050.471985,142713.073985 546046.712985,142719.613985 546037.284985,142728.418985 546025.982985,142730.690985 546022.264985,142732.054985 546018.591985,142731.686985 546016.665985,142724.660985 546009.840985,142717.691985 546000.791985,142714.941985 545996.960985,142712.738985 545993.180985,142711.360985 545988.681985,142714.052985 545984.850985,142718.418985 545982.397985,142721.651985 545982.033985,142726.312985 545982.683985,142730.716985 545984.217985,142731.895985 545984.775985,142735.810985 545986.892985,142743.367985 545991.857985,142750.724985 545997.160985,142754.125985 545999.891985,142761.223985 546006.385985,142764.713985 546009.110985,142768.178985 546010.905985,142772.098985 546007.143985,142774.143985 546005.180985,142774.113985 545999.566985,142773.537985 545995.098985,142768.381985 545968.404985,142767.068985 545958.959985,142766.199985 545949.980985,142765.940985 545945.485985,142765.750985 545931.805985,142766.233985 545927.222985,142767.634985 545923.521985,142769.098985 545922.223985,142773.757985 545921.006985,142778.814985 545921.309985,142783.002985 545922.544985,142787.137985 545924.271985,142795.346985 545928.342985,142811.462985 545935.870985,142815.626985 545937.556985,142820.576985 545938.996985,142825.031985 545939.950985,142829.609985 545940.709985,142834.206985 545941.141985,142838.717985 545941.118985,142843.041985 545940.509985,142847.204985 545939.284985,142851.513985 545937.443985,142855.628985 545935.100985,142859.326985 545932.341985,142862.380985 545929.253985,142863.263985 545928.078985,142865.435985 545924.062985,142866.966985 545919.494985,142867.782985 545914.817985,142867.736985 545909.942985,142866.022985 545905.989985,142862.937985 545902.315985,142859.441985 545899.133985,142854.047985 545895.067985,142850.262985 545892.621985,142837.767985 545885.201985,142825.932985 545878.689985,142819.751985 545874.844985,142805.176985 545864.270985,142794.436985 545857.191985,142790.895985 545854.458985,142787.923985 545851.332985,142786.743985 545846.536985,142788.245985 545842.303985,142791.773985 545840.313985,142796.261985 545838.819985,142801.083985 545837.998985,142802.463985 545837.997985,142805.463985 545837.994985,142805.357985 545834.997985,142805.262985 545828.997985,142805.520985 545820.191985,142805.877985 545815.707985,142807.383985 545802.278985,142807.642985 545798.275985,142807.624985 545793.783985,142807.104985 545784.785985,142806.722985 545767.919985,142806.979985 545763.439985,142807.737985 545759.086985,142809.044985 545754.836985,142810.745985 545750.671985,142812.747985 545746.584985,142814.955985 545742.585985,142818.189985 545737.179985,142820.793985 545733.508985,142829.696985 545723.146985,142832.161985 545719.462985,142832.897985 545718.055985,142834.513985 545713.945985,142835.658985 545709.600985,142836.487985 545705.114985,142837.768985 545696.409985,142838.248985 545691.931985,142838.646985 545682.880985,142839.065985 545678.409985,142839.638985 545675.304985,142841.047985 545671.041985,142844.967985 545662.753985,142846.660985 545658.581985,142847.581985 545654.707985,142847.927985 545650.295985,142847.867985 545645.793985,142847.478985 545641.250985,142846.840985 545636.716985,142845.620985 545630.188985,142844.442985 545625.866985,142839.491985 545613.185985,142838.170985 545608.906985,142836.982985 545602.039985,142836.453985 545597.426985,142836.195985 545592.787985,142836.317985 545588.225985,142836.932985 545583.845985,142837.506985 545581.601985,142839.204985 545577.594985,142841.653985 545573.762985,142844.599985 545570.136985,142850.556985 545564.008985,142855.814985 545562.041985,142856.880985 545561.642985,142856.292985 545557.919985,142855.390985 545553.820985,142854.135985 545549.506985,142852.244985 545544.563985,142850.361985 545540.478985,142844.125985 545527.977985,142834.606985 545507.539985,142826.544985 545491.433985,142821.485985 545479.737985,142819.843985 545475.499985,142818.480985 545471.212985,142817.540985 545466.871985,142817.213985 545464.155985,142817.030985 545459.662985,142817.207985 545455.117985,142817.660985 545450.581985,142818.485985 545445.117985,142819.662985 545440.740985,142822.757985 545432.078985,142823.990985 545427.764985,142824.559985 545422.879985,142823.987985 545418.543985,142822.645985 545414.208985,142819.284985 545405.255985,142813.283985 545388.284985,142808.968985 545375.562985,142806.315985 545366.954985,142804.586985 545358.943985,142803.925985 545354.485985,142803.102985 545345.493985,142802.904985 545340.751985,142802.834985 545331.720985,142803.009985 545327.199985,142803.393985 545322.710985,142804.037985 545318.278985,142805.452985 545311.744985,142806.650985 545307.380985,142809.573985 545298.818985,142811.266985 545294.665985,142813.004985 545291.210985,142815.400985 545287.398985,142820.519985 545279.931985,142826.842985 545268.466985,142829.338985 545264.782985,142832.164985 545262.098985,142833.230985 545261.695985,142835.992985 545262.345985,142846.160985 545258.387985,142854.318985 545254.575985,142858.403985 545252.356985,142869.987985 545245.401985,142875.644985 545242.347985,142912.309985 545224.049985,142926.307985 545216.705985,142951.656985 545202.846985,142972.226985 545191.088985,142985.020985 545184.003985,142989.016985 545181.876985,142993.087985 545179.977985,142997.011985 545178.519985,143001.320985 545177.379985,143005.734985 545176.563985,143019.196985 545174.781985,143029.936985 545172.947985,143038.782985 545171.290985,143053.861985 545168.157985,143058.239985 545167.099985,143064.886985 545165.078985,143073.421985 545161.808985,143077.597985 545159.899985,143081.563985 545157.748985,143085.208985 545155.311985,143088.708985 545151.406985,143090.492985 545147.010985,143090.813985 545144.727985,143089.978985 545140.305985,143088.118985 545135.725985,143086.667985 545131.314985,143086.751985 545128.175985,143088.720985 545124.505985,143091.965985 545121.090985,143095.880985 545118.148985,143099.492985 545116.076985,143103.605985 545114.680985,143108.081985 545114.016985,143112.694985 545113.606985,143117.223985 545112.973985,143130.923985 545110.673985,143135.304985 545109.618985,143139.420985 545108.092985,143140.758985 545107.421985,143144.429985 545105.021985,143147.844985 545102.071985,143151.027985 545098.743985,143154.002985 545095.206985,143156.794985 545091.631985,143159.329985 545087.702985,143165.032985 545075.706985,143169.544985 545068.380985,143174.812985 545061.053985,143177.619985 545057.534985,143179.712985 545055.221985,143186.158985 545048.939985,143193.007985 545043.061985,143196.559985 545040.305985,143204.126985 545034.852985,143207.925985 545032.379985,143211.823985 545030.116985,143215.833985 545028.136985,143220.506985 545026.334985,143224.814985 545025.059985,143229.211985 545023.991985,143247.739985 545020.064985,143271.248985 545015.903985,143300.088985 545011.067985,143319.233985 545008.037985,143322.181985 545007.660985,143320.621985 545004.756985,143318.426985 545000.669985,143317.771985 544996.915985,143316.818985 544987.902985,143316.483985 544978.913985,143318.127985 544975.428985,143320.969985 544971.163985,143325.529985 544961.287985,143327.718985 544957.410985,143330.469985 544955.005985,143333.411985 544952.432985,143330.469985 544950.953985,143324.550985 544948.182985,143312.064985 544943.041985,143303.953985 544939.926985,143290.772985 544935.169985,143255.834985 544921.723985,143240.383985 544916.255985,143231.802985 544913.548985,143223.892985 544911.297985,143215.153985 544909.116985,143210.750985 544908.213985,143206.364985 544907.516985,143192.930985 544906.053985,143187.453985 544905.270985,143183.055985 544904.302985,143178.713985 544903.106985,143172.673985 544900.844985,143164.258985 544899.268985,143136.152985 544894.663985,143127.654985 544893.030985,143118.870985 544891.059985,143108.925985 544888.514985,143090.565985 544883.345985,143073.319985 544878.131985,143068.474985 544876.994985,143064.055985 544876.187985,143059.601985 544875.538985,143050.639985 544874.541985,143041.819985 544873.776985,143028.327985 544873.125985,143023.847985 544872.745985,143018.942985 544872.112985,143000.433985 544869.180985,142987.018985 544867.640985,142978.053985 544866.860985,142970.405985 544866.438985,142944.598985 544865.635985,142935.601985 544865.579985,142927.194985 544865.844985,142918.206985 544866.397985,142911.314985 544867.017985,142902.373985 544868.047985,142889.004985 544869.952985,142864.821985 544874.363985,142848.911985 544876.576985,142844.480985 544877.334985,142838.073985 544878.661985,142829.326985 544880.811985,142819.324985 544883.870985,142800.796985 544890.606985,142773.388985 544901.131985,142760.875985 544906.196985,142750.977985 544910.668985,142742.913985 544914.664985,142737.069985 544917.874985,142724.981985 544924.919985,142713.020985 544931.285985,142709.136985 544933.547985,142705.137985 544936.250985,142701.645985 544939.051985,142695.074985 544945.218985,142680.742985 544959.330985,142671.103985 544969.088985,142662.768985 544973.041985,142652.842985 544978.358985,142641.271985 544985.338985,142634.830985 544989.779985,142627.829985 544995.416985,142602.075985 545017.695985,142591.628985 545026.268985,142584.723985 545031.405985,142577.151985 545036.249985,142563.479985 545044.293985,142523.221985 545068.752985,142513.631985 545074.114985,142504.669985 545078.768985,142449.282985 545105.186985,142429.396985 545115.264985,142420.658985 545120.011985,142411.075985 545125.488985,142395.834985 545135.064985,142387.294985 545140.246985,142363.037985 545154.362985,142356.402985 545157.748985,142344.050985 545163.201985,142339.898985 545164.937985,142325.684985 545170.528985,142317.212985 545173.561985,142303.543985 545177.834985,142294.845985 545180.144985,142285.745985 545182.081985,142259.033985 545187.070985,142250.228985 545188.919985,142245.783985 545190.007985,142229.466985 545194.445985,142212.023985 545198.894985,142204.533985 545201.039985,142191.663985 545205.131985,142180.193985 545209.385985,142171.855985 545212.806985,142165.722985 545215.687985,142161.756985 545217.791985,142154.012985 545222.384985,142140.577985 545231.018985,142133.147985 545236.100985,142115.719985 545248.557985,142102.333985 545258.662985,142094.400985 545265.020985,142087.591985 545270.906985,142078.153985 545279.664985,142065.304985 545292.272985,142061.463985 545295.538985,142058.168985 545298.695985,142057.175985 545300.454985,142056.463985 545305.537985,142057.721985 545310.009985,142062.115985 545310.976985,142066.520985 545310.561985,142076.187985 545308.856985,142080.192985 545308.520985,142089.203985 545308.646985,142098.195985 545309.362985,142102.054985 545309.894985,142106.458985 545310.741985,142110.825985 545311.824985,142130.830985 545317.813985,142152.372985 545324.883985,142164.840985 545328.945985,142177.742985 545332.933985,142189.838985 545336.203985,142198.607985 545338.303985,142203.018985 545339.200985,142207.448985 545339.939985,142216.683985 545340.889985,142225.692985 545341.292985,142234.270985 545341.415985,142251.656985 545340.922985,142291.579985 545340.124985,142300.184985 545339.602985,142309.174985 545338.801985,142313.628985 545338.177985,142321.257985 545336.558985,142325.609985 545335.368985,142334.166985 545332.488985,142341.767985 545329.286985,142345.811985 545327.301985,142349.793985 545325.177985,142357.421985 545320.738985,142361.221985 545318.337985,142368.622985 545313.204985,142382.291985 545302.859985,142389.289985 545297.184985,142392.681985 545294.234985,142397.402985 545289.625985,142406.329985 545279.577985,142412.737985 545273.259985,142419.291985 545267.086985,142429.992985 545257.467985,142440.308985 545248.759985,142441.612985 545247.714985,142446.109985 545245.262985,142446.338985 545248.994985,142446.199985 545253.571985,142445.640985 545258.488985,142444.609985 545263.241985,142443.857985 545265.512985,142442.012985 545269.516985,142439.699985 545273.376985,142437.056985 545277.103985,142431.323985 545284.203985,142427.990985 545287.884985,142424.744985 545290.998985,142418.000985 545297.012985,142412.625985 545302.081985,142402.843985 545311.388985,142393.281985 545319.861985,142386.339985 545325.596985,142383.071985 545328.078985,142375.719985 545333.293985,142368.108985 545338.125985,142364.187985 545340.316985,142359.849985 545342.473985,142355.742985 545344.307985,142347.378985 545347.681985,142328.337985 545354.886985,142316.107985 545358.925985,142307.469985 545361.469985,142299.454985 545363.561985,142286.275985 545366.538985,142276.143985 545368.318985,142267.208985 545369.345985,142248.532985 545370.511985,142219.161985 545371.185985,142203.715985 545371.164985,142199.205985 545371.018985,142194.733985 545370.628985,142188.003985 545369.399985,142183.639985 545368.295985,142179.306985 545367.017985,142170.748985 545364.137985,142165.665985 545362.193985,142149.185985 545354.923985,142140.126985 545351.437985,142131.579985 545348.557985,142127.240985 545347.464985,142122.210985 545346.513985,142117.678985 545345.875985,142113.128985 545345.532985,142108.629985 545345.592985,142105.518985 545345.933985,142101.168985 545346.844985,142096.841985 545348.164985,142092.578985 545349.812985,142088.422985 545351.707985,142084.414985 545353.767985,142080.190985 545356.407985,142076.653985 545359.241985,142073.333985 545362.356985,142067.997985 545368.049985,142062.268985 545375.019985,142056.981985 545382.321985,142054.076985 545386.833985,142049.685985 545394.701985,142044.122985 545405.734985,142038.521985 545418.021985,142023.289985 545452.443985,142017.545985 545464.659985,142014.837985 545469.791985,142005.253985 545486.555985,141988.171985 545519.134985,141977.076985 545541.374985,141973.492985 545549.619985,141971.566985 545555.125985,141970.306985 545559.444985,141965.979985 545576.568985,141962.918985 545589.719985,141960.635985 545598.142985,141955.825985 545613.701985,141951.434985 545626.601985,141950.141985 545630.915985,141948.934985 545636.962985,141948.704985 545641.499985,141949.123985 545646.141985,141950.244985 545650.549985,141951.056985 545652.499985,141953.342985 545656.425985,141956.355985 545660.122985,141959.910985 545663.037985,141962.039985 545664.112985,141966.156985 545665.317985,141970.561985 545665.989985,141975.146985 545666.276985,141979.804985 545666.327985,141986.719985 545666.292985,141991.278985 545665.940985,142000.535985 545664.247985,142005.024985 545663.753985,142009.282985 545664.058985,142010.548985 545664.383985,142014.485985 545666.064985,142018.279985 545668.475985,142021.898985 545671.414985,142025.310985 545674.677985,142028.480985 545678.062985,142030.032985 545679.813985,142032.714985 545683.400985,142034.950985 545687.417985,142036.704985 545691.669985,142037.858985 545695.616985,142038.718985 545700.121985,142039.089985 545704.851985,142038.672985 545709.406985,142037.721985 545712.350985,142035.592985 545716.121985,142032.841985 545719.745985,142029.638985 545723.145985,142026.149985 545726.245985,142022.543985 545728.968985,142018.629985 545731.298985,142014.527985 545733.136985,142010.234985 545734.681985,142001.549985 545737.362985,141997.219985 545738.546985,141983.982985 545741.310985,141979.609985 545742.365985,141969.681985 545745.217985,141965.394985 545746.710985,141961.337985 545748.534985,141959.777985 545749.404985,141955.834985 545752.283985,141952.703985 545755.965985,141951.963985 545758.506985,141952.751985 545762.553985,141954.762985 545766.861985,141957.561985 545770.888985,141959.982985 545773.460985,141963.411985 545776.158985,141967.224985 545778.496985,141971.289985 545780.580985,141985.212985 545786.896985,142000.150985 545792.668985,142008.343985 545796.429985,142016.334985 545800.578985,142022.250985 545804.295985,142046.437985 545822.371985,142052.748985 545826.682985,142056.617985 545828.963985,142064.603985 545833.129985,142070.922985 545836.248985,142083.286985 545841.758985,142087.295985 545843.769985,142092.594985 545847.153985,142096.154985 545849.929985,142099.578985 545852.884985,142104.802985 545857.704985,142111.182985 545864.060985,142117.370985 545870.603985,142120.682985 545874.288985,142142.202985 545899.659985,142165.737985 545927.016985,142172.879985 545934.881985,142182.253985 545944.598985,142186.214985 545948.917985,142202.883985 545967.751985,142211.384985 545977.403985,142225.593985 545992.922985,142238.418985 546008.296985,142250.230985 546021.879985,142259.725985 546033.693985,142269.350985 546046.564985,142278.361985 546059.624985,142298.361985 546090.836985,142309.584985 546107.625985,142341.472985 546156.462985,142356.456985 546178.710985,142366.251985 546193.812985,142376.758985 546209.595985,142385.270985 546221.615985,142387.634985 546225.427985,142392.256985 546234.208985,142394.167985 546238.328985,142395.821985 546242.520985,142397.123985 546246.785985,142398.005985 546251.510985,142398.388985 546255.983985,142399.224985 546283.243985,142399.697985 546292.227985,142400.941985 546305.891985,142401.545985 546310.351985,142403.237985 546319.045985,142405.506985 546327.777985,142408.303985 546336.338985,142410.310985 546341.331985,142418.668985 546358.807985,142424.819985 546375.738985,142426.239985 546379.047985,142430.073985 546387.302985,142432.170985 546391.346985,142434.510985 546395.185985,142437.187985 546398.706985,142440.399985 546401.785985,142444.036985 546404.428985,142451.744985 546409.342985,142464.608985 546418.886985,142474.778985 546427.251985,142481.544985 546433.292985,142484.647985 546436.537985,142486.778985 546439.146985,142489.315985 546442.826985,142491.601985 546446.723985,142493.656985 546450.776985,142496.820985 546458.222985,142498.276985 546462.456985,142499.496985 546466.785985,142503.472985 546484.744985,142506.642985 546502.467985,142509.386985 546520.985985,142510.336985 546525.363985,142510.840985 546527.218985,142512.350985 546531.439985,142518.183985 546543.729985,142519.807985 546547.903985,142520.462985 546550.160985,142521.369985 546554.533985,142521.977985 546559.000985,142522.344985 546563.520985,142522.608985 546574.349985,142522.280985 546578.872985,142521.351985 546583.333985,142520.542985 546585.903985,142517.219985 546589.425985,142514.512985 546586.565985,142511.824985 546583.070985,142509.171985 546579.181985,142498.742985 546562.904985,142494.176985 546555.142985,142490.162985 546547.838985,142484.052985 546535.786985,142480.174985 546526.738985,142475.650985 546514.011985,142472.138985 546503.403985,142468.153985 546490.503985,142463.423985 546476.206985,142461.831985 546471.994985,142459.996985 546467.916985,142456.960985 546462.582985,142454.434985 546458.849985,142451.705985 546455.233985,142445.862985 546448.329985,142442.104985 546444.394985,142428.626985 546432.421985,142418.075985 546422.798985,142411.737985 546416.428985,142408.499985 546412.663985,142405.701985 546409.137985,142400.377985 546401.856985,142392.425985 546390.103985,142387.707985 546382.429985,142380.885985 546369.973985,142378.896985 546365.914985,142377.106985 546361.786985,142375.751985 546358.075985,142374.507985 546353.777985,142373.513985 546349.392985,142370.442985 546330.776985,142368.191985 546312.914985,142365.265985 546293.674985,142363.190985 546283.190985,142361.213985 546274.351985,142359.975985 546270.025985,142358.455985 546265.821985,142356.394985 546261.322985,142354.263985 546257.363985,142351.945985 546253.483985,142345.725985 546243.935985,142343.151985 546240.252985,142316.274985 546206.202985,142310.966985 546198.936985,142307.937985 546194.352985,142294.814985 546172.627985,142290.329985 546164.823985,142287.005985 546158.186985,142275.101985 546130.634985,142271.989985 546124.071985,142267.678985 546116.171985,142261.093985 546105.453985,142258.578985 546101.726985,142253.279985 546094.447985,142243.571985 546081.658985,142236.439985 546072.727985,142230.606985 546065.874985,142222.765985 546057.102985,142213.581985 546047.200985,142208.292985 546041.857985,142201.735985 546035.693985,142192.537985 546027.675985,142181.948985 546019.303985,142169.155985 546009.780985,142160.153985 546003.473985,142152.572985 545998.626985,142143.089985 545992.867985,142131.365985 545986.142985,142125.570985 545982.482985,142118.447985 545976.998985,142096.890985 545958.860985,142084.848985 545949.882985,142068.162985 545938.270985,142059.174985 545932.384985,142042.151985 545921.873985,142030.906985 545914.386985,142023.584985 545909.156985,142018.526985 545905.193985,142015.089985 545902.283985,142007.356985 545895.188985,141997.952985 545885.504985,141978.411985 545863.813985,141970.581985 545855.994985,141963.934985 545849.915985,141957.167985 545844.315985,141949.939985 545838.921985,141943.509985 545834.697985,141935.696985 545830.192985,141927.585985 545826.245985,141920.060985 545823.365985,141915.730985 545822.001985,141911.337985 545820.882985,141906.909985 545820.080985,141900.193985 545819.531985,141895.681985 545819.481985,141891.151985 545819.648985,141882.152985 545820.550985,141875.954985 545821.657985,141871.598985 545822.759985,141835.260985 545833.483985,141828.631985 545835.167985,141819.750985 545837.019985,141815.382985 545838.106985,141811.145985 545839.501985,141805.788985 545841.924985,141801.806985 545844.098985,141797.952985 545846.526985,141794.270985 545849.180985,141790.809985 545852.035985,141787.313985 545855.407985,141784.315985 545858.759985,141778.763985 545865.928985,141772.511985 545874.919985,141762.709985 545891.608985,141755.482985 545903.062985,141753.252985 545906.957985,141749.978985 545913.877985,141748.666985 545918.387985,141748.768985 545921.000985,141751.304985 545924.740985,141755.513985 545927.302985,141756.711985 545927.533985,141760.888985 545927.181985,141765.244985 545925.936985,141769.700985 545924.397985,141774.175985 545923.166985,141780.031985 545922.354985,141784.630985 545921.853985,141789.209985 545921.625985,141793.664985 545921.852985,141796.571985 545922.361985,141800.821985 545923.878985,141804.901985 545926.294985,141808.334985 545929.381985,141809.624985 545931.053985,141811.674985 545934.859985,141813.219985 545939.084985,141814.397985 545943.557985,141815.347985 545948.104985,141816.698985 545956.095985,141817.630985 545969.607985,141818.087985 545974.081985,141819.103985 545980.957985,141820.067985 545985.702985,141821.975985 545989.546985,141822.773985 545990.339985,141826.310985 545992.454985,141830.547985 545993.897985,141842.968985 545996.468985,141847.509985 545997.140985,141856.800985 545997.868985,141861.005985 545998.965985,141862.625985 545999.768985,141866.109985 546002.355985,141869.292985 546005.647985,141872.113985 546009.408985,141874.515985 546013.402985,141875.853985 546016.074985,141877.440985 546020.184985,141878.605985 546024.508985,141879.480985 546028.971985,141881.195985 546039.871985,141881.790985 546044.335985,141882.519985 546053.351985,141883.053985 546057.813985,141883.746985 546061.327985,141884.939985 546065.652985,141886.382985 546069.934985,141888.045985 546074.147985,141889.902985 546078.266985,141893.383985 546084.869985,141898.220985 546092.482985,141903.490985 546099.802985,141906.468985 546103.551985,141909.433985 546106.937985,141929.822985 546129.167985,141938.792985 546139.272985,141943.052985 546143.689985,141949.747985 546149.692985,141964.954985 546162.315985,141973.916985 546169.572985,141988.206985 546180.523985,141994.103985 546185.427985,142000.869985 546191.374985,142006.985985 546197.194985,142010.101985 546200.434985,142022.076985 546213.883985,142031.699985 546223.931985,142040.717985 546233.530985,142049.725985 546243.589985,142058.221985 546253.642985,142066.572985 546264.239985,142071.784985 546271.572985,142087.501985 546294.715985,142092.258985 546301.453985,142100.397985 546312.229985,142108.079985 546321.503985,142125.060985 546340.016985,142133.543985 546348.938985,142143.242985 546358.327985,142163.998985 546377.305985,142173.789985 546386.599985,142191.111985 546403.493985,142204.870985 546417.738985,142212.229985 546425.909985,142226.183985 546442.081985,142233.915985 546451.275985,142245.281985 546465.234985,142249.865985 546470.532985,142260.724985 546482.422985,142276.240985 546498.862985,142283.837985 546507.332985,142289.597985 546514.245985,142305.035985 546533.383985,142311.432985 546541.561985,142319.545985 546552.352985,142325.631985 546560.748985,142331.597985 546569.324985,142352.206985 546601.281985,142358.484985 546610.374985,142363.806985 546617.636985,142370.309985 546626.052985,142375.995985 546633.031985,142381.874985 546639.851985,142388.050985 546646.513985,142394.445985 546652.851985,142406.112985 546663.869985,142412.850985 546669.837985,142418.240985 546674.127985,142443.384985 546692.509985,142450.371985 546698.165985,142457.310985 546704.523985,142460.526985 546707.694985,142466.605985 546714.329985,142470.300985 546719.095985,142475.145985 546726.700985,142483.032985 546740.420985,142501.498985 546775.196985,142510.156985 546792.354985,142514.053985 546800.467985,142518.478985 546810.391985,142522.272985 546820.003985,142525.007985 546828.570985,142528.781985 546841.541985,142532.004985 546851.396985,142534.853985 546859.935985,142539.055985 546873.966985,142541.391985 546882.669985,142542.843985 546889.440985,142543.557985 546893.873985,142544.550985 546902.823985,142545.871985 546922.835985,142546.360985 546938.371985,142546.544985 546956.386985,142546.739985 546960.876985,142547.362985 546967.620985,142548.653985 546976.536985,142550.299985 546985.393985,142551.436985 546990.406985,142554.966985 547003.451985,142555.834985 547007.422985,142557.197985 547016.310985,142558.683985 547029.428985,142559.219985 547035.983985,142568.219985 547036.121985,142572.728985 547036.024985,142581.714985 547035.501985,142591.573985 547035.199985,142595.869985 547034.180985,142597.816985 547032.770985,142600.066985 547029.423985,142601.774985 547025.338985,142603.042985 547020.781985,142603.973985 547016.020985,142604.933985 547009.293985,142605.238985 547004.860985,142605.137985 547000.377985,142603.950985 546984.754985,142603.663985 546971.251985,142603.742985 546962.255985,142604.252985 546952.983985,142607.153985 546916.365985,142607.517985 546898.350985,142607.740985 546893.863985,142608.381985 546887.057985,142608.975985 546882.544985,142609.858985 546878.111985,142611.177985 546873.849985,142613.093985 546869.621985,142615.298985 546865.709985,142622.403985 546854.127985,142624.843985 546849.369985,142627.944985 546842.588985,142629.542985 546838.792985,142626.214985 546838.483985,142622.666985 546837.753985,142618.842985 546836.097985,142616.469985 546834.131985,142613.916985 546830.574985,142611.830985 546826.313985,142607.626985 546815.755985,142606.081985 546811.513985,142604.771985 546807.169985,142603.734985 546802.764985,142603.006985 546798.336985,142602.576985 546792.392985,142602.860985 546774.337985,142602.460985 546761.163985,142602.555985 546756.672985,142603.363985 546746.339985,142604.441985 546737.393985,142606.371985 546725.978985,142608.360985 546717.192985,142611.192985 546706.280985,142617.884985 546683.219985,142621.661985 546670.257985,142624.159985 546661.045985,142628.692985 546643.625985,142629.847985 546640.178985,142633.051985 546631.746985,142634.346985 546627.450985,142636.677985 546616.584985,142638.067985 546607.674985,142638.672985 546602.065985,142639.054985 546593.084985)) - MULTIPOLYGON(((141877.641440651 545899.174621292,141877.705860312 545899.294221892,141882.11313423 545909.102129247,141883.65813423 545913.327129247,141885.747003497 545919.984419878,141886.925003497 545924.457419878,141887.812773449 545928.219509296,141888.066269442 545929.432821165,141894.314514948 545931.768203543,141895.934514948 545932.571203543,141907.337873997 545939.553978711,141910.821873997 545942.140978711,141920.028110834 545950.223119104,141923.211110834 545953.515119104,141929.291070623 545960.64543261,141932.112070623 545964.40643261,141936.386163135 545970.755561895,141938.788163135 545974.749561895,141941.577933878 545979.821814492,141942.915933878 545982.493814492,141945.819306375 545989.059178425,141947.406306375 545993.169178425,141949.858608213 546000.673761355,141951.023608213 546004.997761355,141952.204821483 546010.079457345,141953.079821483 546014.542457345,141953.569534375 546017.314933424,141955.284534375 546028.214933424,141955.538513823 546029.962978582,141956.133513823 546034.426978582,141956.547015579 546038.291492288,141957.068194351 546044.737236885,141957.152341479 546044.950412983,141957.325820875 546045.335206539,141958.314278321 546047.210180545,141960.358181963 546050.427099798,141963.321167297 546054.54266956,141964.077791321 546055.495182476,141965.289877034 546056.879372097,141985.095300574 546078.473102308,141985.912357827 546079.378606053,141993.853063383 546088.324072012,141995.14764048 546089.666360049,141998.751538347 546092.897756449,142012.507137526 546104.315980189,142020.334324491 546110.654062739,142033.82710591 546120.994122174,142036.162117405 546122.858525009,142042.059117405 546127.762525009,142043.617847653 546129.095246693,142050.383847653 546135.042246693,142052.571936283 546137.04351867,142058.687936283 546142.86351867,142061.043334899 546145.20649664,142064.159334899 546148.44649664,142066.115612895 546150.560407407,142077.185044474 546162.992372778,142085.866152691 546172.056882324,142086.361437562 546172.579033734,142095.379437562 546182.178033734,142096.589433311 546183.497183789,142105.597433311 546193.556183789,142107.009124291 546195.178809091,142115.505124291 546205.23180909,142117.128865006 546207.221228377,142125.479865006 546217.818228377,142127.704781975 546220.789974659,142132.916781975 546228.122974659,142133.82969278 546229.436845684,142149.16407951 546252.016454521,142152.833135573 546257.213448373,142159.230621321 546265.683691205,142164.630419358 546272.202530961,142179.877347538 546288.825013818,142186.825973671 546296.133235243,142194.640460695 546303.69795518,142214.608251982 546321.955265984,142215.633435038 546322.910364135,142225.424435038 546332.204364135,142226.155519359 546332.907799244,142243.477519359 546349.801799244,142245.057240492 546351.389192419,142258.816240492 546365.634192419,142260.60074664 546367.547415314,142267.95974664 546375.718415314,142269.0138111 546376.914096464,142282.9678111 546393.086096464,142283.584044577 546393.80949635,142291.316044577 546403.00349635,142292.07492763 546403.920548225,142302.732765765 546417.009828757,142305.924370984 546420.698555731,142315.690325376 546431.391731689,142330.784633982 546447.384927968,142332.07318498 546448.785390755,142339.67018498 546457.255390755,142341.457996817 546459.323254338,142347.217996817 546466.236254338,142347.972808202 546467.156920281,142363.410808202 546486.294920281,142364.109985813 546487.175085122,142370.506985813 546495.353085122,142371.380279621 546496.491796764,142379.493279621 546507.282796764,142380.270548754 546508.335632093,142386.356548754 546516.731632093,142387.199582483 546517.918727702,142393.165582483 546526.494727702,142394.627797238 546528.67719577,142409.419852589 546551.614248168,142404.98285813 546539.132013755,142404.451559945 546537.584042013,142400.939559945 546526.976042013,142400.480225918 546525.54043112,142396.715362473 546513.353043807,142392.913672221 546501.861972869,142390.068674641 546498.500366966,142389.992878233 546498.421000584,142378.817000124 546488.493059598,142378.086926955 546487.835905028,142367.535926955 546478.212905028,142364.909602613 546475.69828352,142358.571602613 546469.32828352,142354.874841929 546465.33279835,142351.636841929 546461.56779835,142349.749969065 546459.284105417,142346.951969065 546455.758105417,142345.160602985 546453.406947759,142339.836602985 546446.125947759,142338.260264246 546443.885413098,142330.308264246 546432.132413098,142328.535037117 546429.384346234,142323.817037117 546421.710346234,142321.927671973 546418.457063955,142315.105671973 546406.001063955,142313.537302447 546402.97633277,142311.548302447 546398.91733277,142310.087612695 546395.75238239,142308.297612695 546391.62438239,142306.656350972 546387.510673792,142305.301350972 546383.799673792,142303.708958315 546378.927898727,142302.464958315 546374.629898727,142301.363692554 546370.358469992,142300.369692554 546365.973469992,142299.514129585 546361.6004171,142296.443129585 546342.9844171,142296.031539165 546340.154443547,142293.900397619 546323.243537151,142291.369310869 546306.600300969,142289.797647252 546298.659423202,142288.737110427 546293.917852643,142288.308553476 546293.200509688,142283.551347786 546285.897969508,142282.92865993 546285.0069985,142257.404927525 546252.671429486,142255.713626811 546250.444615783,142250.405626811 546243.178615783,142248.3936298 546240.283994795,142245.3646298 546235.699994795,142243.741022598 546233.13120077,142230.618022598 546211.40620077,142229.788732319 546209.998915712,142225.303732319 546202.194915712,142223.270189057 546198.409454597,142219.946189057 546191.772454597,142218.157262755 546187.933471266,142206.773016008 546161.584448555,142205.134661009 546158.129267366,142202.766978579 546153.79043851,142198.029228403 546146.079093577,142197.157513648 546144.787292029,142193.087439501 546139.196412672,142184.390821916 546127.739774611,142178.566384699 546120.446161489,142174.083672624 546115.179570395,142167.308082543 546107.599481607,142159.422241281 546099.097129671,142155.940166917 546095.579503782,142151.391959633 546091.303897605,142144.611559904 546085.39334694,142136.289796977 546078.813896639,142125.237365832 546070.586561238,142118.417472551 546065.808393395,142112.902198665 546062.282139269,142104.960071982 546057.458907426,142094.048646282 546051.200007919,142091.316510646 546049.554652727,142085.521510646 546045.894652727,142079.817683837 546041.910549586,142072.694683837 546036.426549586,142070.161582194 546034.387340126,142050.293055847 546017.670017174,142041.002535456 546010.743402652,142026.189911721 546000.435109064,142018.921797166 545995.675415887,142002.7487187 545985.68920736,142000.586631141 545984.302515005,141989.341631141 545976.815515005,141987.314120471 545975.41699534,141979.992120471 545970.186995341,141977.328827015 545968.19398906,141972.270827015 545964.23098906,141970.064148329 545962.43342474,141966.627148329 545959.52342474,141964.385724723 545957.547698138,141956.652724723 545950.452698138,141953.551828905 545947.438436458,141944.147828905 545937.754436458,141942.230328359 545935.704442536,141924.014894557 545915.484854254,141918.751360697 545910.228714887,141914.688959696 545906.513454516,141910.802596742 545903.297312571,141906.884006543 545900.37300771,141904.155584242 545898.580650665,141900.513236871 545896.480461889,141897.716337661 545895.119426113,141896.158027917 545894.523023181,141892.501650467 545894.889514175,141891.765476277 545895.020999304,141891.418106088 545895.108878539,141877.641440651 545899.174621292)),((142522.12691348 546663.927344692,142525.878983767 546668.376621498,142529.573983767 546673.142621498,142533.555039396 546678.79803713,142538.400039396 546686.40303713,142538.732285602 546686.951715847,142539.164401741 546685.379234028,142545.856401741 546662.318234028,142545.879636654 546662.23833088,142547.048457102 546658.227144582,142546.952449096 546658.28076391,142532.429577358 546662.867582888,142522.12691348 546663.927344692)),((142563.173159694 546422.597768887,142563.306554182 546420.452473534,142563.615151908 546416.874751041,142565.635474263 546398.579761601,142566.083844628 546391.381866262,142566.316980211 546383.486145069,142566.155872751 546371.599407718,142566.155107006 546369.624724347,142566.251107006 546362.111724347,142566.298470045 546360.238042892,142566.638470045 546351.240042892,142566.758978497 546348.966228369,142567.428978497 546339.147228369,142567.749862505 546335.651431536,142568.781862505 546326.712431536,142568.996946745 546325.018830018,142570.232946745 546316.099830018,142570.396767822 546314.979910454,142574.528541313 546288.149359514,142575.805994456 546278.965662607,142576.99781354 546266.976158737,142577.605675477 546262.336726435,142578.469675477 546257.032726435,142579.155638085 546253.391084627,142580.098638085 546248.986084627,142581.12902275 546244.772205971,142583.52502275 546236.072205971,142585.085329672 546231.090819493,142586.577329672 546226.850819493,142588.352000116 546222.288772705,142590.976000116 546216.144772706,142592.48278958 546212.840536993,142599.687446415 546198.003867201,142604.801459699 546186.278130712,142607.426212139 546179.524774062,142607.868379264 546178.225412599,142609.43144457 546172.934990623,142611.089485303 546166.005400484,142613.216029802 546154.975978058,142615.676026847 546140.99989037,142620.79705315 546108.57195199,142620.94099002 546107.694304261,142623.20499002 546094.384304261,142623.459485201 546092.970207417,142625.676485201 546081.294207417,142626.104627492 546079.202304987,142629.236043552 546064.93894821,142630.215513188 546057.179875575,142630.629732904 546054.337680869,142631.363732904 546049.898680869,142633.433075569 546040.881607426,142634.687075569 546036.637607426,142638.510425367 546026.472770429,142640.150425367 546022.917770429,142642.480430748 546018.466523724,142641.027357955 546015.14555981,142639.649357955 546010.64655981,142636.858689639 545997.307991374,142636.527659805 545983.684641682,142638.667197159 545970.226275604,142643.206666449 545957.377211197,142649.996200436 545945.561650871,142652.688200436 545941.730650871,142663.754572282 545929.217634588,142677.316104529 545919.464429706,142681.682104529 545917.011429706,142693.426179898 545911.879893636,142696.091415905 545900.670772273,142697.492415905 545896.969772273,142705.889871009 545880.948038762,142715.414212808 545870.187671046,142715.095917569 545869.251483659,142713.915917569 545864.45548366,142711.827420359 545850.073698504,142712.551757998 545835.559123076,142716.061734334 545821.456725019,142717.563734334 545817.223725019,142723.160850488 545805.035697335,142730.839253034 545794.039431495,142732.423638146 545792.465251846,142732.229913007 545789.113061844,142732.124214445 545786.484233213,142731.742214445 545769.618233213,142731.846088725 545763.62459162,142732.103088725 545759.14459162,142733.091845837 545750.573637772,142733.849845837 545746.220637772,142736.051277823 545737.041214111,142737.358277823 545732.791214111,142739.612245794 545726.480420921,142741.313245794 545722.315420921,142743.392610534 545717.679213852,142745.394610534 545713.592213852,142747.091156317 545710.33335266,142749.299156317 545706.33435266,142750.593646243 545704.082876687,142753.827646243 545698.676876687,142757.017309888 545693.78754534,142759.621309888 545690.11654534,142763.473053418 545685.188206237,142763.719391077 545679.586190791,142763.97417557 545675.88301874,142764.39317557 545671.41201874,142765.311343032 545664.799224985,142765.884343032 545661.694224985,142768.427830273 545651.768387062,142769.836830273 545647.505387062,142771.122607947 545644.29092145,142769.627987702 545640.4627495,142767.829230953 545635.309494721,142766.508230953 545631.030494721,142764.268758247 545621.692167086,142763.080758247 545614.825167086,142762.471320045 545610.584678423,142761.942320045 545605.971678423,142761.569706987 545601.591706649,142761.311706987 545596.952706649,142761.222789487 545590.783002569,142761.344789487 545586.221002568,142762.046551039 545577.797461739,142762.661551039 545573.417461739,142764.272420575 545565.259904795,142764.846420575 545563.015904795,142768.451340483 545552.339073997,142770.149340483 545548.332073997,142770.531903099 545547.60567335,142767.066219406 545540.164593055,142759.477943146 545525.004982854,142757.708431209 545521.208619544,142752.649431209 545509.512619544,142751.551624273 545506.833836891,142749.909624273 545502.595836891,142748.369517131 545498.224430932,142747.006517131 545493.937430932,142745.17982804 545487.085615164,142744.23982804 545482.744615164,142743.078730528 545475.837064976,142742.751730528 545473.121064976,142742.276117764 545467.208206167,142742.093117764 545462.715206167,142742.087793899 545456.744405281,142742.264793899 545452.199405281,142742.579218995 545447.664979929,142743.032218995 545443.128979929,142743.501544877 545439.384778174,142744.326544877 545433.920778174,142746.058895095 545425.641931808,142746.440700134 545424.222084185,142742.574413931 545413.288115987,142742.258216828 545412.375237292,142737.943216828 545399.653237293,142737.295828758 545397.652771653,142734.642828758 545389.044771653,142733.004052335 545382.777770118,142731.275052335 545374.766770118,142730.39806615 545369.944181358,142729.73706615 545365.486181358,142729.2381615 545361.321847849,142728.4151615 545352.329847849,142728.168278677 545348.622848739,142727.970278677 545343.880848739,142727.90723787 545341.333298509,142727.83723787 545332.302298509,142727.891109263 545328.820038693,142728.066109263 545324.299038693,142728.282894716 545320.807647582,142728.666894716 545316.318647582,142729.173441485 545311.926230933,142729.817441485 545307.494230933,142730.73712472 545302.404984802,142732.15212472 545295.870984802,142733.128689816 545291.890606991,142734.326689816 545287.526606991,142735.673200147 545283.149723014,142738.596200148 545274.587723014,142740.12311926 545270.506845414,142741.81611926 545266.353845414,142744.266591111 545260.962168915,142746.004591111 545257.507168915,142749.506386092 545251.299483692,142751.902386092 545247.487483692,142753.541574429 545244.99128141,142756.602947282 545240.525707843,142761.168560631 545232.247239227,142764.752112802 545226.398902209,142767.248112802 545222.714902209,142777.68985613 545210.401301622,142780.51585613 545207.717301622,142792.291920722 545198.576243048,142805.643305572 545191.944865233,142806.709305572 545191.541865233,142819.295518248 545188.157532351,142820.513152317 545187.588566786,142821.183881269 545187.224222223,142831.382030154 545181.101283212,142834.358861949 545179.405276062,142840.015861949 545176.351276062,142842.154490622 545175.240706808,142878.139161168 545157.282231378,142890.894082364 545150.59040817,142915.054824443 545137.381061669,142935.007701726 545125.975814653,142935.893060169 545125.477660471,142948.687060169 545118.392660471,142949.781054504 545117.798643081,142953.777054504 545115.671643081,142957.311543596 545113.908131947,142961.382543596 545112.009131947,142966.965898379 545109.67409755,142970.889898379 545108.21609755,142977.829755463 545106.014522654,142982.138755463 545104.874522654,142987.687026808 545103.629627821,142992.101026808 545102.813627821,142995.892894258 545102.212567732,143007.959724981 545100.615249922,143016.719596759 545099.11938355,143018.248987647 545098.832903706,143020.662952108 545092.718408498,143022.631952108 545089.048408498,143034.351990238 545072.843499495,143037.596990238 545069.428499495,143046.909646142 545061.133280502,143050.824646142 545058.191280502,143058.561995631 545053.092908939,143062.173995631 545051.020908939,143075.387740364 545045.056303639,143079.500740364 545043.660303638,143092.60041902 545040.492862518,143097.07641902 545039.828862518,143099.449103684 545039.54767643,143101.172981562 545036.376335872,143105.684981562 545029.050335872,143108.650602588 545024.598863184,143113.918602588 545017.271863184,143116.181237624 545014.285211233,143118.988237624 545010.766211233,143122.008219297 545007.212708468,143124.101219297 545004.899708468,143127.367650635 545001.510105772,143133.813650635 544995.228105772,143137.31405608 544992.026252749,143144.16305608 544986.148252749,143147.031765936 544983.806712825,143150.583765936 544981.050712825,143152.71192648 544979.459064256,143158.471531126 544975.308525848,143152.488954432 544973.36863557,143151.290852891 544973.14424959,143124.026374215 544968.677127825,143121.99971731 544968.316446016,143113.50171731 544966.683446016,143111.234393337 544966.211338712,143102.450393337 544964.240338712,143100.277112445 544963.71855575,143090.332112445 544961.17355575,143088.600937133 544960.708422577,143070.240937133 544955.539422577,143068.861417602 544955.136734781,143053.880810284 544950.60763316,143053.161057972 544950.438725341,143051.908121465 544950.209913447,143050.045946936 544949.938572794,143043.252308486 544949.182797573,143036.770444719 544948.620595103,143024.713379063 544948.038831855,143021.989139953 544947.857631867,143017.509139953 544947.477631867,143014.248691155 544947.129138722,143009.343691155 544946.496138722,143007.208594828 544946.189324592,142990.285346989 544943.508522675,142979.490357485 544942.269291678,142972.736217625 544941.681647607,142967.173223031 544941.374693669,142943.1990916 544940.628724454,142936.550379826 544940.587340897,142930.68011804 544940.772379481,142923.870913325 544941.191325877,142918.967690534 544941.632416726,142911.957397573 544942.439999966,142901.028620542 544943.997283252,142878.280006558 544948.146650008,142875.154627162 544948.64881862,142860.404282733 544950.700516434,142858.413860331 544951.041012977,142854.636083924 544951.823455507,142849.26098959 544953.144645952,142843.121410858 544955.022367542,142827.055332059 544960.863316742,142800.904758162 544970.905450071,142790.397929902 544975.15839382,142783.07867129 544978.465296681,142777.633670208 544981.163489181,142774.012250742 544983.152667224,142762.746978398 544989.718173814,142760.219205152 544991.126769516,142749.907137747 544996.615158539,142747.05567702 544999.291304986,142733.734838985 545012.407664625,142724.461345351 545021.795645835,142714.509975712 545030.252045505,142703.242610105 545036.854084988,142696.565524036 545040.020794194,142689.943985687 545043.567713336,142681.965999583 545048.380291592,142679.697345719 545049.944503952,142675.897007748 545053.004424698,142651.14402007 545074.417479465,142649.653387682 545075.673487137,142639.206387682 545084.246487137,142636.395792489 545086.443173381,142629.490792489 545091.580173381,142625.140699585 545094.584218452,142617.568699585 545099.428218452,142615.184279799 545100.891647667,142601.969416944 545108.666688393,142562.164704472 545132.850290716,142559.823579005 545134.215365924,142550.233579005 545139.577365924,142548.196955126 545140.675204652,142539.234955126 545145.329204653,142536.958074485 545146.462997124,142482.383727063 545172.493385305,142474.761779489 545176.356102174,142482.406079363 545179.630725143,142494.771377493 545188.192249236,142505.179836294 545199.048780818,142513.212896402 545211.763742002,142518.547521275 545225.825821154,142520.969187589 545240.669534466,142521.198187589 545244.401534466,142521.304423008 545251.27162819,142521.165423008 545255.84862819,142520.719953948 545262.043952184,142520.160953948 545266.960952184,142518.93644197 545274.387915388,142517.90544197 545279.140915388,142515.808118995 545286.817941304,142515.056118995 545289.088941304,142511.974344504 545296.900268538,142510.129344504 545300.904268538,142506.347002978 545308.067395254,142504.034002978 545311.927395254,142500.87826191 545316.761526421,142498.23526191 545320.488526421,142495.409062494 545324.221232926,142489.676062494 545331.321232926,142486.919842444 545334.543836362,142483.586842444 545338.224836361,142479.912126979 545342.007023169,142476.666126979 545345.121023169,142474.661850396 545346.974931165,142468.697811973 545352.293396033,142464.203470399 545356.531873697,142454.541347208 545365.724817935,142452.584128009 545367.522024945,142443.022128009 545375.995024945,142441.04960024 545377.682871661,142434.107600241 545383.417871661,142431.701765061 545385.323937958,142428.433765061 545387.805937958,142426.46390746 545389.252026981,142419.11190746 545394.467026981,142415.918336539 545396.61138019,142408.307336539 545401.44338019,142404.693715607 545403.597791806,142400.772715607 545405.788791806,142397.580305623 545407.473168062,142393.242305623 545409.630168062,142390.430997905 545410.956111498,142386.323997905 545412.790111498,142383.800762344 545413.862000919,142375.436762344 545417.236000919,142373.921850366 545417.828091793,142354.880850366 545425.033091793,142351.857572356 545426.103759784,142339.627572356 545430.142759784,142337.296611591 545430.870700603,142328.658611591 545433.414700603,142326.411210068 545434.038779898,142318.396210068 545436.130779898,142315.980343142 545436.718751866,142302.801343142 545439.695751866,142299.253317627 545440.407712063,142289.121317627 545442.187712063,142284.708190846 545442.828409761,142275.773190846 545443.855409761,142271.882365889 545444.20024013,142253.206365889 545445.36624013,142250.25361744 545445.492245229,142220.88261744 545446.166245229,142219.060016947 545446.185915684,142203.614016947 545446.164915683,142201.2893183 545446.125716645,142196.7793183 545445.979716645,142192.690018858 545445.735396753,142188.218018858 545445.345396753,142181.260662092 545444.40885739,142174.530662092 545443.17985739,142169.610029942 545442.109423296,142165.246029942 545441.005423296,142162.422688099 545440.232250626,142158.089688099 545438.954250626,142155.385672467 545438.100829672,142146.827672467 545435.220829672,142143.957663255 545434.189573698,142138.874663255 545432.245573698,142135.395019772 545430.81372461,142120.566269665 545424.27215827,142119.500301508 545423.861962333,142118.932465517 545424.64621397,142118.416616784 545425.447422053,142115.945297515 545429.875647972,142111.755470398 545438.185258358,142106.938614375 545448.752069634,142091.875059809 545482.79340861,142091.161457398 545484.35735578,142085.417457398 545496.57335578,142083.87780535 545499.661265107,142081.16980535 545504.793265107,142079.948570884 545507.01578929,142071.042744047 545522.593552343,142054.94650702 545553.292493106,142045.071599927 545573.0868089,142043.375666967 545576.98830646,142043.012707197 545578.025926654,142042.687487035 545579.140709098,142038.867375782 545594.258708892,142038.702371777 545594.967616983,142039.999868991 545595.408297746,142043.936868991 545597.089297746,142054.71169485 545602.764967093,142058.50569485 545605.175967093,142065.560500836 545610.256118784,142069.179500836 545613.195118784,142073.735272826 545617.211670854,142077.147272826 545620.474670854,142080.054005554 545623.411995294,142083.224005554 545626.796995294,142084.607367054 545628.315329402,142086.159367054 545630.066329402,142090.099232188 545634.902450304,142092.781232188 545638.489450304,142098.246747572 545646.923757937,142100.482747572 545650.940757937,142104.283592674 545658.817469041,142106.037592674 545663.069469041,142108.691283741 545670.623066138,142109.845283741 545674.570066138,142111.528646058 545681.553520292,142112.388646058 545686.058520292,142113.489339174 545694.257333541,142113.860339174 545698.987333541,142113.777659688 545711.68947355,142113.360659688 545716.24447355,142110.041757597 545732.461231854,142109.090757597 545735.405231854,142103.032253541 545749.223316403,142100.903253541 545752.994316403,142095.330868988 545761.46936879,142093.646225074 545763.688616171,142098.550316565 545766.24689881,142102.797775984 545768.343405524,142113.816242033 545773.253770126,142116.914930893 545774.720479237,142120.923930893 545776.731479237,142127.662708786 545780.559799026,142132.961708786 545783.943799026,142138.714106076 545788.009867193,142142.274106076 545790.785867193,142145.156612386 545793.151111169,142148.580612386 545796.106111169,142150.437720568 545797.763401057,142155.661720568 545802.583401057,142157.735963031 545804.572134176,142164.115963031 545810.928134176,142165.673621997 545812.526816921,142171.861621997 545819.069816921,142173.151904 545820.469275711,142176.463904 545824.154275711,142177.878853344 545825.774733029,142199.229459399 545850.946026069,142221.937738805 545877.342049,142227.64281376 545883.624660946,142236.231104288 545892.527201918,142237.528325489 545893.90631015,142241.489325489 545898.22531015,142242.377659016 545899.211304892,142259.046659016 545918.045304892,142259.16655617 545918.181104611,142267.189603148 545927.29043874,142280.910275395 545942.276089567,142283.18600906 545944.879684065,142295.517998649 545959.662686634,142306.82496395 545972.664930935,142308.690271817 545974.895819744,142318.185271817 545986.709819744,142319.789204154 545988.778400791,142329.414204154 546001.649400791,142331.082877465 546003.971869915,142340.093877465 546017.031869915,142341.509990276 546019.161057488,142361.117748757 546049.760925374,142371.936714522 546065.945512046,142372.383540469 546066.621821419,142403.978907861 546115.010649734,142418.663908489 546136.81470032,142419.380778098 546137.899267784,142428.93169517 546152.624939006,142438.590926089 546167.134469946,142446.478024591 546178.272031506,142449.009493112 546182.088746497,142451.373493112 546185.900746497,142454.002540033 546190.494510525,142458.624540033 546199.275510525,142460.294366874 546202.650869281,142462.205366874 546206.770869281,142463.933813868 546210.802105003,142465.587813868 546214.994105003,142467.553964639 546220.622969176,142468.855964639 546224.887969176,142470.850503657 546233.023701517,142471.732503657 546237.748701517,142472.732551988 546245.112533143,142473.115551988 546249.585533143,142473.353740942 546253.684992485,142474.164517048 546280.122500448,142474.518945557 546286.854394166,142475.484082272 546297.455381361,142475.577554892 546298.145593092,142476.412377262 546302.435159099,142477.515627436 546306.680897539,142478.821771293 546310.678715758,142479.005469818 546311.135719612,142486.329182661 546326.449096693,142489.161147018 546333.19831702,142494.444598775 546347.741337944,142496.432724976 546349.110054672,142509.296724976 546358.654054672,142512.252083793 546360.963456642,142522.422083793 546369.328456642,142524.729839064 546371.306366957,142531.495839064 546377.347366957,142535.750742092 546381.459251793,142538.853742092 546384.704251793,142542.734440379 546389.093662879,142544.865440379 546391.702662879,142548.527244314 546396.577600794,142551.064244314 546400.257600794,142554.007091707 546404.878853121,142556.293091707 546408.775853121,142558.494817299 546412.807189941,142560.549817299 546416.860189941,142562.683639161 546421.445755647,142563.173159694 546422.597768887)),((142330.52667867 545247.979227065,142325.921467736 545249.418839789,142322.795018404 545250.322209481,142314.097018404 545252.632209481,142310.460457631 545253.50156783,142301.360457631 545255.43856783,142299.515629523 545255.807129216,142273.62732534 545260.642287556,142266.855884877 545262.064251601,142264.544640488 545262.629973512,142252.558719513 545265.889979474,142288.558655642 545265.17039555,142294.585171074 545264.804812626,142300.630922759 545264.266142203,142303.567647948 545263.642920539,142303.739033976 545263.596057171,142307.610458301 545262.293065229,142310.660293699 545261.008290469,142311.629833117 545260.532391423,142313.271351219 545259.656805173,142318.51700937 545256.60417322,142319.800897554 545255.792958607,142324.602377781 545252.462868348,142330.52667867 545247.979227065))) - - #20 Polygon - gid: 2520 - - POLYGON((158481.432985 510583.562985,158489.304985 510568.137985,158489.742985 510554.602985,158495.366985 510539.211985,158506.487985 510532.681985,158525.237985 510536.074985,158524.509985 510524.803985,158520.526985 510499.704985,158521.742985 510487.947985,158532.814985 510476.516985,158555.418985 510459.975985,158566.707985 510455.588985,158567.920985 510448.494985,158577.510985 510431.915985,158588.800985 510429.989985,158644.968985 510413.253985,158646.535985 510388.879985,158639.226985 510363.317985,158625.047985 510378.536985,158614.302985 510385.658985,158587.607985 510397.181985,158536.683985 510422.499985,158517.905985 510433.457985,158502.462985 510442.913985,158484.671985 510442.967985,158476.273985 510428.753985,158462.699985 510418.836985,158461.863985 510434.462985,158450.400985 510443.041985,158440.544985 510461.406985,158426.745985 510479.269985,158426.784985 510498.045985,158425.669985 510520.088985,158428.047985 510546.655985,158419.106985 510571.356985,158413.970985 510573.103985,158389.245985 510566.742985,158363.334985 510557.918985,158334.185985 510548.758985,158315.090985 510548.140985,158310.171985 510556.985985,158307.972985 510575.658985,158306.700985 510582.332985,158301.611985 510609.026985,158300.440985 510636.711985,158311.307985 510641.956985,158342.899985 510660.167985,158356.271985 510670.241985,158374.033985 510686.769985,158399.760985 510698.276985,158425.077985 510713.270985,158449.656985 510724.790985,158472.445985 510734.800985,158484.168985 510734.772985,158490.402985 510728.308985,158497.468985 510716.696985,158500.802985 510700.146985,158495.940985 510683.642985,158479.917985 510651.629985,158470.433985 510635.228985,158468.860985 510617.597985,158470.049985 510610.615985,158481.432985 510583.562985)) - POLYGON( EMPTY) - - #21 Polygon - gid: 2521 - - POLYGON((157869.315985 520433.637985,157856.178985 520399.216985,157834.269985 520383.765985,157837.129985 520350.383985,157849.976985 520324.750985,157884.267985 520315.565985,157928.572985 520281.754985,157969.435985 520288.428985,157995.223985 520278.692985,158043.757985 520253.692985,158088.001985 520238.144985,158131.710985 520233.176985,158161.789985 520246.081985,158177.706985 520240.052985,158184.062985 520208.456985,158173.722985 520194.194985,158141.933985 520199.529985,158117.247985 520208.894985,158058.927985 520207.808985,158035.018985 520213.752985,158019.448985 520203.796985,158016.808985 520180.093985,158007.024985 520150.917985,157971.159985 520128.594985,157943.413985 520100.672985,157936.868985 520070.503985,157895.009985 520063.382985,157866.038985 520063.004985,157831.988985 520058.373985,157815.198985 520060.788985,157814.667985 520062.114985,157805.376985 520079.736985,157805.131985 520111.664985,157793.919985 520111.222985,157780.766985 520105.771985,157761.185985 520162.929985,157768.122985 520191.771985,157788.795985 520203.076985,157809.040985 520190.281985,157822.093985 520173.832985,157849.686985 520173.862985,157865.312985 520195.645985,157879.132985 520236.462985,157885.168985 520252.260985,157867.794985 520266.033985,157813.882985 520286.000985,157795.021985 520258.542985,157778.258985 520254.263985,157744.848985 520244.603985,157712.168985 520249.566985,157684.754985 520260.299985,157665.400985 520256.359985,157651.387985 520249.849985,157648.472985 520254.899985,157628.126985 520277.906985,157632.442985 520323.400985,157637.148985 520356.136985,157613.676985 520373.009985,157611.837985 520410.654985,157615.005985 520437.710985,157641.030985 520432.938985,157674.459985 520440.319985,157700.786985 520441.225985,157736.859985 520437.355985,157780.029985 520431.763985,157800.420985 520439.994985,157800.694985 520446.629985,157801.243985 520459.900985,157790.056985 520479.632985,157799.422985 520483.141985,157816.313985 520487.074985,157838.367985 520462.690985,157869.315985 520433.637985)) - POLYGON((157709.297185021 520330.935932945,157711.385825117 520345.464985685,157712.092131453 520359.056710976,157711.360558615 520364.661253674,157728.04149239 520362.871682146,157761.152813139 520358.582627117,157762.403736042 520343.98182,157762.978712539 520340.826547721,157761.146281582 520339.328652421,157752.062634395 520328.465608525,157748.887917416 520323.843829254,157739.832907843 520321.225709156,157731.711564547 520322.459069829,157712.097710963 520330.138193288,157709.297185021 520330.935932945)) - - #22 Polygon - gid: 2522 - - POLYGON((153150.576985 520940.908985,153155.070985 520940.770985,153160.755985 520940.781985,153164.005985 520941.150985,153168.185985 520942.767985,153171.314985 520944.415985,153176.455985 520947.720985,153181.606985 520950.538985,153187.215985 520951.893985,153191.791985 520952.155985,153194.139985 520957.187985,153198.008985 520954.124985,153208.046985 520950.059985,153211.950985 520947.552985,153213.758985 520945.586985,153214.902985 520941.306985,153215.775985 520929.532985,153215.470985 520922.256985,153214.866985 520917.795985,153213.474985 520912.584985,153211.409985 520906.797985,153210.203985 520901.480985,153209.430985 520896.154985,153208.215985 520891.322985,153205.244985 520887.996985,153199.275985 520882.262985,153186.430985 520871.760985,153179.902985 520862.984985,153170.213985 520851.001985,153166.668985 520848.128985,153161.060985 520844.857985,153155.362985 520842.770985,153143.662985 520841.207985,153139.192985 520839.449985,153135.769985 520836.517985,153129.812985 520836.242985,153123.860985 520836.882985,153110.129985 520839.130985,153102.570985 520841.192985,153093.632985 520838.265985,153088.575985 520835.220985,153089.898985 520839.123985,153088.596985 520843.497985,153087.569985 520848.617985,153085.579985 520853.123985,153082.305985 520856.232985,153076.601985 520860.218985,153069.971985 520867.620985,153066.452985 520870.596985,153062.482985 520874.551985,153057.274985 520878.033985,153053.286985 520880.057985,153052.184985 520880.379985,153040.541985 520881.305985,153032.802985 520886.739985,153029.682985 520891.650985,153029.254985 520893.428985,153029.218985 520898.552985,153030.785985 520902.794985,153034.873985 520909.239985,153042.145985 520918.628985,153045.594985 520922.358985,153049.039985 520925.290985,153052.880985 520927.634985,153059.322985 520930.915985,153063.631985 520932.293985,153066.569985 520934.161985,153070.047985 520937.030985,153074.235985 520943.145985,153077.665985 520949.675985,153079.284985 520953.852985,153079.434985 520955.143985,153079.208985 520960.521985,153080.289985 520975.063985,153079.732985 520983.766985,153078.599985 520992.696985,153083.367985 520992.610985,153087.736985 520990.589985,153091.101985 520987.618985,153094.791985 520983.665985,153100.121985 520976.287985,153104.957985 520972.316985,153117.724985 520959.010985,153121.262985 520956.153985,153125.222985 520953.503985,153129.591985 520951.482985,153136.603985 520946.987985,153144.695985 520943.045985,153149.109985 520941.277985,153150.576985 520940.908985)) - POLYGON( EMPTY) - - #23 Polygon - gid: 2523 - - POLYGON((157261.821985 521212.042985,157255.517985 521158.904985,157227.447985 521110.819985,157193.480985 521080.159985,157154.275985 521056.383985,157110.994985 521055.200985,157075.666985 521042.824985,157053.089985 521016.601985,157057.673985 520992.362985,157039.358985 520960.816985,157034.486985 520926.714985,157029.615985 520902.356985,156995.512985 520877.997985,156966.282985 520873.125985,156937.052985 520873.125985,156907.821985 520863.382985,156873.719985 520843.895985,156855.757985 520822.219985,156849.459985 520818.621985,156836.865985 520811.424985,156793.392985 520777.048985,156766.039985 520737.460985,156728.760985 520722.977985,156710.216985 520732.313985,156697.880985 520740.090985,156693.336985 520756.434985,156668.342985 520768.289985,156629.440985 520764.303985,156604.591985 520776.688985,156602.502985 520800.105985,156616.097985 520861.121985,156609.482985 520899.994985,156586.751985 520928.161985,156566.844985 520935.459985,156563.162985 520961.757985,156557.828985 520985.666985,156555.414985 521022.078985,156562.430985 521063.373985,156560.713985 521082.827985,156553.817985 521111.533985,156555.075985 521118.090985,156559.312985 521117.477985,156590.563985 521112.953985,156645.119985 521099.542985,156681.977985 521069.587985,156745.810985 521043.788985,156797.577985 521042.609985,156839.811985 521059.742985,156900.802985 521071.653985,156963.644985 521085.826985,156980.767985 521096.550985,157015.014985 521117.998985,157045.450985 521159.433985,157060.450985 521187.893985,157099.503985 521191.189985,157138.274985 521174.733985,157191.026985 521169.054985,157232.239985 521201.560985,157257.694985 521216.582985,157261.821985 521212.042985)) - POLYGON((156631.095656882 521014.295354275,156634.676048003 521011.38552151,156643.851709985 521005.00170818,156653.874255463 521000.052523643,156717.707255463 520974.253523643,156730.658675837 520970.335547184,156744.103293312 520968.808428927,156795.870293312 520967.629428927,156811.101565777 520968.83930815,156825.771566439 520973.110906117,156861.294856822 520987.521583157,156915.178256666 520998.044532044,156917.303575206 520998.491627719,156978.458943209 521012.284235063,156979.041998034 521006.300667263,156974.497999612 520998.474023844,156968.502649166 520985.401119564,156965.112860065 520971.424196327,156961.82603665 520948.41778169,156960.075376293 520948.125985,156937.052985 520948.125985,156925.040076572 520947.157667617,156913.337363025 520944.277719163,156884.106363025 520934.534719163,156870.611358984 520928.501103151,156836.509358984 520909.014103151,156825.461831265 520901.308096946,156815.970836196 520891.750303639,156806.709938491 520880.574531528,156799.653894166 520876.542266084,156790.346650885 520870.254837571,156746.873650885 520835.878837571,156738.67880068 520828.345749364,156732.07152263 520820.156651212,156725.478303553 520824.198807514,156700.484303553 520836.053807514,156688.345254244 520840.513209791,156689.302884797 520844.811171234,156691.07391221 520859.221895786,156690.035101518 520873.703829102,156683.420101518 520912.576829102,156680.22196136 520924.914800881,156674.980833687 520936.533072215,156667.848085666 520947.096099894,156645.117085666 520975.263099894,156635.733933358 520984.95783639,156634.659225174 520985.727668446,156632.28366467 520996.375826696,156631.095656882 521014.295354275)) - - #24 Polygon - gid: 2524 - - POLYGON((157198.781985 521343.128985,157167.375985 521333.418985,157161.598985 521339.797985,157164.714985 521379.602985,157160.482985 521417.461985,157147.909985 521451.287985,157146.214985 521493.149985,157153.755985 521521.467985,157172.019985 521558.894985,157193.474985 521583.667985,157202.389985 521607.497985,157215.882985 521640.795985,157219.352985 521646.857985,157226.292985 521658.980985,157246.124985 521668.670985,157251.301985 521666.452985,157261.655985 521662.017985,157262.134985 521635.987985,157274.849985 521612.355985,157297.013985 521594.829985,157301.610985 521571.282985,157288.486985 521545.637985,157285.205985 521539.225985,157270.572985 521505.724985,157269.548985 521478.705985,157307.010985 521424.848985,157283.533985 521402.041985,157242.954985 521367.245985,157198.781985 521343.128985)) - POLYGON( EMPTY) - - #25 Polygon - gid: 2525 - - POLYGON((153125.509985 521860.224985,153129.708985 521849.726985,153136.136985 521836.144985,153138.731985 521832.043985,153142.336985 521823.841985,153148.967985 521810.226985,153150.370985 521805.542985,153153.006985 521792.564985,153154.402985 521777.197985,153153.618985 521769.895985,153152.742985 521765.487985,153148.961985 521758.774985,153144.279985 521752.074985,153143.056985 521750.968985,153139.230985 521748.538985,153134.217985 521746.356985,153114.663985 521739.427985,153109.650985 521737.245985,153103.330985 521736.862985,153086.671985 521737.137985,153084.952985 521736.685985,153066.181985 521728.868985,153061.034985 521727.319985,153055.740985 521726.155985,153040.417985 521725.642985,153034.931985 521727.163985,153030.266985 521728.048985,153025.756985 521727.483985,153021.504985 521725.925985,153021.401985 521740.811985,153025.620985 521762.422985,153028.396985 521782.239985,153029.073985 521790.804985,153029.015985 521795.534985,153024.560985 521796.077985,153020.647985 521795.895985,153016.211985 521796.659985,153013.478985 521797.356985,153008.572985 521799.235985,152992.029985 521803.995985,152987.552985 521804.245985,152977.157985 521803.766985,152967.736985 521805.261985,152960.981985 521805.362985,152944.483985 521808.310985,152939.425985 521807.940985,152933.133985 521808.486985,152926.828985 521808.580985,152920.548985 521809.576985,152911.549985 521809.710985,152907.098985 521810.416985,152899.442985 521812.148985,152887.438985 521818.195985,152882.959985 521819.165985,152878.228985 521818.958985,152873.052985 521819.313985,152871.421985 521823.741985,152865.942985 521823.030985,152861.490985 521823.806985,152857.111985 521826.478985,152855.683985 521831.547985,152854.440985 521846.644985,152854.133985 521857.957985,152854.309985 521860.213985,152855.839985 521866.961985,152865.036985 521874.045985,152874.713985 521882.075985,152878.858985 521884.969985,152882.944985 521886.866985,152892.209985 521888.583985,152896.537985 521889.822985,152903.363985 521892.428985,152907.024985 521893.185985,152911.504985 521893.661985,152917.130985 521892.998985,152921.564985 521892.074985,152925.843985 521890.738985,152929.677985 521888.711985,152935.486985 521884.287985,152943.654985 521875.835985,152946.532985 521872.376985,152949.115985 521867.824985,152953.949985 521863.238985,152957.006985 521859.582985,152964.207985 521853.973985,152968.477985 521851.612985,152980.671985 521851.556985,152998.660985 521850.384985,153009.055985 521850.742985,153026.285985 521852.273985,153035.705985 521854.344985,153040.268985 521856.533985,153046.370985 521860.369985,153050.401985 521863.561985,153053.601985 521866.714985,153054.745985 521870.862985,153054.699985 521875.367985,153050.734985 521877.589985,153036.784985 521883.448985,153031.563985 521884.752985,153019.770985 521884.870985,153013.815985 521886.226985,153007.358985 521888.514985,153003.322985 521890.484985,152999.693985 521893.183985,152996.722985 521896.450985,152996.967985 521901.236985,153000.089985 521904.523985,153001.564985 521905.515985,153009.179985 521909.352985,153018.336985 521912.795985,153031.944985 521916.685985,153035.712985 521918.129985,153039.695985 521920.180985,153040.907985 521921.185985,153047.115985 521928.193985,153060.087985 521944.758985,153063.400985 521947.809985,153066.383985 521949.961985,153070.274985 521952.220985,153072.724985 521953.203985,153077.118985 521954.381985,153081.603985 521954.758985,153084.286985 521954.026985,153088.286985 521951.951985,153089.550985 521950.525985,153093.585985 521943.221985,153095.608985 521939.204985,153100.205985 521925.595985,153104.279985 521909.286985,153106.388985 521903.838985,153108.425985 521895.684985,153111.363985 521887.516985,153114.763985 521879.792985,153125.509985 521860.224985)) - POLYGON( EMPTY) - - #26 Polygon - gid: 2526 - - POLYGON((157932.417985 522155.088985,157944.275985 522122.344985,157937.133985 522096.277985,157945.879985 522082.105985,157967.232985 522064.316985,157982.322985 522039.440985,158000.496985 522030.869985,158009.669985 522049.652985,158032.912985 522049.223985,158031.812985 522022.937985,158031.808985 521996.628985,158045.642985 521975.762985,158053.730985 521989.459985,158063.586985 522015.397985,158083.101985 522030.407985,158106.174985 522054.201985,158119.395985 522059.194985,158140.518985 522030.272985,158150.745985 522010.370985,158145.639985 521985.458985,158099.206985 521948.659985,158056.817985 521923.022985,158031.872985 521941.121985,157999.283985 521920.250985,157975.074985 521885.098985,157938.659985 521874.332985,157900.267985 521882.868985,157865.445985 521868.290985,157831.202985 521856.440985,157809.952985 521830.208985,157790.517985 521806.917985,157761.250985 521788.022985,157741.055985 521775.447985,157745.715985 521787.101985,157755.892985 521825.646985,157771.649985 521862.272985,157803.680985 521930.634985,157790.216985 521978.321985,157761.706985 521986.509985,157746.491985 522006.246985,157772.072985 522027.363985,157800.108985 522054.487985,157816.264985 522079.960985,157836.791985 522101.384985,157844.809985 522124.051985,157862.795985 522126.713985,157889.746985 522125.611985,157916.287985 522156.041985,157921.886985 522165.446985,157932.417985 522155.088985)) - POLYGON ((157858.57914185867 522008.3453885631, 157863.44444038192 522014.31809463963, 157875.59429040362 522033.47463893297, 157883.09502664296 522041.3031464203, 157889.22642461277 522032.95952942636, 157897.8743840681 522024.48253249004, 157909.60455873946 522014.7102252157, 157918.19873357913 522000.54265110625, 157926.94878182272 521988.85741432256, 157937.7967307582 521979.0885808789, 157946.77683321957 521973.72816572373, 157937.51531493766 521962.7907475608, 157930.72356280676 521952.92897421593, 157916.54584579886 521956.0812192769, 157901.29505984765 521957.86195211863, 157886.00122668233 521956.4995466379, 157875.2308944553 521953.23936733446, 157862.3952427896 521998.70087364636, 157858.57914185867 522008.3453885631)) - - #27 Polygon - gid: 2527 - - POLYGON((149946.529985 522862.341985,149966.481985 522827.471985,149971.102985 522795.593985,149955.120985 522773.194985,149939.535985 522777.700985,149919.295985 522795.320985,149896.669985 522804.718985,149890.945985 522795.728985,149898.974985 522765.579985,149920.144985 522727.754985,149913.346985 522702.453985,149883.812985 522706.570985,149875.847985 522712.141985,149848.867985 522733.237985,149847.635985 522734.278985,149844.408985 522737.640985,149838.341985 522744.662985,149834.815985 522747.431985,149824.076985 522739.434985,149816.408985 522734.720985,149812.125985 522731.061985,149802.392985 522719.891985,149798.360985 522714.476985,149788.169985 522702.133985,149784.674985 522696.954985,149783.454985 522694.846985,149781.555985 522690.771985,149780.739985 522687.972985,149780.149985 522683.502985,149780.341985 522679.629985,149782.374985 522664.239985,149783.390985 522660.945985,149785.909985 522654.333985,149795.392985 522633.032985,149790.732985 522630.377985,149788.450985 522629.815985,149783.947985 522629.324985,149779.954985 522629.236985,149763.488985 522630.011985,149759.275985 522628.393985,149754.474985 522624.634985,149751.188985 522621.536985,149746.287985 522615.463985,149744.142985 522613.104985,149740.146985 522609.133985,149736.579985 522606.158985,149729.751985 522601.390985,149726.308985 522598.550985,149724.513985 522596.066985,149722.709985 522591.906985,149718.527985 522593.569985,149708.661985 522598.397985,149706.262985 522599.786985,149703.001985 522602.886985,149699.606985 522606.922985,149697.587985 522611.774985,149695.862985 522616.877985,149695.505985 522618.594985,149695.224985 522623.072985,149695.263985 522627.591985,149695.661985 522632.426985,149694.473985 522637.230985,149693.005985 522640.325985,149689.515985 522643.252985,149684.312985 522644.206985,149680.293985 522644.052985,149676.063985 522642.545985,149670.784985 522639.861985,149661.685985 522633.920985,149656.545985 522630.804985,149652.902985 522628.165985,149645.682985 522622.646985,149640.918985 522618.527985,149634.442985 522612.273985,149630.501985 522609.470985,149628.581985 522608.498985,149624.066985 522606.761985,149622.208985 522606.930985,149618.814985 522609.527985,149615.790985 522613.190985,149614.293985 522615.264985,149612.288985 522619.274985,149611.210985 522622.320985,149608.321985 522633.178985,149608.059985 522634.774985,149607.991985 522646.548985,149608.575985 522654.849985,149610.186985 522665.048985,149611.456985 522683.114985,149612.528985 522687.482985,149614.559985 522694.254985,149615.501985 522696.106985,149618.647985 522699.565985,149620.744985 522700.686985,149625.134985 522700.457985,149632.636985 522698.591985,149637.449985 522697.223985,149639.247985 522696.603985,149643.376985 522694.800985,149645.312985 522693.777985,149650.006985 522690.545985,149656.345985 522685.250985,149661.382985 522680.526985,149666.521985 522677.267985,149670.359985 522674.578985,149674.725985 522673.240985,149679.179985 522672.528985,149684.103985 522674.538985,149686.519985 522678.573985,149687.938985 522682.812985,149688.390985 522687.254985,149688.214985 522693.094985,149687.852985 522697.577985,149687.255985 522702.043985,149686.243985 522707.382985,149684.070985 522716.888985,149682.707985 522721.337985,149682.734985 522723.346985,149684.410985 522727.516985,149689.127985 522735.746985,149690.970985 522739.883985,149691.645985 522744.652985,149686.699985 522813.572985,149681.925985 522845.160985,149688.863985 522854.293985,149701.543985 522856.177985,149715.246985 522845.580985,149731.486985 522843.349985,149755.832985 522836.089985,149821.720985 522854.503985,149835.820985 522867.489985,149866.684985 522900.071985,149876.926985 522910.894985,149904.293985 522940.758985,149925.071985 522967.911985,149942.329985 522987.487985,149953.714985 522987.343985,149958.169985 522985.691985,149957.918985 522959.085985,149944.105985 522944.060985,149933.546985 522923.664985,149934.447985 522897.200985,149946.529985 522862.341985)) - POLYGON( EMPTY) - - #28 Polygon - gid: 2528 - - POLYGON((149018.973985 523298.843985,149027.116985 523297.053985,149050.059985 523306.128985,149076.982985 523309.933985,149115.614985 523303.010985,149138.271985 523304.959985,149139.167985 523304.141985,149158.847985 523286.186985,149166.967985 523275.518985,149179.148985 523259.517985,149173.818985 523231.813985,149167.615985 523190.279985,149174.951985 523171.330985,149185.861985 523154.667985,149195.141985 523139.933985,149191.733985 523114.168985,149179.721985 523100.162985,149165.431985 523093.446985,149150.425985 523084.926985,149129.423985 523071.851985,149098.282985 523060.898985,149029.121985 523053.160985,148976.031985 523045.466985,148942.291985 523052.693985,148917.595985 523075.582985,148901.824985 523080.306985,148893.055985 523076.432985,148886.454985 523062.972985,148880.164985 523039.382985,148859.571985 523028.839985,148828.760985 523030.525985,148815.572985 523023.883985,148808.978985 523020.562985,148786.739985 522996.944985,148759.561985 522965.858985,148738.872985 522945.856985,148717.476985 522944.896985,148697.866985 522970.021985,148695.903985 522969.977985,148704.000985 522984.059985,148700.995985 523005.520985,148692.918985 523043.111985,148700.707985 523095.498985,148713.148985 523150.650985,148718.970985 523185.296985,148758.818985 523237.659985,148789.883985 523278.936985,148800.434985 523312.142985,148803.769985 523339.866985,148811.075985 523356.087985,148827.548985 523364.911985,148845.611985 523373.323985,148865.454985 523377.353985,148887.737985 523385.980985,148924.789985 523406.226985,148965.668985 523381.699985,148987.450985 523364.512985,148997.741985 523354.362985,149008.032985 523344.212985,149012.970985 523325.510985,149013.840985 523319.029985,149015.580985 523306.067985,149018.973985 523298.843985)) - POLYGON((148775.869980556 523087.862959271,148786.310671602 523134.147421339,148787.111961451 523138.222062501,148789.865944358 523154.610673249,148818.502518906 523192.24109267,148818.744164544 523192.560396791,148849.809164544 523233.837396791,148856.532562419 523244.542695822,148861.362459323 523256.225144291,148871.913459323 523289.431144291,148874.797171531 523302.720185688,148880.382311599 523303.854495746,148892.533152951 523307.412775256,148914.816152951 523316.039775256,148922.993522609 523319.837088612,148937.737582778 523308.203346892,148939.909113975 523306.06156848,148941.247736763 523296.089598028,148943.633232915 523284.889671328,148947.695961634 523274.183449523,148951.088961634 523266.959449523,148958.027601821 523255.134279242,148967.002982154 523244.769824229,148977.715158376 523236.212449607,148989.806145024 523229.748130485,149002.871878778 523225.592895075,149011.014878778 523223.802895075,149025.71461237 523222.06709714,149040.468968727 523223.252057311,149054.703261967 523227.311621095,149069.369014283 523233.112593168,149075.580815666 523233.990500691,149097.719711958 523230.023127037,149093.438673537 523201.358182694,149092.638110024 523188.458374701,149094.064168772 523175.612663174,149097.674500032 523163.202527946,149104.777682602 523144.854898924,149096.773874623 523139.87205018,149081.455489755 523134.484224822,149020.782728186 523127.695921746,149018.365082411 523127.38557019,148978.587395614 523121.620840068,148978.156201803 523121.713200402,148968.57836411 523130.590230162,148954.812334417 523140.697832278,148939.116564598 523147.429102875,148923.345564598 523152.153102875,148910.37689581 523154.81782194,148897.141731088 523155.160623073,148884.05250663 523153.170823854,148871.517110822 523148.910430707,148862.748110822 523145.036430707,148851.284582351 523138.723834414,148841.092845365 523130.514702052,148832.483202211 523120.658972668,148825.717786074 523109.456718366,148823.588688058 523105.115306566,148819.851506172 523104.994912661,148807.1123677 523102.333626439,148795.025066567 523097.510220515,148781.837066567 523090.868220515,148775.869980556 523087.862959271)) - - #29 Polygon - gid: 2529 - - POLYGON((166489.986985 524726.636985,166376.609985 524695.830985,166378.076985 524731.146985,166372.372985 524775.920985,166374.920985 524808.597985,166378.349985 524862.041985,166381.024985 524891.550985,166405.372985 524894.150985,166442.538985 524856.230985,166488.936985 524799.975985,166481.518985 524768.759985,166489.986985 524726.636985)) - POLYGON( EMPTY) - - #30 Polygon - gid: 2530 - - POLYGON((165889.593985 526270.470985,165805.380985 526135.686985,165716.140985 526213.946985,165715.046985 526215.272985,165666.137985 526274.538985,165628.837985 526322.818985,165601.443985 526328.382985,165602.962985 526339.012985,165604.480985 526357.234985,165631.029985 526379.970985,165679.641985 526437.375985,165710.443985 526485.694985,165719.290985 526538.574985,165726.370985 526574.918985,165757.470985 526592.793985,165821.282985 526618.710985,165829.798985 526578.755985,165848.131985 526528.820985,165848.301985 526502.670985,165846.277985 526476.475985,165868.778985 526437.395985,165879.115985 526419.443985,165895.576985 526384.512985,165905.738985 526349.287985,165898.707985 526305.446985,165893.362985 526284.934985,165889.593985 526270.470985)) - POLYGON((165703.241357534 526349.188222767,165736.877004846 526388.907928476,165742.884833191 526397.060452601,165773.686833191 526445.379452601,165776.198479916 526450.359932548,165781.281584047 526439.053159569,165803.782584047 526399.973159569,165803.783866343 526399.970932552,165812.584332105 526384.687391741,165825.177332734 526357.964464521,165829.030216992 526344.609037639,165825.224121391 526320.876561857,165820.786544579 526303.846893836,165820.786523568 526303.846813204,165819.910071494 526300.483320819,165788.513879131 526250.233307264,165770.138988224 526266.347370043,165724.751493689 526321.346148409,165703.241357534 526349.188222767)) - - #31 Polygon - gid: 2531 - - POLYGON((167187.935985 527215.129985,167246.663985 527205.580985,167280.107985 527210.602985,167314.083985 527213.149985,167354.196985 527218.563985,167363.609985 527204.834985,167358.459985 527177.204985,167344.405985 527172.240985,167323.325985 527164.793985,167304.557985 527167.748985,167285.789985 527170.703985,167260.854985 527176.007985,167211.198985 527149.591985,167165.408985 527140.439985,167141.660985 527146.308985,167119.062985 527137.503985,167119.967985 527139.010985,167078.296985 527188.560985,167105.238985 527267.140985,167090.957985 527316.213985,167094.770985 527321.819985,167082.593985 527377.599985,167065.952985 527417.668985,167056.312985 527449.383985,167043.546985 527485.510985,167019.927985 527525.916985,166982.769985 527539.710985,166961.717985 527606.388985,166933.263985 527657.009985,166899.206985 527710.191985,166916.325985 527722.287985,166973.067985 527744.810985,166978.160985 527695.099985,167043.308985 527684.770985,167080.550985 527644.941985,167101.716985 527610.077985,167109.672985 527576.692985,167099.068985 527561.394985,167097.537985 527527.027985,167105.044985 527510.384985,167137.888985 527502.771985,167160.386985 527500.228985,167174.041985 527468.108985,167205.365985 527466.936985,167200.090985 527446.692985,167182.286985 527416.893985,167214.905985 527399.163985,167245.980985 527379.346985,167258.755985 527325.736985,167261.469985 527296.920985,167237.119985 527273.314985,167201.524985 527264.407985,167192.491985 527252.494985,167172.090985 527216.630985,167187.935985 527215.129985)) - POLYGON((167167.684716539 527339.467819639,167176.568351121 527334.639135708,167168.740671452 527331.710602359,167168.045301243 527337.816065116,167167.684716539 527339.467819639)) - - #32 Polygon - gid: 2532 - - POLYGON((142944.641985 528279.290985,142921.268985 528196.701985,142908.679985 528170.159985,142909.618985 528164.288985,142912.434985 528146.676985,142911.663985 528129.837985,142892.611985 528111.135985,142875.445985 528095.294985,142871.223985 528075.213985,142854.274985 528025.284985,142841.880985 528009.836985,142829.662985 527984.586985,142829.518985 527971.020985,142821.625985 527942.611985,142810.393985 527922.096985,142789.127985 527903.516985,142784.945985 527870.354985,142783.608985 527857.660985,142778.632985 527857.959985,142770.042985 527846.295985,142767.281985 527824.398985,142767.032985 527762.941985,142754.713985 527740.629985,142749.027985 527714.461985,142756.918985 527695.423985,142775.315985 527696.868985,142782.056985 527690.556985,142783.976985 527671.253985,142777.663985 527661.951985,142758.085985 527654.506985,142741.418985 527651.378985,142749.028985 527626.803985,142752.867985 527606.969985,142752.399985 527587.588985,142752.387985 527556.136985,142751.802985 527550.469985,142750.634985 527539.133985,142751.546185 527536.749185,142733.070985 527540.946985,142718.408985 527549.965985,142690.566985 527548.196985,142650.139985 527549.089985,142626.239985 527552.656985,142624.198985 527552.960985,142624.067985 527566.105985,142630.327985 527597.955985,142624.594985 527613.792985,142600.863985 527617.535985,142581.009985 527622.064985,142574.816985 527639.138985,142579.145985 527659.088985,142596.746985 527682.702985,142605.791985 527694.419985,142613.689985 527704.650985,142638.048985 527728.309985,142660.964985 527755.984985,142669.209985 527774.633985,142695.332985 527818.005985,142686.660985 527842.858985,142682.940985 527858.629985,142701.685985 527880.643985,142711.497985 527934.757985,142716.267985 527963.420985,142735.213985 528000.631985,142745.226985 528012.751985,142773.134985 528057.404985,142816.514985 528078.155985,142825.383985 528108.455985,142801.994985 528142.618985,142779.507985 528173.811985,142780.961985 528203.725985,142794.349985 528212.859985,142840.494985 528200.237985,142842.379985 528210.587985,142861.982985 528212.674985,142888.962985 528201.345985,142905.705985 528247.638985,142932.216985 528293.509985,142941.837985 528289.539985,142944.641985 528279.290985)) - POLYGON( EMPTY) - - #33 Polygon - gid: 2533 - - POLYGON((157248.267985 510397.734985,157245.305985 510363.097985,157245.806985 510339.634985,157249.376985 510312.049985,157264.999985 510313.014985,157298.816985 510310.020985,157313.463985 510303.902985,157331.569985 510277.161985,157335.597985 510263.931985,157342.919985 510246.050985,157356.304985 510238.818985,157373.099985 510233.719985,157379.080985 510235.892985,157395.913985 510233.044985,157408.176985 510225.851985,157412.515985 510212.622985,157409.981985 510194.654985,157398.325985 510184.101985,157382.360985 510173.357985,157354.165985 510179.672985,157341.808985 510184.636985,157327.343985 510198.734985,157317.441985 510214.933985,157308.672985 510231.087985,157299.867985 510244.974985,157293.245985 510254.256985,157288.312985 510254.760985,157282.069985 510246.244985,157282.741985 510240.644985,157284.759985 510223.843985,157287.182985 510197.241985,157275.293985 510195.644985,157261.763985 510193.043985,157245.218985 510187.050985,157227.608985 510177.984985,157227.523985 510173.393985,157241.396985 510142.853985,157246.112985 510129.441985,157230.683985 510109.990985,157224.665985 510099.018985,157249.180985 510051.905985,157212.257985 510031.046985,157194.338985 510064.208985,157211.972985 510077.542985,157204.306985 510095.641985,157222.207985 510119.716985,157199.619985 510159.627985,157215.047985 510174.354985,157196.172985 510227.723985,157155.328985 510207.689985,157139.189985 510197.898985,157127.587985 510195.991985,157123.056985 510200.777985,157088.217985 510252.205985,157106.896985 510285.860985,157126.853985 510245.967985,157133.861985 510250.332985,157165.215985 510274.869985,157156.396985 510293.534985,157144.581985 510312.557985,157138.589985 510331.438985,157137.075985 510351.638985,157138.046985 510372.580985,157139.419985 510383.981985,157146.858985 510390.097985,157156.021985 510361.922985,157163.523985 510331.258985,157181.372985 510302.572985,157207.566985 510320.651985,157199.540985 510385.307985,157193.303985 510383.664985,157180.758985 510375.835985,157168.702985 510402.140985,157158.766985 510420.761985,157135.709985 510449.280985,157153.437985 510466.189985,157170.048985 510460.713985,157195.357985 510432.173985,157213.684985 510416.564985,157235.371985 510403.145985,157248.267985 510397.734985)) - POLYGON( EMPTY) - - #34 Polygon - gid: 2534 - - POLYGON((148568.584985 517215.314985,148572.193985 517207.069985,148579.062985 517190.138985,148582.935985 517182.009985,148585.298985 517176.571985,148590.114985 517163.127985,148593.549985 517154.807985,148597.590985 517143.996985,148600.469985 517135.577985,148608.361985 517111.099985,148609.844985 517106.851985,148612.196985 517100.884985,148622.119985 517079.608985,148627.202985 517066.037985,148629.036985 517061.925985,148631.715985 517056.590985,148633.922985 517052.667985,148636.222985 517048.798985,148640.302985 517042.471985,148642.585985 517038.589985,148645.384985 517033.290985,148649.309985 517023.332985,148650.753985 517019.073985,148653.515985 517009.328985,148656.822985 516996.237985,148657.633985 516992.786985,148659.628985 516988.121985,148661.362985 516983.557985,148665.486985 516963.310985,148660.494985 516962.211985,148654.487985 516960.588985,148645.936985 516957.776985,148635.343985 516953.477985,148633.216985 516952.851985,148628.798985 516951.955985,148618.420985 516950.600985,148610.940985 516948.509985,148606.474985 516948.012985,148596.479985 516947.539985,148583.884985 516947.227985,148578.576985 516948.520985,148573.335985 516949.453985,148568.101985 516949.901985,148563.600985 516949.922985,148557.829985 516950.415985,148551.628985 516950.385985,148538.365985 516949.276985,148531.699985 516950.682985,148527.384985 516949.334985,148523.285985 516949.346985,148518.771985 516949.590985,148497.282985 516949.746985,148489.616985 516950.081985,148471.013985 516949.990985,148458.481985 516951.381985,148447.844985 516952.931985,148445.775985 516960.073985,148444.006985 516964.211985,148439.749985 516975.102985,148439.138985 516980.117985,148438.535985 516987.396985,148438.974985 516992.234985,148440.426985 516998.642985,148438.052985 516999.297985,148434.382985 517002.110985,148433.464985 517004.416985,148433.080985 517009.095985,148433.160985 517012.537985,148433.810985 517017.196985,148435.364985 517021.423985,148438.897985 517029.838985,148440.124985 517034.169985,148440.387985 517035.613985,148440.767985 517040.101985,148439.957985 517047.071985,148439.243985 517059.119985,148437.869985 517063.408985,148436.038985 517067.531985,148435.453985 517068.518985,148432.633985 517072.210985,148428.173985 517080.220985,148425.223985 517084.065985,148420.701985 517084.881985,148419.037985 517084.605985,148414.693985 517083.070985,148410.519985 517081.244985,148406.277985 517079.881985,148401.927985 517079.498985,148397.300985 517079.560985,148392.976985 517080.302985,148391.493985 517081.154985,148388.218985 517085.555985,148385.939985 517089.438985,148383.889985 517093.599985,148382.148985 517097.753985,148380.707985 517102.019985,148384.575985 517104.329985,148387.963985 517107.541985,148388.744985 517108.571985,148388.577985 517113.061985,148386.761985 517129.667985,148386.096985 517138.880985,148383.851985 517150.211985,148381.844985 517157.153985,148381.255985 517161.619985,148379.568985 517166.273985,148378.896985 517171.011985,148375.602985 517182.746985,148375.188985 517183.854985,148372.920985 517187.744985,148371.004985 517192.626985,148369.776985 517197.309985,148368.879985 517199.356985,148366.322985 517203.048985,148363.430985 517206.559985,148360.265985 517209.805985,148362.396985 517211.296985,148366.277985 517213.583985,148368.574985 517214.675985,148372.756985 517216.354985,148379.858985 517218.946985,148383.740985 517221.386985,148387.723985 517223.321985,148391.527985 517223.539985,148398.523985 517222.910985,148402.982985 517222.342985,148413.732985 517218.530985,148420.566985 517215.834985,148422.017985 517215.401985,148426.452985 517214.656985,148427.536985 517214.761985,148431.947985 517215.979985,148436.367985 517216.822985,148437.734985 517217.291985,148441.849985 517219.129985,148444.098985 517220.426985,148447.861985 517222.907985,148462.423985 517233.358985,148486.641985 517247.438985,148491.717985 517250.701985,148501.712985 517257.844985,148508.651985 517262.200985,148516.517985 517266.864985,148528.978985 517274.823985,148533.037985 517276.758985,148535.665985 517277.495985,148540.045985 517278.576985,148548.901985 517280.224985,148550.178985 517272.247985,148551.544985 517265.555985,148552.858985 517261.250985,148555.563985 517251.244985,148562.513985 517233.664985,148568.584985 517215.314985)) - POLYGON ((148465.04603866642 517147.5219424748, 148468.32193007902 517148.81250785006, 148472.43693007904 517150.65050785005, 148479.31833130663 517154.15981472895, 148481.5673313066 517155.45681472897, 148485.38224162365 517157.8115498219, 148489.14524162366 517160.2925498219, 148491.5920858998 517161.976234038, 148503.2307818219 517170.32920829166, 148505.60300960566 517171.7083877117, 148509.5648041141 517161.94319003774, 148511.35506775207 517157.8800646531, 148514.66822819778 517150.926106155, 148515.52675331026 517148.95037210436, 148519.50861371885 517137.8348963292, 148520.79090495792 517134.5068053192, 148523.74161982184 517127.35980454256, 148526.96791581967 517118.7284048809, 148529.29095782075 517111.9351813287, 148536.9803214243 517088.0856828127, 148537.55288063685 517086.3801399501, 148539.03588063686 517082.1321399501, 148540.0697946662 517079.348843109, 148542.42179466618 517073.381843109, 148544.22615053327 517069.18379161716, 148552.9117266564 517050.5609640856, 148556.9678805225 517039.7315200335, 148558.7070182858 517035.4879842818, 148560.5410182858 517031.37598428177, 148562.0128355156 517028.2694345842, 148563.56937478343 517025.16971939424, 148557.4671445434 517025.4151073069, 148551.2661445434 517025.3851073069, 148545.3795881285 517025.1251650781, 148541.3465654276 517024.7879395503, 148534.52321633883 517025.62982859474, 148521.78631390657 517025.0248919264, 148519.75491128486 517024.57557388005, 148519.31643526338 517024.58900880005, 148514.50006083903 517024.6239734057, 148515.12058260432 517029.2863586431, 148515.50058260432 517033.7743586431, 148515.26660871692 517048.7596442845, 148514.70125120823 517053.6245107481, 148514.11262726612 517063.5569214688, 148510.66844475336 517082.0011245901, 148509.29444475335 517086.2901245901, 148506.41476057115 517093.8493158441, 148504.58376057114 517097.97231584415, 148500.5576643297 517105.7725396188, 148499.97266432972 517106.75953961874, 148495.78269539468 517112.9680895764, 148493.70102171606 517116.7067008243, 148487.67826782848 517125.8744659743, 148484.72826782847 517129.71946597425, 148475.34539209885 517139.8588568604, 148465.04603866642 517147.5219424748)) - - #35 Polygon - gid: 2535 - - POLYGON((163066.126985 517974.868985,163091.240985 517970.440985,163098.588985 517969.145985,163130.376985 517949.819985,163160.357985 517938.404985,163155.338985 517935.096985,163137.491985 517928.756985,163088.458985 517930.116985,163058.237985 517933.448985,163033.542985 517933.704985,162996.678985 517946.546985,162965.765985 517963.550985,162954.719985 517971.409985,162940.542985 517971.623985,162929.808985 517967.346985,162916.631985 517960.832985,162906.856985 517973.017985,162901.910985 517996.119985,162896.149985 518019.757985,162889.466985 518026.940985,162862.081985 518041.778985,162841.243985 518051.554985,162822.497985 518056.625985,162814.259985 518061.351985,162810.905985 518070.579985,162808.826985 518099.445985,162806.167985 518118.106985,162793.741985 518127.807985,162755.145985 518154.644985,162735.806985 518166.902985,162720.621985 518167.404985,162718.765985 518184.458985,162717.545985 518210.367985,162713.617985 518236.309985,162706.542985 518271.841985,162701.859985 518290.587985,162705.218985 518294.761985,162726.625985 518278.475985,162753.229985 518258.870985,162782.068985 518236.877985,162816.208985 518212.657985,162824.470985 518182.138985,162845.014985 518153.858985,162882.445985 518140.582985,162920.703985 518125.470985,162943.696985 518115.392985,162965.820985 518065.592985,162984.425985 518034.931985,163005.550985 518008.892985,163025.235985 517978.313985,163066.126985 517974.868985)) - POLYGON( EMPTY) - - #36 Polygon - gid: 2536 - - POLYGON((151640.372985 520078.439985,151631.962985 520059.790985,151629.274985 520055.812985,151626.569985 520052.200985,151615.221985 520034.782985,151606.240985 520019.252985,151596.253985 520003.198985,151594.521985 519999.999985,151585.007985 519979.511985,151579.071985 519969.479985,151573.199985 519957.304985,151572.035985 519955.222985,151567.491985 519949.971985,151564.650985 519946.439985,151563.903985 519945.128985,151561.474985 519937.032985,151559.718985 519932.885985,151558.187985 519929.892985,151554.220985 519932.057985,151549.028985 519934.369985,151543.618985 519935.855985,151538.622985 519936.867985,151534.164985 519937.482985,151528.132985 519939.763985,151523.603985 519940.766985,151518.324985 519941.678985,151514.201985 519943.500985,151511.453985 519945.404985,151507.599985 519948.857985,151505.118985 519952.626985,151501.093985 519964.334985,151499.289985 519968.439985,151498.111985 519970.475985,151495.027985 519973.673985,151492.288985 519974.096985,151486.380985 519973.413985,151480.685985 519972.343985,151476.198985 519971.871985,151471.575985 519971.639985,151467.126985 519972.326985,151465.579985 519972.930985,151461.230985 519976.087985,151459.824985 519980.451985,151459.120985 519986.854985,151457.196985 519995.647985,151457.505985 519999.999985,151457.755985 520002.163985,151458.895985 520006.518985,151459.809985 520012.864985,151461.700985 520019.709985,151462.600985 520024.748985,151466.236985 520038.107985,151470.320985 520048.063985,151476.146985 520063.414985,151477.708985 520067.993985,151480.097985 520076.675985,151484.051985 520078.930985,151488.522985 520079.897985,151492.694985 520078.104985,151494.938985 520076.848985,151506.520985 520073.368985,151510.381985 520072.425985,151515.922985 520072.149985,151520.376985 520071.501985,151525.461985 520071.155985,151533.320985 520071.044985,151541.199985 520071.316985,151545.772985 520072.216985,151550.689985 520074.159985,151556.344985 520076.869985,151559.924985 520080.906985,151561.475985 520085.626985,151562.598985 520089.906985,151564.866985 520095.728985,151566.733985 520099.823985,151570.978985 520111.588985,151575.985985 520119.712985,151580.454985 520125.992985,151585.750985 520135.315985,151588.951985 520138.478985,151591.959985 520142.387985,151595.794985 520145.608985,151596.717985 520146.180985,151600.930985 520147.761985,151610.593985 520152.335985,151615.876985 520148.420985,151619.366985 520145.538985,151620.268985 520145.005985,151624.502985 520143.522985,151627.066985 520142.840985,151640.810985 520139.486985,151645.648985 520138.596985,151646.664985 520138.210985,151650.623985 520136.078985,151654.429985 520133.610985,151656.825985 520131.812985,151657.034985 520127.310985,151655.434985 520118.142985,151654.368985 520103.131985,151653.199985 520098.779985,151649.007985 520092.899985,151646.566985 520089.118985,151642.541985 520082.381985,151640.372985 520078.439985)) - POLYGON( EMPTY) - - #37 Polygon - gid: 2537 - - POLYGON((149074.863985 521147.685985,149079.195985 521146.453985,149084.481985 521146.550985,149083.352985 521142.190985,149082.307985 521139.131985,149078.212985 521129.952985,149074.534985 521119.799985,149072.006985 521114.769985,149062.256985 521087.740985,149058.326985 521077.315985,149057.272985 521073.684985,149056.706985 521069.234985,149056.032985 521058.372985,149055.989985 521055.324985,149056.653985 521049.602985,149056.828985 521045.104985,149057.483985 521039.922985,149057.955985 521027.280985,149059.078985 521021.526985,149059.679985 521014.389985,149061.083985 521010.116985,149063.420985 521004.372985,149065.076985 521001.246985,149068.057985 520997.888985,149069.914985 520996.183985,149073.453985 520993.403985,149077.695985 520990.619985,149083.699985 520985.301985,149087.481985 520982.855985,149091.155985 520979.558985,149091.687985 520978.602985,149092.102085 520973.780785,149091.433985 520972.943985,149085.922985 520963.780985,149080.736985 520952.972985,149079.151985 520948.023985,149078.605985 520943.551985,149078.175985 520937.077985,149077.300985 520934.467985,149076.557985 520932.161985,149075.476985 520927.756985,149074.024985 520923.526985,149072.892985 520921.352985,149070.466985 520917.501985,149067.489985 520913.906985,149063.902985 520911.245985,149060.015985 520908.880985,149057.583985 520907.012985,149053.836985 520904.575985,149046.407985 520903.194985,149043.748985 520900.710985,149040.669985 520896.363985,149030.471985 520876.382985,149027.005985 520870.944985,149023.474985 520864.091985,149020.424985 520857.679985,149016.414985 520850.386985,149015.312985 520847.716985,149011.691985 520837.466985,149011.094985 520836.292985,149008.704985 520832.469985,149005.259985 520827.502985,149004.610985 520825.876985,149003.577985 520821.217985,149003.854985 520816.719985,149002.972985 520816.201985,148998.602985 520814.693985,148988.265985 520815.477985,148983.673985 520817.423985,148979.484985 520821.816985,148976.129985 520824.776985,148973.845985 520825.367985,148966.379985 520826.025985,148961.056985 520826.999985,148956.409985 520829.091985,148951.949985 520829.751985,148946.441985 520830.130985,148931.710985 520830.198985,148924.824985 520830.672985,148921.727985 520830.400985,148917.057985 520829.109985,148913.971985 520825.698985,148910.100985 520821.942985,148901.275985 520808.640985,148896.799985 520799.352985,148894.695985 520795.375985,148891.228985 520789.937985,148887.698985 520783.085985,148884.606985 520775.729985,148881.994985 520768.813985,148880.715985 520766.573985,148878.047985 520762.936985,148875.219985 520759.448985,148871.608985 520756.679985,148867.217985 520756.296985,148862.582985 520756.904985,148861.392985 520757.168985,148857.137985 520758.698985,148853.364985 520759.509985,148848.917985 520760.210985,148844.572985 520761.389985,148836.362985 520765.784985,148831.786985 520766.128985,148822.120985 520765.033985,148817.121985 520763.908985,148812.548985 520762.503985,148807.295985 520761.442985,148803.827985 520760.947985,148794.718985 520760.628985,148790.131985 520761.085985,148779.499985 520762.621985,148777.012985 520764.595985,148773.926985 520768.885985,148773.466985 520774.629985,148773.332985 520779.128985,148772.635985 520787.462985,148772.583985 520792.333985,148774.114985 520796.576985,148778.330985 520798.178985,148785.801985 520800.503985,148791.415985 520802.481985,148797.424985 520804.176985,148801.266985 520806.534985,148808.780985 520809.801985,148816.731985 520814.761985,148820.614985 520817.028985,148822.486985 520817.871985,148828.485985 520820.053985,148840.253985 520823.719985,148844.481985 520824.577985,148848.642985 520825.980985,148849.614985 520826.820985,148851.668985 520831.391985,148850.423985 520836.473985,148851.647985 520862.196985,148851.608985 520865.784985,148852.006985 520870.213985,148852.588985 520871.618985,148855.610985 520875.318985,148859.688985 520877.253985,148865.606985 520879.625985,148869.560985 520881.777985,148874.694985 520884.932985,148878.973985 520886.333985,148879.781985 520887.091985,148882.398985 520890.827985,148893.628985 520903.399985,148896.470985 520906.888985,148900.771985 520910.377985,148903.113985 520912.783985,148907.271985 520917.520985,148910.265985 520921.543985,148913.153985 520928.363985,148914.659985 520932.599985,148915.336985 520935.164985,148915.886985 520939.775985,148914.248985 520943.980985,148917.390985 520947.207985,148919.572985 520949.764985,148923.999985 520956.081985,148928.384985 520961.456985,148931.471985 520964.733985,148935.306985 520967.792985,148938.422985 520971.552985,148942.810985 520975.127985,148945.672985 520978.715985,148945.467985 520983.562985,148943.924985 520989.715985,148941.045985 520998.242985,148938.175985 521005.247985,148932.651985 521015.561985,148930.709985 521019.641985,148929.317985 521023.359985,148928.157985 521027.888985,148928.257985 521030.527985,148930.431985 521034.393985,148933.165985 521037.285985,148936.637985 521040.110985,148942.203985 521043.759985,148949.976985 521048.302985,148956.663985 521051.603985,148960.826985 521053.323985,148970.378985 521056.011985,148974.655985 521057.444985,148977.871985 521058.807985,148985.582985 521063.452985,148996.173985 521068.099985,149000.446985 521070.923985,149004.131985 521074.654985,149005.361985 521076.309985,149007.752985 521080.130985,149009.883985 521084.114985,149010.875985 521086.337985,149012.155985 521090.634985,149013.087985 521095.060985,149013.828985 521099.645985,149014.305985 521101.238985,149016.320985 521105.262985,149018.796985 521108.970985,149021.783985 521112.417985,149024.099985 521114.282985,149028.473985 521115.337985,149036.160985 521116.290985,149040.418985 521117.807985,149041.315985 521118.300985,149044.645985 521121.332985,149046.237985 521125.627985,149045.253985 521130.390985,149045.181985 521135.783985,149045.437985 521138.357985,149046.177985 521142.841985,149046.609985 521143.953985,149049.230985 521147.622985,149050.514985 521148.887985,149054.171985 521151.491985,149060.050985 521155.216985,149064.906985 521154.540985,149066.395985 521153.944985,149070.858985 521150.799985,149074.863985 521147.685985)) - POLYGON( EMPTY) - - #38 Polygon - gid: 2538 - - POLYGON((150340.263985 521736.242985,150319.707985 521734.229985,150320.397985 521743.203985,150320.776985 521753.617985,150321.365985 521762.839985,150321.838985 521767.321985,150322.439985 521771.069985,150323.456985 521775.456985,150325.665985 521782.261985,150327.698985 521786.281985,150328.983985 521788.230985,150331.756985 521791.771985,150334.245985 521794.557985,150337.451985 521797.714985,150345.035985 521804.348985,150348.315985 521807.525985,150350.157985 521808.786985,150354.399985 521810.150985,150370.210985 521813.514985,150374.540985 521814.689985,150378.907985 521817.179985,150387.202985 521823.648985,150391.093985 521825.901985,150398.280985 521829.395985,150414.053985 521839.397985,150417.301985 521841.772985,150425.706985 521851.706985,150429.010985 521854.761985,150432.472985 521857.645985,150437.069985 521860.954985,150439.941985 521862.714985,150449.894985 521867.787985,150455.159985 521869.676985,150457.271985 521870.216985,150461.740985 521869.363985,150463.846985 521868.400985,150466.973985 521865.126985,150468.871985 521858.611985,150470.712985 521854.484985,150471.314985 521852.772985,150472.425985 521842.584985,150472.585985 521837.769985,150471.114985 521817.439985,150467.720985 521797.270985,150467.236985 521792.050985,150467.787985 521786.877985,150468.844985 521782.176985,150469.472985 521777.288985,150470.980985 521770.720985,150464.397985 521768.068985,150460.133985 521766.625985,150453.794985 521764.881985,150449.391985 521763.947985,150441.118985 521762.424985,150435.455985 521761.036985,150424.480985 521757.289985,150408.178985 521751.226985,150399.551985 521747.851985,150390.966985 521745.146985,150382.787985 521742.940985,150374.289985 521739.977985,150369.950985 521738.975985,150358.848985 521736.928985,150354.376985 521736.424985,150340.263985 521736.242985)) - POLYGON( EMPTY) - - #39 Polygon - gid: 2539 - - POLYGON((151414.655985 521903.498985,151419.118985 521902.909985,151421.110985 521903.031985,151425.514985 521903.903985,151432.945985 521906.160985,151435.281985 521907.106985,151439.154985 521909.607985,151440.214985 521905.223985,151439.494985 521900.455985,151436.942985 521890.300985,151435.309985 521886.095985,151435.222985 521881.294985,151435.805985 521873.232985,151435.489985 521868.742985,151435.595985 521863.657985,151437.865985 521855.470985,151438.586985 521850.956985,151447.004985 521843.098985,151449.266985 521833.184985,151450.435985 521826.542985,151446.671985 521824.075985,151441.776985 521820.429985,151435.135985 521814.354985,151430.862985 521811.043985,151429.653985 521809.812985,151427.434985 521805.925985,151424.123985 521798.914985,151422.976985 521796.117985,151421.981985 521791.729985,151420.446985 521786.732985,151420.164985 521785.502985,151419.969985 521781.007985,151419.525985 521775.880985,151419.146985 521773.395985,151417.498985 521767.866985,151415.384985 521762.360985,151413.246985 521758.395985,151410.199985 521754.143985,151407.420985 521751.067985,151403.914985 521748.258985,151398.761985 521744.954985,151394.600985 521743.247985,151389.313985 521741.332985,151386.449985 521740.426985,151382.047985 521739.436985,151380.811985 521739.305985,151374.773985 521739.607985,151370.237985 521739.382985,151365.883985 521738.649985,151359.674985 521735.218985,151349.485985 521730.180985,151343.877985 521725.720985,151340.551985 521722.689985,151334.626985 521716.831985,151329.218985 521710.554985,151325.247985 521705.141985,151319.417985 521699.821985,151315.446985 521694.409985,151305.560985 521681.809985,151300.596985 521675.043985,151296.688985 521671.030985,151293.246985 521668.105985,151289.929985 521665.757985,151285.914985 521663.658985,151282.327985 521662.396985,151277.836985 521662.113985,151271.818985 521662.894985,151268.877985 521663.536985,151263.367985 521665.215985,151261.932985 521669.477985,151258.678985 521677.877985,151256.217985 521682.629985,151251.459985 521683.882985,151247.452985 521683.781985,151241.286985 521681.283985,151234.212985 521679.299985,151230.126985 521677.337985,151227.560985 521676.358985,151223.087985 521675.729985,151219.620985 521675.820985,151215.249985 521676.783985,151210.898985 521678.040985,151205.964985 521678.817985,151196.349985 521681.136985,151192.448985 521682.323985,151188.367985 521684.271985,151187.444985 521684.912985,151184.336985 521688.179985,151181.542985 521692.671985,151179.378985 521696.641985,151177.884985 521699.887985,151173.838985 521718.013985,151172.909985 521723.517985,151173.083985 521728.013985,151173.884985 521734.691985,151175.904985 521738.784985,151180.466985 521741.060985,151183.536985 521742.158985,151187.621985 521744.146985,151191.251985 521748.103985,151194.752985 521753.288985,151196.865985 521758.794985,151198.738985 521762.886985,151200.502985 521767.587985,151203.883985 521779.954985,151208.659985 521792.808985,151211.765985 521799.668985,151213.414985 521805.197985,151215.020985 521809.793985,151218.548985 521815.695985,151221.215985 521819.333985,151222.013985 521820.198985,151227.821985 521825.052985,151230.947985 521828.290985,151234.125985 521832.083985,151238.592985 521842.773985,151240.775985 521849.351985,151242.232985 521855.194985,151242.763985 521866.859985,151242.540985 521871.354985,151242.852985 521879.013985,151243.124985 521888.008985,151243.896985 521899.613985,151243.956985 521904.112985,151243.781985 521911.524985,151243.249985 521917.736985,151244.213985 521932.376985,151246.639985 521941.861985,151247.152985 521948.509985,151248.543985 521959.890985,151248.626985 521963.699985,151248.136985 521968.176985,151246.966985 521973.552985,151251.430985 521972.917985,151254.743985 521972.063985,151260.584985 521969.324985,151264.784985 521967.712985,151273.249985 521964.701985,151285.945985 521960.539985,151294.351985 521957.321985,151299.279985 521955.774985,151324.985985 521948.448985,151340.816985 521942.669985,151349.401985 521939.968985,151363.226985 521935.306985,151367.526985 521933.980985,151372.861985 521932.688985,151382.530985 521930.905985,151385.598985 521927.434985,151395.219985 521921.249985,151396.763985 521920.086985,151401.989985 521915.074985,151408.377985 521907.711985,151412.054985 521904.855985,151414.655985 521903.498985)) - POLYGON((151279.645830086 521767.755326376,151280.089101957 521768.734349246,151281.60849228 521772.801761659,151281.779965797 521772.961370432,151284.905965797 521776.199370432,151288.436416127 521780.123773262,151291.614416127 521783.916773262,151298.197909309 521793.099519948,151303.3272236 521803.167059572,151307.7942236 521813.857059572,151309.775551863 521819.151068694,151311.958551863 521825.729068694,151313.547648501 521831.205773513,151315.004648501 521837.048773513,151317.155400222 521851.784457569,151317.686400222 521863.449457569,151317.671859293 521870.576215471,151317.633144616 521871.356585304,151318.308321815 521871.127269916,151326.162616192 521868.656163438,151339.261758571 521864.238933653,151341.126044189 521863.637267439,151345.426044189 521862.311267439,151349.429937 521861.210224374,151351.72695172 521858.562616456,151362.371481661 521848.480222824,151362.64012267 521848.271563938,151363.173322839 521844.636869635,151362.301287147 521843.109333478,151359.617270262 521837.953435221,151356.306270262 521830.942435221,151354.732095129 521827.371366009,151353.585095129 521824.574366009,151349.833842604 521812.703542585,151349.58867297 521811.62233218,151341.169193044 521809.460853224,151329.609871097 521804.294395733,151324.898612404 521801.69102505,151316.24354186 521797.411483839,151302.802545748 521788.880699647,151297.194545748 521784.420699647,151293.360366598 521781.1553627,151290.034366598 521778.1243627,151287.821382925 521776.02368546,151281.896382925 521770.16568546,151279.645830086 521767.755326376)) - - #40 Polygon - gid: 2540 - - POLYGON((148804.969985 522529.061985,148825.777985 522528.289985,148844.208985 522531.065985,148856.496985 522532.916985,148882.440985 522530.570985,148894.474985 522523.984985,148904.794985 522513.633985,148902.807985 522495.733985,148896.519985 522475.100985,148873.973985 522465.040985,148844.137985 522468.478985,148809.638985 522482.020985,148787.006985 522487.163985,148762.897985 522493.321985,148738.759985 522488.933985,148716.846985 522484.385985,148694.991985 522485.158985,148688.417985 522484.461985,148687.828985 522493.001985,148665.144985 522531.758985,148646.934985 522583.394985,148650.294985 522613.315985,148667.775985 522637.046985,148692.509985 522655.222985,148702.550985 522673.036985,148703.442985 522695.940985,148697.442985 522721.471985,148703.390985 522728.395985,148743.857985 522739.557985,148760.692985 522732.650985,148771.972985 522702.999985,148787.125985 522672.393985,148803.225985 522652.100985,148801.228985 522634.074985,148780.811985 522619.038985,148757.441985 522607.968985,148749.196985 522601.119985,148766.539985 522585.682985,148782.051985 522574.165985,148778.702985 522559.073985,148779.149985 522545.714985,148791.097985 522529.576985,148804.969985 522529.061985)) - POLYGON( EMPTY) - - #41 Polygon - gid: 2541 - - POLYGON((148410.699985 522834.902985,148442.757985 522825.725985,148460.309985 522827.514985,148487.864985 522844.888985,148500.821985 522849.224985,148522.555985 522842.060985,148549.245985 522836.360985,148568.572985 522826.852985,148584.252985 522812.743985,148609.816985 522787.145985,148614.009985 522767.881985,148612.795985 522752.758985,148612.563985 522743.189985,148618.720985 522735.053985,148625.781585 522726.296485,148618.662985 522724.739985,148612.278985 522723.775985,148605.112985 522714.525985,148611.687985 522677.987985,148611.797985 522647.963985,148594.739985 522625.727985,148584.565985 522622.805985,148562.730985 522628.324985,148543.283985 522615.292985,148536.597985 522557.684985,148536.223985 522555.223985,148534.274985 522546.378985,148533.665985 522541.970985,148533.794985 522540.094985,148535.172985 522535.741985,148538.094985 522529.403985,148538.611985 522526.777985,148539.936985 522513.990985,148540.169985 522509.496985,148540.192985 522500.589985,148540.851985 522495.877985,148540.474985 522491.607985,148539.391985 522489.734985,148536.121985 522486.259985,148532.239985 522483.953985,148529.487985 522487.690985,148527.557985 522489.161985,148523.269985 522490.157985,148512.547985 522491.130985,148508.089985 522491.855985,148503.708985 522492.860985,148499.171985 522494.926985,148493.577985 522498.401985,148488.746985 522500.495985,148483.626985 522501.803985,148480.736985 522503.655985,148464.117985 522534.086985,148427.843985 522552.590985,148408.790985 522571.476985,148398.223985 522596.340985,148407.833985 522615.400985,148416.753985 522662.875985,148420.236985 522689.856985,148421.081985 522713.013985,148415.508985 522722.819985,148391.177985 522725.213985,148358.228985 522724.834985,148355.953985 522741.826985,148341.696985 522767.846985,148328.778985 522795.425985,148312.269985 522806.114985,148322.213985 522836.436985,148339.137985 522884.626985,148351.181985 522896.189985,148376.682985 522893.652985,148389.158985 522851.634985,148410.699985 522834.902985)) - POLYGON((148482.813746868 522756.183508667,148484.759834217 522756.612200335,148500.311458172 522764.073026139,148507.47578582 522768.590283572,148524.485305735 522764.957677221,148526.135900505 522764.145660091,148532.598883594 522758.330211851,148537.783159503 522753.13904088,148537.640235854 522747.24405639,148537.573978828 522747.137066634,148532.272275747 522732.393023801,148530.149598324 522716.869200329,148531.298587695 522701.24311067,148532.147803475 522696.523924938,148520.979243698 522690.629014551,148501.532243698 522677.597014551,148493.394526839 522670.763509214,148494.619771809 522680.254848443,148495.187102679 522687.122051743,148496.032102679 522710.279051743,148495.262613882 522724.069947131,148491.977169924 522737.485861809,148486.287201914 522750.071773483,148482.813746868 522756.183508667)) - - #42 Polygon - gid: 2542 - - POLYGON((150213.068985 524020.273985,150226.206985 524020.218985,150245.019985 524022.421985,150248.570985 524017.633985,150243.628985 523991.402985,150233.942985 523969.968985,150203.852985 523929.546985,150189.509985 523905.746985,150179.578985 523905.795985,150163.996985 523891.573985,150150.529985 523872.591985,150158.960985 523848.710985,150150.727985 523827.265985,150129.075985 523796.394985,150110.126985 523782.119985,150064.853985 523787.149985,150051.774985 523791.993985,150035.273985 523796.784985,150034.124985 523803.948985,150047.317985 523842.088985,150048.538985 523846.850985,150048.758985 523856.362985,150044.002985 523858.774985,150033.285985 523861.216985,150022.584985 523866.044985,150013.239985 523875.626985,150010.897985 523882.801985,150007.322985 523904.295985,150015.725985 523913.798985,150028.883985 523920.894985,150036.292985 523937.604985,150033.171985 523964.012985,150028.264985 524013.973985,150020.417985 524042.804985,150014.532985 524064.428985,150004.476985 524083.491985,149987.717985 524115.262985,149981.881985 524139.242985,149991.382985 524146.196985,150012.547985 524165.288985,150017.553385 524169.126585,150024.575985 524166.982985,150037.645985 524157.385985,150054.301985 524147.777985,150067.231985 524142.754985,150080.313985 524135.548985,150096.808985 524132.911985,150108.662985 524120.938985,150113.586985 524111.551985,150113.285985 524097.054985,150114.403985 524085.116985,150121.501985 524075.543985,150134.308985 524061.036985,150143.802985 524053.844985,150159.042985 524051.270985,150177.151985 524046.558985,150188.764985 524039.234985,150195.842985 524027.285985,150213.068985 524020.273985)) - POLYGON((150106.011000335 523989.689500602,150114.057919676 523984.995648846,150131.312562914 523979.892369386,150139.180475973 523978.563497456,150141.030635187 523976.094127171,150143.466198894 523973.995184804,150140.693804819 523969.864680568,150140.146542734 523969.593183191,150129.018561804 523961.19132421,150113.436561804 523946.96932421,150110.842199358 523944.035224328,150110.774630149 523946.407515086,150107.74049457 523972.080521291,150106.011000335 523989.689500602)) - - #43 Polygon - gid: 2543 - - POLYGON((144922.318985 524491.962985,144916.174985 524471.916985,144914.549985 524467.677985,144912.593985 524463.720985,144910.192985 524460.155985,144908.311985 524458.069985,144904.928985 524455.185985,144901.087985 524452.661985,144896.952985 524450.467985,144892.685985 524448.577985,144888.450985 524446.961985,144885.347985 524445.991985,144881.001985 524445.002985,144876.555985 524444.286985,144863.031985 524442.562985,144857.685985 524441.514985,144849.003985 524439.122985,144839.775985 524435.911985,144819.128985 524426.964985,144802.963985 524420.784985,144798.693985 524419.372985,144786.193985 524415.740985,144781.645985 524414.507985,144777.135985 524413.576985,144772.740985 524413.149985,144768.538985 524413.428985,144766.698985 524413.878985,144762.631985 524415.739985,144758.763985 524418.497985,144755.294985 524421.804985,144752.424985 524425.313985,144750.466985 524428.343985,144748.348985 524432.485985,144746.691985 524436.901985,144745.642985 524441.399985,144745.357985 524445.949985,144746.099985 524450.217985,144747.674985 524454.490985,144751.644985 524463.042985,144753.198985 524467.313985,144753.903985 524471.578985,144753.795985 524474.709985,144752.079885 524484.578885,144754.670985 524482.704985,144758.730985 524480.197985,144763.800985 524478.457985,144768.027985 524478.293985,144772.474985 524478.930985,144781.635985 524481.187985,144786.155985 524482.100985,144808.055985 524485.287985,144816.937985 524486.725985,144833.164985 524489.675985,144841.977985 524491.504985,144850.254985 524493.511985,144867.643985 524498.751985,144876.325985 524501.135985,144885.821985 524503.463985,144894.632985 524505.384985,144899.063985 524506.183985,144907.993985 524507.149985,144917.005985 524507.531985,144926.006985 524507.397985,144924.626985 524500.677985,144922.318985 524491.962985)) - POLYGON( EMPTY) - - #44 Polygon - gid: 2544 - - POLYGON((152738.586985 525524.931985,152740.326985 525497.058985,152695.275985 525498.501985,152656.986985 525505.098985,152622.061985 525523.010985,152648.325985 525540.128985,152652.935985 525590.321985,152647.410985 525629.067985,152666.698985 525650.755985,152708.041985 525659.923985,152735.752985 525671.255985,152760.563985 525666.811985,152771.160985 525648.828985,152770.241985 525625.353985,152756.879985 525597.961985,152746.550985 525573.880985,152738.586985 525524.931985)) - POLYGON( EMPTY) - - #45 Polygon - gid: 2545 - - POLYGON((149453.122985 526139.892985,149396.797985 526127.534985,149353.639985 526128.716985,149378.053985 526143.048985,149404.918985 526161.498985,149438.396985 526192.728985,149474.027985 526233.837985,149507.380985 526288.575985,149516.204985 526264.755985,149536.833985 526225.717985,149553.115985 526196.776985,149518.161985 526170.998985,149453.122985 526139.892985)) - POLYGON( EMPTY) - - #46 Polygon - gid: 2546 - - POLYGON((143371.698985 526340.324985,143367.501985 526296.992985,143367.318985 526278.597985,143349.180985 526262.013985,143334.789985 526251.329985,143319.597985 526245.894985,143315.281985 526251.019985,143278.726985 526298.107985,143265.495985 526287.517985,143253.409985 526293.227985,143236.509985 526310.988985,143223.254985 526345.656985,143210.652985 526371.956985,143208.644985 526376.798985,143242.636985 526387.900985,143277.186985 526389.196985,143320.427985 526393.579985,143367.418985 526393.302985,143375.058985 526381.563985,143371.698985 526340.324985)) - POLYGON( EMPTY) - - #47 Polygon - gid: 2547 - - POLYGON((158778.588985 529695.437985,158715.314985 529674.844985,158709.040985 529734.142985,158680.951985 529777.857985,158654.349985 529824.912985,158644.110985 529853.468985,158638.251985 529907.850985,158646.861985 529965.652985,158652.583985 529994.969985,158651.137985 529999.999985,158636.793985 530049.891985,158653.691985 530103.927985,158665.644985 530140.105985,158674.780985 530159.977985,158719.076985 530181.397985,158712.966985 530164.850985,158699.313985 530129.290985,158686.188985 530067.699985,158690.286985 530025.745985,158687.319985 529999.999985,158684.767985 529977.857985,158708.706985 529901.824985,158719.982985 529824.505985,158735.250985 529780.284985,158743.835985 529751.756985,158759.095985 529710.610985,158778.588985 529695.437985)) - POLYGON( EMPTY) - - #48 Polygon - gid: 2548 - - POLYGON((161952.205985 531803.507985,161950.166985 531785.171985,161948.777985 531776.277985,161947.155985 531767.422985,161941.486985 531770.695985,161937.729985 531773.172985,161932.269985 531777.472985,161926.725985 531782.098985,161924.613985 531783.667985,161920.829985 531786.099985,161918.605985 531787.218985,161914.388985 531788.805985,161912.462985 531789.286985,161907.980985 531789.764985,161906.546985 531789.681985,161902.168985 531788.569985,161900.603985 531787.696985,161897.146985 531784.749985,161895.220985 531782.338985,161888.204985 531771.801985,161886.264985 531769.242985,161883.356985 531765.807985,161881.285985 531763.666985,161877.947985 531760.643985,161875.477985 531758.658985,161871.750985 531756.139985,161869.201985 531754.809985,161868.431985 531755.733985,161866.239985 531759.658985,161864.319985 531763.806985,161862.714985 531768.076985,161861.469985 531772.366985,161861.207985 531774.035985,161861.449985 531778.536985,161862.001985 531783.085985,161863.613985 531807.082985,161864.280985 531822.215985,161864.630985 531826.696985,161866.742985 531841.487985,161867.721985 531846.033985,161869.164985 531850.249985,161871.272985 531853.934985,161872.321985 531855.188985,161875.579985 531857.980985,161879.435985 531860.329985,161887.847985 531864.517985,161891.856985 531866.765985,161905.113985 531875.495985,161909.626985 531878.077985,161917.664985 531882.167985,161925.928985 531885.781985,161936.320985 531889.414985,161940.808985 531890.825985,161945.292985 531891.980985,161949.678985 531892.708985,161953.873985 531892.835985,161955.851985 531892.353985,161959.869985 531889.472985,161962.230985 531885.504985,161962.474985 531884.239985,161962.567985 531879.959985,161961.965985 531875.401985,161960.428985 531866.167985,161959.158985 531853.444985,161957.935985 531843.738985,161952.205985 531803.507985)) - POLYGON( EMPTY) - - #49 Polygon - gid: 2549 - - POLYGON((144515.492985 534697.249985,144520.510985 534691.952985,144527.310985 534683.949985,144535.496985 534673.356985,144546.006985 534658.516985,144553.414985 534648.475985,144571.337985 534625.843985,144588.734985 534602.871985,144591.563985 534598.255985,144593.687985 534594.272985,144595.170985 534590.539985,144595.782985 534587.574985,144596.004985 534583.199985,144595.414985 534578.711985,144594.709985 534576.051985,144592.684985 534571.167985,144584.642985 534570.602985,144578.354985 534570.640985,144565.341985 534571.789985,144550.736985 534573.859985,144535.843985 534577.740985,144530.135985 534579.076985,144502.804985 534584.561985,144492.056985 534586.945985,144456.640985 534596.072985,144421.529985 534606.221985,144416.729985 534607.810985,144413.648985 534609.062985,144409.481985 534611.224985,144405.573985 534613.952985,144401.917985 534617.122985,144394.939985 534623.644985,144392.859085 534625.096885,144391.528985 534626.710985,144388.152985 534629.686985,144383.914985 534633.745985,144381.967985 534636.004985,144380.598985 534637.904985,144379.020985 534640.527985,144378.413985 534641.899985,144377.712985 534644.700985,144377.358985 534647.693985,144377.278985 534650.747985,144377.449985 534653.772985,144377.702985 534655.737985,144378.069985 534657.174985,144379.935985 534661.330985,144381.203985 534663.625985,144382.840985 534666.139985,144386.549985 534671.102985,144395.619985 534681.742985,144397.803985 534684.814985,144400.044985 534688.738985,144401.674985 534692.606985,144402.653985 534692.013985,144409.805985 534694.346985,144417.124985 534696.033985,144420.474985 534696.361985,144428.018985 534696.322985,144429.277985 534696.473985,144430.696985 534696.874985,144451.529985 534707.358985,144457.662985 534710.086985,144461.881985 534711.659985,144465.832985 534712.829985,144468.756985 534713.530985,144473.000985 534714.248985,144475.995985 534714.553985,144480.201985 534714.653985,144484.693985 534714.285985,144488.789985 534713.532985,144493.108985 534712.257985,144496.962985 534710.702985,144499.635985 534709.353985,144504.686985 534706.313985,144509.614985 534702.550985,144515.492985 534697.249985)) - POLYGON( EMPTY) - - #50 Polygon - gid: 2550 - - POLYGON((139580.306985 536284.245985,139581.537985 536275.353985,139582.391985 536270.934985,139584.727985 536262.895985,139588.416985 536252.326985,139591.066985 536246.306985,139593.754985 536241.295985,139596.494985 536237.619985,139599.804985 536234.137985,139603.593985 536230.963985,139607.726985 536228.169985,139622.104985 536219.993985,139630.326985 536215.966985,139647.195985 536208.674985,139656.268985 536204.452985,139664.079985 536200.252985,139671.632985 536195.480985,139678.904985 536190.269985,139684.418985 536185.885985,139690.667985 536180.238985,139699.139985 536171.792985,139704.019985 536167.257985,139707.535985 536164.362985,139719.234985 536155.582985,139724.584985 536151.291985,139728.111985 536147.960985,139730.160985 536145.764985,139731.363985 536144.185985,139731.781985 536143.091985,139730.140985 536138.628985,139728.244985 536134.603985,139725.033985 536129.308985,139723.167985 536126.742985,139720.321985 536123.255985,139715.151985 536117.777985,139709.530985 536112.704985,139702.374985 536107.119985,139693.638985 536101.087985,139672.813985 536087.921985,139664.262985 536082.684985,139655.423985 536077.697985,139647.610985 536073.673985,139639.545985 536070.005985,139626.896985 536064.817985,139618.344985 536061.630985,139595.270985 536053.548985,139589.311985 536051.161985,139582.993985 536048.148985,139578.633985 536045.693985,139573.206985 536042.191985,139559.712985 536032.655985,139544.953985 536022.737985,139538.344985 536017.628985,139533.269985 536012.957985,139527.127985 536006.378985,139522.507985 536000.966985,139517.569985 535994.673985,139514.710985 535990.549985,139512.017985 535986.156985,139509.458985 535981.492985,139503.627985 535970.144985,139500.680985 535965.036985,139498.267985 535961.301985,139493.873985 535955.337985,139482.644985 535941.539985,139476.252985 535933.272985,139471.574985 535926.605985,139468.229985 535920.871985,139466.243985 535916.364985,139465.202985 535913.222985,139464.494985 535910.303985,139463.964985 535907.107985,139463.809985 535904.115985,139464.450985 535898.265985,139465.320985 535895.316985,139466.778985 535892.646985,139467.714985 535891.405985,139469.884985 535889.355985,139472.222985 535888.202985,139473.703985 535887.781985,139478.694985 535887.027985,139527.523985 535887.045985,139534.405985 535886.815985,139539.706985 535886.209985,139543.334985 535885.541985,139549.575985 535883.796985,139555.393985 535881.390985,139561.941985 535877.533985,139566.488985 535874.094985,139570.786985 535869.895985,139574.370985 535865.516985,139577.146985 535860.922985,139578.381985 535858.167985,139579.597985 535854.520985,139580.483985 535850.089985,139580.752985 535847.100985,139580.748985 535844.297985,139580.113985 535838.063985,139579.392985 535835.150985,139578.222985 535831.671985,139577.100985 535828.887985,139575.349985 535825.206985,139573.169985 535821.251985,139570.621985 535817.165985,139565.947985 535810.671985,139563.686985 535807.948985,139560.612985 535804.659985,139558.108985 535802.262985,139554.445985 535799.139985,139549.466985 535795.479985,139544.282985 535792.276985,139538.972985 535789.483985,139532.216985 535786.483985,139528.012985 535784.877985,139522.443985 535783.012985,139498.844985 535775.793985,139481.569985 535769.907985,139475.702985 535767.695985,139470.596985 535765.137985,139468.001985 535763.386985,139466.883985 535762.396985,139464.852985 535760.143985,139462.813985 535757.076985,139461.575985 535754.350985,139459.684985 535748.568985,139458.819985 535743.777985,139458.353985 535740.212985,139457.651985 535731.980985,139457.160985 535721.682985,139457.087985 535713.035985,139457.389985 535710.492985,139458.081985 535707.539985,139459.525985 535704.076985,139461.210985 535701.557985,139463.801985 535698.894985,139466.281985 535697.157985,139469.421985 535695.731985,139473.755985 535694.584985,139480.230985 535693.382985,139487.658985 535692.342985,139497.732985 535690.655985,139507.707985 535688.863985,139515.608985 535688.004985,139536.445985 535687.421985,139560.876985 535685.892985,139568.980985 535685.624985,139575.288985 535685.903985,139579.849985 535686.480985,139588.121985 535688.083985,139596.121985 535690.179985,139601.973985 535691.519985,139606.159985 535692.152985,139612.312985 535692.703985,139618.514985 535692.777985,139621.601985 535692.529985,139627.534985 535691.492985,139631.225985 535690.396985,139635.337985 535688.505985,139638.406985 535686.551985,139639.584985 535685.626985,139642.840985 535682.480985,139645.451985 535679.212985,139648.795985 535673.937985,139651.978985 535668.218985,139668.201985 535637.219985,139672.423985 535629.667985,139677.545985 535622.037985,139680.573985 535618.604985,139682.864985 535616.615985,139685.943985 535614.660985,139688.770985 535613.559985,139692.249985 535612.928985,139695.280985 535613.008985,139698.224985 535613.644985,139700.766985 535614.733985,139702.087985 535615.482985,139705.439985 535617.839985,139707.680985 535619.832985,139712.062985 535624.286985,139715.241985 535628.088985,139718.403985 535632.235985,139721.539985 535636.765985,139724.665985 535641.644985,139731.570985 535653.529985,139737.212985 535664.169985,139739.633985 535669.254985,139741.716985 535674.194985,139743.466985 535678.998985,139744.879985 535683.722985,139745.639985 535686.957985,139746.437985 535691.658985,139746.900985 535696.335985,139746.980985 535699.429985,139746.262985 535708.502985,139744.114985 535718.330985,139740.327985 535733.143985,139738.458985 535739.114985,139735.962985 535745.484985,139733.105985 535751.646985,139724.889985 535768.299985,139722.678985 535773.301985,139720.685985 535778.355985,139718.976985 535783.420985,139717.642985 535788.432985,139716.487985 535794.996985,139716.255985 535798.802985,139716.424985 535806.302985,139716.897985 535814.641985,139720.252985 535833.369985,139721.254985 535840.218985,139722.032985 535848.318985,139722.636985 535860.654985,139723.041985 535865.500985,139723.595985 535869.969985,139724.425985 535873.622985,139725.907985 535877.893985,139727.294985 535880.672985,139728.946985 535883.210985,139731.655985 535886.283985,139734.007985 535888.197985,139736.641985 535889.770985,139739.492985 535890.878985,139740.985985 535891.198985,139742.449985 535891.287985,139744.945985 535890.794985,139746.374985 535890.179985,139748.401985 535888.804985,139750.468985 535886.617985,139753.620985 535882.153985,139757.971985 535874.263985,139766.546985 535856.319985,139770.020985 535849.785985,139775.406985 535840.970985,139787.949985 535822.120985,139792.813985 535813.795985,139795.325985 535808.760985,139797.476985 535803.700985,139799.223985 535798.645985,139800.003985 535795.747985,139800.796985 535792.077985,139801.378985 535788.309985,139801.878985 535781.357985,139801.971985 535757.446985,139801.772985 535751.399985,139801.317985 535745.229985,139799.979985 535735.531985,139797.665985 535724.587985,139795.239985 535715.729985,139790.553985 535700.992985,139787.074985 535690.615985,139784.300985 535683.246985,139781.903985 535677.405985,139774.772985 535661.279985,139771.370985 535653.166985,139767.425985 535643.120985,139764.622985 535635.052985,139762.357985 535626.853985,139760.604985 535617.923985,139759.689985 535609.708985,139759.670985 535602.051985,139760.175985 535597.480985,139761.074985 535592.961985,139762.333985 535588.513985,139764.487985 535582.705985,139767.018985 535577.178985,139769.898985 535571.857985,139773.045985 535567.308985,139774.918985 535564.960985,139776.980985 535562.899985,139779.363985 535561.024985,139782.591985 535559.191985,139785.460985 535558.179985,139786.945985 535557.864985,139788.990985 535557.684985,139790.500985 535557.739985,139793.505985 535558.303985,139795.110985 535558.903985,139796.414985 535559.597985,139798.880985 535561.344985,139802.353985 535564.379985,139805.549985 535568.247985,139808.696985 535572.568985,139814.126985 535580.708985,139823.426985 535595.492985,139828.793985 535604.633985,139833.129985 535612.775985,139838.706985 535624.155985,139843.536985 535634.544985,139847.396985 535643.335985,139852.464985 535655.668985,139857.816985 535669.898985,139867.280985 535697.844985,139870.030985 535705.535985,139874.258985 535716.398985,139878.906985 535727.026985,139883.055985 535735.583985,139886.787985 535742.582985,139890.766985 535749.443985,139897.980985 535760.815985,139901.071985 535765.981985,139903.940985 535771.255985,139912.046985 535787.324985,139914.373985 535791.455985,139918.063985 535797.258985,139921.357985 535801.454985,139923.505985 535803.573985,139924.970985 535804.706985,139926.243985 535805.496985,139928.986985 535806.781985,139932.583985 535807.856985,139935.570985 535808.318985,139938.005985 535808.411985,139941.020985 535808.199985,139943.963985 535807.605985,139946.733985 535806.629985,139949.456985 535805.316985,139952.528985 535803.450985,139954.949985 535801.662985,139958.129985 535798.972985,139963.401985 535793.632985,139968.154985 535787.926985,139971.450985 535782.908985,139972.879985 535780.264985,139974.014985 535777.692985,139974.980985 535774.850985,139976.502985 535769.142985,139979.454985 535754.014985,139980.658985 535746.509985,139981.662985 535736.074985,139982.932985 535711.663985,139983.270985 535696.456985,139983.238985 535689.010985,139982.549985 535678.406985,139980.323985 535658.404985,139979.190985 535646.066985,139978.378985 535634.706985,139977.762985 535622.123985,139976.315985 535580.869985,139975.971985 535561.243985,139976.099985 535549.548985,139977.004985 535534.281985,139979.934985 535490.984985,139981.030985 535482.383985,139982.469985 535475.733985,139984.430985 535469.066985,139986.517985 535463.165985,139987.679985 535460.401985,139990.234985 535455.396985,139991.909985 535452.941985,139993.957985 535450.827985,139996.385985 535448.994985,139999.024985 535447.621985,140001.905985 535446.712985,140006.993985 535445.807985,140011.507985 535445.571985,140015.764985 535445.938985,140021.851985 535447.221985,140024.694985 535448.179985,140030.425985 535450.706985,140036.028985 535453.823985,140040.617985 535457.090985,140045.514985 535461.247985,140049.628985 535465.627985,140052.229985 535469.119985,140053.784985 535471.700985,140055.287985 535475.350985,140056.580985 535480.715985,140057.299985 535485.168985,140057.913985 535487.470985,140058.937985 535490.320985,140059.568985 535491.686985,140060.850985 535493.785985,140061.778985 535494.965985,140065.399985 535498.531985,140067.800985 535500.346985,140070.706985 535502.078985,140073.444985 535503.331985,140077.253985 535504.488985,140080.220985 535504.966985,140084.207985 535505.256985,140088.710985 535505.234985,140093.405985 535504.976985,140098.169985 535504.301985,140102.967985 535503.305985,140107.692985 535501.965985,140112.290985 535500.232985,140115.396985 535498.769985,140119.794985 535496.227985,140124.107985 535493.220985,140127.651985 535490.446985,140132.374985 535486.472985,140136.271985 535482.899985,140139.926985 535479.270985,140143.308985 535475.520985,140148.197985 535469.094985,140157.833985 535454.685985,140162.452985 535448.684985,140165.258985 535445.833985,140168.592985 535442.802985,140172.883985 535439.551985,140176.709985 535437.178985,140180.297985 535435.354985,140184.482985 535433.693985,140188.370985 535432.634985,140192.812985 535431.857985,140197.194985 535431.510985,140203.273985 535431.345985,140218.438985 535431.784985,140223.355985 535431.715985,140226.351985 535431.429985,140228.064985 535431.012985,140229.448985 535430.482985,140232.118985 535429.063985,140235.867985 535426.512985,140238.434985 535423.996985,140242.173985 535419.828985,140246.735985 535413.958985,140251.061985 535407.683985,140254.278985 535402.487985,140257.229985 535397.194985,140259.817985 535391.773985,140261.404985 535387.658985,140263.054985 535382.041985,140264.205985 535376.314985,140264.964985 535370.504985,140265.716985 535361.336985,140266.322985 535350.243985,140266.837985 535333.228985,140267.009985 535310.682985,140266.988985 535300.110985,140266.512985 535282.732985,140266.469985 535273.905985,140266.663985 535269.411985,140267.088985 535264.675985,140267.757985 535259.825985,140268.568985 535255.397985,140270.540985 535247.578985,140272.980985 535240.592985,140276.555985 535232.562985,140281.174985 535223.841985,140284.880985 535217.943985,140288.095985 535213.604985,140291.593985 535209.455985,140300.508985 535199.762985,140303.734985 535195.825985,140306.452985 535191.609985,140307.757985 535188.901985,140308.504985 535186.947985,140309.798985 535181.881985,140310.622985 535175.071985,140311.020985 535164.614985,140311.111985 535143.903985,140311.541985 535136.992985,140312.125985 535133.284985,140312.934985 535130.353985,140313.482985 535128.949985,140314.663985 535126.829985,140316.736985 535124.574985,140318.681985 535123.326985,140320.096985 535122.827985,140321.594985 535122.491985,140325.004985 535122.068985,140329.517985 535122.050985,140333.688985 535122.249985,140338.046985 535122.680985,140342.500985 535123.340985,140346.868985 535124.218985,140352.700985 535125.724985,140357.000985 535127.058985,140361.769985 535128.868985,140365.893985 535130.673985,140370.855985 535133.092985,140376.893985 535136.308985,140381.311985 535138.990985,140386.114985 535142.595985,140390.161985 535146.262985,140396.094985 535152.500985,140402.651985 535160.317985,140406.637985 535166.186985,140408.086985 535168.819985,140409.150985 535171.253985,140410.478985 535175.562985,140411.454985 535179.981985,140411.791985 535184.591985,140411.749985 535187.599985,140411.076985 535193.566985,140410.362985 535197.454985,140408.200985 535205.090985,140406.393985 535210.820985,140405.547985 535214.829985,140405.220985 535217.828985,140405.477985 535221.410985,140406.248985 535224.350985,140407.091985 535226.325985,140407.834985 535227.629985,140409.638985 535230.070985,140412.571985 535232.946985,140415.007985 535234.735985,140418.789985 535236.858985,140422.981985 535238.528985,140426.187985 535239.435985,140431.511985 535240.551985,140444.577985 535242.758985,140451.616985 535244.179985,140456.451985 535245.428985,140462.114985 535247.443985,140464.307985 535248.483985,140466.910985 535250.001985,140469.343985 535251.758985,140471.538985 535253.752985,140472.546985 535254.879985,140473.907985 535256.799985,140474.620985 535258.138985,140475.485985 535260.538985,140477.086985 535260.852985,140479.858985 535262.010985,140485.998985 535265.048985,140497.212985 535272.587985,140502.401985 535275.601985,140506.981985 535277.963985,140515.753985 535282.120985,140520.316985 535284.063985,140524.534985 535285.638985,140530.215985 535287.306985,140533.160985 535287.824985,140537.199985 535287.933985,140540.948985 535287.423985,140543.882985 535286.586985,140545.275985 535285.996985,140546.977985 535284.982985,140548.154985 535284.034985,140550.199985 535281.745985,140551.314985 535279.744985,140552.235985 535276.904985,140553.238985 535271.991985,140553.703985 535266.730985,140553.976985 535261.326985,140554.223985 535250.450985,140554.140985 535235.153985,140553.689985 535228.522985,140552.718985 535221.486985,140551.431985 535214.670985,140548.875985 535202.927985,140548.084985 535198.157985,140547.564985 535191.826985,140547.545985 535186.972985,140547.729985 535182.096985,140548.541985 535172.313985,140550.093985 535162.251985,140551.974985 535154.083985,140556.616985 535137.953985,140558.129985 535131.991985,140558.777985 535128.123985,140559.194985 535122.126985,140558.828985 535116.905985,140557.672985 535111.402985,140555.608985 535105.762985,140553.963985 535100.689985,140550.879985 535094.895985,140550.582985 535093.633985,140547.674985 535086.614985,140544.826985 535081.157985,140540.731985 535075.516985,140536.634985 535070.725985,140532.837985 535067.360985,140528.420985 535064.135985,140524.987985 535060.547985,140522.647985 535058.438985,140515.451985 535050.544985,140510.767985 535045.123985,140507.746985 535042.235985,140498.425985 535035.674985,140497.011985 535035.121985,140495.522985 535034.908985,140494.213985 535035.000985,140483.052985 535036.945985,140481.288985 535037.516985,140470.264985 535043.040985,140459.888985 535049.152985,140451.570985 535053.489985,140448.087985 535054.901985,140443.674985 535055.846985,140439.213985 535056.280985,140437.365985 535055.718985,140436.189985 535054.770985,140434.891985 535053.225985,140433.170985 535050.768985,140431.587985 535048.207985,140429.521985 535044.372985,140428.541985 535041.540985,140428.349985 535040.066985,140428.414985 535037.029985,140429.080985 535033.642985,140431.959985 535025.978985,140437.970985 535012.180985,140441.433985 535004.957985,140442.520985 535002.161985,140444.779985 534995.680985,140446.918985 534988.089985,140447.830985 534983.115985,140448.041985 534980.115985,140448.067985 534976.101985,140447.958985 534974.597985,140447.484985 534972.392985,140445.934985 534969.613985,140442.502985 534965.963985,140440.878985 534964.878985,140434.970985 534964.190985,140432.581985 534964.231985,140429.211985 534964.880985,140419.422985 534963.985985,140412.037985 534963.573985,140406.589985 534962.345985,140404.198985 534961.905985,140398.724985 534961.259985,140392.228985 534959.924985,140388.840985 534958.945985,140386.096985 534957.699985,140384.810985 534956.932985,140382.742985 534955.224985,140381.314985 534953.714985,140379.548985 534951.284985,140377.433985 534947.807985,140376.736985 534946.372985,140375.493985 534942.046985,140374.387985 534939.275985,140369.021985 534927.245985,140367.341985 534923.070985,140366.161985 534920.648985,140362.125985 534913.096985,140348.646985 534890.235985,140346.185985 534886.399985,140340.156985 534878.582985,140338.021985 534876.008985,140332.861985 534870.325985,140325.793985 534864.759985,140322.300985 534862.358985,140320.999985 534861.615985,140316.091985 534859.481985,140313.404985 534858.117985,140289.152985 534843.579985,140283.129985 534840.332985,140280.196985 534839.230985,140270.767985 534836.812985,140268.395985 534836.550985,140264.431985 534837.035985,140261.915985 534837.946985,140258.399985 534839.743985,140255.958985 534841.489985,140255.068985 534842.413985,140252.241985 534846.335985,140250.636985 534848.868985,140249.317985 534851.316985,140248.088985 534854.054985,140246.920985 534858.179985,140246.664985 534861.168985,140247.428985 534872.649985,140247.973985 534878.666985,140248.255985 534880.138985,140249.969985 534885.156985,140252.936985 534892.820985,140254.655985 534896.813985,140266.365985 534919.755985,140267.822985 534922.376985,140271.482985 534927.812985,140275.051985 534934.410985,140279.541985 534940.825985,140281.945985 534944.629985,140285.361985 534950.376985,140287.187985 534953.884985,140288.441985 534956.616985,140289.360985 534959.482985,140290.166985 534965.964985,140290.128985 534967.672985,140289.844985 534969.134985,140288.872985 534972.725985,140287.580985 534978.738985,140286.713985 534981.607985,140283.568985 534990.459985,140281.708985 534999.392985,140280.605985 535003.757985,140278.935985 535013.332985,140276.071985 535028.122985,140273.766985 535037.947985,140272.565985 535045.351985,140270.781985 535053.996985,140267.939985 535070.338985,140267.049985 535074.638985,140264.681985 535083.629985,140262.124985 535094.986985,140259.633985 535105.080985,140257.324985 535112.628985,140254.862985 535119.003985,140254.045985 535120.295985,140252.515985 535121.828985,140251.200985 535122.602985,140248.949985 535123.338985,140247.425985 535123.533985,140245.402985 535123.264985,140242.580985 535122.286985,140238.106985 535120.252985,140234.151985 535118.094985,140231.083985 535115.983985,140224.514985 535110.280985,140219.876985 535107.707985,140217.334985 535106.077985,140215.997985 535105.431985,140213.564985 535104.791985,140202.236985 535102.879985,140203.060985 535106.831985,140203.249985 535112.368985,140202.870985 535114.529985,140202.232985 535116.056985,140201.439985 535119.281985,140199.089985 535125.794985,140197.089985 535128.776985,140196.021985 535129.930985,140193.315985 535131.267985,140191.140985 535131.820985,140188.152985 535132.081985,140182.311985 535132.222985,140178.272985 535131.905985,140171.238985 535130.223985,140166.918985 535128.959985,140161.858985 535127.208985,140157.472985 535126.136985,140155.339985 535125.322985,140151.491985 535122.966985,140143.886985 535119.310985,140140.533985 535117.044985,140134.495985 535112.594985,140132.690985 535111.964985,140132.591985 535116.758985,140133.193985 535124.798985,140132.877985 535132.797985,140133.264985 535137.308985,140133.141985 535141.806985,140134.180985 535154.799985,140134.230985 535161.325985,140135.180985 535167.325985,140134.694985 535173.307985,140134.768985 535180.436985,140134.511985 535184.933985,140134.020985 535189.622985,140132.969985 535193.999985,140130.296985 535211.773985,140130.152985 535216.772985,140130.483985 535223.319985,140130.987985 535226.790985,140130.998985 535228.298985,140129.698985 535229.685985,140128.371985 535229.879985,140121.819985 535229.406985,140114.812985 535229.358985,140110.320985 535229.666985,140106.544985 535230.140985,140096.959985 535232.159985,140092.659985 535232.188985,140089.160985 535231.737985,140087.234985 535231.118985,140084.488985 535229.880985,140081.339985 535227.816985,140075.055985 535222.764985,140069.553985 535217.390985,140058.896985 535209.433985,140055.811985 535207.661985,140052.908985 535206.682985,140051.409985 535206.419985,140049.938985 535206.351985,140048.540985 535206.542985,140047.094985 535206.993985,140043.881985 535208.465985,140042.590985 535209.230985,140039.517985 535211.655985,140036.378985 535214.890985,140034.416985 535216.648985,140032.004985 535218.446985,140028.812985 535220.321985,140023.891985 535222.473985,140020.987985 535223.247985,140017.304985 535223.940985,140012.839985 535224.522985,140008.579985 535224.869985,140004.271985 535224.983985,140000.726985 535224.755985,139991.620985 535222.385985,139980.642985 535218.147985,139976.590985 535216.220985,139970.813985 535212.595985,139963.060985 535208.257985,139960.458985 535206.495985,139958.259985 535204.477985,139954.212985 535200.011985,139950.851985 535195.994985,139944.482985 535189.621985,139941.329985 535186.243985,139936.998985 535180.118985,139931.563985 535173.032985,139929.868985 535170.570985,139927.461985 535165.212985,139925.360985 535163.349985,139922.568985 535160.114985,139908.953985 535143.622985,139905.486985 535139.190985,139901.433985 535133.560985,139895.564985 535124.415985,139888.179985 535114.063985,139882.622985 535104.655985,139876.825985 535095.889985,139873.897985 535092.106985,139870.957985 535088.698985,139862.467985 535079.806985,139860.188985 535077.835985,139858.445985 535076.757985,139857.026985 535076.297985,139852.667985 535075.738985,139849.657985 535075.687985,139845.757985 535076.064985,139844.290985 535076.553985,139841.735985 535078.096985,139838.563985 535080.460985,139837.273985 535081.847985,139835.644985 535084.379985,139834.712985 535086.347985,139822.859985 535120.960985,139821.772985 535124.628985,139817.808985 535144.003985,139815.981985 535157.572985,139813.602985 535180.207985,139810.843985 535213.080985,139808.202985 535231.937985,139807.272985 535235.411985,139805.576985 535239.595985,139803.498985 535245.955985,139802.607985 535247.923985,139800.882985 535250.388985,139798.520985 535253.177985,139794.469985 535257.125985,139790.983985 535259.661985,139789.648985 535260.326985,139786.940985 535261.222985,139785.460985 535261.547985,139783.467985 535261.730985,139781.992985 535261.435985,139777.419985 535259.850985,139767.456985 535255.351985,139757.514985 535251.322985,139749.332985 535247.573985,139743.283985 535245.221985,139739.177985 535243.346985,139737.320985 535242.730985,139731.388985 535241.792985,139725.950985 535240.505985,139724.191985 535240.234985,139715.787985 535240.185985,139714.330985 535240.482985,139713.014985 535241.140985,139710.528985 535242.883985,139707.610985 535245.432985,139702.496985 535251.004985,139699.773985 535254.580985,139695.755985 535262.914985,139694.924985 535265.663985,139694.254985 535268.599985,139693.910985 535271.629985,139693.843985 535274.629985,139694.395985 535288.182985,139694.935985 535293.205985,139698.184985 535312.557985,139698.401985 535318.113985,139698.331985 535324.742985,139697.885985 535330.729985,139696.769985 535337.460985,139695.373985 535342.903985,139692.205985 535352.885985,139690.615985 535356.610985,139688.348985 535360.684985,139686.555985 535363.086985,139682.976985 535367.067985,139670.956985 535378.401985,139667.649985 535380.806985,139665.862985 535382.309985,139662.748985 535385.564985,139659.886985 535388.248985,139657.574985 535390.172985,139654.486985 535392.070985,139645.811985 535395.942985,139640.779985 535397.682985,139637.638985 535398.419985,139627.571985 535400.047985,139626.086985 535400.245985,139622.765985 535400.265985,139619.772985 535399.924985,139615.927985 535399.162985,139608.762985 535396.929985,139604.126985 535397.211985,139598.119985 535397.050985,139593.613985 535396.546985,139587.709985 535395.435985,139582.905985 535394.251985,139574.205985 535391.195985,139562.531985 535388.361985,139559.299985 535387.180985,139555.330985 535384.999985,139554.167985 535385.182985,139554.356985 535389.318985,139555.044985 535392.524985,139555.398985 535396.109985,139557.087985 535403.488985,139557.241985 535404.991985,139556.820985 535407.038985,139553.825985 535415.329985,139552.035985 535421.066985,139551.328985 535425.310985,139551.184985 535429.773985,139551.681985 535434.246985,139552.627985 535438.656985,139554.313985 535444.464985,139556.074985 535448.477985,139558.544985 535452.208985,139561.411985 535455.719985,139565.435985 535460.273985,139568.557985 535462.977985,139571.141985 535464.460985,139584.237985 535470.517985,139586.503985 535471.376985,139593.668985 535473.612985,139598.687985 535475.707985,139602.933985 535477.933985,139604.020985 535478.940985,139604.533985 535480.482985,139604.866985 535483.813985,139606.271985 535492.704985,139606.804985 535498.248985,139606.777985 535499.741985,139606.314985 535503.020985,139604.821985 535509.007985,139603.021985 535514.733985,139601.600985 535520.071985,139601.043985 535521.446985,139598.935985 535524.578985,139595.269985 535529.391985,139591.348985 535534.002985,139588.301985 535537.258985,139586.464985 535538.377985,139579.904985 535538.899985,139575.514985 535538.902985,139574.105985 535538.705985,139571.152985 535537.945985,139569.775985 535537.346985,139567.971985 535535.995985,139558.235985 535525.528985,139554.190985 535520.960985,139553.092985 535519.974985,139551.210985 535518.832985,139548.269985 535517.989985,139545.546985 535517.716985,139540.672985 535518.378985,139537.739985 535519.077985,139536.353985 535519.563985,139535.014985 535520.213985,139531.146985 535522.544985,139524.426985 535525.648985,139520.505985 535527.857985,139514.722985 535530.645985,139512.707985 535531.967985,139506.205985 535537.460985,139504.142985 535539.613985,139500.756985 535544.674985,139490.017985 535562.863985,139483.034985 535575.309985,139481.369985 535577.781985,139479.936985 535579.366985,139477.659985 535581.322985,139468.886985 535587.682985,139467.595985 535588.447985,139465.277985 535589.398985,139463.794985 535589.646985,139462.170985 535589.641985,139460.563985 535589.370985,139459.135985 535588.819985,139457.345985 535587.287985,139455.504985 535584.838985,139454.027985 535582.019985,139453.087985 535579.127985,139452.866985 535577.169985,139453.221985 535574.213985,139454.052985 535571.208985,139455.938985 535565.568985,139457.701985 535561.409985,139459.377985 535558.048985,139460.959985 535555.511985,139468.242985 535545.227985,139470.055985 535542.130985,139471.381985 535539.436985,139472.228985 535537.299985,139473.089985 535534.404985,139473.345985 535532.931985,139473.544985 535529.790985,139473.052985 535511.213985,139472.672985 535506.749985,139472.245985 535504.385985,139471.092985 535501.582985,139468.019985 535496.222985,139466.240985 535493.791985,139465.240985 535492.732985,139463.860985 535491.761985,139462.409985 535491.206985,139460.885985 535490.885985,139458.629985 535490.789985,139457.113985 535490.968985,139454.295985 535491.715985,139452.943985 535492.368985,139451.714985 535493.290985,139450.985985 535494.052985,139449.229985 535496.453985,139445.203985 535503.081985,139440.597985 535511.241985,139439.176985 535513.361985,139438.183985 535514.476985,139435.886985 535516.435985,139432.947985 535518.499985,139429.292985 535520.347985,139426.442985 535521.320985,139423.421985 535522.038985,139418.953985 535522.644985,139415.086985 535522.753985,139405.229985 535522.513985,139398.935985 535523.454985,139397.055985 535523.531985,139392.550985 535523.406985,139385.713985 535523.826985,139382.359985 535523.869985,139377.014985 535523.663985,139372.533985 535523.228985,139368.639985 535523.038985,139365.764985 535523.028985,139358.901985 535523.395985,139352.037985 535523.311985,139350.543985 535523.443985,139348.721985 535524.098985,139344.531985 535526.261985,139343.144985 535526.680985,139341.956985 535526.738985,139344.312985 535541.041985,139344.781985 535545.978985,139344.872985 535552.866985,139344.745985 535555.864985,139344.378985 535558.230985,139343.620985 535561.141985,139341.916985 535566.051985,139340.141985 535570.191985,139334.077985 535581.003985,139330.716985 535587.709985,139327.445985 535594.730985,139321.842985 535607.611985,139311.911985 535631.802985,139307.926985 535640.247985,139305.909985 535646.602985,139304.759985 535651.531985,139304.319985 535654.520985,139304.320985 535655.940985,139304.672985 535658.901985,139306.569985 535667.331985,139309.298985 535675.337985,139311.277985 535680.026985,139313.291985 535684.055985,139314.594985 535686.249985,139324.683985 535701.010985,139328.374985 535706.014985,139330.247985 535709.049985,139333.267985 535715.439985,139336.405985 535723.879985,139337.956985 535729.191985,139339.254985 535735.057985,139339.965985 535739.703985,139340.333985 535744.195985,139340.488985 535748.689985,139340.347985 535753.192985,139339.698985 535757.116985,139338.541985 535761.181985,139333.834985 535774.093985,139330.743985 535781.597985,139328.768985 535785.647985,139326.442985 535789.755985,139324.780985 535792.267985,139322.984985 535794.593985,139320.784985 535796.638985,139317.034985 535798.995985,139309.875985 535802.400985,139304.190985 535804.395985,139301.761985 535805.793985,139298.141985 535808.463985,139286.886985 535817.737985,139283.524985 535820.727985,139280.744985 535823.457985,139275.774985 535829.099985,139273.210985 535832.538985,139271.575985 535835.043985,139267.939985 535841.620985,139266.006985 535845.485985,139264.273985 535849.641985,139257.668985 535867.878985,139254.447985 535874.600985,139248.687985 535885.134985,139239.109985 535899.576985,139236.806985 535903.449985,139235.467985 535906.129985,139222.758985 535935.269985,139218.757985 535944.996985,139214.967985 535954.740985,139212.922985 535960.311985,139212.544985 535962.399985,139213.872985 535966.725985,139214.457985 535969.337985,139215.059985 535973.798985,139215.361985 535979.096985,139215.233985 535982.446985,139214.623985 535986.910985,139213.582985 535991.775985,139212.443985 535996.131985,139211.037985 536000.887985,139209.570985 536004.718985,139208.867985 536006.032985,139205.748985 536010.832985,139202.012985 536019.020985,139196.508985 536028.023985,139193.752985 536033.960985,139191.136985 536041.551985,139185.845985 536060.914985,139184.695985 536064.146985,139182.251985 536069.591985,139180.979985 536072.081985,139179.312985 536074.584985,139177.948985 536075.898985,139176.737985 536076.803985,139174.690985 536077.732985,139165.450985 536080.395985,139164.104985 536080.741985,139162.607985 536080.840985,139155.248985 536082.210985,139153.937985 536082.710985,139153.402985 536084.303985,139153.711985 536085.826985,139156.356985 536093.057985,139158.557985 536098.139985,139159.347985 536099.447985,139159.781985 536101.659985,139159.839985 536103.160985,139159.666985 536109.541985,139159.192985 536118.407985,139158.693985 536121.775985,139156.142985 536130.712985,139154.566985 536135.078985,139153.366985 536140.956985,139151.410985 536148.587985,139151.034985 536151.564985,139150.105985 536156.119985,139149.442985 536160.574985,139148.108985 536165.856985,139147.217985 536168.724985,139146.011985 536171.763985,139143.883985 536175.739985,139142.534985 536178.735985,139138.221985 536190.634985,139135.120985 536198.181985,139132.997985 536201.772985,139129.278985 536206.605985,139128.223985 536207.663985,139127.030985 536208.570985,139124.729985 536210.052985,139121.139985 536212.776985,139119.376985 536213.599985,139116.517985 536214.580985,139114.620985 536216.016985,139113.566985 536217.101985,139111.812985 536217.600985,139109.701985 536217.540985,139107.064985 536217.186985,139104.274985 536222.606985,139106.650985 536223.998985,139108.467985 536225.621985,139110.372985 536227.758985,139113.634985 536232.128985,139115.101985 536234.750985,139116.269985 536237.632985,139119.094985 536248.394985,139119.441985 536258.707985,139119.084985 536262.309985,139119.038985 536264.577985,139119.158985 536268.730985,139119.361985 536270.400985,139120.184985 536274.028985,139121.742985 536279.104985,139122.687985 536281.195985,139125.576985 536286.680985,139126.289985 536287.509985,139127.625985 536288.091985,139129.180985 536288.317985,139130.867985 536288.281985,139136.723985 536286.994985,139138.343985 536285.291985,139139.628985 536284.393985,139140.966985 536283.755985,139141.986985 536283.598985,139145.652985 536283.996985,139150.149985 536284.130985,139152.737985 536284.686985,139170.372985 536289.333985,139177.323985 536290.759985,139180.190985 536291.636985,139182.875985 536292.951985,139184.562985 536294.429985,139186.322985 536298.559985,139187.023985 536300.802985,139187.542985 536303.788985,139187.992985 536305.195985,139189.250985 536307.428985,139191.192985 536309.734985,139192.620985 536309.942985,139196.984985 536311.296985,139207.398985 536313.624985,139211.158985 536314.025985,139214.750985 536313.860985,139226.458985 536310.802985,139227.958985 536310.711985,139231.027985 536309.928985,139234.113985 536310.030985,139235.572985 536310.361985,139237.446985 536311.468985,139239.651985 536313.662985,139240.737985 536315.338985,139241.907985 536312.463985,139243.362985 536309.812985,139244.852985 536307.492985,139246.692985 536305.118985,139249.714985 536301.688985,139252.882985 536298.487985,139261.604985 536290.682985,139264.851985 536287.558985,139267.358985 536284.624985,139269.958985 536280.927985,139271.167985 536278.583985,139272.642985 536274.325985,139273.863985 536269.860985,139275.682985 536261.698985,139277.976985 536254.114985,139281.137985 536247.564985,139283.562985 536243.806985,139286.536985 536240.387985,139288.028985 536239.104985,139290.590985 536237.405985,139291.970985 536236.766985,139293.946985 536236.266985,139296.987985 536236.296985,139298.506985 536236.584985,139300.735985 536237.364985,139303.320985 536238.858985,139307.150985 536241.609985,139313.057985 536246.684985,139329.186985 536261.910985,139337.424985 536269.251985,139339.812985 536271.063985,139343.434985 536273.282985,139347.491985 536275.193985,139351.619985 536276.124985,139357.829985 536276.737985,139419.726985 536276.633985,139424.622985 536276.791985,139429.727985 536277.342985,139433.511985 536278.012985,139437.399985 536278.909985,139445.643985 536281.428985,139458.811985 536286.331985,139474.140985 536292.642985,139478.189985 536294.606985,139481.873985 536296.640985,139485.725985 536299.011985,139489.666985 536301.691985,139493.379985 536304.574985,139499.949985 536310.724985,139508.143985 536318.870985,139512.767985 536324.433985,139517.950985 536331.394985,139520.965985 536336.046985,139523.329985 536340.050985,139532.860985 536331.971985,139544.945985 536324.366985,139558.648985 536313.804985,139563.238985 536309.939985,139568.581985 536305.092985,139571.546985 536301.976985,139574.386985 536298.469985,139577.138985 536294.067985,139578.415985 536291.338985,139579.359985 536288.658985,139580.306985 536284.245985)) - MULTIPOLYGON(((139209.864361365 536222.972189994,139210.431297005 536221.517745343,139213.592297005 536214.967745343,139218.119433008 536206.899740567,139220.544433008 536203.141740567,139226.975410525 536194.584567191,139229.949410525 536191.165567191,139237.636669051 536183.52183426,139239.128669051 536182.23883426,139246.578605338 536176.600056987,139249.140605338 536174.901056987,139259.077204942 536169.348056245,139260.457204942 536168.709056245,139273.573099412 536164.058541158,139275.549099412 536163.558541158,139294.686837194 536161.270634297,139297.727837194 536161.300634297,139310.958972088 536162.609730201,139312.477972088 536162.897730201,139323.27902284 536165.79412301,139325.50802284 536166.57412301,139338.265174743 536172.42994117,139340.850174743 536173.92394117,139347.074678732 536177.944173297,139350.904678732 536180.695173297,139356.026133182 536184.722201688,139361.933133182 536189.797201688,139364.542337504 536192.147278345,139374.67174683 536201.709581426,139419.600969378 536201.634090866,139422.146068807 536201.673008262,139427.042068807 536201.831008262,139432.671246054 536202.225065431,139437.776246054 536202.776065431,139442.804190975 536203.491696336,139446.588190975 536204.161696336,139450.37232967 536204.932695061,139454.26032967 536205.829695061,139459.31637517 536207.183617171,139467.56037517 536209.702617171,139471.814386673 536211.143068372,139484.982386673 536216.046068372,139487.364579531 536216.979628547,139502.693579531 536223.290628547,139506.872946853 536225.162479124,139510.921946853 536227.126479124,139514.440572203 536228.949579268,139516.703269686 536230.198853611,139517.606430487 536227.611294244,139519.773402566 536222.110125623,139522.423402566 536216.090125623,139524.975408584 536210.854149756,139527.663408584 536205.843149756,139533.621765 536196.474161606,139536.361765 536192.798161606,139542.136400548 536185.946546017,139545.446400548 536182.464546017,139551.643555573 536176.644709606,139555.432555573 536173.470709606,139561.589895469 536168.829803886,139565.722895469 536166.035803886,139570.653377554 536162.973760946,139585.031377554 536154.797760946,139589.115600527 536152.638951691,139597.337600527 536148.611951691,139600.567941215 536147.123689662,139614.605788305 536141.055518402,139609.780279514 536138.860854268,139599.564476841 536134.670832585,139592.850953429 536132.168961781,139570.478033169 536124.332525032,139567.382442866 536123.171030486,139561.423442866 536120.784030486,139557.028291501 536118.858093707,139550.710291501 536115.845093707,139546.19592971 536113.501132072,139541.83592971 536111.046132072,139537.968651123 536108.712479275,139532.541651123 536105.210479275,139529.922961463 536103.441420152,139517.149119949 536094.414344958,139503.122045358 536084.988196452,139499.083924571 536082.075473624,139492.474924571 536076.966473624,139487.553968081 536072.812973623,139482.478968081 536068.141973623,139478.447490872 536064.13897891,139472.305490872 536057.55997891,139470.085647335 536055.073663495,139465.465647335 536049.661663495,139463.50451461 536047.265910279,139458.56651461 536040.972910279,139455.933024069 536037.404361165,139453.074024069 536033.280361165,139450.769238377 536029.747600218,139448.076238377 536025.354600218,139446.264916956 536022.233764829,139443.705916956 536017.569764829,139442.750176555 536015.770308056,139437.752885533 536006.04483069,139436.660390725 536004.151222451,139436.520633654 536003.934897271,139434.563198932 536001.278060521,139424.473850796 535988.88044492,139423.312028848 535987.415908034,139416.920028848 535979.148908034,139414.858650413 535976.351235667,139410.180650413 535969.684235667,139406.79238699 535964.397716835,139403.44738699 535958.663716836,139399.597759121 535951.114629906,139397.611759121 535946.607629906,139395.049803009 535939.952872795,139394.008803009 535936.810872795,139392.316306585 535930.901562704,139391.608306585 535927.982562704,139390.505453999 535922.573838389,139389.975453999 535919.377838389,139389.065423082 535910.988142787,139388.910423082 535907.996142787,139389.256202186 535895.946929482,139389.897202186 535890.096929482,139392.516075974 535877.044089153,139393.386075974 535874.095089153,139399.495783559 535859.37198736,139400.953783559 535856.70198736,139406.900793906 535847.485029425,139407.836793906 535846.244029425,139416.210843149 535836.886966555,139418.380843149 535834.836966555,139427.069812462 535827.77789636,139428.282449354 535827.062723795,139426.051808198 535825.55757826,139418.280774941 535819.536795955,139417.162774941 535818.546795955,139411.177513878 535812.614403045,139409.146513878 535810.361403045,139403.176776753 535802.672230565,139400.091205427 535810.16305141,139398.155617167 535814.471558711,139396.180617167 535818.521558711,139394.033365481 535822.60147794,139391.707365481 535826.70947794,139388.991944659 535831.139890635,139387.329944659 535833.651890635,139384.144194408 535838.104753743,139382.348194408 535840.430753743,139374.047542467 535849.526809658,139371.847542467 535851.571809658,139360.69611695 535860.137816064,139356.94611695 535862.494816064,139349.248784927 535866.725381087,139342.089784927 535870.130381087,139340.396090461 535870.828023817,139335.672157912 535874.720493871,139335.049995174 535875.273815283,139335.005800216 535875.323985896,139334.326249791 535876.553194682,139334.238154548 535876.729339594,139334.183755187 535876.859797612,139328.186511935 535893.418726482,139325.305023776 535900.288339493,139322.084023776 535907.010339493,139320.252874876 535910.583153757,139314.492874876 535921.117153757,139311.191451761 535926.587568066,139302.946140159 535939.020099926,139291.820459021 535964.529766174,139289.905363157 535969.185636576,139289.938432344 535969.530715635,139290.240432344 535974.828715635,139290.307297712 535981.960567098,139290.179297712 535985.310567098,139289.543408393 535992.601274487,139288.933408393 535997.065274487,139287.96379567 536002.604046235,139286.92279567 536007.469046235,139286.143478057 536010.74898812,139285.004478057 536015.10498812,139284.366950036 536017.394324958,139282.960950036 536022.150324958,139281.078410585 536027.708476865,139279.611410585 536031.539476865,139275.701425462 536040.099273923,139274.998425462 536041.413273923,139271.757242369 536046.897900362,139271.671203889 536047.030309693,139270.245880296 536050.154118467,139266.002269543 536058.140947471,139263.129272395 536062.840364862,139262.840581028 536063.678077464,139258.193605811 536080.684197504,139256.506257371 536086.057099241,139255.356257371 536089.289099241,139253.119457724 536094.859008386,139250.675457724 536100.304008386,139249.041831343 536103.711135421,139247.769831343 536106.201135421,139243.402934482 536113.655719233,139241.735934482 536116.158719233,139233.753605977 536125.716781793,139233.383126401 536129.39993291,139232.884126401 536132.76793291,139230.813455626 536142.361950041,139228.262455626 536151.298950041,139227.011345979 536155.174874632,139226.851289519 536155.958884527,139226.018301756 536159.579180725,139225.047552546 536163.366393004,139224.522159551 536166.552819283,139223.993843355 536169.143217853,139223.625986791 536171.615014223,139222.15973211 536178.94002488,139220.82573211 536184.22202488,139219.732210239 536188.108133427,139218.841210239 536190.976133427,139216.929413838 536196.389342743,139215.723413838 536199.428342743,139212.136823127 536207.154743435,139211.740680059 536207.894905485,139208.732925569 536216.192904714,139207.594144186 536219.139432547,139206.556147112 536221.665638259,139209.864361365 536222.972189994)),((139393.648507081 535668.974736443,139397.187012699 535662.377434254,139398.872012699 535659.858434254,139407.456267504 535649.256643269,139410.047267504 535646.593643269,139410.699960735 535646.038230011,139410.368589237 535645.800166734,139408.578589237 535644.268166734,139397.3959599 535632.354541231,139395.5549599 535629.905541231,139394.594734167 535628.386189625,139390.928598216 535636.814441846,139383.694768091 535654.435384807,139385.84169416 535657.576506395,139388.732034058 535661.495027351,139392.199486509 535666.626750626,139393.648507081 535668.974736443)),((139548.724566362 535611.506800266,139554.628778365 535611.137288574,139552.459746567 535610.579054857,139549.764858782 535609.652657427,139548.724566362 535611.506800266)),((139593.98450066 535612.829328195,139594.118510319 535612.850765761,139596.104127044 535613.235551013,139596.587685007 535612.311565728,139593.98450066 535612.829328195)),((139673.793292709 535540.214143275,139675.386311294 535539.763978944,139678.865311294 535539.132978944,139694.228840552 535537.95509534,139697.259840552 535538.03509534,139702.578710636 535538.674149893,139703.940626818 535536.15791517,139708.219930733 535529.188390852,139711.366930733 535524.639390852,139714.415105893 535520.539122747,139716.288105893 535518.191122747,139721.898840694 535511.915115248,139723.960840694 535509.854115248,139730.603961741 535503.95788024,139732.986961741 535502.08288024,139742.32994248 535495.806278369,139745.55794248 535493.973278369,139757.643371885 535488.463159874,139760.512371885 535487.451159874,139769.898169371 535484.812425618,139771.383169371 535484.497425618,139780.369942617 535483.153836792,139782.414942617 535482.973836792,139791.720962751 535482.734686659,139793.230962751 535482.789686659,139804.33595446 535484.027071477,139807.34095446 535484.591071477,139819.768277813 535488.052351736,139821.373277813 535488.652351737,139830.347113557 535492.696619516,139831.651113557 535493.390619516,139839.770416859 535498.399075464,139842.236416859 535500.146075465,139848.23313285 535504.870517295,139851.70613285 535507.905517294,139860.17101037 535516.607696199,139863.36701037 535520.475696199,139866.175448217 535524.094239862,139869.322448217 535528.415239862,139871.088962473 535530.948783811,139876.518962473 535539.088783811,139877.61079229 535540.773960122,139886.91079229 535555.557960122,139888.103132131 535557.519362678,139893.470132131 535566.660362678,139894.992049347 535569.380385515,139899.328049347 535577.522385515,139900.477386794 535579.771023682,139901.31516658 535581.480533089,139900.983503197 535562.558365808,139900.97647671 535560.423170544,139901.10447671 535548.728170544,139901.231410096 535545.110912013,139902.136410096 535529.843912013,139902.176129275 535529.218157315,139905.106129275 535485.921157315,139905.536580389 535481.504616269,139906.632580389 535472.903616269,139907.727569766 535466.521787328,139909.166569766 535459.871787328,139910.517916095 535454.570342114,139912.478916095 535447.903342114,139913.722873363 535444.05972708,139915.809873363 535438.15872708,139917.379333372 535434.099735655,139918.541333372 535431.335735655,139920.880565071 535426.301581819,139923.435565071 535421.296581819,139928.281284908 535413.127148888,139929.956284908 535410.672148888,139938.042764184 535400.756522259,139940.090764184 535398.642522259,139948.768873328 535390.970285527,139951.196873328 535389.137285526,139961.770241772 535382.461156606,139964.409241772 535381.088156606,139976.45795545 535376.097659227,139979.338955449 535375.188659227,139988.77191981 535372.871964344,139993.85991981 535371.966964344,140003.078198775 535370.910277303,140007.592198775 535370.674277303,140017.949911065 535370.849153224,140022.206911065 535371.216153224,140031.233391578 535372.551462914,140037.320391578 535373.834462914,140045.801435499 535376.14861572,140048.644435499 535377.10661572,140054.954143977 535379.555038384,140060.685143977 535382.082038384,140066.886939636 535385.166167283,140072.489939636 535388.283167283,140079.526078487 535392.725680129,140084.115078487 535395.992680129,140089.15466377 535399.91414691,140094.05166377 535404.07114691,140098.726512732 535408.516819305,140103.01981089 535402.9389708,140108.999803458 535396.075505027,140111.805803459 535393.224505026,140114.807696967 535390.339232673,140118.141696967 535387.308232673,140123.301512613 535383.022699546,140127.592512613 535379.771699546,140133.352921212 535375.815849286,140137.178921212 535373.442849286,140142.722507012 535370.322038166,140146.310507012 535368.498038166,140152.630459311 535365.644813416,140156.815459311 535363.983813416,140164.772803628 535361.330259624,140168.660803628 535360.271259624,140175.448108298 535358.756711754,140179.890108298 535357.979711754,140186.892449945 535357.092035099,140190.838930916 535356.779522799,140190.884425591 535356.224874951,140191.384904544 535347.063467311,140191.846641347 535331.808221288,140192.00941674 535310.471395717,140191.991024918 535301.212427353,140191.541104092 535284.786536347,140191.513874886 535283.098336958,140191.470874886 535274.271336958,140191.512545689 535272.093904653,140185.720426649 535279.58800745,140184.420426649 535280.97500745,140171.647989504 535291.857369263,140156.775783199 535299.627725036,140140.548240181 535303.897127438,140139.221240181 535304.091127438,140122.971661697 535304.685309063,140118.859796961 535304.388466569,140117.960082912 535304.382303265,140112.418874501 535305.549512423,140097.46578745 535307.158279406,140093.16578745 535307.187279406,140083.072252838 535306.573629867,140079.573252838 535306.122629867,140066.212696596 535303.140898521,140064.286696596 535302.521898521,140056.410017786 535299.491650564,140053.664017786 535298.253650564,140045.91041656 535293.998970293,140043.207364236 535294.944090043,140040.303364236 535295.718090043,140034.856746414 535296.954548187,140031.173746414 535297.647548187,140026.999015077 535298.311851479,140022.534015077 535298.893851479,140018.928973161 535299.275404514,140014.668973161 535299.622404514,140010.563970137 535299.843739094,140006.255970137 535299.957739094,139999.458235513 535299.829344348,139995.913235513 535299.601344348,139981.836229486 535297.337934244,139972.730229486 535294.967934244,139964.610449657 535292.353341535,139953.632449657 535288.115341535,139948.432359296 535285.878890735,139944.380359296 535283.951890735,139936.727452829 535279.749709235,139932.54725805 535277.126685853,139926.439384794 535273.709175962,139921.007929164 535270.359035674,139918.405929164 535268.597035674,139909.748922084 535261.754373676,139907.549922084 535259.736373676,139902.684028655 535254.839806614,139898.637028655 535250.373806614,139896.691574038 535248.139807316,139895.458387161 535246.665927017,139891.433330773 535242.638342725,139889.65545913 535240.797588631,139886.50245913 535237.419588631,139883.656864185 535233.923766068,139882.478064239 535242.340513731,139880.651880309 535251.332766992,139879.721880309 535254.806766992,139876.779680676 535263.586783247,139876.060577869 535265.360796302,139874.79020805 535269.248934921,139871.822763689 535276.889159193,139870.931763689 535278.857159193,139864.05623411 535290.925295228,139862.33123411 535293.390295228,139858.115934725 535298.859485986,139855.753934725 535301.648485986,139850.866768772 535306.889426252,139846.815768772 535310.837426252,139838.591137687 535317.775172015,139835.105137687 535320.311172015,139824.424394308 535326.794235263,139823.089394308 535327.459235263,139813.208246239 535331.530645088,139810.500246239 535332.426645088,139803.02729072 535334.477546416,139801.54729072 535334.802546416,139792.31873936 535336.233801626,139790.32573936 535336.416801626,139772.739552331 535335.485350733,139772.678742189 535336.301651896,139771.875901206 535342.997515306,139770.759901206 535349.728515306,139769.418622067 535356.093631949,139768.022622067 535361.536631949,139766.860140665 535365.591636888,139763.692140665 535375.573636888,139761.184890728 535382.329329996,139759.594890728 535386.054329996,139756.15272478 535393.079269016,139753.88572478 535397.153269016,139748.450918814 535405.548751581,139746.657918814 535407.950751581,139742.330206559 535413.229145,139738.751206559 535417.210145,139734.43001005 535421.6352482,139722.41001005 535432.9692482,139716.367341855 535437.98096576,139714.053470745 535440.271929189,139711.191470745 535442.955929189,139707.861562168 535445.898268999,139705.549562168 535447.822268999,139696.847652128 535454.068662605,139693.759652128 535455.966662605,139685.055743243 535460.55858256,139677.244733764 535464.044948981,139679.161996055 535473.022424303,139679.281976452 535474.222588568,139680.352720534 535480.998379059,139680.927760864 535485.527580863,139681.460760864 535491.071580863,139681.792723809 535499.605092802,139681.765723809 535501.098092802,139681.041311863 535510.228084524,139680.578311863 535513.507084524,139679.086384778 535521.168254061,139677.593384778 535527.155254061,139676.370083997 535531.49952852,139675.069518067 535535.63677325,139674.076936689 535539.365414627,139673.793292709 535540.214143275)),((140348.349868583 535048.405807409,140349.040549268 535048.491083095,140353.494549268 535049.151083095,140353.949912521 535049.230533165,140353.367156934 535038.462150023,140353.432156934 535035.425150023,140354.487097864 535025.675012826,140353.046982524 535024.921582566,140352.820628165 535026.219392737,140352.568155198 535027.591439053,140349.704155198 535042.381439053,140349.089465707 535045.253294723,140348.349868583 535048.405807409)),((140470.06810426 535126.311451101,140472.345219058 535130.026794286,140473.794219058 535132.659794286,140476.807853807 535138.779309401,140477.871853807 535141.213309401,140477.93607927 535141.386279119,140478.88796169 535137.252852428,140479.90027765 535133.341840454,140482.491412105 535124.338178506,140481.861863133 535122.666316784,140481.426968742 535122.285601366,140481.294236525 535122.340592859,140481.273605186 535122.290795276,140479.748404943 535122.995617904,140476.265404943 535124.407617904,140470.06810426 535126.311451101))) - - #51 Polygon - gid: 2551 - - POLYGON((167603.370985 536610.679985,167627.312985 536610.283985,167671.695985 536624.130985,167685.005985 536588.552985,167710.046985 536546.816985,167709.176985 536506.215985,167690.358985 536469.760985,167672.327985 536431.817985,167630.130985 536412.716985,167595.078985 536402.756985,167542.703985 536389.811985,167506.924985 536432.458985,167469.539985 536465.608985,167446.234985 536432.913985,167420.629985 536414.438985,167396.383985 536428.615985,167396.997985 536430.166985,167397.062985 536435.715985,167395.979985 536476.018985,167395.650985 536485.335985,167393.612985 536527.161985,167393.405985 536534.767985,167393.625985 536539.256985,167394.056985 536541.856985,167395.254985 536546.202985,167396.337985 536548.977985,167398.387985 536552.990985,167400.219985 536555.799985,167403.048985 536559.308985,167405.697985 536561.920985,167409.163985 536564.807985,167412.098985 536566.934985,167418.852985 536571.198985,167422.776985 536573.403985,167443.578985 536583.279985,167447.746985 536585.454985,167451.828985 536587.817985,167455.912985 536590.371985,167464.088985 536595.878985,167471.759985 536601.610985,167474.551985 536604.070985,167511.324985 536596.279985,167534.715985 536616.533985,167548.609985 536632.724985,167575.399985 536624.196985,167603.370985 536610.679985)) - POLYGON((167518.99487489 536521.948060763,167523.287951439 536522.240215727,167536.666844921 536525.691103894,167549.185676584 536531.537664739,167560.419577491 536539.581475424,167566.761745414 536545.073086262,167570.737869345 536543.151622347,167586.028245886 536537.712667658,167602.130656777 536535.690241795,167626.072656777 536535.294241795,167629.371484375 536535.503008799,167634.600578813 536526.787642581,167634.56625147 536525.185660445,167623.714310522 536504.162836168,167622.618760385 536501.952008114,167616.376875282 536488.817082348,167604.275130745 536483.339076272,167575.825658869 536475.255179779,167570.105583803 536473.841406572,167564.382352842 536480.663247059,167556.684223921 536488.575098034,167519.299223921 536521.725098034,167518.99487489 536521.948060763)) - - #52 Polygon - gid: 2552 - - POLYGON((139328.097985 537673.993985,139333.694985 537673.778985,139339.685985 537674.116985,139343.484985 537674.560985,139347.201985 537675.198985,139349.266985 537662.315985,139350.795985 537650.307985,139350.815985 537648.813985,139350.170985 537642.977985,139349.497985 537639.338985,139348.573985 537636.478985,139347.401985 537633.734985,139336.285985 537613.547985,139333.452985 537607.471985,139331.129985 537601.716985,139328.904985 537595.513985,139326.508985 537587.806985,139319.008985 537559.965985,139317.097985 537554.004985,139314.973985 537548.226985,139312.575985 537542.468985,139306.136985 537528.279985,139299.926985 537514.031985,139288.894985 537489.864985,139279.105985 537467.759985,139274.759985 537456.114985,139264.851985 537426.033985,139261.266985 537416.840985,139258.190985 537410.222985,139246.959985 537387.429985,139229.076985 537347.488985,139217.864985 537323.218985,139213.134985 537312.367985,139200.100985 537278.784985,139189.030985 537249.549985,139177.539985 537217.909985,139166.856985 537192.155985,139162.415985 537180.965985,139158.622985 537170.454985,139150.636985 537146.582985,139135.766985 537108.920985,139128.573985 537089.138985,139126.052985 537082.845985,139123.397985 537077.227985,139120.597985 537072.327985,139117.710985 537068.104985,139114.766985 537064.522985,139112.716985 537062.323985,139107.519985 537058.085985,139104.012985 537055.863985,139101.294985 537054.558985,139100.275085 537053.707685,139098.476985 537053.526985,139095.233985 537052.734985,139092.248985 537052.457985,139089.268985 537052.711985,139087.784985 537053.032985,139084.678985 537054.199985,139080.094985 537057.047985,139075.290985 537060.908985,139069.415985 537066.744985,139061.822985 537075.205985,139058.488985 537078.691985,139054.032985 537082.720985,139050.724985 537085.113985,139048.133985 537086.645985,139045.410985 537087.957985,139042.557985 537088.968985,139040.380985 537089.363985,139037.334985 537089.294985,139035.878985 537088.972985,139033.462985 537087.869985,139030.014985 537085.492985,139025.487985 537081.543985,139018.084985 537074.336985,139013.673985 537069.604985,139009.409985 537064.385985,139006.208985 537059.858985,139002.414985 537053.912985,138998.748985 537047.430985,138995.999985 537041.968985,138993.942985 537037.449985,138990.339985 537028.148985,138987.242985 537017.910985,138981.534985 536995.496985,138978.988985 536986.537985,138977.585985 536982.260985,138976.022985 536978.202985,138973.066985 536972.030985,138970.402985 536968.255985,138968.487985 536965.910985,138966.359985 536963.834985,138963.995985 536962.186985,138961.235985 536960.885985,138958.980985 536960.276985,138955.951985 536960.106985,138952.749985 536960.533985,138949.931985 536961.489985,138935.372985 536968.382985,138907.537985 536979.752985,138901.926985 536982.393985,138896.463985 536985.384985,138891.293985 536988.728985,138886.976985 536992.219985,138884.882985 536994.338985,138883.500985 536996.130985,138882.011985 536998.803985,138881.564985 537000.190985,138881.413985 537001.324985,138881.475985 537002.858985,138881.775985 537004.391985,138882.629985 537006.611985,138883.396985 537007.887985,138887.677985 537013.078985,138890.845985 537016.283985,138895.056985 537020.219985,138905.804985 537029.443985,138913.316985 537036.186985,138920.975985 537043.717985,138932.473985 537056.309985,138954.679985 537081.634985,138960.113985 537088.091985,138965.986985 537095.578985,138977.422985 537111.070985,138982.004985 537117.556985,138986.599985 537124.630985,138993.679985 537137.096985,139005.600985 537160.149985,139020.608985 537187.869985,139033.486985 537210.770985,139044.059985 537228.558985,139053.006985 537244.088985,139060.092985 537255.519985,139080.707985 537286.417985,139090.120985 537300.972985,139103.078985 537322.123985,139116.233985 537344.359985,139119.222985 537349.562985,139122.383985 537355.881985,139125.129985 537362.380985,139130.126985 537375.644985,139131.858985 537379.337985,139134.566985 537383.961985,139137.705985 537388.053985,139140.085985 537390.525985,139142.627985 537392.724985,139146.633985 537395.533985,139157.818985 537402.034985,139160.679985 537403.920985,139163.066985 537405.758985,139166.396985 537408.850985,139168.416985 537411.072985,139169.280985 537412.268985,139170.702985 537414.781985,139171.293985 537416.228985,139171.679985 537417.695985,139171.789985 537419.141985,139171.407985 537421.760985,139170.997985 537423.212985,139169.908985 537426.097985,139168.082985 537430.080985,139164.605985 537435.318985,139160.534985 537442.262985,139157.693985 537447.550985,139155.404985 537452.605985,139153.763985 537456.816985,139152.517985 537461.396985,139151.670985 537466.320985,139151.198985 537471.522985,139151.025985 537479.913985,139151.322985 537488.108985,139151.969985 537496.769985,139153.000985 537505.180985,139154.541985 537513.906985,139156.515985 537522.716985,139158.932985 537531.649985,139161.825985 537540.914985,139164.822985 537549.648985,139168.521985 537559.663985,139171.990985 537568.494985,139174.560985 537574.436985,139178.737985 537582.989985,139191.871985 537607.370985,139200.694985 537624.740985,139204.472985 537633.189985,139210.692985 537649.126985,139214.176985 537657.443985,139221.014985 537672.431985,139229.336985 537691.644985,139232.848985 537698.786985,139235.354985 537703.365985,139240.767985 537712.073985,139247.162985 537721.413985,139250.052985 537724.904985,139254.219985 537729.231985,139256.988985 537731.610985,139259.413985 537733.383985,139264.102985 537736.538985,139269.901985 537740.072985,139273.000985 537741.589985,139275.922985 537742.341985,139277.410985 537742.524985,139279.635985 537727.507985,139281.333985 537721.724985,139283.443985 537716.470985,139285.539985 537712.482985,139287.579985 537709.020985,139295.083985 537697.805985,139298.702985 537692.885985,139303.840985 537687.353985,139308.168985 537683.551985,139313.904985 537679.507985,139316.481985 537677.948985,139319.149985 537676.579985,139323.819985 537674.867985,139328.097985 537673.993985)) - POLYGON( EMPTY) - - #53 Polygon - gid: 2553 - - POLYGON((159078.115985 538635.625985,159073.785985 538635.186985,159069.280985 538635.348985,159064.698985 538635.981985,159060.140985 538636.953985,159053.718985 538638.713985,159049.352985 538640.261985,159045.098985 538642.416985,159041.557985 538645.223985,159040.211985 538646.934985,159038.272985 538650.769985,159036.869985 538655.096985,159035.937985 538659.695985,159035.410985 538664.343985,159035.238985 538667.833985,159035.436985 538672.256985,159036.130985 538676.707985,159037.159985 538681.153985,159040.569985 538692.905985,159043.786985 538701.322985,159048.117985 538711.817985,159054.692985 538726.630985,159055.753985 538730.994985,159058.420985 538739.629985,159061.765985 538747.994985,159063.932985 538752.384985,159068.550985 538760.122985,159075.501985 538770.881985,159083.125985 538782.032985,159087.563985 538789.479985,159095.628985 538805.198985,159112.434985 538839.730985,159114.544985 538843.709985,159116.844985 538847.550985,159120.775985 538852.888985,159123.785985 538856.247985,159126.988985 538859.454985,159136.194985 538868.100985,159140.257985 538871.235985,159142.189985 538871.273985,159143.808985 538868.428985,159144.961985 538864.099985,159145.681985 538858.985985,159146.004985 538853.787985,159146.011985 538850.486985,159145.553985 538846.088985,159144.577985 538841.705985,159142.124985 538832.929985,159141.174985 538828.511985,159140.509985 538823.611985,159139.715985 538814.637985,159139.301985 538806.178985,159139.157985 538797.168985,159139.285985 538792.663985,159139.602985 538788.179985,159140.747985 538778.977985,159143.071985 538765.663985,159144.541985 538759.111985,159147.121985 538750.372985,159148.229985 538746.003985,159148.933985 538741.616985,159149.054985 538739.850985,159148.987985 538735.412985,159148.521985 538730.945985,159146.822985 538722.006985,159144.223985 538711.122985,159142.868985 538706.798985,159141.212985 538702.601985,159140.035985 538700.141985,159137.864985 538696.224985,159135.480985 538692.403985,159132.936985 538688.667985,159128.117985 538682.115985,159125.304985 538678.613985,159114.153985 538665.988985,159111.392985 538662.402985,159106.122985 538654.963985,159103.346985 538651.417985,159099.169985 538647.188985,159095.641985 538644.364985,159091.850985 538641.679985,159087.859985 538639.280985,159083.733985 538637.315985,159079.537985 538635.934985,159078.115985 538635.625985)) - POLYGON( EMPTY) - - #54 Polygon - gid: 2554 - - POLYGON((159293.559985 538980.522985,159275.390985 538925.668985,159258.421985 538914.962985,159239.576985 538917.108985,159216.488985 538918.359985,159211.120985 538917.908985,159109.160985 538909.360985,159070.236985 538904.177985,158994.276985 538919.645985,158907.657985 538925.081985,158879.874985 538905.635985,158856.684985 538889.787985,158848.906985 538928.927985,158849.561985 538935.309985,158856.845985 538954.454985,158919.290985 538985.661985,158941.977985 538986.370985,158963.373985 538974.307985,159015.169985 538975.497985,159047.536985 538978.284985,159103.429985 539036.779985,159124.581985 539056.686985,159201.858985 539071.122985,159248.370985 539062.766985,159298.256985 538995.795985,159293.559985 538980.522985)) - POLYGON((159178.260710927 538990.41719613,159202.122936517 538994.874862559,159205.932369085 538994.190488235,159206.951084137 538992.82288278,159204.848542186 538992.646234788,159178.260710927 538990.41719613)) - - #55 Polygon - gid: 2555 - - POLYGON((157894.850985 539376.542985,157892.525985 539323.248985,157914.055985 539274.176985,157921.162985 539246.664985,157923.305985 539204.844985,157931.860985 539190.504985,157926.415985 539170.883985,157884.235985 539120.656985,157872.168985 539101.762985,157863.337985 539018.735985,157870.107985 538987.808985,157855.347985 538912.078985,157845.930985 538889.356985,157836.700985 538868.127985,157832.085985 538857.051985,157829.933985 538849.014985,157827.652985 538828.317985,157824.558985 538808.198985,157824.169985 538803.715985,157824.279985 538799.462985,157824.905985 538795.026985,157826.159985 538791.593985,157828.431985 538787.680985,157830.534985 538785.180985,157833.976985 538782.242985,157836.893985 538780.476985,157841.164985 538778.627985,157845.477985 538777.369985,157850.291985 538776.294985,157855.209985 538775.547985,157860.070985 538775.108985,157864.887985 538774.919985,157869.668985 538774.988985,157874.460985 538775.379985,157879.234985 538776.127985,157883.962985 538777.336985,157888.619985 538779.057985,157893.193985 538781.401985,157897.645985 538784.384985,157901.081985 538787.293985,157905.846985 538792.271985,157913.197985 538801.228985,157916.806985 538805.366985,157919.960985 538808.577985,157924.360985 538812.466985,157928.241985 538815.462985,157932.185985 538818.104985,157936.120985 538820.297985,157940.258985 538822.065985,157944.049985 538823.115985,157948.470985 538823.935985,157951.507985 538824.056985,157957.445985 538823.609985,157962.089985 538822.710985,157966.395985 538821.399985,157967.516985 538821.197985,157978.098985 538820.149985,157983.664985 538819.095985,157987.936985 538817.671985,157993.610985 538815.038985,158009.406985 538806.036985,158013.444985 538804.049985,158021.216985 538800.892985,158025.239985 538799.556985,158029.581985 538798.376985,158033.885985 538797.537985,158038.348985 538796.937985,158047.069985 538796.476985,158055.493985 538796.531985,158059.440985 538796.795985,158063.897985 538797.395985,158067.999985 538798.407985,158072.465985 538799.848985,158076.903985 538801.904985,158090.543985 538808.987985,158095.284985 538811.078985,158100.145985 538812.821985,158105.063985 538814.186985,158109.978985 538815.246985,158114.795985 538816.011985,158119.457985 538816.484985,158124.006985 538816.661985,158128.505985 538816.527985,158146.349985 538815.322985,158150.970985 538815.210985,158155.747985 538815.325985,158160.700985 538815.703985,158188.319985 538818.681985,158198.973985 538820.038985,158224.467985 538824.125985,158249.631985 538827.579985,158282.513985 538833.577985,158297.911985 538835.739985,158309.261985 538836.962985,158322.577985 538838.114985,158350.431985 538840.147985,158373.537985 538841.500985,158393.243985 538842.897985,158403.919985 538843.057985,158417.449985 538842.716985,158446.769985 538842.727985,158454.328985 538842.431985,158477.319985 538840.930985,158485.069985 538839.962985,158487.523985 538839.435985,158491.846985 538838.176985,158493.370985 538837.623985,158497.890985 538835.417985,158501.542985 538832.151985,158503.237985 538827.961985,158503.543985 538826.486985,158503.986985 538821.992985,158504.118985 538819.313985,158504.107985 538811.859985,158503.701985 538805.305985,158502.893985 538800.236985,158501.004985 538795.729985,158497.499985 538792.873985,158495.013985 538791.985985,158490.503985 538790.995985,158485.352985 538790.283985,158475.110985 538789.285985,158460.091985 538788.446985,158443.718985 538788.015985,158419.535985 538788.139985,158370.102985 538785.725985,158363.523985 538785.576985,158341.759985 538785.543985,158328.013985 538784.975985,158315.142985 538784.111985,158309.210985 538783.546985,158303.783985 538782.812985,158298.653985 538781.775985,158293.695985 538780.383985,158288.891985 538778.574985,158284.493985 538776.409985,158280.587985 538773.824985,158277.161985 538770.813985,158274.219985 538767.365985,158271.819985 538763.557985,158269.485985 538759.344985,158267.810985 538755.165985,158266.174985 538750.044985,158265.046985 538745.351985,158264.334985 538740.709985,158264.009985 538736.128985,158263.951985 538731.628985,158264.820985 538714.602985,158264.696985 538711.176985,158264.065985 538706.727985,158263.152985 538703.633985,158261.153985 538699.601985,158258.338985 538696.437985,158254.234985 538693.033985,158248.922985 538690.248985,158244.763985 538688.523985,158238.701985 538686.365985,158219.956985 538680.881985,158214.905985 538679.588985,158209.880985 538678.512985,158204.789985 538677.634985,158194.991985 538676.496985,158190.391985 538676.269985,158185.894985 538676.461985,158181.499985 538677.416985,158177.267985 538678.902985,158173.525985 538681.123985,158170.075985 538684.071985,158167.147985 538687.454985,158155.693985 538703.261985,158152.504985 538707.158985,158149.100985 538710.705985,158145.361985 538713.823985,158141.173985 538716.406985,158136.519985 538718.383985,158131.652985 538719.748985,158126.839985 538720.697985,158117.628985 538722.144985,158113.056985 538722.697985,158108.422985 538723.049985,158103.729985 538723.101985,158099.001985 538722.677985,158094.281985 538721.555985,158089.580985 538719.729985,158084.972985 538717.302985,158080.509985 538714.483985,158076.807985 538711.924985,158064.225985 538702.839985,158059.555985 538699.062985,158055.796985 538695.251985,158052.555985 538690.995985,158049.871985 538686.466985,158047.646985 538681.856985,158045.714985 538677.292985,158042.545985 538668.600985,158041.272985 538664.284985,158040.567985 538660.514985,158040.181985 538656.045985,158040.422985 538653.092985,158041.614985 538648.744985,158042.988985 538646.338985,158045.975985 538642.906985,158049.107985 538640.411985,158053.137985 538637.772985,158057.450985 538635.399985,158069.991985 538628.978985,158073.367985 538626.988985,158076.908985 538624.277985,158078.558985 538622.151985,158080.301985 538617.970985,158080.363985 538614.351985,158079.497985 538609.782985,158078.086985 538605.522985,158076.318985 538601.292985,158070.542985 538589.426985,158068.926985 538585.236985,158067.994985 538581.148985,158067.361985 538576.584985,158067.374985 538571.859985,158067.748985 538567.085985,158068.393985 538562.314985,158070.227985 538552.962985,158072.642985 538543.813985,158074.086985 538539.333985,158078.921985 538526.522985,158080.207985 538522.633985,158081.174985 538518.267985,158081.197985 538515.026985,158080.286985 538510.603985,158078.490985 538507.288985,158075.655985 538503.563985,158072.129985 538500.224985,158068.272985 538497.122985,158064.230985 538494.194985,158048.184985 538483.456985,158044.526985 538480.501985,158041.153985 538477.160985,158038.257985 538473.456985,158035.905985 538469.491985,158034.038985 538465.378985,158032.606985 538461.112985,158031.773985 538456.880985,158031.263985 538452.412985,158031.321985 538448.226985,158031.779985 538443.737985,158032.454985 538439.607985,158033.482985 538435.224985,158034.695985 538431.234985,158036.329985 538427.040985,158038.173985 538423.260985,158040.536985 538419.428985,158042.856985 538416.351985,158048.788985 538409.566985,158051.573985 538406.967985,158055.068985 538404.117985,158061.460985 538399.268985,158063.495985 538397.453985,158066.529985 538394.137985,158067.820985 538392.177985,158069.642985 538388.050985,158070.119985 538385.776985,158070.207985 538381.247985,158069.715985 538378.650985,158068.212985 538374.373985,158066.928985 538371.761985,158061.014985 538361.608985,158059.800985 538358.879985,158058.368985 538354.611985,158057.626985 538350.721985,158057.157985 538346.234985,158056.977985 538341.777985,158057.089985 538332.997985,158057.300985 538328.502985,158057.558985 538324.295985,158058.435985 538316.173985,158059.366985 538311.783985,158060.130985 538309.651985,158062.391985 538305.757985,158063.681985 538304.510985,158067.577985 538302.144985,158069.820985 538301.225985,158074.188985 538300.056985,158076.684985 538299.637985,158081.181985 538299.322985,158083.170985 538299.331985,158087.634985 538299.892985,158089.280985 538300.425985,158093.269985 538302.556985,158095.089985 538304.054985,158098.111985 538307.423985,158100.076985 538310.360985,158102.302985 538314.444985,158106.037985 538322.825985,158109.425985 538331.312985,158113.039985 538339.731985,158115.042985 538343.775985,158117.384985 538347.618985,158119.861985 538350.533985,158123.195985 538353.524985,158126.449985 538355.133985,158130.893985 538356.553985,158135.882985 538357.249985,158141.180985 538357.583985,158152.139985 538357.780985,158168.051985 538357.678985,158188.401985 538357.183985,158202.609985 538356.222985,158207.082985 538355.729985,158210.973985 538354.835985,158215.136985 538353.233985,158217.729985 538351.307985,158220.493985 538347.735985,158221.433985 538344.432985,158221.372985 538339.617985,158219.946985 538335.383985,158217.662985 538330.880985,158214.641985 538326.800985,158211.346985 538323.025985,158207.875985 538319.480985,158200.767985 538312.736985,158193.677985 538306.380985,158190.103985 538303.374985,158186.291985 538300.525985,158182.249985 538297.930985,158166.312985 538289.347985,158151.859985 538281.067985,158148.211985 538277.990985,158145.853985 538274.126985,158143.951985 538269.908985,158142.731985 538265.633985,158142.984985 538262.325985,158145.929985 538254.323985,158147.844985 538250.241985,158155.192985 538236.687985,158156.224985 538234.422985,158157.763985 538230.195985,158158.398985 538227.494985,158158.947985 538223.020985,158158.877985 538219.108985,158158.464985 538214.348985,158157.713985 538209.333985,158156.661985 538204.204985,158155.368985 538199.075985,158152.362985 538189.255985,158144.650985 538168.703985,158142.349985 538161.187985,158141.388985 538156.791985,158140.973985 538153.813985,158140.468985 538146.374985,158140.397985 538134.390985,158140.686985 538124.819985,158141.168985 538120.349985,158141.665985 538118.248985,158143.141985 538113.987985,158143.956985 538112.177985,158146.935985 538107.017985,158150.157985 538102.798985,158153.495985 538099.192985,158156.280985 538095.660985,158156.827985 538094.007985,158157.212985 538089.323985,158155.053985 538085.353985,158154.319985 538084.377985,158151.243985 538081.080985,158149.720985 538079.744985,158146.073985 538077.099985,158143.919985 538075.876985,158139.789985 538074.073985,158137.153985 538073.271985,158132.717985 538072.477985,158129.626985 538072.391985,158125.124985 538072.754985,158121.831985 538073.284985,158117.451985 538074.342985,158114.286985 538075.324985,158110.105985 538076.993985,158106.980985 538078.619985,158103.162985 538081.015985,158099.949985 538083.412985,158087.029985 538094.229985,158083.349985 538096.801985,158081.179985 538097.975985,158076.918985 538099.391985,158075.075985 538099.453985,158070.640985 538098.406985,158068.071985 538096.893985,158064.644985 538093.890985,158062.142985 538090.949985,158059.592985 538087.217985,158057.747985 538083.957985,158044.570985 538058.204985,158041.020985 538049.863985,158035.247985 538034.982985,158032.494985 538030.015985,158030.781985 538028.331985,158026.737985 538025.714985,158021.573985 538025.298985,158016.216985 538026.502985,158012.235985 538028.622985,158011.213985 538029.459985,158008.190985 538032.821985,158007.233985 538034.176985,158004.100985 538039.870985,157996.432985 538057.069985,157989.897985 538069.852985,157982.231985 538086.803985,157980.959985 538091.121985,157980.237285 538096.385085,157980.018985 538098.246985,157981.218985 538102.537985,157982.150985 538106.968985,157982.792985 538111.477985,157983.105985 538116.000985,157983.049985 538120.473985,157982.818985 538123.211985,157982.150985 538127.670985,157981.161985 538132.109985,157979.900985 538136.476985,157977.381985 538143.277985,157975.445985 538147.335985,157973.268985 538151.299985,157970.931985 538155.180985,157966.403985 538162.108985,157960.987985 538169.299985,157944.405985 538190.387985,157938.918985 538197.853985,157933.800985 538205.258985,157925.858985 538217.287985,157921.028985 538224.884985,157915.684985 538233.737985,157911.252985 538241.570985,157904.469985 538254.211985,157889.954985 538283.213985,157872.365985 538317.704985,157869.421985 538324.117985,157865.994985 538332.439985,157850.146985 538373.508985,157848.054985 538378.057985,157843.903985 538386.079985,157839.265985 538393.818985,157836.681985 538397.474985,157835.511985 538398.919985,157832.386985 538402.141985,157825.693985 538408.250985,157822.657985 538411.557985,157816.062985 538420.021985,157813.484985 538423.769985,157811.194985 538427.638985,157809.201985 538431.900985,157807.927985 538436.127985,157807.156985 538440.551985,157806.141985 538449.623985,157805.406985 538454.090985,157803.584985 538462.511985,157801.351985 538471.241985,157798.925985 538478.573985,157797.268985 538482.902985,157795.271985 538486.997985,157792.758985 538490.567985,157789.944985 538493.109985,157785.739985 538495.510985,157781.509985 538496.489985,157779.126985 538496.112985,157774.783985 538493.943985,157771.498985 538490.729985,157770.302985 538487.250985,157769.943985 538482.564985,157769.120985 538478.016985,157765.407985 538467.734985,157763.532985 538463.466985,157761.262985 538459.640985,157758.444985 538456.507985,157757.260985 538455.596985,157753.480985 538453.635985,157749.173985 538452.289985,157739.939985 538450.302985,157735.492985 538449.094985,157720.063985 538444.009985,157707.829985 538438.930985,157703.698985 538436.982985,157699.789985 538434.765985,157696.234985 538432.162985,157694.135985 538430.282985,157690.829985 538426.887985,157687.852985 538423.152985,157685.503985 538419.230985,157684.078985 538415.272985,157683.931985 538412.866985,157684.996985 538408.546985,157687.004985 538404.139985,157691.766985 538394.860985,157694.075985 538390.973985,157696.564985 538387.200985,157700.504985 538381.882985,157706.366985 538375.007985,157709.523985 538371.780985,157715.421985 538366.520985,157718.953985 538363.583985,157722.623985 538360.832985,157726.452985 538358.449985,157731.239985 538356.344985,157735.523985 538355.147985,157739.996985 538354.347985,157744.569985 538353.900985,157749.150985 538353.760985,157754.339985 538353.933985,157758.737985 538354.662985,157771.845985 538358.438985,157776.724985 538359.145985,157781.252985 538359.339985,157785.861985 538359.295985,157790.447985 538358.943985,157794.906985 538358.210985,157799.135985 538357.025985,157803.133985 538355.158985,157806.933985 538352.553985,157810.391985 538349.443985,157813.628985 538345.736985,157816.180985 538342.092985,157818.466985 538338.181985,157820.491985 538334.084985,157822.264985 538329.878985,157823.791985 538325.644985,157825.241985 538320.266985,157826.059985 538315.842985,157829.628985 538291.410985,157832.528985 538267.630985,157832.704985 538263.149985,157832.440985 538258.726985,157831.456985 538252.638985,157830.382985 538248.145985,157828.976985 538243.756985,157827.203985 538239.587985,157825.032985 538235.753985,157821.223985 538230.814985,157817.992985 538227.513985,157814.450985 538224.503985,157810.696985 538221.866985,157806.826985 538219.683985,157805.027985 538218.891985,157800.815985 538217.618985,157796.373985 538216.812985,157787.242985 538215.661985,157782.774985 538214.843985,157774.650985 538213.190985,157770.281985 538212.022985,157766.222985 538210.266985,157761.186985 538207.260985,157757.325985 538204.628985,157753.690985 538201.737985,157750.453985 538198.594985,157747.787985 538195.204985,157746.441985 538192.257985,157745.667985 538187.829985,157745.010985 538176.371985,157744.896985 538167.227985,157744.610985 538162.735985,157743.513985 538157.837985,157741.963985 538153.529985,157740.076985 538149.198985,157737.848985 538145.063985,157735.278985 538141.346985,157732.362985 538138.266985,157731.013985 538137.365985,157726.813985 538136.259985,157722.014985 538135.977985,157717.325985 538135.483985,157701.969985 538133.163985,157697.707985 538131.947985,157693.949985 538130.011985,157692.656985 538129.033985,157689.531985 538125.960985,157686.756985 538122.299985,157684.322985 538118.262985,157682.220985 538114.058985,157679.890985 538108.330985,157678.970985 538103.997985,157678.572985 538099.470985,157678.128985 538090.325985,157676.777985 538069.713985,157674.658985 538041.742985,157674.212985 538032.747985,157674.225985 538028.257985,157674.653985 538020.461985,157675.673985 538011.499985,157676.808985 538005.013985,157679.061985 537996.303985,157687.726985 537967.493985,157691.624985 537951.552985,157693.043985 537946.610985,157695.798985 537938.016985,157698.944985 537929.570985,157700.764985 537925.475985,157702.499985 537922.122985,157704.831985 537918.255985,157707.394985 537914.526985,157716.260985 537902.940985,157719.273985 537899.377985,157722.469985 537896.284985,157725.906985 537893.933985,157699.757985 537858.216985,157696.717985 537861.534985,157693.117985 537864.316985,157689.466985 537866.704985,157685.256985 537868.294985,157680.818985 537869.271985,157676.120985 537869.814985,157671.133985 537870.090985,157655.686985 537870.508985,157650.862985 537870.058985,157646.963985 537869.269985,157642.838985 537867.507985,157639.159985 537865.479985,157635.448985 537862.933985,157631.255985 537859.617985,157620.465985 537850.340985,157617.253985 537847.942985,157613.306985 537845.716985,157610.491985 537844.634985,157606.031985 537843.942985,157603.608985 537843.964985,157599.159985 537844.692985,157596.682985 537845.448985,157592.534985 537847.253985,157590.327985 537848.622985,157586.982985 537851.671985,157585.725985 537853.299985,157583.691985 537857.346985,157583.184985 537859.128985,157582.840985 537863.647985,157583.066985 537865.460985,157584.506985 537869.751985,157585.586985 537871.656985,157588.477985 537875.120985,157590.700985 537877.039985,157594.509985 537879.411985,157598.223985 537881.289985,157602.400985 537882.962985,157606.757985 537884.423985,157614.839985 537886.561985,157621.994985 537888.022985,157628.701985 537889.090985,157633.094985 537890.106985,157635.078985 537890.731985,157639.232985 537892.495985,157641.014985 537893.504985,157644.631985 537896.194985,157646.430985 537897.874985,157649.393985 537901.271985,157651.034985 537903.602985,157653.254985 537907.525985,157654.555985 537910.486985,157655.953985 537914.769985,157656.789985 537918.485985,157657.337985 537922.945985,157657.634985 537927.445985,157657.729985 537931.973985,157657.414985 537943.723985,157656.551985 537953.906985,157655.576985 537960.555985,157653.309985 537971.679985,157650.554985 537983.222985,157646.076985 537999.896985,157644.766985 538005.718985,157644.011985 538010.155985,157643.252985 538016.621985,157642.710985 538026.241985,157642.686985 538033.156985,157643.281985 538046.170985,157648.640985 538127.079985,157649.926985 538144.736985,157650.397985 538149.211985,157651.502985 538157.833985,157653.322985 538169.315985,157655.151985 538178.166985,157656.832985 538184.178985,157658.907985 538190.036985,157661.365985 538195.831985,157664.119985 538201.663985,157672.816985 538218.797985,157675.695985 538224.841985,157688.117985 538254.313985,157690.185985 538259.777985,157691.983985 538265.088985,157695.235985 538275.605985,157696.570985 538280.841985,157697.331985 538286.018985,157697.398985 538291.073985,157696.925985 538296.088985,157695.991985 538301.369985,157694.545985 538306.988985,157692.577985 538312.661985,157690.141985 538318.220985,157686.480985 538324.864985,157683.185985 538329.860985,157679.585985 538334.674985,157675.687985 538339.434985,157671.404985 538344.219985,157648.215985 538367.966985,157626.002985 538389.847985,157620.155985 538396.224985,157616.230985 538401.133985,157612.753985 538406.141985,157609.722985 538411.230985,157607.082985 538416.385985,157604.866985 538421.568985,157603.364985 538425.810985,157601.886985 538431.022985,157600.749985 538436.136985,157600.010985 538441.116985,157599.729985 538445.850985,157600.011985 538450.412985,157600.713985 538454.693985,157602.157985 538458.998985,157604.116985 538462.578985,157607.135985 538465.879985,157610.622985 538468.799985,157614.677985 538471.377985,157619.375985 538473.843985,157624.328985 538476.070985,157629.351985 538477.911985,157634.398985 538479.357985,157649.427985 538482.622985,157654.405985 538483.448985,157659.287985 538484.000985,157664.051985 538484.198985,157668.653985 538483.904985,157673.141985 538483.278985,157681.535985 538481.385985,157686.075985 538480.892985,157689.165985 538481.106985,157693.343985 538482.731985,157696.278985 538484.445985,157699.623985 538487.455985,157702.733985 538490.853985,157705.956985 538494.813985,157709.169985 538499.121985,157712.204985 538503.661985,157714.931985 538508.386985,157717.580985 538514.358985,157718.997985 538518.630985,157720.436985 538524.371985,157721.422985 538530.422985,157721.923985 538536.618985,157722.084985 538543.809985,157721.267985 538570.228985,157721.565985 538588.334985,157721.925985 538592.820985,157722.989985 538601.368985,157724.124985 538608.022985,157725.099985 538612.415985,157728.908985 538626.314985,157734.432985 538644.392985,157736.458985 538650.344985,157751.780985 538692.488985,157755.982985 538704.913985,157759.725985 538717.638985,157761.686985 538725.851985,157762.870985 538732.135985,157763.517985 538736.589985,157764.164985 538743.030985,157764.533985 538749.625985,157764.635985 538758.218985,157763.571985 538781.415985,157763.560985 538787.517985,157763.985985 538795.140985,157765.090985 538805.619985,157767.118985 538817.780985,157771.069985 538836.646985,157772.226985 538842.835985,157774.950985 538861.298985,157776.209985 538868.595985,157777.203985 538872.984985,157778.685985 538878.475985,157785.242985 538900.066985,157787.862985 538909.639985,157789.220985 538918.429985,157790.549985 538939.199985,157791.472985 538968.735985,157785.934985 539003.809985,157781.319985 539027.807985,157779.473985 539056.420985,157781.391985 539100.007985,157797.747985 539180.876985,157803.491985 539200.448985,157827.922985 539240.544985,157833.664985 539260.134985,157826.269985 539283.508985,157788.481985 539323.838985,157766.071985 539330.904985,157748.957985 539338.548985,157724.435985 539343.146985,157719.837985 539350.809985,157723.668985 539360.005985,157755.088985 539363.071985,157784.668985 539359.430985,157814.248985 539355.790985,157845.111985 539361.041985,157836.673985 539450.713985,157848.437985 539555.994985,157862.922985 539563.816985,157877.311985 539544.437985,157890.813985 539516.196985,157928.073985 539487.990985,157945.996985 539481.522985,157939.848985 539455.276985,157917.797985 539437.388985,157895.036985 539412.848985,157894.850985 539376.542985)) - POLYGON((157796.315971774 538569.836655627,157796.287068268 538570.771296678,157796.51655414 538584.714488642,157796.554360558 538585.185598617,157797.206645716 538590.425949682,157797.745244705 538593.583515912,157797.919481214 538594.368563076,157800.953785266 538605.440705901,157805.813578304 538621.345003246,157807.209346082 538625.445501674,157822.267151913 538666.862821146,157822.828057742 538668.461636939,157827.030057742 538680.886636939,157827.934857368 538683.749673937,157831.677857368 538696.474673937,157832.675381246 538700.221017627,157833.391842316 538703.221677889,157833.946541803 538703.097809599,157839.029337825 538702.145455139,157843.947337825 538701.398455139,157848.464141048 538700.851977146,157853.325141048 538700.412977146,157857.130544557 538700.166648434,157861.947544557 538699.977648434,157865.97028183 538699.927794516,157870.75128183 538699.996794516,157875.768289503 538700.237406525,157880.560289503 538700.628406525,157886.070498612 538701.283971654,157890.844498612 538702.031971655,157897.815434141 538703.465980419,157902.543434141 538704.674980419,157909.960878759 538706.987077252,157914.617878759 538708.708077252,157922.824771831 538712.311954722,157927.398771831 538714.655954722,157934.941721853 538719.095272138,157939.393721853 538722.078272138,157946.107333833 538727.144285587,157949.543333833 538730.053285587,157955.261447511 538735.432767872,157960.026447511 538740.410767872,157963.822197432 538744.691792236,157964.38101881 538745.372701376,157972.27211218 538740.875637403,157976.293272272 538738.742988021,157980.331272272 538736.755988021,157985.219584274 538734.563822681,157990.250173409 538732.520388571,157988.035045636 538729.232726279,157985.351045636 538724.703726279,157982.327645477 538719.067018718,157980.102645477 538714.457018718,157978.580290662 538711.09380653,157976.648290662 538706.52980653,157975.252041945 538702.982937432,157972.083041945 538694.290937432,157970.609783042 538689.818497764,157969.336783042 538685.502497764,157967.550938196 538678.071203302,157966.845938196 538674.301203302,157965.846189067 538666.968915013,157965.460189067 538662.499915014,157965.430513151 538649.945373854,157965.671513151 538646.992373853,157968.091866643 538633.263478771,157969.283866643 538628.915478771,157976.48675695 538611.552056761,157977.86075695 538609.146056761,157986.415224019 538597.10069128,157989.402224019 538593.66869128,157993.472939651 538589.771346564,157993.073094374 538586.888417902,157992.362268865 538576.378636575,157992.375268865 538571.653636575,157992.604080307 538566.002356522,157992.978080307 538561.228356522,157993.425111595 538557.038007983,157994.070111595 538552.267007984,157994.795861715 538547.881820104,157996.629861715 538538.529820104,157996.70088911 538538.220715465,157991.747339704 538533.78715219,157988.374339704 538530.44615219,157982.069573379 538523.356572488,157979.173573379 538519.652572488,157973.753039013 538511.720700753,157971.401039013 538507.755700753,157967.612586264 538500.492173534,157965.745586264 538496.379173534,157962.93789653 538489.246017041,157961.50589653 538484.980017041,157959.018966831 538475.597583095,157958.185966831 538471.365583095,157957.257852642 538465.386631263,157956.747852642 538460.918631263,157956.271183239 538451.373906524,157956.329183239 538447.187906524,157956.709321548 538440.614465539,157957.167321548 538436.125465539,157957.762055759 538431.640623683,157958.437055759 538427.510623683,157959.436480734 538422.482038756,157960.464480734 538418.099038756,157961.725695513 538413.410049625,157962.938695513 538409.420049625,157964.812534203 538404.008099305,157966.446534203 538399.814099305,157968.923037128 538394.157807255,157970.767037128 538390.377807255,157974.335673585 538383.895136913,157976.698673585 538380.063136913,157980.651617094 538374.276546409,157982.971617094 538371.199546409,157984.778589215 538368.975203492,157984.697241855 538368.664538577,157983.955241855 538364.774538577,157983.033357126 538358.518822859,157982.564357126 538354.031822858,157982.219073597 538349.261461117,157982.039073597 538344.804461117,157981.984086341 538340.821343012,157982.096086341 538332.041343012,157982.172478513 538329.481278912,157982.383478513 538324.986278912,157982.441623023 538323.912132756,157982.699623023 538319.705132756,157982.992422962 538316.244412123,157983.869422962 538308.122412123,157985.067706085 538300.61456184,157985.998706085 538296.22456184,157988.763354436 538286.483246844,157989.527354436 538284.351246844,157995.271580689 538271.99222302,157997.532580689 538268.09822302,158010.265327737 538251.833856796,158011.555327737 538250.586856796,158024.751755253 538240.406092739,158028.647755253 538238.040092738,158039.143177393 538232.744252177,158041.386177393 538231.825252177,158050.431255267 538228.775737375,158054.799255267 538227.606737375,158061.772571758 538226.09190755,158064.268571758 538225.67290755,158071.444323691 538224.821305917,158075.941323691 538224.506305917,158077.197262624 538224.465217282,158078.030556455 538222.470137458,158079.945556455 538218.388137458,158081.751151683 538214.813369151,158081.327734832 538213.430151094,158074.431914697 538195.053219633,158072.936478878 538190.659157777,158070.635478878 538183.143157777,158069.080309692 538177.205309379,158068.266766762 538173.483837246,158057.843915446 538172.447517446,158053.408915446 538171.400517446,158047.613039717 538169.563495325,158045.073072605 538175.572205208,158043.137072605 538179.630205208,158041.184574479 538183.439140725,158039.007574479 538187.403140725,158037.519521703 538189.989370281,158035.182521703 538193.870370281,158033.712367603 538196.212967163,158029.184367603 538203.140967163,158026.31288683 538207.230193777,158020.89688683 538214.421193777,158019.944393919 538215.658822856,158004.117151368 538235.786967285,157999.997829803 538241.392007344,157995.951261752 538247.246801485,157988.803794101 538258.072398108,157984.787642157 538264.38931453,157980.440001128 538271.591722095,157976.942518167 538277.773081309,157971.061487748 538288.733144043,157957.024068947 538316.780902919,157956.768749663 538317.286273616,157939.881981569 538350.400237931,157938.204571002 538354.054189686,157935.664217882 538360.223089209,157920.118047022 538400.509919791,157918.286839608 538404.845229414,157916.194839608 538409.394229414,157914.665582115 538412.525772164,157910.514582115 538420.547772164,157908.235749676 538424.63415538,157903.597749676 538432.37315538,157900.512564652 538437.107048955,157897.928564652 538440.763048955,157894.970653103 538444.670653984,157893.800653103 538446.115653984,157889.349200165 538451.136402565,157886.224200165 538454.358402565,157882.948159266 538457.536638685,157880.416711585 538459.847204034,157880.146892975 538461.800749577,157879.411892975 538466.267749577,157878.710811231 538469.95128323,157876.888811231 538478.37228323,157876.245699025 538481.097480351,157874.012699024 538489.827480351,157872.555499637 538494.801685834,157870.129499637 538502.133685834,157868.970184323 538505.384619853,157867.313184323 538509.713619853,157864.680256862 538515.777297554,157862.683256862 538519.872297554,157856.601177321 538530.16892626,157854.088177321 538533.73892626,157843.033967768 538546.222509593,157840.219967768 538548.764509593,157827.133718922 538558.24060813,157822.928718922 538560.64160813,157802.651122881 538568.57953785,157798.421122881 538569.55853785,157796.315971774 538569.836655627)) - - #56 Polygon - gid: 2556 - - POLYGON((165866.082985 541862.721985,165851.682985 541848.138985,165804.193985 541863.105985,165801.945985 541874.734985,165814.893985 541890.902985,165824.346985 541905.179985,165834.300985 541928.120985,165826.139985 541936.876985,165823.907985 541948.444985,165827.893985 541968.536985,165846.896985 541979.346985,165875.377985 541971.704985,165921.822985 541960.759985,165900.301985 541937.964985,165886.338985 541910.918985,165892.219985 541895.974985,165878.605985 541877.133985,165866.082985 541862.721985)) - POLYGON( EMPTY) - - #57 Polygon - gid: 2557 - - POLYGON((164054.834985 543306.880985,164069.572985 543304.004985,164103.605985 543312.388985,164098.333985 543300.131985,164075.912985 543252.912985,164094.128985 543217.655985,164100.007985 543181.949985,164113.692985 543153.753985,164056.104985 543132.795985,164041.707985 543117.852985,164019.452985 543100.919985,163992.041985 543102.519985,163994.001985 543156.339985,163998.122985 543200.290985,163968.364985 543209.075985,163940.187985 543232.044985,163942.884985 543247.017985,163977.816985 543288.031985,163999.532985 543335.043985,164021.073985 543335.717985,164039.006985 543320.999985,164054.834985 543306.880985)) - POLYGON( EMPTY) - - #58 Polygon - gid: 2558 - - POLYGON((166001.678985 545096.446985,165986.188985 545050.627985,166031.006985 545078.395985,166053.356985 545047.590985,166042.301985 545030.529985,166001.118985 545004.006985,165970.376985 544983.927985,165949.330985 544958.286985,165946.693985 544938.892985,165963.120985 544919.755985,165995.255985 544914.667985,166022.427985 544917.764985,166062.571985 544932.058985,166097.433985 544907.541985,166121.008985 544885.492985,166149.252985 544896.697985,166161.300985 544855.607985,166120.499985 544852.803985,166098.819985 544833.284985,166055.523985 544765.349985,166034.012985 544756.903985,166001.675985 544764.667985,165941.932985 544777.760985,165896.886985 544801.133985,165869.851985 544814.425985,165811.901985 544827.664985,165792.911985 544829.897985,165725.363985 544817.517985,165706.523985 544809.004985,165670.402985 544807.309985,165679.523985 544816.702985,165708.514985 544857.040985,165719.255985 544868.100985,165743.555985 544882.196985,165762.492985 544890.766985,165804.664985 544895.609985,165839.702985 544901.606985,165850.419985 544915.467985,165839.532985 544931.763985,165828.625985 544950.808985,165805.144985 544992.480985,165777.668985 545014.324985,165794.091985 545037.066985,165845.431985 545028.795985,165878.092985 545037.633985,165894.460985 545035.084985,165902.747985 545013.031985,165924.190985 544999.320985,165937.750985 545007.789985,165924.471985 545029.942985,165905.294985 545049.089985,165910.679985 545063.023985,165933.681985 545062.029985,165942.031985 545072.420985,165942.314985 545083.029985,165940.263985 545106.979985,165926.679985 545138.892985,165924.557985 545160.165985,165927.736985 545178.652985,165939.544985 545184.712985,165957.986985 545197.293985,166012.773985 545218.448985,166021.131985 545230.145985,166042.780985 545212.268985,166042.259985 545193.319985,165989.913985 545147.241985,166007.501985 545109.760985,166001.678985 545096.446985)) - POLYGON((166006.280209145 544840.438913134,166015.082113057 544841.442133229,166013.442395777 544838.869281385,166006.280209145 544840.438913134)) - - #59 Polygon - gid: 2559 - - POLYGON((165400.049985 545327.155985,165416.553985 545307.426985,165440.890985 545317.388985,165451.763985 545309.292985,165455.551985 545256.760985,165447.188985 545219.754985,165398.556985 545171.589985,165389.391985 545144.568985,165415.765985 545137.758985,165442.139985 545130.948985,165489.105985 545131.514985,165494.821985 545142.545985,165481.339985 545161.579985,165465.034985 545177.852985,165498.516985 545230.195985,165501.015485 545233.148485,165500.118985 545227.637985,165495.059985 545208.332985,165494.628985 545189.451985,165502.564985 545178.421985,165543.025985 545176.478985,165553.648985 545165.414985,165533.901985 545125.965985,165527.694985 545101.709985,165538.434985 545096.018985,165543.367985 545074.397985,165455.769985 545021.301985,165446.998985 544999.756985,165456.894985 544967.294985,165470.818985 544959.256985,165498.705985 544959.917985,165512.415985 544957.533985,165543.312985 544958.262985,165559.703985 544955.955985,165576.629985 544937.412985,165585.025985 544918.665985,165601.227985 544929.893985,165617.565985 544930.296985,165631.216985 544927.924985,165645.767985 544866.148985,165647.031985 544810.287985,165637.518985 544792.335985,165631.176985 544780.367985,165623.202985 544753.101985,165617.222985 544732.652985,165603.753985 544721.524985,165569.450985 544664.526985,165591.777985 544638.643985,165605.444985 544628.162985,165630.409985 544619.262985,165676.081985 544636.350985,165692.189985 544644.760985,165703.053985 544639.627985,165714.273985 544611.021985,165711.822985 544589.522985,165717.739985 544537.900985,165709.916985 544513.571985,165688.731985 544478.238985,165664.676985 544458.963985,165649.007985 544415.726985,165633.175985 544388.605985,165620.914985 544351.710985,165616.066985 544331.517985,165621.967985 544306.302985,165608.605985 544308.702985,165557.297985 544334.741985,165548.928985 544345.515985,165535.686985 544374.908985,165530.527985 544420.499985,165516.300985 544469.034985,165507.960985 544482.428985,165470.557985 544508.864985,165473.122985 544522.557985,165487.876985 544573.189985,165495.818985 544598.017985,165498.986985 544643.158985,165497.702985 544705.431985,165497.357985 544732.783985,165492.488985 544763.520985,165489.441985 544787.979985,165475.893985 544776.771985,165461.065985 544768.463985,165445.447985 544782.600985,165426.917985 544783.943985,165387.584985 544770.301985,165336.710985 544775.354985,165307.761985 544818.243985,165296.603985 544828.963985,165272.205985 544863.745985,165246.740985 544798.278985,165233.268985 544781.600985,165225.202985 544770.505985,165186.730985 544815.540985,165165.320985 544803.562985,165100.432985 544802.416985,165068.731985 544809.183985,165045.724985 544775.915985,165029.079985 544781.054985,165025.965985 544805.761985,164992.296985 544823.851985,164975.557985 544831.778985,164939.477985 544836.522985,164925.475985 544847.265985,164976.638985 544865.093985,164981.929985 544881.753985,164984.490985 544917.716985,164982.509985 544967.675985,164975.129985 545022.482985,165012.349985 545052.423985,165001.279985 545060.555985,164980.136985 545083.879985,165029.438985 545065.380985,165085.830985 545066.792985,165152.434985 545059.322985,165208.605985 545056.969985,165236.407985 545062.741985,165253.818985 545076.317985,165267.921985 545098.393985,165269.473985 545169.154985,165280.723985 545180.182985,165294.528985 545180.342985,165328.757985 545168.612985,165334.547985 545185.199985,165365.423985 545204.772985,165367.357985 545210.305985,165371.225985 545221.370985,165365.881985 545235.094985,165359.200985 545246.854985,165349.177985 545264.494985,165335.491985 545269.816985,165294.894985 545285.114985,165266.383985 545324.205985,165274.795985 545337.924985,165288.510985 545338.064985,165318.892985 545349.229985,165343.732985 545360.387985,165374.453985 545370.711985,165396.429985 545376.374985,165420.281985 545364.710985,165400.264985 545340.826985,165400.049985 545327.155985),(165342.461985 545093.777985,165322.031985 545055.610985,165307.902985 545033.527985,165304.183985 545003.597985,165314.784985 544970.879985,165305.688985 544951.716985,165327.686985 544941.061985,165380.740985 544947.170985,165397.607985 544966.537985,165396.440985 545017.969985,165394.198985 545050.695985,165377.954985 545069.612985,165386.777985 545105.268985,165378.710985 545118.851985,165345.544985 545115.710985,165342.702985 545110.200985,165342.461985 545093.777985)) - MULTIPOLYGON(((165057.217205208 544883.120216485,165059.30153673 544912.389570074,165059.432092366 544920.688588389,165057.451092366 544970.647588389,165056.839151797 544977.684729339,165055.105079377 544990.562684236,165055.666345379 544991.014185186,165082.574837416 544991.687947258,165144.075738552 544984.790287485,165149.295992153 544984.388702299,165205.466992153 544982.035702299,165223.851710387 544983.535879454,165231.859198159 544985.198321703,165232.835721359 544980.480345081,165234.671869136 544974.813419038,165232.980105736 544970.113149715,165230.792111361 544955.6486919,165231.453631581 544941.034648987,165234.596064132 544928.226786517,165229.177458967 544925.175179585,165218.024334311 544915.604916041,165208.951612951 544904.043434258,165202.307658569 544890.934658417,165201.450878229 544888.731994426,165192.63043154 544890.308601857,165177.936402401 544890.023568984,165163.580078568 544886.878461346,165150.112731992 544880.994048692,165145.151531196 544878.218464239,165107.693212873 544877.556905356,165084.388987872 544882.531502075,165069.804209359 544884.176320174,165057.217205208 544883.120216485)),((165433.450985222 544894.243752377,165445.727600121 544888.578682779,165458.965228219 544885.199652816,165472.596195875 544884.27804448,165493.116772708 544884.764439621,165499.5672165 544883.642786958,165514.185081919 544882.554852596,165519.617671597 544882.683031962,165523.817930203 544875.323465139,165533.380754455 544864.280599446,165544.902815038 544855.300921817,165557.947005961 544848.72508928,165571.226811748 544845.023247916,165571.608985418 544828.133530063,165571.248634832 544827.453511802,165564.906634832 544815.485511802,165561.598307512 544807.342441787,165560.674592039 544811.451578352,165554.799933434 544824.767735359,165546.463962451 544836.698503939,165535.980603089 544846.794583753,165523.744647759 544854.675766933,165510.216889818 544860.045256316,165495.906770564 544862.700842514,165481.353194207 544862.542518913,165467.1042333 544859.576247815,165458.583903741 544855.97784482,165450.869543946 544857.404772996,165432.339543946 544858.747772996,165417.139633107 544858.30381175,165402.341694045 544854.803041746,165379.029034346 544846.717431606,165369.926358081 544860.203378698,165362.080227598 544869.526690428,165389.320308912 544872.663299482,165402.872948774 544875.510841409,165415.671006543 544880.801612583,165427.278136608 544888.355225886,165433.450985222 544894.243752377)),((165564.244956383 544565.763054216,165569.5976314 544562.284557272,165580.260093066 544557.517948244,165605.225093066 544548.617948244,165617.918405741 544545.31056484,165630.99381411 544544.265257411,165641.322078728 544545.252988251,165641.157714701 544544.741827264,165631.329809072 544528.350541467,165617.778879255 544517.492334349,165607.933959442 544508.007119591,165599.974337952 544496.892436919,165594.164474795 544484.51757388,165591.817078659 544478.040174765,165588.272635808 544490.131939281,165579.967528816 544508.678032292,165571.627528816 544522.072032292,165562.518379322 544533.89247424,165556.154902685 544539.416730683,165559.608905593 544551.269995916,165564.244956383 544565.763054216))) - - #60 Polygon - gid: 2560 - - POLYGON((165039.888985 545214.900985,165061.521985 545211.327985,165071.841985 545218.422985,165077.658585 545221.274385,165042.910985 545188.529985,165018.330985 545164.645985,165012.696985 545156.314985,165001.478985 545145.165985,164983.560985 545134.409985,164959.705985 545136.405985,164912.749985 545126.728985,164872.247985 545143.406985,164854.636985 545152.272985,164842.895985 545158.183985,164822.013985 545183.452985,164819.327985 545202.866985,164836.326985 545230.849985,164837.880985 545249.634985,164820.022985 545295.891985,164797.828985 545328.982985,164765.676985 545371.292985,164741.785985 545411.115985,164755.907985 545414.000985,164781.197985 545405.853985,164828.946985 545376.498985,164869.393985 545349.987985,164902.767985 545314.165985,164924.560985 545268.486985,164951.092985 545252.883985,164976.229985 545250.334985,164992.874985 545239.445985,165003.027985 545231.057985,165018.255985 545218.473985,165039.888985 545214.900985)) - POLYGON( EMPTY) - - #61 Polygon - gid: 2561 - - POLYGON((165238.510985 545710.471985,165192.124985 545700.368985,165160.156985 545630.008985,165164.336985 545624.861985,165176.876985 545609.422985,165172.523985 545591.077985,165168.170985 545572.732985,165167.980985 545556.368985,165147.570985 545540.142985,165125.931985 545556.256985,165090.936985 545602.197985,165089.392985 545634.903985,165089.504985 545645.843985,165092.417985 545662.279985,165111.877985 545683.285985,165129.554985 545701.137985,165121.586985 545728.577985,165086.923985 545743.977985,165052.963985 545734.373985,165039.091985 545717.850985,165027.966985 545701.352985,165001.879985 545672.568985,164978.299985 545619.010985,164961.459985 545577.792985,164935.200985 545546.003985,164911.800985 545505.448985,164900.849985 545521.874985,164920.431985 545580.077985,164932.021985 545610.339985,164933.689985 545628.314985,164928.252985 545677.904985,164913.400985 545715.258985,164921.835985 545729.167985,164935.169985 545781.427985,164942.610985 545813.897985,164966.247985 545817.882985,164988.465985 545801.288985,165002.312985 545787.436985,165021.889985 545790.358985,165045.185985 545849.211985,165056.368985 545885.476985,165064.812985 545891.120985,165084.289985 545868.904985,165091.803985 545835.123985,165099.316985 545801.341985,165105.409985 545799.161985,165129.781985 545790.441985,165134.147985 545761.590985,165141.310985 545750.056985,165158.590985 545709.009985,165176.243985 545724.213985,165199.478985 545747.702985,165208.061985 545779.326985,165211.808985 545797.165985,165223.206985 545816.746985,165225.387985 545823.733985,165238.473985 545865.656985,165240.654985 545872.643985,165224.011985 545880.913985,165213.049985 545897.603985,165243.117985 545899.699985,165243.477985 545927.700985,165258.375985 545942.579985,165264.112985 545953.801985,165275.516985 545970.657985,165295.826985 545982.700985,165309.815985 545985.574985,165329.383985 545988.480985,165354.767985 546001.160985,165354.562985 545987.341985,165383.586985 545955.589985,165373.711985 545912.320985,165357.023985 545909.441985,165340.294985 545903.784985,165317.425985 545856.465985,165311.411985 545823.162985,165287.933985 545774.854985,165249.668985 545718.827985,165238.510985 545710.471985)) - POLYGON( EMPTY) - - #62 Polygon - gid: 2562 - - POLYGON((167132.502985 546739.675985,167129.431985 546728.461985,167149.272985 546730.744985,167174.754985 546732.873985,167203.344985 546749.030985,167214.701985 546712.855985,167222.891985 546698.488985,167172.714985 546705.889985,167136.868985 546710.488985,167119.637985 546696.854985,167075.210985 546707.329985,167010.354985 546685.151985,166970.378985 546680.545985,166953.227985 546678.167985,166944.879985 546686.925985,166934.540985 546732.693985,166943.806985 546763.687985,166970.472985 546795.157985,166972.578985 546790.292985,166993.557985 546761.456985,166991.220985 546735.941985,166999.607985 546730.041985,167040.797985 546729.182985,167063.593985 546739.815985,167081.551985 546762.749985,167104.289985 546789.026985,167117.932985 546804.791985,167133.736985 546789.873985,167149.540985 546774.955985,167144.229985 546759.119985,167132.502985 546739.675985)) - POLYGON( EMPTY) - - #63 Polygon - gid: 2563 - - POLYGON((142722.192985 546177.308985,142726.778985 546176.811985,142731.932985 546176.961985,142741.768985 546177.534985,142746.228985 546178.131985,142757.116985 546179.802985,142766.625985 546181.831985,142771.037985 546182.101985,142773.400985 546181.387985,142776.497985 546178.776985,142779.106985 546174.996985,142781.284985 546170.613985,142783.085985 546166.194985,142784.732985 546161.198985,142785.744985 546156.827985,142788.327985 546142.074985,142788.603985 546137.521985,142789.852985 546132.215985,142789.471985 546113.620985,142789.307985 546106.890985,142788.828985 546101.181985,142787.251985 546087.771985,142785.818985 546077.995985,142784.285985 546069.126985,142781.610985 546055.891985,142777.385985 546039.293985,142776.636985 546036.164985,142776.002985 546033.293985,142774.917985 546027.582985,142773.500985 546018.687985,142772.098985 546007.143985,142768.178985 546010.905985,142764.713985 546009.110985,142761.223985 546006.385985,142754.125985 545999.891985,142750.724985 545997.160985,142743.367985 545991.857985,142735.810985 545986.892985,142731.895985 545984.775985,142730.716985 545984.217985,142726.312985 545982.683985,142721.651985 545982.033985,142718.418985 545982.397985,142714.052985 545984.850985,142711.360985 545988.681985,142712.738985 545993.180985,142714.941985 545996.960985,142717.691985 546000.791985,142724.660985 546009.840985,142731.686985 546016.665985,142732.054985 546018.591985,142730.690985 546022.264985,142728.418985 546025.982985,142719.613985 546037.284985,142713.073985 546046.712985,142710.527985 546050.471985,142708.252985 546054.334985,142706.612985 546057.889985,142705.358985 546062.133985,142704.624985 546066.572985,142703.219985 546077.702985,142699.359985 546095.284985,142697.142985 546106.960985,142694.878985 546120.270985,142689.654985 546153.350985,142686.974985 546168.576985,142684.417985 546181.838985,142681.914985 546192.299985,142679.361985 546200.940985,142677.911985 546205.201985,142674.155985 546214.865985,142667.821985 546229.388985,142659.948985 546245.601985,142657.324985 546251.745985,142655.832985 546255.985985,142653.436985 546264.685985,142652.493985 546269.090985,142651.629985 546274.394985,142650.292985 546287.844985,142648.737985 546299.023985,142644.522985 546326.394985,142643.286985 546335.313985,142642.254985 546344.252985,142641.584985 546354.071985,142641.244985 546363.069985,142641.148985 546370.582985,142641.331985 546384.084985,142641.014985 546394.820985,142640.378985 546405.030985,142638.161985 546425.106985,142637.323985 546438.583985,142637.097985 546450.097985,142637.938985 546492.896985,142637.899985 546522.015985,142638.983985 546578.467985,142639.054985 546593.084985,142638.672985 546602.065985,142638.067985 546607.674985,142636.677985 546616.584985,142634.346985 546627.450985,142633.051985 546631.746985,142629.847985 546640.178985,142628.692985 546643.625985,142624.159985 546661.045985,142621.661985 546670.257985,142617.884985 546683.219985,142611.192985 546706.280985,142608.360985 546717.192985,142606.371985 546725.978985,142604.441985 546737.393985,142603.363985 546746.339985,142602.555985 546756.672985,142602.460985 546761.163985,142602.860985 546774.337985,142602.576985 546792.392985,142603.006985 546798.336985,142603.734985 546802.764985,142604.771985 546807.169985,142606.081985 546811.513985,142607.626985 546815.755985,142611.830985 546826.313985,142613.916985 546830.574985,142616.469985 546834.131985,142618.842985 546836.097985,142622.666985 546837.753985,142626.214985 546838.483985,142629.542985 546838.792985,142632.214985 546838.947985,142636.772985 546838.722985,142641.319985 546838.062985,142646.320985 546836.579985,142650.481985 546834.504985,142654.367985 546831.854985,142657.767985 546828.806985,142658.902985 546827.563985,142661.479985 546824.014985,142663.628985 546820.007985,142665.381985 546815.716985,142666.772985 546811.314985,142667.543985 546808.276985,142668.299985 546803.903985,142668.664985 546799.432985,142669.208985 546770.941985,142669.215985 546758.058985,142668.827985 546740.061985,142668.678985 546721.600985,142668.824985 546701.557985,142669.123985 546692.563985,142669.921985 546681.612985,142671.489985 546668.197985,142672.558985 546661.898985,142675.484985 546648.710985,142678.156985 546634.495985,142679.352985 546625.575985,142679.521985 546623.224985,142679.455985 546618.725985,142678.608985 546609.684985,142678.607985 546605.216985,142679.456985 546599.497985,142680.422985 546595.072985,142681.628985 546590.688985,142683.064985 546586.385985,142684.719985 546582.209985,142687.493985 546577.462985,142693.608985 546570.163985,142695.807985 546566.427985,142696.403985 546564.167985,142696.269985 546560.021985,142695.131985 546555.716985,142689.869985 546543.023985,142687.819985 546538.859985,142685.414985 546534.767985,142683.696985 546530.666985,142683.426985 546528.227985,142684.250985 546524.018985,142686.016985 546519.785985,142690.072985 546511.275985,142691.212985 546507.010985,142691.313985 546505.828985,142690.736985 546501.570985,142689.136985 546497.313985,142687.185985 546493.037985,142685.555985 546488.722985,142684.996985 546485.984985,142684.940985 546481.564985,142686.794985 546468.070985,142686.805985 546461.676985,142686.570985 546457.185985,142684.003985 546424.297985,142682.826985 546413.320985,142681.650985 546404.390985,142679.775985 546393.190985,142678.747985 546388.810985,142676.254985 546380.136985,142675.183985 546375.772985,142674.211985 546369.312985,142673.537985 546360.327985,142673.033985 546348.190985,142672.839985 546339.186985,142673.098985 546325.855985,142673.657985 546316.845985,142674.183985 546312.381985,142676.192985 546300.558985,142677.569985 546296.219985,142679.674985 546292.826985,142682.886985 546290.084985,142686.799985 546287.904985,142702.595985 546281.269985,142715.240985 546276.391985,142719.265985 546274.457985,142724.245985 546271.640985,142728.191985 546268.787985,142730.616985 546265.350985,142731.096985 546260.779985,142730.599985 546256.356985,142729.561985 546251.755985,142727.094985 546242.736985,142725.781985 546238.435985,142722.504985 546229.989985,142721.019985 546225.740985,142720.025985 546221.775985,142719.361985 546217.356985,142718.965985 546212.880985,142718.544985 546197.266985,142717.538985 546187.249985,142717.532985 546182.587985,142718.818985 546179.148985,142722.192985 546177.308985)) - POLYGON( EMPTY) - - #64 Polygon - gid: 2564 - - POLYGON((164037.000985 546901.414985,164106.537985 546859.892985,164138.256985 546862.893985,164190.193985 546854.347985,164219.006985 546863.152985,164224.504985 546879.653985,164241.465985 546901.930985,164267.345985 546890.411985,164324.403985 546869.382985,164341.607985 546857.870985,164388.533985 546827.945985,164369.933985 546821.741985,164340.564985 546826.620985,164308.425985 546822.759985,164308.404985 546843.093985,164299.745985 546854.692985,164283.505985 546842.787985,164277.086985 546808.974985,164262.628985 546820.547985,164248.158985 546840.876985,164213.916985 546848.404985,164193.642985 546839.577985,164196.758985 546825.842985,164191.001985 546805.342985,164179.409985 546796.532985,164106.760985 546814.691985,164077.598985 546829.265985,164036.608985 546881.968985,164022.598985 546855.664985,164029.130985 546839.253985,163976.139985 546849.840985,163958.295985 546855.749985,163940.475985 546855.696985,163921.815985 546832.990985,163901.558985 546850.001985,163887.908985 546861.066985,163923.509985 546885.561985,163987.096985 546921.878985,164037.000985 546901.414985)) - POLYGON( EMPTY) - - #65 Polygon - gid: 2565 - - POLYGON((165997.948985 547128.168985,166014.238985 547102.270985,166026.375985 547112.440985,166060.687985 547117.495985,166091.450985 547096.872985,166113.825985 547082.132985,166119.200985 547070.590985,166109.259985 547010.901985,166075.888985 547034.320985,166069.749985 547061.434985,166058.900985 547078.693985,166028.270985 547076.283985,166018.907985 547042.519985,165995.926985 547026.000985,165977.533985 546969.846985,165948.195985 546992.608985,165951.810985 547025.403985,165967.402985 547043.519985,165969.936985 547070.390985,165940.250985 547086.636985,165949.182985 547103.514985,165974.111985 547121.355985,165997.948985 547128.168985)) - POLYGON( EMPTY) - - #66 Polygon - gid: 2566 - - POLYGON((165100.071985 522081.185985,165136.799985 522076.135985,165166.082985 522092.836985,165183.181985 522109.283985,165190.140985 522118.074985,165206.348985 522101.100985,165220.161985 522076.505985,165220.503985 522074.959985,165225.622985 522051.802985,165237.799985 522011.812985,165240.146985 521960.824985,165236.333985 521894.861985,165237.261985 521814.285985,165243.911985 521772.257985,165226.779985 521761.751985,165193.019985 521743.035985,165165.246985 521728.639985,165152.601985 521722.553985,165133.996985 521739.272985,165111.166985 521751.180985,165092.073985 521752.238985,165109.023985 521784.973985,165126.567985 521832.153985,165144.191985 521855.304985,165157.186985 521856.297985,165161.740985 521873.524985,165162.965985 521907.180985,165164.675985 521942.335985,165164.830985 521979.277985,165164.301985 521990.709985,165142.466985 521995.789985,165110.505985 522011.506985,165079.857985 522028.091985,165054.334985 522038.602985,165032.108985 522040.275985,165001.716985 522035.707985,164983.310985 522019.245985,164959.550985 521989.898985,164922.332985 521959.299985,164891.493985 521946.315985,164842.601985 521944.356985,164828.038985 521942.830985,164784.350985 521938.253985,164721.590985 521932.459985,164654.326985 521933.159985,164615.460985 521948.266985,164665.212985 521993.048985,164721.052985 522031.550985,164773.155985 522075.997985,164829.624985 522115.536985,164873.224985 522125.840985,164944.614985 522131.113985,164945.480985 522178.821985,164954.957985 522264.115985,164978.215985 522266.299985,165016.474985 522263.290985,165041.880985 522239.804985,165055.918985 522218.725985,165063.579985 522211.999985,165067.228985 522203.579985,165070.618985 522174.606985,165076.243985 522151.298985,165077.752985 522136.665985,165079.504985 522123.716985,165083.574985 522101.381985,165100.071985 522081.185985)) - POLYGON((164820.266857 522017.427204655,164860.865764155 522045.854132527,164884.683758641 522051.483045719,164914.706877136 522053.700609857,164906.045863843 522043.003019071,164883.150492441 522024.179453335,164874.91441489 522020.711856107,164839.599301485 522019.296853506,164834.785821452 522018.948590341,164820.266857 522017.427204655)) - - #67 Polygon - gid: 2567 - - POLYGON((154374.974985 540624.728985,154320.493985 540619.008985,154292.141985 540622.113985,154300.537985 540553.371985,154315.955985 540540.285985,154376.940985 540530.412985,154405.631985 540496.147985,154445.668985 540435.041985,154454.521985 540417.090985,154451.884985 540403.553985,154445.292985 540369.710985,154445.579985 540362.563985,154447.014985 540326.827985,154437.326985 540254.795985,154511.563985 540278.324985,154528.041985 540293.316985,154555.203985 540318.597985,154568.395985 540311.500985,154566.744985 540300.457985,154553.075985 540281.217985,154539.316985 540265.833985,154513.536985 540265.913985,154479.903985 540247.544985,154439.739985 540232.015985,154403.476985 540219.274985,154352.216985 540193.238985,154334.278985 540175.092985,154332.774985 540144.333985,154350.235985 540125.468985,154371.989985 540117.381985,154383.699985 540112.299985,154407.119985 540102.135985,154415.975985 540097.389985,154420.402985 540095.016985,154432.473985 540079.628985,154446.542985 540043.686985,154432.038985 540027.748985,154407.872985 540019.283985,154375.098985 540051.097985,154358.677985 540070.534985,154354.465985 540108.800985,154334.695985 540111.082985,154308.823985 540096.567985,154262.980985 540157.924985,154255.293985 540164.418985,154215.750985 540176.802985,154206.665985 540194.763985,154166.906985 540153.065985,154162.757985 540169.964985,154166.319985 540198.641985,154180.928985 540222.157985,154211.961985 540249.040985,154209.983985 540262.387985,154208.994985 540269.061985,154197.947985 540292.833985,154192.961985 540297.380985,154158.065985 540329.211985,154140.829985 540316.837985,154117.762985 540294.223985,154092.528985 540254.239985,154073.822985 540242.348985,154048.200985 540266.020985,154064.357985 540290.020985,154062.051985 540304.767985,154040.168985 540346.540985,154041.641985 540357.709985,154049.520985 540373.836985,154104.527985 540418.794985,154090.465985 540443.160985,154069.529985 540448.440985,154046.019985 540476.715985,154023.556985 540493.431985,154012.295985 540517.485985,153979.630985 540532.522985,153949.623985 540550.285985,153937.859985 540571.634985,153958.642985 540598.024985,154012.244985 540548.784985,154030.269985 540532.534985,154070.531985 540499.593985,154087.180985 540483.491985,154132.461985 540455.676985,154148.344985 540445.370985,154180.755985 540450.271985,154197.244985 540479.738985,154193.874985 540497.126985,154183.840985 540529.466985,154188.908985 540557.187985,154202.879985 540575.534985,154249.118985 540618.863985,154258.226985 540629.278985,154262.780985 540634.485985,154280.201985 540662.114985,154287.169985 540673.165985,154298.532985 540705.614985,154310.100985 540727.104985,154343.491985 540740.559985,154373.404985 540748.738985,154410.171985 540758.451985,154418.213985 540774.691985,154432.851985 540756.015985,154427.625985 540739.482985,154393.172985 540712.859985,154367.238985 540699.027985,154362.824985 540688.093985,154374.974985 540624.728985)) - POLYGON ((154211.34039180956 540382.1317209445, 154217.6503256708 540384.9741471609, 154228.8660526432 540392.7357234654, 154238.49064413007 540402.4001860456, 154246.20578777403 540413.6479038943, 154262.69478777403 540443.1149038943, 154268.08157501929 540455.0980127293, 154271.29462502326 540467.8372703156, 154272.15180599023 540479.7780934644, 154278.51581715897 540475.2995723275, 154290.83214622788 540469.6192125722, 154303.9701183911 540466.2499194533, 154337.37449228237 540460.8420095831, 154345.30698193613 540451.368420026, 154375.74125760913 540404.9184650026, 154371.67648756542 540384.050137885, 154370.35338301142 540366.7016572024, 154370.6403821483 540359.5546786959, 154371.8131743791 540330.3484744037, 154365.60057125118 540284.1566671671, 154318.252931651 540260.1078348488, 154307.99700814812 540253.816156007, 154298.8791629049 540245.9654179738, 154285.6658256004 540232.5988654748, 154284.9711923334 540232.8950064374, 154286.85393501408 540245.0165815549, 154286.15170738756 540260.035760671, 154284.17376698626 540273.3823585154, 154283.18482683104 540280.055954669, 154277.00972538022 540300.6688686018, 154265.96272538023 540324.4408686018, 154258.40762354335 540337.2145224822, 154248.48523614364 540348.2504649211, 154243.50247502665 540352.7945112105, 154211.34039180956 540382.1317209445)) - - #68 Polygon - gid: 2568 - - POLYGON((151090.928985 540950.574985,151117.445985 540939.721985,151149.481985 540941.866985,151212.221985 540950.239985,151224.726985 540959.131985,151249.097985 540961.645985,151268.213985 540941.565985,151298.490985 540913.861985,151331.140985 540899.607985,151337.670985 540896.756985,151348.111985 540887.739985,151353.647985 540867.974985,151359.183985 540848.209985,151369.021985 540811.954985,151379.284985 540781.097985,151400.204985 540762.390985,151448.885985 540728.437985,151463.818985 540705.351985,151467.765985 540683.006985,151476.666985 540635.436985,151502.123985 540589.717985,151524.591985 540550.077985,151549.839985 540521.107985,151566.568985 540511.980985,151568.176985 540482.157985,151563.945985 540460.707985,151540.525985 540413.008985,151531.631985 540402.717985,151516.708985 540476.937985,151515.687985 540483.808985,151509.564985 540525.034985,151508.544985 540531.905985,151482.998985 540568.953985,151467.271985 540597.511985,151456.715985 540625.756985,151448.935985 540653.713985,151423.440985 540680.452985,151380.551985 540719.880985,151350.280985 540763.588985,151319.225985 540796.248985,151296.298985 540802.965985,151285.001985 540839.802985,151267.089985 540869.796985,151235.102985 540900.984985,151195.281985 540918.277985,151141.469985 540910.674985,151100.987985 540911.757985,151081.554985 540915.883985,151051.966985 540895.325985,151048.320985 540889.129985,151026.445985 540851.954985,151007.887985 540827.846985,151044.137985 540791.294985,151075.221985 540763.652985,151091.194985 540751.370985,151090.038985 540734.632985,151083.686985 540723.848985,151064.053985 540703.043985,151053.089985 540686.671985,151050.667985 540661.563985,151063.916985 540610.385985,151108.013985 540532.246985,151121.916985 540503.720985,151119.042985 540462.231985,151138.133985 540416.520985,151140.118985 540378.023985,151158.122985 540338.727985,151164.124985 540325.628985,151178.649985 540301.860985,151189.543985 540284.034985,151224.790985 540245.614985,151236.485985 540217.614985,151242.398985 540178.166985,151252.590985 540145.914985,151264.740985 540108.947985,151277.958985 540082.053985,151275.701985 540049.776985,151262.771985 540058.740985,151247.206985 540085.158985,151233.574985 540106.623985,151183.995985 540125.600985,151183.849985 540187.672985,151167.715985 540232.645985,151145.098985 540276.657985,151124.279985 540320.641985,151108.773985 540335.412985,151085.813985 540350.102985,151070.872985 540391.428985,151052.396985 540415.220985,151020.243985 540439.842985,150982.357985 540466.123985,150936.027985 540486.159985,150893.723985 540505.026985,150878.560985 540522.467985,150839.929985 540557.935985,150820.111985 540562.409985,150778.385985 540607.088985,150766.205985 540627.265985,150708.205985 540687.434985,150691.026985 540725.163985,150659.099985 540758.887985,150603.544985 540779.848985,150572.506985 540787.861985,150565.131985 540805.432985,150578.367985 540817.865985,150622.790985 540865.068985,150638.099985 540848.467985,150624.889985 540826.636985,150650.151985 540813.062985,150687.839985 540773.076985,150744.405985 540759.742985,150794.881985 540710.287985,150801.830985 540687.127985,150805.950985 540664.161985,150796.514985 540650.612985,150798.383985 540636.310985,150816.631985 540612.414985,150843.735985 540593.600985,150877.839985 540583.571985,150887.979985 540551.552985,150921.691985 540521.649985,150965.257985 540501.931985,151002.649985 540474.224985,151015.114985 540468.395985,151040.044985 540456.737985,151051.554985 540457.180985,151063.064985 540457.624985,151084.186985 540492.617985,151070.647985 540537.901985,151049.601985 540575.147985,151021.902985 540596.656985,151007.014985 540622.638985,150965.907985 540664.320985,150940.152985 540688.413985,150936.950985 540716.690985,150931.070985 540753.445985,150916.065985 540779.631985,150873.511985 540808.008985,150882.496985 540821.066985,150907.599985 540814.139985,150933.307985 540820.832985,150937.628985 540842.986985,150925.954985 540877.445985,150903.298985 540910.400985,150878.953985 540924.700985,150854.609985 540939.000985,150848.572985 540949.540985,150839.517985 540965.350985,150833.587985 541002.358985,150828.749985 541024.918985,150841.377985 541046.423985,150859.617985 541023.612985,150895.948985 540986.867985,150908.718985 540964.327985,150920.310985 540934.969985,150933.505985 540917.905985,150946.847985 540895.692985,150973.058985 540868.670985,150994.634985 540855.997985,151011.929985 540871.185985,151031.681985 540896.146985,151051.614985 540918.938985,151063.916985 540934.921985,151046.624985 540959.176985,151017.447985 540963.574985,150995.564985 540966.871985,150975.912985 540968.450985,150943.158985 540971.082985,150926.615985 540975.000985,150961.104985 540994.376985,151021.350985 541033.454985,151067.459985 541065.693985,151094.333985 541073.195985,151089.675985 541035.539985,151088.718985 540990.623985,151085.166985 540969.224985,151090.928985 540950.574985)) - POLYGON( EMPTY) - - #69 Polygon - gid: 2569 - - POLYGON((157856.121985 509999.999985,157796.029985 509999.999985,157791.006985 510004.813985,157791.813985 510018.198985,157800.933985 510029.066985,157811.325985 510037.421985,157822.700985 510041.583985,157836.355985 510047.726985,157846.509985 510047.168985,157860.168985 510044.667985,157865.721985 510035.395985,157865.310985 510029.671985,157864.898985 510023.947985,157864.938985 510012.985985,157856.897985 510002.060985,157856.121985 509999.999985)) - POLYGON( EMPTY) - - #70 Polygon - gid: 2570 - - POLYGON((166912.823985 510008.038985,166922.037985 510006.063985,166931.908985 510006.063985,166939.147985 510009.354985,166945.070985 510014.619985,166951.361985 510005.018985,166956.501985 509999.999985,166817.427985 509999.999985,166829.662985 510020.674985,166846.946985 510042.171985,166864.977985 510054.010985,166876.718985 510056.295985,166886.332985 510051.098985,166888.756985 510038.698985,166892.223985 510028.810985,166906.901985 510012.644985,166912.823985 510008.038985)) - POLYGON( EMPTY) - - #71 Polygon - gid: 2571 - - POLYGON((160978.349985 510216.528985,160976.017985 510196.815985,160972.315985 510179.827985,160967.100985 510160.634985,160968.288985 510153.324985,160933.313985 510163.101985,160874.570985 510167.697985,160863.688985 510172.638985,160844.319985 510175.223985,160810.435985 510182.778985,160768.056985 510200.089985,160716.009985 510219.903985,160738.406985 510250.985985,160748.943985 510253.617985,160780.763985 510240.957985,160797.438985 510248.395985,160805.905985 510245.900985,160816.794985 510243.385985,160819.530985 510230.970985,160825.180985 510216.642985,160843.337985 510214.067985,160859.081985 510213.938985,160867.450985 510238.436985,160922.763985 510238.573985,160931.321985 510255.515985,160938.802985 510279.789985,160937.700985 510301.677985,160953.256985 510301.882985,160978.462985 510235.998985,160978.349985 510216.528985)) - POLYGON( EMPTY) - - #72 Polygon - gid: 2572 - - POLYGON((164410.173985 510269.608985,164385.850985 510262.988985,164380.056985 510272.454985,164384.086985 510288.828985,164411.898985 510335.704985,164423.329985 510359.345985,164423.798985 510376.111985,164433.397985 510390.825985,164433.551985 510400.397985,164424.317985 510428.944985,164425.629985 510436.100985,164434.162985 510445.550985,164452.393985 510464.357985,164473.162985 510490.376985,164484.334985 510507.267985,164489.125985 510507.205985,164520.300985 510472.028985,164486.035985 510438.688985,164469.919985 510416.977985,164461.182985 510395.537985,164460.812985 510357.662985,164462.293985 510314.057985,164459.977985 510300.216985,164455.056985 510293.082985,164433.141985 510278.881985,164410.173985 510269.608985)) - POLYGON( EMPTY) - - #73 Polygon - gid: 2573 - - POLYGON((165811.803985 510461.433985,165827.476985 510461.338985,165854.112985 510465.702985,165860.990985 510489.889985,165940.128985 510487.374985,165967.267985 510478.917985,165996.204985 510476.027985,166010.928985 510478.380985,166019.470985 510482.908985,166045.518985 510470.094985,166044.175985 510465.335985,166021.852985 510442.020985,166001.663985 510418.254985,165994.615985 510423.284985,165980.675985 510431.298985,165958.830985 510417.903985,165925.719985 510435.804985,165903.141985 510416.529985,165886.871985 510433.864985,165815.334985 510412.070985,165802.365985 510419.692985,165789.470985 510429.714985,165779.722985 510425.222985,165778.145985 510413.260985,165776.187985 510391.342985,165769.739985 510377.140985,165758.796985 510372.686985,165747.033985 510380.266985,165729.008985 510378.757985,165718.359985 510383.904985,165721.532985 510409.525985,165740.376985 510475.641985,165741.587985 510513.924985,165761.560985 510539.628985,165782.635985 510526.535985,165800.213985 510512.079985,165787.945985 510464.582985,165790.350985 510462.507985,165811.803985 510461.433985)) - POLYGON( EMPTY) - - #74 Polygon - gid: 2574 - - POLYGON((156787.353985 510717.616985,156798.209985 510707.476985,156835.337985 510722.081985,156846.303985 510701.194985,156809.056985 510660.576985,156747.023985 510612.786985,156725.321985 510631.224985,156706.853985 510627.359985,156670.055985 510617.736985,156669.633985 510645.101985,156641.531985 510673.194985,156607.232985 510646.565985,156586.956985 510678.596985,156610.864985 510701.168985,156633.590985 510723.694985,156644.244985 510734.684985,156664.910985 510709.964985,156667.638985 510693.338985,156677.663985 510681.579985,156691.318985 510674.355985,156706.414985 510680.618985,156733.650985 510698.475985,156758.149985 510713.483985,156755.055985 510727.250985,156776.436985 510742.942985,156787.353985 510717.616985)) - POLYGON( EMPTY) - - #75 Polygon - gid: 2575 - - POLYGON((158008.700985 510611.812985,158026.072985 510610.072985,158045.611985 510612.296985,158069.846985 510619.338985,158090.368985 510618.785985,158109.698985 510613.651985,158128.025985 510597.619985,158093.668985 510549.634985,158057.574985 510514.193985,158039.492985 510494.646985,158015.478985 510474.555985,157995.775985 510460.308985,157942.439985 510496.109985,157921.521985 510507.754985,157902.162985 510523.671985,157865.738985 510559.611985,157883.243985 510610.932985,157890.286985 510634.366985,157893.710985 510647.347985,157892.650985 510661.155985,157898.540985 510682.313985,157906.960985 510705.486985,157913.131985 510731.023985,157917.901985 510747.795985,157920.336985 510757.682985,157923.967985 510759.058985,157940.909985 510743.266985,157936.142985 510728.843985,157938.154985 510709.160985,157948.143985 510678.120985,157961.674985 510650.062985,157989.091985 510622.655985,158008.700985 510611.812985)) - POLYGON( EMPTY) - - #76 Polygon - gid: 2576 - - POLYGON((166305.250985 510805.834985,166318.509985 510802.975985,166330.838985 510809.846985,166344.515985 510802.850985,166343.020985 510793.191985,166337.462985 510785.456985,166339.794985 510768.209985,166353.422985 510755.048985,166364.727985 510750.532985,166376.738985 510747.721985,166389.828985 510743.756985,166403.788985 510746.369985,166415.423985 510749.148985,166427.334985 510741.479985,166440.525985 510736.196985,166441.389985 510724.034985,166448.601985 510697.764985,166461.649985 510665.331985,166471.117985 510635.466985,166472.253985 510610.734985,166471.971985 510578.827985,166450.104985 510554.829985,166436.845985 510555.257985,166419.250985 510572.731985,166370.997985 510552.013985,166344.073985 510538.399985,166314.873985 510529.684985,166260.933985 510516.455985,166239.242985 510517.141985,166214.020985 510520.366985,166199.574985 510535.799985,166179.736985 510555.676985,166167.104985 510575.319985,166158.002985 510592.441985,166148.310985 510604.147985,166128.052985 510621.052985,166117.555985 510630.988985,166109.528985 510643.243985,166108.834985 510660.055985,166116.902985 510679.485985,166129.322985 510693.478985,166155.820985 510708.809985,166202.941985 510748.637985,166216.897985 510760.809985,166224.033985 510771.474985,166226.512985 510787.120985,166225.393985 510816.346985,166224.544985 510828.097985,166226.469985 510838.410985,166239.357985 510850.789985,166263.214985 510837.894985,166280.875985 510820.358985,166305.250985 510805.834985)) - POLYGON((166205.479485534 510652.581119516,166251.356748955 510691.357878233,166252.239160589 510692.115525049,166266.195160589 510704.287525049,166279.231532196 510719.102325104,166281.223092437 510722.078781098,166287.694391735 510714.260673777,166301.322391735 510701.099673777,166312.697826602 510692.069135259,166325.600553693 510685.400493874,166336.905553693 510680.884493874,166347.637140521 510677.506256777,166357.30243744 510675.244234494,166368.086801066 510671.977618621,166378.921550784 510670.069434357,166379.021705943 510669.772400869,166390.259992941 510641.837747114,166389.661020874 510641.648122609,166341.408020874 510620.930122609,166337.155021141 510618.944200876,166316.207348437 510608.352104004,166295.204881635 510602.083730778,166253.041853345 510591.743080032,166249.594867469 510591.852094477,166238.483846016 510602.984959354,166231.869257152 510613.27077071,166224.227146735 510627.646535877,166215.772193165 510640.272086276,166206.080193165 510651.978086276,166205.479485534 510652.581119516)) - - #77 Polygon - gid: 2577 - - POLYGON((144747.238985 510959.113985,144755.551985 510958.391985,144759.999985 510957.706985,144761.994985 510957.120985,144771.077985 510953.546985,144775.163985 510951.478985,144778.521985 510947.974985,144780.605985 510943.978985,144783.010985 510937.753985,144785.651985 510927.645985,144788.862985 510919.396985,144791.739985 510910.868985,144793.064985 510907.386985,144797.114985 510897.469985,144801.720985 510888.417985,144806.413985 510877.909985,144812.059985 510868.414985,144816.693985 510858.877985,144823.432985 510847.907985,144827.479985 510839.866985,144834.878985 510826.552985,144841.353985 510811.739985,144851.055985 510795.249985,144855.529985 510786.973985,144859.568985 510778.929985,144864.231985 510768.907985,144870.294985 510757.055985,144880.482985 510735.040985,144889.839985 510714.509985,144891.739985 510708.263985,144893.819985 510702.414985,144900.412985 510685.150985,144904.567985 510672.305985,144908.464985 510662.652985,144909.972985 510658.420985,144911.556985 510652.787985,144917.287985 510628.138985,144918.793985 510620.165985,144920.156985 510611.264985,144921.001985 510603.657985,144921.262985 510599.163985,144921.704985 510582.021985,144921.011985 510568.365985,144920.854985 510559.601985,144920.289985 510555.194985,144918.636985 510551.096985,144916.208985 510547.234985,144912.630985 510542.505985,144909.599985 510539.168985,144904.439985 510534.334985,144900.938985 510531.501985,144888.767985 510523.199985,144879.383985 510515.890985,144875.229985 510513.144985,144871.087985 510511.405985,144865.524985 510509.747985,144861.155985 510508.663985,144853.171985 510506.969985,144848.717985 510506.417985,144846.972985 510506.478985,144842.481985 510507.088985,144838.009985 510507.423985,144833.879985 510506.773985,144826.316985 510504.723985,144817.749985 510501.823985,144813.612985 510500.064985,144808.494985 510497.375985,144804.803985 510494.824985,144801.777985 510491.930985,144795.754985 510485.194985,144790.391985 510479.676985,144787.152985 510476.557985,144784.745985 510474.805985,144780.836985 510471.086985,144779.143985 510466.926985,144777.440985 510461.086985,144776.698985 510456.647985,144776.804985 510454.324985,144777.616985 510449.872985,144778.467985 510446.885985,144780.081985 510442.676985,144781.219985 510440.385985,144790.599985 510424.970985,144792.765985 510421.025985,144795.397985 510415.850985,144801.206985 510403.663985,144814.508985 510378.077985,144817.035985 510373.557985,144824.707985 510361.955985,144828.960985 510354.013985,144830.830985 510349.922985,144832.887985 510344.566985,144834.325985 510340.296985,144844.487985 510308.646985,144847.131985 510299.010985,144851.930985 510282.590985,144853.658985 510277.818985,144856.216985 510274.101985,144858.400985 510272.120985,144864.813985 510267.654985,144868.883985 510265.877985,144871.922985 510266.041985,144881.496985 510268.362985,144886.044985 510268.061985,144890.714985 510268.243985,144895.858985 510267.153985,144899.844985 510265.018985,144903.565985 510262.479985,144905.971985 510256.254985,144907.871985 510250.007985,144910.335985 510242.811985,144916.629985 510224.581985,144919.195985 510215.951985,144920.522985 510210.838985,144923.217985 510197.609985,144925.864985 510187.491985,144928.414985 510179.174985,144931.325985 510170.656985,144934.161985 510161.574985,144945.007985 510123.082985,144951.327985 510101.949985,144953.064985 510095.110985,144954.861985 510090.194985,144957.165985 510086.165985,144960.615985 510082.533985,144965.980985 510081.919985,144970.351985 510080.854985,144973.430985 510080.840985,144983.058985 510081.509985,144987.516985 510082.067985,144997.989985 510084.944985,145001.100985 510085.352985,145018.225985 510086.588985,145031.277985 510087.813985,145034.023985 510087.583985,145038.746985 510086.578985,145043.185985 510085.397985,145047.248985 510083.622985,145048.202985 510082.830985,145050.585985 510078.877985,145051.978985 510074.620985,145056.128985 510060.096985,145057.553985 510055.831985,145063.088985 510042.322985,145066.150985 510034.166985,145069.126985 510025.644985,145071.569985 510017.003985,145072.764985 510011.254985,145073.282985 510006.603985,145072.958985 510002.462985,145072.176985 510001.292985,145067.525985 509999.999985,144820.948985 509999.999985,144819.191985 510006.807985,144817.797985 510013.075985,144817.072985 510017.518985,144816.707985 510022.887985,144816.139985 510027.720985,144815.755985 510030.023985,144814.530985 510034.358985,144813.610985 510047.578985,144813.566985 510049.397985,144814.106985 510057.207985,144813.995985 510061.708985,144813.679985 510066.204985,144813.429985 510068.372985,144811.294985 510078.502985,144810.411985 510093.065985,144808.486985 510108.070985,144806.898985 510131.620985,144806.743985 510136.109985,144806.915985 510141.233985,144807.389985 510145.737985,144808.036985 510148.932985,144809.863985 510153.023985,144814.180985 510159.646985,144816.820985 510162.931985,144819.994985 510166.132985,144823.469985 510168.999985,144830.897985 510173.260985,144834.408985 510176.059985,144850.660985 510190.157985,144857.639985 510195.848985,144860.332985 510197.867985,144867.177985 510202.050985,144870.801985 510204.797985,144871.522985 510205.641985,144873.715985 510209.796985,144873.726985 510211.088985,144872.243985 510215.158985,144869.975985 510219.190985,144867.963985 510222.524985,144865.436985 510226.291985,144864.099985 510227.714985,144858.836985 510230.898985,144855.291985 510233.691985,144848.874985 510236.316985,144840.763985 510240.217985,144825.553985 510248.383985,144822.676985 510250.294985,144819.567985 510253.537985,144812.468985 510261.818985,144809.626985 510264.829985,144802.536985 510270.407985,144801.628985 510271.304985,144799.024985 510274.943985,144796.656985 510278.806985,144788.849985 510289.744985,144786.429985 510293.536985,144777.870985 510307.318985,144775.474985 510311.721985,144773.491985 510315.763985,144769.628985 510325.155985,144765.706985 510336.945985,144761.518985 510347.475985,144757.242985 510359.461985,144752.043985 510369.948985,144748.608985 510378.269985,144745.802985 510386.171985,144744.461985 510390.470985,144743.491985 510393.920985,144742.009985 510401.644985,144740.079985 510408.376985,144736.020985 510433.511985,144734.117985 510442.308985,144731.955985 510450.373985,144731.311985 510454.824985,144730.521985 510463.096985,144730.379985 510467.588985,144730.705985 510472.313985,144731.923985 510481.243985,144733.045985 510486.401985,144735.374985 510494.319985,144737.113985 510498.490985,144741.895985 510503.842985,144744.758985 510507.317985,144748.950985 510512.901985,144751.358985 510516.696985,144755.859985 510524.387985,144758.284985 510528.189985,144760.097985 510533.152985,144760.327985 510534.309985,144760.479985 510540.156985,144760.990985 510548.451985,144760.920985 510552.976985,144760.519985 510556.218985,144758.114985 510562.443985,144757.126985 510566.831985,144756.006985 510573.652985,144754.061985 510578.134985,144752.979985 510580.233985,144750.126985 510585.466985,144746.174985 510592.112985,144743.798985 510597.851985,144739.787985 510605.468985,144728.326985 510634.151985,144724.192985 510643.531985,144716.312985 510659.718985,144710.915985 510671.895985,144704.293985 510683.664985,144701.675985 510689.308985,144688.772985 510721.296985,144686.795985 510726.842985,144684.601985 510737.943985,144680.325985 510749.929985,144677.804985 510758.571985,144676.148985 510765.873985,144674.837985 510773.544985,144674.582985 510778.037985,144673.654985 510784.687985,144673.065985 510793.668985,144672.865985 510800.351985,144672.925985 510810.570985,144673.228985 510816.790985,144674.961985 510830.004985,144676.832985 510853.625985,144678.406985 510863.803985,144680.015985 510872.072985,144681.138985 510876.426985,144685.448985 510891.059985,144686.723985 510895.230985,144689.315985 510902.640985,144690.423985 510907.002985,144690.926985 510909.521985,144692.208985 510918.431985,144693.494985 510923.676985,144693.735985 510930.081985,144694.095985 510934.577985,144694.246985 510938.376985,144693.763985 510942.859985,144693.358985 510944.665985,144696.127985 510949.162985,144701.143985 510951.096985,144705.788985 510953.835985,144710.002985 510955.607985,144714.455985 510956.265985,144719.900985 510958.442985,144721.946985 510958.696985,144734.595985 510958.578985,144747.238985 510959.113985)) - POLYGON((144749.805324897 510825.061482914,144752.789028351 510819.62041865,144757.866524274 510811.355078054,144760.486491976 510806.149454063,144761.923067335 510803.434986066,144767.587610419 510793.24202396,144772.632499225 510781.700720814,144776.712345391 510773.707651011,144785.72556147 510758.388342297,144789.013934301 510752.305514056,144792.041340364 510746.276186408,144796.232065554 510737.269227828,144797.461513493 510734.750933975,144802.851102428 510724.215323211,144812.32672505 510703.739682063,144819.532622703 510687.928601084,144819.986383875 510686.436920937,144821.075239258 510683.134446422,144823.155239258 510677.285446422,144823.755352034 510675.657795175,144829.653168763 510660.214156769,144833.20844985 510649.223161446,144835.021528296 510644.229475959,144838.337343242 510636.016090875,144838.465649457 510635.656016669,144838.893478571 510634.134576393,144843.881842558 510612.679649866,144844.855340723 510607.525798029,144845.786560233 510601.444517867,144846.242579414 510597.339265905,144846.319063859 510596.02232684,144846.597559236 510585.2214948,144846.505245047 510585.158526071,144842.681852769 510582.369811905,144842.420062933 510582.165909314,144830.869719025 510581.69593476,144830.480274411 510583.247819704,144830.403008562 510583.447811353,144830.015933856 510585.805165431,144824.807966602 510603.50972512,144822.862966602 510607.99172512,144820.726062732 510612.499221354,144819.644062732 510614.598221354,144818.829365104 510616.134669394,144815.976365104 510621.367669394,144814.590794636 510623.799963586,144813.402521291 510625.798259296,144813.0949506 510626.541166785,144810.160479719 510632.796970601,144807.977881994 510636.941784083,144797.972947012 510661.980746658,144796.957259087 510664.399058888,144792.823259087 510673.779058888,144791.627021635 510676.359575578,144784.335439559 510691.337854647,144779.483161999 510702.285822749,144776.279551757 510708.673751936,144771.096265127 510717.885787628,144770.516318056 510719.136063131,144759.249566685 510747.067617255,144758.178740747 510752.485684136,144755.241424314 510763.144572561,144751.706995828 510773.051883092,144750.442994832 510777.384884522,144749.737494578 510780.495731656,144749.478023586 510782.013963529,144749.462483862 510782.287767375,144748.863209928 510788.403706614,144748.314579795 510792.335161771,144747.992515989 510797.245951313,144747.872572957 510801.253847731,144747.915266496 510808.525268963,144747.990947665 510810.078855983,144749.325187901 510820.252341544,144749.727807841 510824.08284561,144749.805324897 510825.061482914)) - - #78 Polygon - gid: 2578 - - POLYGON((164261.154985 510650.157985,164222.546985 510625.817985,164154.918985 510621.315985,164140.780985 510624.098985,164100.762985 510630.061985,164079.139985 510626.535985,164059.912985 510617.594985,164015.891985 510599.380985,163982.805985 510602.715985,163983.143985 510614.572985,163970.818985 510623.941985,163962.940985 510638.400985,163944.888985 510642.579985,163933.276985 510650.021985,163930.136985 510664.321985,163942.960985 510666.830985,163941.293985 510678.107985,163929.785985 510687.883985,163929.852985 510705.547985,163938.943985 510721.193985,163934.579985 510733.094985,163953.814985 510756.399985,163950.048985 510774.682985,163998.911985 510843.113985,164035.797985 510852.162985,164061.288985 510859.960985,164064.966985 510901.893985,164073.003985 510919.767985,164104.848985 510938.739985,164122.787985 510951.327985,164144.387985 510967.544985,164162.825985 510996.374985,164172.641985 511008.200985,164185.573985 511018.018985,164202.763985 511022.535985,164212.601985 511010.055985,164213.482985 511003.929985,164225.152985 510978.161985,164230.919985 510950.063985,164230.938985 510918.038985,164233.340985 510891.355985,164227.100985 510877.482985,164217.221985 510859.031985,164207.163985 510838.163985,164213.661985 510828.524985,164218.967985 510814.960985,164226.671985 510801.335985,164224.750985 510783.190985,164225.316985 510765.035985,164230.416985 510743.577985,164239.929985 510713.941985,164248.933985 510702.513985,164260.336985 510694.005985,164268.258985 510684.930985,164271.205985 510666.516985,164261.154985 510650.157985)) - MULTIPOLYGON(((164014.772946481 510692.038226625,164012.326520825 510702.178274868,164011.527687693 510703.983065768,164012.792704249 510710.315333713,164019.220139731 510719.696228589,164024.701026238 510731.901634901,164027.926009408 510744.88668568,164028.625355324 510755.663210165,164043.789058394 510776.899470009,164053.667376006 510779.322852758,164057.737747794 510780.44376297,164083.228747794 510788.24176297,164096.890697277 510793.949485374,164109.165116963 510802.229918941,164119.573627528 510812.760344693,164127.710570996 510825.130353169,164132.468221954 510836.901739132,164133.325767413 510825.014170419,164137.645626258 510810.01797644,164144.975438653 510796.240427145,164146.837342966 510793.478516453,164149.121889886 510787.638411963,164149.973044149 510785.847891558,164149.787406278 510780.853921626,164150.353406278 510762.698921626,164152.349592409 510747.69356249,164157.449592409 510726.23556249,164159.005822839 510720.655377845,164166.517509919 510697.254099772,164159.752582182 510696.803758128,164155.266414285 510697.686839558,164151.834541591 510698.279972367,164111.816541591 510704.242972367,164100.248309551 510705.06021904,164088.69238323 510704.084282809,164067.06938323 510700.558282809,164047.515386117 510694.54249017,164029.749639703 510686.281006908,164022.566743301 510683.309032735,164019.818736513 510687.28780718,164014.772946481 510692.038226625)),((164136.84918064 510863.064920405,164137.537585488 510870.913446915,164140.559339427 510872.713689205,164139.602082474 510870.727604686,164136.84918064 510863.064920405))) - - #79 Polygon - gid: 2579 - - POLYGON((161163.886985 511013.234985,161189.226985 511008.259985,161204.882985 511010.529985,161216.939985 511017.641985,161227.792985 511024.762985,161248.543985 511023.948985,161299.183985 511005.191985,161318.473985 510994.650985,161337.727985 510983.346985,161348.559985 510978.469985,161375.078985 510969.443985,161394.349985 510955.624985,161394.328985 510946.004985,161386.939985 510926.037985,161379.543985 510910.182985,161373.427985 510893.386985,161363.695985 510872.502985,161346.474985 510842.958985,161332.028985 510828.673985,161317.614985 510828.796985,161308.031985 510836.768985,161299.658985 510853.659985,161291.142985 510866.375985,161274.318985 510871.326985,161257.475985 510869.066985,161241.807985 510872.311985,161238.216985 510879.558985,161240.655985 510891.564985,161229.883985 510913.302985,161231.180985 510932.556985,161185.371985 510950.503985,161191.407985 510980.108985,161185.480985 510984.191985,161121.102985 510988.479985,161103.734985 510957.896985,161083.239985 510960.482985,161098.380985 511024.842985,161108.119985 511034.441985,161137.241985 511023.833985,161163.886985 511013.234985)) - POLYGON( EMPTY) - - #80 Polygon - gid: 2580 - - POLYGON((153813.688985 511062.953985,153835.321985 511057.586985,153844.786985 511047.891985,153846.824985 511035.417985,153842.431985 511021.764985,153850.025985 511008.873985,153863.361985 510999.755985,153876.654985 510996.614985,153892.257985 510993.431985,153902.800985 510983.707985,153905.732985 510969.043985,153904.396985 510957.029985,153901.984985 510954.939985,153890.617985 510951.489985,153860.008985 510941.167985,153846.688985 510938.404985,153830.265985 510936.142985,153810.244985 510933.880985,153789.735985 510928.797985,153776.421985 510929.931985,153733.777985 510924.325985,153700.997985 510915.447985,153687.636985 510916.347985,153676.673985 510919.325985,153663.820985 510943.732985,153641.900985 510991.329985,153631.225985 511030.452985,153671.961985 511040.388985,153697.242985 511041.748985,153714.534985 511045.144985,153735.736985 511055.102985,153749.989985 511063.251985,153773.223985 511062.327985,153792.770985 511065.572985,153813.688985 511062.953985)) - POLYGON( EMPTY) - - #81 Polygon - gid: 2581 - - POLYGON((144665.365985 511341.906985,144664.510985 511337.457985,144663.984985 511333.542985,144661.230985 511335.031985,144656.989985 511336.582985,144654.973985 511336.925985,144649.894985 511337.240985,144645.424985 511337.740985,144643.682985 511337.588985,144639.352985 511336.370985,144637.147985 511334.599985,144633.775985 511330.501985,144631.204985 511326.779985,144628.821985 511322.413985,144627.874985 511317.609985,144627.824985 511311.225985,144628.204985 511306.750985,144629.551985 511302.647985,144631.234985 511298.457985,144632.940985 511294.276985,144634.697985 511290.801985,144636.006985 511286.610985,144635.336985 511282.657985,144632.316985 511273.996985,144630.183985 511267.028985,144629.061985 511262.662985,144628.107985 511257.545985,144627.616985 511253.074985,144627.010985 511243.356985,144627.072985 511241.389985,144627.116985 511234.355985,144626.579985 511230.453985,144622.517985 511209.850985,144621.773985 511205.415985,144620.186985 511189.774985,144618.065985 511174.597985,144617.482985 511167.000985,144617.043985 511158.007985,144616.767985 511145.828985,144617.268985 511137.576985,144620.089985 511116.855985,144620.822985 511112.419985,144623.492985 511101.825985,144624.945985 511094.587985,144627.469985 511086.420985,144630.555985 511069.704985,144634.070985 511056.450985,144634.616985 511052.168985,144634.472985 511051.111985,144631.341985 511047.649985,144625.618985 511056.693985,144623.466985 511060.456985,144613.544985 511081.937985,144608.763985 511093.902985,144604.703985 511101.953985,144604.128985 511103.439985,144602.908985 511107.755985,144601.369985 511115.489985,144598.939985 511130.473985,144596.298985 511140.582985,144594.291985 511149.356985,144592.663985 511157.537985,144591.198985 511166.160985,144589.244985 511181.651985,144588.862985 511187.962985,144587.885985 511195.707985,144587.384985 511203.960985,144586.684985 511208.405985,144584.601985 511224.769985,144584.400985 511229.274985,144582.378985 511236.355985,144581.725985 511240.804985,144581.099985 511248.591985,144581.095985 511253.941985,144581.897985 511269.049985,144581.451985 511276.710985,144581.585985 511281.208985,144582.173985 511289.881985,144582.056985 511291.823985,144575.283985 511305.626985,144572.076985 511322.283985,144568.363985 511349.427985,144566.469985 511360.018985,144564.565985 511367.244985,144560.273985 511380.836985,144557.896985 511388.835985,144555.477985 511397.505985,144553.900985 511404.108985,144552.233985 511412.954985,144551.618985 511417.905985,144549.373985 511444.507985,144547.950985 511456.490985,144547.265985 511469.973985,144545.938985 511482.897985,144544.783985 511500.860985,144543.674985 511514.445985,144543.507985 511521.138985,144543.695985 511525.637985,144544.907985 511534.198985,144545.816985 511543.153985,144546.797985 511550.352985,144551.118985 511574.736985,144551.888985 511582.932985,144552.571985 511587.378985,144555.698985 511605.441985,144558.436985 511618.524985,144558.653985 511620.435985,144558.639985 511624.942985,144558.299985 511628.256985,144565.200985 511620.333985,144568.479985 511617.196985,144569.415985 511612.446985,144570.165985 511606.524985,144570.813985 511597.777985,144571.561985 511593.330985,144572.193985 511590.917985,144573.736985 511586.693985,144577.541985 511578.519985,144579.708985 511574.574985,144582.277985 511570.335985,144584.829985 511566.786985,144587.868985 511563.470985,144591.176985 511560.405985,144594.825985 511557.595985,144596.719985 511556.343985,144602.203985 511553.326985,144608.153985 511548.349985,144619.625985 511542.308985,144623.156985 511539.530985,144631.920985 511531.965985,144635.205985 511527.763985,144641.644985 511518.581985,144647.686985 511508.167985,144651.603985 511502.244985,144655.044985 511497.794985,144658.227985 511494.613985,144668.411985 511483.048985,144672.012985 511478.307985,144675.713985 511475.049985,144678.988985 511470.922985,144681.256985 511466.552985,144685.996985 511456.770985,144687.908985 511451.367985,144691.283985 511443.499985,144692.095985 511439.073985,144693.475985 511434.284985,144694.371985 511429.253985,144694.509985 511427.819985,144694.410985 511423.320985,144694.807985 511417.069985,144694.285985 511412.598985,144692.567985 511405.382985,144691.736985 511400.949985,144689.740985 511395.877985,144687.240985 511390.324985,144685.113985 511384.496985,144683.189985 511380.429985,144681.438985 511376.739985,144679.837985 511372.530985,144678.788985 511369.942985,144673.535985 511360.160985,144668.260985 511351.627985,144666.478985 511346.301985,144665.365985 511341.906985)) - POLYGON( EMPTY) - - #82 Polygon - gid: 2582 - - POLYGON((150793.118985 511863.872985,150782.435985 511854.966985,150773.079985 511846.582985,150769.853985 511843.245985,150766.986985 511839.782985,150761.511985 511832.617985,150758.605985 511829.192985,150754.526985 511825.034985,150751.182985 511821.998985,150747.703985 511819.159985,150745.002985 511817.382985,150740.884985 511815.528985,150736.708985 511814.410985,150732.238985 511813.744985,150725.323985 511813.170985,150720.857985 511813.353985,150717.259985 511814.287985,150711.627985 511816.933985,150702.186985 511822.826985,150698.518985 511825.423985,150696.368985 511827.525985,150684.761985 511840.202985,150681.550985 511843.503985,150678.272985 511846.599985,150674.783985 511849.436985,150669.637985 511852.923985,150665.663985 511855.000985,150661.936985 511856.225985,150656.873985 511856.914985,150652.348985 511856.798985,150647.905985 511856.025985,150645.239985 511855.186985,150641.073985 511853.447985,150636.151985 511851.082985,150628.316985 511846.527985,150624.260985 511844.691985,150620.988985 511843.836985,150616.496985 511843.242985,150611.814985 511842.919985,150607.312985 511842.716985,150602.796985 511842.724985,150598.313985 511843.011985,150596.601985 511843.287985,150592.221985 511844.505985,150587.641985 511845.379985,150583.110985 511845.114985,150578.119985 511843.789985,150574.644985 511840.859985,150566.899985 511831.685985,150563.749985 511828.530985,150562.674985 511827.708985,150554.656985 511823.535985,150545.568985 511816.704985,150540.506985 511813.718985,150530.264985 511808.717985,150526.014985 511807.641985,150524.251985 511807.730985,150515.536985 511810.459985,150509.160985 511811.415985,150500.505985 511813.304985,150490.484985 511815.200985,150479.709985 511816.692985,150470.899985 511818.531985,150462.891985 511820.493985,150458.194985 511821.964985,150445.836985 511827.404985,150439.625985 511829.715985,150435.355985 511831.140985,150422.598985 511834.889985,150419.093985 511836.166985,150399.357985 511844.231985,150390.792985 511848.186985,150386.777985 511850.257985,150382.945985 511852.571985,150380.704985 511854.175985,150377.924985 511857.651985,150377.614985 511859.079985,150377.897985 511868.209985,150376.511985 511876.021985,150376.611985 511877.158985,150379.114985 511885.853985,150380.117985 511890.230985,150380.935985 511898.667985,150381.832985 511915.743985,150382.366985 511932.541985,150382.275985 511937.039985,150381.956985 511940.848985,150381.344985 511945.308985,150381.694985 511947.764985,150384.059985 511951.718985,150387.229985 511954.008985,150396.270985 511958.492985,150415.434985 511967.136985,150427.214985 511971.698985,150435.461985 511975.194985,150439.538985 511977.090985,150442.724985 511978.823985,150450.449985 511983.451985,150461.357985 511990.730985,150470.449985 511996.184985,150476.812985 512000.277985,150486.281985 512004.468985,150498.388985 512009.375985,150506.829985 512012.490985,150515.408985 512015.156985,150519.751985 512016.347985,150529.479985 512018.627985,150538.331985 512020.289985,150542.988985 512021.027985,150551.938985 512021.972985,150568.897985 512022.823985,150577.823985 512023.998985,150585.204985 512025.356985,150590.396985 512025.748985,150594.855985 512025.332985,150603.774985 512023.841985,150612.102985 512022.714985,150617.473985 512021.715985,150621.801985 512020.489985,150636.118985 512015.843985,150644.319985 512013.498985,150645.997985 512012.737985,150661.643985 512004.213985,150668.485985 511999.122985,150671.737985 511997.405985,150679.881985 511993.545985,150696.995985 511983.795985,150705.252985 511978.647985,150720.985985 511967.981985,150724.570985 511965.274985,150726.337985 511963.711985,150732.784985 511957.421985,150738.545985 511953.334985,150742.362985 511950.937985,150749.200985 511947.223985,150750.312985 511946.426985,150753.762985 511943.523985,150759.775985 511938.828985,150769.269985 511930.492985,150772.469985 511927.344985,150775.669985 511922.275985,150776.549985 511921.269985,150779.777985 511918.119985,150782.178985 511915.393985,150785.867985 511911.585985,150793.096985 511906.023985,150796.180985 511902.741985,150798.947985 511899.183985,150800.512985 511896.731985,150803.753985 511890.480985,150805.353985 511886.291985,150805.688985 511883.904985,150805.356985 511879.352985,150802.648985 511875.749985,150797.659985 511868.435985,150796.383985 511866.983985,150793.118985 511863.872985)) - POLYGON((150457.10488879 511902.90912939,150464.733870064 511906.143144005,150467.087964112 511907.189121685,150471.164964112 511909.085121685,150475.376080646 511911.206976503,150478.562080646 511912.939976503,150481.269290797 511914.486309485,150488.994290797 511919.114309485,150492.08021185 511921.066696571,150501.486797912 511927.343790442,150509.030924817 511931.869270879,150511.024338606 511933.107874813,150512.491255491 511934.051469158,150515.55259617 511935.406425202,150525.464472069 511939.423735439,150530.957806829 511941.45095233,150536.461059094 511943.161136564,150538.233258087 511943.647134491,150544.964737503 511945.224824979,150551.123863489 511946.381226628,150552.802642224 511946.647264572,150557.760384086 511947.17073564,150572.656744079 511947.918232683,150578.686383311 511948.465480049,150587.612383311 511949.640480049,150590.267735925 511950.059246398,150591.408748513 511949.868501946,150593.717167366 511949.519442629,150600.209475453 511948.640860591,150600.252315061 511948.632892472,150612.969191529 511944.506147479,150615.49980374 511943.73400397,150616.316038105 511943.500609313,150621.116996024 511940.885029273,150623.714257734 511938.952457018,150633.468454743 511932.799741904,150636.720454743 511931.082741904,150638.019151806 511930.432505435,150635.050484011 511929.916012029,150625.391778503 511927.56695582,150622.725778503 511926.72795582,150616.34901009 511924.399061755,150612.18301009 511922.660061755,150608.591920771 511921.049135163,150603.669920771 511918.684135163,150603.656921969 511918.677247374,150601.700523332 511919.050586328,150583.263019067 511920.25204025,150578.732019067 511919.98704025,150563.866752358 511917.604015274,150558.875752358 511916.279015274,150543.486379129 511910.314516899,150529.774245546 511901.128361997,150526.299245546 511898.198361997,150517.336788462 511889.24149603,150515.759481157 511887.373165854,150514.988775912 511886.887589413,150514.448819526 511886.997571909,150504.427819526 511888.893571909,150500.771984776 511889.492152952,150492.530977352 511890.633274351,150487.491266548 511891.685263927,150484.051346716 511892.528061469,150476.053921669 511896.04853341,150471.991319844 511897.696881893,150465.780319844 511900.007881893,150463.368057644 511900.858897413,150459.098057644 511902.283897413,150457.10488879 511902.90912939)) - - #83 Polygon - gid: 2583 - - POLYGON((156449.341985 511947.023985,156464.014985 511945.970985,156481.530985 511959.981985,156488.552985 511957.898985,156502.465985 511951.515985,156519.696985 511967.276985,156532.436985 511968.984985,156546.765985 511960.382985,156557.920985 511953.685985,156617.345985 511926.606985,156650.552985 511912.686985,156629.697985 511893.765985,156618.726985 511870.069985,156571.803985 511869.954985,156520.017985 511866.320985,156489.605985 511875.922985,156479.281985 511900.711985,156450.551985 511915.185985,156420.762985 511933.429985,156402.252985 511952.078985,156397.242985 511979.578985,156395.515985 512016.444985,156378.536985 512022.679985,156378.119985 512031.838985,156381.340985 512046.684985,156381.973985 512059.782985,156387.971985 512068.254985,156389.726985 512093.748985,156394.837985 512106.687985,156406.149985 512102.202985,156420.544985 512083.467985,156439.940985 512083.059985,156434.834985 512074.138985,156430.875985 512065.561985,156431.200985 512050.264985,156442.042985 512026.074985,156436.831985 511998.762985,156428.771985 511968.333985,156449.341985 511947.023985)) - POLYGON( EMPTY) - - #84 Polygon - gid: 2584 - - POLYGON((155602.027985 512384.736985,155651.324985 512362.529985,155690.321985 512347.470985,155728.819985 512327.098985,155734.742985 512356.836985,155759.349985 512351.936985,155787.291985 512340.198985,155805.031985 512324.680985,155807.589985 512298.852985,155807.126985 512268.633985,155818.253985 512240.316985,155826.566985 512208.914985,155827.900985 512153.049985,155845.759985 512111.821985,155872.507985 512069.193985,155889.837985 512044.252985,155912.490985 512003.645985,155927.073985 511997.027985,155950.234985 512000.369985,155966.659985 511999.703985,155977.448985 511982.546985,155986.844985 511959.429985,155997.767985 511948.403985,156006.318985 511939.771985,156026.620985 511926.970985,156045.097985 511907.642985,156056.068985 511885.544985,156051.584985 511870.282985,156034.120985 511859.853985,156026.020985 511861.511985,156014.495985 511863.870985,155993.202985 511891.082985,155979.638985 511907.819985,155960.158985 511915.091985,155951.804985 511911.642985,155944.020985 511895.340985,155936.829985 511869.525985,155922.587985 511855.727985,155888.814985 511836.983985,155840.846985 511835.381985,155800.677985 511839.829985,155775.670985 511860.233985,155774.333985 511899.906985,155795.411985 511943.754985,155816.206985 511963.053985,155845.433985 511975.560985,155878.744985 511980.178985,155881.067985 511998.835985,155876.445985 512018.197985,155856.169985 512033.153985,155847.373985 512031.370985,155820.826985 512018.441985,155810.139985 512012.400985,155794.109985 512003.338985,155772.511985 512000.769985,155747.437985 512018.467985,155743.449985 512037.075985,155734.345985 512063.507985,155719.020985 512086.564985,155704.834985 512109.490985,155702.872985 512125.983985,155716.012985 512136.488985,155732.291985 512135.876985,155741.646985 512132.513985,155752.134985 512114.732985,155766.085985 512102.084985,155788.547985 512103.687985,155796.852985 512111.554985,155796.473985 512128.617985,155787.305985 512152.726985,155777.070985 512175.994985,155766.262985 512204.174985,155762.622985 512221.408985,155755.035985 512230.476985,155736.132985 512235.898985,155721.747985 512236.656985,155705.074985 512229.699985,155686.855985 512217.112985,155670.731985 512211.063985,155654.433985 512228.409985,155640.417985 512242.145985,155618.476985 512253.328985,155601.188985 512251.812985,155596.704985 512241.110985,155597.324985 512234.943985,155608.428985 512222.055985,155617.613985 512215.614985,155621.498985 512204.875985,155620.091985 512189.821985,155601.632985 512166.310985,155571.728985 512189.472985,155512.046985 512240.386985,155484.043985 512264.760985,155478.016985 512282.219985,155490.242985 512305.307985,155510.088985 512325.660985,155531.257985 512342.424985,155545.862985 512369.388985,155548.396985 512380.288985,155551.240985 512378.547985,155571.923985 512396.101985,155602.027985 512384.736985)) - POLYGON( EMPTY) - - #85 Polygon - gid: 2585 - - POLYGON((158639.754985 512372.943985,158642.449985 512349.639985,158651.455985 512332.998985,158654.537985 512321.227985,158662.359985 512307.021985,158667.084985 512302.182985,158674.148985 512294.948985,158682.389985 512285.305985,158690.575985 512270.902985,158694.679985 512247.278985,158692.208985 512240.181985,158683.712985 512228.424985,158668.883985 512217.032985,158646.555985 512214.750985,158627.649985 512229.323985,158617.422985 512243.507985,158608.087985 512260.305985,158586.772985 512272.531985,158565.598985 512272.645985,158544.191985 512277.739985,158539.545985 512287.325985,158537.795985 512315.696985,158533.147985 512325.284985,158525.175985 512334.748985,158523.574985 512355.881985,158524.640985 512365.547985,158529.449985 512367.856985,158536.445985 512375.035985,158563.901985 512374.626985,158573.392985 512369.724985,158581.691985 512364.839985,158593.207985 512355.298985,158604.326985 512359.738985,158609.225985 512369.189985,158611.793985 512383.436985,158613.851985 512401.113985,158626.612985 512394.997985,158634.009985 512385.227985,158638.305985 512373.378985,158639.754985 512372.943985)) - POLYGON( EMPTY) - - #86 Polygon - gid: 2586 - - POLYGON((155727.202985 512684.126985,155741.919985 512679.921985,155754.534985 512679.921985,155769.250985 512673.614985,155781.865985 512667.307985,155798.163985 512654.965985,155820.165985 512662.878985,155835.705985 512670.729985,155850.180985 512672.093985,155857.418985 512672.776985,155870.184985 512655.342985,155879.069985 512649.526985,155883.511985 512646.618985,155904.577985 512658.609985,155930.402985 512657.713985,155952.915985 512644.276985,155976.753985 512624.405985,155979.221985 512607.413985,156006.945985 512594.025985,156026.550985 512576.591985,156049.621985 512550.417985,156054.729985 512531.129985,156054.755985 512505.514985,156044.897985 512478.134985,156019.611985 512455.590985,156003.719985 512436.978985,155985.013985 512416.265985,155959.225985 512408.307985,155929.903985 512411.681985,155923.048985 512441.509985,155927.659985 512492.523985,155928.478985 512511.588985,155908.647985 512524.923985,155882.165985 512527.804985,155865.679985 512509.153985,155855.593985 512479.621985,155854.702985 512472.706985,155852.030985 512451.962985,155847.595985 512433.051985,155825.610985 512418.598985,155813.750985 512399.623985,155799.230985 512404.242985,155778.543985 512443.422985,155785.678985 512477.221985,155802.478985 512510.914985,155793.319985 512534.784985,155772.281985 512535.697985,155760.161985 512563.378985,155745.307985 512608.348985,155729.305985 512650.488985,155722.998985 512656.795985,155712.486985 512652.590985,155693.564985 512646.283985,155625.087985 512605.101985,155576.978985 512579.241985,155565.134985 512573.289985,155585.397985 512555.877985,155608.591985 512548.877985,155605.820985 512529.964985,155602.102985 512511.257985,155573.935985 512503.813985,155483.898985 512506.544985,155470.203985 512506.897985,155425.981985 512510.850985,155377.120985 512514.465985,155322.665985 512512.452985,155316.148985 512512.497985,155316.519985 512514.568985,155310.172985 512526.065985,155306.522985 512576.960985,155296.149985 512617.554985,155292.347985 512627.995985,155313.655985 512633.929985,155348.186985 512651.970985,155370.507985 512655.437985,155395.810985 512650.471985,155419.682985 512637.003985,155449.809985 512621.252985,155479.012985 512613.969985,155504.153985 512617.337985,155528.206985 512637.756985,155555.101985 512657.978985,155582.666985 512663.452985,155608.860985 512671.327985,155653.082985 512686.633985,155695.712985 512698.015985,155710.383985 512700.946985,155718.793985 512694.638985,155727.202985 512684.126985)) - POLYGON( EMPTY) - - #87 Polygon - gid: 2587 - - POLYGON((146166.976985 512563.940985,146169.594985 512563.533985,146174.055985 512564.781985,146177.356985 512561.339985,146181.129985 512554.989985,146185.373985 512548.630985,146189.013985 512541.920985,146194.870985 512530.011985,146198.574985 512521.811985,146202.486985 512510.766985,146206.272985 512502.588985,146208.002985 512498.444985,146209.826985 512492.155985,146212.021985 512482.022985,146213.069985 512474.579985,146213.899985 512465.609985,146214.122985 512461.084985,146213.982985 512452.080985,146213.290985 512444.415985,146211.750985 512435.542985,146210.899985 512432.081985,146209.279985 512427.626985,146202.014985 512417.721985,146193.565985 512405.040985,146190.827985 512399.745985,146189.280985 512395.443985,146188.608985 512391.002985,146188.735985 512383.754985,146189.509985 512374.731985,146190.957985 512365.827985,146193.621985 512354.666985,146196.283985 512346.008985,146199.521985 512337.449985,146202.058985 512333.521985,146205.570985 512330.766985,146209.847985 512330.235985,146220.199985 512330.990985,146232.889985 512334.095985,146236.718985 512336.497985,146243.325985 512339.763985,146249.933985 512343.512985,146258.162985 512349.266985,146262.031985 512352.246985,146265.456985 512355.165985,146272.146985 512361.243985,146278.196985 512367.051985,146281.562985 512370.018985,146283.636985 512371.307985,146288.761985 512373.835985,146292.889985 512375.617985,146295.481985 512376.220985,146299.968985 512376.458985,146303.856985 512375.344985,146308.377985 512373.216985,146316.009985 512368.440985,146319.433985 512366.733985,146324.146985 512364.674985,146334.262985 512360.634985,146338.382985 512358.815985,146343.177985 512356.459985,146352.192985 512351.076985,146356.303985 512348.809985,146360.631985 512347.534985,146365.076985 512346.785985,146369.540985 512346.711985,146374.638985 512347.185985,146383.481985 512348.875985,146386.523985 512348.970985,146391.031985 512348.741985,146396.693985 512348.157985,146398.836985 512347.264985,146402.911985 512345.190985,146406.601985 512342.664985,146407.369985 512341.866985,146413.207985 512329.834985,146414.615985 512325.605985,146415.160985 512322.986985,146415.639985 512318.282985,146415.082985 512313.996985,146413.604985 512312.108985,146409.418985 512309.747985,146407.116985 512308.829985,146402.755985 512307.423985,146394.786985 512303.239985,146391.945985 512301.969985,146387.707985 512300.465985,146384.157985 512299.758985,146373.077985 512298.308985,146371.668985 512297.962985,146366.140985 512295.894985,146362.222985 512293.667985,146360.086985 512292.216985,146355.784985 512288.717985,146352.559985 512285.575985,146348.870985 512281.607985,146346.171985 512278.002985,146344.075985 512274.769985,146341.569985 512269.924985,146339.050985 512260.216985,146339.079985 512246.711985,146338.564985 512238.156985,146338.130985 512233.677985,146335.336985 512214.430985,146334.344985 512210.061985,146332.244985 512204.923985,146330.093985 512200.952985,146327.794985 512197.206985,146324.899985 512193.795985,146321.434985 512191.598985,146317.091985 512189.432985,146309.323985 512184.888985,146303.936985 512181.457985,146300.355985 512178.763985,146298.733985 512177.197985,146295.789985 512172.900985,146294.087985 512168.735985,146292.744985 512164.191985,146290.697985 512155.428985,146288.537985 512143.477985,146287.578985 512134.336985,146287.272985 512129.846985,146287.102985 512123.380985,146287.228985 512114.373985,146287.112985 512109.880985,146286.374985 512101.930985,146284.902985 512090.429985,146283.740985 512081.485985,146282.851985 512077.088985,146280.837985 512070.639985,146275.584985 512056.262985,146273.874985 512052.114985,146273.243985 512050.980985,146254.611985 512024.878985,146248.543985 512017.815985,146245.732985 512014.270985,146243.655985 512010.600985,146243.852985 512008.166985,146246.012985 512003.791985,146252.863985 511979.961985,146254.225985 511974.758985,146255.146985 511970.352985,146257.351985 511957.390985,146257.964985 511952.925985,146258.260985 511948.133985,146257.735985 511943.629985,146256.366985 511939.322985,146254.473985 511936.211985,146251.644985 511932.639985,146247.278985 511926.685985,146233.230985 511908.799985,146222.941985 511895.214985,146212.626985 511883.086985,146203.013985 511872.601985,146198.631985 511866.609985,146192.859985 511859.687985,146189.793985 511856.402985,146187.793985 511854.542985,146180.824985 511848.828985,146174.327985 511842.730985,146170.156985 511839.261985,146166.346985 511836.872985,146162.414985 511834.655985,146155.353985 511830.943985,146151.558985 511828.564985,146150.071985 511827.399985,146146.718985 511824.409985,146131.468985 511809.734985,146128.133985 511806.716985,146124.322985 511803.666985,146120.556985 511801.187985,146116.544985 511799.068985,146112.378985 511797.359985,146112.171985 511800.770985,146111.199985 511805.322985,146109.552985 511809.493985,146107.855985 511811.576985,146103.683985 511814.013985,146095.647985 511813.349985,146091.150985 511813.203985,146082.184985 511813.362985,146080.884985 511813.180985,146076.120985 511811.909985,146071.102985 511810.343985,146066.266985 511808.030985,146061.890985 511806.956985,146060.071985 511806.842985,146055.518985 511805.799985,146053.676985 511801.503985,146053.392985 511796.956985,146052.060985 511798.081985,146048.202985 511800.432985,146046.939985 511800.933985,146041.831985 511802.104985,146033.783985 511803.032985,146021.534985 511804.853985,146010.430985 511805.941985,146001.961985 511808.986985,145999.868985 511809.336985,145993.249985 511809.685985,145988.748985 511809.704985,145972.952985 511808.649985,145968.456985 511808.614985,145962.536985 511809.137985,145955.586985 511810.173985,145946.751985 511811.900985,145931.180985 511815.560985,145923.630985 511815.211985,145921.449985 511815.416985,145916.390985 511816.456985,145912.040985 511817.607985,145899.094985 511821.446985,145898.671985 511827.626985,145897.959985 511833.437985,145896.272985 511842.280985,145894.388985 511851.014985,145893.746985 511866.238985,145892.513985 511880.048985,145892.097985 511882.450985,145891.100985 511886.840985,145886.859985 511899.482985,145880.730985 511914.091985,145878.241985 511922.288985,145876.483985 511926.259985,145871.473985 511927.983985,145867.052985 511928.834985,145851.133985 511929.639985,145846.673985 511930.725985,145844.102985 511934.297985,145839.483985 511943.835985,145835.917985 511952.104985,145834.022985 511955.925985,145833.089985 511959.888985,145834.858985 511961.248985,145839.696985 511961.704985,145847.667985 511964.562985,145851.967985 511965.836985,145857.630985 511965.736985,145861.503985 511967.145985,145867.018985 511969.482985,145871.317985 511970.809985,145879.898985 511972.132985,145888.307985 511975.341985,145891.449985 511976.221985,145897.298985 511977.362985,145906.240985 511978.406985,145912.375985 511979.747985,145920.173985 511980.489985,145927.160985 511981.356985,145931.603985 511982.135985,145935.971985 511983.195985,145941.276985 511984.958985,145949.658985 511988.269985,145953.697985 511989.930985,145957.682985 511991.993985,145960.523985 511994.105985,145965.656985 511999.048985,145971.858985 512005.613985,145974.677985 512009.092985,145976.774985 512012.567985,145978.664985 512017.548985,145978.930985 512022.067985,145978.934985 512030.767985,145980.033985 512039.324985,145980.355985 512043.792985,145979.736985 512049.515985,145974.978985 512077.720985,145970.939985 512094.710985,145970.097985 512099.899985,145969.429985 512104.353985,145968.212985 512110.362985,145963.403985 512127.711985,145959.777985 512138.566985,145958.219985 512142.787985,145954.919985 512150.579985,145954.316985 512152.865985,145950.023985 512173.319985,145949.268985 512177.747985,145948.670985 512184.400985,145948.801985 512188.872985,145949.475985 512191.375985,145951.382985 512196.412985,145955.761985 512214.480985,145957.308985 512218.688985,145958.951985 512221.666985,145965.956985 512232.465985,145968.169985 512236.379985,145971.396985 512243.185985,145972.893985 512247.412985,145974.089985 512252.919985,145975.258985 512261.871985,145975.389985 512263.170985,145975.261985 512267.671985,145974.422985 512270.700985,145972.905985 512274.963985,145970.962985 512281.855985,145968.886985 512288.012985,145966.777985 512291.988985,145962.060985 512296.906985,145960.735985 512298.727985,145958.760985 512302.764985,145957.946985 512308.248985,145956.867985 512324.439985,145956.311985 512329.454985,145954.998985 512333.765985,145953.531985 512341.807985,145952.899985 512346.276985,145952.677985 512352.128985,145953.306985 512356.903985,145955.010985 512360.832985,145956.774985 512361.674985,145962.064985 512362.327985,145966.355985 512363.971985,145970.113985 512366.364985,145972.275985 512368.577985,145975.177985 512372.065985,145977.783985 512375.818985,145980.028985 512379.722985,145980.947985 512381.625985,145982.588985 512385.838985,145983.846985 512390.212985,145984.753985 512394.622985,145985.225985 512398.653985,145985.264985 512403.214985,145984.759985 512407.672985,145984.234985 512409.635985,145980.270985 512418.610985,145977.746985 512427.267985,145976.275985 512431.506985,145974.447985 512435.293985,145972.231985 512439.224985,145969.560985 512444.528985,145966.183985 512453.477985,145964.959985 512457.841985,145964.811985 512462.320985,145964.972985 512483.908985,145966.055985 512493.902985,145966.394985 512498.383985,145966.345985 512501.348985,145965.651985 512510.442985,145966.007985 512515.207985,145967.991985 512519.177985,145970.988985 512523.506985,145981.550985 512539.664985,145983.874985 512543.507985,145985.060985 512545.952985,145986.235985 512550.291985,145983.358985 512554.463985,145979.245985 512556.198985,145974.914985 512557.683985,145968.780985 512560.209985,145965.765985 512560.497985,145959.080985 512560.161985,145954.623985 512559.494985,145947.257985 512557.988985,145942.825985 512557.286985,145938.688985 512556.844985,145934.331985 512557.437985,145932.222985 512558.727985,145928.878985 512561.837985,145925.633985 512565.565985,145922.904985 512569.126985,145914.850985 512580.807985,145912.164985 512584.415985,145905.868985 512591.644985,145894.297985 512609.011985,145889.770985 512616.314985,145882.367985 512628.854985,145879.953985 512632.675985,145877.267985 512636.269985,145874.109985 512639.263985,145869.573985 512643.201985,145859.814985 512652.529985,145850.545985 512661.964985,145845.579985 512667.687985,145842.865985 512671.301985,145840.476985 512675.106985,145838.542985 512678.871985,145836.761985 512683.029985,145835.290985 512687.282985,145834.663985 512692.058985,145833.664985 512697.458985,145832.411985 512701.812985,145831.523985 512706.199985,145831.460985 512712.157985,145832.017985 512721.523985,145832.476985 512725.999985,145833.300985 512728.179985,145836.406985 512734.549985,145838.616985 512738.457985,145840.467985 512740.636985,145843.809985 512743.682985,145846.311985 512745.633985,145849.977985 512748.254985,145854.914985 512751.492985,145860.112985 512754.126985,145878.402985 512762.178985,145898.977985 512770.121985,145903.383985 512771.155985,145907.855985 512770.825985,145912.244985 512769.534985,145914.149985 512768.607985,145917.905985 512766.050985,145929.966985 512758.667985,145933.945985 512756.582985,145937.171985 512755.312985,145941.494985 512754.031985,145945.543985 512753.171985,145953.081985 512751.955985,145960.672985 512750.985985,145965.480985 512750.093985,145973.107985 512745.253985,145975.481985 512743.387985,145978.768985 512740.319985,145981.568985 512736.896985,145986.785985 512729.543985,145992.444985 512719.776985,145996.313985 512714.047985,145999.352985 512710.106985,146008.645985 512699.953985,146032.532985 512667.829985,146036.110985 512662.656985,146041.021985 512655.112985,146046.773985 512645.487985,146061.241985 512626.123985,146063.657985 512622.326985,146074.236985 512610.353985,146077.335985 512607.099985,146083.940985 512601.665985,146089.128985 512596.256985,146090.859985 512595.001985,146096.079985 512592.079985,146100.081985 512589.961985,146104.225985 512588.255985,146107.119985 512587.579985,146111.607985 512586.972985,146116.021985 512586.112985,146118.617985 512585.203985,146127.304985 512581.405985,146134.333985 512579.170985,146138.669985 512577.976985,146146.690985 512576.867985,146149.532985 512576.265985,146153.768985 512574.808985,146154.806985 512574.093985,146158.013985 512570.866985,146163.266985 512566.206985,146166.976985 512563.940985)) - POLYGON((145961.546571986 511912.662006029,145964.929660209 511913.786300946,145968.831148249 511915.203927207,145977.213148249 511918.514927207,145978.184122361 511918.906330695,145982.223122361 511920.567330695,145988.178345514 511923.326895495,145992.163345514 511925.389895495,146002.428346021 511931.803847377,146005.269346021 511933.915847377,146012.547718291 511940.082553283,146017.680718291 511945.025553283,146020.175831511 511947.544661152,146026.377831511 511954.109661152,146030.130500873 511958.397140147,146032.949500873 511961.876140147,146038.891918642 511970.342878856,146040.988918642 511973.817878856,146046.896740518 511985.960854318,146048.786740518 511990.941854318,146052.005918251 512001.861170943,146053.535391539 512013.141919689,146053.801391539 512017.660919689,146053.930977073 512022.033502245,146053.93277973 512025.954280873,146054.422971197 512029.770994603,146054.839972833 512033.933864122,146055.161972833 512038.401864122,146054.921099551 512051.857951959,146054.302099551 512057.580951959,146053.692078361 512061.991728103,146048.934078361 512090.196728103,146047.945483201 512095.067170181,146044.535831084 512109.409826645,146044.201732362 512111.468779462,146043.600455739 512115.477890356,146042.937560607 512119.241440403,146041.720560607 512125.250440403,146040.487739668 512130.396952099,146035.678739668 512147.745952099,146034.540145377 512151.474280488,146030.914145377 512162.329280488,146030.138053291 512164.537367942,146028.580053291 512168.758367942,146027.281759347 512172.036426395,146026.57950483 512173.694598273,146024.940649099 512181.502926976,146026.518236958 512188.012143106,146028.878434452 512191.650654561,146031.243915918 512195.552347259,146033.456915918 512199.466347259,146035.938356115 512204.248258055,146039.165356115 512211.054258055,146042.094355838 512218.148378153,146043.591355838 512222.375378153,146046.185453891 512231.495680334,146047.381453891 512237.002680334,146048.458578972 512243.208536569,146049.627578972 512252.160536569,146049.880491616 512254.346644456,146050.011491616 512255.645644456,146050.359676122 512265.302982437,146050.231676122 512269.803982437,146047.540509038 512287.692348707,146046.701509038 512290.721348707,146045.082457196 512295.845347966,146044.409241749 512297.737185443,146043.149165993 512302.206790234,146042.031853863 512305.818786975,146039.955853863 512311.975786975,146035.143089159 512323.157382301,146033.900092563 512325.500746201,146036.782654969 512329.289067883,146039.388654969 512333.042067883,146042.800518365 512338.43114755,146045.045518365 512342.33514755,146047.566044974 512347.107873011,146048.485044974 512349.010873011,146050.833693904 512354.404895916,146052.474693904 512358.617895916,146054.667103858 512365.108698415,146055.925103858 512369.482698415,146057.30935832 512375.104056972,146058.21635832 512379.514056972,146059.245062512 512385.900636058,146059.717062512 512389.931636058,146060.223243322 512398.012701713,146060.262243322 512402.573701713,146059.7883581 512411.656955259,146059.2833581 512416.114955259,146057.213496243 512427.050516025,146056.688496243 512429.013516025,146052.841276933 512439.937415777,146050.883339039 512444.370436111,146049.74912714 512448.260639125,146048.602040581 512451.855809194,146047.131040581 512456.094809194,146043.818802383 512464.110172266,146041.990802383 512467.897172266,146039.885701639 512471.925759398,146039.942773595 512479.578364232,146040.61946415 512485.822912165,146040.842276676 512488.245195917,146041.181276676 512492.726195917,146041.214881873 512493.865328219,146044.32877048 512498.629029421,146045.728476222 512500.854553149,146048.052476222 512504.697553149,146051.355132213 512510.775283735,146052.541132213 512513.220283735,146057.453576793 512526.349091164,146057.783246656 512527.566484813,146059.446185907 512526.635621117,146060.997538858 512525.79105702,146064.999538858 512523.67305702,146071.530800114 512520.609048209,146075.674800114 512518.903048209,146087.166213225 512515.221991634,146090.060213225 512514.545991634,146095.149883514 512513.609553683,146097.260587609 512512.686743259,146104.578561552 512509.932145889,146111.607561552 512507.697145889,146114.422443778 512506.86240649,146118.758443778 512505.66840649,146119.768804542 512505.460385872,146124.173587901 512502.201467244,146125.310248092 512501.507216032,146127.027052853 512498.01644808,146128.929097065 512493.805659059,146131.790404731 512485.727145977,146134.426614427 512479.258478887,146137.160638771 512473.35281299,146138.138723824 512468.83758026,146138.55356072 512465.891367461,146139.070326178 512460.306564851,146139.094263736 512459.820836383,146139.074009868 512458.518223309,146131.150856926 512446.62646068,146126.945590272 512439.489831226,146124.207590272 512434.194831226,146120.252440831 512425.124963807,146118.705440831 512420.822963807,146115.125150132 512406.665043552,146114.453150132 512402.224043552,146113.620495716 512389.689031063,146113.747495716 512382.441031063,146114.010409293 512377.344966647,146114.784409293 512368.321966647,146115.482478327 512362.693369809,146116.930478327 512353.789369809,146118.007278605 512348.415505667,146120.671278605 512337.254505667,146121.93390625 512332.625674578,146124.59590625 512323.967674578,146126.136049455 512319.470953069,146129.374049455 512310.911953069,146136.520249982 512296.758691278,146139.057249982 512292.830691278,146146.650527786 512282.975937982,146155.768390522 512274.511978536,146159.280390522 512271.756978536,146170.629720208 512264.403531091,146183.115063238 512259.207697847,146196.330495087 512256.338406173,146200.607495087 512255.807406173,146215.30345241 512255.434662316,146225.65545241 512256.189662316,146238.02521772 512258.140033884,146250.71521772 512261.245033884,146262.104322338 512265.019777129,146264.860929343 512266.455561697,146264.051157917 512260.055933909,146264.075141688 512248.886939879,146263.831185196 512244.834419908,146263.647011297 512244.717118879,146258.848664716 512241.391643106,146255.267664716 512238.697643106,146248.262583799 512232.720240905,146246.640583799 512231.154240905,146236.862440829 512219.587984079,146233.918440829 512215.290984079,146226.363081824 512201.271834749,146224.661081824 512197.106834749,146222.163612255 512189.993562596,146220.820612255 512185.449562596,146219.711138352 512181.252384873,146217.664138352 512172.489384873,146216.8937512 512168.768215609,146214.7337512 512156.817215609,146213.947353077 512151.303432546,146212.988353077 512142.162432546,146212.752553856 512139.436514606,146212.446553856 512134.946514606,146212.298892925 512131.818156614,146212.128892925 512125.352156614,146212.110322503 512122.331903677,146212.215442812 512114.817470142,146212.202599351 512114.320007444,146211.816466238 512110.160443428,146210.518873503 512100.022118668,146209.861513672 512094.9623714,146209.780118043 512094.701735643,146207.132247706 512087.454746906,146195.526825505 512071.19644236,146191.655494679 512066.690310254,146189.777206437 512064.414973587,146186.966206437 512060.869973587,146180.460987801 512051.211022651,146178.383987801 512047.541022651,146172.379144857 512033.937909804,146169.175992617 512019.417488541,146168.900437923 512004.550515496,146169.097437923 512002.116515496,146171.563840795 511988.185002364,146175.219078694 511978.594789147,146179.898286967 511962.318985156,146174.248642708 511955.125823338,146173.443425464 511954.081854714,146164.435871062 511942.188801302,146156.400986805 511932.741678058,146147.732020724 511923.286345762,146142.475204054 511916.874504711,146139.501988848 511912.808894142,146137.197065522 511910.044743195,146133.271902142 511906.826435899,146129.497770574 511903.514605224,146126.031658823 511900.261357655,146120.454780701 511897.329567315,146115.518307519 511894.490179218,146111.723307519 511892.111179218,146106.696454615 511888.580879625,146097.507919426 511888.75926053,146091.340424848 511888.249651719,146090.59870786 511888.22557107,146083.514800452 511888.351194679,146071.786396658 511887.638616,146070.486396658 511887.456616,146061.55176564 511885.646332782,146056.78776564 511884.375332782,146053.777983367 511883.504609645,146048.759983367 511881.938609645,146043.912861215 511880.034496976,146043.324811988 511879.949292499,146038.771811988 511878.906292499,146037.122148048 511878.360987132,146032.563666518 511879.038674687,146028.848664137 511879.496533841,146026.841995148 511879.693152705,146014.332026289 511882.9598319,146012.239026289 511883.3098319,146003.818024229 511884.232946768,145997.199024229 511884.581946768,145993.566578491 511884.685316788,145989.065578491 511884.704316787,145983.750940641 511884.538263377,145971.08566392 511883.692361443,145968.316353774 511884.105167963,145967.434787875 511884.277489899,145967.216830011 511886.718688686,145966.413880576 511892.847634692,145965.997880576 511895.249634692,145965.235566751 511899.061046277,145964.238566751 511903.451046277,145962.206542228 511910.694700251,145961.546571986 511912.662006029)) - - #88 Polygon - gid: 2588 - - POLYGON((167532.477985 512809.448985,167555.559985 512773.894985,167560.645985 512730.879985,167581.079985 512731.212985,167606.259985 512686.118985,167617.210985 512664.753985,167628.468985 512640.940985,167597.450985 512637.978985,167581.803985 512637.728985,167556.555985 512632.534985,167547.781985 512627.528985,167513.601985 512631.705985,167490.695985 512631.340985,167471.007985 512626.155985,167475.732985 512640.627985,167482.838985 512659.940985,167492.745985 512684.143985,167503.099985 512701.159985,167507.038985 512713.225985,167508.550985 512727.632985,167499.191985 512749.026985,167495.486985 512763.329985,167491.846985 512768.058985,167481.381985 512777.436985,167460.916985 512781.885985,167425.096985 512774.037985,167424.939985 512795.525985,167423.600985 512814.612985,167420.790985 512833.544985,167420.668985 512850.249985,167421.333985 512859.894985,167427.557985 512867.347985,167437.147985 512869.901985,167461.115985 512877.483985,167486.197985 512894.246985,167505.321985 512851.981985,167514.324985 512823.525985,167522.807985 512814.080985,167532.477985 512809.448985)) - POLYGON( EMPTY) - - #89 Polygon - gid: 2589 - - POLYGON((164372.606985 512890.176985,164324.811985 512880.193985,164323.666985 512914.388985,164331.604985 512958.853985,164350.402985 512964.195985,164391.299985 512979.726985,164454.259985 513002.043985,164502.492985 513022.119985,164552.192985 513041.053985,164558.382985 513043.657985,164576.953985 513051.470985,164592.038985 513040.219985,164595.863985 513032.750985,164611.578985 513009.064985,164629.578985 512994.920985,164626.260985 512987.836985,164600.829985 512976.485985,164523.959985 512955.303985,164510.527985 512945.800985,164431.119985 512911.854985,164372.606985 512890.176985)) - POLYGON( EMPTY) - - #90 Polygon - gid: 2590 - - POLYGON((155418.520985 513085.717985,155400.143985 513071.569985,155370.702985 513097.312985,155348.413985 513124.256985,155334.276985 513145.103985,155324.433985 513167.135985,155314.900985 513197.823985,155293.396985 513250.465985,155281.650985 513277.996985,155264.569985 513307.253985,155252.427985 513331.225985,155236.340985 513356.837985,155217.667985 513407.428985,155244.525985 513419.754985,155271.368985 513429.290985,155283.571985 513410.496985,155322.096985 513324.107985,155339.112985 513295.890985,155349.832985 513271.657985,155363.984985 513253.183985,155421.428985 513170.677985,155456.713985 513126.870985,155443.701985 513110.996985,155418.520985 513085.717985)) - POLYGON( EMPTY) - - #91 Polygon - gid: 2591 - - POLYGON((166387.863985 513465.987985,166413.814985 513435.239985,166454.386985 513435.727985,166462.438985 513436.310985,166456.999985 513382.178985,166446.221985 513361.906985,166439.149985 513358.988985,166405.819985 513348.211985,166349.398985 513333.283985,166288.061985 513312.194985,166276.204985 513316.629985,166264.022985 513356.675985,166262.695985 513364.228985,166258.961985 513385.471985,166282.343985 513410.305985,166286.133985 513412.866985,166327.046985 513440.506985,166354.031985 513472.209985,166380.174985 513466.677985,166387.863985 513465.987985)) - POLYGON( EMPTY) - - #92 Polygon - gid: 2592 - - POLYGON((153201.327985 513295.818985,153226.912985 513272.838985,153240.302985 513281.911985,153282.966985 513342.907985,153287.232985 513349.007985,153310.162985 513372.145985,153338.326985 513391.395985,153372.548985 513386.775985,153399.672985 513387.103985,153440.243985 513369.694985,153483.249985 513348.552985,153521.235985 513335.287985,153552.489985 513341.581985,153585.786985 513360.695985,153617.380985 513383.704985,153639.382985 513396.019985,153663.846985 513408.126985,153718.985985 513419.295985,153723.902985 513420.291985,153763.134985 513416.882985,153805.106985 513411.106985,153825.172985 513392.221985,153822.154985 513354.195985,153791.182985 513314.212985,153756.511985 513292.424985,153715.682985 513274.824985,153689.942985 513246.766985,153691.749985 513225.302985,153710.502985 513199.946985,153745.088985 513192.753985,153766.799985 513182.803985,153787.870985 513144.522985,153784.039985 513111.169985,153761.533985 513086.127985,153735.204985 513069.676985,153715.986985 513046.641985,153705.754985 513022.981985,153712.351985 512993.515985,153716.387985 512988.183985,153736.567985 512961.525985,153775.863985 512967.269985,153804.701985 512977.344985,153840.921985 512987.562985,153863.302985 513002.651985,153879.277985 513023.277985,153891.556985 513047.051985,153902.749985 513097.542985,153906.019985 513136.783985,153914.811985 513155.032985,153934.801985 513183.161985,153941.688985 513209.182985,153945.277985 513236.635985,153954.682985 513271.076985,153974.307985 513291.640985,153998.334985 513310.524985,154022.287985 513346.805985,154047.856985 513378.812985,154086.098985 513411.216985,154113.196985 513422.599985,154142.014985 513416.474985,154164.428985 513408.373985,154165.569985 513407.127985,154178.679985 513392.818985,154205.335985 513385.772985,154230.846985 513375.101985,154244.263985 513337.841985,154243.386985 513308.802985,154208.806985 513283.898985,154177.676985 513268.476985,154162.078985 513245.276985,154158.446985 513221.398985,154157.986985 513171.460985,154149.270985 513136.844985,154123.459985 513090.000985,154107.167985 513068.292985,154094.948985 513052.011985,154076.373985 513047.009985,154061.578985 513057.829985,154031.411985 513063.123985,153984.551985 513054.041985,153957.058985 513028.116985,153947.947985 513002.556985,153952.346985 512983.883985,153976.123985 512949.924985,153983.887985 512932.847985,153996.487985 512894.246985,154028.021985 512877.669985,154068.066985 512863.923985,154075.796985 512828.768985,154074.893985 512770.551985,154043.848985 512733.687985,154003.264985 512710.015985,153966.255985 512712.388985,153936.827985 512716.348985,153912.933985 512723.953985,153879.560985 512721.080985,153843.470985 512726.852985,153820.456985 512739.259985,153797.975985 512758.057985,153767.137985 512785.980985,153744.767985 512802.198985,153720.964985 512810.467985,153708.070985 512834.152985,153679.882985 512843.837985,153654.329985 512844.694985,153636.123985 512831.799985,153626.553985 512805.764985,153605.236985 512802.037985,153582.908985 512813.348985,153573.985985 512817.868985,153560.453985 512847.489985,153551.985985 512889.573985,153555.109985 512925.676985,153578.672985 512951.618985,153597.250985 512967.807985,153596.944985 512978.668985,153587.475985 512994.806985,153576.295985 513010.457985,153558.742985 513027.177985,153552.552985 513043.269985,153557.760985 513070.500985,153564.618985 513091.397985,153563.372985 513099.704985,153540.931985 513098.182985,153513.679985 513097.136985,153451.601985 513088.120985,153434.166985 513073.086985,153414.508985 513059.064985,153388.431985 513055.047985,153368.376985 513057.902985,153357.554985 513073.586985,153361.949985 513104.716985,153363.585985 513143.808985,153363.701985 513182.599985,153356.162985 513189.535985,153341.513985 513187.480985,153310.732985 513173.723985,153275.728985 513162.829985,153233.550985 513165.629985,153209.115985 513186.380985,153197.266985 513215.733985,153184.292985 513230.539985,153146.242985 513231.663985,153118.440985 513226.217985,153096.885985 513247.200985,153093.357985 513260.228985,153092.263985 513262.605985,153087.803985 513263.035985,153082.778985 513262.845985,153076.497985 513261.659985,153071.281985 513260.063985,153055.923985 513250.436985,153033.931985 513239.087985,153015.307985 513233.412985,153006.635985 513232.228985,152996.172985 513231.665985,152987.242985 513230.525985,152982.556985 513230.723985,152974.418985 513231.858985,152970.794985 513232.794985,152961.965985 513239.194985,152955.583985 513250.126985,152952.564985 513254.159985,152941.417985 513259.329985,152928.100985 513267.043985,152916.934985 513271.741985,152911.597985 513274.544985,152905.880985 513279.270985,152902.860985 513283.303985,152910.867985 513287.443985,152915.392985 513290.322985,152928.090985 513301.585985,152939.258985 513309.171985,152947.015985 513313.813985,152952.723985 513316.300985,152960.090985 513318.841985,152983.972985 513325.878985,152991.794985 513328.551985,152999.927985 513332.409985,153004.955985 513335.231985,153019.213985 513344.762985,153023.201985 513346.836985,153033.085985 513351.198985,153043.206985 513354.628985,153051.243985 513358.682985,153058.527985 513363.312985,153061.845985 513366.353985,153064.669985 513369.434985,153068.040985 513374.363985,153072.140985 513386.330985,153072.901985 513390.757985,153073.871985 513400.687985,153073.924985 513405.177985,153072.405985 513410.305985,153067.072985 513421.537985,153063.536985 513427.582985,153053.230985 513442.950985,153039.346985 513464.721985,153026.435985 513482.811985,153012.952985 513509.466985,153009.212985 513518.289985,153000.494985 513543.991985,152997.121985 513556.173985,152995.943985 513562.563985,152995.654985 513566.242985,152996.366985 513572.809985,152998.891985 513581.458985,153001.483985 513586.984985,153020.855985 513620.435985,153026.242985 513628.995985,153033.223985 513644.556985,153035.690985 513648.323985,153038.496985 513651.695985,153042.246985 513654.701985,153049.671985 513658.825985,153056.569985 513661.100985,153068.194985 513666.667985,153079.818985 513672.234985,153088.929985 513675.960985,153095.902985 513680.122985,153099.932985 513682.158985,153105.266985 513687.400985,153109.487985 513690.840985,153114.233985 513696.130985,153122.711985 513704.466985,153135.555985 513715.121985,153137.765985 513717.391985,153139.714985 513721.448985,153142.866985 513724.734985,153145.367985 513728.862985,153149.163985 513737.372985,153150.038985 513740.992985,153150.096985 513745.498985,153149.465985 513749.556985,153147.941985 513753.792985,153146.556985 513756.418985,153221.601985 513713.434985,153243.039985 513693.223985,153249.433985 513648.436985,153241.906985 513608.578985,153239.679985 513583.675985,153242.975985 513553.159985,153244.171985 513516.224985,153234.234985 513488.502985,153208.367985 513465.446985,153196.520985 513425.096985,153191.753985 513354.604985,153201.327985 513295.818985)) - MULTIPOLYGON(((153314.366408853 513256.946373533,153344.425090418 513299.920762731,153344.428307148 513299.925362002,153345.019027492 513300.770039474,153357.292865102 513313.15521412,153362.514942791 513312.450229054,153373.455864573 513311.781468071,153384.696070673 513311.917391519,153408.891657558 513301.535074788,153450.161712931 513281.246475274,153458.523693422 513277.746131484,153496.509693422 513264.481131484,153509.454653284 513261.219096639,153522.772872664 513260.303733478,153536.04239993 513261.764042798,153567.29639993 513268.058042798,153578.904974802 513271.387624017,153589.828661247 513276.537206147,153623.125661247 513295.651206147,153629.939444942 513300.069585791,153651.402601521 513315.70058439,153634.676215225 513297.467913577,153625.451760944 513285.053823728,153618.969762242 513271.011606082,153615.505862725 513255.938398603,153615.207362908 513240.475181556,153617.014362908 513219.011181556,153619.43248915 513205.423855392,153624.299289231 513192.5096375,153631.44997307 513180.70580391,153650.20297307 513155.34980391,153659.283744334 513145.160222132,153670.060787432 513136.785060901,153682.177189719 513130.501687667,153688.930355783 513128.441002977,153685.92154806 513126.211424445,153677.615653278 513117.723513198,153658.397653278 513094.688513198,153647.148394857 513076.411911219,153637.42076158 513053.918185328,153637.324677965 513054.052693795,153632.951539397 513059.089474235,153635.879610916 513068.011595924,153639.353840605 513085.097083656,153638.789276955 513102.523082361,153637.543276955 513110.830082361,153634.201590111 513124.368899897,153628.411229936 513137.055041166,153620.372379684 513148.449923257,153610.362956986 513158.159604431,153598.729005737 513165.8484034,153585.872732732 513171.250504441,153572.238602643 513174.179147122,153558.297972073 513174.533082957,153536.95533708 513173.085576586,153510.803415323 513172.081800344,153502.900335114 513171.358270009,153440.822335114 513162.342270009,153438.640153453 513161.811056861,153438.701649662 513182.375707175,153437.138951167 513197.831925132,153432.425490879 513212.634627326,153424.763496524 513226.148714148,153414.481700623 513237.794373132,153406.942700623 513244.730373132,153393.622779106 513254.511086581,153378.484258408 513261.137386896,153362.262083874 513264.287580253,153345.743810109 513263.808730975,153331.094810109 513261.753730975,153314.366408853 513256.946373533)),((153663.604508215 512933.649641924,153674.652150649 512919.055585829,153656.843931777 512919.652840303,153654.048229341 512919.443407929,153657.699714222 512923.412589569,153663.604508215 512933.649641924)),((153758.883863202 512888.990949085,153786.711657314 512893.058611173,153800.600235846 512896.466610122,153827.272897789 512905.785115881,153861.285378758 512915.380354162,153872.465013832 512919.518607333,153882.847749304 512925.375926157,153895.692678836 512934.035822574,153910.714944618 512912.580587528,153913.88546164 512905.607001851,153925.190173663 512870.974209091,153930.971355511 512857.742584438,153939.180996602 512845.864042957,153949.51479589 512835.778878268,153961.58971764 512827.860910141,153993.12371764 512811.283910141,154000.467606639 512808.115371856,154000.317352548 512798.428392478,153994.845561675 512791.930982307,153985.236205669 512786.325998191,153973.665681018 512787.067894892,153953.32758408 512789.804705544,153935.680678951 512795.421375566,153921.251842618 512798.491312861,153906.501211173 512798.677605234,153882.307675006 512796.594842839,153867.870062007 512798.903900812,153862.737031022 512801.671151852,153847.220330287 512814.645794457,153817.478242466 512841.57647473,153811.160108057 512846.702090734,153788.790108057 512862.920090734,153773.268486522 512871.017112799,153766.206508123 512881.53716961,153758.883863202 512888.990949085)),((153990.108182012 513131.514460519,153995.936815762 513139.716243348,154002.712902558 513151.332638848,154007.305505499 513163.972417125,154014.192505499 513189.993417125,154016.056172848 513199.460774779,154018.980204051 513221.827291528,154022.036739822 513233.020289774,154024.865966578 513235.984886921,154044.680163522 513251.557837979,154053.512327266 513259.726747821,154060.924709775 513269.202759109,154083.006073029 513302.648838523,154101.904440147 513326.305611818,154122.168713438 513343.476353717,154123.380753089 513342.153464673,154133.958162066 513332.611356302,154136.654555011 513330.981247067,154133.313214698 513328.948927954,154123.567306259 513320.411007245,154115.43630788 513310.323109212,154099.83830788 513287.123109212,154092.193301943 513272.498140444,154087.931829395 513256.555252408,154084.299829395 513232.677252408,154083.450166684 513222.089812354,154083.072573594 513181.097978162,154078.906777441 513164.553324694,154062.016455659 513133.899330911,154044.375613461 513136.995118314,154030.747603531 513138.121042257,154017.141679456 513136.753859234,153990.108182012 513131.514460519)),((153129.558892559 513463.256147829,153128.274910414 513465.451190834,153125.827034416 513469.355580607,153116.002068797 513484.006276477,153102.582457504 513505.049085282,153100.393635915 513508.291543318,153090.790757281 513521.74643252,153081.018927562 513541.064694122,153079.347575667 513545.007565183,153073.620678631 513561.891335271,153085.066941185 513581.656404892,153089.719238659 513589.048954806,153093.155431415 513595.464797976,153100.588321987 513599.024273401,153100.590588832 513599.025358999,153110.237478323 513603.645475464,153117.319437878 513606.54168678,153127.369021378 513611.56036014,153132.077087556 513614.370480811,153133.752777555 513615.217057693,153143.648069656 513621.216459835,153152.502673599 513628.666669284,153155.350295181 513631.465175534,153156.868974625 513632.702857904,153165.313688058 513640.756148192,153168.491595461 513644.298316368,153173.036019042 513648.766624338,153173.195605074 513648.899012159,153168.20959292 513622.496398573,153167.205092577 513615.259349391,153164.978092577 513590.356349391,153165.113666398 513575.622157955,153168.106611313 513547.911991985,153168.669434958 513530.530811951,153158.464435212 513521.434802591,153148.98341495 513511.256076238,153141.545183943 513499.501547968,153136.405612332 513486.575565644,153129.558892559 513463.256147829))) - - #93 Polygon - gid: 2593 - - POLYGON((144142.989985 514088.951985,144136.449985 514054.961985,144132.731985 514033.263985,144127.866985 514013.332985,144126.033985 514004.523985,144123.194985 513984.498985,144121.950985 513977.743985,144119.474985 513965.987985,144116.997985 513955.498985,144114.004985 513944.396985,144111.364985 513935.792985,144104.055985 513915.874985,144099.268985 513901.813985,144095.552985 513888.833985,144092.293985 513878.724985,144090.002985 513870.475985,144088.955985 513866.101985,144087.123985 513855.157985,144085.447985 513846.294985,144084.879985 513841.845985,144084.800985 513839.927985,144085.669985 513820.505985,144086.874985 513812.816985,144087.854985 513808.424985,144085.355985 513807.847985,144081.847985 513810.575985,144081.061985 513814.139985,144080.321985 513815.397985,144076.741985 513819.927985,144070.813985 513826.699985,144068.515985 513829.942985,144066.267985 513833.838985,144065.506985 513835.614985,144064.259985 513839.956985,144063.081985 513846.147985,144062.077985 513852.889985,144060.916985 513861.814985,144059.234985 513868.846985,144058.119985 513877.778985,144056.474985 513887.398985,144055.675985 513904.802985,144055.567985 513911.744985,144055.264985 513916.555985,144053.261985 513926.195985,144051.759985 513939.993985,144051.299985 513947.409985,144050.945985 513963.879985,144051.901985 513981.625985,144052.777985 514006.209985,144052.802985 514010.705985,144052.525985 514016.993985,144051.223985 514036.894985,144051.208985 514041.388985,144051.664985 514047.744985,144052.166985 514052.223985,144053.651985 514062.584985,144054.499985 514067.055985,144055.829985 514071.244985,144056.995985 514072.928985,144061.349985 514075.995985,144065.576985 514077.579985,144071.276985 514083.651985,144073.625985 514085.443985,144077.782985 514087.370985,144083.025985 514085.365985,144087.943985 514084.820985,144092.174985 514086.440985,144096.761985 514089.493985,144100.786985 514096.214985,144106.124985 514105.807985,144109.287985 514110.877985,144111.976985 514114.527985,144115.094985 514118.007985,144119.064985 514120.147985,144120.248985 514120.616985,144124.620985 514121.695985,144137.912985 514121.582985,144151.392985 514120.745985,144147.230985 514106.336985,144142.989985 514088.951985)) - POLYGON( EMPTY) - - #94 Polygon - gid: 2594 - - POLYGON((146479.081985 514136.773985,146478.714985 514132.400985,146477.568985 514128.020985,146476.252985 514124.982985,146473.696985 514121.266985,146471.885985 514119.791985,146467.951985 514117.478985,146464.896985 514115.364985,146459.731985 514111.590985,146449.118985 514103.426985,146445.431985 514100.853985,146438.988985 514097.422985,146420.476985 514084.864985,146410.008985 514078.144985,146406.594985 514075.475985,146403.293985 514072.424985,146402.417985 514071.373985,146399.916985 514067.612985,146396.063985 514062.810985,146394.253985 514060.275985,146390.917985 514055.377985,146385.928985 514047.887985,146381.971985 514040.637985,146371.896985 514023.770985,146363.206985 514010.769985,146359.366985 514005.398985,146356.174985 514000.205985,146350.242985 513986.956985,146348.661985 513982.759985,146348.018985 513980.004985,146345.920985 513967.273985,146343.206985 513954.080985,146342.126985 513949.607985,146340.683985 513945.344985,146336.388985 513938.017985,146333.562985 513933.769985,146325.253985 513924.184985,146323.627985 513922.704985,146316.621985 513917.038985,146310.551985 513911.712985,146307.028985 513908.936985,146303.951985 513907.084985,146299.856985 513905.177985,146294.015985 513903.097985,146288.626985 513900.881985,146284.619985 513897.582985,146282.346985 513893.679985,146280.440985 513888.656985,146279.676985 513884.231985,146279.152985 513879.731985,146278.585985 513876.871985,146278.129985 513872.432985,146278.560985 513870.690985,146280.450985 513866.529985,146282.958985 513858.900985,146284.615985 513854.733985,146286.254985 513851.405985,146288.509985 513847.461985,146291.167985 513843.864985,146292.806985 513842.160985,146296.325985 513839.297985,146300.136985 513836.851985,146302.653985 513835.598985,146311.462985 513832.015985,146315.327985 513829.714985,146320.784985 513825.997985,146328.041985 513820.671985,146334.570985 513816.117985,146337.956985 513813.151985,146340.303985 513810.793985,146346.430985 513804.195985,146350.723985 513799.305985,146354.581985 513794.164985,146356.967985 513790.337985,146359.098985 513786.371985,146356.925985 513784.344985,146353.343985 513781.608985,146351.160985 513780.340985,146347.127985 513778.317985,146341.387985 513775.017985,146334.128985 513769.411985,146330.367985 513766.944985,146326.816985 513765.066985,146321.737985 513762.782985,146317.469985 513761.348985,146307.868985 513759.381985,146298.937985 513757.947985,146293.990985 513756.697985,146290.285985 513754.090985,146283.117985 513750.818985,146281.983985 513750.147985,146274.500985 513745.136985,146267.323985 513740.889985,146260.479985 513737.509985,146252.565985 513731.306985,146244.686985 513726.625985,146240.634985 513724.637985,146236.699985 513722.476985,146231.698985 513718.659985,146224.714985 513712.958985,146211.868985 513703.630985,146205.062985 513697.739985,146194.890985 513691.020985,146191.411985 513688.135985,146188.225985 513684.826985,146185.687985 513681.124985,146181.993985 513674.493985,146178.581985 513666.935985,146177.129985 513662.679985,146176.213985 513658.394985,146175.616985 513653.926985,146175.504985 513652.576985,146175.600985 513647.593985,146176.461985 513643.173985,146178.964985 513636.048985,146180.631985 513631.864985,146183.762985 513624.568985,146186.478985 513619.197985,146188.785985 513615.318985,146192.164985 513610.645985,146195.164985 513607.272985,146198.434985 513604.177985,146213.147985 513593.658985,146218.529985 513590.075985,146226.316985 513585.557985,146231.500985 513581.909985,146235.294985 513579.520985,146244.772985 513575.912985,146248.280985 513573.656985,146252.907985 513570.075985,146259.880985 513564.383985,146265.073985 513560.374985,146266.003985 513559.291985,146268.532985 513555.045985,146270.217985 513550.871985,146271.596985 513546.578985,146272.254985 513544.163985,146272.984985 513538.959985,146272.872985 513534.455985,146272.384985 513529.970985,146271.633985 513526.049985,146270.401985 513521.714985,146268.823985 513517.605985,146264.736985 513508.248985,146262.619985 513504.303985,146260.103985 513501.227985,146255.643985 513496.995985,146252.055985 513494.269985,146242.001985 513487.640985,146234.786985 513483.442985,146230.921985 513480.977985,146227.280985 513478.321985,146223.757985 513475.497985,146220.334985 513472.346985,146217.293985 513469.037985,146214.461985 513465.521985,146211.480985 513461.477985,146209.011985 513457.691985,146206.944985 513453.700985,146206.040985 513450.812985,146204.852985 513446.079985,146201.554985 513437.705985,146199.723985 513430.002985,146198.858985 513423.346985,146198.729985 513418.833985,146198.981985 513413.944985,146199.585985 513409.495985,146202.341985 513393.330985,146204.018985 513381.604985,146204.289985 513377.137985,146203.940985 513373.739985,146202.588985 513368.770985,146201.014985 513364.562985,146193.633985 513347.926985,146188.343985 513337.470985,146179.395985 513322.231985,146177.406985 513317.723985,146176.277985 513313.368985,146175.554985 513308.909985,146174.522985 513300.450985,146173.700985 513291.481985,146173.067985 513279.144985,146173.153985 513274.609985,146173.776985 513270.271985,146175.536985 513266.566985,146178.912985 513263.457985,146160.329985 513252.483985,146153.075985 513248.510985,146144.955985 513244.623985,146137.312985 513241.362985,146125.568985 513235.881985,146114.189985 513230.108985,146101.309985 513223.226985,146097.454985 513220.539985,146094.341985 513217.256985,146091.850985 513213.488985,146083.684985 513205.357985,146082.597985 513212.274985,146081.647985 513216.686985,146080.306985 513221.732985,146078.908985 513226.013985,146077.270985 513230.221985,146075.406985 513234.316985,146075.851985 513239.281985,146074.445985 513243.892985,146070.610985 513252.849985,146068.317985 513256.754985,146065.673985 513260.377985,146063.670985 513262.207985,146060.010985 513264.884985,146055.763985 513268.385985,146048.871985 513273.568985,146045.377985 513276.403985,146037.835985 513283.388985,146032.176985 513288.382985,146030.188985 513290.728985,146026.831985 513295.149985,146023.917985 513299.329985,146022.121985 513303.449985,146018.110985 513313.677985,146016.770985 513317.973985,146015.995985 513322.317985,146015.430985 513326.785985,146015.139985 513330.588985,146015.036985 513335.089985,146019.408985 513334.005985,146022.631985 513333.471985,146027.107985 513333.051985,146041.611985 513332.575985,146049.738985 513332.923985,146054.240985 513332.921985,146063.738985 513332.380985,146070.654985 513331.525985,146075.071985 513330.688985,146087.871985 513327.862985,146093.290985 513327.494985,146095.749985 513331.216985,146097.615985 513335.493985,146099.166985 513339.883985,146099.857985 513344.684985,146099.817985 513346.552985,146099.080985 513351.001985,146097.127985 513355.574985,146093.783985 513361.802985,146091.249985 513365.509985,146084.546985 513374.375985,146081.780985 513377.936985,146080.165985 513379.645985,146076.645985 513382.432985,146072.783985 513384.802985,146066.921985 513387.233985,146054.515985 513394.555985,146051.789985 513396.322985,146039.520985 513406.330985,146029.153985 513416.300985,146025.727985 513419.223985,146023.019985 513421.304985,146019.116985 513423.591985,146017.345985 513424.834985,146012.642985 513430.297985,146007.454985 513434.794985,146004.348985 513438.307985,146002.742985 513439.282985,145998.366985 513439.664985,145993.737985 513439.140985,145988.546985 513437.396985,145980.808985 513433.869985,145976.757985 513431.823985,145974.597985 513431.066985,145970.142985 513430.351985,145965.622985 513430.248985,145960.693985 513431.184985,145956.534985 513432.407985,145952.110985 513433.378985,145950.366985 513433.996985,145946.424985 513436.225985,145944.222985 513438.024985,145941.424985 513441.523985,145937.088985 513448.257985,145934.927985 513452.199985,145933.224985 513456.550985,145931.146985 513462.688985,145928.360985 513469.576985,145926.520985 513475.958985,145924.971985 513480.182985,145920.025985 513492.681985,145911.406985 513513.274985,145907.967985 513524.157985,145905.191985 513532.021985,145901.510985 513544.159985,145897.336985 513555.604985,145896.428985 513560.011985,145897.275985 513564.439985,145899.152985 513569.022985,145905.340985 513581.631985,145908.586985 513587.097985,145910.309985 513591.256985,145912.982985 513600.599985,145913.783985 513605.107985,145915.301985 513610.334985,145916.864985 513614.554985,145918.881985 513618.827985,145920.821985 513621.986985,145923.849985 513625.397985,145925.144985 513626.290985,145929.423985 513627.576985,145936.173985 513629.294985,145938.023985 513629.934985,145941.998985 513632.053985,145945.757985 513635.203985,145947.126985 513636.582985,145950.141985 513639.958985,145951.459985 513641.863985,145953.146985 513646.046985,145953.414985 513647.191985,145953.874985 513651.661985,145954.096985 513658.513985,145954.043985 513662.795985,145953.626985 513671.814985,145953.228985 513676.297985,145952.779985 513679.412985,145951.502985 513683.703985,145949.833985 513687.915985,145947.235985 513696.116985,145944.953985 513705.922985,145943.415985 513710.166985,145941.636985 513714.326985,145939.837985 513717.738985,145937.228985 513721.588985,145934.193985 513724.196985,145929.917985 513725.238985,145925.266985 513725.352985,145917.072985 513724.542985,145912.531985 513724.375985,145908.987985 513724.705985,145904.524985 513726.029985,145901.883985 513727.777985,145899.550985 513731.507985,145897.946985 513735.873985,145896.436985 513740.961985,145895.477985 513745.374985,145894.359985 513752.883985,145894.105985 513759.166985,145894.366985 513763.684985,145894.953985 513768.180985,145895.652985 513771.335985,145898.043985 513775.170985,145904.293985 513779.456985,145907.725985 513782.450985,145911.235985 513785.240985,145916.251985 513786.864985,145928.643985 513788.724985,145938.188985 513791.948985,145949.160985 513795.142985,145953.342985 513796.792985,145961.102985 513800.269985,145971.617985 513805.424985,145979.736985 513808.676985,145983.834985 513810.547985,145990.251985 513813.832985,145996.957985 513818.576985,146007.477985 513824.220985,146011.119985 513826.855985,146019.141985 513833.212985,146024.607985 513838.295985,146044.502985 513858.336985,146047.324985 513861.479985,146050.061985 513865.094985,146051.186985 513867.257985,146052.620985 513871.495985,146055.812985 513883.744985,146056.619985 513887.643985,146056.676985 513893.498985,146055.930985 513897.935985,146054.457985 513909.647985,146051.861985 513924.853985,146051.872985 513940.661985,146052.072985 513947.397985,146052.482985 513950.679985,146054.529985 513959.445985,146057.420985 513969.123985,146060.476985 513967.705985,146064.865985 513966.275985,146069.275985 513965.468985,146070.291985 513965.510985,146074.526985 513967.314985,146081.217985 513970.595985,146082.397985 513970.826985,146086.929985 513970.967985,146092.645985 513971.828985,146113.599985 513974.332985,146133.112985 513975.402985,146136.737985 513974.998985,146147.199985 513973.338985,146151.996985 513972.512985,146156.382985 513971.516985,146157.539985 513971.824985,146161.637985 513973.850985,146174.892985 513977.638985,146178.820985 513979.847985,146184.075985 513982.181985,146186.092985 513984.501985,146188.418985 513988.437985,146193.920985 514000.829985,146196.035985 514004.799985,146200.597985 514012.678985,146209.606985 514027.052985,146214.200985 514032.039985,146221.768985 514039.326985,146230.115985 514046.868985,146233.730985 514049.498985,146235.757985 514050.548985,146252.830985 514056.920985,146259.961985 514059.868985,146264.241985 514061.286985,146268.851985 514062.519985,146273.342985 514062.849985,146274.575985 514062.465985,146282.815985 514058.754985,146286.427985 514057.728985,146290.885985 514057.127985,146293.866985 514057.134985,146298.432985 514057.472985,146303.313985 514058.553985,146307.456985 514062.565985,146313.362985 514069.361985,146320.712985 514078.294985,146323.474985 514081.845985,146325.878985 514085.271985,146329.490985 514090.982985,146339.561985 514107.851985,146346.200985 514119.450985,146349.975985 514124.212985,146355.077985 514130.172985,146358.228985 514133.359985,146360.327985 514134.759985,146364.444985 514136.649985,146368.646985 514138.201985,146373.966985 514138.806985,146382.511985 514135.796985,146385.640985 514135.815985,146392.037985 514137.070985,146401.238985 514140.001985,146405.401985 514141.678985,146408.384985 514143.356985,146418.276985 514149.793985,146422.151985 514152.075985,146427.537985 514154.576985,146432.140985 514156.430985,146436.476985 514157.642985,146444.150985 514161.340985,146449.150985 514162.902985,146456.343985 514163.308985,146460.788985 514163.007985,146462.874985 514161.871985,146466.456985 514158.988985,146471.437985 514155.719985,146473.998985 514152.004985,146475.591985 514148.803985,146477.255985 514144.618985,146478.341985 514141.194985,146479.081985 514136.773985)) - MULTIPOLYGON(((146011.847522543 513740.890335071,146014.984307229 513742.322478592,146018.011201398 513743.787321187,146024.428201398 513747.072321187,146033.566291871 513752.604961839,146036.493665821 513754.675862826,146042.935029827 513758.13166686,146051.440930471 513763.45702014,146055.082930471 513766.09202014,146057.700853077 513768.074842368,146065.722853077 513774.431842368,146070.2158857 513778.290706576,146075.6818857 513783.373706576,146077.834518588 513785.457210202,146097.729518588 513805.498210202,146100.309160202 513808.23039053,146103.131160202 513811.37339053,146107.119921677 513816.207857286,146109.856921677 513819.822857286,146116.600222878 513830.48771842,146117.725222878 513832.65071842,146122.230218704 513843.219288178,146123.664218704 513847.457288178,146125.197185838 513852.583156763,146128.389185838 513864.832156763,146129.256356421 513868.543958907,146130.063356421 513872.442958907,146131.616431173 513886.913874422,146131.673431173 513892.768874422,146131.108825876 513899.953929188,146134.959352858 513899.34296811,146137.318948726 513898.93666705,146139.774375819 513898.379073483,146157.765635587 513896.529730901,146175.676491337 513899.041053732,146176.833491337 513899.349053732,146186.164377291 513902.857601769,146195.501380849 513905.525920854,146209.222567228 513911.251698752,146206.534467748 513901.417341877,146205.770467748 513896.992341877,146205.1803459 513892.906704753,146204.989884337 513891.271061556,146203.978602791 513884.536090945,146203.522602791 513880.097090945,146203.314130135 513867.180570234,146205.325260586 513854.419875801,146205.756260586 513852.677875802,146210.275071433 513839.674311931,146210.477032007 513839.229678096,146211.710284299 513835.478289843,146213.266858336 513831.188037104,146214.923858336 513827.021037104,146217.332991849 513821.597919563,146218.971991849 513818.269919563,146221.145894415 513814.179565307,146223.400894415 513810.235565307,146227.060181039 513804.624529814,146214.213235884 513796.538689257,146210.103192982 513793.317234099,146208.958646493 513792.637246522,146207.600077938 513791.970703016,146204.532771508 513790.377091938,146200.597771508 513788.216091938,146191.196115791 513782.095756264,146186.195115791 513778.278756264,146184.271868982 513776.760489871,146178.930882644 513772.400672701,146167.80106412 513764.318861461,146162.78504905 513760.338720202,146159.661996558 513757.635531511,146153.554337978 513753.601186446,146147.016034602 513748.753030905,146143.537034602 513745.868030905,146137.384343372 513740.155346205,146134.198343372 513736.846346205,146126.367313328 513727.23576639,146123.829313328 513723.53376639,146120.168646448 513717.62452302,146116.474646448 513710.99352302,146113.636813155 513705.353295708,146110.224813155 513697.795295708,146107.599279608 513691.152829039,146106.147279608 513686.896829039,146103.787047984 513678.358428479,146102.871047984 513674.073428479,146101.874656251 513668.327970511,146101.277656251 513663.859970511,146100.873767208 513660.127903811,146100.761767208 513658.777903811,146100.518899611 513651.132340369,146100.614899612 513646.149340369,146101.984689183 513633.253797059,146102.845689183 513628.833797059,146105.701299377 513618.315880282,146108.204299377 513611.190880282,146109.291399104 513608.289456394,146110.958399104 513604.105456394,146111.710285435 513602.287978238,146114.841285435 513594.991978238,146116.833661888 513590.724255606,146119.549661888 513585.353255606,146122.017937054 513580.860362517,146124.324937054 513576.981362517,146128.010088172 513571.37253617,146131.389088172 513566.69953617,146136.123955204 513560.802199235,146139.123955204 513557.429199235,146143.609554063 513552.802465075,146146.879554063 513549.707465075,146154.815451024 513543.167033067,146169.528451024 513532.648033067,146171.585632309 513531.2284569,146172.731747701 513530.46544474,146169.539682841 513527.527029206,146165.112892883 513523.096571621,146162.071892883 513519.787571621,146158.884736665 513516.084342021,146156.052736665 513512.568342021,146154.091428412 513510.023624266,146151.110428412 513505.979624266,146148.659199946 513502.446550055,146146.190199946 513498.660550055,146142.413986224 513492.184108145,146140.346986224 513488.193108145,146135.369578457 513476.105475136,146134.465578457 513473.217475136,146133.297507522 513469.071859128,146133.291225392 513469.04683108,146131.771944583 513465.189202972,146128.588019266 513455.05020339,146126.757019266 513447.34720339,146125.349413787 513439.66855052,146125.333509108 513439.54616724,146123.202128707 513441.233711893,146115.873841133 513446.356183474,146112.011841133 513448.726183474,146101.514293052 513454.08190964,146100.511940734 513454.497590036,146095.499821203 513457.455734419,146089.301229719 513462.512014765,146081.141827901 513470.358955647,146077.832919083 513473.356759262,146074.406919083 513476.279759262,146071.427632069 513478.69281934,146068.719632069 513480.77381934,146066.359203061 513482.363239454,146061.767349912 513486.970701292,146060.053668985 513488.456133661,146052.447934138 513495.853541664,146043.270261658 513502.418313523,146041.664261658 513503.393313523,146026.075330476 513510.561324309,146009.265256284 513513.998846618,146004.889256284 513514.380846618,145992.162649537 513514.217644662,145989.764384456 513520.278282601,145989.210645291 513521.638552137,145981.900192566 513539.105097324,145979.482413151 513546.756360302,145978.690931684 513549.123257126,145976.475479026 513555.399308892,145976.438362152 513555.521700801,145977.876266427 513558.392663553,145979.599266427 513562.551663553,145981.828103128 513568.939622633,145990.170574216 513574.569221868,145993.929574216 513577.719221868,145998.983628831 513582.364313931,146000.352628831 513583.743313931,146003.066429269 513586.625217087,146006.081429269 513590.001217087,146011.819217687 513597.286757872,146013.137217687 513599.191757872,146021.016327875 513613.811976769,146022.703327875 513617.994976769,146026.173297299 513628.954363433,146026.441297299 513630.099363433,146028.020982394 513639.514410324,146028.480982394 513643.984410324,146028.835651666 513649.233311912,146029.057651666 513656.085311912,146029.091240665 513659.44221843,146029.038240665 513663.72421843,146028.963947968 513666.259963774,146028.546947968 513675.278963774,146028.333151116 513678.447386096,146027.935151116 513682.930386096,146027.461793032 513686.99799489,146027.012793032 513690.11299489,146024.664272548 513700.805722171,146023.387272548 513705.096722171,146021.228562699 513711.332662394,146020.533592679 513713.086535207,146019.619527672 513715.971926707,146018.002063619 513722.922344107,146015.466585062 513731.476325928,146013.928585062 513735.720325927,146012.374991285 513739.656906197,146011.847522543 513740.890335071)),((146263.503396356 513971.644383436,146264.845146421 513973.961711091,146269.154816161 513980.837856373,146272.633703185 513984.187572248,146272.694587294 513984.174888747,146272.160337612 513980.932976116,146271.322748897 513976.861381452,146269.459899281 513975.354829079,146267.156598206 513973.414294395,146266.521108814 513972.856696948,146265.492769349 513972.462429559,146263.503396356 513971.644383436))) - - #95 Polygon - gid: 2595 - - POLYGON((152747.244985 514163.075985,152750.222985 514162.865985,152762.227985 514163.357985,152765.838985 514164.275985,152776.630985 514167.853985,152784.077985 514169.654985,152795.626985 514175.727985,152800.056985 514177.203985,152805.566985 514178.290985,152810.480985 514178.365985,152815.012985 514179.178985,152819.420985 514179.392985,152823.072985 514177.882985,152827.019985 514175.502985,152835.565985 514171.245985,152837.084985 514170.146985,152841.503985 514165.822985,152844.238985 514162.245985,152847.722985 514154.557985,152849.262985 514149.500985,152849.452985 514142.388985,152850.715985 514130.165985,152854.579985 514108.250985,152855.312985 514098.346985,152857.278985 514089.733985,152859.500985 514081.827985,152862.415985 514074.361985,152866.473985 514066.324985,152871.582985 514058.454985,152874.488985 514054.574985,152880.379985 514047.771985,152891.153985 514036.794985,152902.009985 514027.885985,152907.437985 514023.431985,152923.267985 514009.540985,152929.973985 514004.580985,152935.475985 514001.216985,152939.529985 513999.220985,152947.627985 513996.379985,152952.070985 513995.270985,152956.453985 513994.775985,152957.977985 513995.027985,152962.007985 513997.311985,152968.886985 514002.852985,152975.323985 514007.391985,152983.086985 514014.935985,152989.043985 514019.895985,152995.859985 514027.807985,153008.635985 514044.568985,153011.618985 514047.976985,153014.918985 514050.909985,153017.338985 514052.376985,153021.618985 514054.009985,153026.424985 514055.095985,153030.899985 514055.144985,153055.639985 514052.224985,153061.294985 514050.966985,153068.401985 514047.971985,153084.487985 514042.766985,153091.735985 514040.113985,153096.408985 514037.940985,153103.935985 514032.998985,153110.244985 514027.659985,153117.783985 514020.217985,153122.060985 514015.234985,153127.554985 514008.104985,153139.559985 513997.107985,153145.303985 513992.530985,153154.505985 513987.088985,153158.166985 513984.484985,153163.747985 513978.577985,153171.147985 513969.045985,153173.668985 513965.324985,153180.637985 513949.947985,153183.187985 513942.152985,153188.073985 513933.422985,153189.159985 513929.039985,153190.078985 513921.778985,153190.426985 513916.983985,153190.068985 513912.495985,153185.862985 513905.476985,153179.518985 513886.559985,153176.400985 513880.496985,153172.336985 513874.800985,153160.951985 513862.562985,153156.433985 513856.339985,153151.396985 513851.959985,153142.738985 513842.886985,153135.922985 513834.974985,153130.949985 513828.224985,153126.944985 513825.146985,153119.109985 513820.649985,153115.239985 513819.412985,153111.703985 513816.997985,153095.957985 513803.789985,153090.619985 513800.267985,153086.268985 513799.212985,153079.246985 513798.413985,153077.385985 513798.511985,153069.766985 513801.027985,153052.681985 513805.263985,153048.530985 513806.983985,153035.310985 513813.782985,153022.371985 513819.572985,153010.779985 513826.491985,152998.307985 513832.718985,152986.401985 513840.022985,152978.337985 513844.031985,152964.726985 513848.610985,152951.529985 513853.757985,152928.653985 513860.833985,152920.997985 513862.406985,152912.173985 513864.930985,152904.462985 513866.658985,152895.879985 513868.220985,152890.402985 513868.449985,152880.815985 513868.059985,152864.829985 513865.581985,152860.332985 513865.146985,152857.986985 513864.721985,152853.735985 513863.281985,152848.769985 513861.216985,152840.910985 513857.601985,152835.803985 513854.706985,152824.859985 513844.217985,152823.050985 513842.027985,152821.482985 513837.821985,152820.962985 513835.100985,152820.667985 513827.554985,152821.148985 513823.064985,152824.742985 513813.937985,152825.940985 513811.508985,152828.593985 513807.866985,152833.790985 513803.295985,152841.590985 513798.778985,152861.106985 513792.783985,152881.771985 513783.860985,152889.672985 513781.216985,152894.045985 513780.183985,152911.753985 513777.044985,152924.313985 513773.178985,152938.498985 513764.447985,152941.841985 513761.432985,152945.914985 513756.742985,152948.841985 513750.352985,152950.467985 513745.487985,152951.187985 513740.696985,152949.197985 513726.637985,152944.856985 513711.713985,152938.590985 513697.248985,152932.892985 513679.260985,152932.052985 513669.392985,152932.301985 513664.167985,152931.064985 513655.751985,152930.540985 513640.871985,152928.716985 513629.667985,152928.469985 513624.260985,152929.623985 513618.961985,152936.827985 513594.240985,152925.855985 513592.298985,152912.444985 513589.295985,152892.923985 513586.002985,152884.722985 513585.253985,152873.280985 513582.877985,152865.965985 513582.437985,152861.459985 513582.424985,152855.123985 513582.942985,152846.852985 513582.590985,152842.379985 513582.092985,152823.641985 513578.893985,152820.885985 513578.940985,152812.601985 513580.109985,152802.841985 513582.175985,152789.868985 513585.914985,152777.216985 513587.422985,152765.958985 513589.763985,152750.899985 513591.610985,152742.030985 513593.139985,152729.904985 513596.497985,152719.099985 513598.801985,152715.833985 513600.302985,152709.204985 513604.531985,152705.819985 513607.458985,152704.964985 513608.634985,152703.307985 513612.868985,152703.112985 513614.477985,152703.547985 513619.000985,152706.348985 513625.244985,152709.568985 513633.649985,152711.881985 513642.244985,152712.847985 513647.448985,152711.808985 513652.345985,152708.137985 513655.059985,152704.382985 513656.694985,152698.688985 513658.421985,152692.786985 513659.189985,152681.958985 513659.969985,152674.629985 513659.687985,152661.943985 513657.891985,152655.571985 513657.466985,152649.688985 513657.947985,152642.863985 513657.559985,152626.064985 513657.514985,152613.920985 513660.400985,152600.982985 513666.190985,152597.955985 513667.872985,152594.342985 513670.518985,152593.520985 513671.490985,152588.828985 513680.433985,152585.901985 513686.823985,152583.628985 513692.792985,152581.790985 513698.405985,152581.080985 513702.833985,152581.877985 513705.678985,152584.660985 513710.396985,152589.111985 513713.700985,152592.947985 513716.057985,152598.515985 513718.920985,152602.238985 513721.449985,152606.006985 513724.926985,152607.497985 513725.822985,152629.149985 513736.282985,152634.862985 513738.251985,152644.738985 513740.211985,152650.242985 513741.654985,152654.804985 513742.227985,152659.856985 513743.707985,152664.473985 513745.695985,152668.657985 513748.192985,152675.140985 513751.447985,152680.210985 513753.398985,152686.638985 513755.238985,152695.915985 513759.948985,152707.390985 513764.833985,152716.642985 513767.925985,152723.560985 513770.672985,152731.786985 513774.899985,152737.193985 513778.352985,152746.398985 513785.838985,152754.987985 513796.492985,152757.040985 513801.273985,152757.627985 513806.000985,152756.984985 513813.706985,152755.505985 513821.538985,152752.715985 513831.219985,152746.744985 513843.680985,152735.140985 513857.735985,152731.651985 513863.630985,152729.550985 513867.824985,152727.840985 513872.403985,152725.525985 513876.860985,152725.078985 513881.527985,152733.081985 513886.294985,152737.828985 513891.584985,152743.443985 513895.856985,152749.473985 513899.149985,152760.195985 513906.316985,152778.305985 513916.664985,152782.507985 513919.632985,152790.819985 513923.211985,152794.352985 513925.072985,152817.785985 513939.459985,152822.336985 513942.969985,152833.310985 513952.333985,152840.480985 513959.124985,152843.334985 513962.648985,152845.629985 513966.518985,152848.522985 513974.605985,152852.091985 513987.549985,152853.072985 513992.664985,152852.731985 513997.167985,152851.866985 514000.228985,152845.740985 514015.720985,152841.492985 514023.165985,152838.001985 514026.762985,152835.133985 514029.112985,152831.380985 514031.563985,152825.534985 514032.987985,152804.881985 514042.418985,152800.333985 514043.552985,152795.944985 514042.505985,152778.924985 514036.800985,152772.912985 514033.979985,152769.227985 514032.625985,152765.542985 514031.270985,152760.435985 514028.375985,152750.277985 514024.001985,152741.910985 514019.008985,152724.617985 514010.196985,152714.925985 514002.288985,152703.547985 513989.970985,152694.149985 513980.780985,152690.812985 513977.762985,152679.079985 513968.842985,152671.575985 513961.828985,152663.594985 513953.465985,152656.937985 513947.411985,152652.772985 513945.386985,152646.215985 513940.244985,152632.252985 513931.449985,152611.390985 513920.380985,152604.472985 513917.634985,152601.112985 513916.755985,152595.709985 513915.766985,152583.472985 513914.620985,152579.510985 513917.783985,152574.246985 513922.472985,152565.980985 513931.665985,152557.589985 513944.756985,152554.632985 513949.932985,152545.321985 513972.156985,152541.526985 513979.564985,152540.007985 513981.605985,152536.733985 513984.688985,152535.315985 513985.408985,152530.905985 513986.584985,152525.946985 513987.463985,152513.202985 513986.612985,152499.250985 513983.503985,152489.827985 513980.953985,152480.251985 513979.844985,152468.426985 513980.337985,152456.720985 513981.769985,152450.800985 513981.307985,152443.107985 513981.936985,152431.715985 513982.252985,152425.601985 513983.102985,152415.362985 513985.867985,152401.539985 513988.792985,152397.098985 513989.485985,152382.988985 513990.080985,152378.507985 513990.059985,152367.405985 513987.636985,152353.905985 513987.813985,152328.397985 513985.641985,152326.159985 513984.727985,152343.155985 514009.776985,152345.547985 514013.575985,152348.450985 514020.382985,152350.886985 514024.172985,152354.067985 514027.864985,152361.872985 514039.241985,152375.524985 514057.714985,152380.879985 514063.460985,152384.223985 514066.497985,152391.301985 514072.064985,152399.165985 514075.815985,152403.841985 514078.756985,152407.937985 514080.620985,152417.977985 514083.085985,152422.390985 514083.220985,152424.943985 514082.052985,152442.772985 514066.832985,152446.324985 514064.070985,152455.412985 514057.977985,152463.242985 514053.204985,152467.279985 514051.239985,152474.609985 514049.455985,152479.056985 514048.777985,152484.181985 514049.837985,152499.921985 514056.864985,152512.577985 514064.400985,152520.205985 514069.166985,152529.937985 514073.130985,152544.200985 514082.842985,152556.472985 514093.900985,152571.160985 514108.272985,152579.390985 514115.870985,152590.270985 514129.477985,152593.414985 514136.321985,152600.252985 514153.416985,152602.311985 514157.738985,152606.845985 514165.536985,152612.066985 514172.868985,152614.883985 514176.092985,152621.659985 514182.048985,152625.286985 514184.242985,152630.331985 514185.979985,152634.803985 514186.432985,152640.693985 514186.427985,152649.669985 514185.718985,152657.684985 514183.778985,152668.022985 514182.579985,152704.755985 514175.352985,152719.865985 514170.892985,152729.749985 514169.166985,152738.749985 514165.436985,152742.867985 514164.085985,152747.244985 514163.075985)) - MULTIPOLYGON(((152597.239547324 514029.678575879,152606.678441824 514038.183733586,152608.926208731 514040.294461888,152622.835937061 514053.904934079,152630.265885999 514060.764320717,152637.967903619 514069.033557604,152648.847903619 514082.640557604,152658.423790211 514098.16991668,152661.567790211 514105.01391668,152662.517340891 514107.225410577,152686.862372445 514102.435669934,152698.633931665 514098.961073367,152706.964296294 514097.011008656,152708.68782781 514096.710035831,152710.035074062 514096.151677107,152715.370621248 514094.174053889,152719.488621248 514092.823053889,152720.136823795 514092.642335451,152711.844861917 514088.406138982,152705.628187309 514084.696343796,152690.566315703 514077.021260665,152677.203554368 514068.307842573,152667.511554368 514060.399842573,152659.83253405 514053.178194686,152649.748363042 514042.260914102,152642.836939028 514035.502456272,152633.689321872 514028.54799066,152627.866066085 514023.634722601,152620.362066085 514016.620722601,152617.318280618 514013.60833914,152611.557280295 514007.571596163,152611.474695349 514007.519958978,152608.277829548 514013.760375802,152601.692834863 514024.342998692,152600.173834863 514026.383998692,152597.239547324 514029.678575879)),((152979.39142877 513923.39395504,152982.971243821 513924.314923876,152994.958013 513929.778636121,152998.988013 513932.062636121,153009.055554761 513938.9037135,153014.067370819 513942.940706199,153018.544937842 513946.098027423,153027.592891475 513953.605728244,153033.290382452 513959.142488765,153037.034018889 513962.259567283,153045.866385123 513970.944837472,153049.565287583 513975.238516501,153060.015813883 513971.857005287,153062.890625998 513969.019181735,153063.860375556 513967.889356612,153068.145995532 513962.327567309,153076.89462411 513952.801026421,153088.89962411 513941.804026421,153092.821268542 513938.452274418,153098.565268542 513933.875274418,153107.126126376 513927.97518657,153108.665998205 513927.06451688,153110.631601416 513922.727441177,153111.575413015 513919.842338661,153111.447332744 513919.460419607,153106.039801021 513913.647738603,153100.619179573 513907.061733153,153097.137580943 513903.737558055,153088.479580943 513894.664558055,153085.916584877 513891.838132528,153079.738127788 513884.666191141,153072.940822268 513881.346665919,153070.786713562 513879.875463282,153069.612655922 513880.479277041,153065.94505217 513882.241395211,153057.027815264 513886.231719169,153049.219187626 513890.892510631,153044.282261894 513893.593381728,153034.737621442 513898.358814385,153025.62057717 513903.951867582,153019.789678547 513907.181468601,153011.725678547 513911.190468601,153002.252391439 513915.117153387,152990.324366736 513919.129968399,152979.39142877 513923.39395504)),((152801.412882746 513735.377900866,152804.005720959 513733.876381609,152819.567849259 513727.08532076,152835.151968897 513722.298130904,152852.040751769 513715.005674598,152857.971202143 513712.737692505,152864.167594032 513710.664124582,152861.394377541 513701.909365326,152858.163243385 513685.62225202,152857.323243385 513675.75425202,152857.195936799 513668.928851093,152856.862228842 513666.658449992,152856.111445543 513658.391477922,152856.09040641 513657.794030773,152851.934996434 513657.875156675,152843.663996434 513657.523156675,152838.554159662 513657.130434274,152834.081159662 513656.632434274,152829.758404822 513656.023328661,152822.218943343 513654.736172226,152821.016752643 513654.990652348,152810.639563306 513657.981503418,152798.745454116 513660.38785453,152789.312251617 513661.51220399,152786.312745304 513662.135924391,152786.214807049 513663.015276221,152785.175807049 513667.912276221,152781.167293184 513680.88411889,152774.88583807 513692.920738318,152766.537291284 513703.627682429,152763.113476725 513706.674866787,152766.065546159 513708.191812751,152772.153957948 513711.689958145,152777.560957948 513715.142958145,152784.514842389 513720.165903479,152793.719842389 513727.651903479,152801.412882746 513735.377900866))) - - #96 Polygon - gid: 2596 - - POLYGON((154470.187985 514355.480985,154486.830985 514323.594985,154500.001985 514288.890985,154498.444985 514263.472985,154497.741985 514239.518985,154493.223985 514222.771985,154489.801985 514204.219985,154488.879985 514182.090985,154478.186985 514157.249985,154474.040985 514134.114985,154467.747985 514111.146985,154466.497985 514095.633985,154470.929985 514076.999985,154488.837985 514040.402985,154492.458985 514010.825985,154489.681985 513972.417985,154476.127985 513929.415985,154462.300985 513907.359985,154442.174985 513901.882985,154433.051985 513885.013985,154426.097985 513857.073985,154434.970985 513823.089985,154437.859985 513804.326985,154431.686985 513785.260985,154412.115985 513791.727985,154392.134985 513804.951985,154371.213985 513800.320985,154338.806985 513824.583985,154337.552985 513838.841985,154340.231985 513863.853985,154341.818985 513883.430985,154325.354985 513942.782985,154308.149985 513990.662985,154286.061985 514032.755985,154276.691985 514036.801985,154273.287985 514053.119985,154278.102985 514068.611985,154281.466985 514088.671985,154268.460985 514110.359985,154256.186985 514135.862985,154255.695985 514155.176985,154260.846985 514174.967985,154273.610985 514186.731985,154296.316985 514203.897985,154304.090985 514222.423985,154304.305985 514232.504985,154274.433985 514236.105985,154245.243985 514243.659985,154199.558985 514250.286985,154168.633985 514270.372985,154143.684985 514291.596985,154128.476985 514317.331985,154126.062985 514342.110985,154129.235985 514339.245985,154157.746985 514338.714985,154195.964985 514348.920985,154238.413985 514354.748985,154265.909985 514362.594985,154277.321985 514360.996985,154291.054985 514356.469985,154316.729985 514343.357985,154339.936985 514337.091985,154355.837985 514336.573985,154383.710985 514341.477985,154410.238985 514348.604985,154426.380985 514358.909985,154440.500985 514366.676985,154453.903985 514366.741985,154470.187985 514355.480985)) - POLYGON((154372.475003626 514263.349143873,154396.706937495 514267.612531514,154403.170413394 514269.046426639,154423.988413027 514274.639380627,154423.585300499 514268.058575085,154423.477262909 514265.673131474,154423.033047317 514250.536943284,154420.812790206 514242.307052659,154419.468203972 514236.376571173,154416.046203972 514217.824571173,154414.866998649 514207.342135003,154414.520949841 514199.036588282,154409.298243715 514186.90367489,154404.363076076 514170.479893208,154400.813488545 514150.672920818,154395.413932334 514130.965784784,154392.990283739 514117.170779661,154391.740283739 514101.657779661,154391.717630648 514089.898254615,154393.533403613 514078.279738746,154397.965403613 514059.645738746,154403.562880398 514044.035258131,154415.926643621 514018.768525795,154417.127981621 514008.955774066,154415.510664071 513986.587055149,154410.12603403 513969.503547621,154408.340036344 513968.817253125,154397.830595583 513962.092880346,154397.625941273 513962.830650185,154395.936468377 513968.14544159,154378.731468377 514016.02544159,154374.561855468 514025.512137945,154353.616308301 514065.427970836,154355.434134709 514076.267922606,154356.462902434 514089.454524599,154355.15919933 514102.616788591,154351.563572263 514115.345351006,154345.787849925 514127.244336955,154337.521882801 514141.02815173,154341.546834423 514144.071061954,154351.291906253 514152.880752292,154359.35032728 514163.255670093,154365.474862182 514174.877509063,154373.248862182 514193.403509063,154377.45396137 514206.839579392,154379.073933883 514220.824804957,154379.288933883 514230.905804957,154377.970664843 514246.594518123,154373.406257847 514261.662356151,154372.475003626 514263.349143873)) - - #97 Polygon - gid: 2597 - - POLYGON((144573.637985 514299.611985,144569.108985 514299.348985,144562.201985 514299.403985,144559.226985 514299.220985,144554.798985 514298.485985,144551.780985 514297.383985,144547.881985 514295.120985,144545.571985 514292.973985,144542.929985 514289.294985,144542.014985 514286.888985,144540.935985 514282.467985,144536.953985 514270.768985,144535.431985 514264.430985,144527.414985 514231.256985,144525.265985 514220.631985,144523.947985 514211.728985,144523.487985 514204.993985,144523.420985 514200.490985,144524.298985 514164.227985,144524.246985 514144.674985,144524.388985 514131.151985,144524.184985 514126.675985,144523.627985 514123.147985,144522.187985 514118.870985,144520.491985 514115.580985,144517.606985 514111.957985,144512.831985 514110.603985,144508.249985 514111.180985,144503.782985 514111.952985,144498.898985 514113.438985,144494.884985 514115.441985,144487.162985 514120.130985,144485.689985 514121.174985,144478.796985 514127.041985,144477.763985 514127.744985,144471.584985 514131.179985,144467.467985 514132.997985,144463.910985 514134.276985,144459.581985 514135.505985,144456.662985 514136.016985,144444.326985 514137.623985,144439.854985 514138.108985,144426.535985 514138.704985,144419.602985 514139.421985,144415.193985 514140.261985,144408.154985 514142.204985,144404.351985 514144.259985,144403.046985 514146.503985,144401.777985 514151.441985,144391.539985 514175.978985,144389.658985 514180.059985,144386.465985 514186.103985,144381.806985 514193.809985,144376.400985 514200.696985,144374.525985 514204.168985,144372.626985 514208.272985,144371.009985 514212.470985,144374.512985 514215.316985,144375.460985 514216.345985,144378.007985 514220.054985,144380.900985 514225.738985,144383.595985 514232.197985,144386.138985 514236.910985,144387.373985 514240.200985,144387.317985 514244.627985,144384.667985 514260.523985,144384.974985 514262.704985,144387.859985 514266.096985,144390.911985 514268.033985,144395.098985 514269.518985,144399.531985 514270.567985,144407.215985 514272.774985,144408.690985 514274.244985,144408.377985 514278.224985,144406.906985 514282.756985,144405.074985 514287.247985,144402.861985 514292.013985,144397.918985 514301.215985,144396.222985 514305.380985,144394.726985 514309.633985,144393.515985 514313.470985,144392.388985 514317.822985,144389.131985 514332.080985,144388.711985 514336.562985,144388.628985 514344.005985,144389.175985 514346.743985,144391.242985 514350.685985,144393.902985 514354.402985,144395.123985 514355.983985,144398.178985 514359.312985,144400.071985 514360.831985,144403.826985 514363.306985,144407.752985 514365.546985,144410.944985 514367.097985,144415.106985 514368.785985,144419.373985 514370.244985,144424.773985 514371.874985,144437.115985 514374.708985,144441.437985 514375.956985,144457.977985 514381.432985,144463.670985 514383.077985,144481.352985 514387.388985,144495.281985 514390.226985,144508.880985 514394.003985,144514.170985 514394.585985,144523.083985 514394.435985,144526.965985 514394.025985,144538.798985 514391.486985,144547.666985 514389.950985,144556.364985 514387.609985,144561.437985 514386.414985,144564.927985 514385.410985,144568.997985 514383.496985,144573.050985 514381.530985,144580.697985 514379.417985,144595.229985 514372.568985,144602.375985 514369.467985,144607.797985 514367.957985,144615.688985 514366.916985,144623.577985 514365.386985,144626.043985 514365.367285,144624.394985 514363.206985,144621.092985 514359.540985,144616.630985 514352.244985,144609.694985 514342.524985,144604.237985 514332.792985,144598.713985 514323.815985,144590.528985 514311.126985,144587.880985 514307.506985,144586.451985 514305.981985,144582.933985 514303.147985,144581.553985 514302.214985,144577.498985 514300.258985,144573.637985 514299.611985)) - POLYGON( EMPTY) - - #98 Polygon - gid: 2598 - - POLYGON((146978.395985 514128.105985,146993.088985 514109.724985,146990.935985 514109.919985,146986.515985 514108.676985,146984.834985 514107.491985,146981.559985 514104.355985,146978.605985 514100.856985,146976.054985 514097.475985,146971.011985 514090.004985,146967.745985 514085.474985,146964.701985 514082.154985,146959.542985 514075.969985,146956.337985 514072.894985,146952.680985 514071.027985,146947.749985 514069.211985,146939.485985 514065.648985,146927.297985 514062.022985,146919.855985 514059.063985,146915.584985 514057.875985,146911.533985 514057.834985,146907.047985 514058.932985,146902.995985 514060.801985,146899.081985 514063.093985,146893.310985 514066.882985,146889.708985 514069.594985,146885.365985 514073.314985,146874.977985 514084.255985,146871.396985 514088.322985,146864.758985 514096.561985,146858.269985 514103.545985,146851.525985 514109.507985,146845.834985 514113.792985,146843.682985 514115.048985,146833.562985 514120.296985,146827.089985 514122.419985,146822.686985 514123.116985,146818.808985 514122.219985,146814.499985 514120.648985,146810.509985 514118.510985,146805.983985 514115.339985,146799.004985 514109.608985,146789.184985 514100.497985,146782.878985 514094.071985,146773.731985 514084.130985,146772.704985 514082.828985,146770.140985 514078.765985,146767.239985 514075.730985,146765.038985 514075.353985,146760.639985 514077.133985,146756.696985 514093.552985,146755.166985 514104.428985,146754.236985 514107.679985,146747.054985 514128.282985,146745.452985 514132.485985,146740.637985 514142.592985,146736.292985 514152.151985,146732.113985 514160.830985,146729.632985 514165.603985,146720.451985 514182.099985,146718.255985 514185.582985,146715.669985 514189.265985,146708.041985 514198.572985,146700.623985 514208.288985,146697.764985 514212.325985,146695.357985 514216.136985,146693.225985 514220.099985,146691.843985 514223.389985,146688.846985 514231.402985,146687.411985 514235.659985,146686.889985 514238.098985,146686.285985 514244.852985,146686.270985 514253.857985,146686.450985 514255.277985,146686.301985 514260.300985,146683.033985 514264.144985,146683.155985 514265.983985,146682.338985 514271.113985,146682.374985 514276.109985,146680.337985 514280.147985,146677.579985 514283.544985,146668.796985 514293.186985,146665.431985 514297.393985,146661.798985 514300.600985,146659.382985 514304.403985,146657.401985 514310.058985,146656.451985 514315.110985,146657.862985 514320.479985,146660.328985 514325.311985,146664.346985 514327.493985,146671.146985 514330.078985,146674.727985 514332.813985,146678.721985 514337.242985,146681.490985 514340.795985,146686.032985 514347.673985,146690.888985 514355.863985,146692.808985 514359.916985,146693.698985 514363.305985,146695.616985 514373.416985,146698.231985 514382.035985,146699.836985 514386.527985,146701.571985 514390.707985,146703.974985 514394.998985,146706.750985 514398.590985,146710.002985 514401.691985,146712.889985 514403.299985,146717.072985 514405.089985,146726.061985 514410.373985,146734.615985 514414.500985,146745.317985 514418.731985,146749.574985 514420.166985,146751.177985 514420.590985,146755.638985 514421.241985,146756.964985 514414.062985,146760.786985 514395.658985,146762.453985 514390.190985,146763.644985 514384.449985,146765.274985 514379.265985,146767.350985 514375.290985,146772.077985 514367.066985,146782.052985 514344.326985,146787.377985 514332.973985,146796.553985 514316.678985,146800.956985 514309.903985,146805.131985 514302.406985,146810.612985 514294.080985,146815.038985 514286.445985,146817.815985 514282.583985,146823.033985 514277.958985,146826.565985 514274.275985,146829.279985 514270.683985,146831.879985 514268.007985,146838.691985 514261.283985,146846.154985 514255.376985,146849.511985 514252.379985,146854.426985 514246.995985,146866.975985 514234.461985,146873.174985 514227.718985,146875.892985 514224.130985,146883.032985 514216.049985,146888.426985 514211.137985,146895.661985 514205.813985,146898.228985 514203.079985,146900.862985 514199.416985,146903.718985 514196.294985,146910.227985 514189.724985,146918.475985 514180.160985,146921.638985 514177.199985,146925.123985 514174.344985,146929.916985 514170.920985,146942.656985 514162.441985,146948.828985 514158.846985,146952.598985 514156.414985,146955.585985 514153.824985,146964.483985 514144.873985,146967.826985 514140.249985,146969.666985 514137.975985,146978.395985 514128.105985)) - POLYGON((146797.091534784 514198.560801946,146799.036341277 514196.430417783,146800.519647422 514194.878956067,146799.137713142 514194.468888446,146798.660722856 514195.421904049,146796.985503573 514198.644726154,146797.091534784 514198.560801946)) - - #99 Polygon - gid: 2599 - - POLYGON((144130.790985 514542.589985,144136.106985 514541.268985,144140.618985 514541.819985,144146.580985 514542.271985,144155.308985 514545.689985,144159.779985 514546.073985,144165.774985 514546.027985,144170.614985 514545.336985,144174.457985 514542.248985,144180.591985 514535.602985,144185.031985 514531.945985,144188.930985 514529.699985,144202.240985 514526.170985,144204.522985 514525.434985,144208.647985 514523.675985,144209.506985 514523.064985,144212.582985 514519.733985,144214.710985 514516.736985,144217.305985 514512.269985,144225.821985 514492.742985,144230.222985 514479.998985,144238.048985 514458.756985,144239.749985 514453.779985,144242.237985 514445.130985,144246.840985 514428.052985,144247.696985 514425.401985,144249.538985 514420.578985,144253.385985 514411.927985,144260.058985 514394.218985,144264.745985 514384.187985,144266.213985 514379.927985,144267.402985 514375.585985,144266.909985 514372.870985,144264.565985 514368.375985,144255.527985 514363.949985,144249.852985 514362.074985,144245.934985 514359.844985,144246.620985 514355.223985,144248.164985 514351.697985,144250.544985 514347.859985,144251.479985 514346.801985,144258.417985 514340.953985,144264.816985 514336.013985,144266.807985 514330.309985,144266.470985 514325.834985,144264.754985 514315.479985,144263.754985 514311.093985,144261.914985 514304.532985,144260.268985 514300.367985,144258.258985 514296.998985,144255.314985 514293.564985,144253.224985 514291.582985,144249.714985 514288.669985,144245.918985 514286.308985,144244.887985 514285.843985,144240.548985 514284.624985,144234.199985 514283.756985,144225.189985 514283.542985,144216.921985 514283.099985,144200.074985 514283.128985,144195.587985 514283.291985,144186.779985 514284.886985,144177.834985 514285.878985,144169.973985 514286.948985,144165.504985 514287.444985,144158.597985 514287.500985,144150.714985 514288.363985,144146.268985 514289.065985,144138.749985 514290.519985,144129.998985 514292.618985,144122.836985 514294.931985,144118.663985 514296.619985,144116.254985 514315.702985,144113.154985 514338.329985,144110.932985 514350.449985,144109.642985 514359.358985,144103.633985 514384.235985,144100.698985 514392.568985,144099.732985 514399.419985,144098.307985 514417.516985,144097.345985 514425.834985,144096.877985 514434.147985,144095.446985 514450.289985,144095.470985 514467.498985,144095.977985 514472.854985,144095.698985 514478.235985,144090.849985 514512.499985,144086.867985 514532.967985,144086.837985 514540.297985,144083.986985 514558.486985,144082.564985 514573.165985,144082.617985 514579.549985,144083.019985 514582.853985,144084.070985 514587.218985,144088.382985 514601.055985,144090.700985 514599.014985,144094.407985 514596.448985,144099.296985 514594.867985,144103.775985 514594.417985,144104.772985 514593.932985,144108.205985 514590.960985,144109.332985 514588.480985,144110.651985 514584.097985,144115.058985 514573.308985,144115.953985 514570.340985,144117.115985 514565.480985,144117.981985 514561.064985,144120.043985 514555.351985,144121.899985 514551.257985,144123.475985 514548.300985,144126.738985 514544.570985,144130.790985 514542.589985)) - POLYGON((144176.60740853 514401.555584319,144177.632982782 514398.643143597,144179.373625931 514394.085531269,144178.682298521 514392.965629534,144176.60740853 514401.555584319)) - - #100 Polygon - gid: 2600 - - POLYGON((153556.031985 514886.227985,153560.525985 514886.012985,153566.393985 514886.836985,153572.264985 514888.653985,153582.160985 514890.869985,153584.416985 514890.833985,153588.654985 514889.150985,153590.995985 514887.355985,153594.093985 514881.247985,153600.596985 514871.470985,153607.108985 514856.972985,153612.956985 514847.521985,153608.356985 514841.430985,153606.284985 514837.439985,153605.664985 514834.687985,153605.359985 514830.122985,153602.267985 514813.476985,153597.582985 514800.609985,153596.965985 514795.730985,153594.556985 514792.788985,153590.938985 514790.044985,153579.228985 514795.635985,153573.643985 514797.721985,153559.445985 514799.291985,153546.944985 514802.898985,153541.754985 514805.976985,153537.104985 514807.634985,153532.352985 514810.440985,153520.030985 514819.197985,153514.515985 514821.769985,153510.278985 514822.486985,153507.876985 514821.350985,153504.524985 514817.626985,153501.188985 514808.128985,153492.871985 514787.013985,153489.388985 514780.831985,153486.307985 514777.186985,153482.664985 514774.839985,153479.481985 514774.368985,153474.831985 514774.926985,153469.574985 514776.303985,153466.025985 514779.167985,153457.313985 514787.843985,153455.681985 514790.459985,153452.692985 514795.895985,153448.357985 514807.237985,153450.054985 514811.435985,153451.618985 514813.811985,153455.073985 514816.927985,153474.460985 514819.993985,153483.496985 514823.991985,153487.335985 514827.674985,153490.999985 514832.613985,153492.523985 514837.561985,153493.082985 514843.424985,153490.543985 514855.424985,153490.223985 514860.751985,153488.498985 514874.433985,153495.036985 514879.182985,153501.180985 514882.939985,153516.063985 514894.582985,153519.796985 514897.079985,153525.665985 514899.415985,153529.748985 514901.565985,153534.832985 514900.527985,153538.446985 514898.728985,153542.061985 514896.077985,153549.964985 514888.768985,153554.033985 514886.791985,153556.031985 514886.227985)) - POLYGON( EMPTY) - \ No newline at end of file diff -Nru geos-3.7.1/tests/xmltester/tests/TestBufferExternal.xml geos-3.8.0/tests/xmltester/tests/TestBufferExternal.xml --- geos-3.7.1/tests/xmltester/tests/TestBufferExternal.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/TestBufferExternal.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ - - - Various cases which have been reported or identified as causing buffer failures - in previous versions of JTS. - The cases in this file should all pass in the current version of JTS. - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - JTS List reported error - Jan 4, 2007 - Causes return of tiny polygon in Ver 1.8 and earlier - - - POLYGON ((-2598.774169921875 61.087974548339844, - -2599.804443359375 57.09324264526367, -2599.35595703125 - 42.387855529785156, -2595.31298828125 24.86284828186035, - -2586.894287109375 7.970212459564209, -2572.63818359375 - -9.27978801727295, -2560.283935546875 -18.67239761352539, - -2551.49951171875 -22.76344108581543, -2539.59619140625 - -22.507848739624023, -2531.886474609375 -17.93946647644043, - -2531.310546875 -17.19328498840332, -2518.694580078125 - -27.471830368041992, -2564.515869140625 -44.53504943847656, - -2570.234619140625 -46.65970230102539, -2673.622314453125 - 27.439390182495117, -2682.3828125 31.62391471862793, -2698.79052734375 - 39.21870803833008, -2598.774169921875 61.087974548339844)) - - - - POLYGON ((-2598.9877800006584 62.06489354920029, -2597.8058559463916 60.838238598016815, -2598.80056722021 56.981393691373356, -2598.359422519401 42.51673068489857, -2594.36518642589 25.202964287692787, -2586.050417509141 8.518874855177339, -2571.9409713392497 -8.553669047985187, -2559.764298593386 -17.811272817091698, -2551.2883050682995 -21.758675476666994, -2539.8801180014552 -21.51371480841184, -2532.561054468898 -17.176813608772246, -2532.1021741477675 -16.582280683172275, -2530.6789157044022 -16.41801596133651, -2518.0629489075272 -26.696561340975183, -2518.345604985255 -28.40896236757903, -2564.166894047755 -45.4721814380136, -2564.1676040045695 -45.47244551005364, -2569.8863540045695 -47.59709837260247, -2570.8171618573137 -47.47250238913616, -2674.1330478688596 26.575123582663668, -2682.808365109433 30.71896080032791, -2699.2105884679977 38.31121222462303, -2699.784579453414 39.327613516943224, -2699.0041374225334 40.195627039190526, -2598.9877800006584 62.06489354920029)) - - - - - - JTS List reported error - Jan 4, 2007 - Causes return of tiny polygon in Ver 1.8 and earlier - - - POLYGON ((-2985.708251953125 16.51972770690918, -2982.37744140625 - 13.961258888244629, -2972.9091796875 11.138115882873535, -2956.294921875 - 11.763388633728027, -2941.1298828125 14.348956108093262, - -2922.595458984375 19.414688110351562, -2914.568359375 - -10.223998069763184, -2931.0537109375 -16.33589744567871, - -2946.358642578125 -24.970754623413086, -2959.0654296875 - -34.12342834472656, -2969.88330078125 -44.616554260253906, - -2978.60400390625 -55.14395523071289, -2980.379638671875 - -57.39796829223633, -2985.708251953125 16.51972770690918)) - - - - POLYGON ((-2986.70566366335 16.44782582720175, -2985.0990937741126 17.312776452537154, -2981.914734351797 14.8667999628029, -2972.781730022179 12.143620348943537, -2956.3982051078096 12.76020953441973, -2941.346258567696 15.3264952683113, -2922.8591038389686 20.379307926987252, -2921.6302322462557 19.676102233954516, -2913.6031326368807 -9.962583946160228, -2914.2207342589513 -11.161631675545383, -2930.6315593382983 -17.24590055998214, -2945.8190749722658 -25.814513047986875, -2958.4216504283336 -34.892123320729795, -2969.147953587571 -45.296430109246224, -2977.8260723815997 -55.7724244074717, -2979.594103917119 -58.016785833253174, -2980.672899897084 -58.35400064199699, -2981.3770503821 -57.469870171943754, -2986.70566366335 16.44782582720175)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/TestIsValid.xml geos-3.8.0/tests/xmltester/tests/TestIsValid.xml --- geos-3.7.1/tests/xmltester/tests/TestIsValid.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/TestIsValid.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ - - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (1) - - POLYGON((-84.738876 42.582151,-84.738888 42.596708,-84.724038 - 42.596646,-84.719287 42.596633,-84.719227 42.589677,-84.719189 - 42.582134,-84.72666 42.582141,-84.738876 42.582151),(-84.726654 - 42.587769,-84.726352 42.587513,-84.726232 42.587565,-84.726351 - 42.58774,-84.726654 42.587769),(-84.726654 42.587769,-84.727094 - 42.587452,-84.727147 42.58742,-84.727192 42.587315,-84.727168 - 42.587211,-84.727028 42.587189,-84.726797 42.587195,-84.726723 - 42.587239,-84.726654 42.587769)) - - - true - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (2) - - POLYGON((-82.509817 27.972398,-82.514117 27.972798,-82.514018 - 27.974298,-82.505617 27.973998,-82.505817 27.966898,-82.507967 - 27.96695,-82.509917 27.966998,-82.510617 27.966998,-82.511217 - 27.966898,-82.513917 27.966998,-82.514665 27.967018,-82.514633 - 27.967194,-82.514697 27.967306,-82.514761 27.967402,-82.514985 - 27.967386,-82.515257 27.967418,-82.515657 27.967498,-82.515881 - 27.967482,-82.516105 27.967354,-82.516105 27.967194,-82.516073 - 27.967018,-82.522762 27.96713,-82.522728 27.967269,-82.522698 - 27.967434,-82.522522 27.96745,-82.522346 27.967402,-82.522186 - 27.967434,-82.52201 27.967402,-82.521866 27.967466,-82.521866 - 27.967786,-82.520617 27.967798,-82.516017 27.968898,-82.509817 - 27.968798,-82.509817 27.972398),(-82.516169 27.967882,-82.516105 - 27.967722,-82.515945 27.967642,-82.515849 27.967642,-82.515801 - 27.967706,-82.515673 27.967754,-82.515657 27.967818,-82.515593 - 27.967946,-82.516169 27.967882),(-82.515593 27.967946,-82.515577 - 27.967786,-82.515433 27.967722,-82.515305 27.967722,-82.515129 - 27.967786,-82.515177 27.967946,-82.515593 27.967946)) - - - true - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (3) - - POLYGON((-71.931796 42.991371,-71.93256 42.991018,-71.93288 - 42.990854,-71.933182 42.990678,-71.933551 42.990446,-71.933835 - 42.99026,-71.93411 42.990064,-71.934374 42.98986,-71.934563 - 42.989701,-71.934805 42.98948,-71.935031 42.98925,-71.935299 - 42.988958,-71.935559 42.988664,-71.936008 42.988123,-71.936214 - 42.987883,-71.936407 42.987637,-71.936456 42.98757,-71.936383 - 42.991832,-71.936514 42.99218,-71.936843 42.992423,-71.937311 - 42.992499,-71.937807 42.992469,-71.942299 42.99218,-71.946553 - 42.991392,-71.947021 42.993047,-71.942798 42.99363,-71.942331 - 42.993745,-71.942443 42.994306,-71.937363 42.995159,-71.938871 - 42.997584,-71.939874 42.997559,-71.939932 42.999107,-71.938708 - 42.99946,-71.938807 43.000935,-71.938987 43.000993,-71.93738 - 43.002347,-71.937321 43.002418,-71.937093 43.002389,-71.936907 - 43.002351,-71.936541 43.002239,-71.936021 43.002065,-71.935846 - 43.002011,-71.935671 43.001975,-71.935472 43.001935,-71.935093 - 43.001869,-71.933985 43.00171,-71.933607 43.001674,-71.933126 - 43.001639,-71.932939 43.001615,-71.93285 43.001592,-71.932769 - 43.001558,-71.932627 43.001467,-71.931946 43.000986,-71.931801 - 43.000899,-71.931646 43.000819,-71.931466 43.000763,-71.93127 - 43.000744,-71.931078 43.000761,-71.930893 43.000798,-71.930528 - 43.000881,-71.929887 43.000996,-71.9297 43.00101,-71.929034 - 43.001018,-71.928727 43.001025,-71.928253 43.000345,-71.927829 - 42.999794,-71.927479 42.999373,-71.927353 42.999231,-71.927114 - 42.998965,-71.926971 42.998822,-71.926888 42.998722,-71.92683 - 42.99867,-71.92668 42.998502,-71.926461 42.998256,-71.926366 - 42.998132,-71.926283 42.998004,-71.92625 42.997947,-71.926207 - 42.997874,-71.926143 42.997741,-71.926086 42.997608,-71.926038 - 42.997471,-71.926002 42.997331,-71.925972 42.997122,-71.925968 - 42.996912,-71.926004 42.996632,-71.926095 42.996318,-71.926104 - 42.996288,-71.926203 42.996068,-71.926224 42.996021,-71.926372 - 42.995759,-71.926729 42.995183,-71.926877 42.994951,-71.926986 - 42.994781,-71.927784 42.994482,-71.927982 42.994385,-71.928404 - 42.994121,-71.928627 42.993843,-71.928705 42.993509,-71.928598 - 42.992996,-71.928837 42.992817,-71.928863 42.992798,-71.929156 - 42.992616,-71.929384 42.992486,-71.92978 42.992284,-71.930189 - 42.992093,-71.931796 42.991371),(-71.935914 43.001009,-71.935867 - 43.000784,-71.935867 43.000706,-71.935853 43.000638,-71.935832 - 43.000588,-71.935725 43.000595,-71.935689 43.000663,-71.9357 - 43.000852,-71.935732 43.000934,-71.935785 43.000977,-71.935914 - 43.001009),(-71.935914 43.001009,-71.936139 43.000984,-71.93621 - 43.000934,-71.936253 43.000874,-71.936257 43.000774,-71.936228 - 43.000552,-71.936209 43.000485,-71.936203 43.000463,-71.936121 - 43.000449,-71.93606 43.000456,-71.93601 43.000492,-71.936 - 43.000556,-71.936014 43.000638,-71.936032 43.000699,-71.936028 - 43.000806,-71.936003 43.000881,-71.935914 43.001009)) - - - true - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/testLeaksBig.xml geos-3.8.0/tests/xmltester/tests/testLeaksBig.xml --- geos-3.7.1/tests/xmltester/tests/testLeaksBig.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/testLeaksBig.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,7094 +0,0 @@ - - - - - SegFault - POLYGON((1033707.6 1048313.1,1033694.9 1048315.7,1033659.9 1048344.3,1033627.6 1048388.8,1033620.9 1048426.8,1033623.6 1048471.3,1033623.6 1048480.8,1033616.8 1048503.2,1033629.1 1048541.3,1033668.3 1048707.6,1033696.3 1048755.6,1033721.4 1048771.6,1033724.5 1048772,1033737.2 1048772,1033772.1 1048756.4,1033794.6 1048721.9,1033811.1 1048667.4,1033814.8 1048613.6,1033815.1 1048597.5,1033809.2 1048556.1,1033809.3 1048549.6,1033797.1 1048501.9,1033790.9 1048492.2,1033773 1048399.6,1033760.6 1048377.6,1033741.8 1048357.8,1033742.1 1048341.8,1033713.9 1048313.4,1033707.6 1048313.1)) - - true - - - - -A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - true - - - - -A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 20, 140 20, 120 100, 20 100, 20 20)) - - - true - - - - -A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (120 100, 140 20, 20 20, 20 100, 120 100)) - - - true - - - - -A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) - - - true - - - - -A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] - - POLYGON( - (0 0, 80 0, 80 80, 0 80, 0 0)) - - - POLYGON( - (100 200, 100 140, 180 140, 180 200, 100 200)) - - - true - - - - -A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 140 200, 240 200, 240 120, 140 120)) - - - true - - - - -A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (80 180, 140 260, 260 200, 200 60, 80 180)) - - - true - - - - -A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (240 80, 140 120, 180 240, 280 200, 240 80)) - - - true - - - - -A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - - POLYGON( - (140 40, 180 80, 120 100, 140 40)) - - - true - - - - -A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - - POLYGON( - (120 100, 180 80, 130 40, 120 100)) - - - true - - - - -A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 180 20, 140 140, 20 140, 20 20)) - - - POLYGON( - (180 100, 80 200, 180 280, 260 200, 180 100)) - - - true - - - - -A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 140, 20 120, 0 220, 120 240, 140 140)) - - - true - - - - -A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - - POLYGON( - (160 200, 210 70, 120 70, 160 200)) - - - POLYGON( - (160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) - - - true - - - - -A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - - POLYGON( - (110 140, 200 70, 200 160, 110 140)) - - - POLYGON( - (110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) - - - true - - - - -A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) - - - POLYGON( - (20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) - - - true - - - - -A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) - - - POLYGON( - (20 120, 300 120, 140 240, 20 120)) - - - true - - - - -A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, - 20 20)) - - - POLYGON( - (100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) - - - true - - - - -A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, - 20 20)) - - - POLYGON( - (260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) - - - true - - - - -A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (0 140, 300 140, 140 240, 0 140)) - - - true - - - - -A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (20 240, 20 140, 320 140, 180 240, 20 240)) - - - true - - - - -A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) - - - true - - - - -A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (120 120, 220 20, 280 20, 240 160, 120 120)) - - - true - - - - -A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 160 20, 260 120, 220 200, 140 120)) - - - true - - - - -A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - - POLYGON( - (20 140, 120 40, 20 40, 20 140)) - - - POLYGON( - (190 140, 190 20, 140 20, 20 140, 190 140)) - - - true - - - - -A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (300 20, 220 20, 120 120, 260 160, 300 20)) - - - true - - - - -A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 240 160, 280 60, 160 20, 140 120)) - - - true - - - - -A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (280 60, 180 60, 120 120, 260 180, 280 60)) - - - true - - - - -A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (120 200, 120 120, 40 120, 40 200, 120 200)) - - - true - - - - -A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (160 220, 140 120, 60 120, 40 220, 160 220)) - - - true - - - - -A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 20 120, 20 220, 140 220, 140 120)) - - - true - - - - -A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (320 20, 220 20, 80 160, 240 140, 320 20)) - - - true - - - - -A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (60 40, 60 140, 180 140, 180 40, 60 40)) - - - true - - - - -A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 80 140, 160 60, 20 20)) - - - true - - - - -A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (160 60, 20 20, 100 140, 160 60)) - - - true - - - - -A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 100, 140 160, 160 40, 20 100)) - - - true - - - - -A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (160 40, 20 100, 160 160, 160 40)) - - - true - - - - -A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 180, 180 120, 80 40, 20 180)) - - - true - - - - -A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (180 120, 100 40, 20 180, 180 120)) - - - true - - - - -A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) - - - true - - - - -A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) - - - true - - - - -A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) - - - true - - - - -A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) - - - true - - - - -A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) - - - true - - - - -A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) - - - true - - - - -A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 140, 120 120, 120 40, 20 20)) - - - true - - - - -A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 180, 140 140, 140 60, 20 20)) - - - true - - - - -A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 120 40, 120 120, 20 140, 20 20)) - - - true - - - - -A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (120 40, 20 20, 20 140, 120 120, 120 40)) - - - true - - - - -A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 60, 140 140, 20 180, 20 20)) - - - true - - - - -A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (140 60, 20 20, 20 180, 140 140, 140 60)) - - - true - - - - -A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 60 120, 140 120, 180 20, 20 20)) - - - true - - - - -A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 40, 120 40, 120 120, 20 140, 20 40)) - - - true - - - - -A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) - - - true - - - - -A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (150 150, 330 150, 250 70, 70 70, 150 150)) - - - POLYGON( - (150 150, 270 150, 140 20, 20 20, 150 150)) - - - true - - - - -A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) - - - POLYGON( - (150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) - - - true - - - - -A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, - 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, - 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, - 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, - 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, - 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, - 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, - 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, - 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, - 70 40, 20 20)) - - - POLYGON( - (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, - 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, - 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, - 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, - 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, - 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, - 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, - 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, - 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, - 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, - 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, - 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, - 200 120, 120 120, 190 140)) - - - true - - - - -A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, - 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, - 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, - 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, - 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, - 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, - 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, - 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, - 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, - 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, - 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, - 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, - 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, - 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, - 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, - 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) - - - POLYGON( - (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, - 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, - 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, - 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, - 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, - 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, - 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, - 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, - 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, - 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, - 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, - 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, - 200 120, 120 120, 190 140)) - - - true - - - - -A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) - - - true - - - - -A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (60 160, 20 200, 260 200, 140 80, 60 160)) - - - true - - - - -A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 140 80, 260 200, 20 200)) - - - true - - - - -A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) - - - true - - - - -A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 60 160, 140 80, 260 200, 20 200)) - - - true - - - - -A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (0 0, 0 200, 200 200, 200 0, 0 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 0, 100 200, 200 200, 200 0, 100 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 0, 120 200, 200 200, 200 0, 120 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (0 0, 0 200, 110 200, 110 0, 0 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2100 110, 2100 100, 100 100)) - - - true - - - - -A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - - true - - - - -A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 500 110, 500 100, 100 100)) - - - true - - - - -A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 130 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 17 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - - true - - - - -A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (101 99, 101 1000000, 102 1000000, 101 99)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 200 101, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) - - - POLYGON( - (10 307, 22 307, 153 34, 22 34, 10 307)) - - - true - - - - -A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] - - POLYGON( - (160 200, 210 70, 120 70, 160 200)) - - - POLYGON( - (160 200, 310 20, 20 20, 160 200), - (160 200, 260 40, 70 40, 160 200)) - - - true - - - - -A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - - POLYGON( - (170 120, 240 100, 260 50, 190 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - - POLYGON( - (270 90, 200 50, 150 80, 210 120, 270 90)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] - - POLYGON( - (170 120, 260 100, 240 60, 150 80, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] - - POLYGON( - (220 120, 270 80, 200 60, 160 100, 220 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] - - POLYGON( - (260 50, 180 70, 180 110, 260 90, 260 50)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] - - POLYGON( - (230 110, 290 80, 190 60, 140 90, 230 110)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - - POLYGON( - (170 120, 330 120, 280 70, 120 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - - POLYGON( - (170 120, 300 120, 250 70, 120 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] - - POLYGON( - (190 100, 310 100, 260 50, 140 50, 190 100)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (280 130, 360 130, 270 40, 190 40, 280 130)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] - - POLYGON( - (220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, - 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] - - POLYGON( - (260 130, 360 130, 280 40, 170 40, 260 130)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] - - POLYGON( - (240 110, 340 110, 290 60, 190 60, 240 110)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] - - POLYGON( - (250 120, 350 120, 280 50, 180 50, 250 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (120 180, 50 50, 200 50, 120 180)) - - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (120 180, 50 50, 200 50, 120 180)) - - - true - - - - -A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (140 40, 40 40, 40 170, 140 40), - (110 190, 210 190, 210 50, 110 190)) - - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (140 40, 40 40, 40 170, 140 40), - (110 190, 210 190, 210 50, 110 190)) - - - true - - - - -A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - - POLYGON( - (280 190, 330 150, 200 110, 150 150, 280 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - - POLYGON( - (80 190, 220 190, 140 110, 0 110, 80 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - - POLYGON( - (330 150, 200 110, 150 150, 280 190, 330 150)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] - - POLYGON( - (290 190, 340 150, 220 120, 170 170, 290 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] - - POLYGON( - (220 190, 340 190, 260 110, 140 110, 220 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - - POLYGON( - (140 190, 220 190, 100 70, 20 70, 140 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (140 220, 60 140, 140 60, 220 140, 140 220)) - - - MULTIPOLYGON( - ( - (100 20, 180 20, 180 100, 100 100, 100 20)), - ( - (20 100, 100 100, 100 180, 20 180, 20 100)), - ( - (100 180, 180 180, 180 260, 100 260, 100 180)), - ( - (180 100, 260 100, 260 180, 180 180, 180 100))) - - - true - - - - -mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 150 200, 110 110)), - ( - (110 110, 150 20, 70 20, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110))) - - - true - - - - -mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 150 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 150 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - - MULTIPOLYGON( - ( - (110 110, 20 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 20 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 70 200, 210 110, 70 20, 110 110), - (110 110, 110 140, 150 110, 110 80, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - - - -AC A-shells overlapping B-shell at A-vertex - - POLYGON( - (100 60, 140 100, 100 140, 60 100, 100 60)) - - - MULTIPOLYGON( - ( - (80 40, 120 40, 120 80, 80 80, 80 40)), - ( - (120 80, 160 80, 160 120, 120 120, 120 80)), - ( - (80 120, 120 120, 120 160, 80 160, 80 120)), - ( - (40 80, 80 80, 80 120, 40 120, 40 80))) - - - true - - - - - - -L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] - - LINESTRING(150 150, 40 230) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - - LINESTRING(40 40, 50 130, 130 130) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] - - LINESTRING(40 230, 150 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] - - LINESTRING(210 150, 330 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] - - LINESTRING(200 150, 310 150, 360 220) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] - - LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] - - LINESTRING(210 210, 220 150, 320 150, 370 210) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] - - LINESTRING(20 60, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] - - LINESTRING(60 90, 310 180) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] - - LINESTRING(90 210, 210 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] - - LINESTRING(290 10, 130 170) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(30 100, 100 100, 180 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] - - LINESTRING(20 100, 100 100, 360 100, 410 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(90 210, 150 150, 210 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] - - LINESTRING(180 90, 280 120) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - - LINESTRING(70 70, 80 20) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] - - LINESTRING(130 20, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] - - LINESTRING(70 70, 80 20, 140 20, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(170 50, 170 20, 240 20, 260 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] - - LINESTRING(50 100, 140 190, 280 190) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - - LINESTRING(140 60, 180 100, 290 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - - LINESTRING(170 120, 210 80, 270 80) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] - - LINESTRING(170 120, 260 50) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(190 90, 190 270) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (190 190, 280 50, 100 50, 190 190)) - - - true - - - - -L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (110 110, 250 100, 140 30, 110 110)) - - - true - - - - -L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(190 90, 190 190, 190 270) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (190 190, 280 50, 100 50, 190 190)) - - - true - - - - -L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (110 110, 250 100, 140 30, 110 110)) - - - true - - - - -L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 110 110, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] - - LINESTRING(130 110, 180 110, 190 60) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - - LINESTRING(80 110, 180 110) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] - - LINESTRING(80 110, 180 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (60 180, 130 110, 60 40, 60 180), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - - LINESTRING(80 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 180 110) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] - - LINESTRING(80 110, 130 110, 180 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (60 180, 130 110, 60 40, 60 180), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] - - LINESTRING(160 70, 320 230) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] - - LINESTRING(160 70, 200 110, 280 190, 320 230) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] - - LINESTRING(70 50, 70 150) - - - MULTIPOLYGON( - ( - (0 0, 0 100, 140 100, 140 0, 0 0)), - ( - (20 170, 70 100, 130 170, 20 170))) - - - true - - - - -RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 200, 200 200, 110 110) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] - - LINESTRING(150 70, 160 110, 200 60, 150 70) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] - - LINESTRING(80 60, 120 40, 120 70, 80 60) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] - - LINESTRING(20 20, 200 20, 110 110, 20 20) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] - - LINESTRING(110 90, 170 30, 50 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] - - LINESTRING(110 110, 170 50, 170 110, 110 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] - - LINESTRING(110 90, 70 50, 130 50, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] - - LINESTRING(110 60, 20 150, 200 150, 110 60) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] - - LINESTRING(110 130, 110 70, 200 100, 110 130) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] - - LINESTRING(110 90, 160 40, 60 40, 110 90) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] - - LINESTRING(110 100, 40 30, 180 30, 110 100) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] - - LINESTRING(110 110, 180 30, 40 30, 110 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] - - LINESTRING(110 90, 180 30, 40 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] - - LINESTRING(110 90, 50 30, 180 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] - - LINESTRING(110 110, 200 200, 200 110, 110 200) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] - - LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 180 40, 110 40, 110 180) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] - - LINESTRING(110 60, 50 30, 170 30, 90 70) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] - - LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (200 200, 110 110, 20 210, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (60 180, 60 110, 160 110, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (200 200, 110 110, 20 200, 110 200, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 50, 110 170, 110 70, 110 150, 200 150)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 60, 110 160, 200 160)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 60, 110 160, 200 160)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - - MULTILINESTRING( - (110 100, 40 30, 180 30), - (170 30, 110 90, 50 30)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - - MULTILINESTRING( - (110 110, 60 40, 70 20, 150 20, 170 40), - (180 30, 40 30, 110 80)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 110, 200 110, 200 160), - (110 110, 200 110, 200 70, 20 150)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - -mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 160, 70 110, 150 110, 200 160), - (110 110, 20 110, 50 80, 70 110, 200 110)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - -mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 110, 20 170, 20 130, 200 90)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - - - -LC - topographically equal with no boundary - - LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) - - - MULTILINESTRING( - (0 0, 0 50), - (0 50, 50 50), - (50 50, 50 0), - (50 0, 0 0)) - - - true - - - - -LC - intersection (containment) along mod-2 A-Int line segment - - LINESTRING(40 180, 140 180) - - - MULTIPOLYGON( - ( - (20 320, 180 320, 180 180, 20 180, 20 320)), - ( - (20 180, 20 80, 180 80, 180 180, 20 180))) - - - true - - - - -LC - intersection (overlap) along mod-2 A-Int line segment - - LINESTRING(40 180, 140 180) - - - MULTIPOLYGON( - ( - (20 320, 180 320, 180 180, 20 180, 20 320)), - ( - (60 180, 60 80, 180 80, 180 180, 60 180))) - - - true - - - - -LC - equal with boundary intersection - - LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) - - - MULTILINESTRING( - (0 0, 60 0), - (60 0, 120 0), - (60 0, 60 60)) - - - true - - - - - - -L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 40, 60 120) - - - true - - - - -L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(60 240, 40 40) - - - true - - - - -L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] - - LINESTRING(40 40, 180 180) - - - LINESTRING(120 120, 20 200) - - - true - - - - -L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(60 240, 120 120) - - - true - - - - -L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] - - LINESTRING(40 40, 180 180) - - - LINESTRING(20 180, 140 140) - - - true - - - - -L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 120, 120 40) - - - true - - - - -L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(40 40, 100 100) - - - LINESTRING(40 40, 100 100) - - - true - - - - -L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100) - - - LINESTRING(100 100, 40 40) - - - true - - - - -L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 120, 120 160) - - - true - - - - -L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(20 20, 180 180) - - - true - - - - -L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(20 20, 110 110) - - - true - - - - -L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(50 50, 140 140) - - - true - - - - -L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] - - LINESTRING(180 180, 40 40) - - - LINESTRING(120 120, 260 260) - - - true - - - - -L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] - - LINESTRING(40 40, 180 180) - - - LINESTRING(260 260, 120 120) - - - true - - - - -L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] - - LINESTRING(40 40, 180 180) - - - LINESTRING(120 120, 260 260) - - - true - - - - -L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(40 40, 20 100, 40 160, 20 200) - - - true - - - - -L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(20 200, 40 160, 20 100, 40 40) - - - true - - - - -L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(80 240, 200 120, 100 100, 40 40) - - - LINESTRING(20 200, 40 160, 20 100, 40 40) - - - true - - - - -L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(20 20, 60 60, 250 160, 310 230) - - - true - - - - -L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(20 20, 110 110, 200 110, 320 230) - - - true - - - - -L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(60 110, 60 250, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] - - LINESTRING(60 110, 60 250, 360 210) - - - LINESTRING(360 210, 310 160, 110 160, 60 110) - - - true - - - - -L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(160 160, 240 240) - - - true - - - - -L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(240 240, 160 160) - - - true - - - - -L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 150, 110 100, 170 100, 110 230) - - - true - - - - -L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 120, 200 190, 150 240, 200 240) - - - true - - - - -L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 240, 150 240, 200 200, 200 120) - - - true - - - - -L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 230, 80 140, 120 140, 140 230) - - - true - - - - -L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(60 110, 200 110, 250 160, 300 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - - LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(60 110, 220 110, 250 160, 280 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - - LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(130 160, 160 110, 190 110, 230 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 160, 180 110, 250 160, 320 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(140 160, 180 80, 220 160, 250 80) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(20 130, 70 130, 160 40) - - - true - - - - -L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(40 160, 40 100, 110 40, 170 40) - - - true - - - - -L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(30 140, 80 140, 100 100, 200 30) - - - true - - - - -L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, - 240 80, 300 80, 270 110, 200 110) - - - true - - - - -L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, - 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, - 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, - 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, - 40 190, 230 190, 20 200, 230 200) - - - LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, - 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, - 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, - 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, - 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) - - - true - - - - -L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - true - - - - -L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 240, 200 120, 100 100, 40 40) - - - true - - - - -L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) - - - true - - - - -L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(260 210, 240 130, 280 120, 260 40) - - - true - - - - -L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - - LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) - - - LINESTRING(140 130, 100 110, 120 60, 170 60) - - - true - - - - -L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160) - - - true - - - - -L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(110 160, 310 160, 340 190) - - - true - - - - -L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(140 160, 250 160, 310 160, 340 190) - - - true - - - - -L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(110 160, 250 160, 310 160) - - - true - - - - -L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) - - - true - - - - -L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) - - - true - - - - -L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 190, 140 140, 40 40) - - - true - - - - -L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(240 200, 200 260, 80 240, 140 180) - - - true - - - - -L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(140 180, 80 240, 200 260, 240 200) - - - true - - - - -L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 80 240) - - - true - - - - -L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 80, 120 80, 200 80, 260 20) - - - true - - - - -L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(100 100, 200 120, 240 140, 280 240) - - - true - - - - -L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 100 100) - - - true - - - - -L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(80 20, 80 80, 240 80, 300 20) - - - true - - - - -L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, - 300 80) - - - true - - - - -L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] - - LINESTRING(100 100, 20 180, 180 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - - LINESTRING(20 100, 180 100, 100 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - - LINESTRING(100 40, 100 160, 180 160) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] - - LINESTRING(20 100, 100 100, 180 100, 100 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 160 40) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 180 20) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] - - LINESTRING(60 60, 100 100, 140 60) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] - - LINESTRING(100 100, 190 10, 190 100) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 160 40, 160 100) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] - - LINESTRING(60 140, 160 40, 160 140) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 140 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(20 140, 140 20, 100 20, 100 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 140, 80 20) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) - - - true - - - - -L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - - LINESTRING(130 150, 220 150, 220 240) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 130 150, 250 150) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 250 150) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 130 150, 250 150) - - - LINESTRING(130 240, 130 20, 30 20, 130 150) - - - true - - - - -L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - - LINESTRING(30 150, 250 150) - - - LINESTRING(120 240, 120 20, 20 20, 120 170) - - - true - - - - -nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - LINESTRING(110 110, 200 110) - - - true - - - - -L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - - LINESTRING(110 110, 200 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(20 110, 200 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - LINESTRING(20 110, 200 110) - - - true - - - - -L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] - - LINESTRING(90 200, 90 130, 110 110, 150 200) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] - - LINESTRING(200 110, 110 110, 90 130, 90 200) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] - - LINESTRING(80 80, 150 80, 210 80) - - - MULTILINESTRING( - (20 20, 140 140), - (20 140, 140 20)) - - - true - - - - -LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - true - - - - -LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(40 80, 260 20, 160 200, 40 80) - - - true - - - - -LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(260 20, 40 80, 160 200, 260 20) - - - true - - - - -LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) - - - true - - - - -LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(100 100, 180 180, 20 180, 100 100) - - - true - - - - -LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) - - - true - - - - -LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(180 100, 20 100, 100 180, 180 100) - - - true - - - - -LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(180 180, 100 100, 20 180, 180 180) - - - true - - - - -LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] - - LINESTRING(20 180, 100 100, 20 20, 20 180) - - - LINESTRING(100 20, 100 180, 180 100, 100 20) - - - true - - - - -LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(170 20, 20 170, 170 170, 170 20) - - - true - - - - -LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 150, 90 210, 40 150) - - - true - - - - -LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(20 150, 170 150, 90 230, 20 150) - - - true - - - - -LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - - true - - - - -LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) - - - true - - - - -LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(200 20, 20 200, 200 200, 20 20) - - - true - - - - -nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] - - LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) - - - LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) - - - true - - - - -nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] - - LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - - LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) - - - true - - - - -nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] - - LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - - LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) - - - true - - - - -nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] - - LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) - - - LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) - - - true - - - - -nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - - LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - - LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) - - - true - - - - -nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - - LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - - LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) - - - true - - - - -mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - - MULTILINESTRING( - (70 20, 20 90, 70 170), - (70 170, 120 90, 70 20)) - - - MULTILINESTRING( - (70 20, 20 90, 70 170), - (70 170, 120 90, 70 20)) - - - true - - - - -mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - true - - - - -mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 140, 90 60, 90 20), - (170 20, 130 20, 20 20)) - - - true - - - - -mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (130 100, 130 60, 90 20, 50 90)) - - - true - - - - -mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) - - - true - - - - -mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60)) - - - true - - - - -mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (130 100, 90 20)) - - - true - - - - -mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (120 100, 170 100, 90 20)) - - - true - - - - -mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (120 100, 170 100, 90 20)) - - - true - - - - -mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (130 140, 130 60, 90 20, 20 90, 90 20)) - - - true - - - - -mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60, 20 140, 90 20)) - - - true - - - - -mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 120 120, 90 90, 160 60)) - - - true - - - - -mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 120 120, 90 90, 120 60, 160 60)) - - - true - - - - -mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 90 90, 160 60)) - - - true - - - - - - -P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(20 20) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(70 170) - - - POLYGON( - (110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) - - - true - - - - -P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(110 130) - - - POLYGON( - (20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) - - - true - - - - -P/A-2-4: dim(0){A.P.Int = B.A.Ext} - - POINT(100 70) - - - POLYGON( - (20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) - - - true - - - - -P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(100 70) - - - POLYGON( - (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - - true - - - - -P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] - - POINT(60 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] - - POINT(110 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] - - POINT(160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] - - POINT(100 150) - - - POLYGON( - (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - - true - - - - -P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] - - POINT(100 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] - - POINT(60 160) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] - - POINT(190 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] - - POINT(190 190) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] - - POINT(360 20) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] - - POINT(130 130) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] - - POINT(280 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] - - POINT(150 100) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] - - POINT(100 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] - - POINT(140 120) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - - POINT(190 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (90 50, 150 110, 190 50, 90 50), - (190 50, 230 110, 290 50, 190 50)) - - - true - - - - -P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - - POINT(180 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (180 140, 180 40, 80 40, 180 140), - (180 90, 210 140, 310 40, 230 40, 180 90)) - - - true - - - - -mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] - - MULTIPOINT(20 80, 110 160, 20 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] - - MULTIPOINT(20 80, 60 120, 20 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] - - MULTIPOINT(10 80, 110 170, 110 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] - - MULTIPOINT(10 80, 110 170, 160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] - - MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] - - MULTIPOINT(60 120, 110 120, 160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] - - MULTIPOINT(60 120, 160 120, 160 40, 60 40) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(20 150, 60 120, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(110 80, 160 120, 200 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(110 80, 110 120, 110 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] - - MULTIPOINT(110 170, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] - - MULTIPOINT(60 120, 160 120, 110 80, 110 170) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] - - MULTIPOINT(90 80, 130 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] - - MULTIPOINT(60 120, 160 120, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] - - MULTIPOINT(40 170, 40 90, 130 170) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] - - MULTIPOINT(90 170, 280 170, 190 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] - - MULTIPOINT(190 110, 150 70, 230 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] - - POINT(100 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] - - POINT(20 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] - - POINT(60 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] - - POINT(110 110) - - - MULTIPOLYGON( - ( - (110 110, 20 200, 200 200, 110 110), - (110 110, 80 180, 140 180, 110 110)), - ( - (110 110, 20 20, 200 20, 110 110), - (110 110, 80 40, 140 40, 110 110))) - - - true - - - - - - -P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] - - POINT(110 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] - - POINT(90 80) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] - - POINT(340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - - POINT(230 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] - - POINT(160 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - - POINT(90 150) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - - POINT(150 80) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] - - POINT(150 150) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - - POINT(100 20) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] - - POINT(20 20) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] - - POINT(220 220) - - - LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - - true - - - - -P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - - true - - - - -P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(110 20) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(220 20) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(110 20) - - - LINESTRING(220 220, 20 20, 220 20, 110 110) - - - true - - - - -P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(20 20) - - - LINESTRING(220 220, 20 20, 220 20, 110 110) - - - true - - - - -P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(20 110) - - - LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) - - - true - - - - -P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] - - POINT(20 200) - - - LINESTRING(20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(80 140) - - - LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, - 20 140) - - - true - - - - -P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - - true - - - - -P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) - - - true - - - - -P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 160) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 160) - - - LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(140 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(110 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(140 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(110 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(90 130) - - - LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, - 110 110) - - - true - - - - -P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) - - - true - - - - -P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, - 110 110) - - - true - - - - -P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) - - - true - - - - -P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) - - - true - - - - -P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) - - - true - - - - -P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) - - - true - - - - -P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, - 90 130) - - - true - - - - -P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, - 90 130) - - - true - - - - -P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] - - POINT(110 200) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] - - POINT(110 200) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 200) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] - - MULTIPOINT(50 250, 90 220, 130 190) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] - - MULTIPOINT(180 180, 230 130, 280 80) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] - - MULTIPOINT(50 120, 90 80, 130 40) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] - - MULTIPOINT(300 280, 340 240, 380 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] - - MULTIPOINT(230 150, 260 120, 290 90) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] - - MULTIPOINT(200 190, 240 150, 270 110) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] - - MULTIPOINT(160 150, 190 120, 220 90) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] - - MULTIPOINT(120 190, 160 150, 200 110) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] - - MULTIPOINT(90 80, 160 150, 340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - - MULTIPOINT(90 80, 160 150, 300 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(90 80, 160 150, 240 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(90 80, 130 120, 210 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(130 120, 210 150, 340 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(160 150, 240 150, 340 210) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - - MULTIPOINT(160 150, 300 150, 340 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] - - MULTIPOINT(160 150, 240 150, 340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - - - -P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] - - POINT(40 40) - - - MULTIPOINT(20 20, 80 80, 20 120) - - - true - - - - -P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] - - POINT(20 20) - - - MULTIPOINT(20 20, 80 80, 20 120) - - - true - - - - -mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] - - MULTIPOINT(40 40, 80 60, 120 100) - - - MULTIPOINT(40 40, 120 100, 80 60) - - - true - - - - -mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] - - MULTIPOINT(40 40, 60 100, 100 60, 120 120) - - - MULTIPOINT(20 120, 60 60, 100 100, 140 40) - - - true - - - - -mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - true - - - - -mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] - - MULTIPOINT(20 20, 140 120, 80 70, 200 170) - - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - true - - - - -mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - MULTIPOINT(80 70, 140 120) - - - true - - - - -mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(140 120, 80 70) - - - true - - - - -mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(80 170, 140 120, 200 80) - - - true - - - - -mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(80 170, 140 120, 200 80, 80 70) - - - true - - - - - Multipoint buffer - - MULTIPOINT(0 0, 5 5) - - - - POLYGON ((-10.0 -2.0, -10.0 -0.0, -10.0 2.0, -9.0 4.0, -8.0 6.0, -7.0 7.0, -6.0 8.0, -4.0 9.0, -3.0 11.0, -2.0 12.0, -1.0 13.0, 1.0 14.0, 3.0 15.0, 5.0 15.0, 7.0 15.0, 9.0 14.0, 11.0 13.0, 12.0 12.0, 13.0 11.0, 14.0 9.0, 15.0 7.0, 15.0 5.0, 15.0 3.0, 14.0 1.0, 13.0 -1.0, 12.0 -2.0, 11.0 -3.0, 9.0 -4.0, 8.0 -6.0, 7.0 -7.0, 6.0 -8.0, 4.0 -9.0, 2.0 -10.0, 0.0 -10.0, -2.0 -10.0, -4.0 -9.0, -6.0 -8.0, -7.0 -7.0, -8.0 -6.0, -9.0 -4.0, -10.0 -2.0)) - - - - - - - Multipolygon buffering - - MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) - - - - - MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) - - - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/test.xml geos-3.8.0/tests/xmltester/tests/test.xml --- geos-3.7.1/tests/xmltester/tests/test.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/test.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,6597 +0,0 @@ - - - -A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - -true - - - -A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - -true - - - - -A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -true - - - -A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 20, 140 20, 120 100, 20 100, 20 20)) - - -true - - - -A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(120 100, 140 20, 20 20, 20 100, 120 100)) - - -true - - - -A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) - - -true - - - -A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] - -POLYGON( -(0 0, 80 0, 80 80, 0 80, 0 0)) - - -POLYGON( -(100 200, 100 140, 180 140, 180 200, 100 200)) - - -true - - - -A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 140 200, 240 200, 240 120, 140 120)) - - -true - - - -A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(80 180, 140 260, 260 200, 200 60, 80 180)) - - -true - - - -A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(240 80, 140 120, 180 240, 280 200, 240 80)) - - -true - - - -A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - -POLYGON( -(140 40, 180 80, 120 100, 140 40)) - - -true - - - -A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - -POLYGON( -(120 100, 180 80, 130 40, 120 100)) - - -true - - - -A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 180 20, 140 140, 20 140, 20 20)) - - -POLYGON( -(180 100, 80 200, 180 280, 260 200, 180 100)) - - -true - - - -A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 140, 20 120, 0 220, 120 240, 140 140)) - - -true - - - -A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - -POLYGON( -(160 200, 210 70, 120 70, 160 200)) - - -POLYGON( -(160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) - - -true - - - -A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - -POLYGON( -(110 140, 200 70, 200 160, 110 140)) - - -POLYGON( -(110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) - - -true - - - -A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) - - -POLYGON( -(20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) - - -true - - - -A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) - - -POLYGON( -(20 120, 300 120, 140 240, 20 120)) - - -true - - - -A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, -20 20)) - - -POLYGON( -(100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) - - -true - - - -A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, -20 20)) - - -POLYGON( -(260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) - - -true - - - -A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(0 140, 300 140, 140 240, 0 140)) - - -true - - - -A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(20 240, 20 140, 320 140, 180 240, 20 240)) - - -true - - - -A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) - - -true - - - -A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(120 120, 220 20, 280 20, 240 160, 120 120)) - - -true - - - -A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 160 20, 260 120, 220 200, 140 120)) - - -true - - - -A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - -POLYGON( -(20 140, 120 40, 20 40, 20 140)) - - -POLYGON( -(190 140, 190 20, 140 20, 20 140, 190 140)) - - -true - - - -A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(300 20, 220 20, 120 120, 260 160, 300 20)) - - -true - - - -A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 240 160, 280 60, 160 20, 140 120)) - - -true - - - -A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(280 60, 180 60, 120 120, 260 180, 280 60)) - - -true - - - -A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(120 200, 120 120, 40 120, 40 200, 120 200)) - - -true - - - -A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(160 220, 140 120, 60 120, 40 220, 160 220)) - - -true - - - -A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 20 120, 20 220, 140 220, 140 120)) - - -true - - - -A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(320 20, 220 20, 80 160, 240 140, 320 20)) - - -true - - - -A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(60 40, 60 140, 180 140, 180 40, 60 40)) - - -true - - - -A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 80 140, 160 60, 20 20)) - - -true - - - -A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(160 60, 20 20, 100 140, 160 60)) - - -true - - - -A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 100, 140 160, 160 40, 20 100)) - - -true - - - -A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(160 40, 20 100, 160 160, 160 40)) - - -true - - - -A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 180, 180 120, 80 40, 20 180)) - - -true - - - -A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(180 120, 100 40, 20 180, 180 120)) - - -true - - - -A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) - - -true - - - -A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) - - -true - - - -A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) - - -true - - - -A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) - - -true - - - -A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) - - -true - - - -A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) - - -true - - - -A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 140, 120 120, 120 40, 20 20)) - - -true - - - -A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 180, 140 140, 140 60, 20 20)) - - -true - - - -A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 120 40, 120 120, 20 140, 20 20)) - - -true - - - -A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(120 40, 20 20, 20 140, 120 120, 120 40)) - - -true - - - -A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 60, 140 140, 20 180, 20 20)) - - -true - - - -A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(140 60, 20 20, 20 180, 140 140, 140 60)) - - -true - - - -A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 60 120, 140 120, 180 20, 20 20)) - - -true - - - -A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 40, 120 40, 120 120, 20 140, 20 40)) - - -true - - - -A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) - - -true - - - -A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(150 150, 330 150, 250 70, 70 70, 150 150)) - - -POLYGON( -(150 150, 270 150, 140 20, 20 20, 150 150)) - - -true - - - -A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) - - -POLYGON( -(150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) - - -true - - - -A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, -80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, -100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, -190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, -290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, -240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, -240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, -250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, -160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, -70 40, 20 20)) - - -POLYGON( -(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, -120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, -120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, -200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, -380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, -440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, -440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, -390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, -370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, -280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, -200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, -180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, -200 120, 120 120, 190 140)) - - -true - - - -A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, -20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, -200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, -270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, -350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, -360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, -410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, -240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, -170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, -410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, -420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, -460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, -140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, -90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, -50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, -40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) - - -POLYGON( -(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, -120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, -120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, -200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, -380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, -440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, -440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, -390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, -370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, -280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, -200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, -180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, -200 120, 120 120, 190 140)) - - -true - - - -A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) - - -true - - - -A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(60 160, 20 200, 260 200, 140 80, 60 160)) - - -true - - - -A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 140 80, 260 200, 20 200)) - - -true - - - -A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) - - -true - - - -A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 60 160, 140 80, 260 200, 20 200)) - - -true - - - -A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(0 0, 0 200, 200 200, 200 0, 0 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 0, 100 200, 200 200, 200 0, 100 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 0, 120 200, 200 200, 200 0, 120 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(0 0, 0 200, 110 200, 110 0, 0 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2100 110, 2100 100, 100 100)) - - -true - - - -A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 500 110, 500 100, 100 100)) - - -true - - - -A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 130 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 17 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(101 99, 101 1000000, 102 1000000, 101 99)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 200 101, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) - - -POLYGON( -(10 307, 22 307, 153 34, 22 34, 10 307)) - - -true - - - -A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] - -POLYGON( -(160 200, 210 70, 120 70, 160 200)) - - -POLYGON( -(160 200, 310 20, 20 20, 160 200), -(160 200, 260 40, 70 40, 160 200)) - - -true - - - -A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - -POLYGON( -(170 120, 240 100, 260 50, 190 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - -POLYGON( -(270 90, 200 50, 150 80, 210 120, 270 90)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] - -POLYGON( -(170 120, 260 100, 240 60, 150 80, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] - -POLYGON( -(220 120, 270 80, 200 60, 160 100, 220 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] - -POLYGON( -(260 50, 180 70, 180 110, 260 90, 260 50)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] - -POLYGON( -(230 110, 290 80, 190 60, 140 90, 230 110)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - -POLYGON( -(170 120, 330 120, 280 70, 120 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - -POLYGON( -(170 120, 300 120, 250 70, 120 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] - -POLYGON( -(190 100, 310 100, 260 50, 140 50, 190 100)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(280 130, 360 130, 270 40, 190 40, 280 130)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] - -POLYGON( -(220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, -390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] - -POLYGON( -(260 130, 360 130, 280 40, 170 40, 260 130)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] - -POLYGON( -(240 110, 340 110, 290 60, 190 60, 240 110)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] - -POLYGON( -(250 120, 350 120, 280 50, 180 50, 250 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(120 180, 50 50, 200 50, 120 180)) - - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(120 180, 50 50, 200 50, 120 180)) - - -true - - - -A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(140 40, 40 40, 40 170, 140 40), -(110 190, 210 190, 210 50, 110 190)) - - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(140 40, 40 40, 40 170, 140 40), -(110 190, 210 190, 210 50, 110 190)) - - -true - - - -A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - -POLYGON( -(280 190, 330 150, 200 110, 150 150, 280 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - -POLYGON( -(80 190, 220 190, 140 110, 0 110, 80 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - -POLYGON( -(330 150, 200 110, 150 150, 280 190, 330 150)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] - -POLYGON( -(290 190, 340 150, 220 120, 170 170, 290 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] - -POLYGON( -(220 190, 340 190, 260 110, 140 110, 220 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - -POLYGON( -(140 190, 220 190, 100 70, 20 70, 140 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(140 220, 60 140, 140 60, 220 140, 140 220)) - - -MULTIPOLYGON( -( -(100 20, 180 20, 180 100, 100 100, 100 20)), -( -(20 100, 100 100, 100 180, 20 180, 20 100)), -( -(100 180, 180 180, 180 260, 100 260, 100 180)), -( -(180 100, 260 100, 260 180, 180 180, 180 100))) - - -true - - - -mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - -MULTIPOLYGON( -( -(110 110, 70 200, 150 200, 110 110)), -( -(110 110, 150 20, 70 20, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110))) - - -true - - - -mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - -MULTIPOLYGON( -( -(110 110, 70 200, 150 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 150 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - -MULTIPOLYGON( -( -(110 110, 20 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 20 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 70 200, 210 110, 70 20, 110 110), -(110 110, 110 140, 150 110, 110 80, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - - -AC A-shells overlapping B-shell at A-vertex - -POLYGON( -(100 60, 140 100, 100 140, 60 100, 100 60)) - - -MULTIPOLYGON( -( -(80 40, 120 40, 120 80, 80 80, 80 40)), -( -(120 80, 160 80, 160 120, 120 120, 120 80)), -( -(80 120, 120 120, 120 160, 80 160, 80 120)), -( -(40 80, 80 80, 80 120, 40 120, 40 80))) - - -true - - - - -L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] - -LINESTRING(150 150, 40 230) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - -LINESTRING(40 40, 50 130, 130 130) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] - -LINESTRING(40 230, 150 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] - -LINESTRING(210 150, 330 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] - -LINESTRING(200 150, 310 150, 360 220) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] - -LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] - -LINESTRING(210 210, 220 150, 320 150, 370 210) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] - -LINESTRING(20 60, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] - -LINESTRING(60 90, 310 180) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] - -LINESTRING(90 210, 210 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] - -LINESTRING(290 10, 130 170) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(30 100, 100 100, 180 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] - -LINESTRING(20 100, 100 100, 360 100, 410 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(90 210, 150 150, 210 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] - -LINESTRING(180 90, 280 120) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - -LINESTRING(70 70, 80 20) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] - -LINESTRING(130 20, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] - -LINESTRING(70 70, 80 20, 140 20, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(170 50, 170 20, 240 20, 260 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] - -LINESTRING(50 100, 140 190, 280 190) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - -LINESTRING(140 60, 180 100, 290 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - -LINESTRING(170 120, 210 80, 270 80) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] - -LINESTRING(170 120, 260 50) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(190 90, 190 270) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(190 190, 280 50, 100 50, 190 190)) - - -true - - - -L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(110 110, 250 100, 140 30, 110 110)) - - -true - - - -L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(190 90, 190 190, 190 270) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(190 190, 280 50, 100 50, 190 190)) - - -true - - - -L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(110 110, 250 100, 140 30, 110 110)) - - -true - - - -L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 110 110, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] - -LINESTRING(130 110, 180 110, 190 60) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - -LINESTRING(80 110, 180 110) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] - -LINESTRING(80 110, 180 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(60 180, 130 110, 60 40, 60 180), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - -LINESTRING(80 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 180 110) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] - -LINESTRING(80 110, 130 110, 180 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(60 180, 130 110, 60 40, 60 180), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] - -LINESTRING(160 70, 320 230) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] - -LINESTRING(160 70, 200 110, 280 190, 320 230) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] - -LINESTRING(70 50, 70 150) - - -MULTIPOLYGON( -( -(0 0, 0 100, 140 100, 140 0, 0 0)), -( -(20 170, 70 100, 130 170, 20 170))) - - -true - - - -RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 200, 200 200, 110 110) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] - -LINESTRING(150 70, 160 110, 200 60, 150 70) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] - -LINESTRING(80 60, 120 40, 120 70, 80 60) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] - -LINESTRING(20 20, 200 20, 110 110, 20 20) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] - -LINESTRING(110 90, 170 30, 50 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] - -LINESTRING(110 110, 170 50, 170 110, 110 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] - -LINESTRING(110 90, 70 50, 130 50, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] - -LINESTRING(110 60, 20 150, 200 150, 110 60) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] - -LINESTRING(110 130, 110 70, 200 100, 110 130) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] - -LINESTRING(110 90, 160 40, 60 40, 110 90) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] - -LINESTRING(110 100, 40 30, 180 30, 110 100) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] - -LINESTRING(110 110, 180 30, 40 30, 110 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] - -LINESTRING(110 90, 180 30, 40 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] - -LINESTRING(110 90, 50 30, 180 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] - -LINESTRING(110 110, 200 200, 200 110, 110 200) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] - -LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 180 40, 110 40, 110 180) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] - -LINESTRING(110 60, 50 30, 170 30, 90 70) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] - -LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(200 200, 110 110, 20 210, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(60 180, 60 110, 160 110, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(200 200, 110 110, 20 200, 110 200, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 50, 110 170, 110 70, 110 150, 200 150)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 60, 110 160, 200 160)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 60, 110 160, 200 160)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - -MULTILINESTRING( -(110 100, 40 30, 180 30), -(170 30, 110 90, 50 30)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - -MULTILINESTRING( -(110 110, 60 40, 70 20, 150 20, 170 40), -(180 30, 40 30, 110 80)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 110, 200 110, 200 160), -(110 110, 200 110, 200 70, 20 150)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - -mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 160, 70 110, 150 110, 200 160), -(110 110, 20 110, 50 80, 70 110, 200 110)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - -mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 110, 20 170, 20 130, 200 90)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - - -LC - topographically equal with no boundary - -LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) - - -MULTILINESTRING( -(0 0, 0 50), -(0 50, 50 50), -(50 50, 50 0), -(50 0, 0 0)) - - -true - - - -LC - intersection (containment) along mod-2 A-Int line segment - -LINESTRING(40 180, 140 180) - - -MULTIPOLYGON( -( -(20 320, 180 320, 180 180, 20 180, 20 320)), -( -(20 180, 20 80, 180 80, 180 180, 20 180))) - - -true - - - -LC - intersection (overlap) along mod-2 A-Int line segment - -LINESTRING(40 180, 140 180) - - -MULTIPOLYGON( -( -(20 320, 180 320, 180 180, 20 180, 20 320)), -( -(60 180, 60 80, 180 80, 180 180, 60 180))) - - -true - - - -LC - equal with boundary intersection - -LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) - - -MULTILINESTRING( -(0 0, 60 0), -(60 0, 120 0), -(60 0, 60 60)) - - -true - - - - -L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 40, 60 120) - - -true - - - -L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(60 240, 40 40) - - -true - - - -L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] - -LINESTRING(40 40, 180 180) - - -LINESTRING(120 120, 20 200) - - -true - - - -L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(60 240, 120 120) - - -true - - - -L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] - -LINESTRING(40 40, 180 180) - - -LINESTRING(20 180, 140 140) - - -true - - - -L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 120, 120 40) - - -true - - - -L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(40 40, 100 100) - - -LINESTRING(40 40, 100 100) - - -true - - - -L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100) - - -LINESTRING(100 100, 40 40) - - -true - - - -L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 120, 120 160) - - -true - - - -L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(20 20, 180 180) - - -true - - - -L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(20 20, 110 110) - - -true - - - -L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(50 50, 140 140) - - -true - - - -L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] - -LINESTRING(180 180, 40 40) - - -LINESTRING(120 120, 260 260) - - -true - - - -L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] - -LINESTRING(40 40, 180 180) - - -LINESTRING(260 260, 120 120) - - -true - - - -L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] - -LINESTRING(40 40, 180 180) - - -LINESTRING(120 120, 260 260) - - -true - - - -L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(40 40, 20 100, 40 160, 20 200) - - -true - - - -L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(20 200, 40 160, 20 100, 40 40) - - -true - - - -L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(80 240, 200 120, 100 100, 40 40) - - -LINESTRING(20 200, 40 160, 20 100, 40 40) - - -true - - - -L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(20 20, 60 60, 250 160, 310 230) - - -true - - - -L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(20 20, 110 110, 200 110, 320 230) - - -true - - - -L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(60 110, 60 250, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] - -LINESTRING(60 110, 60 250, 360 210) - - -LINESTRING(360 210, 310 160, 110 160, 60 110) - - -true - - - -L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(160 160, 240 240) - - -true - - - -L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(240 240, 160 160) - - -true - - - -L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 150, 110 100, 170 100, 110 230) - - -true - - - -L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 120, 200 190, 150 240, 200 240) - - -true - - - -L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 240, 150 240, 200 200, 200 120) - - -true - - - -L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 230, 80 140, 120 140, 140 230) - - -true - - - -L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(60 110, 200 110, 250 160, 300 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - -LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(60 110, 220 110, 250 160, 280 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - -LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(130 160, 160 110, 190 110, 230 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 160, 180 110, 250 160, 320 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(140 160, 180 80, 220 160, 250 80) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(20 130, 70 130, 160 40) - - -true - - - -L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(40 160, 40 100, 110 40, 170 40) - - -true - - - -L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(30 140, 80 140, 100 100, 200 30) - - -true - - - -L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, -240 80, 300 80, 270 110, 200 110) - - -true - - - -L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, -230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, -80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, -70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, -40 190, 230 190, 20 200, 230 200) - - -LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, -70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, -120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, -150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, -190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) - - -true - - - -L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -true - - - -L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 240, 200 120, 100 100, 40 40) - - -true - - - -L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) - - -true - - - -L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(260 210, 240 130, 280 120, 260 40) - - -true - - - -L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - -LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) - - -LINESTRING(140 130, 100 110, 120 60, 170 60) - - -true - - - -L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160) - - -true - - - -L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(110 160, 310 160, 340 190) - - -true - - - -L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(140 160, 250 160, 310 160, 340 190) - - -true - - - -L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(110 160, 250 160, 310 160) - - -true - - - -L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) - - -true - - - -L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) - - -true - - - -L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 190, 140 140, 40 40) - - -true - - - -L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(240 200, 200 260, 80 240, 140 180) - - -true - - - -L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(140 180, 80 240, 200 260, 240 200) - - -true - - - -L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 80 240) - - -true - - - -L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 80, 120 80, 200 80, 260 20) - - -true - - - -L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(100 100, 200 120, 240 140, 280 240) - - -true - - - -L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 100 100) - - -true - - - -L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(80 20, 80 80, 240 80, 300 20) - - -true - - - -L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, -300 80) - - -true - - - -L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] - -LINESTRING(100 100, 20 180, 180 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - -LINESTRING(20 100, 180 100, 100 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - -LINESTRING(100 40, 100 160, 180 160) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] - -LINESTRING(20 100, 100 100, 180 100, 100 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 160 40) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 180 20) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] - -LINESTRING(60 60, 100 100, 140 60) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] - -LINESTRING(100 100, 190 10, 190 100) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 160 40, 160 100) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] - -LINESTRING(60 140, 160 40, 160 140) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 140 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(20 140, 140 20, 100 20, 100 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 140, 80 20) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) - - -true - - - -L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - -LINESTRING(130 150, 220 150, 220 240) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 130 150, 250 150) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 250 150) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 130 150, 250 150) - - -LINESTRING(130 240, 130 20, 30 20, 130 150) - - -true - - - -L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - -LINESTRING(30 150, 250 150) - - -LINESTRING(120 240, 120 20, 20 20, 120 170) - - -true - - - -nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -LINESTRING(110 110, 200 110) - - -true - - - -L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - -LINESTRING(110 110, 200 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(20 110, 200 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -LINESTRING(20 110, 200 110) - - -true - - - -L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] - -LINESTRING(90 200, 90 130, 110 110, 150 200) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] - -LINESTRING(200 110, 110 110, 90 130, 90 200) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] - -LINESTRING(80 80, 150 80, 210 80) - - -MULTILINESTRING( -(20 20, 140 140), -(20 140, 140 20)) - - -true - - - -LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -true - - - -LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(40 80, 260 20, 160 200, 40 80) - - -true - - - -LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(260 20, 40 80, 160 200, 260 20) - - -true - - - -LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) - - -true - - - -LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(100 100, 180 180, 20 180, 100 100) - - -true - - - -LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) - - -true - - - -LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(180 100, 20 100, 100 180, 180 100) - - -true - - - -LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(180 180, 100 100, 20 180, 180 180) - - -true - - - -LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] - -LINESTRING(20 180, 100 100, 20 20, 20 180) - - -LINESTRING(100 20, 100 180, 180 100, 100 20) - - -true - - - -LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(170 20, 20 170, 170 170, 170 20) - - -true - - - -LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 150, 90 210, 40 150) - - -true - - - -LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(20 150, 170 150, 90 230, 20 150) - - -true - - - -LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - -true - - - -LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) - - -true - - - -LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(200 20, 20 200, 200 200, 20 20) - - -true - - - -nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] - -LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) - - -LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) - - -true - - - -nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] - -LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - -LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) - - -true - - - -nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] - -LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - -LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) - - -true - - - -nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] - -LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) - - -LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) - - -true - - - -nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - -LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - -LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) - - -true - - - -nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - -LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - -LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) - - -true - - - -mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - -MULTILINESTRING( -(70 20, 20 90, 70 170), -(70 170, 120 90, 70 20)) - - -MULTILINESTRING( -(70 20, 20 90, 70 170), -(70 170, 120 90, 70 20)) - - -true - - - -mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -true - - - -mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 140, 90 60, 90 20), -(170 20, 130 20, 20 20)) - - -true - - - -mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(130 100, 130 60, 90 20, 50 90)) - - -true - - - -mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) - - -true - - - -mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60)) - - -true - - - -mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(130 100, 90 20)) - - -true - - - -mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(120 100, 170 100, 90 20)) - - -true - - - -mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(120 100, 170 100, 90 20)) - - -true - - - -mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(130 140, 130 60, 90 20, 20 90, 90 20)) - - -true - - - -mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60, 20 140, 90 20)) - - -true - - - -mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 120 120, 90 90, 160 60)) - - -true - - - -mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 120 120, 90 90, 120 60, 160 60)) - - -true - - - -mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 90 90, 160 60)) - - -true - - - - -P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(20 20) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(70 170) - - -POLYGON( -(110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) - - -true - - - -P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(110 130) - - -POLYGON( -(20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) - - -true - - - -P/A-2-4: dim(0){A.P.Int = B.A.Ext} - -POINT(100 70) - - -POLYGON( -(20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) - - -true - - - -P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(100 70) - - -POLYGON( -(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - -true - - - -P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] - -POINT(60 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] - -POINT(110 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] - -POINT(160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] - -POINT(100 150) - - -POLYGON( -(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - -true - - - -P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] - -POINT(100 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] - -POINT(60 160) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] - -POINT(190 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] - -POINT(190 190) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] - -POINT(360 20) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] - -POINT(130 130) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] - -POINT(280 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] - -POINT(150 100) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] - -POINT(100 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] - -POINT(140 120) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - -POINT(190 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(90 50, 150 110, 190 50, 90 50), -(190 50, 230 110, 290 50, 190 50)) - - -true - - - -P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - -POINT(180 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(180 140, 180 40, 80 40, 180 140), -(180 90, 210 140, 310 40, 230 40, 180 90)) - - -true - - - -mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] - -MULTIPOINT(20 80, 110 160, 20 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] - -MULTIPOINT(20 80, 60 120, 20 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] - -MULTIPOINT(10 80, 110 170, 110 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] - -MULTIPOINT(10 80, 110 170, 160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] - -MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] - -MULTIPOINT(60 120, 110 120, 160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] - -MULTIPOINT(60 120, 160 120, 160 40, 60 40) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(20 150, 60 120, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(110 80, 160 120, 200 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(110 80, 110 120, 110 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] - -MULTIPOINT(110 170, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] - -MULTIPOINT(60 120, 160 120, 110 80, 110 170) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] - -MULTIPOINT(90 80, 130 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] - -MULTIPOINT(60 120, 160 120, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] - -MULTIPOINT(40 170, 40 90, 130 170) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] - -MULTIPOINT(90 170, 280 170, 190 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] - -MULTIPOINT(190 110, 150 70, 230 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] - -POINT(100 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] - -POINT(20 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] - -POINT(60 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] - -POINT(110 110) - - -MULTIPOLYGON( -( -(110 110, 20 200, 200 200, 110 110), -(110 110, 80 180, 140 180, 110 110)), -( -(110 110, 20 20, 200 20, 110 110), -(110 110, 80 40, 140 40, 110 110))) - - -true - - - - -P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] - -POINT(110 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] - -POINT(90 80) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] - -POINT(340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - -POINT(230 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] - -POINT(160 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - -POINT(90 150) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - -POINT(150 80) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] - -POINT(150 150) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - -POINT(100 20) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] - -POINT(20 20) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] - -POINT(220 220) - - -LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - -true - - - -P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - -true - - - -P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(110 20) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(220 20) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(110 20) - - -LINESTRING(220 220, 20 20, 220 20, 110 110) - - -true - - - -P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(20 20) - - -LINESTRING(220 220, 20 20, 220 20, 110 110) - - -true - - - -P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(20 110) - - -LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) - - -true - - - -P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] - -POINT(20 200) - - -LINESTRING(20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - -true - - - -P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(80 140) - - -LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, -20 140) - - -true - - - -P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - -true - - - -P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) - - -true - - - -P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 160) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 160) - - -LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(140 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(110 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(140 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(110 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(90 130) - - -LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, -110 110) - - -true - - - -P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) - - -true - - - -P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, -110 110) - - -true - - - -P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) - - -true - - - -P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) - - -true - - - -P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) - - -true - - - -P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) - - -true - - - -P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, -90 130) - - -true - - - -P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - -true - - - -P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, -90 130) - - -true - - - -P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - -true - - - -P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] - -POINT(110 200) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] - -POINT(110 200) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 200) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] - -MULTIPOINT(50 250, 90 220, 130 190) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] - -MULTIPOINT(180 180, 230 130, 280 80) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] - -MULTIPOINT(50 120, 90 80, 130 40) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] - -MULTIPOINT(300 280, 340 240, 380 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] - -MULTIPOINT(230 150, 260 120, 290 90) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] - -MULTIPOINT(200 190, 240 150, 270 110) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] - -MULTIPOINT(160 150, 190 120, 220 90) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] - -MULTIPOINT(120 190, 160 150, 200 110) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] - -MULTIPOINT(90 80, 160 150, 340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - -MULTIPOINT(90 80, 160 150, 300 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(90 80, 160 150, 240 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(90 80, 130 120, 210 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(130 120, 210 150, 340 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(160 150, 240 150, 340 210) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - -MULTIPOINT(160 150, 300 150, 340 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] - -MULTIPOINT(160 150, 240 150, 340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - - -P/P: same point [dim(0){A.P.Int = B.P.Int}] - -POINT(20 20) - - -POINT(20 20) - - -true - - - -P/P: different point [dim(0){A.P.Int = B.P.Ext}] - -POINT(20 20) - - -POINT(40 60) - - -true - - - -P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] - -POINT(40 40) - - -MULTIPOINT(20 20, 80 80, 20 120) - - -true - - - -P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] - -POINT(20 20) - - -MULTIPOINT(20 20, 80 80, 20 120) - - -true - - - -mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] - -MULTIPOINT(40 40, 80 60, 120 100) - - -MULTIPOINT(40 40, 80 60, 120 100) - - -true - - - -mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] - -MULTIPOINT(40 40, 80 60, 120 100) - - -MULTIPOINT(40 40, 120 100, 80 60) - - -true - - - -mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] - -MULTIPOINT(40 40, 60 100, 100 60, 120 120) - - -MULTIPOINT(20 120, 60 60, 100 100, 140 40) - - -true - - - -mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -true - - - -mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] - -MULTIPOINT(20 20, 140 120, 80 70, 200 170) - - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -true - - - -mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -MULTIPOINT(80 70, 140 120) - - -true - - - -mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(140 120, 80 70) - - -true - - - -mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(80 170, 140 120, 200 80) - - -true - - - -mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(80 170, 140 120, 200 80, 80 70) - - -true - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug176.xml geos-3.8.0/tests/xmltester/tests/ticket/bug176.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug176.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug176.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - - - http://trac.osgeo.org/geos/ticket/176 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - Polygon 1 - - -POLYGON ((413.3999999999999773 243.0999999999999943, 607.2999999999999545 244.1999999999999886, 607.0000000000000000 294.8999999999999773, 697.8999999999999773 295.3999999999999773, 699.2000000000000455 241.8000000000000114, 416.8999999999999773 240.9000000000000057, 416.6999999999999886 162.3000000000000114, 413.1999999999999886 162.3000000000000114, 413.3999999999999773 243.0999999999999943)) - - - -POLYGON ((609.1722610376851890 243.5129929302678704, 609.2638333893902427 243.8213729820575395, 609.2999649881396635 244.2118341123558309, 609.0118040315680901 292.9110357729544489, 695.9481804295313623 293.3892336629322699, 697.1510625643339836 243.7934779510754595, 609.1722610376851890 243.5129929302678704)) - - - - - - - - - Polygon 2 - - -POLYGON ((513.3999999999999773 343.1000000000000227, 707.2999999999999545 344.1999999999999886, 707.0000000000000000 394.8999999999999773, 797.8999999999999773 395.3999999999999773, 799.2000000000000455 341.8000000000000114, 516.8999999999999773 340.8999999999999773, 516.7000000000000455 262.3000000000000114, 513.2000000000000455 262.3000000000000114, 513.3999999999999773 343.1000000000000227)) - - - -POLYGON ((709.1722610376851890 343.5129929302678988, 709.2638333893902427 343.8213729820575963, 709.2999649881396635 344.2118341123558594, 709.0118040315680901 392.9110357729544489, 795.9481804295313623 393.3892336629322699, 797.1510625643339836 343.7934779510754879, 709.1722610376851890 343.5129929302678988)) - - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug188.xml geos-3.8.0/tests/xmltester/tests/ticket/bug188.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug188.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug188.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/188 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - Caused crash in RightmostEdgeFinder creating BufferSubgraphs - - -0103000000010000000B000000713D0AD7C3F9C3403D0AD7A3E8B01441295C8FC255FBC340C3F5285C0BB1144153BB8CF8AD01C44092DD2F29FEB0144148E17A14AE01C4408FC2F528FEB0144148E17A146E01C440A4703D0AF0B014411F85EB517801C44085EB51B8EFB014419A999999B9FFC34066666666CBB0144133333333F3FCC340CDCCCCCCC9B01441295C8FC2F5FBC3408FC2F528CAB014413D0AD7A3F0FBC340CDCCCCCCC9B01441713D0AD7C3F9C3403D0AD7A3E8B01441 - - - -0103000000010000000F000000693B38D7C3F9C340F428D7A3E8B0144168CCA9C255FBC3400F64275C0BB11441F72C82F8AD01C440D4982E29FEB01441501A4C14AE01C4402CC9F428FEB01441FB5951146E01C440B39F3D0AF0B01441E41853146E01C44058063D0AF0B01441C8385D146E01C44060833C0AF0B01441AA97BA517801C440699851B8EFB0144145027C99B9FFC340C0A56766CBB01441F3A43233F3FCC340E51CCECCC9B01441B94391C2F5FBC340C211F728CAB014412A4F79C2F5FBC340FDDFF628CAB014412F0869C2F5FBC340D64AF628CAB01441FD95D2A3F0FBC340CFB6CFCCC9B01441693B38D7C3F9C340F428D7A3E8B01441 - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug244.xml geos-3.8.0/tests/xmltester/tests/ticket/bug244.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug244.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug244.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/244 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - -http://trac.osgeo.org/geos/ticket/244 - - - MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) - - - - MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug275.xml geos-3.8.0/tests/xmltester/tests/ticket/bug275.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug275.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug275.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/275 - - - - - -http://trac.osgeo.org/geos/ticket/275 - - -MULTIPOLYGON (((97.4196581300587923 1391.7094503287939915, 1097.3929445351700451 1659.6432199333848985, 2097.6867783781326580 1391.5243492190379584, 2829.5979618286305595 659.3760732813996128, 3097.3929252677053228 -340.6343946513263745, 2829.3203546600025220 -1340.5704802618731719, 2566.4316545475776365 -1603.3983692935935323, 2589.9586987092807249 -1691.2539814346002913, 2550.3216026895242976 -1839.1041048139375107, 2582.0225141513105882 -1957.4828931887502677, 2523.0465473393464890 -2177.4688367911371643, 2361.9813735858801920 -2338.4967531528800464, 2141.9817920466971373 -2397.4218256316030420, 1921.9931199150225893 -2338.4560374338593647, 1915.5094890288899023 -2331.9715065100085667, 1790.8032356108271870 -2365.3730474120334293, 1773.3588004956532131 -2360.6972390794344392, 1755.9014460409671301 -2365.3730474120334293, 1535.9127739092928095 -2306.4072592142892972, 1470.0174606543544087 -2240.5027985744332000, 1267.8188705444704283 -2294.6600223925997852, 1145.5500718010853234 -2750.7342254735290226, 779.4928666591022193 -3116.7067547270667092, 279.4938285436001593 -3250.6273710942414255, -220.4804154644647269 -3116.6142190040254718, -276.8825358097809044 -3060.2042690896628301, -317.8708072633123720 -3042.4487397531365787, -317.0081043084857697 -3040.4572078632113517, -353.9188796380849453 -3025.9673133506230442, -481.8759722620623052 -2952.0780561800302166, -597.3916747239470624 -2859.9435764086629206, -697.8857092860117746 -2751.6218846962374300, -781.1133376604859677 -2629.5325659449085833, -845.2155017965442312 -2496.4027329581699632, -881.7734250743712892 -2377.8616075414415718, -883.2163026251768088 -2378.2274205979942963, -915.6765245378969666 -2250.1944686487954641, -958.6488338256679071 -2176.6893024190303549, -958.3104527203266798 -2176.4914793507796276, -961.3773376604859777 -2171.9925659449086197, -1025.4795017965443549 -2038.8627329581699996, -1069.0243497161841333 -1897.6661108397263433, -1091.0392188351402183 -1751.5566128059626863, -1091.0323623564322588 -1603.7978911310922285, -1089.6762878232161711 -1594.8034867385058533, -1104.6051239273215288 -1541.4387753320572756, -1142.1697554404233870 -1500.9481685832554376, -1144.1735018958338514 -1502.8286850026515822, -1237.9475018958337387 -1402.9096850026517131, -1235.9437554404232742 -1401.0291685832553412, -1283.8694719642787732 -1349.3704336840412452, -1284.3641704239839783 -1349.7723644815778243, -1285.2860836559341351 -1348.6376690100614724, -1338.3270735958196838 -1329.0603190321844522, -1337.4416005745254097 -1326.6613035542172838, -1425.0218796380850108 -1292.2803133506229187, -1552.9789722620623706 -1218.3910561800300911, -1668.4946747239471279 -1126.2565764086627951, -1679.3254791566805579 -1114.5821415641194108, -1680.0605373265407252 -1115.3491207030931491, -1702.7503708819851909 -1093.6036172334481762, -1770.9343685341837045 -1058.4171540195427497, -1770.1722772833329600 -1056.9403807575390601, -1874.5379722620623397 -996.6740561800301066, -1895.7478836933294133 -979.7571858838782646, -1896.7182978644157174 -981.0996960943623435, -2746.6499049371641377 -366.7388744659292570, -2763.2967822031337164 -362.2768436281256186, -2790.5987539714260492 -334.9710818839997160, -2790.5987539714260492 -334.9710818839996023, -2842.3952978644156246 -297.5306960943622698, -2841.4248836933293205 -296.1881858838783614, -2935.7306747239472315 -220.9705764086628506, -3036.2247092860116027 -112.6488846962375874, -3086.2207836436286925 -39.3080148699587753, -3129.2862482014747911 3.7634279033554208, -3145.0472131318642823 62.5968530737783055, -3145.0472131318642823 62.5968530737785258, -3183.5545017965441730 142.5702670418300499, -3227.0993497161844061 283.7668891602737631, -3249.1142188351404911 429.8763871940373633, -3249.1132358283407484 451.0604139114426516, -3263.2299989295852356 503.7562690975839246, -3249.1083453730552719 556.4508704679574294, -3249.1073623564325317 577.6351088689078779, -3227.0789334334317573 723.7425631523476568, -3183.5209817488726003 864.9351434214565870, -3145.0063950996932363 944.9047260716176879, -3129.2399803399048324 1003.7367132380807107, -3086.1705453954227778 1046.8041554447745511, -3036.1675038980588397 1120.1406209104106892, -2935.6634168207938274 1228.4529856651729460, -2820.1391641855243506 1320.5767444414277634, -2801.7930339334729979 1331.1685093202834196, -2763.2166432025555878 1369.7431151977043555, -2710.5214060758321466 1383.8623258961499687, -2692.1752147154593331 1394.4541260546511694, -2554.6299030180371119 1448.4349291985654418, -2410.5755828783944708 1481.3133830416004457, -2322.0627096881689795 1487.9463092123467050, -2263.2300000000000182 1503.7100000000000364, -2204.3990753125572155 1487.9409523895812981, -2115.7029639281322488 1481.2860169705504632, -1971.6547489328795564 1448.3808253636827885, -1834.1194591345197296 1394.3744929749309449, -1815.7587157038797159 1383.7697470828661608, -1763.0830830785189391 1369.6505646428263390, -1724.5137550381382425 1331.0687426030108327, -1706.1692244587284222 1320.4733608833789731, -1685.0325693031700212 1303.6117095115282609, -1684.0647021355841844 1304.9506960943622289, -798.3848875647835257 664.7497975144585780, -668.7086314658160973 597.8301540195427606, -669.4687336638634179 596.3572351253640136, -653.9962840476707697 587.4207017476531973, -634.6270161446395832 659.6966464095463607, 97.4196581300587923 1391.7094503287939915))) - - -POLYGON ((-3138.9918179090095691 39.9929298181513317, -3195.9318721744207323 131.7765582775780331, -3194.3605115562841092 132.7513874532058367, -3212.0423376604862824 158.6894340550911124, -3276.1445017965443185 291.8192670418299599, -3319.6893497161845517 433.0158891602736730, -3341.7042188351406367 579.1253871940372164, -3341.7041685876552037 580.2082322725017320, -3341.7842797495400191 580.2023206768839145, -3358.7842797495400191 810.5783206768840046, -3358.7041685876552037 810.5842322725018221, -3358.6973623564326772 957.2601088689078779, -3336.6689334334319028 1103.3675631523476568, -3293.1109817488727458 1244.5601434214565870, -3260.5234971247000431 1312.2230153808816340, -3296.6374455479131029 1414.0631037763496352, -3294.8380822260414789 1414.7011836840215437, -3328.7143497161841879 1524.5468891602736221, -3349.7012648829327190 1663.8340056869151340, -3350.1912493926529351 1663.7938778131951949, -3510.7782493926529241 3624.6538778131953222, -3510.2882648829327081 3624.6940056869152613, -3511.3162188351402619 3631.5163871940371791, -3511.3093623564318477 3779.2751088689078642, -3489.2809334334315281 3925.3825631523477568, -3445.7229817488723711 4066.5751434214562323, -3381.6084625862131361 4199.6990267427599974, -3298.3695038980586105 4321.7806209104110167, -3197.8654168207931434 4430.0929856651728187, -3082.3411641855241214 4522.2167444414280908, -2954.3772147154591039 4596.0941260546514968, -2816.8319030180368827 4650.0749291985657692, -2672.7775828783942416 4682.9533830416003184, -2592.0441774584969608 4689.0033359847420797, -2592.2292272141212379 4691.7359415891232857, 464.5127727858784965 4898.7359415891232857, 464.6978225415029442 4896.0033359847420797, 531.3099999999999454 4900.9950805664066138, 678.8370360718679422 4889.9260169705503358, 822.8852510671204072 4857.0208253636828886, 832.4966505855577452 4853.2466926456381771, 832.7155347673275401 4853.9304792686480141, 3440.9455347673278993 4019.0204792686481596, 3440.7266505855582182 4018.3366926456378678, 3568.6505408654807070 3968.1044929749309631, 3696.6007755412720144 3894.2033608833789913, 3812.1079268348321420 3802.0581609104569907, 3912.5919080161379497 3693.7271431733465761, 3995.8082053600896870 3571.6301008898981308, 4059.8980139174327633 3438.4943193843760127, 4103.4297576971002854 3297.2936566327280161, 4111.9568486815251163 3240.6649172772094971, 4114.5449810944692217 3241.0993479430067055, 4438.8449810944684941 1309.0733479430066382, 4436.2568486815243887 1308.6389172772094298, 4449.7310668223972243 1219.1561161070862909, 4449.7104973863315536 1071.3973957048663124, 4427.6685088490185080 925.2919864301782127, 4384.0974537747060822 784.1034492265001745, 4319.9705801376658201 650.9855167172314623, 4236.7202918527709699 528.9116481847523801, 4136.2061531259496405 420.6086113205509491, 4020.6733513123099328 328.4955743328730478, 3892.7025460983149969 254.6300689133272499, 3755.1522252283625676 200.6620310892940324, 3611.0948543776285078 167.7969465530077287, 3463.7482473934069276 156.7689236912091246, 3316.4036898899316839 167.8242957839195242, 3172.3524217021254117 200.7161186505198884, 3034.8121203619148218 254.7096866493769767, 2920.2486381949101997 320.8647580300017808, 2829.5979618286305595 659.3760732813996128, 2485.1041348942267177 1003.9814942180254320, 2264.2788423241918281 2319.5541328332446938, 409.7273757065412383 2913.2071331414008455, -1458.2438853899545848 2786.7096887882385090, -1390.0104079583070416 1953.5395283355223910, -1308.4375544520867152 1723.5068962236503012, -1310.2333181418257482 1722.8700927968927772, -1276.3402423028999237 1612.9336566327281162, -1254.3389331776024846 1466.8221161070862308, -1254.3595026136681554 1319.0633957048662523, -1256.0639743336037100 1307.7652980846462469, -1255.2787938929561733 1307.6972329071288641, -1257.2316394637061876 1285.1697643588329356, -1227.2802423028999783 1188.0186566327281525, -1205.2789331776025392 1041.9071161070862672, -1205.2904919563829935 958.8756534762312640, -1684.0647021355841844 1304.9506960943622289, -1685.0325693031700212 1303.6117095115282609, -1706.1692244587284222 1320.4733608833789731, -1724.5137550381382425 1331.0687426030108327, -1763.0830830785189391 1369.6505646428263390, -1815.7587157038797159 1383.7697470828661608, -1834.1194591345197296 1394.3744929749309449, -1971.6547489328795564 1448.3808253636827885, -2115.7029639281322488 1481.2860169705504632, -2204.3990753125572155 1487.9409523895812981, -2263.2300000000000182 1503.7100000000000364, -2322.0627096881689795 1487.9463092123467050, -2410.5755828783944708 1481.3133830416004457, -2554.6299030180371119 1448.4349291985654418, -2692.1752147154593331 1394.4541260546511694, -2710.5214060758321466 1383.8623258961499687, -2763.2166432025555878 1369.7431151977043555, -2801.7930339334729979 1331.1685093202834196, -2820.1391641855243506 1320.5767444414277634, -2935.6634168207938274 1228.4529856651729460, -3036.1675038980588397 1120.1406209104106892, -3086.1705453954227778 1046.8041554447745511, -3129.2399803399048324 1003.7367132380807107, -3145.0063950996932363 944.9047260716176879, -3183.5209817488726003 864.9351434214565870, -3227.0789334334317573 723.7425631523476568, -3249.1073623564325317 577.6351088689078779, -3249.1083453730552719 556.4508704679574294, -3263.2299989295852356 503.7562690975839246, -3249.1132358283407484 451.0604139114426516, -3249.1142188351404911 429.8763871940373633, -3227.0993497161844061 283.7668891602737631, -3183.5545017965441730 142.5702670418300499, -3145.0472131318642823 62.5968530737785258, -3145.0472131318642823 62.5968530737783055, -3138.9918179090095691 39.9929298181513317)) - - - true - - - true - - - - 1.5e-08 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug350.xml geos-3.8.0/tests/xmltester/tests/ticket/bug350.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug350.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug350.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - - http://trac.osgeo.org/geos/ticket/350 - - - - -http://trac.osgeo.org/geos/ticket/350 -Original data, fails at noding after snapping - - -01060000000100000001030000000100000007000000000000005C3613C1000000000028A54000000000208D14C1000000000028A5C000000000A83F15C100000000C0A6D040981124BD63B414C1B82DC4EB7C969940CA5EE746E76814C120462E0E5B4A8A40323BFF843F4B14C1C77B5B2D590C9AC0000000005C3613C1000000000028A540 - - -01060000000100000001030000000100000005000000EF2CF4FC0ED315C1F4792E801F82B6C0477F50A83BA313C12242DCE0BE81B2C0203301B73FCE13C14FB2744AB1EBD24029062D840ECE15C161DDB50E8D6BD140EF2CF4FC0ED315C1F4792E801F82B6C0 - - - - -POLYGON ((-314775 2708, -322378.6881546058 830.7344192302963, -321742.91436957236 -4737.74561859717, -357571.7470252057 -5762.123049645208, -357251.62907800317 17838.204022852125, -324495.928715514 19374.77016942418, -322378.6881546058 830.7344192302967, -314775 2708)) - - - - - -POLYGON ((-314775 2708, -322378.6881546058 830.7344192302963, -322378.6881546058 830.7344192302967, -314775 2708)) - - - - - - - -http://trac.osgeo.org/geos/ticket/350 -Pre-snapped version of the data. - - -0103000000010000000700000000000000E0B2E9C0000000000028A540000000008034F2C0000000000028A5C000000000A0FEF4C000000000C0A6D040604690F48ED1F2C0B82DC4EB7C969940287B9D1B9DA3F1C020462E0E5B4A8A40C8ECFC13FE2CF1C0C77B5B2D590C9AC000000000E0B2E9C0000000000028A540 - - -01030000000100000005000000BCB3D0F33B4CF7C0F4792E801F82B6C038FA8342DD19EDC02242DCE0BE81B2C0009909B8FD71EEC04FB2744AB1EBD240A418B4103A38F7C061DDB50E8D6BD140BCB3D0F33B4CF7C0F4792E801F82B6C0 - - - - -POLYGON ((-52631 2708, -60234.68815460579 830.7344192302963, -59598.91436957236 -4737.74561859717, -95427.7470252057 -5762.123049645208, -95107.62907800317 17838.204022852125, -62351.92871551402 19374.77016942418, -60234.68815460579 830.7344192302967, -52631 2708)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug356.xml geos-3.8.0/tests/xmltester/tests/ticket/bug356.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug356.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug356.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/356 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - -http://trac.osgeo.org/geos/ticket/356 -multilinestring buffer artifacts - - -MULTILINESTRING((1676339.95971128 4847443.67952346, 1676340.19 4847443.54, 1676338.44 4847440.65, 1676335.37 4847442.52, 1676337.12 4847445.4, 1676339.95971128 4847443.67952346)) - - - -POLYGON ((1676334.370908338 4847442.47738721, 1676334.381771572 4847442.672985536, 1676334.430559768 4847442.86271278, 1676334.515400594 4847443.039287834, 1676336.265400594 4847445.919287834, 1676336.383019845 4847446.075914382, 1676336.528914198 4847446.206608688, 1676336.697486246 4847446.306356514, 1676336.882268526 4847446.371330916, 1676337.07617165 4847446.399039078, 1676337.2717563 4847446.388417942, 1676337.461518643 4847446.339875002, 1676337.638178226 4847446.255272662, 1676340.477889498 4847444.534796128, 1676340.477889507 4847444.534796122, 1676340.708178227 4847444.395272662, 1676340.865054944 4847444.277767458, 1676340.995997551 4847444.13191887, 1676341.095975523 4847443.963330074, 1676341.16114793 4847443.778477878, 1676341.189010992 4847443.584463894, 1676341.178494273 4847443.388741704, 1676341.130001801 4847443.19883052, 1676341.04539655 4847443.022026312, 1676339.29539655 4847440.132026312, 1676339.177687757 4847439.974857962, 1676339.031535752 4847439.843721232, 1676338.862575756 4847439.743672394, 1676338.6773224 4847439.678569058, 1676338.482918545 4847439.650921426, 1676338.286859869 4847439.661795518, 1676338.096705855 4847439.710772058, 1676337.91978832 4847439.795962644, 1676334.84978832 4847441.665962642, 1676334.693269131 4847441.783769514, 1676334.56272065 4847441.92983049, 1676334.463152898 4847442.098540236, 1676334.398386959 4847442.283424222, 1676334.370908338 4847442.47738721), -(1676338.816753609 4847443.202781668, 1676337.455985112 4847444.027221212, 1676336.743325995 4847442.854387922, 1676338.10393518 4847442.025612946, 1676338.816753609 4847443.202781668)) - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug358.xml geos-3.8.0/tests/xmltester/tests/ticket/bug358.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug358.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug358.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/358 - - - - - -Invalid result from union -http://trac.osgeo.org/geos/ticket/358 - - -010300000001000000D60500000AD7A3306B4D39418FC2F598DE4B52410AD7A3B0794D39418FC2F5F8DC4B52410AD7A3B08E4D39418FC2F5B8DB4B52410AD7A3B0A34D39418FC2F5F8D94B52410AD7A330B24D39418FC2F558DA4B52410AD7A3B0C34D39418FC2F518DB4B52410AD7A3B0D24D39418FC2F578DA4B52410AD7A3B0E54D39418FC2F558D84B52410AD7A3B0F34D39418FC2F5F8D64B52410AD7A330044E39418FC2F5F8D34B52410AD7A330134E39418FC2F5F8D14B52410AD7A330334E39418FC2F598D04B52410AD7A3304D4E39418FC2F578CD4B52410AD7A3B05D4E39418FC2F558CA4B52410AD7A3306E4E39418FC2F518C84B52410AD7A330844E39418FC2F578C54B52410AD7A3309C4E39418FC2F5B8C24B52410AD7A330C74E39418FC2F5D8BB4B52410AD7A3B0DE4E39418FC2F578B74B52410AD7A3B0F04E39418FC2F598B34B52410AD7A330FF4E39418FC2F518B14B52410AD7A3B0154F39418FC2F558AD4B52410AD7A3B01F4F39418FC2F5F8AB4B52410AD7A3B0374F39418FC2F5B8A84B52410AD7A3B04F4F39418FC2F5B8A64B52410AD7A3B0774F39418FC2F578A44B52410AD7A3B0AA4F39418FC2F5F8A34B52410AD7A3B0C54F39418FC2F558A24B52410AD7A330DD4F39418FC2F5389C4B52410AD7A330055039418FC2F5188F4B52410AD7A3B00D5039418FC2F5F88B4B52410AD7A3B02B5039418FC2F578844B52410AD7A3B03A5039418FC2F558824B5241FDACC76E5E503941F86F7DA27F4B5241B43441705E5039411B0B79A27F4B524140A4DF6E5E503941DE718AA27F4B524140A4DF6E48503941DE718AE2814B5241D088D26E5E503941948785A27F4B52410CD7A3B03A50394190C2F558824B52410CD7A3B02B50394190C2F578844B52410CD7A3B00D50394190C2F5F88B4B52410CD7A3300550394190C2F5188F4B52410CD7A330DD4F394190C2F5389C4B52410CD7A3B0C54F394190C2F558A24B52410CD7A3B0AA4F394190C2F5F8A34B52410CD7A3B0774F394190C2F578A44B52410CD7A3B04F4F394190C2F5B8A64B52410CD7A3B0374F394190C2F5B8A84B52410CD7A3B01F4F394190C2F5F8AB4B52410CD7A3B0154F394190C2F558AD4B52410CD7A330FF4E394190C2F518B14B52410CD7A3B0F04E394190C2F598B34B52410CD7A3B0DE4E394190C2F578B74B52410CD7A330C74E394190C2F5D8BB4B52410CD7A3309C4E394190C2F5B8C24B52410CD7A330844E394190C2F578C54B52410CD7A3306E4E394190C2F518C84B52410CD7A3B05D4E394190C2F558CA4B52410CD7A3304D4E394190C2F578CD4B52410CD7A330334E394190C2F598D04B52410CD7A330134E394190C2F5F8D14B52410CD7A330044E394190C2F5F8D34B52410CD7A3B0F34D394190C2F5F8D64B52410CD7A3B0E54D394190C2F558D84B52410CD7A3B0D24D394190C2F578DA4B52410CD7A3B0C34D394190C2F518DB4B52410CD7A330B24D394190C2F558DA4B52410CD7A3B0A34D394190C2F5F8D94B5241E4F21FE2354E39419C559F87AD4C5241ACD85F063B4E39418EE4F25BAA4C52419CA22399334E394164AA60F0AE4C5241E461A126234E3941C039238AB64C5241ACFA5C2D234E3941DEE00B8BB64C5241D456EC0F234E394128ED0D96B64C524190C2F5E8224E3941703D0AC7B64C5241D456EC0F234E3941B88D06F8B64C5241B0BFEC7E234E3941287E8C21B74C524170810425244E394160984C3DB74C524190C2F5E8244E3941703D0A47B74C5241B003E7AC254E394160984C3DB74C52416CC5FE52264E3941287E8C21B74C5241708A8EA4264E3941029A0803B74C524138234AAB264E39412041F103B74C524138234A2B374E39412041F163AF4C52416C09F9904A4E3941F0F44AF1994D524144696FF0774E394192CB7F509A4D524198FF906E774E3941545227689C4D5241C442ADF96F4E39416C09F998A64D5241B003E70C704E3941D022DB99A64D524190C2F5E86F4E3941703D0AC7A64D5241D478E936704E3941923A0129A74D5241D4BCE314714E3941E0BE0E7CA74D524108CE1961724E3941E04F8DB3A74D524190C2F5E8734E3941703D0AC7A74D524118B7D170754E3941E04F8DB3A74D52414CC807BD764E3941E0BE0E7CA74D5241480C029B774E3941923A0129A74D5241708104C5774E3941105839F4A64D52415C423ED8774E394176711BF5A64D52415C423E587F4E394176711BB59C4D5241708104457F4E3941105839B49C4D5241143FC65C7F4E394140355E969C4D5241E45817677F4E3941022B87969C4D5241E4581767804E3941022B8776984D5241143FC65C804E394140355E76984D524128ED0D5E804E394110C7BA74984D5241B4A67967804E3941AC8BDB74984D524144D8F054814E3941DE718A2A944D524194A982D18B4E39412C431C0F914D5241B003E76C934E39413CDF4F25924D5241B4EA7375934E3941E00B9321924D5241884160C5934E3941441CEB2E924D52418C8EE4C2934E3941F0164830924D52418C8EE4C2A84E3941F0164890944D5241884160C5A84E3941441CEB8E944D524108CE19E1A84E3941E04F8D93944D5241F0D24D02A94E3941EA043495944D52410CE02D00A94E394176BE9F96944D524104E78C78D34E3941423EE895984D52416C09F970E64E3941E88C28759A4D5241580E2D72E64E39411E3867749A4D5241085F987CE74E39410CB5A6819A4D524168D5E77AE74E394196218E859A4D524168D5E7FAF94E394196218E059B4D5241085F98FCF94E39410CB5A6019B4D524190C2F568FA4E3941703D0A079B4D5241E8D9ACBAFB4E394112143FF69A4D524138D6C5BDFB4E394120B072F89A4D524138D6C5BD0C4F394120B07278994D5241E8D9ACBA0C4F394112143F76994D524118B7D1F00C4F3941E04F8D73994D524164EE5A520D4F394182954363994D52415CFE435A0D4F3941CE88D266994D52415CFE435A1F4F3941CE88D2E6964D524164EE5A521F4F3941829543E3964D52414CC8073D204F3941E0BE0EBC964D5241B88D06102C4F3941F2B050C7934D5241F8C2647A464F3941705F079E914D5241C4F528CC994F394154C1A8E08C4D52414082E2C7994F3941FC87F4DB8C4D524118B7D1709A4F3941E04F8DD38C4D5241D4DEE09B9A4F39411AC05BCC8C4D5241A0CDAA9F9A4F394164EE5ACE8C4D5241A0CDAA9FD44F394164EE5AEE854D5241D4DEE09BD44F39411AC05BEC854D52412497FF30D54F3941FC1873D3854D5241C4F5283CD54F394188855AD7854D5241D0F753B3E94F3941CCEEC92F824D5241D4096812055039410000001C804D52419C081B0E05503941FEF67518804D524118B7D17005503941E04F8D13804D5241283A929B05503941FA7E6A0C804D5241840D4F9F055039416666660E804D524190C2F5E82150394162A1D6B47C4D524190E4F2AF4F5039412E6EA3D9784D5241D0D556AC4F503941D8F0F4D6784D524118B7D1F04F503941E04F8DD3784D5241907571BB50503941EA73B5B1784D5241042B87C6505039416C787AB5784D5241042B8746675039416C787A95744D52419075713B67503941EA73B591744D52414CC807BD67503941E0BE0E7C744D5241E43FA4CF6750394108CE1975744D5241905CFED36750394152962176744D5241905CFE536F50394152962176724D5241E43FA44F6F50394108CE1975724D5241480C021B70503941923A0129724D5241240681357050394134A2B407724D5241BCB88D467050394162A1D608724D5241DCD781C37C503941C6FEB24B664D5241C46D34C0845039414C158C6E5F4D5241B47BF2B084503941D8A3706D5F4D5241448B6CC7845039410EBE30515F4D524168DE71DA84503941482EFF515F4D524168DE71DA88503941482EFF71594D5241448B6CC7885039410EBE3071594D524190C2F5E888503941703D0A47594D524178BE9FDA8850394100DE0235594D5241F44A59E688503941CCCCCC34594D5241F44A596687503941CCCCCCF4534D524178BE9F5A8750394100DE02F5534D5241480C021B875039414E4013A5534D5241C030999A865039414CC80775534D5241ECE236AA86503941A4703D72534D5241ECE2362A7F503941A4703DD2504D5241C030991A7F5039414CC807D5504D5241CC7F48EF7E50394118B7D1C4504D52412CB29DBF845039410EBE30854C4D524194D409B88450394128A089844C4D5241ECC039C384503941462575764C4D5241A8A44ED084503941840D4F774C4D524150FC18C38E503941DC4603E4424D52417CAEB6029250394150FC18EB404D5241587DAE36A0503941DE0209A23C4D5241708104B5AA50394170CE8882394D524158A835ADAA503941D4BCE380394D52414CA60AE6AA5039410AF9A06B394D5241F0D24DF2AA5039417268916D394D5241648863BDB65039414A9D80C2344D5241B8F3FD74C5503941FAA06753314D52415817B771C5503941022B8752314D5241DC460388C5503941849ECD4E314D524194438B9CC55039410A8A1F47314D5241A4923AA1C5503941EA263148314D524130DD2456CF503941D044D89C2E4D52416C09F9D0E1503941B6F3FDD02B4D524190C2F5A8F950394150AF9415294D5241ACCFD5A6F950394168226C14294D5241DC460388FA503941849ECDEE284D5241DCD781E3FA5039414ED191CC284D5241F41FD2EFFA503941DE718ACE284D5241F41FD2EF02513941DE718AAE254D5241DCD781E3025139414ED191AC254D5241684469FF02513941529621A2254D524188B0E109035139412A3A92A3254D52416029CBF00D513941907EFBAE204D524110A5BD5119513941D8A370D91C4D5241E461A14619513941401361D71C4D5241E4A59B641951394130992ACC1C4D52414060E57019513941764F1ECE1C4D5241DCD7819323513941F241CFD2184D5241840D4FAF2E513941B4C87616174D5241806ABCD43D513941CA32C4DD154D5241CC32C4D13D513941D85F76DB154D524140A4DF0E3E51394168226CD8154D524180FB3A303E513941F6B9DAD2154D5241C01726333E51394142F163D4154D5241C01726335351394142F16354134D524180FB3A3053513941F6B9DA52134D5241DC46030854513941849ECD2E134D5241F4FDD4385451394196438B1C134D52411C7C614254513941FC3A701E134D52411C7C61C261513941FC3A70DE0E4D5241CC3B4E71545139410C71AC0F134D524124B9FCF76A51394152B81E590E4D5241CCA145169151394116FBCB52094D524168226CC8E75139418A416041044D5241BC0512C4E7513941A223B93C044D5241345530CAE751394168226C3C044D5241081B9ECEE751394100DE0241044D5241C09F1A2F415239416CE7FBE1FE4C524100DE025976523941FEB27B8A014D5241B4847C30AB52394162A1D69C054D524194B20C91BB5239414872F907084D5241B88D0600C252394136AB3E97094D52418C1F63BED5523941B29DEFEB0F4D5241549FAB1DE05239410E4FAF7C134D52416891ED2CE0523941B0E1E979134D5241A401BC85E0523941E6D0229B134D5241504013F1E052394172F90FAD134D5241042B87E6E0523941FEF675B0134D5241A49BC440F25239410A46250D174D5241F4B0504BF25239418048BF09174D52417C832F2CF3523941840D4F2F174D5241809543CBF3523941ECC03937174D5241645DDCC6F35239413E0AD73B174D52411C5A641B0F533941CC5D4BDC184D52418004C51F0F5339417A14AED7184D5241BC7493081053394112F241E3184D524100B37B82105339417C6132DD184D5241B8FC8784105339418A4160E1184D52416C2BF6A720533941D6E76A63184D5241A4B437C81F533941ECE2365E184D5241C84B37C91F533941E04F8D5B184D5241444772E91E53394168226C50184D5241A8A44EF01D533941849ECD26184D52411895D4491D533941DCB584E8174D5241F4285C0F1D533941703D0A9F174D52411895D4491D53394104C58F55174D5241A8A44EF01D5339415EDC4617174D5241444772E91E5339417A58A8ED164D524140A4DFFE1F53394188F4DBDF164D5241F4285C0F20533941703D0ADF164D52412406815520533941022B87E2164D5241489D805620533941F697DDDF164D5241489D80D635533941F697DD5F174D5241240681D535533941022B8762174D52411826533536533941A8C64B67174D52414C59863836533941A6BDC163174D5241B8F3FDE454533941703D0A1F194D5241F4285C8F6F533941703D0A1F194D52416C567D1E705339410C242826194D5241CC3B4E2170533941DE718A22194D5241CC3B4E218F533941DE718AA21A4D52416C567D1E8F5339410C2428A61A4D5241A80A46B58F5339417A58A8AD1A4D5241E4C7980B905339412AA913BC1A4D5241AC605412905339417C6132B91A4D5241CCEEC9B3B3533941684469EB1F4D5241B88D0610C5533941C4D32B01214D5241B8AF0357D453394196900F5A214D5241CCA145A6D953394130DD24BA204D52414C6210A8D953394150FC18BB204D5241D0D556BCD953394134A2B4B7204D5241F0164880DA53394122FDF6AD204D52410044FA3DDB5339418AFD65B7204D5241FC3A703EDB5339419AE61DB7204D5241587DAE46DF53394186A7571E214D5241BC96908FE3533941CAC34215204D524114AE4791E3533941EA73B515204D524130FF217DE453394136CD3BEE1F4D5241986E122303543941FE43FAB91C4D52418841602503543941569FABB91C4D5241F4B0502B035439418A4160B91C4D52417C1D384703543941C6DCB5B41C4D5241A8C64B870354394170F085B11C4D5241C8E53F8403543941E6D022AF1C4D524174E09CC114543941BC0512501B4D5241F4B9DA4A1D54394144FAED4B194D52419CC420901D5439411AC05B40194D524110C7BA881D54394128ED0D3E194D524104C58FB131543941865AD330154D5241388941604154394144696F90114D5241287E8C294F5439414E6210A00D4D5241ACADD82F4F543941D8A370A10D4D52416C9A774C4F543941C898BB960D4D5241B09465884F543941A223B98C0D4D52414C3789814F543941304CA68A0D4D524104098AEF5C5439416C567DC20A4D524110C7BAE86B5439410EE02DA8034D524130772D016F54394194658803FF4C5241F4285C0F6F5439412E211F04FF4C524130772D316F543941E4839ED9FE4C5241A8F1D2AD6F543941907EFBAAFE4C5241A80A46A56F54394134EF38A9FE4C5241043411C67854394102BC05E2FB4C5241081B9ECE785439415E4BC8E3FB4C5241D83D79F8785439419CC420D4FB4C524140E8D9CC79543941E61DA7B0FB4C52415427A0C9795439410022FDAEFB4C52412831084C855439411C5A644BFA4C524114F2414F8554394104560E4DFA4C52414CEA047485543941D478E946FA4C5241FCCBEE9986543941CC5D4B38FA4C52414C158CAA8654394152B81E39FA4C524178BE9FAA86543941D0D55638FA4C5241341136EC9854394112A5BD51FA4C5241086822EC9854394194878552FA4C5241FC65F78499543941764F1E5AFA4C5241A4B43788995439419A779C56FA4C524110583954B3543941BE0E9CD3FB4C52416C09F950B35439410A8A1FD7FB4C524120166ACDB35439413CDF4FDDFB4C5241744694C6B45439412063EE06FC4C52412063EE5AB5543941FC3A703EFC4C5241E4361A60B5543941F4DBD73DFC4C524180FB3AB0BF543941FC1873CB014D524194A98241C7543941325530C6054D52411CA7E8F8C9543941643BDF33074D5241F0F44A69D4543941DCB584B0044D52418CFD6567D4543941B88D06B0044D5241789CA273D4543941FE43FAAD044D5241C039231AD5543941585BB16F044D5241982A1845D5543941C442AD39044D524170128350D554394190A0F839044D524170CE8872DA5439418E976ED2F74C5241287E8C49EC543941CAE53FD0F04C524110363C3DEC543941842F4CCEF04C52412085EB71EC543941E2E995BAF04C5241D066D577EC543941CC7F48BBF04C5241A8E8488EFF54394112363CA5E64C5241B0946588FF54394128A089A4E64C5241244A7B93FF543941D24D62A0E64C5241BCB88D96FF543941A223B9A0E64C5241E4A59BD40755394140A4DFF6E14C52414C3789D10755394170CE88F6E14C52410C71ACDB07553941A4DFBEF2E14C5241784F1E1608553941A60A46A9E14C5241784F1E16085539419AE61DFBD74C52413CBD52A624553941DC680017B74C5241DC460398245539415A863816B74C524118D9CEB7245539415CFE43EEB64C5241E4839EAD24553941464772E1B64C5241043411B62455394160984CE1B64C524198FF90CE205539417CF2B074A84C5241784F1EC62055394162A1D674A84C52414CEA04A4205539416CE7FB49A84C5241D0915CAE205539410EBE3049A84C5241AC6054921455394120F46C729E4C524198218E9507553941441CEB828F4C524138AB3E8707553941C6FEB2838F4C5241C0EC9E6C0755394136CD3B628F4C5241D46F5F57075539413845475A8F4C5241C8C3425D0755394150AF94598F4C5241840D4F5FF0543941DC460334834C5241D42B6559F05439413480B734834C52412C651942F0543941925CFE2B834C5241EC9E3C4CF0543941081B9E2A834C5241B09465F8CE543941E4141DCD734C524154E3A5EBC55439412CD49A4E6E4C5241A05E29EBC55439415A86384E6E4C52414C378971C5543941C6DCB5206E4C52414C158C7AC55439411CEBE21E6E4C52414C3789F1B6543941EEEBC0A1694C524158863846AE543941E8FBA931654C5241085F98DCAD543941C03923BA5F4C5241F4DBD711B2543941B4C876265C4C52412CD49A06B25439412E6EA3255C4C524194B20C31B25439415EBA49F05B4C5241287E8C09B254394176BE9FBE5B4C5241DC8AFD15B254394138D6C5BD5B4C5241F4FDD4C8B0543941F6065F8C5A4C524188635DBCB0543941C64B378D5A4C52418CB96BA9B05439411E166A755A4C524144AD693EB05439411C9E5E4D5A4C5241C84B3749B05439413E9B554B5A4C52417858A8759A543941CA32C40D534C52414060E5709E543941840D4F174B4C5241D000DEA298543941B6A6799B4A4C5241941804A68E543941666666C6494C52410C022BA7805439411895D459494C524194B20C81775439411895D459494C5241941804166F54394190A0F80D4B4C5241585BB1FF695439413C4ED1894C4C5241D8F0F4FA69543941CCCCCC884C4C5241B8F3FDE469543941DE2406914C4C5241C017266363543941DA1B7C314E4C5241905CFED362543941D42B65494E4C5241941804D6625439416ADE714A4E4C5241808CB9DB585439411A51DA7B4F4C5241345EBAD95854394116FBCB7A4F4C5241F0C9C3C2585439415405A37E4F4C5241703D0AB7585439417E1D387F4F4C5241D066D5B758543941EC2FBB7F4F4C5241686FF00536543941C2F528DC524C5241DCD7811327543941849ECD5A544C52418CDB68A01954394148BF7DC5564C52412C1895E410543941780B2494594C5241B0E1E9650E54394196438B585B4C524194A982610E543941545227585B4C52410868225C0E543941B2BFEC5E5B4C5241647FD94D0E54394114D044645B4C52413C4ED1510E5439417E6ABC645B4C5241D019516A0A543941388941745D4C5241F44A59660A5439415E4BC8735D4C5241A8A44E600A543941BA490C765D4C524198218E650A543941A067B3765D4C524174711BED06543941B2BFEC325F4C524188F4DBE706543941CAA145325F4C52414872F9CF065439413433333B5F4C524194D409D806543941D6C56D3C5F4C5241D4096812025439410EE02D30614C524140355E0A025439416A4DF32E614C524120B072D801543941C0CAA141614C5241341136DC01543941226C7842614C52411461C363FE5339413E79583C624C524100000060FE533941DCD7813B624C5241782D214FFE5339413C4ED141624C524170A301DCFD53394196B20C55624C5241E4361AE0FD53394140A4DF56624C5241A0D634EFF65339415CB1BF50634C52412C431CEBF6533941B2BFEC4E634C5241C07D1DB8F65339418E757157634C52418816D90EF653394188F4DB5F634C5241C09F1A0FF6533941923A0161634C524194B20CD1ED533941143FC67C634C52416029CBD0ED5339419C559F7B634C5241784F1EB6ED533941B27BF27C634C5241109C33F2EC533941A2D63473634C5241CCEEC9D3EC533941E4F21F6E634C524178E926D1EC53394120D26F6F634C5241C0172633DD533941EAB7AF7B614C52415C8FC235DD533941AED85F7A614C5241E07A14AEDC53394134A2B463614C5241B4A679A7DC53394112363C61614C5241F853E3A5DC53394176E09C61614C5241B0506B0AC1533941D656EC275A4C5241C486A787AF533941423EE845574C524198DD93379A533941C0EC9E80544C52414CEA047482533941EA26318C534C5241B072682162533941948785FA534C524178E92621625339413E575BF9534C5241784F1E0662533941A067B3FA534C5241A4BDC1B761533941849ECDF6534C5241CCA145B6615339412EFF21F9534C524140E8D91C41533941A245B6AF524C524108AC1C8A37533941B003E734534C52414C158C6A1E5339417E6ABCD4544C5241CC5D4B681E5339414C158CD2544C524188A757EA1D533941AA13D0D8544C5241A0D634BF1D5339417A36ABD6544C5241081B9EBE1D5339413E7958D8544C5241A0CDAA8F0E53394196B20C85544C5241388941900E533941D26F5F83544C524150FC18630E5339412EFF2181544C5241F8E461610E53394126C28683544C524160C3D33B02533941C6DCB5F8534C5241B8DA8A3D0253394160764FF6534C524164F7E4D10153394190C2F5F0534C5241984C159C01533941DACEF7E7534C524118D9CE97015339418638D6E9534C524170810485FB5239417E8CB90B534C5241F0F44A89FB523941D022DB09534C524100DE0219FB52394150FC18F7524C5241E00209AAFA523941E00B93CD524C5241345EBAA9FA523941AA8251CD524C524194CB7FD8F7523941DCD78117514C52412C90A058F752394140A4DF52514C5241D019517AE9523941705F0742584C5241E09C1175E95239418A416041584C52416C567D6EE9523941D066D543584C52411C2FDD74E9523941A0ABAD44584C524140575BE1E1523941728A8ED85B4C524140575BE1E152394104780BE45D4C524174B515DBE15239412041F1EB5D4C52411CC05BE0E1523941B88D06EC5D4C524180B74002E1523941DA3D7964614C5241201FF4FCE052394142F16364614C524160BA49DCE0523941FED4788D614C52411C0DE0BDE0523941D044D898614C5241806ABCC4E0523941A679C799614C5241DC68007FDE523941FA7E6AA4624C524194CB7FA8DF52394132C4B162644C5241E4F21F32E4523941D49AE6C9674C5241D83D7928EB5239419A779C32694C5241D0915C7EF252394152DA1BDC694C524140A4DFCEF75239415EBA49346A4C52415C4BC857FA523941F8E4614D684C5241905CFE13FC523941EA95B2F0644C524178E92661FD523941986E1203624C5241D4BCE304035339417C613209614C5241DC2406811353394132E6AEF95E4C5241B4A67997265339417E6ABC685F4C52412C1895442F53394116D9CEFF5D4C52418C28EDAD39533941827346C85D4C5241D088D29E405339417AC729EA5C4C5241BC270F5B42533941645DDC6E5E4C5241884160F544533941A223B940614C524198900F2A4A5339416EA3016C634C5241B459F5E958533941029A088B674C524164EE5AC2635339411C9E5E256A4C524134333313725339413E575BFD6B4C52413C9B558F82533941460378DB6C4C524138B4C8D68D5339412041F1A36C4C52419CC42040985339413C4ED19D6D4C5241D812F2C19E5339413433337F724C5241587DAE969C53394198BB9688754C5241F46C562D92533941F697DDB3774C524150FC18D3805339419C559FA7794C5241085F981C75533941E8D9AC167A4C52410C4625D569533941AEB662C3794C5241B459F5E958533941D881735A784C5241DCD781D3455339418E06F04A764C52415817B7F13753394160984C35754C5241E8B7AF5328533941D2DEE0DB754C524110363C3D1553394168446913764C5241ACFA5CAD00533941787AA574754C524130992AA8005339414ED19174754C52414803789B00533941BAFC8784754C524150B81EA5005339412497FF84754C524108CE1981FE5239411E166A4D784C52410CBE30A9FD523941F6B9DA927D4C5241842F4C260B533941E8482E5F854C52413C92CB5F1D533941E8482EC3884C5241D019515A1D533941DE2406C5884C524124287E6C1D533941E0BE0EC8884C524114AE47711D533941E2E995C6884C524108CE196149533941A4DFBEB6914C52410C24281E5F533941B29DEF4F934C5241FC87F41B5F533941CEAACF51934C524174E09C515F53394148E17A54934C5241EC2FBBF75F5339417EFB3A70934C52415CFE431A605339410A46257D934C52414060E520605339411A51DA7B934C524188A7577A6F53394150FC1863984C52410044FA8D855339413480B7409B4C5241EC0434E19C5339415C2041859D4C524144696FE09C53394112A5BD859D4C524170AC8BEB9C533941842F4C869D4C5241E86A2B369D5339418026C2929D4C5241D4E76A3B9D533941C6DCB5909D4C52413C4ED1B1B75339416E3480CBA14C524150D191ACB753394196218ECDA14C52414C621008B853394162A1D6DCA14C5241482EFF11B853394104E78CE0A14C5241F48E5314B85339416EA301E0A14C524128C286F7C353394130BB270FA54C52418C6CE7BBCC5339411804561AA64C5241FCCBEEB9CC53394164CC5D1BA64C52416007CE49CD5339418AFD6533A64C5241BC529681CD53394114D04448A64C5241A879C789CD53394166D5E746A64C5241A4923AD1D85339410E2DB281AA4C5241B86B09C9D85339412ACB1083AA4C524138894100D953394110E9B797AA4C52417C1D3827D9533941EA95B2C8AA4C524138894100D953394132E6AEF9AA4C5241900F7AF6D8533941621058FDAA4C5241641058F9D8533941E8FBA9FDAA4C52416C348077D25339411C0DE091AE4C52419C33A274D253394196218E91AE4C52417C36AB6ED25339415E4BC893AE4C5241B437F872D25339413A014D94AE4C5241C84B3719C8533941D24D62F8B34C524150AF9495C253394166886351B84C5241A423B9BCC15339415C8FC275BE4C52419C559F6BC6533941A01A2F81C24C52412041F163C653394112A5BD81C24C5241F41FD27FC6533941143FC6A4C24C5241F0A7C67BC6533941D022DBA9C24C52416844697FC6533941F853E3A9C24C52411CC05B10C653394124B9FC5FC54C5241A423B90CC6533941FC87F45FC54C52415CB1BFFCC553394126310874C54C5241ACD85F06C65339414A598674C54C524140A4DF1EC2533941C039233ACA4C5241EC7C3F15C25339419C11A539CA4C524154522710C253394104780B40CA4C52416419E218C253394152499D40CA4C5241BCC11706BC533941F697DD1BD04C5241ACFA5CFDBB533941166A4D1BD04C52414C7B83EFBB53394110C7BA2CD04C5241E0BE0E9CBB5339418EE4F24BD04C52415817B7A1BB533941E4141D4DD04C5241B0BFEC8EB553394108CE1925D24C524138674489B5533941B29DEF23D24C52418048BF6DB5533941A4703D2ED24C524108F9A0C7B4533941DA8AFD49D24C524138F8C2C4B45339417C3F354AD24C5241A8C64B77A95339414850FC70D34C5241D834EFF88753394190317775DC4C5241C876BE6F805339418E06F0C2DE4C524100BC05D27B53394180D93D39E24C5241186A4D4379533941E63FA46BE54C524194B20C01785339413C4ED1E1E84C5241943A016D7D533941164850C8ED4C5241F4DBD7718B533941903177D1F14C52419031776D8B533941B0506BD2F14C5241CC5D4BC88B5339418CDB68F4F14C5241B49DEFE78B53394130992A1CF24C5241D49AE6ED8B533941721B0D1CF24C52412063EE3A8D5339411C0DE08DF64C5241F875E07C8E533941B840826EFA4C524138B4C8C69653394134A2B46FFD4C5241F41FD2BF9C533941CAC34209FF4C524148BF7DBD9C5339416007CE09FF4C524170CE88229D5339412EB29D2FFF4C5241B8627F499D53394176029A60FF4C524148E17A449D5339418E06F066FF4C52416419E2489D5339416EC5FE66FF4C52416007CED99C533941CAA14592014D524140CF66D59C533941ECE23692014D524174E09CD19C53394122DBF996014D5241D83D79D89C533941782D2197014D524180B740A29B533941BEC11706054D524128C286D7A45339414C158C06074D52415CD3BCD3A4533941789CA207074D524174E09CF1A45339412E90A00C074D524198BB9660A55339419E802636074D524198DD9387A5533941E6D02267074D5241C4D32B75A5533941CAA1457E074D524114FBCB7EA55339415AF5B97E074D5241306EA331A4533941FCA9F13A094D524124B9FC27A4533941DCF97E3A094D52418838D625A453394134EF383D094D52416844692FA4533941365EBA3D094D5241244A7B73A2533941FAEDEB4C0B4D52414894F6069F53394178E926790F4D5241E43FA44F9F5339417EFB3A74124D5241C0CAA1C5AB5339417A58A845114D52415CFE435AB8533941AED85F1A0F4D5241CC32C441BC53394192CB7F200E4D52413480B770CB533941DA1B7C29084D5241884160A5D0533941B6627F51064D5241BC96905FE9533941F0F44AE5004D524198FF902EF15339414E401329FF4C5241F4285CDF065439415AF5B966FE4C524100917E5B175439414694F64AFE4C5241D0D556AC25543941AA825135FD4C524128C286973654394122DBF972FC4C524150AF94D53E543941B22E6E13FE4C5241E4D022FB4A543941C8293A4E024D5241B415FB4B5954394106F01620054D524110E9B7EF5E543941506B9A2F074D52413CBD52E65B5439414E6210D0084D524140A4DF9E50543941721B0DA80A4D52413C4ED1914054394192CB7F200E4D524164F7E4D131543941D2915CF2104D52418451493D25543941DEE00B4F144D524144D8F00413543941F4DBD789184D52416C567DEEFF533941E61DA7EC1A4D5241208E7581E8533941621058711C4D524160545267C85339412041F13F1B4D52417CD0B32994533941228E7559174D5241E02D907090533941D066D5CB174D52416C567D6E905339418026C2CA174D52418C06F0569053394132C4B1CE174D52416CC5FE928F533941B20C71D8174D524174F90F198F533941AED85FD2174D5241F441CF168F53394152499DD4174D52415C2041F182533941CAA14512174D5241DCD781F382533941B88D0610174D5241E895B2EC82533941EAB7AF0F174D5241B0506BEA825339411895D411174D524178BE9F6A65533941E27A141E154D5241F875E06C65533941B29DEF1B154D524128ED0D3E65533941083D9B19154D5241CCCCCC3C65533941B4C8761A154D5241806ABCC426533941B437F85A0F4D5241DC8AFDC526533941764F1E5A0F4D5241D42B65B92653394148BF7D590F4D5241AC8BDBB8265339418638D6590F4D5241ACD85F66F45239417CF2B05C0A4D5241D478E966F45239413E79585C0A4D524130BB275FF45239416A2BF65B0A4D5241C05B20E1F352394166D5E7460A4D524194438BDCF35239415EBA49480A4D524120166A1DD8523941C8BAB889044D5241E00B93B9C552394150FC18E7004D5241B09465289452394144D8F044FC4C524100DE021981523941BCE314A5FA4C5241CC10C71A81523941A835CDA3FA4C5241148C4AFA80523941325530A2FA4C524148E17AC4805239417C613299FA4C5241C46D34C0805239412ACB109BFA4C5241081B9EAE6B52394104E78C98F74C524174F90F393A5239419C11A5B9F34C5241A0ABAD381C52394192CB7F30F34C5241F853E3A5F9513941BCE314B9F34C52414CA60A26EC5139414E621084F54C52415405A322EC513941D8817382F54C5241C420B002EC513941CCEEC987F54C5241244A7B03EC5139415A423E88F54C5241DC240661D3513941C876BE3BF84C5241F875E0CCC9513941A4703D96F94C52410C022B57B4513941AE47E1EAFF4C5241580E2D52B4513941AAF1D2E9FF4C5241C030993AB45139415405A3F2FF4C5241083D9BA5B351394126C2860B004D52419CE61DA7B35139413E79580C004D52413CDF4FBDA25139412041F1FF014D5241B003E7DC94513941EC9E3CA0034D524158EC2FDB94513941F2B0509F034D524128C286C794513941BE3099A2034D5241C00E9C0394513941D0D556AC034D5241A0CDAA3F93513941BE3099A2034D524124E4833E93513941D40968A2034D52418CB96BF9835139418638D6C1044D52418CB96BF9945139418638D681034D52417C1D38F794513941DACEF77F034D5241B003E72C9551394160984C7D034D52416CC5FED295513941287E8C61034D5241482EFF4196513941B88D0638034D524190C2F56896513941703D0A07034D5241482EFF419651394128ED0DD6024D52416CC5FED295513941BAFC87AC024D5241B003E72C9551394182E2C790024D524130E42DB1945139411E55A18A024D5241984C150CA1513941B615FB17014D5241F063CC0DA1513941B003E718014D524160325510A151394148E17A18014D5241D088D20EA1513941302AA917014D52417CA52C93B1513941F0A7C62FFF4C52411483C0FAC6513941A8C64BDFF84C52418004C5FFC65139411AC05BE0F84C524160545217C751394172AC8BD7F84C5241E00B9389C7513941FEF675C4F84C5241FC5C6D85C751394176BE9FC2F84C524110E9B77FD1513941A089B059F74C5241F897DD83D151394126C2865BF74C524114FBCBAED15139411AC05B54F74C5241B8D100AED15139418C6CE753F74C52412CD49A56EA513941EC2FBB9FF44C5241448B6C27F8513941482EFFC9F24C52413C2CD42AF8513941506B9ACBF24C5241E8B7AF53F851394182E2C7C4F24C5241B09465F8F851394198BB96BCF24C524108F016F8F85139415EDC46BBF24C5241E4C7981B1C523941FEF67530F24C524144FAED1B1C523941CA32C431F24C5241A05E293B1C523941A2B43730F24C5241A0D6345F1C52394126750232F24C5241E43FA45F1C52394128A08930F24C5241B8DA8ABD3A523941F6285CBBF24C524130FF21BD3A523941865AD3BCF24C524190E4F22F3B523941DE718AC2F24C524100BC05323B5239416619E2C0F24C5241B4EA73156D523941D24D62A8F64C5241401361136D5239414CA60AAAF64C524144696F406D523941F01648ACF64C524114143F766D523941A60A46B5F64C52419487857A6D523941FAA067B3F64C5241CC32C491825239415AF5B9B6F94C5241443EE87995523941C8073D53FB4C5241780B247895523941DCB58454FB4C52411CEBE28695523941EE7C3F55FB4C5241DC4603889552394192CB7F54FB4C52419075716BC7523941F44A59FEFF4C5241D019516AC7523941BE9F1AFFFF4C5241E0BE0E7CC7523941B615FBFFFF4C524198BB96F0C7523941FC187313004D524130E6AEF5C75239418638D611004D5241BCE3149DDA523941CEAACFC1034D524124B9FC97DA523941448B6CC3034D524194A982A1DA52394100DE02C5034D5241BCC117A6DA5239410AF9A0C3034D5241107A362BF6523941A0F83176094D5241F87E6A2C285339415EDC466B0E4D5241F80FE98766533941780B2428144D52414CC807ED83533941E4F21F1A164D5241B415FB5B8F53394172F90FD1164D52417CAEB6D298533941AA6054AE154D52419C779C729B533941D40968E6134D5241F853E3059B5339413480B7700F4D5241780B24089B5339415839B4700F4D5241A401BC059B533941569FAB6D0F4D52416007CE199B533941B20C71540F4D52410CE02D109B5339418EE4F2530F4D52412C90A0889E53394178E926190B4D524180B740929E5339419C11A5190B4D5241F0C9C3929E53394100DE02190B4D524154302A899E533941006F81180B4D524110583944A0533941AED85F0A094D5241148C4A5AA1533941BE0E9C97074D52413CDF4F3D98533941B20C719C054D5241C05B20419853394188855A9B054D5241A44E402398533941D2915C96054D5241C8E53FB49753394162A1D66C054D52418451498D975339411A51DA3B054D5241784F1E9697533941CA54C130054D524114F2418F9753394176029A30054D5241283A92DB985339414E840D83014D52413C9B553F99533941F48E5390FF4C524144696FC093533941B6A67917FE4C5241F0C9C3C2935339412063EE16FE4C5241F0F44A9993533941448B6C07FE4C52415C20419193533941AA13D008FE4C52412C211FE48A533941C286A7E3FA4C52417C832FEC8A5339415CFE43E2FA4C524198BB96B08A533941DACEF7CBFA4C524110A5BD918A5339417C6132A5FA4C524138234A8B8A53394186C954A5FA4C52419C081B3E8953394196900FA2F64C5241708A8E4489533941FCCBEEA1F64C5241CCEEC94389533941B27BF2A0F64C5241F063CC3D8953394104560EA1F64C524104560EFD87533941A01A2F59F24C52411851DA1B7A533941168C4A5AEE4C5241388941207A533941F46C5659EE4C524140CF66C5795339411AE25837EE4C52419CA223B979533941D656EC27EE4C5241B47BF2B079533941B6847C28EE4C524110363C0D7453394198DD930FE94C524140CF661574533941B8AF030FE94C5241A067B3FA73533941228E75EDE84C5241CCEEC90374533941705F07E2E84C5241CCCCCCFC73533941AE69DEE1E84C52416CE7FB49755339417A58A84DE54C52416C09F950755339413C4ED14DE54C52414803785B755339412E90A040E54C52413C4ED15175533941780B2440E54C5241C4F528EC77533941ECC039FFE14C5241141DC9F57753394134A2B4FFE14C5241BC490C0278533941164850F0E14C52416C9A77FC775339411A51DAEFE14C52412C6519C27C533941E63FA45BDE4C5241C486A7C77C533941E2361A5CDE4C524114FBCBCE7C533941782D2153DE4C524140575B217D5339415A423E34DE4C524170AC8B1B7D533941BC270F33DE4C524104A392EA84533941388941D0DB4C52411CC05BF084533941D8A370D1DB4C5241E4F21F0285533941A857CACADB4C5241E43FA4FF845339417C3F35CADB4C5241DC8AFDD5A6533941DE0209AED24C5241D83D79D8A6533941081B9EAED24C5241C01726E3A653394176BE9FAAD24C524180D93D89A7533941AE47E18ED24C52410868228CA75339410C93A98ED24C5241A067B3CAB2533941D42B6569D14C52415CDC4643B8533941105839C0CF4C52413CBD5236BE53394106819503CA4C52411873D712C25339411C5A644BC54C5241B003E77CC2533941FA7E6AB4C24C52418C1F63CEBD533941F46C56A9BE4C5241BCC117D6BD53394182E2C7A8BE4C5241ECE236BABD53394112A5BD85BE4C5241102DB2BDBD5339413E575B81BE4C5241948785BABD53394186C95481BE4C52412C90A098BE53394126530537B84C5241A835CD9BBE533941DEE00B37B84C5241587DAEB6BE5339415C204115B84C5241388941B0BE5339415CB1BF14B84C5241905CFE53C453394120F46CA2B34C5241B0506B5AC45339412063EEA2B34C524128530563C45339419CC42098B34C5241F0C9C372C453394136CD3B92B34C5241B4C8766EC4533941C8BAB891B34C52416C787AD5CE5339415AF5B926AE4C5241F4285CDFD4533941006F81D4AA4C52412C211F84CA533941168C4AF2A64C5241B4A679E7C1533941D066D5EBA54C52418CB96BE9C1533941F241CFEAA54C5241287E8C59C1533941CC10C7D2A54C52412CB29D4FC1533941BC270FCFA54C52418451494DC1533941506B9ACFA54C5241847CD053B55339416C567D9AA24C52417C36AB3E9B533941C8073D6F9E4C5241DC240601845339413A70CE2C9C4C524184C0CA018453394186EB512C9C4C5241587DAEF6835339411461C32B9C4C524184C0CAD183533941083D9B259C4C52417C36ABCE83533941BE9F1A279C4C52418004C53F6D5339416C787A39994C52418C8EE4426D5339414872F937994C5241E8FBA9C16C5339418A1F6322994C5241782D219F6C533941FED47815994C524194CB7F986C533941EEC9C316994C5241585BB15F5D53394146B6F339944C5241ACFA5CDD475339414E4013A5924C5241BC9690DF47533941A2D634A3924C5241443EE8A947533941BAFC87A0924C524190ED7C2F47533941984C158C924C5241E8D9AC2A4753394104C58F8D924C5241088195F31A533941F831E68E894C5241E09C11550853394152DA1B18864C52414C158C5A085339415CFE4316864C5241E895B21C0853394144FAED0B864C5241580E2DB2075339412AA913E4854C52416029CBB007533941105839E4854C5241DC6800CFF9523941A089B0DD7D4C5241D44D62D0F9523941BADA8ADD7D4C52418C6CE7CBF9523941643BDFDB7D4C524144D8F0A4F95239411CEBE2AA7D4C52414850FCA8F95239416007CEA57D4C5241D0B359A5F952394138D6C5A57D4C52416CBC7483FA523941E00B9339784C5241E4581787FA523941083D9B39784C5241B0E1E995FA523941907EFB26784C5241A42C438CFA52394126E48326784C5241CC3B4EB1FC52394138F8C25C754C524174B515FBFD5239410E9C331A704C5241E8B7AF93FD5239411C0DE05D6C4C5241C48F3177F6523941900F7A266B4C5241482575E2EF52394114AE47B96A4C524180B740D2E652394150AF94B96D4C52418CDB6850E052394122DBF9C2704C5241D85F76BFE052394180B740EE724C524134333363E652394170F085F1764C5241DC8AFD75EC52394122FDF6697A4C5241B0B6627FEF523941C8BAB85D7C4C5241DC8AFD75EC5239412497FF887E4C5241CC3B4E41E75239415CB1BF7C804C52410C462525DE5239415CB1BF7C804C524164EE5A12D85239412C431C677F4C5241BC9690FFD152394112363C6D7E4C52414C621018CE5239415EBA49DC7E4C5241B84082F2C1523941666666BA7F4C524174E09C01BB523941E8D9AC167A4C524130992A58BF523941C8293A9E764C524110E9B7DFBB523941780B2410724C524188416045B9523941244A7B036B4C5241EC51B8AEC3523941F4DBD7ED694C52418048BF7DCB523941FC87F4CB6A4C5241081B9E6ED252394110E9B7E76A4C524120FDF695E05239411804563E684C52411CC05BD0DB523941E4F21FAA644C5241B0E1E9D5DB5239417A58A8A9644C5241489D80C6DB523941168C4A96644C524104560EBDDB523941C420B096644C5241643BDF6FDA5239418E06F0A2624C524164105879DA523941DE718AA2624C52411CA7E868DA52394166F7E48D624C52411CC9E58FDA5239411EA7E85C624C5241A8E848AEDA5239414C378951624C5241448B6CA7DA52394176029A50624C5241AC3E570BDD523941780B2438614C524140575BE1DD52394104780BE05D4C524140575BE1DD52394138F8C2B85B4C52413C795808DE523941F0A7C6875B4C5241ECC03923DE5239415817B77D5B4C524140E8D91CDE52394188D2DE7C5B4C52412C8716E9E5523941ECE236CE574C5241A4B437C8F3523941304CA6DE504C5241903177CDF3523941166A4DDF504C5241941804D6F3523941E2361ADC504C5241F4285CCFF3523941A2D634DB504C5241C854C1D8F6523941384547724F4C5241684469DFF65239417AA52C734F4C524194A98231F75239418E5374544F4C5241506B9AD7F75239415839B4384F4C52417C1D38F7F7523941E6D022374F4C5241DC8AFD55F8523941FCA9F10E4E4C5241E4C7987BF75239412653059B4B4C524164EE5A82F752394140A4DF9A4B4C5241482EFF81F752394120F46C9A4B4C5241D4E76A7BF7523941285C8F9A4B4C524144AD692EF652394102098AB3474C5241FCCBEEE9F4523941107A3637444C5241504013D1E3523941BC0512743B4C5241A05E297BDD523941B4C87672394C5241E4581777D6523941C0EC9E7C374C5241E4D0226BCD52394196900F9A364C524100917E9BBB52394152B81E39374C5241C898BB36AD5239415817B705394C5241D8F0F4BAA352394188635D6C3A4C5241F44A59B6A352394142AD696A3A4C5241B0506B7AA352394168226C743A4C52414060E540A3523941CC7F48773A4C5241C0172643A352394180D93D793A4C52414894F6269A52394162C3D31F3B4C5241806ABC249A523941AE69DE1D3B4C5241BC490C129A52394116FBCB1E3B4C5241807346149A52394172F90F213B4C52413CBD521683523941482EFF893C4C524174931814835239417E8CB9873C4C52416C4DF3EE82523941E00B93893C4C5241701283F0825239412041F18B3C4C52416419E22861523941388941F43D4C524194B20CC15C523941D0D556343E4C5241C0172613625239416C9A7720424C5241C017261362523941EC2FBB23464C524150FC187369523941FA7E6A80494C52415839B4386E523941705F07464E4C5241905CFE63705239414C37892D524C52410CB5A6C96D523941C420B052554C5241686FF02568523941D0D55690544C52415C2041F16252394168446927534C5241F80FE98758523941EEEBC0E9534C5241E0718A7E55523941EEEBC0E9534C524188855A93445239418AFD65FF544C524194A982113E5239418AFD65FF544C5241480C025B3252394182514921544C52415C6DC59E3052394198BB969C524C52410C93A922205239415452274C4D4C5241CC32C431195239411E3867584B4C52413C4ED1D11152394152B81E2D494C5241705F078E13523941E4839E45454C5241CC32C43119523941B615FB2F444C52416C348057295239411AC05BF4434C52410C93A92220523941B07268B1414C5241386744191D52394140355E6A3F4C524140A4DFDE215239419A779C763D4C52415CFE434A155239418A1F63BA3B4C5241744694460852394104780BF83A4C5241E00B93D9F05139415EBA4904394C52413C9B557FDF513941D26F5FC3354C52419CEFA726C8513941C264AA58304C5241C00E9C13B551394142F1636C2F4C524140CF66859B513941F831E6722E4C5241F441CF869B513941065F98702E4C52417C36AB0E9B51394176BE9F6A2E4C5241D0B359D59A51394196B20C612E4C5241A8C64B27735139419A081BA62C4C52412497FF109E5139419CA223852E4C52410C93A9129E513941A4DFBE822E4C524190C2F5689E513941703D0A872E4C5241B003E72C9F51394160984C7D2E4C52416CC5FED29F513941287E8C612E4C5241482EFF41A0513941B88D06382E4C524190C2F568A0513941703D0A072E4C5241482EFF41A051394128ED0DD62D4C52416CC5FED29F513941BAFC87AC2D4C5241057EE5429F513941AB9C74942D4C5241C07D1DB8B551394134A2B46F2E4C5241100BB5B6B5513941267502722E4C5241D01951CAB55139410022FD722E4C52417C832FCCB5513941BC7493702E4C5241E8FBA9B1D051394112A5BDBD2F4C52413C92CBAFD0513941545227C02F4C52413C014D14D151394178E926C52F4C5241C8073D3BD1513941C286A7CB2F4C524124E4833ED15139412C6519CA2F4C5241F441CFD6EA5139413AB4C826334C5241946588D3EA513941D0D55628334C52419C081BDEEA5139419A081B2A334C5241E4F21FE2EA51394116485028334C52413480B7001452394124287EE4384C524114143F562E523941F6B9DAB23B4C5241CC7F489F3B52394124B9FCFB3C4C5241D044D8B04D5239418C4AEA083E4C5241006F815460523941F263CCF93C4C52419CEFA75660523941E6AE25FC3C4C52414013617360523941EC51B8FA3C4C52413C4ED171605239411AC05BF83C4C524150B81E3582523941A2B437903B4C52418C06F0169952394100DE02293A4C5241C03099EAA1523941BE0E9C87394C524110363C3DAB523941029A0827384C5241F4DBD741AB5239414850FC28384C5241F4285C5FAB523941E0BE0E24384C52415CB1BF5CAB523941A4DFBE22384C5241787AA51CBA5239418026C24A364C524114F2411FBA523941BC05124C364C5241549FAB3DBA5239410022FD46364C524150DA1BBCBA5239415839B440364C5241F4B9DABABA523941900F7A3E364C524180B74062CD523941AE25E497354C5241DCD78163CD523941764F1E9A354C524100DE02A9CD5239410C93A996354C52418C8EE462CE5239418C6CE79F354C524108819563CE523941D85F769F354C52411C0DE05DD8523941F46C5699364C5241A01A2F5DD8523941141DC999364C524138AB3E67D8523941A8E8489A364C5241F46C560DD9523941705F07B6364C52418451491DD9523941925CFEBB364C524188D2DE20D952394156EC2FBB364C524118B7D180E0523941100BB5CA384C524110363C7DE0523941DCD781CB384C5241081B9E8EE052394102BC05D2384C524150B81E95E0523941EE0DBED0384C52418C06F016E7523941388941E03A4C5241FCF67510E75239414C3789E13A4C524150D1914CE7523941B88D06F83A4C52415C204151E7523941FC1873F73A4C524100917EABF8523941749318DC434C5241F441CFA6F85239413208ACDC434C52413C7958B8F85239415A643BE3434C5241588638D6F8523941F085C908444C524158A835DDF85239412E90A008444C5241F8C2642AFA52394162A1D69C474C5241F8A06723FA5239412497FF9C474C5241E8AE2524FA523941FCCBEE9D474C524158F5B92AFA523941F263CC9D474C524118D9CE77FB523941E09C11854B4C52418838D655FC523941684469034E4C52410412144FFC5239414EF38E034E4C52415C4BC857FC5239414A9D800E4E4C5241C876BE4FFC5239412A1895184E4C524130DD2456FC523941C6DCB5184E4C52413C4ED181FB5239417EFB3AB0504C524198999919FE52394136AB3E43524C52410022FD46035339412A189500534C524144AD69FE0E5339416C567D86534C524140A4DFBE1D533941684469D7534C5241F8A0679336533941D6C56D3C524C52417858A89536533941081B9E3E524C52411CA7E8A8365339417A58A83D524C5241ACCFD5A6365339415EDC463B524C5241C05B20A1405339418E5374B0514C5241343333A340533941AACFD5B2514C52411C0DE00D415339414C3789AD514C5241A42C435C4153394168006FB1514C52418048BF5D4153394150FC18AF514C52413480B720625339417AC729FA524C524104780B748253394162C3D38B524C52413C014D74825339414850FC8C524C52413C9B558F82533941E63FA48B524C52414C840DDF82533941BE0E9C8F524C5241E02D90E0825339413867448D524C5241C4FEB22B9B53394154742487534C52413455302A9B533941DA1B7C89534C52418C1F639E9B5339418295438F534C5241946588C39B53394190317795534C52419CEFA7C69B533941FC87F493534C5241FC187377B15339413C4ED165564C5241F48E5374B1533941CEF75367564C524120D26F9FB153394170CE886E564C524160A1D6A4B153394148E17A6C564C52415496216EC353394108AC1C5A594C524110C7BA68C3533941C2F5285C594C5241508D97BEC35339414A9D806A594C52417C6132C5C35339416C09F96C594C524138B4C8C6C3533941065F986C594C5241CCCCCC4CDF5339413208ACA0604C5241109C3322EE5339411AE2587B624C524174E09C61F55339418E06F062624C5241F4285C9FFB53394180B74082614C5241B4847CC0FE533941D634EFA0604C5241441CEB620354394198DD93BB5E4C5241A0D634CF0654394168006F055D4C52412C8716A90A543941E4141DFD5A4C524178BE9F3A0D54394188855A2B594C524194F6063F0D543941C876BE2B594C52411C3867440D5439416C09F924594C5241B88D06900D543941A0ABAD08594C5241F0F44A890D543941D26F5F07594C5241B4EA73A51654394112A5BD19564C52417C832FAC165439414E840D1B564C5241BC9690CF165439413C4ED10D564C5241AC1C5A1417543941AA605402564C524114FBCB0E1754394142F16300564C5241E02D90F0245439413C4ED181534C524130DD24F624543941A6BDC183534C5241B4A67957255439416E348073534C5241102DB25D2554394156EC2F73534C524110363C5D25543941D478E972534C52413411368C34543941ECE236EE514C5241787AA58C34543941DCF97EEE514C52419C802692345439415A8638EE514C524140575B9134543941EA73B5ED514C52410881953357543941A857CA924E4C5241BCE314CD6054394190C2F56C4D4C52416CC5FE0267543941244A7BDF4B4C5241B047E12A6C54394126E4835E4A4C52412CB29D2F6C5439419465885F4A4C524150AF94456C543941840D4F574A4C5241AC6054726C543941D066D54F4A4C52419031776D6C543941AA60544E4A4C52410CB5A6897554394186A75776484C524124E4838E75543941ACADD877484C524188F4DB077654394198DD9363484C5241A835CDCB765439411895D459484C5241043411C6805439411895D459484C5241C420B00281543941D044D85C484C5241E8B7AF03815439418026C25A484C5241B8FC87548F5439413C4ED1C9484C5241946588538F5439411EC9E5CB484C52410022FDB68F543941D044D8D0484C5241F4FDD4B88F5439416ABC74CF484C52417C36AB3E98543941A60A4685494C52415C6DC51E9E543941081B9E024A4C52413C7958589F54394152B81EB9454C524104098A4F9F543941FE65F7B8454C5241148C4A5A9F5439418E7571AB454C5241F0D24D429F54394114AE478D454C5241D44D62509F543941C6DCB58C454C5241A01A2F8D9A54394176711B353E4C5241C09F1A7F9A543941C442AD353E4C5241043411769A543941F44A592A3E4C5241105839849A543941287E8C293E4C5241686FF0F594543941D200DE02384C5241FC87F43B8C543941029A084B2E4C52411895D47987543941B6847CA4284C5241D4E76A6B87543941EE7C3FA5284C5241A879C759875439412ACB108F284C5241306EA361875439416666668E284C5241000000B07F54394184C0CAE1224C5241D4DEE0AB825439413E0AD77F1E4C5241D022DB298954394174B515DF1A4C5241D0D5560CA0543941B003E730124C5241B88D0600A054394140A4DF2E124C52410CD7A350A05439413480B710124C5241CC32C471A0543941986E12E7114C5241701B0D80A05439417A14AEE7114C5241306EA3E1A2543941567DAE6E0E4C5241401361D3A254394174D7126E0E4C5241E895B2ECA2543941A4703D4E0E4C524188A757EAA2543941A8C64B4B0E4C5241085F98ECA25439413A234A4B0E4C52410022FD86A25439415EBA49D8074C524138F8C284A2543941CC5D4BD8074C52412CD49A76A2543941B84082C6074C524148257582A2543941C4B12EC6074C5241AC8BDB289C543941E8482E63F94B5241943A011D9C543941DCD78163F94B52418451490D9C5439418204C54FF94B524170AC8B1B9C5439410022FD4EF94B52418C976EC297543941501E165EF44B5241AC8BDB3894543941BAB88DF6EE4B5241F853E34592543941029A086FE84B52415405A3129C543941645DDC8ED84B5241D49AE68DA554394190C2F5B8D34B52417C613245AC54394126530523D24B524184C95461B35439414C158C8ED04B524160BA495CB35439412EFF218DD04B52419C802682B3543941849ECD86D04B5241ECC03913B4543941BAFC8750D04B524154302A19B454394112363C51D04B5241283A92ABB75439415405A36ECE4B5241083D9BA5B7543941FCCBEE6DCE4B5241049A08BBB7543941B0E1E965CE4B5241C8293AD2B754394138F8C248CE4B524190E4F2DFB75439412CF69749CE4B5241D8CEF7D3BD543941A857CA22C84B5241588638C6BD543941B459F521C84B52413C7958E8BD543941986E12F7C74B5241FCD478E9BD543941986E12F7C74B524114FBCB4EBE5439411EA7E8B4BA4B5241482EFF11C154394166F7E431B44B524120F46C06C1543941BE529631B44B5241842F4C16C15439412E6EA31DB44B52414CF38EF3C0543941482EFFF1B34B5241B0726801C1543941C4D32BF1B34B5241ECEBC009BF543941F48E53E0B14B524180FB3A60B2543941D022DBF5A04B524100917E6BAE543941501E16C6964B524128A08960AE54394164EE5AC6964B52419C33A244AE5439413A234AA3964B52411CC9E54FAE543941B4C876A2964B5241B025E463A4543941460378338E4B5241E81DA758A4543941CC5D4B348E4B52412C90A048A454394130992A208E4B5241CCEEC9E3A3543941FC3A70FA8D4B5241E8482EEFA35439411AC05BF88D4B524138F8C2649C543941FC87F4638B4B5241D42B65599C543941DE0209668B4B5241E0E00B239C5439417CD0B3518B4B5241A401BC259C54394172F90F518B4B52412C87160986543941BEC1177E854B524188855A836F543941903177157E4B52415839B4786F54394192ED7C177E4B524130992A486F543941182653057E4B524140355E4A6F5439415E29CB047E4B5241E00B932966543941C68F31A37B4B5241D46F5F27665439417E8CB9A37B4B52410C24281E66543941827346A07B4B5241B8F3FD24655439419EEFA7767B4B5241C09F1AFF6354394196D409687B4B5241DC1B7CB15754394196D409687B4B5241D49AE69D57543941708104697B4B5241F063CC9D57543941E2361A687B4B5241F8A0672348543941240681817B4B5241DCD781234854394142AD69827B4B5241EC04341147543941E0BE0E907B4B5241A813D0F4465439415E29CB947B4B5241F0D24DF2465439416ABC74937B4B5241ECEBC039425439418E5374207C4B5241A01A2F3D3B54394134A2B45B7B4B524104A392FA3A5439413E9B551F7A4B5241480378CB3D54394188635DA0784B5241A045B6834254394174469476764B52418CB96B794254394132772D75764B5241703D0AA742543941C07D1D64764B52412C8716D9425439410EBE3025764B5241A8A44EE042543941F0F44A25764B5241B0E1E9454354394106F0165C744B524134C4B13E43543941925CFE5B744B5241E458174743543941D8A37051744B524198BB96204354394104560E21744B524120166A2D43543941C66D3420744B52419CE61D273E543941C07D1D646F4B5241701B0D10405439419EEFA7F2694B5241E895B23C445439412A1895A0664B5241B8F3FDC452543941DE938725604B5241C03923BA525439416EA30124604B5241C0EC9EEC52543941E4141D11604B5241E458172753543941E63FA4C75F4B52410868221C535439411C0DE0B95F4B5241E09C1125535439415817B7B95F4B5241182024C8525439411E143C7A5E4B52418838D6F56B5439414CC807655E4B5241CCAACFF56B543941C6DCB5645E4B52417C1D38776C543941CAA1455E5E4B5241FCD478796C543941F01648605E4B5241E81DA718835439418AB0E1C95C4B52416866661683543941643BDFC75C4B5241C8293A52835439414260E5C45C4B5241F016488083543941EA0434BD5C4B5241BC051284835439412063EEBE5C4B524140E8D98C98543941AA6054DE594B52412C87168998543941E4A59BDC594B5241C05B20019954394104E78CC8594B5241482EFF1199543941A4703DC2594B52415C8FC21599543941061214C3594B524190C2F5C8A5543941A0ABAD30564B52417C6132C5A55439413E0AD72F564B5241247502DAA5543941E0BE0E28564B52412497FFE0A5543941D42B6529564B52419C779C32B054394184C0CAC9524B5241E4C7982BB05439418E5374C8524B52418C4AEA74B0543941DE2406AD524B524130E6AE75B05439414E6210AC524B5241ACD85F76B05439410A6822AC524B5241F8C2646AB6543941623255004F4B5241C442AD69B6543941A62C43004F4B5241E0BE0E6CB6543941825149FD4E4B52415C6DC56EB6543941BADA8AFD4E4B5241FCA9F1E2BB5439414E840D634B4B52416CBC7453C4543941986E129B484B524138234A4BCF54394186EB5128464B524194D40948CF54394168446927464B5241905CFE53CF543941B0726825464B52418838D655CF543941D49AE625464B524120D26F9FDD543941842F4CC6424B52412CF6979DDD543941CEAACFC5424B5241FCCBEEA9DD543941361AC0C3424B524190C2F5F8DD543941C4B12EA6424B5241B88D0600DE54394130BB27A7424B5241083D9B55E654394146B6F3E13E4B524198FF904EE6543941DAACFAE03E4B524124E4836EE6543941DE2406D53E4B52415CD3BC73E6543941B4C876CE3E4B5241DC460378E65439418816D9CE3E4B5241083D9BD5EA5439418E7571BB3B4B524184C954D1EA5439412ACB10BB3B4B5241549FABEDEA543941FC1873973B4B524164EE5AF2EA5439414A7B83973B4B5241D0915CEEEC5439413CDF4F5D324B5241C442ADE9EC543941EE7C3F5D324B5241C09F1AEFEC543941FC3A7056324B5241C07D1DC8EC543941228E7525324B52419CA22359EC54394144FAEDFB314B5241285305B3EB5439417C832FE0314B5241C09F1AEFEA543941FC3A70D6314B5241A05E292BEA5439417C832FE0314B5241280F0B85E954394144FAEDFB314B524104341116E9543941228E7525324B5241006F81F4E8543941789CA24F324B5241F41FD2EFE85439412A3A924F324B524118D9CEF7E6543941CC7F48773B4B5241DC2406C1E2543941CEF7536F3E4B5241F44A59A6DA5439411C0DE019424B5241FC87F49BCC543941BAB88D6A454B524148E17A84C15439411AC05BE4474B5241A4BDC187C1543941A60A46E5474B5241D85F766FC154394186C954E9474B52415839B448C154394162C3D3F7474B5241BC529641C1543941FEB27BF6474B5241ACD85F86B8543941061214D74A4B5241004D848DB8543941D6C56DD84A4B5241A80A4645B85439416ABC74F34A4B52417A4EAB43B854394159FD76F54A4B5241A150AA44B8543941697C36F44A4B52414B0D4445B8543941C44375F34A4B5241DD478747B85439419C8B9CF24A4B524129CA4AFACB543941E4D53DEE3F4B52415CFD7DC5CC5439414A3CA4903B4B5241F596172FCB5439417E6FD763384B5241C263E44FD4543941B1A20AC42E4B5241F596170FDB543941E4D53DA3254B52415CFD7DD1C654394117097174234B524129CA4A0EC2543941170971E52A4B524129CA4A2AB45439417E6FD75B3C4B52418F30B1D8A95439417E6FD7D43F4B52415CFD7D299B5439417E6FD74B444B52415CFD7D418F543941E4D53DDE474B5241C263E4EB865439417E6FD73B4C4B524129CA4AA2785439414A3CA4E94E4B52418F30B1506E54394117097197514B5241F5961727505439417E6FD7AE524B5241F5961763325439414A3CA4E3514B52418F30B1FC18543941E4D53D4D504B52415CFD7D59045439411709719D4E4B5241C263E41FEE533941B1A20A0D4A4B52418F30B1B0BF53394117097134434B524129CA4A46A8533941170971BF3D4B5241F596179F955339414A3CA4903B4B5241F59617C7815339417E6FD761394B5241F596174344533941E4D53D00374B52415CFD7D092E533941170971CF354B5241C263E4DB11533941B1A20ABA334B5241C263E40BFA523941B1A20ABA334B524129CA4AC6E9523941B1A20A35364B52415CFD7DB5D8523941B1A20AA83C4B52418F30B19CCB5239414A3CA482424B52415CFD7D05B15239411709711E4E4B5241C263E4E38E523941B1A20AF1574B5241C263E4276D523941E4D53DB45C4B52415CFD7D0D2E5239414A3CA43E644B52415CFD7D91EC5139417E6FD701694B5241F596173FC9513941E4D53D966B4B5241F5961787A5513941170971DA6F4B52418F30B13482513941170971CC764B52410AD7A330645139418FC2F5387D4B52410AD7A3B0525139418FC2F5B8814B52410AD7A3B0425139418FC2F5B8844B52410AD7A330325139418FC2F5B8884B52410AD7A3B0275139418FC2F5988A4B52410AD7A330195139418FC2F5188B4B52410AD7A3300E5139418FC2F598894B52410AD7A3B0075139418FC2F578864B52410AD7A3B0035139418FC2F538824B52410AD7A3B0FC5039418FC2F5187E4B52410AD7A330F55039418FC2F5B87C4B52410AD7A330E25039418FC2F5187A4B52410AD7A3B0CB5039418FC2F5F8764B52410AD7A3B0B85039418FC2F558764B52410AD7A3309C5039418FC2F538764B52410AD7A3307F5039418FC2F578764B52410AD7A3306C5039418FC2F538764B52410AD7A3303E5039418FC2F578784B52410AD7A3B02A5039418FC2F5D87A4B52410AD7A3B0145039418FC2F5587E4B52410AD7A3B00B5039418FC2F538814B52410AD7A330FC4F39418FC2F598864B52410AD7A330F04F39418FC2F5388D4B52410AD7A330E24F39418FC2F5B8934B52410AD7A330D54F39418FC2F598974B52410AD7A3B0C24F39418FC2F5589A4B52410AD7A330AA4F39418FC2F5989D4B52410AD7A3B0894F39418FC2F5789F4B52410AD7A3305D4F39418FC2F598A14B52410AD7A3B02D4F39418FC2F5D8A44B52410AD7A330124F39418FC2F518A84B52410AD7A330FC4E39418FC2F578AB4B52410AD7A3B0E24E39418FC2F598AD4B52410AD7A330D84E39418FC2F558B14B52410AD7A3B0C44E39418FC2F538B54B52410AD7A330AB4E39418FC2F578BA4B52410AD7A3B08B4E39418FC2F5B8BE4B52410AD7A3B06A4E39418FC2F518C24B52410AD7A3305B4E39418FC2F578C34B52410AD7A3303F4E39418FC2F518C74B52410AD7A3302F4E39418FC2F558C84B52410AD7A3B0234E39418FC2F578C64B52410AD7A3301B4E39418FC2F5D8C14B52410AD7A330184E39418FC2F518BE4B52410AD7A3B0144E39418FC2F5F8B84B52410AD7A330F74D39418FC2F558B94B52410AD7A3B0FC4D39418FC2F5D8BF4B52410AD7A330F94D39418FC2F598C44B52410AD7A3B0E74D39418FC2F5B8C74B52410AD7A3B0D64D39418FC2F5D8CA4B52410AD7A330BC4D39418FC2F558CC4B52410AD7A3B0A74D39418FC2F518CE4B52410AD7A3308B4D39418FC2F538D04B52410AD7A3B0754D39418FC2F5F8D14B52410AD7A330614D39418FC2F578D54B52410AD7A330484D39418FC2F5F8D84B52410AD7A330314D39418FC2F518DC4B52410AD7A3B0444D39418FC2F5B8E34B52410AD7A3306B4D39418FC2F598DE4B5241 - - -010300000001000000280300008C06F0569053394132C4B1CE174D52416C567D6E905339418026C2CA174D5241E02D907090533941D066D5CB174D524190C2F5489B5339417A36AB7E164D52411CEBE2469B5339412CF6977D164D5241FC5C6DD59B533941A679C765164D5241D8C56D449C5339413889413C164D524120B072489C533941A2D63437164D524160C3D34B9C533941B81E8537164D524134EF38559F5339416EA30128144D52413C4ED1519F533941585BB127144D5241F085C9749F533941A6BDC1FB134D52411C7C61729F533941A223B9F8134D52419C33A2749F533941C6DCB5F8134D52414894F6069F53394178E926790F4D5241244A7B73A2533941FAEDEB4C0B4D52416844692FA4533941365EBA3D094D52418838D625A453394134EF383D094D524124B9FC27A4533941DCF97E3A094D5241306EA331A4533941FCA9F13A094D524114FBCB7EA55339415AF5B97E074D5241C4D32B75A5533941CAA1457E074D524198DD9387A5533941E6D02267074D524198BB9660A55339419E802636074D524174E09CF1A45339412E90A00C074D52415CD3BCD3A4533941789CA207074D524128C286D7A45339414C158C06074D524180B740A29B533941BEC11706054D5241D83D79D89C533941782D2197014D524174E09CD19C53394122DBF996014D524140CF66D59C533941ECE23692014D52416007CED99C533941CAA14592014D52416419E2489D5339416EC5FE66FF4C524148E17A449D5339418E06F066FF4C5241B8627F499D53394176029A60FF4C524170CE88229D5339412EB29D2FFF4C524148BF7DBD9C5339416007CE09FF4C5241F41FD2BF9C533941CAC34209FF4C524138B4C8C69653394134A2B46FFD4C5241F875E07C8E533941B840826EFA4C52412063EE3A8D5339411C0DE08DF64C5241D49AE6ED8B533941721B0D1CF24C5241B49DEFE78B53394130992A1CF24C5241CC5D4BC88B5339418CDB68F4F14C52419031776D8B533941B0506BD2F14C5241F4DBD7718B533941903177D1F14C5241943A016D7D533941164850C8ED4C524194B20C01785339413C4ED1E1E84C5241186A4D4379533941E63FA46BE54C524100BC05D27B53394180D93D39E24C5241C876BE6F805339418E06F0C2DE4C5241D834EFF88753394190317775DC4C5241A8C64B77A95339414850FC70D34C524138F8C2C4B45339417C3F354AD24C524108F9A0C7B4533941DA8AFD49D24C52418048BF6DB5533941A4703D2ED24C524138674489B5533941B29DEF23D24C5241B0BFEC8EB553394108CE1925D24C52415817B7A1BB533941E4141D4DD04C5241E0BE0E9CBB5339418EE4F24BD04C52414C7B83EFBB53394110C7BA2CD04C5241ACFA5CFDBB533941166A4D1BD04C5241BCC11706BC533941F697DD1BD04C52416419E218C253394152499D40CA4C524154522710C253394104780B40CA4C5241EC7C3F15C25339419C11A539CA4C524140A4DF1EC2533941C039233ACA4C5241ACD85F06C65339414A598674C54C52415CB1BFFCC553394126310874C54C5241A423B90CC6533941FC87F45FC54C52411CC05B10C653394124B9FC5FC54C52416844697FC6533941F853E3A9C24C5241F0A7C67BC6533941D022DBA9C24C5241F41FD27FC6533941143FC6A4C24C52412041F163C653394112A5BD81C24C52419C559F6BC6533941A01A2F81C24C5241A423B9BCC15339415C8FC275BE4C524150AF9495C253394166886351B84C5241C84B3719C8533941D24D62F8B34C5241B437F872D25339413A014D94AE4C52417C36AB6ED25339415E4BC893AE4C52419C33A274D253394196218E91AE4C52416C348077D25339411C0DE091AE4C5241641058F9D8533941E8FBA9FDAA4C5241900F7AF6D8533941621058FDAA4C524138894100D953394132E6AEF9AA4C52417C1D3827D9533941EA95B2C8AA4C524138894100D953394110E9B797AA4C5241B86B09C9D85339412ACB1083AA4C5241A4923AD1D85339410E2DB281AA4C5241A879C789CD53394166D5E746A64C5241BC529681CD53394114D04448A64C52416007CE49CD5339418AFD6533A64C5241FCCBEEB9CC53394164CC5D1BA64C52418C6CE7BBCC5339411804561AA64C524128C286F7C353394130BB270FA54C5241F48E5314B85339416EA301E0A14C5241482EFF11B853394104E78CE0A14C52414C621008B853394162A1D6DCA14C524150D191ACB753394196218ECDA14C52413C4ED1B1B75339416E3480CBA14C5241D4E76A3B9D533941C6DCB5909D4C5241E86A2B369D5339418026C2929D4C524170AC8BEB9C533941842F4C869D4C524144696FE09C53394112A5BD859D4C5241EC0434E19C5339415C2041859D4C52410044FA8D855339413480B7409B4C524188A7577A6F53394150FC1863984C52414060E520605339411A51DA7B934C52415CFE431A605339410A46257D934C5241EC2FBBF75F5339417EFB3A70934C524174E09C515F53394148E17A54934C5241FC87F41B5F533941CEAACF51934C52410C24281E5F533941B29DEF4F934C524108CE196149533941A4DFBEB6914C524114AE47711D533941E2E995C6884C524124287E6C1D533941E0BE0EC8884C5241D019515A1D533941DE2406C5884C52413C92CB5F1D533941E8482EC3884C5241842F4C260B533941E8482E5F854C52410CBE30A9FD523941F6B9DA927D4C524108CE1981FE5239411E166A4D784C524150B81EA5005339412497FF84754C52414803789B00533941BAFC8784754C524130992AA8005339414ED19174754C5241ACFA5CAD00533941787AA574754C52414C158CFA0153394134113624704C5241D0B359F5015339410A682224704C524100917EFB0153394142F1631C704C5241C854C1F801533941B27BF218704C5241F4B050FB01533941D634EF18704C5241A42C438C01533941E8FBA9156C4C52417CD0B3890153394132E6AE156C4C52416C787A6501533941780B24E86B4C5241900F7AF6005339419A779CBE6B4C5241DC4603A800533941240681B16B4C5241746891AD00533941244A7BAF6B4C524190ED7C6FF8523941BAB88D466A4C5241B459F569F8523941BC7493486A4C5241F0D24D12F8523941FCCBEE396A4C5241C0EC9ECCF7523941226C78366A4C524140A4DFCEF75239415EBA49346A4C5241D0915C7EF252394152DA1BDC694C5241D83D7928EB5239419A779C32694C5241E4F21F32E4523941D49AE6C9674C524194CB7FA8DF52394132C4B162644C5241DC68007FDE523941FA7E6AA4624C5241806ABCC4E0523941A679C799614C52411C0DE0BDE0523941D044D898614C524160BA49DCE0523941FED4788D614C5241201FF4FCE052394142F16364614C524180B74002E1523941DA3D7964614C52411CC05BE0E1523941B88D06EC5D4C524174B515DBE15239412041F1EB5D4C524140575BE1E152394104780BE45D4C524140575BE1E1523941728A8ED85B4C52411C2FDD74E9523941A0ABAD44584C52416C567D6EE9523941D066D543584C5241E09C1175E95239418A416041584C5241D019517AE9523941705F0742584C52412C90A058F752394140A4DF52514C524194CB7FD8F7523941DCD78117514C5241345EBAA9FA523941AA8251CD524C5241E00209AAFA523941E00B93CD524C524100DE0219FB52394150FC18F7524C5241F0F44A89FB523941D022DB09534C524170810485FB5239417E8CB90B534C524118D9CE97015339418638D6E9534C5241984C159C01533941DACEF7E7534C524164F7E4D10153394190C2F5F0534C5241B8DA8A3D0253394160764FF6534C524160C3D33B02533941C6DCB5F8534C5241F8E461610E53394126C28683544C524150FC18630E5339412EFF2181544C5241388941900E533941D26F5F83544C5241A0CDAA8F0E53394196B20C85544C5241081B9EBE1D5339413E7958D8544C5241A0D634BF1D5339417A36ABD6544C524188A757EA1D533941AA13D0D8544C5241CC5D4B681E5339414C158CD2544C52414C158C6A1E5339417E6ABCD4544C524108AC1C8A37533941B003E734534C524140E8D91C41533941A245B6AF524C5241CCA145B6615339412EFF21F9534C5241A4BDC1B761533941849ECDF6534C5241784F1E0662533941A067B3FA534C524178E92621625339413E575BF9534C5241B072682162533941948785FA534C52414CEA047482533941EA26318C534C524198DD93379A533941C0EC9E80544C5241C486A787AF533941423EE845574C5241B0506B0AC1533941D656EC275A4C5241F853E3A5DC53394176E09C61614C5241B4A679A7DC53394112363C61614C5241E07A14AEDC53394134A2B463614C52415C8FC235DD533941AED85F7A614C5241C0172633DD533941EAB7AF7B614C524178E926D1EC53394120D26F6F634C5241CCEEC9D3EC533941E4F21F6E634C5241109C33F2EC533941A2D63473634C5241784F1EB6ED533941B27BF27C634C52416029CBD0ED5339419C559F7B634C524194B20CD1ED533941143FC67C634C5241C09F1A0FF6533941923A0161634C52418816D90EF653394188F4DB5F634C5241C07D1DB8F65339418E757157634C52412C431CEBF6533941B2BFEC4E634C5241A0D634EFF65339415CB1BF50634C5241E4361AE0FD53394140A4DF56624C524170A301DCFD53394196B20C55624C5241782D214FFE5339413C4ED141624C524100000060FE533941DCD7813B624C52411461C363FE5339413E79583C624C5241341136DC01543941226C7842614C524120B072D801543941C0CAA141614C524140355E0A025439416A4DF32E614C5241D4096812025439410EE02D30614C524194D409D806543941D6C56D3C5F4C52414872F9CF065439413433333B5F4C524188F4DBE706543941CAA145325F4C524174711BED06543941B2BFEC325F4C524198218E650A543941A067B3765D4C5241A8A44E600A543941BA490C765D4C5241F44A59660A5439415E4BC8735D4C5241D019516A0A543941388941745D4C52413C4ED1510E5439417E6ABC645B4C5241647FD94D0E54394114D044645B4C52410868225C0E543941B2BFEC5E5B4C524194A982610E543941545227585B4C5241B0E1E9650E54394196438B585B4C52412C1895E410543941780B2494594C52418CDB68A01954394148BF7DC5564C5241DCD7811327543941849ECD5A544C5241686FF00536543941C2F528DC524C5241D066D5B758543941EC2FBB7F4F4C5241703D0AB7585439417E1D387F4F4C5241F0C9C3C2585439415405A37E4F4C5241345EBAD95854394116FBCB7A4F4C5241808CB9DB585439411A51DA7B4F4C5241941804D6625439416ADE714A4E4C5241905CFED362543941D42B65494E4C5241C017266363543941DA1B7C314E4C5241B8F3FDE469543941DE2406914C4C5241D8F0F4FA69543941CCCCCC884C4C5241585BB1FF695439413C4ED1894C4C5241941804166F54394190A0F80D4B4C524194B20C81775439411895D459494C52410C022BA7805439411895D459494C5241941804A68E543941666666C6494C52412C90A0F89E543941081B9E224B4C524130DD2446AE543941D24D62A44E4C524184E2C748AE5439419ECDAAA34E4C5241A8C64BB7AE543941E4F21FB64E4C5241A03C2CB4AE5439410AF9A0B74E4C524150FC1843C55439415C2041A5514C524158863846C5543941361AC0A3514C524174B5156BC5543941B0E1E9A9514C52416007CE89C55439418E7571AB514C5241C07D1D88C5543941C264AAAC514C524140575BB1DE5439412041F1D7534C5241E0E00BB3DE543941EC51B8D6534C5241F0384527DF54394192CB7FDC534C5241BCB88D26DF543941AA6054DE534C5241ACADD8EFF05439416688634D544C5241E02D90F0F05439414EF38E4B544C52411CEBE206F1543941C264AA4C544C52419CEFA706F15439413C4ED14D544C5241905374F4F85439414A598668544C5241D409685201553941DCB58434554C524140CF66250D553941F44A597A584C524110C7BA280D5539419A999979584C5241605452370D553941BC270F7F584C524198DD93770D553941F263CC89584C5241BC490C720D5539410C71AC8B584C5241D812F2311C55394138D6C5415B4C5241B4A679371C5539411EC9E53F5B4C5241F46C569D1C5539411EA7E8505B4C5241CCCCCCDC1C5539414E6210545B4C52414C158CDA1C553941C03923565B4C52411C5A642B2B5539414AEA04505C4C52419C11A52D2B5539416A6FF04D5C4C5241F4B0508B2B553941BE3099525C4C52413C2CD48A2B553941E6AE25545C4C5241941804763C5539418E7571A75C4C5241489D80763C553941F853E3A55C4C52418451499D3C553941F21FD2A75C4C5241A4923A613D55394174D7129E5C4C5241605452073E553941AA6054825C4C5241842F4C763E553941CCCCCC585C4C52418451499D3E553941F21FD2275C4C5241842F4C763E553941AACFD5F65B4C5241605452073E553941CE3B4ECD5B4C5241A4923A613D55394104C58FB15B4C5241BC0512C43C5539418048BFA95B4C5241708A8EC43C55394158CA32A85B4C524188B0E1092C5539418638D6555B4C52413C0AD7431E553941FA5C6D655A4C5241DCF97EFA0F55394152B81EC5574C5241A4BDC1F70355394174D71272544C5241D8C56DF403553941CE88D272544C52418838D6E5035539413E575B6D544C524110E9B73F0355394176E09C51544C524108CE1931035539416619E250544C524174D712320355394138894150544C5241F853E315FA54394130DD2472534C524144D8F014FA5439415C6DC572534C5241148C4A7AF954394174B5156B534C52419487857AF9543941FCCBEE69534C52414082E247F1543941CE19514E534C5241BCC117C6DF543941923A01E1524C524170F085F9C6543941C8BAB8BD504C524130992AC8B05439417EFB3ADC4D4C5241984C155CA1543941D85F76534A4C52418CB96B59A15439417C832F544A4C52414CA60AC6A0543941BC96903B4A4C52419C8026A2A0543941A679C7394A4C52414CEA04A4A0543941D24D62384A4C5241F4FDD4B88F5439416ABC74CF484C52410022FDB68F543941D044D8D0484C5241946588538F5439411EC9E5CB484C5241B8FC87548F5439413C4ED1C9484C5241E8B7AF03815439418026C25A484C5241C420B00281543941D044D85C484C5241043411C6805439411895D459484C5241A835CDCB765439411895D459484C524188F4DB077654394198DD9363484C524124E4838E75543941ACADD877484C52410CB5A6897554394186A75776484C52419031776D6C543941AA60544E4A4C5241AC6054726C543941D066D54F4A4C524150AF94456C543941840D4F574A4C52412CB29D2F6C5439419465885F4A4C5241B047E12A6C54394126E4835E4A4C52416CC5FE0267543941244A7BDF4B4C5241BCE314CD6054394190C2F56C4D4C52410881953357543941A857CA924E4C524140575B9134543941EA73B5ED514C52419C802692345439415A8638EE514C5241787AA58C34543941DCF97EEE514C52413411368C34543941ECE236EE514C524110363C5D25543941D478E972534C5241102DB25D2554394156EC2F73534C5241B4A67957255439416E348073534C524130DD24F624543941A6BDC183534C5241E02D90F0245439413C4ED181534C524114FBCB0E1754394142F16300564C5241AC1C5A1417543941AA605402564C5241BC9690CF165439413C4ED10D564C52417C832FAC165439414E840D1B564C5241B4EA73A51654394112A5BD19564C5241F0F44A890D543941D26F5F07594C5241B88D06900D543941A0ABAD08594C52411C3867440D5439416C09F924594C524194F6063F0D543941C876BE2B594C524178BE9F3A0D54394188855A2B594C52412C8716A90A543941E4141DFD5A4C5241A0D634CF0654394168006F055D4C5241441CEB620354394198DD93BB5E4C5241B4847CC0FE533941D634EFA0604C5241F4285C9FFB53394180B74082614C524174E09C61F55339418E06F062624C5241109C3322EE5339411AE2587B624C5241CCCCCC4CDF5339413208ACA0604C524138B4C8C6C3533941065F986C594C52417C6132C5C35339416C09F96C594C5241508D97BEC35339414A9D806A594C524110C7BA68C3533941C2F5285C594C52415496216EC353394108AC1C5A594C524160A1D6A4B153394148E17A6C564C524120D26F9FB153394170CE886E564C5241F48E5374B1533941CEF75367564C5241FC187377B15339413C4ED165564C52419CEFA7C69B533941FC87F493534C5241946588C39B53394190317795534C52418C1F639E9B5339418295438F534C52413455302A9B533941DA1B7C89534C5241C4FEB22B9B53394154742487534C5241E02D90E0825339413867448D524C52414C840DDF82533941BE0E9C8F524C52413C9B558F82533941E63FA48B524C52413C014D74825339414850FC8C524C524104780B748253394162C3D38B524C52413480B720625339417AC729FA524C52418048BF5D4153394150FC18AF514C5241A42C435C4153394168006FB1514C52411C0DE00D415339414C3789AD514C5241343333A340533941AACFD5B2514C5241C05B20A1405339418E5374B0514C5241ACCFD5A6365339415EDC463B524C52411CA7E8A8365339417A58A83D524C52417858A89536533941081B9E3E524C5241F8A0679336533941D6C56D3C524C524140A4DFBE1D533941684469D7534C524144AD69FE0E5339416C567D86534C52410022FD46035339412A189500534C524198999919FE52394136AB3E43524C52413C4ED181FB5239417EFB3AB0504C524130DD2456FC523941C6DCB5184E4C5241C876BE4FFC5239412A1895184E4C52415C4BC857FC5239414A9D800E4E4C52410412144FFC5239414EF38E034E4C52418838D655FC523941684469034E4C524118D9CE77FB523941E09C11854B4C524158F5B92AFA523941F263CC9D474C5241E8AE2524FA523941FCCBEE9D474C5241F8A06723FA5239412497FF9C474C5241F8C2642AFA52394162A1D69C474C524158A835DDF85239412E90A008444C5241588638D6F8523941F085C908444C52413C7958B8F85239415A643BE3434C5241F441CFA6F85239413208ACDC434C524100917EABF8523941749318DC434C52415C204151E7523941FC1873F73A4C524150D1914CE7523941B88D06F83A4C5241FCF67510E75239414C3789E13A4C52418C06F016E7523941388941E03A4C524150B81E95E0523941EE0DBED0384C5241081B9E8EE052394102BC05D2384C524110363C7DE0523941DCD781CB384C524118B7D180E0523941100BB5CA384C524188D2DE20D952394156EC2FBB364C52418451491DD9523941925CFEBB364C5241F46C560DD9523941705F07B6364C524138AB3E67D8523941A8E8489A364C5241A01A2F5DD8523941141DC999364C52411C0DE05DD8523941F46C5699364C524108819563CE523941D85F769F354C52418C8EE462CE5239418C6CE79F354C524100DE02A9CD5239410C93A996354C5241DCD78163CD523941764F1E9A354C524180B74062CD523941AE25E497354C5241F4B9DABABA523941900F7A3E364C524150DA1BBCBA5239415839B440364C5241549FAB3DBA5239410022FD46364C524114F2411FBA523941BC05124C364C5241787AA51CBA5239418026C24A364C52415CB1BF5CAB523941A4DFBE22384C5241F4285C5FAB523941E0BE0E24384C5241F4DBD741AB5239414850FC28384C524110363C3DAB523941029A0827384C5241C03099EAA1523941BE0E9C87394C52418C06F0169952394100DE02293A4C524150B81E3582523941A2B437903B4C52413C4ED171605239411AC05BF83C4C52414013617360523941EC51B8FA3C4C52419CEFA75660523941E6AE25FC3C4C5241006F815460523941F263CCF93C4C5241D044D8B04D5239418C4AEA083E4C5241CC7F489F3B52394124B9FCFB3C4C524114143F562E523941F6B9DAB23B4C52413480B7001452394124287EE4384C5241E4F21FE2EA51394116485028334C52419C081BDEEA5139419A081B2A334C5241946588D3EA513941D0D55628334C5241F441CFD6EA5139413AB4C826334C524124E4833ED15139412C6519CA2F4C5241C8073D3BD1513941C286A7CB2F4C52413C014D14D151394178E926C52F4C52413C92CBAFD0513941545227C02F4C5241E8FBA9B1D051394112A5BDBD2F4C52417C832FCCB5513941BC7493702E4C5241D01951CAB55139410022FD722E4C5241100BB5B6B5513941267502722E4C5241C07D1DB8B551394134A2B46F2E4C5241D000DE429F5139418E5374942D4C52416CC5FED29F513941BAFC87AC2D4C5241482EFF41A051394128ED0DD62D4C524190C2F568A0513941703D0A072E4C5241482EFF41A0513941B88D06382E4C52416CC5FED29F513941287E8C612E4C5241B003E72C9F51394160984C7D2E4C524190C2F5689E513941703D0A872E4C52410C93A9129E513941A4DFBE822E4C52412497FF109E5139419CA223852E4C5241D0B359D59A51394196B20C612E4C52417C36AB0E9B51394176BE9F6A2E4C5241F441CF869B513941065F98702E4C524140CF66859B513941F831E6722E4C5241C00E9C13B551394142F1636C2F4C52419CEFA726C8513941C264AA58304C52413C9B557FDF513941D26F5FC3354C5241E00B93D9F05139415EBA4904394C5241744694460852394104780BF83A4C52415CFE434A155239418A1F63BA3B4C524140A4DFDE215239419A779C763D4C5241386744191D52394140355E6A3F4C52410C93A92220523941B07268B1414C52416C348057295239411AC05BF4434C5241C464AAC02F5239417CF2B0DC434C524130992AA833523941D42B6589434C524174F90F993A523941946588B7404C52416C787AD543523941BA6B097D3E4C524170AC8B3B4D5239416891ED083F4C5241C8BAB83D4D523941508D97063F4C52414C7B83AF4D5239413889410C3F4C52418816D91E4E523941EC51B8063F4C52412497FF204E523941E09C11093F4C52416419E22861523941388941F43D4C5241701283F0825239412041F18B3C4C52416C4DF3EE82523941E00B93893C4C524174931814835239417E8CB9873C4C52413CBD521683523941482EFF893C4C5241807346149A52394172F90F213B4C5241BC490C129A52394116FBCB1E3B4C5241806ABC249A523941AE69DE1D3B4C52414894F6269A52394162C3D31F3B4C5241C0172643A352394180D93D793A4C52414060E540A3523941CC7F48773A4C5241B0506B7AA352394168226C743A4C5241F44A59B6A352394142AD696A3A4C5241D8F0F4BAA352394188635D6C3A4C5241C898BB36AD5239415817B705394C524100917E9BBB52394152B81E39374C5241E4D0226BCD52394196900F9A364C5241E4581777D6523941C0EC9E7C374C5241A05E297BDD523941B4C87672394C5241504013D1E3523941BC0512743B4C5241FCCBEEE9F4523941107A3637444C524144AD692EF652394102098AB3474C5241D4E76A7BF7523941285C8F9A4B4C5241482EFF81F752394120F46C9A4B4C524164EE5A82F752394140A4DF9A4B4C5241E4C7987BF75239412653059B4B4C5241DC8AFD55F8523941FCA9F10E4E4C52417C1D38F7F7523941E6D022374F4C5241506B9AD7F75239415839B4384F4C524194A98231F75239418E5374544F4C5241684469DFF65239417AA52C734F4C5241C854C1D8F6523941384547724F4C5241F4285CCFF3523941A2D634DB504C5241941804D6F3523941E2361ADC504C5241903177CDF3523941166A4DDF504C5241A4B437C8F3523941304CA6DE504C52412C8716E9E5523941ECE236CE574C524140E8D91CDE52394188D2DE7C5B4C5241ECC03923DE5239415817B77D5B4C52413C795808DE523941F0A7C6875B4C524140575BE1DD52394138F8C2B85B4C524140575BE1DD52394104780BE05D4C5241AC3E570BDD523941780B2438614C5241448B6CA7DA52394176029A50624C5241A8E848AEDA5239414C378951624C52411CC9E58FDA5239411EA7E85C624C52411CA7E868DA52394166F7E48D624C524164105879DA523941DE718AA2624C5241643BDF6FDA5239418E06F0A2624C524104560EBDDB523941C420B096644C5241489D80C6DB523941168C4A96644C5241B0E1E9D5DB5239417A58A8A9644C52411CC05BD0DB523941E4F21FAA644C524120FDF695E05239411804563E684C524170AC8B9BE0523941AE69DE3D684C52410C93A9A2E05239411873D746684C5241E8FBA911E152394188635D70684C524144AD693EE15239413E0AD777684C5241287E8C39E152394162105879684C5241EC73B555EA52394186C954516A4C524104A3925AEA52394162C3D34F6A4C52412041F1D3EA523941E2361A646A4C52410CB5A619EB523941BC9690676A4C5241D46F5F17EB5239418048BF696A4C5241C48F3177F6523941900F7A266B4C5241E8B7AF93FD5239411C0DE05D6C4C524174B515FBFD5239410E9C331A704C5241CC3B4EB1FC52394138F8C25C754C5241A42C438CFA52394126E48326784C5241B0E1E995FA523941907EFB26784C5241E4581787FA523941083D9B39784C52416CBC7483FA523941E00B9339784C5241D0B359A5F952394138D6C5A57D4C52414850FCA8F95239416007CEA57D4C524144D8F0A4F95239411CEBE2AA7D4C52418C6CE7CBF9523941643BDFDB7D4C5241D44D62D0F9523941BADA8ADD7D4C5241DC6800CFF9523941A089B0DD7D4C52416029CBB007533941105839E4854C5241580E2DB2075339412AA913E4854C5241E895B21C0853394144FAED0B864C52414C158C5A085339415CFE4316864C5241E09C11550853394152DA1B18864C5241088195F31A533941F831E68E894C5241E8D9AC2A4753394104C58F8D924C524190ED7C2F47533941984C158C924C5241443EE8A947533941BAFC87A0924C5241BC9690DF47533941A2D634A3924C5241ACFA5CDD475339414E4013A5924C5241585BB15F5D53394146B6F339944C524194CB7F986C533941EEC9C316994C5241782D219F6C533941FED47815994C5241E8FBA9C16C5339418A1F6322994C52418C8EE4426D5339414872F937994C52418004C53F6D5339416C787A39994C52417C36ABCE83533941BE9F1A279C4C524184C0CAD183533941083D9B259C4C5241587DAEF6835339411461C32B9C4C524184C0CA018453394186EB512C9C4C5241DC240601845339413A70CE2C9C4C52417C36AB3E9B533941C8073D6F9E4C5241847CD053B55339416C567D9AA24C52418451494DC1533941506B9ACFA54C52412CB29D4FC1533941BC270FCFA54C5241287E8C59C1533941CC10C7D2A54C52418CB96BE9C1533941F241CFEAA54C5241B4A679E7C1533941D066D5EBA54C52412C211F84CA533941168C4AF2A64C5241F4285CDFD4533941006F81D4AA4C52416C787AD5CE5339415AF5B926AE4C5241B4C8766EC4533941C8BAB891B34C5241F0C9C372C453394136CD3B92B34C524128530563C45339419CC42098B34C5241B0506B5AC45339412063EEA2B34C5241905CFE53C453394120F46CA2B34C5241388941B0BE5339415CB1BF14B84C5241587DAEB6BE5339415C204115B84C5241A835CD9BBE533941DEE00B37B84C52412C90A098BE53394126530537B84C5241948785BABD53394186C95481BE4C5241102DB2BDBD5339413E575B81BE4C5241ECE236BABD53394112A5BD85BE4C5241BCC117D6BD53394182E2C7A8BE4C52418C1F63CEBD533941F46C56A9BE4C5241B003E77CC2533941FA7E6AB4C24C52411873D712C25339411C5A644BC54C52413CBD5236BE53394106819503CA4C52415CDC4643B8533941105839C0CF4C5241A067B3CAB2533941D42B6569D14C52410868228CA75339410C93A98ED24C524180D93D89A7533941AE47E18ED24C5241C01726E3A653394176BE9FAAD24C5241D83D79D8A6533941081B9EAED24C5241DC8AFDD5A6533941DE0209AED24C5241E43FA4FF845339417C3F35CADB4C5241E4F21F0285533941A857CACADB4C52411CC05BF084533941D8A370D1DB4C524104A392EA84533941388941D0DB4C524170AC8B1B7D533941BC270F33DE4C524140575B217D5339415A423E34DE4C524114FBCBCE7C533941782D2153DE4C5241C486A7C77C533941E2361A5CDE4C52412C6519C27C533941E63FA45BDE4C52416C9A77FC775339411A51DAEFE14C5241BC490C0278533941164850F0E14C5241141DC9F57753394134A2B4FFE14C5241C4F528EC77533941ECC039FFE14C52413C4ED15175533941780B2440E54C52414803785B755339412E90A040E54C52416C09F950755339413C4ED14DE54C52416CE7FB49755339417A58A84DE54C5241CCCCCCFC73533941AE69DEE1E84C5241CCEEC90374533941705F07E2E84C5241A067B3FA73533941228E75EDE84C524140CF661574533941B8AF030FE94C524110363C0D7453394198DD930FE94C5241B47BF2B079533941B6847C28EE4C52419CA223B979533941D656EC27EE4C524140CF66C5795339411AE25837EE4C5241388941207A533941F46C5659EE4C52411851DA1B7A533941168C4A5AEE4C524104560EFD87533941A01A2F59F24C5241F063CC3D8953394104560EA1F64C5241CCEEC94389533941B27BF2A0F64C5241708A8E4489533941FCCBEEA1F64C52419C081B3E8953394196900FA2F64C524138234A8B8A53394186C954A5FA4C524110A5BD918A5339417C6132A5FA4C524198BB96B08A533941DACEF7CBFA4C52417C832FEC8A5339415CFE43E2FA4C52412C211FE48A533941C286A7E3FA4C52415C20419193533941AA13D008FE4C5241F0F44A9993533941448B6C07FE4C5241F0C9C3C2935339412063EE16FE4C524144696FC093533941B6A67917FE4C52413C9B553F99533941F48E5390FF4C5241283A92DB985339414E840D83014D524114F2418F9753394176029A30054D5241784F1E9697533941CA54C130054D52418451498D975339411A51DA3B054D5241C8E53FB49753394162A1D66C054D5241A44E402398533941D2915C96054D5241C05B20419853394188855A9B054D52413CDF4F3D98533941B20C719C054D5241148C4A5AA1533941BE0E9C97074D524110583944A0533941AED85F0A094D524154302A899E533941006F81180B4D5241F0C9C3929E53394100DE02190B4D524180B740929E5339419C11A5190B4D52412C90A0889E53394178E926190B4D52410CE02D109B5339418EE4F2530F4D52416007CE199B533941B20C71540F4D5241A401BC059B533941569FAB6D0F4D5241780B24089B5339415839B4700F4D5241F853E3059B5339413480B7700F4D52419C779C729B533941D40968E6134D52417CAEB6D298533941AA6054AE154D5241B415FB5B8F53394172F90FD1164D52414CC807ED83533941E4F21F1A164D5241F80FE98766533941780B2428144D5241F87E6A2C285339415EDC466B0E4D5241107A362BF6523941A0F83176094D5241BCC117A6DA5239410AF9A0C3034D524194A982A1DA52394100DE02C5034D524124B9FC97DA523941448B6CC3034D5241BCE3149DDA523941CEAACFC1034D524130E6AEF5C75239418638D611004D524198BB96F0C7523941FC187313004D5241E0BE0E7CC7523941B615FBFFFF4C5241D019516AC7523941BE9F1AFFFF4C52419075716BC7523941F44A59FEFF4C5241DC4603889552394192CB7F54FB4C52411CEBE28695523941EE7C3F55FB4C5241780B247895523941DCB58454FB4C5241443EE87995523941C8073D53FB4C5241CC32C491825239415AF5B9B6F94C52419487857A6D523941FAA067B3F64C524114143F766D523941A60A46B5F64C524144696F406D523941F01648ACF64C5241401361136D5239414CA60AAAF64C5241B4EA73156D523941D24D62A8F64C524100BC05323B5239416619E2C0F24C524190E4F22F3B523941DE718AC2F24C524130FF21BD3A523941865AD3BCF24C5241B8DA8ABD3A523941F6285CBBF24C5241E43FA45F1C52394128A08930F24C5241A0D6345F1C52394126750232F24C5241A05E293B1C523941A2B43730F24C524144FAED1B1C523941CA32C431F24C5241E4C7981B1C523941FEF67530F24C524108F016F8F85139415EDC46BBF24C5241B09465F8F851394198BB96BCF24C5241E8B7AF53F851394182E2C7C4F24C52413C2CD42AF8513941506B9ACBF24C5241448B6C27F8513941482EFFC9F24C52412CD49A56EA513941EC2FBB9FF44C5241B8D100AED15139418C6CE753F74C524114FBCBAED15139411AC05B54F74C5241F897DD83D151394126C2865BF74C524110E9B77FD1513941A089B059F74C5241FC5C6D85C751394176BE9FC2F84C5241E00B9389C7513941FEF675C4F84C524160545217C751394172AC8BD7F84C52418004C5FFC65139411AC05BE0F84C52411483C0FAC6513941A8C64BDFF84C52417CA52C93B1513941F0A7C62FFF4C5241D088D20EA1513941302AA917014D524160325510A151394148E17A18014D5241F063CC0DA1513941B003E718014D5241984C150CA1513941B615FB17014D524130772DB194513941E461A18A024D5241B003E72C9551394182E2C790024D52416CC5FED295513941BAFC87AC024D5241482EFF419651394128ED0DD6024D524190C2F56896513941703D0A07034D5241482EFF4196513941B88D0638034D52416CC5FED295513941287E8C61034D5241B003E72C9551394160984C7D034D52417C1D38F794513941DACEF77F034D52418CB96BF9945139418638D681034D524124E4833E93513941D40968A2034D5241A0CDAA3F93513941BE3099A2034D5241C00E9C0394513941D0D556AC034D524128C286C794513941BE3099A2034D524158EC2FDB94513941F2B0509F034D5241B003E7DC94513941EC9E3CA0034D52413CDF4FBDA25139412041F1FF014D52419CE61DA7B35139413E79580C004D5241083D9BA5B351394126C2860B004D5241C030993AB45139415405A3F2FF4C5241580E2D52B4513941AAF1D2E9FF4C52410C022B57B4513941AE47E1EAFF4C5241F875E0CCC9513941A4703D96F94C5241DC240661D3513941C876BE3BF84C5241244A7B03EC5139415A423E88F54C5241C420B002EC513941CCEEC987F54C52415405A322EC513941D8817382F54C52414CA60A26EC5139414E621084F54C5241F853E3A5F9513941BCE314B9F34C5241A0ABAD381C52394192CB7F30F34C524174F90F393A5239419C11A5B9F34C5241081B9EAE6B52394104E78C98F74C5241C46D34C0805239412ACB109BFA4C524148E17AC4805239417C613299FA4C5241148C4AFA80523941325530A2FA4C5241CC10C71A81523941A835CDA3FA4C524100DE021981523941BCE314A5FA4C5241B09465289452394144D8F044FC4C5241E00B93B9C552394150FC18E7004D524120166A1DD8523941C8BAB889044D524194438BDCF35239415EBA49480A4D5241C05B20E1F352394166D5E7460A4D524130BB275FF45239416A2BF65B0A4D5241D478E966F45239413E79585C0A4D5241ACD85F66F45239417CF2B05C0A4D5241AC8BDBB8265339418638D6590F4D5241D42B65B92653394148BF7D590F4D5241DC8AFDC526533941764F1E5A0F4D5241806ABCC426533941B437F85A0F4D5241CCCCCC3C65533941B4C8761A154D524128ED0D3E65533941083D9B19154D5241F875E06C65533941B29DEF1B154D524178BE9F6A65533941E27A141E154D5241B0506BEA825339411895D411174D5241E895B2EC82533941EAB7AF0F174D5241DCD781F382533941B88D0610174D52415C2041F182533941CAA14512174D5241F441CF168F53394152499DD4174D524174F90F198F533941AED85FD2174D52416CC5FE928F533941B20C71D8174D52418C06F0569053394132C4B1CE174D5241 - - - - 010300000007000000020300000AD7A330314D39418FC2F518DC4B52410AD7A3B0444D39418FC2F5B8E34B52410AD7A3306B4D39418FC2F598DE4B52410AD7A3B0794D39418FC2F5F8DC4B52410AD7A3B08E4D39418FC2F5B8DB4B52410AD7A3B0A34D39418FC2F5F8D94B52410AD7A330B24D39418FC2F558DA4B52410AD7A3B0C34D39418FC2F518DB4B52410AD7A3B0D24D39418FC2F578DA4B52410AD7A3B0E54D39418FC2F558D84B52410AD7A3B0F34D39418FC2F5F8D64B52410AD7A330044E39418FC2F5F8D34B52410AD7A330134E39418FC2F5F8D14B52410AD7A330334E39418FC2F598D04B52410AD7A3304D4E39418FC2F578CD4B52410AD7A3B05D4E39418FC2F558CA4B52410AD7A3306E4E39418FC2F518C84B52410AD7A330844E39418FC2F578C54B52410AD7A3309C4E39418FC2F5B8C24B52410AD7A330C74E39418FC2F5D8BB4B52410AD7A3B0DE4E39418FC2F578B74B52410AD7A3B0F04E39418FC2F598B34B52410AD7A330FF4E39418FC2F518B14B52410AD7A3B0154F39418FC2F558AD4B52410AD7A3B01F4F39418FC2F5F8AB4B52410AD7A3B0374F39418FC2F5B8A84B52410AD7A3B04F4F39418FC2F5B8A64B52410AD7A3B0774F39418FC2F578A44B52410AD7A3B0AA4F39418FC2F5F8A34B52410AD7A3B0C54F39418FC2F558A24B52410AD7A330DD4F39418FC2F5389C4B52410AD7A330055039418FC2F5188F4B52410AD7A3B00D5039418FC2F5F88B4B52410AD7A3B02B5039418FC2F578844B52410AD7A3B03A5039418FC2F558824B5241FDACC76E5E503941F86F7DA27F4B5241B43441705E5039411B0B79A27F4B524140A4DF6E5E503941DE718AA27F4B524140A4DF6E48503941DE718AE2814B5241D088D26E5E503941948785A27F4B52410CD7A3B03A50394190C2F558824B52410CD7A3B02B50394190C2F578844B52410CD7A3B00D50394190C2F5F88B4B52410CD7A3300550394190C2F5188F4B52410CD7A330DD4F394190C2F5389C4B52410CD7A3B0C54F394190C2F558A24B52410CD7A3B0AA4F394190C2F5F8A34B52410CD7A3B0774F394190C2F578A44B52410CD7A3B04F4F394190C2F5B8A64B52410CD7A3B0374F394190C2F5B8A84B52410CD7A3B01F4F394190C2F5F8AB4B52410CD7A3B0154F394190C2F558AD4B52410CD7A330FF4E394190C2F518B14B52410CD7A3B0F04E394190C2F598B34B52410CD7A3B0DE4E394190C2F578B74B52410CD7A330C74E394190C2F5D8BB4B52410CD7A3309C4E394190C2F5B8C24B52410CD7A330844E394190C2F578C54B52410CD7A3306E4E394190C2F518C84B52410CD7A3B05D4E394190C2F558CA4B52410CD7A3304D4E394190C2F578CD4B52410CD7A330334E394190C2F598D04B52410CD7A330134E394190C2F5F8D14B52410CD7A330044E394190C2F5F8D34B52410CD7A3B0F34D394190C2F5F8D64B52410CD7A3B0E54D394190C2F558D84B52410CD7A3B0D24D394190C2F578DA4B52410CD7A3B0C34D394190C2F518DB4B52410CD7A330B24D394190C2F558DA4B52410CD7A3B0A34D394190C2F5F8D94B5241E4F21FE2354E39419C559F87AD4C5241ACD85F063B4E39418EE4F25BAA4C52419CA22399334E394164AA60F0AE4C5241E461A126234E3941C039238AB64C5241ACFA5C2D234E3941DEE00B8BB64C5241D456EC0F234E394128ED0D96B64C524190C2F5E8224E3941703D0AC7B64C5241D456EC0F234E3941B88D06F8B64C5241B0BFEC7E234E3941287E8C21B74C524170810425244E394160984C3DB74C524190C2F5E8244E3941703D0A47B74C5241B003E7AC254E394160984C3DB74C52416CC5FE52264E3941287E8C21B74C5241708A8EA4264E3941029A0803B74C524138234AAB264E39412041F103B74C524138234A2B374E39412041F163AF4C52416C09F9904A4E3941F0F44AF1994D524144696FF0774E394192CB7F509A4D524198FF906E774E3941545227689C4D5241C442ADF96F4E39416C09F998A64D5241B003E70C704E3941D022DB99A64D524190C2F5E86F4E3941703D0AC7A64D5241D478E936704E3941923A0129A74D5241D4BCE314714E3941E0BE0E7CA74D524108CE1961724E3941E04F8DB3A74D524190C2F5E8734E3941703D0AC7A74D524118B7D170754E3941E04F8DB3A74D52414CC807BD764E3941E0BE0E7CA74D5241480C029B774E3941923A0129A74D5241708104C5774E3941105839F4A64D52415C423ED8774E394176711BF5A64D52415C423E587F4E394176711BB59C4D5241708104457F4E3941105839B49C4D5241143FC65C7F4E394140355E969C4D5241E45817677F4E3941022B87969C4D5241E4581767804E3941022B8776984D5241143FC65C804E394140355E76984D524128ED0D5E804E394110C7BA74984D5241B4A67967804E3941AC8BDB74984D524144D8F054814E3941DE718A2A944D524194A982D18B4E39412C431C0F914D5241B003E76C934E39413CDF4F25924D5241B4EA7375934E3941E00B9321924D5241884160C5934E3941441CEB2E924D52418C8EE4C2934E3941F0164830924D52418C8EE4C2A84E3941F0164890944D5241884160C5A84E3941441CEB8E944D524108CE19E1A84E3941E04F8D93944D5241F0D24D02A94E3941EA043495944D52410CE02D00A94E394176BE9F96944D524104E78C78D34E3941423EE895984D52416C09F970E64E3941E88C28759A4D5241580E2D72E64E39411E3867749A4D5241085F987CE74E39410CB5A6819A4D524168D5E77AE74E394196218E859A4D524168D5E7FAF94E394196218E059B4D5241085F98FCF94E39410CB5A6019B4D524190C2F568FA4E3941703D0A079B4D5241E8D9ACBAFB4E394112143FF69A4D524138D6C5BDFB4E394120B072F89A4D524138D6C5BD0C4F394120B07278994D5241E8D9ACBA0C4F394112143F76994D524118B7D1F00C4F3941E04F8D73994D524164EE5A520D4F394182954363994D52415CFE435A0D4F3941CE88D266994D52415CFE435A1F4F3941CE88D2E6964D524164EE5A521F4F3941829543E3964D52414CC8073D204F3941E0BE0EBC964D5241B88D06102C4F3941F2B050C7934D5241F8C2647A464F3941705F079E914D5241C4F528CC994F394154C1A8E08C4D52414082E2C7994F3941FC87F4DB8C4D524118B7D1709A4F3941E04F8DD38C4D5241D4DEE09B9A4F39411AC05BCC8C4D5241A0CDAA9F9A4F394164EE5ACE8C4D5241A0CDAA9FD44F394164EE5AEE854D5241D4DEE09BD44F39411AC05BEC854D52412497FF30D54F3941FC1873D3854D5241C4F5283CD54F394188855AD7854D5241D0F753B3E94F3941CCEEC92F824D5241D4096812055039410000001C804D52419C081B0E05503941FEF67518804D524118B7D17005503941E04F8D13804D5241283A929B05503941FA7E6A0C804D5241840D4F9F055039416666660E804D524190C2F5E82150394162A1D6B47C4D524190E4F2AF4F5039412E6EA3D9784D5241D0D556AC4F503941D8F0F4D6784D524118B7D1F04F503941E04F8DD3784D5241907571BB50503941EA73B5B1784D5241042B87C6505039416C787AB5784D5241042B8746675039416C787A95744D52419075713B67503941EA73B591744D52414CC807BD67503941E0BE0E7C744D5241E43FA4CF6750394108CE1975744D5241905CFED36750394152962176744D5241905CFE536F50394152962176724D5241E43FA44F6F50394108CE1975724D5241480C021B70503941923A0129724D5241240681357050394134A2B407724D5241BCB88D467050394162A1D608724D5241DCD781C37C503941C6FEB24B664D5241C46D34C0845039414C158C6E5F4D5241B47BF2B084503941D8A3706D5F4D5241448B6CC7845039410EBE30515F4D524168DE71DA84503941482EFF515F4D524168DE71DA88503941482EFF71594D5241448B6CC7885039410EBE3071594D524190C2F5E888503941703D0A47594D524178BE9FDA8850394100DE0235594D5241F44A59E688503941CCCCCC34594D5241F44A596687503941CCCCCCF4534D524178BE9F5A8750394100DE02F5534D5241480C021B875039414E4013A5534D5241C030999A865039414CC80775534D5241ECE236AA86503941A4703D72534D5241ECE2362A7F503941A4703DD2504D5241C030991A7F5039414CC807D5504D5241CC7F48EF7E50394118B7D1C4504D52412CB29DBF845039410EBE30854C4D524194D409B88450394128A089844C4D5241ECC039C384503941462575764C4D5241A8A44ED084503941840D4F774C4D524150FC18C38E503941DC4603E4424D52417CAEB6029250394150FC18EB404D5241587DAE36A0503941DE0209A23C4D5241708104B5AA50394170CE8882394D524158A835ADAA503941D4BCE380394D52414CA60AE6AA5039410AF9A06B394D5241F0D24DF2AA5039417268916D394D5241648863BDB65039414A9D80C2344D5241B8F3FD74C5503941FAA06753314D52415817B771C5503941022B8752314D5241DC460388C5503941849ECD4E314D524194438B9CC55039410A8A1F47314D5241A4923AA1C5503941EA263148314D524130DD2456CF503941D044D89C2E4D52416C09F9D0E1503941B6F3FDD02B4D524190C2F5A8F950394150AF9415294D5241ACCFD5A6F950394168226C14294D5241DC460388FA503941849ECDEE284D5241DCD781E3FA5039414ED191CC284D5241F41FD2EFFA503941DE718ACE284D5241F41FD2EF02513941DE718AAE254D5241DCD781E3025139414ED191AC254D5241684469FF02513941529621A2254D524188B0E109035139412A3A92A3254D52416029CBF00D513941907EFBAE204D524110A5BD5119513941D8A370D91C4D5241E461A14619513941401361D71C4D5241E4A59B641951394130992ACC1C4D52414060E57019513941764F1ECE1C4D5241DCD7819323513941F241CFD2184D5241840D4FAF2E513941B4C87616174D5241806ABCD43D513941CA32C4DD154D5241CC32C4D13D513941D85F76DB154D524140A4DF0E3E51394168226CD8154D524180FB3A303E513941F6B9DAD2154D5241C01726333E51394142F163D4154D5241C01726335351394142F16354134D524180FB3A3053513941F6B9DA52134D5241DC46030854513941849ECD2E134D5241F4FDD4385451394196438B1C134D52411C7C614254513941FC3A701E134D52411C7C61C261513941FC3A70DE0E4D5241CC3B4E71545139410C71AC0F134D524124B9FCF76A51394152B81E590E4D5241CCA145169151394116FBCB52094D524168226CC8E75139418A416041044D5241BC0512C4E7513941A223B93C044D5241345530CAE751394168226C3C044D5241081B9ECEE751394100DE0241044D5241C09F1A2F415239416CE7FBE1FE4C524100DE025976523941FEB27B8A014D5241B4847C30AB52394162A1D69C054D524194B20C91BB5239414872F907084D5241B88D0600C252394136AB3E97094D52418C1F63BED5523941B29DEFEB0F4D5241549FAB1DE05239410E4FAF7C134D52416891ED2CE0523941B0E1E979134D5241A401BC85E0523941E6D0229B134D5241504013F1E052394172F90FAD134D5241042B87E6E0523941FEF675B0134D5241A49BC440F25239410A46250D174D5241F4B0504BF25239418048BF09174D52417C832F2CF3523941840D4F2F174D5241809543CBF3523941ECC03937174D5241645DDCC6F35239413E0AD73B174D52411C5A641B0F533941CC5D4BDC184D52418004C51F0F5339417A14AED7184D5241BC7493081053394112F241E3184D524100B37B82105339417C6132DD184D5241B8FC8784105339418A4160E1184D52416C2BF6A720533941D6E76A63184D5241A4B437C81F533941ECE2365E184D5241C84B37C91F533941E04F8D5B184D5241444772E91E53394168226C50184D5241A8A44EF01D533941849ECD26184D52411895D4491D533941DCB584E8174D5241F4285C0F1D533941703D0A9F174D52411895D4491D53394104C58F55174D5241A8A44EF01D5339415EDC4617174D5241444772E91E5339417A58A8ED164D524140A4DFFE1F53394188F4DBDF164D5241F4285C0F20533941703D0ADF164D52412406815520533941022B87E2164D5241489D805620533941F697DDDF164D5241489D80D635533941F697DD5F174D5241240681D535533941022B8762174D52411826533536533941A8C64B67174D52414C59863836533941A6BDC163174D5241B8F3FDE454533941703D0A1F194D5241F4285C8F6F533941703D0A1F194D52416C567D1E705339410C242826194D5241CC3B4E2170533941DE718A22194D5241CC3B4E218F533941DE718AA21A4D52416C567D1E8F5339410C2428A61A4D5241A80A46B58F5339417A58A8AD1A4D5241E4C7980B905339412AA913BC1A4D5241AC605412905339417C6132B91A4D5241CCEEC9B3B3533941684469EB1F4D5241B88D0610C5533941C4D32B01214D5241B8AF0357D453394196900F5A214D5241CCA145A6D953394130DD24BA204D52414C6210A8D953394150FC18BB204D5241D0D556BCD953394134A2B4B7204D5241F0164880DA53394122FDF6AD204D52410044FA3DDB5339418AFD65B7204D5241FC3A703EDB5339419AE61DB7204D5241587DAE46DF53394186A7571E214D5241BC96908FE3533941CAC34215204D524114AE4791E3533941EA73B515204D524130FF217DE453394136CD3BEE1F4D5241986E122303543941FE43FAB91C4D52418841602503543941569FABB91C4D5241F4B0502B035439418A4160B91C4D52417C1D384703543941C6DCB5B41C4D5241A8C64B870354394170F085B11C4D5241C8E53F8403543941E6D022AF1C4D524174E09CC114543941BC0512501B4D5241F4B9DA4A1D54394144FAED4B194D52419CC420901D5439411AC05B40194D524110C7BA881D54394128ED0D3E194D524104C58FB131543941865AD330154D5241388941604154394144696F90114D5241287E8C294F5439414E6210A00D4D5241ACADD82F4F543941D8A370A10D4D52416C9A774C4F543941C898BB960D4D5241B09465884F543941A223B98C0D4D52414C3789814F543941304CA68A0D4D524104098AEF5C5439416C567DC20A4D524110C7BAE86B5439410EE02DA8034D524130772D016F54394194658803FF4C5241F4285C0F6F5439412E211F04FF4C524130772D316F543941E4839ED9FE4C5241A8F1D2AD6F543941907EFBAAFE4C5241A80A46A56F54394134EF38A9FE4C5241043411C67854394102BC05E2FB4C5241081B9ECE785439415E4BC8E3FB4C5241D83D79F8785439419CC420D4FB4C524140E8D9CC79543941E61DA7B0FB4C52415427A0C9795439410022FDAEFB4C52412831084C855439411C5A644BFA4C524114F2414F8554394104560E4DFA4C52414CEA047485543941D478E946FA4C5241FCCBEE9986543941CC5D4B38FA4C52414C158CAA8654394152B81E39FA4C524178BE9FAA86543941D0D55638FA4C5241341136EC9854394112A5BD51FA4C5241086822EC9854394194878552FA4C5241FC65F78499543941764F1E5AFA4C5241A4B43788995439419A779C56FA4C524110583954B3543941BE0E9CD3FB4C52416C09F950B35439410A8A1FD7FB4C524120166ACDB35439413CDF4FDDFB4C5241744694C6B45439412063EE06FC4C52412063EE5AB5543941FC3A703EFC4C5241E4361A60B5543941F4DBD73DFC4C524180FB3AB0BF543941FC1873CB014D524194A98241C7543941325530C6054D52411CA7E8F8C9543941643BDF33074D5241F0F44A69D4543941DCB584B0044D52418CFD6567D4543941B88D06B0044D5241789CA273D4543941FE43FAAD044D5241C039231AD5543941585BB16F044D5241982A1845D5543941C442AD39044D524170128350D554394190A0F839044D524170CE8872DA5439418E976ED2F74C5241287E8C49EC543941CAE53FD0F04C524110363C3DEC543941842F4CCEF04C52412085EB71EC543941E2E995BAF04C5241D066D577EC543941CC7F48BBF04C5241A8E8488EFF54394112363CA5E64C5241B0946588FF54394128A089A4E64C5241244A7B93FF543941D24D62A0E64C5241BCB88D96FF543941A223B9A0E64C5241E4A59BD40755394140A4DFF6E14C52414C3789D10755394170CE88F6E14C52410C71ACDB07553941A4DFBEF2E14C5241784F1E1608553941A60A46A9E14C5241784F1E16085539419AE61DFBD74C52413CBD52A624553941DC680017B74C5241DC460398245539415A863816B74C524118D9CEB7245539415CFE43EEB64C5241E4839EAD24553941464772E1B64C5241043411B62455394160984CE1B64C524198FF90CE205539417CF2B074A84C5241784F1EC62055394162A1D674A84C52414CEA04A4205539416CE7FB49A84C5241D0915CAE205539410EBE3049A84C5241AC6054921455394120F46C729E4C524198218E9507553941441CEB828F4C524138AB3E8707553941C6FEB2838F4C5241C0EC9E6C0755394136CD3B628F4C5241D46F5F57075539413845475A8F4C5241C8C3425D0755394150AF94598F4C5241840D4F5FF0543941DC460334834C5241D42B6559F05439413480B734834C52412C651942F0543941925CFE2B834C5241EC9E3C4CF0543941081B9E2A834C5241B09465F8CE543941E4141DCD734C524154E3A5EBC55439412CD49A4E6E4C5241A05E29EBC55439415A86384E6E4C52414C378971C5543941C6DCB5206E4C52414C158C7AC55439411CEBE21E6E4C52414C3789F1B6543941EEEBC0A1694C524158863846AE543941E8FBA931654C5241085F98DCAD543941C03923BA5F4C5241F4DBD711B2543941B4C876265C4C52412CD49A06B25439412E6EA3255C4C524194B20C31B25439415EBA49F05B4C5241287E8C09B254394176BE9FBE5B4C5241DC8AFD15B254394138D6C5BD5B4C5241F4FDD4C8B0543941F6065F8C5A4C524188635DBCB0543941C64B378D5A4C52418CB96BA9B05439411E166A755A4C524144AD693EB05439411C9E5E4D5A4C5241C84B3749B05439413E9B554B5A4C52417858A8759A543941CA32C40D534C52414060E5709E543941840D4F174B4C5241D000DEA298543941B6A6799B4A4C5241941804A68E543941666666C6494C52412C90A0F89E543941081B9E224B4C524130DD2446AE543941D24D62A44E4C524184E2C748AE5439419ECDAAA34E4C5241A8C64BB7AE543941E4F21FB64E4C5241A03C2CB4AE5439410AF9A0B74E4C524150FC1843C55439415C2041A5514C524158863846C5543941361AC0A3514C524174B5156BC5543941B0E1E9A9514C52416007CE89C55439418E7571AB514C5241C07D1D88C5543941C264AAAC514C524140575BB1DE5439412041F1D7534C5241E0E00BB3DE543941EC51B8D6534C5241F0384527DF54394192CB7FDC534C5241BCB88D26DF543941AA6054DE534C5241ACADD8EFF05439416688634D544C5241E02D90F0F05439414EF38E4B544C52411CEBE206F1543941C264AA4C544C52419CEFA706F15439413C4ED14D544C5241905374F4F85439414A598668544C5241D409685201553941DCB58434554C524140CF66250D553941F44A597A584C524110C7BA280D5539419A999979584C5241605452370D553941BC270F7F584C524198DD93770D553941F263CC89584C5241BC490C720D5539410C71AC8B584C5241D812F2311C55394138D6C5415B4C5241B4A679371C5539411EC9E53F5B4C5241F46C569D1C5539411EA7E8505B4C5241CCCCCCDC1C5539414E6210545B4C52414C158CDA1C553941C03923565B4C52411C5A642B2B5539414AEA04505C4C52419C11A52D2B5539416A6FF04D5C4C5241F4B0508B2B553941BE3099525C4C52413C2CD48A2B553941E6AE25545C4C5241941804763C5539418E7571A75C4C5241489D80763C553941F853E3A55C4C52418451499D3C553941F21FD2A75C4C5241A4923A613D55394174D7129E5C4C5241605452073E553941AA6054825C4C5241842F4C763E553941CCCCCC585C4C52418451499D3E553941F21FD2275C4C5241842F4C763E553941AACFD5F65B4C5241605452073E553941CE3B4ECD5B4C5241A4923A613D55394104C58FB15B4C5241BC0512C43C5539418048BFA95B4C5241708A8EC43C55394158CA32A85B4C524188B0E1092C5539418638D6555B4C52413C0AD7431E553941FA5C6D655A4C5241DCF97EFA0F55394152B81EC5574C5241A4BDC1F70355394174D71272544C5241D8C56DF403553941CE88D272544C52418838D6E5035539413E575B6D544C524110E9B73F0355394176E09C51544C524108CE1931035539416619E250544C524174D712320355394138894150544C5241F853E315FA54394130DD2472534C524144D8F014FA5439415C6DC572534C5241148C4A7AF954394174B5156B534C52419487857AF9543941FCCBEE69534C52414082E247F1543941CE19514E534C5241BCC117C6DF543941923A01E1524C524170F085F9C6543941C8BAB8BD504C524130992AC8B05439417EFB3ADC4D4C5241984C155CA1543941D85F76534A4C52418CB96B59A15439417C832F544A4C52414CA60AC6A0543941BC96903B4A4C52419C8026A2A0543941A679C7394A4C52414CEA04A4A0543941D24D62384A4C5241AEAFC51E9E543941E8329D024A4C52413C7958589F54394152B81EB9454C524104098A4F9F543941FE65F7B8454C5241148C4A5A9F5439418E7571AB454C5241F0D24D429F54394114AE478D454C5241D44D62509F543941C6DCB58C454C5241A01A2F8D9A54394176711B353E4C5241C09F1A7F9A543941C442AD353E4C5241043411769A543941F44A592A3E4C5241105839849A543941287E8C293E4C5241686FF0F594543941D200DE02384C5241FC87F43B8C543941029A084B2E4C52411895D47987543941B6847CA4284C5241D4E76A6B87543941EE7C3FA5284C5241A879C759875439412ACB108F284C5241306EA361875439416666668E284C5241000000B07F54394184C0CAE1224C5241D4DEE0AB825439413E0AD77F1E4C5241D022DB298954394174B515DF1A4C5241D0D5560CA0543941B003E730124C5241B88D0600A054394140A4DF2E124C52410CD7A350A05439413480B710124C5241CC32C471A0543941986E12E7114C5241701B0D80A05439417A14AEE7114C5241306EA3E1A2543941567DAE6E0E4C5241401361D3A254394174D7126E0E4C5241E895B2ECA2543941A4703D4E0E4C524188A757EAA2543941A8C64B4B0E4C5241085F98ECA25439413A234A4B0E4C52410022FD86A25439415EBA49D8074C524138F8C284A2543941CC5D4BD8074C52412CD49A76A2543941B84082C6074C524148257582A2543941C4B12EC6074C5241AC8BDB289C543941E8482E63F94B5241943A011D9C543941DCD78163F94B52418451490D9C5439418204C54FF94B524170AC8B1B9C5439410022FD4EF94B52418C976EC297543941501E165EF44B5241AC8BDB3894543941BAB88DF6EE4B5241F853E34592543941029A086FE84B52415405A3129C543941645DDC8ED84B5241D49AE68DA554394190C2F5B8D34B52417C613245AC54394126530523D24B524184C95461B35439414C158C8ED04B524160BA495CB35439412EFF218DD04B52419C802682B3543941849ECD86D04B5241ECC03913B4543941BAFC8750D04B524154302A19B454394112363C51D04B5241283A92ABB75439415405A36ECE4B5241083D9BA5B7543941FCCBEE6DCE4B5241049A08BBB7543941B0E1E965CE4B5241C8293AD2B754394138F8C248CE4B524190E4F2DFB75439412CF69749CE4B5241D8CEF7D3BD543941A857CA22C84B5241588638C6BD543941B459F521C84B52413C7958E8BD543941986E12F7C74B5241FCD478E9BD543941986E12F7C74B524114FBCB4EBE5439411EA7E8B4BA4B5241482EFF11C154394166F7E431B44B524120F46C06C1543941BE529631B44B5241842F4C16C15439412E6EA31DB44B52414CF38EF3C0543941482EFFF1B34B5241B0726801C1543941C4D32BF1B34B5241ECEBC009BF543941F48E53E0B14B524180FB3A60B2543941D022DBF5A04B524100917E6BAE543941501E16C6964B524128A08960AE54394164EE5AC6964B52419C33A244AE5439413A234AA3964B52411CC9E54FAE543941B4C876A2964B5241B025E463A4543941460378338E4B5241E81DA758A4543941CC5D4B348E4B52412C90A048A454394130992A208E4B5241CCEEC9E3A3543941FC3A70FA8D4B5241E8482EEFA35439411AC05BF88D4B524138F8C2649C543941FC87F4638B4B5241D42B65599C543941DE0209668B4B5241E0E00B239C5439417CD0B3518B4B5241A401BC259C54394172F90F518B4B52412C87160986543941BEC1177E854B524188855A836F543941903177157E4B52415839B4786F54394192ED7C177E4B524130992A486F543941182653057E4B524140355E4A6F5439415E29CB047E4B5241E00B932966543941C68F31A37B4B5241D46F5F27665439417E8CB9A37B4B52410C24281E66543941827346A07B4B5241B8F3FD24655439419EEFA7767B4B5241C09F1AFF6354394196D409687B4B5241DC1B7CB15754394196D409687B4B5241D49AE69D57543941708104697B4B5241F063CC9D57543941E2361A687B4B5241F8A0672348543941240681817B4B5241DCD781234854394142AD69827B4B5241EC04341147543941E0BE0E907B4B5241A813D0F4465439415E29CB947B4B5241F0D24DF2465439416ABC74937B4B5241ECEBC039425439418E5374207C4B5241A01A2F3D3B54394134A2B45B7B4B524104A392FA3A5439413E9B551F7A4B5241480378CB3D54394188635DA0784B5241A045B6834254394174469476764B52418CB96B794254394132772D75764B5241703D0AA742543941C07D1D64764B52412C8716D9425439410EBE3025764B5241A8A44EE042543941F0F44A25764B5241B0E1E9454354394106F0165C744B524134C4B13E43543941925CFE5B744B5241E458174743543941D8A37051744B524198BB96204354394104560E21744B524120166A2D43543941C66D3420744B52419CE61D273E543941C07D1D646F4B5241701B0D10405439419EEFA7F2694B5241E895B23C445439412A1895A0664B5241B8F3FDC452543941DE938725604B5241C03923BA525439416EA30124604B5241C0EC9EEC52543941E4141D11604B5241E458172753543941E63FA4C75F4B52410868221C535439411C0DE0B95F4B5241E09C1125535439415817B7B95F4B5241182024C8525439411E143C7A5E4B52418838D6F56B5439414CC807655E4B5241CCAACFF56B543941C6DCB5645E4B52417C1D38776C543941CAA1455E5E4B5241FCD478796C543941F01648605E4B5241E81DA718835439418AB0E1C95C4B52416866661683543941643BDFC75C4B5241C8293A52835439414260E5C45C4B5241F016488083543941EA0434BD5C4B5241BC051284835439412063EEBE5C4B524140E8D98C98543941AA6054DE594B52412C87168998543941E4A59BDC594B5241C05B20019954394104E78CC8594B5241482EFF1199543941A4703DC2594B52415C8FC21599543941061214C3594B524190C2F5C8A5543941A0ABAD30564B52417C6132C5A55439413E0AD72F564B5241247502DAA5543941E0BE0E28564B52412497FFE0A5543941D42B6529564B52419C779C32B054394184C0CAC9524B5241E4C7982BB05439418E5374C8524B52418C4AEA74B0543941DE2406AD524B524130E6AE75B05439414E6210AC524B5241ACD85F76B05439410A6822AC524B5241F8C2646AB6543941623255004F4B5241C442AD69B6543941A62C43004F4B5241E0BE0E6CB6543941825149FD4E4B52415C6DC56EB6543941BADA8AFD4E4B5241FCA9F1E2BB5439414E840D634B4B52416CBC7453C4543941986E129B484B524138234A4BCF54394186EB5128464B524194D40948CF54394168446927464B5241905CFE53CF543941B0726825464B52418838D655CF543941D49AE625464B524120D26F9FDD543941842F4CC6424B52412CF6979DDD543941CEAACFC5424B5241FCCBEEA9DD543941361AC0C3424B524190C2F5F8DD543941C4B12EA6424B5241B88D0600DE54394130BB27A7424B5241083D9B55E654394146B6F3E13E4B524198FF904EE6543941DAACFAE03E4B524124E4836EE6543941DE2406D53E4B52415CD3BC73E6543941B4C876CE3E4B5241DC460378E65439418816D9CE3E4B5241083D9BD5EA5439418E7571BB3B4B524184C954D1EA5439412ACB10BB3B4B5241549FABEDEA543941FC1873973B4B524164EE5AF2EA5439414A7B83973B4B5241D0915CEEEC5439413CDF4F5D324B5241C442ADE9EC543941EE7C3F5D324B5241C09F1AEFEC543941FC3A7056324B5241C07D1DC8EC543941228E7525324B52419CA22359EC54394144FAEDFB314B5241285305B3EB5439417C832FE0314B5241C09F1AEFEA543941FC3A70D6314B5241A05E292BEA5439417C832FE0314B5241280F0B85E954394144FAEDFB314B524104341116E9543941228E7525324B5241006F81F4E8543941789CA24F324B5241F41FD2EFE85439412A3A924F324B524118D9CEF7E6543941CC7F48773B4B5241DC2406C1E2543941CEF7536F3E4B5241F44A59A6DA5439411C0DE019424B5241FC87F49BCC543941BAB88D6A454B524148E17A84C15439411AC05BE4474B5241A4BDC187C1543941A60A46E5474B5241D85F766FC154394186C954E9474B52415839B448C154394162C3D3F7474B5241BC529641C1543941FEB27BF6474B5241ACD85F86B8543941061214D74A4B5241004D848DB8543941D6C56DD84A4B5241A80A4645B85439416ABC74F34A4B52417A4EAB43B854394159FD76F54A4B5241A150AA44B8543941697C36F44A4B52414B0D4445B8543941C44375F34A4B5241DD478747B85439419C8B9CF24A4B524129CA4AFACB543941E4D53DEE3F4B52415CFD7DC5CC5439414A3CA4903B4B5241F596172FCB5439417E6FD763384B5241C263E44FD4543941B1A20AC42E4B5241F596170FDB543941E4D53DA3254B52415CFD7DD1C654394117097174234B524129CA4A0EC2543941170971E52A4B524129CA4A2AB45439417E6FD75B3C4B52418F30B1D8A95439417E6FD7D43F4B52415CFD7D299B5439417E6FD74B444B52415CFD7D418F543941E4D53DDE474B5241C263E4EB865439417E6FD73B4C4B524129CA4AA2785439414A3CA4E94E4B52418F30B1506E54394117097197514B5241F5961727505439417E6FD7AE524B5241F5961763325439414A3CA4E3514B52418F30B1FC18543941E4D53D4D504B52415CFD7D59045439411709719D4E4B5241C263E41FEE533941B1A20A0D4A4B52418F30B1B0BF53394117097134434B524129CA4A46A8533941170971BF3D4B5241F596179F955339414A3CA4903B4B5241F59617C7815339417E6FD761394B5241F596174344533941E4D53D00374B52415CFD7D092E533941170971CF354B5241C263E4DB11533941B1A20ABA334B5241C263E40BFA523941B1A20ABA334B524129CA4AC6E9523941B1A20A35364B52415CFD7DB5D8523941B1A20AA83C4B52418F30B19CCB5239414A3CA482424B52415CFD7D05B15239411709711E4E4B5241C263E4E38E523941B1A20AF1574B5241C263E4276D523941E4D53DB45C4B52415CFD7D0D2E5239414A3CA43E644B52415CFD7D91EC5139417E6FD701694B5241F596173FC9513941E4D53D966B4B5241F5961787A5513941170971DA6F4B52418F30B13482513941170971CC764B52410AD7A330645139418FC2F5387D4B52410AD7A3B0525139418FC2F5B8814B52410AD7A3B0425139418FC2F5B8844B52410AD7A330325139418FC2F5B8884B52410AD7A3B0275139418FC2F5988A4B52410AD7A330195139418FC2F5188B4B52410AD7A3300E5139418FC2F598894B52410AD7A3B0075139418FC2F578864B52410AD7A3B0035139418FC2F538824B52410AD7A3B0FC5039418FC2F5187E4B52410AD7A330F55039418FC2F5B87C4B52410AD7A330E25039418FC2F5187A4B52410AD7A3B0CB5039418FC2F5F8764B52410AD7A3B0B85039418FC2F558764B52410AD7A3309C5039418FC2F538764B52410AD7A3307F5039418FC2F578764B52410AD7A3306C5039418FC2F538764B52410AD7A3303E5039418FC2F578784B52410AD7A3B02A5039418FC2F5D87A4B52410AD7A3B0145039418FC2F5587E4B52410AD7A3B00B5039418FC2F538814B52410AD7A330FC4F39418FC2F598864B52410AD7A330F04F39418FC2F5388D4B52410AD7A330E24F39418FC2F5B8934B52410AD7A330D54F39418FC2F598974B52410AD7A3B0C24F39418FC2F5589A4B52410AD7A330AA4F39418FC2F5989D4B52410AD7A3B0894F39418FC2F5789F4B52410AD7A3305D4F39418FC2F598A14B52410AD7A3B02D4F39418FC2F5D8A44B52410AD7A330124F39418FC2F518A84B52410AD7A330FC4E39418FC2F578AB4B52410AD7A3B0E24E39418FC2F598AD4B52410AD7A330D84E39418FC2F558B14B52410AD7A3B0C44E39418FC2F538B54B52410AD7A330AB4E39418FC2F578BA4B52410AD7A3B08B4E39418FC2F5B8BE4B52410AD7A3B06A4E39418FC2F518C24B52410AD7A3305B4E39418FC2F578C34B52410AD7A3303F4E39418FC2F518C74B52410AD7A3302F4E39418FC2F558C84B52410AD7A3B0234E39418FC2F578C64B52410AD7A3301B4E39418FC2F5D8C14B52410AD7A330184E39418FC2F518BE4B52410AD7A3B0144E39418FC2F5F8B84B52410AD7A330F74D39418FC2F558B94B52410AD7A3B0FC4D39418FC2F5D8BF4B52410AD7A330F94D39418FC2F598C44B52410AD7A3B0E74D39418FC2F5B8C74B52410AD7A3B0D64D39418FC2F5D8CA4B52410AD7A330BC4D39418FC2F558CC4B52410AD7A3B0A74D39418FC2F518CE4B52410AD7A3308B4D39418FC2F538D04B52410AD7A3B0754D39418FC2F5F8D14B52410AD7A330614D39418FC2F578D54B52410AD7A330484D39418FC2F5F8D84B52410AD7A330314D39418FC2F518DC4B52412F000000C0EC9ECCF7523941226C78366A4C524140A4DFCEF75239415EBA49346A4C52415C4BC857FA523941F8E4614D684C5241905CFE13FC523941EA95B2F0644C524178E92661FD523941986E1203624C5241D4BCE304035339417C613209614C5241DC2406811353394132E6AEF95E4C5241B4A67997265339417E6ABC685F4C52412C1895442F53394116D9CEFF5D4C52418C28EDAD39533941827346C85D4C5241D088D29E405339417AC729EA5C4C5241BC270F5B42533941645DDC6E5E4C5241884160F544533941A223B940614C524198900F2A4A5339416EA3016C634C5241B459F5E958533941029A088B674C524164EE5AC2635339411C9E5E256A4C524134333313725339413E575BFD6B4C52413C9B558F82533941460378DB6C4C524138B4C8D68D5339412041F1A36C4C52419CC42040985339413C4ED19D6D4C5241D812F2C19E5339413433337F724C5241587DAE969C53394198BB9688754C5241F46C562D92533941F697DDB3774C524150FC18D3805339419C559FA7794C5241085F981C75533941E8D9AC167A4C52410C4625D569533941AEB662C3794C5241B459F5E958533941D881735A784C5241DCD781D3455339418E06F04A764C52415817B7F13753394160984C35754C5241E8B7AF5328533941D2DEE0DB754C524110363C3D1553394168446913764C5241ACFA5CAD00533941787AA574754C52414C158CFA0153394134113624704C5241D0B359F5015339410A682224704C524100917EFB0153394142F1631C704C5241C854C1F801533941B27BF218704C5241F4B050FB01533941D634EF18704C5241A42C438C01533941E8FBA9156C4C52417CD0B3890153394132E6AE156C4C52416C787A6501533941780B24E86B4C5241900F7AF6005339419A779CBE6B4C5241DC4603A800533941240681B16B4C5241746891AD00533941244A7BAF6B4C524190ED7C6FF8523941BAB88D466A4C5241B459F569F8523941BC7493486A4C5241F0D24D12F8523941FCCBEE396A4C5241C0EC9ECCF7523941226C78366A4C524128000000E02D907090533941D066D5CB174D524190C2F5489B5339417A36AB7E164D52411CEBE2469B5339412CF6977D164D5241FC5C6DD59B533941A679C765164D5241D8C56D449C5339413889413C164D524120B072489C533941A2D63437164D524160C3D34B9C533941B81E8537164D524134EF38559F5339416EA30128144D52413C4ED1519F533941585BB127144D5241F085C9749F533941A6BDC1FB134D52411C7C61729F533941A223B9F8134D52419C33A2749F533941C6DCB5F8134D52414894F6069F53394178E926790F4D5241E43FA44F9F5339417EFB3A74124D5241C0CAA1C5AB5339417A58A845114D52415CFE435AB8533941AED85F1A0F4D5241CC32C441BC53394192CB7F200E4D52413480B770CB533941DA1B7C29084D5241884160A5D0533941B6627F51064D5241BC96905FE9533941F0F44AE5004D524198FF902EF15339414E401329FF4C5241F4285CDF065439415AF5B966FE4C524100917E5B175439414694F64AFE4C5241D0D556AC25543941AA825135FD4C524128C286973654394122DBF972FC4C524150AF94D53E543941B22E6E13FE4C5241E4D022FB4A543941C8293A4E024D5241B415FB4B5954394106F01620054D524110E9B7EF5E543941506B9A2F074D52413CBD52E65B5439414E6210D0084D524140A4DF9E50543941721B0DA80A4D52413C4ED1914054394192CB7F200E4D524164F7E4D131543941D2915CF2104D52418451493D25543941DEE00B4F144D524144D8F00413543941F4DBD789184D52416C567DEEFF533941E61DA7EC1A4D5241208E7581E8533941621058711C4D524160545267C85339412041F13F1B4D52417CD0B32994533941228E7559174D5241E02D907090533941D066D5CB174D52412100000088416045B9523941244A7B036B4C5241EC51B8AEC3523941F4DBD7ED694C52418048BF7DCB523941FC87F4CB6A4C5241081B9E6ED252394110E9B7E76A4C524120FDF695E05239411804563E684C524170AC8B9BE0523941AE69DE3D684C52410C93A9A2E05239411873D746684C5241E8FBA911E152394188635D70684C524144AD693EE15239413E0AD777684C5241287E8C39E152394162105879684C5241EC73B555EA52394186C954516A4C524104A3925AEA52394162C3D34F6A4C52412041F1D3EA523941E2361A646A4C52410CB5A619EB523941BC9690676A4C5241D46F5F17EB5239418048BF696A4C5241BEB574E2EF52394103D347B96A4C524180B740D2E652394150AF94B96D4C52418CDB6850E052394122DBF9C2704C5241D85F76BFE052394180B740EE724C524134333363E652394170F085F1764C5241DC8AFD75EC52394122FDF6697A4C5241B0B6627FEF523941C8BAB85D7C4C5241DC8AFD75EC5239412497FF887E4C5241CC3B4E41E75239415CB1BF7C804C52410C462525DE5239415CB1BF7C804C524164EE5A12D85239412C431C677F4C5241BC9690FFD152394112363C6D7E4C52414C621018CE5239415EBA49DC7E4C5241B84082F2C1523941666666BA7F4C524174E09C01BB523941E8D9AC167A4C524130992A58BF523941C8293A9E764C524110E9B7DFBB523941780B2410724C524188416045B9523941244A7B036B4C5241200000003C4ED1D11152394152B81E2D494C5241705F078E13523941E4839E45454C5241CC32C43119523941B615FB2F444C52416C348057295239411AC05BF4434C5241C464AAC02F5239417CF2B0DC434C524130992AA833523941D42B6589434C524174F90F993A523941946588B7404C52416C787AD543523941BA6B097D3E4C524170AC8B3B4D5239416891ED083F4C5241C8BAB83D4D523941508D97063F4C52414C7B83AF4D5239413889410C3F4C52418816D91E4E523941EC51B8063F4C52412497FF204E523941E09C11093F4C52416419E22861523941388941F43D4C524194B20CC15C523941D0D556343E4C5241C0172613625239416C9A7720424C5241C017261362523941EC2FBB23464C524150FC187369523941FA7E6A80494C52415839B4386E523941705F07464E4C5241905CFE63705239414C37892D524C52410CB5A6C96D523941C420B052554C5241686FF02568523941D0D55690544C52415C2041F16252394168446927534C5241F80FE98758523941EEEBC0E9534C5241E0718A7E55523941EEEBC0E9534C524188855A93445239418AFD65FF544C524194A982113E5239418AFD65FF544C5241480C025B3252394182514921544C52415C6DC59E3052394198BB969C524C52410C93A922205239415452274C4D4C5241CC32C431195239411E3867584B4C52413C4ED1D11152394152B81E2D494C5241040000008CB96BF9835139418638D6C1044D52418CB96BF9945139418638D681034D524124E4833E93513941D40968A2034D52418CB96BF9835139418638D6C1044D524104000000A8C64B27735139419A081BA62C4C52412497FF109E5139419CA223852E4C5241D0B359D59A51394196B20C612E4C5241A8C64B27735139419A081BA62C4C5241 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug360.xml geos-3.8.0/tests/xmltester/tests/ticket/bug360.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug360.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug360.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/360 - - - - - -Exception on CascadedUnion (JTS works!) -http://trac.osgeo.org/geos/ticket/360 - - -01060000000300000001030000000100000009000000CF94E7BC74493A4112BF8381EC1D5241719EA08059493A41D99596CB011E5241D39DCCCD7D493A41059D9A3FF51D5241045779D6A6493A41CA15FFA0E61D52415B9FCDB4AF493A41B0B05E38E31D52419C61B481AB493A4145F236A0E31D5241692E81C6A2493A4145F2361DE51D5241CF94E77E93493A41DF8BD07EE71D5241CF94E7BC74493A4112BF8381EC1D524101030000000200000009000000DF0CC8255B483A4162F13B3BE31D52419C8CC751B8483A4118E57CB8FD1D52417E74A8A5BA483A41B95FD389FF1D524144923055C1483A4131986045FD1D52413551951AB9483A41DAABCF0F001E524129DC7EE826493A41EA92F392181E52411544B4DDD8493A41E127AB26D61D52415922E39AF6493A412F2C7F40CB1D5241DF0CC8255B483A4162F13B3BE31D52410B000000CCA90B5654493A4124A21B12F11D5241A3955A9B46493A41C60FFAD6081E52413C25CEA346493A41CF8B0DD8081E5241D39DCCCD7D493A41059D9A3FF51D5241045779D6A6493A41CA15FFA0E61D52414E9FCDB4AF493A41B1B05E38E31D52419C61B481AB493A4145F236A0E31D5241692E81C6A2493A4145F2361DE51D5241CF94E77E93493A41DF8BD07EE71D5241CF94E7BC74493A4112BF8381EC1D5241CCA90B5654493A4124A21B12F11D5241010300000001000000060000009C8CC751B8483A4118E57CB8FD1D52413551951AB9483A41DAABCF0F001E52417E74A8A5BA483A41C45FD389FF1D52415374A8A5BA483A41C45FD389FF1D52417E74A8A5BA483A41B95FD389FF1D52419C8CC751B8483A4118E57CB8FD1D5241 - - -01030000000400000007000000DF0CC8255B483A4162F13B3BE31D52419C8CC751B8483A4118E57CB8FD1D52413551951AB9483A41DAABCF0F001E524129DC7EE826493A41EA92F392181E52411544B4DDD8493A41E127AB26D61D52415922E39AF6493A412F2C7F40CB1D5241DF0CC8255B483A4162F13B3BE31D524107000000A3955A9B46493A41C60FFAD6081E5241CCA90B5654493A4124A21B12F11D5241CF94E7BC74493A4112BF8381EC1D5241719EA08059493A41D99596CB011E5241D39DCCCD7D493A41059D9A3FF51D52413C25CEA346493A41CF8B0DD8081E5241A3955A9B46493A41C60FFAD6081E5241050000005374A8A5BA483A41C45FD389FF1D52417E74A8A5BA483A41B95FD389FF1D524144923055C1483A4131986045FD1D52416174A8A5BA483A41C45FD389FF1D52415374A8A5BA483A41C45FD389FF1D5241040000009C61B481AB493A4145F236A0E31D52414D9FCDB4AF493A41B1B05E38E31D52414E9FCDB4AF493A41B1B05E38E31D52419C61B481AB493A4145F236A0E31D5241 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug366.xml geos-3.8.0/tests/xmltester/tests/ticket/bug366.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug366.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug366.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ - - - http://trac.osgeo.org/geos/ticket/366 - Unable to find edge to compute depths at at -200016 249553 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - http://trac.osgeo.org/geos/ticket/366 - - -010600000001000000010300000001000000430000000DD099A7C7BD05C10000000010770E41EBB1C54FEDCA05C1CCA26DE993F10D41AB1E6C42C2EF05C1D7671DD628780D41A75458319C6806C183FA179D57DB0D41FD31ACF35E0807C1F904B274BC300E41C5606C75B9B507C169C3D67252650E41643B759A4E6908C17C28D55402770E41253271484F6908C1D1B5CF70FF760E4196E03414516908C14FCABE34ED760E41105F5B3A5B6908C11996CABFCB760E414D3086B56B6908C142DC48EAAC760E41186E91E3816908C1186E91E391760E414A097E7F826908C1C9B79A6391760E414B097E7F826908C1C8B79A6391760E414F097E7F826908C1C5B79A6391760E4142DC48EA9C6908C14D3086B57B760E411996CABFBB6908C1105F5B3A6B760E414FCABE34DD6908C196E0341461760E4100000000006A08C10A25EBA65D760E41B13541CB226A08C196E0341461760E41E7693540446A08C1105F5B3A6B760E41BE23B715636A08C14D3086B57B760E41B1F681807D6A08C1C5B79A6391760E41B5F681807D6A08C1C8B79A6391760E41B6F681807D6A08C1C9B79A6391760E41E8916E1C7E6A08C1186E91E391760E41B3CF794A946A08C142DC48EAAC760E41F0A0A4C5A46A08C11996CABFCB760E416A1FCBEBAE6A08C14FCABE34ED760E415D4D7BFBB06A08C10B18742202770E41FBD26A0BB16A08C1866A376802770E416EE46313481E09C1F914B42452650E4109CC530CA1CB09C1CC05B274BC300E41926AA6CE636B0AC1437E199D57DB0D416DCB55E73DE40AC1AD54C55F29780D41154E3AB012090BC1C9A26DE993F10D41F32F665838160BC1FEFFFFFF0F770E41164E3AB012090BC1325D92168CFC0E414314D50E23E20AC128EF4FF6E67C0F41BFB02081E8A20AC17E3DB5DF31F30F414A06D995F3580AC16012EBD9A72610418E9F8F2620550AC11E07BCFEC72610414C907E56A83E0AC16309CCFE172710411CF8107737140AC1E773A4F2E32510412846506A97D909C11EA6DCE42B201041F36AD47C979A09C1B974C3DCBF141041A0BF52AC4F4609C110EDCEC737FC0F418A5C7FE1F7F408C12566D8E997C50F41685FCE0420A408C12DA67D03E08A0F4196A2521BB05208C1E0705D1328510F41DB5332BBDFFF07C1628480E23F1E0F41AB28C99197AA07C1D6FA3CEBAFF90E41F9BBEA76386C07C115B46616F0ED0E41DA4B8C67E03307C160CAD4FABFF00E41EEE724C7370C07C158AA2316F8FA0E41823F33E497F706C19548C90C00030F414F4A64F70FED06C141DC2704D8070F414240330A08E406C17D3A00FB3F0C0F41D85C1D1198D206C1B4CC22F747150F419EB0BDECFFB106C1E57C120CC0270F41AD41C30A488506C114E940F9C7430F411530CCF5BF5406C19BAF9406E8630F4166203B26D81106C14D0D57E70F8F0F410EFB351CDE0006C1F3284448F9980F41BEEB2AF1DCF105C12DEF4FF6E67C0F41EBB1C54FEDCA05C1365D92168CFC0E410DD099A7C7BD05C10000000010770E41 - - - -0103000000010000007E0000001F9B894E40160BC188CF42370F770E411F9B894E40160BC17830BDC810770E4163B25DA61A090BC1BC934FDF8CFC0E41E99D0A581A090BC1C11E13698EFC0E415F6BA5B62AE20AC15EB1D048E97C0F4136CE011D2AE20AC1F197BBBBEA7C0F41716D4D8FEFA20AC19DDE20A535F30F4150CD40B0EEA20AC1F007F2F236F30F41E920F9C4F9580AC1BA788963AA2610414792209CF8580AC1EF05C1F6AA2610412118AC3DF7580AC1E3C5C268AB26104177D036B8F5580AC19C44CEB4AB261041B914FC1BF4580AC1E232B8D7AB261041C2B0B2AC20550AC1012489FCCB2610410354825F20550AC1DEAB56FECB261041833C718FA83E0AC182A966FE1B2710411E5F8CE2A73E0AC1999427FD1B27104121CE1E0337140AC1840200F1E7251041AE0BE4EE35140AC17F40B1DFE72510414F5B23E295D909C1F672E9D12F2010415DAA2DB094D909C1EC6987A72F20104144CEB1C2949A09C1C3386E9FC31410416BDB8BB3939A09C1F4D7D062C314104160330AE34B4609C164B4E9D33EFC0F41DC5493364B4609C129D6046C3EFC0F41F3F1BF6BF3F408C11C4B0E8E9EC50F41E64AF32DF3F408C14068E2629EC50F41F713DF5A1BA408C1B7F18283E68A0F4199F5BDB1AB5208C1591EFFC02E510F4126016A0ADCFF07C18356BB01471E0F41B527923995AA07C16F43319EB7F90E41D9EA72EA376C07C171FCF51FF8ED0E41E905449DE13307C18929ECEDC7F00E411D75743C3A0C07C115EDE0B6FFFA0E41AE765E049BF706C10789FE6A07030F41A588676413ED06C1D120053FDF070F411D0247A20BE406C10FC9DA20470C0F41586C38E19BD206C1F4A8F8FF4E150F4189B1F10504B206C1ECF07CEBC6270F415EC603604C8506C12D5107B3CE430F41EE073C60C45406C1FE2955B2EE630F413FA1E84BC45406C139549DBFEE630F41B791577CDC1106C128BC5FA0168F0F41EACBD22EDC1106C1F4A8F8CF168F0F4142AACD24E20006C1A1CBE53000990F415F7CD1AEE00006C16A447ADB00990F4115504D1EDF0006C12E4CF03701990F41138A6383DD0006C1FD778E4201990F418FC6A1EEDB0006C15734E7FA00990F418D165670DA0006C11E7DDD6300990F41F211E717D90006C159E08683FF980F41969D34F3D70006C19AE4EC62FE980F419F42090ED70006C114D1AF0DFD980F41CA31FEE2D5F105C1F197BBBBEA7C0F41A1945A49D5F105C15EB1D048E97C0F411762F5A7E5CA05C1C11E13698EFC0E419D4DA259E5CA05C1BC934FDF8CFC0E41E16476B1BFBD05C17830BDC810770E41E16476B1BFBD05C188CF42370F770E419D4DA259E5CA05C1446CB02093F10D411762F5A7E5CA05C13FE1EC9691F10D4169C29B9ABAEF05C163A29C8326780D4119B03F34BBEF05C12C28B11025780D41DEE34C13BCEF05C17993DFC223780D41FFE7302FBDEF05C12408FCA622780D41A6DA027DBEEF05C10268EFC721780D41F997EEEFBFEF05C1621B4C2E21780D41BDF9B279C1EF05C18B9AF9DF20780D4194162E0BC3EF05C14B71FADF20780D41641AF294C4EF05C10CAD4E2E21780D413B29DD07C6EF05C1548CF3C721780D414A2AAE55C7EF05C1D99601A722780D415485ABA8A06806C152C202EE50DB0D41BCEC3207620807C15A2A6F07B5300E4193F5E506BBB507C1149678904A650E41EE822FD1476908C190F1D19FF9760E41D77D111E496908C10296016CEC760E41E584646C496908C1FE0A3EE2EA760E41930F8B92536908C14ECA496DC9760E41509F2E2C546908C127F15EFAC7760E41BD7559A7646908C11B2FDD24A9760E41DF156686656908C134130CD7A7760E41845671B47B6908C1BE9E54D08C760E41BE9E54D07C6908C1845671B48B760E410A3C416C7D6908C12C9E7A348B760E4134130CD7976908C1DF15668675760E411B2FDD24996908C1BD7559A774760E4127F15EFAB76908C1509F2E2C64760E414ECA496DB96908C1930F8B9263760E41FE0A3EE2DA6908C1E584646C59760E410296016CDC6908C1D77D111E59760E4188CF4237FF6908C1F4C0C7B055760E417830BDC8006A08C1F4C0C7B055760E41FE69FE93236A08C1D77D111E59760E4102F5C11D256A08C1E584646C59760E41B235B692466A08C1930F8B9263760E41D90EA105486A08C1509F2E2C64760E41E5D022DB666A08C1BD7559A774760E41CCECF328686A08C1DF15668675760E41F6C3BE93826A08C12C9E7A348B760E414261AB2F836A08C1845671B48B760E417CA98E4B846A08C1BE9E54D08C760E4121EA99799A6A08C134130CD7A7760E41438AA6589B6A08C11B2FDD24A9760E41B060D1D3AB6A08C127F15EFAC7760E416DF0746DAC6A08C14ECA496DC9760E411B7B9B93B66A08C1FE0A3EE2EA760E412982EEE1B66A08C10296016CEC760E4160A5D62FB86A08C169D837AAF9760E41D05FE881461E09C1455156424A650E41F049CCF89DCB09C1BA956F07B5300E41034356575F6B0AC17AA702EE50DB0D41D5FE18D438E40AC10234A53023780D412728EA213AE40AC1E093985122780D414F01D5943BE40AC12304F5B721780D41BF99981E3DE40AC1A9EFA16921780D41AFFA12B03EE40AC1A9EFA16921780D411F93D63940E40AC12304F5B721780D41466CC1AC41E40AC1E093985122780D41999592FA42E40AC10234A53023780D413FEB751644E40AC1A789884C24780D41608B82F544E40AC1FAB2599A25780D411D1B268F45E40AC1218C440D27780D41E99D0A581A090BC13FE1EC9691F10D4163B25DA61A090BC1446CB02093F10D411F9B894E40160BC188CF42370F770E41 - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug392.xml geos-3.8.0/tests/xmltester/tests/ticket/bug392.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug392.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug392.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/392 - - - - - -http://trac.osgeo.org/geos/ticket/392 -TopologyException: found non-noded intersection between LINESTRING (146.593 -37.2263, 146.593 -37.2263) and LINESTRING (146.593 -37.2263, 146.593 -37.2263) at 146.593 -37.2263 - - -01050000000600000001020000000300000035BEE5A0FA486240785C548B887F42C00619B787F34962403A8D599B6B7A42C035BEE5A0FA486240785C548B887F42C0010200000014010000A5AE6B6A0F516240EE23B726DD9B42C06AB3FB9F0D516240B5F81400E39B42C01A530B800C5162405AE95A20E69B42C06BB933130C516240EFBC9EF9E69B42C0984979520B516240D6468666E89B42C07DCB9C2E0B516240CA3CA87AE89B42C083013A820A516240E80D9CD8E89B42C01820D1040A516240946B651DE99B42C09FCA694F0951624012D5004AE89B42C0E47107A00751624072593B40E69B42C0881E42A6065162404ACC58D9E39B42C09D9ACB0D065162408C930C4AE29B42C03909A52F045162409BF749FFDC9B42C0B159E48D025162401A738D85D79B42C00B7A6F0C01516240F2A32B22D49B42C0EB6F09C0FF5062403BA41820D19B42C02D3185BDFF506240DC9BDF30D19B42C059A725B1FF506240ADE93015D19B42C027744D37FF5062407BE35AA3D49B42C04562821AFE506240158843DBD69B42C0ED7E15E0FB5062404055E0BFD49B42C0B86EEFBFFA506240A654D33FD29B42C0575EF23FF950624011058E5FD39B42C0A74E513FF95062406403E962D39B42C039002C3CF950624022426D65D39B42C08CA262F7F85062409F8B2BD3D49B42C0041E1840F8506240F0355F80D89B42C03C878D0DF8506240857F6CEDD89B42C0E0BDFE7FF75062404F667220DA9B42C04333F4F4F650624018A99C9BDB9B42C0E4FF441BF6506240C48A64D9DD9B42C0B2423635F5506240F3C64961DE9B42C0E2CC0AA0F35062400518963FDF9B42C081BC0D20F250624057C80160E19B42C0266CE45FF050624047BAB07FE89B42C05D8B16A0ED5062400F0E51E0F89B42C0D81A0060EB5062406ED113E0059C42C03B3A0900E9506240F73361A0109C42C0676902A0E55062406E6704C01D9C42C052DCA799E450624071D014F0219C42C085121C4DE45062404DF4F928239C42C09164B1A8E3506240FE64E7C8259C42C0FA6B68B9E25062407389D981299C42C0ABCC94D6DF506240F9F8DFA52F9C42C09274CDE4DB50624090436914379C42C0029EB470D9506240838F77FD389C42C097491E99D85062400CFDB8A2399C42C01426E71FD8506240950ED6FF399C42C0A0038184D75062404DA48F543A9C42C08119F8F6D3506240C977842E3C9C42C0EB54F99ED1506240A68D34023B9C42C0FE55911BCF506240859BE7E3359C42C0D66C8A6CCC506240AD61D0532E9C42C04285D9BACA5062409745178A2A9C42C007E92972C850624074EB353D289C42C0264A8CAFC7506240FED478E9269C42C0C528BE90C45062407D6DA23B2D9C42C0D4EBBBC7BE506240EB556474409C42C08B0CBCA4BB506240F5E681D94E9C42C0D08547D1B95062408EB344C2529C42C025BE24DFB6506240A2C38DA5599C42C074925275B45062400B3AC6BA5D9C42C05A907758B2506240A0DFF76F5E9C42C0058DF4FDAF506240E6F516C5619C42C0081566EBAA506240D29B9B80709C42C02EA4688AA5506240443B5DCC859C42C06FF3C649A150624019575C1C959C42C09AACF6559E506240BAE70A009F9C42C028F5C0229A5062408D9B7521B19C42C0B04C09D2965062406DD5BF35C19C42C0B75D68AE9350624077D66EBBD09C42C098593AD5905062405D5727C2E19C42C0CFA67E398E5062402627C929F09C42C0C194DCBC8C50624097EB23A6FA9C42C0C19A14308B506240DE10F461079D42C09F292AD188506240F5DF394A149D42C0A0B998B08750624028DB1BD71A9D42C099428C7C83506240AC8FE2772E9D42C08E9DA68581506240A56D57433D9D42C02AE4A5F67D5062405930F147519D42C0178B95877B506240DA1F8370609D42C0AD6A49477950624055F08057709D42C0575EF23F79506240266CE45F709D42C042E504127950624060F426D0719D42C0FDD071DA785062407730BD58739D42C011001C7B765062404767AA71809D42C03521527875506240791AD58E879D42C0D9CAF044755062405494A69C8A9D42C0322DFBBF745062408014D09F919D42C0217DEE5F7450624093D629A09A9D42C00CEDF71F7450624083CB1940AE9D42C0924FD9FA7350624020915B38B59D42C06BB015D973506240BED29E37BA9D42C0577FDF1A7350624083C366DBC49D42C0A7FC10C0725062408712D2BFC99D42C016EF117B72506240CD9EBAA8CC9D42C05E73FD717150624056D3F544D79D42C025242DF07050624031D7FDBEDA9D42C0266CE45F70506240B2D7BB3FDE9D42C0BE535CB06F50624045B9347EE19D42C083B174F46E506240D89AADBCE49D42C0FDB0EFD46D5062402F5E3D38E99D42C0B05EFBB86C506240B7F3588EEB9D42C0D53A16806B5062406E3B2300EE9D42C002E264D16A506240A3BE767AEF9D42C0ACC1A0F169506240C6600F37F19D42C05F5B3FFD675062405A76D20CF39D42C0F199EC9F67506240E88CDE5FF39D42C0648918C065506240C52CC59FF29D42C0015CDABA65506240ADEAF6A3F29D42C0AE5D7FB765506240846B49A2F29D42C089B08630635062407DEA58A5F49D42C01E8D9EB661506240AAE683AFF99D42C07171546E62506240647DB905019E42C0A44808A062506240A5F04520039E42C0170912806450624013C25900099E42C0AABF14D466506240691D554D109E42C0EC0AC73D6750624032326DA4119E42C0C7A1D9D068506240B3FEE08D169E42C0E7F05A536A50624055C3D9081F9E42C094933FCE6A506240815DA857259E42C0DBFAE93F6B506240CC9A58E02B9E42C0D53A16806B5062401EDE7360399E42C06DDAD6606B506240C1BC1127419E42C0D81A00606B50624049A01C60419E42C0C66AF3FF6A50624069E21DE0499E42C08E7AE3FF695062402AF40BC0509E42C0B5A91501695062409356D7FC539E42C0A2F4E04966506240279AACF6559E42C0828E56B56450624099E5FC5E549E42C00839EFFF635062400B45BA9F539E42C0EBC6BB236350624041A66BDC519E42C0F2D1E28C61506240E34D7E8B4E9E42C0DE5E2DD25F506240A456F3774A9E42C0BAE70A005F5062403A92CB7F489E42C032970AE05C5062401281EA1F449E42C03C5409055B50624061527C7C429E42C0E6EB8DB55A50624061F65734429E42C0D83274475A5062409723BFD9419E42C04C16F71F595062405620C4DF409E42C0F609A018595062407F9F71E1409E42C085AD7E11595062406D6292DB409E42C0FDE6B45D57506240E436D032419E42C07ADD223056506240F581E49D439E42C0C586133D55506240280D350A499E42C0A2F8E75854506240A8774C384F9E42C013550960545062401950148D5A9E42C01355096054506240E333D93F4F9E42C04E250340555062402E122400499E42C08615134056506240B3C068A0439E42C0D67503605750624032303C40419E42C0F609A018595062407F9F71E1409E42C02207DB3E5A506240F02609D3419E42C0AB460AC05A50624085701640429E42C05DC0CB0C5B5062409C0E0984429E42C0867E5CD15C5062401281EA1F449E42C058BACCFA5E506240E793707C489E42C01F20A9CF5F506240921914724A9E42C054E8178061506240C0D3BF7F4E9E42C041D3122B63506240B81E85EB519E42C067583101645062400540CBA9539E42C005114EB0645062401C68F459549E42C08DA90540665062408CD5E6FF559E42C03B3A090069506240E7543200549E42C0B5A91501695062409356D7FC539E42C0D923D40C69506240C3DA73F4539E42C0A6D3BA0D6A506240FA6F6FC8509E42C00B3A6B016B506240EC6415DB499E42C0F36ACA5F6B506240449B2D6A419E42C0D81A00606B506240731FCA61419E42C0BDCA35606B50624014E97E4E419E42C0E749E3616B506240145F48E2409E42C0FEB9C3816B5062404E621058399E42C0AE84494C6B506240E9E115D22B9E42C00E034CCF6A506240CF561465259E42C0A02AF05F6A506240F0879FFF1E9E42C03E1AF3DF68506240D1459E7F169E42C0184D1D9A68506240782EE7AD159E42C0C5991540675062404A743BA0119E42C0C201E3CF665062401B24E93F109E42C08E812B8F645062405A88C4F3089E42C07DD756A262506240D574E217039E42C080A0377062506240C4B30419019E42C069780EC0615062409EAE939FF99D42C0CA880B4063506240006D50A0F49D42C0E70B10BB65506240ADEAF6A3F29D42C006CEBE97675062400C079D6BF39D42C095FBD3FC675062405A76D20CF39D42C08E7AE3FF695062402B9C4940F19D42C0E7919AD16A5062400EFF9F79EF9D42C08A66AF886B50624050F4650EEE9D42C0BC7FE2B66C5062409FB18A92EB9D42C0711B0DE06D5062406B1ACA3FE99D42C0C17BFDFF6E5062402B9908C0E49D42C01D739EB16F506240337C5578E19D42C08294336F7050624064DE4F32DE9D42C0ABB420EF70506240D7D3B3C5DA9D42C05B7C0A8071506240D955ED3FD79D42C0AAAEE87B72506240FC2257A0CC9D42C0309B00C372506240C2CE5EC7C99D42C04850FC18735062404835ECF7C49D42C0F75C01E0735062408F4E0240BA9D42C077FF0EFB73506240BB55212FB59D42C006E8082A74506240F4103235AE9D42C0D08C8F60745062400A4F43AF9A9D42C014E63DCE74506240F78CE9AE919D42C029BB4F4475506240B9CFE0A58A9D42C0568D14807550624002A2BB7F879D42C0A8CDEE7F765062402920ED7F809D42C02A5E1BE078506240B3EC4960739D42C042E504127950624060F426D0719D42C0AD6A49477950624055F08057709D42C05E3013A081506240E3C9C91F679D42C05F01F15F85506240D746E11F5B9D42C031F20DE0885062402222EB5F489D42C0B9420E008B50624079ED2D40369D42C04473F8FF8C5062404E250340159D42C0B73302E08E506240FCE1E7BF079D42C08EE4F21F9250624013BF1880FC9C42C0756506E0955062400CEDF71FF49C42C088BA0F40AA506240F1C5CD5FD79C42C0D32B0A60AF506240C9213DA0C79C42C05B7C0A80B1506240B63643609B9C42C0EE8B95E2B4506240C89EF3098F9C42C0BB270F0BB550624075E84F768E9C42C0B2AE1B00BB5062402D3E05C0789C42C0EB6F09C0BF5062408C68965F619C42C0D2C1FA3FC7506240F6F53240589C42C068A4EF7FD1506240DC61B8DF469C42C04B451960D5506240DBCE08803B9C42C01D818989D75062408F650B523A9C42C0D3646B22D8506240534D5A023A9C42C00EA8925CD95062408FC7670D399C42C0FAA6FADFDB506240B4BD2720379C42C0F5B704E0DF506240E7BB00A02F9C42C0BBB8E8BFE25062404A0A2C80299C42C0D63329AAE3506240EC2708C3259C42C07EC2D9ADE55062401A69A9BC1D9C42C02914330CE95062405C6F9BA9109C42C0D215116AEB5062408C18D1D1059C42C0EB45FEAAED5062404BCADDE7F89B42C052F98D65F0506240D0419770E89B42C0DAD6602BF2506240F28CC756E19B42C0002BD1A3F3506240E7D0D84DDF9B42C00E547C32F55062401D46F762DE9B42C07CCD1720F65062406B871AE0DD9B42C04333F4F4F650624018A99C9BDB9B42C0289B7285F750624025E7C41EDA9B42C04E098849F85062400E7D1C72D89B42C0CB55E2F0F8506240753A90F5D49B42C08CFE863FF95062406403E962D39B42C026BD14C3FA5062405F8E684CD29B42C0E14625D0FB506240FE9364C2D49B42C01CE3D418FE50624068869EDED69B42C04562821AFE506240158843DBD69B42C08D3FF61FFE50624092054CE0D69B42C0DC9FE63FFF50624028E5FF9FD49B42C02D3185BDFF506240DC9BDF30D19B42C0086C7308015162408D68F118D49B42C099000D80025162400936AE7FD79B42C01281EA1F045162402FB72000DD9B42C08641F4FF055162409298FB3FE29B42C0382EE3A606516240734B06DBE39B42C0B1C8659207516240C5579643E69B42C03D9D2B4A0951624000982144E89B42C08152FEFF0951624053AAE91FE99B42C01820D1040A516240946B651DE99B42C0A1BEC0070A516240E869C020E99B42C0E2EFCD250B51624047BAB07FE89B42C0CAF21A600B516240304AD05FE89B42C029F8B7150C516240723F96F4E69B42C035A3D57F0C5162407E63192CE69B42C09C5C9DAD0D516240B5F81400E39B42C010EF94690F516240AC623B29DD9B42C0DD7305800F516240184740E0DC9B42C0A5AE6B6A0F516240EE23B726DD9B42C001020000004601000073FB9B06FB5262400567953E199D42C06A72E778FB5262406CC8E479159D42C0169F0260FC52624075A334400E9D42C0169F0260FC526240E90E62670A9D42C0525B8F67FC5262404FB2309F079D42C0383C73C5FB5262400633011A009D42C071AB2006FA526240AA76F28EF89C42C0E5A210B7F9526240E08FEC5BF79C42C0F54DF5BFF7526240B5FB5580EF9C42C0CF9AC4C5F65262409FC5F76AEC9C42C01AB7E22CF6526240CFC59569EA9C42C0C8DB0022F3526240840CE4D9E59C42C0E4C40DAEEF52624081334289E09C42C0A026440AEF526240F8C500E4DF9C42C0287BF07FEC5262405F97E13FDD9C42C0121A1C80E852624053A7A89FDC9C42C0CD4AA47EE8526240E8667FA0DC9C42C09CDB847BE5526240B4A1AC29DA9C42C0DCAEE133E3526240993E856DD59C42C06BCB25FAE15262401EB97F76D19C42C03953324AE1526240B2B15C80C79C42C0E5F27A8BE2526240D08547D1B99C42C07F52488DE4526240AA80D657B29C42C0245D33F9E65262408C721F6FA89C42C011178046E9526240B4249B06A09C42C051F70148ED526240186BC9F4959C42C0DD297865F2526240D4D6E3198F9C42C0819B2045F8526240B95917128B9C42C0B9B59613FE52624090566B17899C42C0EE4FF39FFF52624001124DA0889C42C0780778D20253624054F60258899C42C0FDED57A604536240D1FD41C9899C42C069CB14CE095362403605323B8B9C42C01A530B800C536240D6E253008C9C42C0938ECDE90D536240D6C8AEB48C9C42C0DFEB5A31125362405D30B8E68E9C42C0102D681015536240F1A19F04919C42C028CA4A38195362406B216D88969C42C0D19D16721B536240CF3CCAD2989C42C03B037EE81D5362403ABF72CE999C42C0DDFF6C5020536240ED69E278999C42C09E5DBEF5215362404DEE1C6F979C42C0CA856F0624536240E0505326909C42C0B700D99024536240373FB445889C42C023168CA5235362405B40683D7C9C42C05F62878C22536240C5B99745729C42C093A1CFEC1F536240F4763A46689C42C08284CDA51D5362404BBB873A629C42C0D7E7209E1B5362406D0CF093599C42C0E61604A01B5362407916CE7F599C42C05EC6038019536240B45318004F9C42C0F9D51C20185362402A615C60459C42C01DC6A4BF1753624025F213BD429C42C089658E4017536240AAF644323F9C42C0242A54371753624010F0FF3E3E9C42C0C4C5F6FF16536240D71D41E0379C42C08C2E6F0E17536240270FB0FB339C42C02721472917536240B8AD2D3C2F9C42C079D1B249195362404BE88942269C42C0AD93E9861C5362403868AF3E1E9C42C073C57BC41E536240EE2AFFB5179C42C0405E59B31F53624019E42EC2149C42C05AA8EB3F21536240D4D347E00F9C42C0B5F8140023536240E822CF3F0B9C42C01518570123536240412619390B9C42C059E7CE02235362405968E7340B9C42C0473426692353624078CF81E5089C42C01AE9FB5F24536240D4D00660039C42C055B9F53F25536240FC4E3860FC9B42C046CF2D74255362402DCBD765F89B42C0F551FCCE2553624095A828A8F29B42C034C0609225536240D554BBCBEA9B42C06A49EC7F255362400CEAB69FE79B42C06A49EC7F25536240B5824B6CE39B42C031B2648E25536240F60604DFD99B42C0E3B55C472653624031D4BC3ECE9B42C0B76DCE7726536240B5EC5A8CCB9B42C0B3E908E026536240CAB1AB7FC69B42C01FFC1FBB26536240988EEF41BE9B42C04864C4AA26536240B949B148B89B42C00D912E9126536240CE28A787B29B42C0A239FC7F26536240013BEDDFAB9B42C0676902A025536240BE0864C0A39B42C09DFB613A235362407A5AD9999D9B42C08C344CC822536240EB2F606E9C9B42C0A72E2AF320536240F98D65B0989B42C00A48FB1F205362408F256200979B42C07F1711201E53624021E4BCFF8F9B42C0EB9FF18E1D536240549ADE0F899B42C03B061A221D5362409382B8BC839B42C01AF67B621D5362400F817E3A799B42C00BF5AA841D536240224ECC1F789B42C094A707601E53624078ACBE5F719B42C05A07ACC120536240AD122C0E679B42C0D7C633C321536240CDF5C7C5629B42C04AE9995E2253624058EB7A585E9B42C0F0C80EE0235362400B45BA9F539B42C052D90B6025536240CFE11060479B42C069183E2226536240F2D654713E9B42C0CEC6A58526536240EE3F321D3A9B42C0E3288AA12653624026378AAC359B42C0B3E908E0265362407D9BB45F2D9B42C05DC6A8C62653624045813E91279B42C016D22BAF2653624032EDF6B41E9B42C0EC246C8926536240C0E61C3C139B42C0A239FC7F26536240A583F57F0E9B42C08D92FC2D26536240DC60A8C30A9B42C0C9C452C92553624086E5CFB7059B42C0A625564623536240476A46ABFF9A42C0CD960744235362401EEB98A9FF9A42C0CA880B4023536240B9AF5EA0FF9A42C0E407F87F1F53624066FFF27FFD9A42C0EE0912DB1D5362408A9356D7FC9A42C0B75384E519536240F0A6B62FFB9A42C0EF33D362155362409320B7BAF79A42C0BB46263B1153624019A1E936F29A42C00D4059E70E536240D26AED22F19A42C005C314400C536240FC4BF7DFEF9A42C0C286A7570A536240FDDB65BFEE9A42C061DBA2CC06536240DAAF9696EC9A42C058C9C7EE025362403B2064B4E99A42C0F4F8BD4DFF5262400D38A682E59A42C051F932ACFD526240DBB28D89DE9A42C01A6B7F67FB52624035C703DBD29A42C02D697BAAF9526240E269430FC69A42C036AD1402F95262400E153EB6C09A42C02D3E05C0F85262409EEF0280BE9A42C007FE0120F8526240311BAE1FAC9A42C0915D0E60F65262406C58F89FA19A42C0D11CFE3FF352624005C655C0989A42C0EC55BF2DF35262403B21CF89989A42C04F47B6A9F0526240E569AFF4909A42C0773469AEEE526240AD557199899A42C0B0164449ED52624034C86EB0819A42C0106734A8EC526240A5D0C31A789A42C09348EC24EC526240149161156F9A42C01CE7DB27EC526240ADB0CF52689A42C0E643ABEEEC5262402E6695E35F9A42C0D3A46F2DEE526240FD42D9A5579A42C08297CFA8EF526240D28668194E9A42C084E4AE6FF1526240F581E49D439A42C0D4B7CCE9F25262401BB226BB3E9A42C00CEDF71FF4526240D0DECFDF3A9A42C0AC826275F552624038D6C56D349A42C0C908032AF75262403693CA6F2C9A42C080C6962FF95262408625D4C21B9A42C026E88AADFB526240729648580A9A42C007CC43A6FC5262405268B4B0029A42C0554FE61FFD526240C52F0620FF9942C0D41F065FFD52624090508E5DFD9942C0C2C8810DFE526240C847E6ECF89942C01B6A6F4BFF5262404EB4AB90F29942C0C4FBBB880053624062314514EE9942C0387A466C01536240BFD6A546E89942C0F6B8CA6E015362407A0E76D4E29942C0F47F5880005362404CF8A57EDE9942C06616FC91FD526240944E7F51DD9942C0274D83A2F9526240C8DF0731E19942C0704D70A0F6526240FC427EECE49942C06A1D0BC0F5526240AEB9A3FFE59942C06B65C22FF5526240307E1AF7E69942C0D1EEEB1BF35262401DBF0177EA9942C046A7F809F15262407A4501ECED9942C0F96B0D00F0526240CD6B36A0EF9942C0A6FD20DCEE5262401FDA22C4F09942C0008E3D7BEE526240FBE99A24F19942C00F4D8F5CED526240BF9D9F3DF29942C0D4207134EC52624037D43950F19942C0BA63B14DEA5262400E5BC4C1EF9942C04273428DE7526240EC489AE4EC9942C04B862D87E75262403F47F5E7EC9942C0DA290C80E7526240048B68E0EC9942C0676902A0E55262403F5B62C0ED9942C0417452A9E3526240D75537CDF19942C02C29779FE3526240A2CCABDFF19942C07A281B20E2526240DD9CA5BFF29942C02DA814E0E052624072ECEA9FF19942C0E0247266E0526240CBD58F4DF29942C043B40C27DF5262409574DE10F49942C0D75DEA31DB5262403A652431F79942C0388600E0D8526240277E3100F99942C0ACC8433AD752624027367A90F99942C0B771D586D4526240B504CF73FA9942C011D77B3BD3526240A3C7EF6DFA9942C08B040940D2526240C10EAD5FFA9942C05803EF3FCD526240277E3100F99942C046820420C9526240186D9F9FF39942C0D57036C2C7526240A85BD141F29942C071AE6186C6526240907B5F01F19942C0251D8AA7C3526240FCC1C073EF9942C009FCE1E7BF526240398ABD61EC9942C080327CFABE52624058BD0D7BEB9942C02B2FF99FBC52624053AAE91FE99942C08C6E1860BA526240142928A0E49942C007FE0120B85262407707C25FDD9942C08D77EC0CB852624018755204DD9942C0EAA5738FB6526240875DCAAFD59942C09149A187B5526240F6A79E16CD9942C05C4DE83FB5526240C2E2CB9FCA9942C01D9D0480B4526240CD3F55E0BF9942C01D9D0480B452624013DD6921B79942C0F72B5382B4526240690712CAB19942C091D6732DB5526240824CD7B8A39942C07610E099B55262404533AA679C9942C0F66DD27EB552624096027745959942C05F5BE443B5526240265305A3929942C0BB1006F9B4526240B583B641929942C01853FA53B45262403EDD8A0E929942C0BCB77DEAB35262405B66C7FC929942C07702AB34B35262402A60F18A969942C0B0822914B3526240B678C25C9C9942C0A54DD53DB25262407B832F4CA69942C0B365AF2DB252624063F9A9E0A69942C05E5CF45FB152624053EB5800AE9942C096804EF7B0526240DB807456B09942C02891E975B05262405768D608B39942C0A68AF381AE526240E645DC52BD9942C04138B066AE5262402DF2A1FABD9942C04BDB0940AD52624018B14F00C59942C0FB7A1920AC526240FC2257A0CC9942C0ECAAF69FAB52624024343800D19942C034153D4BAB526240632BC313D59942C0016C9B3DAB526240335F6FACD59942C0F02EBC37AB52624074345882D69942C0C66AF3FFAA52624053A7A89FDC9942C013EBF93FAC526240828AAA5FE99942C01B125212AD526240E5852AEBED9942C01EBEF15AAE5262406532C115F59942C0ED1C14DEAF526240DE077B6EFC9942C081EDBB7DB15262400E959059079A42C0CC1D47BDB1526240FC993050089A42C0EE04FBAFB35262404B4C61EF0F9A42C041A49531B4526240080FE4EA119A42C0217DEE5FB45262409DB415A0129A42C07FAD0100B652624032970AE01C9A42C0E39DE85FB75262405DC94400269A42C018AE0E80B8526240364B13002D9A42C0922EEC1FBA526240F3AB3940309A42C02E0FE37FBC52624046EC1340319A42C013BF1880BC52624046EC1340319A42C003E0E9DFBF5262400B1C1A60309A42C0A344A6D7C15262406B589DE62E9A42C09CE0F65FC2526240D009A1832E9A42C0E98E0FC4C3526240E24680892E9A42C09B36E334C45262405F06088B2F9A42C0D11B936AC4526240D5085806309A42C04AE4277AC55262401C0B0A83329A42C05FB939F0C552624066F2CD36379A42C05F5A796EC65262401CB85E2E3D9A42C094111780C65262408D3FF61F3E9A42C097F10060C65262406110FD7F419A42C0748E4B66C6526240A2410A9E429A42C053399270C652624082BA922E479A42C0ACAF09C4C6526240C25B316D499A42C0C111EEDFC6526240C8A29F5F4A9A42C0E751F17FC75262409CE337E04E9A42C0F901FEDFC752624026D6F37F589A42C0DEB133E0C7526240BB95CA80589A42C0E1911DC0C75262407D51CC8B5D9A42C0B8150CF8C65262404184132C699A42C065BE28E6C552624072A7CF69719A42C095174FF3C4526240F211E797779A42C01661D4FFC3526240959460167F9A42C010035DFBC2526240C4BF19468B9A42C058288870C2526240FC71FBE5939A42C085E6DFD3C152624053B4CDE8A29A42C0C1D31A39C15262408946D2C9AD9A42C0BB44F5D6C0526240A8120AB6B69A42C0A9F00CBFC05262407E8D2441B89A42C053CDACA5C0526240593B40E6B99A42C032D7B331C052624068EA758BC09A42C0CDE33098BF5262409FE40E9BC89A42C0B323D577BE526240665710B9CF9A42C08D11E4FBBD526240D590B8C7D29A42C066FFF27FBD5262407B25DA9FD59A42C0E057F66EBD526240B094C041D69A42C07FA31D37BC526240CABD65F3DD9A42C0D3A7B0ADBA526240D2F1E20EE59A42C0E089B4E8B85262406AE67FA8EA9A42C03C4272D7B752624078F1D995F19A42C0C6CCF401B7526240F783CB74F99A42C01FCDA2C1B7526240D57A1A8B019B42C0E0A0BDFAB85262405070B1A2069B42C0001E51A1BA5262405890C1E50C9B42C0ED7E15E0BB526240B524F6BF129B42C0169F0260BC526240C4C5F6FF169B42C040BFEFDFBC5262400447B87F1B9B42C0A1CFEC5FBE52624013584AE0209B42C072906B9EBE5262406BB180AE229B42C0A7A32DF8BE5262403AC54F88259B42C006F1811DBF5262403B4ACA822E9B42C0C52F0620BF526240A06B5F402F9B42C0ADED3724BF526240E7A15B54309B42C00F327F3BBF5262407286E28E379B42C0FA87E3AFBF526240B177352F3D9B42C0EB6F09C0BF52624075CF15003E9B42C011B00C60C0526240EF906280449B42C049A01C60C15262400ED363004D9B42C05E3013A0C152624035E44460519B42C05E3013A0C1526240B4E6C75F5A9B42C03DF262BCC1526240ACE9D55B5E9B42C0C0A26CDBC1526240B56B425A639B42C073C009E0C15262402A3410CB669B42C073C009E0C1526240CF7A42C06B9B42C049A01C60C1526240849CF7FF719B42C03BD0F9DFC05262402D3E05C0789B42C01490F63FC05262405900AEBF809B42C000000000C05262402D414640859B42C003E0E9DFBF5262408F2221808A9B42C000000000C05262402DD4F59F909B42C011B00C60C052624015F7C4DF9B9B42C0CDF79D70C0526240AF9BAD179E9B42C0A994E876C0526240F5132928A09B42C0B2A7D370C052624072BF4351A09B42C0DC9FE63FBF5262401DC9E53FA49B42C05DE6CF12BF526240A04BDD3AA49B42C05491651CBE52624064613E0FA49B42C00417D0B0BD5262400573AA6BA39B42C03AFF1B20BD526240A728F27FA29B42C0DEAEF25FBB52624040964FA0999B42C007FE0120B8526240E613C31F8F9B42C07EECE4C2B752624087F71C588E9B42C02B39DD68B652624012B985538B9B42C0D4FCE71FB352624055E2957F889B42C0EA9BEA7FAF526240FEF0F3DF839B42C0593F0B9EAD5262409DE4954F809B42C001020000009D000000E23362A581526240000000E04F9D42C0C30C8D2782526240BF153F7C4F9D42C072A02C2184526240A891F1834E9D42C0C1E677F5855262406083CF204F9D42C09CF0B7E287526240DBFF5B24489D42C0E412471E88526240FEB220393E9D42C0430477FB8752624031F378B5379D42C0853BBC8C875262408D3CB59F319D42C0C4398F2F86526240076B52C02C9D42C089552877845262400392B06F279D42C0BC0166BE835262400B896A00259D42C09F477B728352624030E186CE219D42C081D2AB5C83526240BA5A385A1F9D42C03A0C416983526240BD440603199D42C0E946585484526240755B7DD00E9D42C0DC0BCC0A85526240D2EC702A089D42C04DD87E3286526240339C7CC4F99C42C0447DDCC8865262407AE9DCA3ED9C42C008371955865262409663682BE59C42C056BD570886526240128A085ADC9C42C021938C9C855262408CA438A2D69C42C0C4AF58C385526240D634947FD29C42C02B4CDF6B88526240B3D771B2C39C42C071659AFA8A526240D6E65A0FBA9C42C02540A8E68D52624059F047F6AD9C42C08CD99255915262402F7C8ED9A39C42C033A7261C95526240F7C374C69C9C42C02971C2299852624022F36D66999C42C0BC7DB1529C526240A8E96976939C42C0317491E79F52624064DFBA078D9C42C00CC050D1A25262404527F0F3849C42C099B3E32BA65262400A26A36F779C42C0B98C9B1AA8526240E65AB4006D9C42C00B57AC86A952624043064DA6659C42C0B1A94E62AB526240827E95325F9C42C0486E4DBAAD526240793073CB589C42C0163A6524B1526240E3A9A2D34E9C42C089E0C9B8B35262405FFE5426469C42C0C776082DB5526240DC8C89833A9C42C0F0DB10E3B552624092DF47DA329C42C0DB8D999FB6526240B926EEC2209C42C0A2F611AEB6526240ED7DAA0A0D9C42C01CBFA6BDB7526240711706D1FF9B42C04877C6ADB852624036864A6DF39B42C030044A54B95262409F55664AEB9B42C0F45B2A25BA5262404C0C1357DF9B42C09D6340F6BA5262405D3A41F6D59B42C0A09F4E1EBB526240C2EB4493D59B42C0DE639FB6BC526240298F13CBD29B42C004FD2A65BE526240AAE8B413CA9B42C0A7751BD4BE52624085CFD6C1C19B42C0892E5EE2BE526240A01518B2BA9B42C089CF9D60BF52624032E8DF89B49B42C0A31CCC26C0526240941C661EAF9B42C0D843FB58C15262402CC0D254AA9B42C076FC1708C2526240586BCDFBA49B42C096C4FE57C2526240A83462669F9B42C06D2E4844C252624033B44B659B9B42C0C3B068DFC1526240579B5A11909B42C037ED73C6C1526240E8537D9D8A9B42C017AFC3E2C1526240201DC308869B42C05BC3561AC2526240466172FE819B42C0D8F8A7AFC2526240C1C991297A9B42C04C040539C3526240BF243A70739B42C054CF38C3C3526240E09D7C7A6C9B42C09C95A3B6C3526240B50F1E12639B42C072D1DA7EC3526240EF46301F5A9B42C075DFD682C352624071E888D7509B42C016647039C3526240569F06674B9B42C0DB4E5B23C2526240EA077591429B42C0ACFB6C89C152624088E41A553C9B42C0F6459D14C1526240CC75BFAF369B42C035E213FCC0526240EE08A7052F9B42C0B528FDCEC05262407CE82741249B42C01B50CAFFBF526240A3F08FAD1D9B42C039F9E3ACBE5262409F877F7D199B42C0333CAC26BE5262407E4D7BEF149B42C08A79B18BBD5262400F90D4E70F9B42C02E9CB525BC526240D18A146F099B42C035D5EEB2BA526240D4884FF0039B42C0B58E05E0BA526240929B3CC0EE9A42C0ACD73E2EBB526240F810F9D3EB9A42C034A1A41BBC5262400C885AE4E89A42C01C87B0D0BD5262407BB889FFE09A42C0FD1F1620C05262408E401768D29A42C06D03D259C1526240519DB3AACA9A42C0CFFF6101C2526240B48185DDC19A42C07BD058A0C2526240C50BD8C4B89A42C055E9DD0EC35262407D5061B6AE9A42C0E35B0EAAC3526240CA4054D0A39A42C0AA65C636C45262400CBD0F51969A42C0F6211400C8526240B37CB83F729A42C0DF8211A0CB526240DF180280639A42C0F885FCD8C9526240E17261495E9A42C0E603029DC9526240CA4A38995D9A42C0FE73E2BCC9526240850C3F93589A42C0C2A04CA3C95262400C231862509A42C08B57B494C7526240D79FC4E74E9A42C0171E45E7C6526240F2214D614A9A42C0760F75C4C6526240165A8C70499A42C094111780C6526240A0015020479A42C0748E4B66C652624090042B98429A42C09AFFFC63C6526240858ABB8B419A42C0E80F7283C6526240B0B9B42B3E9A42C0440AAF6EC6526240DBF6E2303D9A42C08641F4FFC5526240CC2D0840379A42C05C210780C5526240C80CAF7F329A42C03C5CBC69C452624017CAD303309A42C0B6FC76C8C3526240E24680892E9A42C0E98E0FC4C3526240E24680892E9A42C0E68013C0C35262407D0B46802E9A42C09CE0F65FC25262407D0B46802E9A42C0E40522D5C152624094D74AE82E9A42C027439FD9BF526240CF5F8D58309A42C073DE5A81BC52624034AF343A319A42C0DC195C29BA5262405EEC623F309A42C0F54A5986B8526240DD47C9062D9A42C0D277126CB7526240D4415E0F269A42C0BA698E07B6526240389CF9D51C9A42C05C397B67B45262402C6FFDAA129A42C0B1E485CFB1526240D276A796089A42C05B7C0A80B1526240B5914660079A42C0FC4BF7DFAF526240FC4E3860FC9942C09B3BFA5FAE5262405F2DD21FF59942C012E85D06AD52624062A70EA8ED9942C066E95443AC52624053060E68E99942C0F913950DAB5262402A28FB9DDC9942C00A7F8637AB52624003EF3F8DD69942C0DBFAE93FAB5262407B25DA9FD59942C0FE74A84BAB5262407B6D910FD59942C08786C5A8AB526240D035DDFCD09942C09F69D322AC5262404A1CC3ADCC9942C09ED96443AD52624018B14F00C59942C04A4B9B60AE526240C2DF8A1FBE9942C0985B1080AE526240343F4860BD9942C0228CFA7FB052624086EC7200B39942C096804EF7B0526240DB807456B09942C02ED85768B1526240D66D50FBAD9942C01FA6D82CB252624033750DE9A69942C0992CEE3FB2526240C3499A3FA69942C044DD0720B55262407B6649809A9942C044DD0720B5526240BE0864C0A39942C01D9D0480B45262406F0C01C0B19942C01D9D0480B452624013DD6921B79942C0003F3E7CB452624038807EDFBF9942C0DFCFDF3AB55262405DA79196CA9942C0E1390087B5526240792A9611CD9942C0A8CDEE7FB65262407B25DA9FD59942C057D7570DB8526240D6B3D606DD9942C04BCD7921B85262407102D369DD9942C01A12F758BA5262401A2E1796E49942C064C68091BC5262407D299721E99942C08C5363F8BE526240997E8978EB9942C003E0E9DFBF526240100B1060EC9942C0E960FD9FC3526240B5FB5580EF9942C094111780C652624067FCB1FFF09942C0D57036C2C7526240A85BD141F29942C0010200000002000000D57036C2C7526240A85BD141F29942C046820420C9526240186D9F9FF39942C00102000000B7000000D57036C2C7526240A85BD141F29942C0C50D0929C9526240FA25E2ADF39942C0F0B9B832CD52624051FDDE01F99942C079DE324CD2526240BB09BE69FA9942C061C7DA3AD3526240A3C7EF6DFA9942C02BC5E97FD45262406E3E6480FA9942C0BE1C2C52D7526240EB79ED88F99942C0F3B688DED8526240CE7AE706F99942C0191F662FDB52624064E4D132F79942C0D257EB1FDF5262400CEDF71FF49942C0AE92D96AE0526240B998B047F29942C07B8A77DBE052624043684EA8F19942C04B8D7516E2526240BF55E8CDF29942C0539A289DE35262401F4AB4E4F19942C04779419FE3526240378C82E0F19942C0DC3818A0E3526240A2CCABDFF19942C050A335ABE3526240EF9705C9F19942C03AF361ACE552624062D520CCED9942C066D6F786E75262403F47F5E7EC9942C088BA0F40EA526240E4DB16C0EF9942C0DD4A6540EC52624031CF4A5AF19942C0A1FE6959ED5262407EDC2340F29942C02A9D595CED526240BF9D9F3DF29942C0634BEA5FED5262407EDC2340F29942C0B8C7D287EE52624043B00518F19942C0058DF4FDEF5262405B261EABEF9942C007DD6FFEF0526240D97B4CFFED9942C0D4FCE71FF352624082FA3B80EA9942C0B2423635F5526240CB42E0EDE69942C0AFEC82C1F5526240D7385101E69942C0E1928895F6526240493CEAF9E49942C0680EFF9FF95262403F582140E19942C0631F09A0FD5262407707C25FDD9942C02920ED7F0053624076775380DE9942C064F0E65F015362409E8834E0E29942C064F0E65F0153624018DAEF3FE89942C02920ED7F0053624086AB0320EE9942C0DC9FE63FFF526240C52CC59FF29942C075CF1500FE5262400F0E51E0F89942C0D41F065FFD52624090508E5DFD9942C0F221A81AFD52624048B2FD1AFF9942C067EB85A7FC526240ED2C7AA7029A42C0F33EE99FFB526240AD52D55F0A9A42C03FEE1120F9526240C8E64FC01B9A42C0CF0DF21FF75262402B5BDA5F2C9A42C032135674F5526240B553CE72349A42C071112917F45262406BA395D63A9A42C078A686ECF2526240B676ECB13E9A42C05E5CF45FF1526240B3C068A0439A42C0E7BB00A0EF52624079831E204E9A42C086AB0320EE526240EB05FA9F579A42C0392BFDDFEC526240DB673AE05F9A42C016CBE31FEC526240FAA93B60689A42C016CBE31FEC526240A34B49206F9A42C0249B06A0EC526240224ECC1F789A42C04BDB0940ED52624040005FC0819A42C0AFCBF09FEE526240545227A0899A42C01FAC10A0F052624009E46D00919A42C0FD929E33F35262400598439C989A42C0394F2B3BF3526240B8CCE9B2989A42C00EC40D53F6526240B31E6393A19A42C075351E11F85262409C5BD71EAC9A42C06FFF80BDF85262406F6B6688BE9A42C0A1ED3D01F9526240681888AFC09A42C0680EFF9FF95262406BF12900C69A42C0DEAEF25FFB526240B2440CE0D29A42C0631F09A0FD52624076775380DE9A42C0DC9FE63FFF5262404FF92180E59A42C0ABB019E0025362405E9A22C0E99A42C0A9A10DC0065362403FEBD09FEC9A42C0F7263C570A536240FDDB65BFEE9A42C0EF13515D0A53624050DAC0C2EE9A42C0A99AC5300C536240FC4BF7DFEF9A42C001F15FC50E536240C632FD12F19A42C05314F93F115362407EDC2340F29A42C04B45196015536240109EBFBFF79A42C0707610E019536240FCDEA63FFB9A42C0BE8575E31D536240DE91B1DAFC9A42C0DBF40C861F53624060FA038AFD9A42C0E8E6D143235362401EEB98A9FF9A42C0648918C025536240566133C0059B42C00702092F26536240959A3DD00A9B42C0AB4CE77926536240873C388E0E9B42C0077536892653624020EF552B139B42C09F5912A026536240C0A7DEBF1E9B42C05DC6A8C626536240987F9994279B42C0B9EEF7D526536240001EAC5A2D9B42C0AD88F5A1265362405BC0159A359B42C0A239FC7F26536240AC7EB61F3A9B42C05AE95A2026536240E6CC76853E9B42C07F4FAC5325536240881BA66C479B42C056ED3FD723536240F907DB99539B42C05C26796422536240B2C0B22D5E9B42C069780EC021536240BBB8E8BF629B42C0755776C12053624042D2020F679B42C07F5C2C561E53624090EE8C5B719B42C06B14ED851D5362409393E414789B42C05CB7F75F1D53624021BE5D40799B42C0472701201D536240E68013C0839B42C0A9DE75911D536240438B112E899B42C061B94A1C1E53624027E9ABF58F9B42C01F7CCD172053624083ED71F0969B42C09CB11EAD205362402355CA21989B42C0BBB8E8BF2253624009771D609C9B42C029A84D4123536240AF1177AB9D9B42C06D6EF195255362407642F9CCA39B42C0B45FD27326536240543948E3AB9B42C00D912E91265362407B2A4C84B29B42C09F5912A026536240E9CD4D40B89B42C01FFC1FBB26536240690A534ABE9B42C0D130C6D126536240AC6AEE8DC69B42C04B2DA5782653624092729C80CB9B42C08DA9054026536240C693933FCE9B42C06A49EC7F255362408AC6DADFD99B42C06A49EC7F25536240B5824B6CE39B42C08DACA1792553624054B02193E79B42C034C0609225536240ABD50DCAEA9B42C0648918C025536240C52CC59FF29B42C0611FF873255362401689096AF89B42C0E14ED83425536240618A7269FC9B42C04F89905F245362400455A357039C42C080E2B66C2353624084D95FD1089C42C094FF7F52235362402B8E5E68099C42C02F68210123536240D6E5EF390B9C42C015D9733E21536240AA549ADE0F9C42C013FFC1D11F5362403DD4B661149C42C0A65714C01E536240E82510C0179C42C021E7FD7F1C53624061E75C401E9C42C049360D40195362408DA90540269C42C0C1E50C2017536240A06B5F402F9C42C0A77E390E17536240210AC105349C42C06EB99FF816536240AE9E93DE379C42C08F6A7D36175362405DBB59283E9C42C0D955ED3F17536240F7EFB03F3F9C42C02CF587C11753624072EB7FCA429C42C06516461F18536240651DE967459C42C01FFC7A74195362404813EF004F9C42C0ADF545421B536240EB8F300C589C42C0D7E7209E1B5362406D0CF093599C42C026D6F37F1853624074FE37407A9C42C0F9D51C20185362405C210780859C42C05105ED1F15536240742497FF909C42C08B04094012536240B73302E08E9C42C0FFB7EDD60D536240708D74AB8C9C42C02982EE810C53624083E4F8FC8B9C42C08432E8DF09536240B3823A408B9C42C021510DA0045362406CC207C0899C42C03A3DEFC60253624096B77E55899C42C03C32569BFF5262401F590A92889C42C04562821AFE526240D117E714899C42C0554FE61FFD52624025726660899C42C0BD5DE5BFF6526240E68013C0839C42C0392BFDDFEC526240BF6F32607F9C42C07BF9F8DFE5526240FA3F2C40809C42C0BDC7F4DFDE52624001124DA0889C42C07356FABFD952624030F54E60959C42C023F609A0D85262408DD13AAA9A9C42C09E85F35FD65262407009C03FA59C42C0B524F6BFD2526240AA6FAAFFBD9C42C0B524F6BFD2526240AE934440CF9C42C0756506E0D5526240861854C0E29C42C00E661360D85262405B79C9FFE49C42C0BAE70A00DF52624020A9CF1FE49C42C0B2FAD97EE8526240E8667FA0DC9C42C068267387E852624024230CA8DC9C42C063207475EC526240C4D21B49DD9C42C0C17BFDFFEE526240FECAEFD9DF9C42C0E7BB00A0EF5262401CF80780E09C42C0D4FCE71FF35262409649C3DFE59C42C07CCD1720F65262406A8A5B60EA9C42C0B44AFAC5F65262403385CE6BEC9C42C0483547B1F7526240DF7A0382EF9C42C050E339B6F95262408D919158F79C42C07ABE0B00FA52624033FED87FF89C42C0F05EFFBFFB5262401870E01F009D42C0169F0260FC526240E47107A0079D42C0169F0260FC526240E90E62670A9D42C037F4BB55FC526240FE2A1B310E9D42C01A828879FB5262405A8B0574159D42C0B2AE1B00FB5262402EE64240199D42C0B86EEFBFFA52624056F723A01D9D42C0350DE59FF45262401F6BA1BF2B9D42C02CAFD096E0526240000000E04F9D42C0 - - - true - - - - 01050000007B00000001020000000200000035BEE5A0FA486240785C548B887F42C00619B787F34962403A8D599B6B7A42C0010200000002000000A5AE6B6A0F516240EE23B726DD9B42C025AA5D670F516240B165B130DD9B42C001020000000400000025AA5D670F516240B165B130DD9B42C06AB3FB9F0D516240B5F81400E39B42C01A530B800C5162405AE95A20E69B42C01236CF150C5162401D566AF4E69B42C00102000000030000001236CF150C5162401D566AF4E69B42C06BB933130C516240EFBC9EF9E69B42C062B933130C51624001BD9EF9E69B42C001020000000500000062B933130C51624001BD9EF9E69B42C0984979520B516240D6468666E89B42C07DCB9C2E0B516240CA3CA87AE89B42C083013A820A516240E80D9CD8E89B42C01820D1040A516240946B651DE99B42C001020000000A0000001820D1040A516240946B651DE99B42C09FCA694F0951624012D5004AE89B42C0E47107A00751624072593B40E69B42C0881E42A6065162404ACC58D9E39B42C09D9ACB0D065162408C930C4AE29B42C03909A52F045162409BF749FFDC9B42C0B159E48D025162401A738D85D79B42C00B7A6F0C01516240F2A32B22D49B42C0EB6F09C0FF5062403BA41820D19B42C02D3185BDFF506240DC9BDF30D19B42C00102000000040000002D3185BDFF506240DC9BDF30D19B42C059A725B1FF506240ADE93015D19B42C027744D37FF5062407BE35AA3D49B42C04562821AFE506240158843DBD69B42C001020000000B0000004562821AFE506240158843DBD69B42C0ED7E15E0FB5062404055E0BFD49B42C0B86EEFBFFA506240A654D33FD29B42C0575EF23FF950624011058E5FD39B42C0A74E513FF95062406403E962D39B42C039002C3CF950624022426D65D39B42C08CA262F7F85062409F8B2BD3D49B42C0041E1840F8506240F0355F80D89B42C03C878D0DF8506240857F6CEDD89B42C0E0BDFE7FF75062404F667220DA9B42C04333F4F4F650624018A99C9BDB9B42C00102000000350000004333F4F4F650624018A99C9BDB9B42C0E4FF441BF6506240C48A64D9DD9B42C0B2423635F5506240F3C64961DE9B42C0E2CC0AA0F35062400518963FDF9B42C081BC0D20F250624057C80160E19B42C0266CE45FF050624047BAB07FE89B42C05D8B16A0ED5062400F0E51E0F89B42C0D81A0060EB5062406ED113E0059C42C03B3A0900E9506240F73361A0109C42C0676902A0E55062406E6704C01D9C42C052DCA799E450624071D014F0219C42C085121C4DE45062404DF4F928239C42C09164B1A8E3506240FE64E7C8259C42C0FA6B68B9E25062407389D981299C42C0ABCC94D6DF506240F9F8DFA52F9C42C09274CDE4DB50624090436914379C42C0029EB470D9506240838F77FD389C42C097491E99D85062400CFDB8A2399C42C01426E71FD8506240950ED6FF399C42C0A0038184D75062404DA48F543A9C42C08119F8F6D3506240C977842E3C9C42C0EB54F99ED1506240A68D34023B9C42C0FE55911BCF506240859BE7E3359C42C0D66C8A6CCC506240AD61D0532E9C42C04285D9BACA5062409745178A2A9C42C007E92972C850624074EB353D289C42C0264A8CAFC7506240FED478E9269C42C0C528BE90C45062407D6DA23B2D9C42C0D4EBBBC7BE506240EB556474409C42C08B0CBCA4BB506240F5E681D94E9C42C0D08547D1B95062408EB344C2529C42C025BE24DFB6506240A2C38DA5599C42C074925275B45062400B3AC6BA5D9C42C05A907758B2506240A0DFF76F5E9C42C0058DF4FDAF506240E6F516C5619C42C0081566EBAA506240D29B9B80709C42C02EA4688AA5506240443B5DCC859C42C06FF3C649A150624019575C1C959C42C09AACF6559E506240BAE70A009F9C42C028F5C0229A5062408D9B7521B19C42C0B04C09D2965062406DD5BF35C19C42C0B75D68AE9350624077D66EBBD09C42C098593AD5905062405D5727C2E19C42C0CFA67E398E5062402627C929F09C42C0C194DCBC8C50624097EB23A6FA9C42C0C19A14308B506240DE10F461079D42C09F292AD188506240F5DF394A149D42C0A0B998B08750624028DB1BD71A9D42C099428C7C83506240AC8FE2772E9D42C08E9DA68581506240A56D57433D9D42C02AE4A5F67D5062405930F147519D42C0178B95877B506240DA1F8370609D42C0AD6A49477950624055F08057709D42C0010200000003000000AD6A49477950624055F08057709D42C0575EF23F79506240266CE45F709D42C042E504127950624060F426D0719D42C001020000001400000042E504127950624060F426D0719D42C0FDD071DA785062407730BD58739D42C011001C7B765062404767AA71809D42C03521527875506240791AD58E879D42C0D9CAF044755062405494A69C8A9D42C0322DFBBF745062408014D09F919D42C0217DEE5F7450624093D629A09A9D42C00CEDF71F7450624083CB1940AE9D42C0924FD9FA7350624020915B38B59D42C06BB015D973506240BED29E37BA9D42C0577FDF1A7350624083C366DBC49D42C0A7FC10C0725062408712D2BFC99D42C016EF117B72506240CD9EBAA8CC9D42C05E73FD717150624056D3F544D79D42C025242DF07050624031D7FDBEDA9D42C0266CE45F70506240B2D7BB3FDE9D42C0BE535CB06F50624045B9347EE19D42C083B174F46E506240D89AADBCE49D42C0FDB0EFD46D5062402F5E3D38E99D42C03A9702B96C5062400BBE498EEB9D42C00102000000030000003A9702B96C5062400BBE498EEB9D42C0B05EFBB86C506240B7F3588EEB9D42C0BC7FE2B66C5062409FB18A92EB9D42C0010200000003000000BC7FE2B66C5062409FB18A92EB9D42C0D53A16806B5062406E3B2300EE9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C002E264D16A506240A3BE767AEF9D42C05ED945CF6A506240E4AFAD7EEF9D42C00102000000030000005ED945CF6A506240E4AFAD7EEF9D42C0ACC1A0F169506240C6600F37F19D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C05F5B3FFD675062405A76D20CF39D42C0AD0008F56750624017362214F39D42C0010200000012000000AD0008F56750624017362214F39D42C0F199EC9F67506240E88CDE5FF39D42C0648918C065506240C52CC59FF29D42C0015CDABA65506240ADEAF6A3F29D42C0AE5D7FB765506240846B49A2F29D42C089B08630635062407DEA58A5F49D42C01E8D9EB661506240AAE683AFF99D42C07171546E62506240647DB905019E42C0A44808A062506240A5F04520039E42C0170912806450624013C25900099E42C0AABF14D466506240691D554D109E42C0EC0AC73D6750624032326DA4119E42C0C7A1D9D068506240B3FEE08D169E42C0E7F05A536A50624055C3D9081F9E42C094933FCE6A506240815DA857259E42C0DBFAE93F6B506240CC9A58E02B9E42C0D53A16806B5062401EDE7360399E42C027B284626B50624019BD1ABC409E42C001020000000300000027B284626B50624019BD1ABC409E42C06DDAD6606B506240C1BC1127419E42C0240012606B50624012B85B5B419E42C0010200000005000000240012606B50624012B85B5B419E42C0D81A00606B50624049A01C60419E42C0C66AF3FF6A50624069E21DE0499E42C08E7AE3FF695062402AF40BC0509E42C0B5A91501695062409356D7FC539E42C001020000000E000000B5A91501695062409356D7FC539E42C0A2F4E04966506240279AACF6559E42C0828E56B56450624099E5FC5E549E42C00839EFFF635062400B45BA9F539E42C0EBC6BB236350624041A66BDC519E42C0F2D1E28C61506240E34D7E8B4E9E42C0DE5E2DD25F506240A456F3774A9E42C0BAE70A005F5062403A92CB7F489E42C032970AE05C5062401281EA1F449E42C03C5409055B50624061527C7C429E42C0E6EB8DB55A50624061F65734429E42C0D83274475A5062409723BFD9419E42C04C16F71F595062405620C4DF409E42C0F609A018595062407F9F71E1409E42C001020000000C000000F609A018595062407F9F71E1409E42C085AD7E11595062406D6292DB409E42C0FDE6B45D57506240E436D032419E42C07ADD223056506240F581E49D439E42C0C586133D55506240280D350A499E42C0A2F8E75854506240A8774C384F9E42C013550960545062401950148D5A9E42C01355096054506240E333D93F4F9E42C04E250340555062402E122400499E42C08615134056506240B3C068A0439E42C0D67503605750624032303C40419E42C0F609A018595062407F9F71E1409E42C001020000000E000000F609A018595062407F9F71E1409E42C02207DB3E5A506240F02609D3419E42C0AB460AC05A50624085701640429E42C05DC0CB0C5B5062409C0E0984429E42C0867E5CD15C5062401281EA1F449E42C058BACCFA5E506240E793707C489E42C01F20A9CF5F506240921914724A9E42C054E8178061506240C0D3BF7F4E9E42C041D3122B63506240B81E85EB519E42C067583101645062400540CBA9539E42C005114EB0645062401C68F459549E42C08DA90540665062408CD5E6FF559E42C03B3A090069506240E7543200549E42C0B5A91501695062409356D7FC539E42C0010200000007000000B5A91501695062409356D7FC539E42C0D923D40C69506240C3DA73F4539E42C0A6D3BA0D6A506240FA6F6FC8509E42C00B3A6B016B506240EC6415DB499E42C0F36ACA5F6B506240449B2D6A419E42C0D81A00606B506240731FCA61419E42C0240012606B50624012B85B5B419E42C0010200000004000000240012606B50624012B85B5B419E42C0BDCA35606B50624014E97E4E419E42C0E749E3616B506240145F48E2409E42C027B284626B50624019BD1ABC409E42C001020000001100000027B284626B50624019BD1ABC409E42C0FEB9C3816B5062404E621058399E42C0AE84494C6B506240E9E115D22B9E42C00E034CCF6A506240CF561465259E42C0A02AF05F6A506240F0879FFF1E9E42C03E1AF3DF68506240D1459E7F169E42C0184D1D9A68506240782EE7AD159E42C0C5991540675062404A743BA0119E42C0C201E3CF665062401B24E93F109E42C08E812B8F645062405A88C4F3089E42C07DD756A262506240D574E217039E42C080A0377062506240C4B30419019E42C069780EC0615062409EAE939FF99D42C0CA880B4063506240006D50A0F49D42C0E70B10BB65506240ADEAF6A3F29D42C006CEBE97675062400C079D6BF39D42C0AD0008F56750624017362214F39D42C0010200000003000000AD0008F56750624017362214F39D42C095FBD3FC675062405A76D20CF39D42C0A478A4056850624056DAF004F39D42C0010200000003000000A478A4056850624056DAF004F39D42C08E7AE3FF695062402B9C4940F19D42C05ED945CF6A506240E4AFAD7EEF9D42C00102000000030000005ED945CF6A506240E4AFAD7EEF9D42C0E7919AD16A5062400EFF9F79EF9D42C0C68DB8D36A5062405EB86C75EF9D42C0010200000003000000C68DB8D36A5062405EB86C75EF9D42C08A66AF886B50624050F4650EEE9D42C0BC7FE2B66C5062409FB18A92EB9D42C0010200000002000000BC7FE2B66C5062409FB18A92EB9D42C03A9702B96C5062400BBE498EEB9D42C00102000000140000003A9702B96C5062400BBE498EEB9D42C0711B0DE06D5062406B1ACA3FE99D42C0C17BFDFF6E5062402B9908C0E49D42C01D739EB16F506240337C5578E19D42C08294336F7050624064DE4F32DE9D42C0ABB420EF70506240D7D3B3C5DA9D42C05B7C0A8071506240D955ED3FD79D42C0AAAEE87B72506240FC2257A0CC9D42C0309B00C372506240C2CE5EC7C99D42C04850FC18735062404835ECF7C49D42C0F75C01E0735062408F4E0240BA9D42C077FF0EFB73506240BB55212FB59D42C006E8082A74506240F4103235AE9D42C0D08C8F60745062400A4F43AF9A9D42C014E63DCE74506240F78CE9AE919D42C029BB4F4475506240B9CFE0A58A9D42C0568D14807550624002A2BB7F879D42C0A8CDEE7F765062402920ED7F809D42C02A5E1BE078506240B3EC4960739D42C042E504127950624060F426D0719D42C001020000000200000042E504127950624060F426D0719D42C0AD6A49477950624055F08057709D42C0010200000024000000AD6A49477950624055F08057709D42C05E3013A081506240E3C9C91F679D42C05F01F15F85506240D746E11F5B9D42C031F20DE0885062402222EB5F489D42C0B9420E008B50624079ED2D40369D42C04473F8FF8C5062404E250340159D42C0B73302E08E506240FCE1E7BF079D42C08EE4F21F9250624013BF1880FC9C42C0756506E0955062400CEDF71FF49C42C088BA0F40AA506240F1C5CD5FD79C42C0D32B0A60AF506240C9213DA0C79C42C05B7C0A80B1506240B63643609B9C42C0EE8B95E2B4506240C89EF3098F9C42C0BB270F0BB550624075E84F768E9C42C0B2AE1B00BB5062402D3E05C0789C42C0EB6F09C0BF5062408C68965F619C42C0D2C1FA3FC7506240F6F53240589C42C068A4EF7FD1506240DC61B8DF469C42C04B451960D5506240DBCE08803B9C42C01D818989D75062408F650B523A9C42C0D3646B22D8506240534D5A023A9C42C00EA8925CD95062408FC7670D399C42C0FAA6FADFDB506240B4BD2720379C42C0F5B704E0DF506240E7BB00A02F9C42C0BBB8E8BFE25062404A0A2C80299C42C0D63329AAE3506240EC2708C3259C42C07EC2D9ADE55062401A69A9BC1D9C42C02914330CE95062405C6F9BA9109C42C0D215116AEB5062408C18D1D1059C42C0EB45FEAAED5062404BCADDE7F89B42C052F98D65F0506240D0419770E89B42C0DAD6602BF2506240F28CC756E19B42C0002BD1A3F3506240E7D0D84DDF9B42C00E547C32F55062401D46F762DE9B42C07CCD1720F65062406B871AE0DD9B42C04333F4F4F650624018A99C9BDB9B42C00102000000090000004333F4F4F650624018A99C9BDB9B42C0289B7285F750624025E7C41EDA9B42C04E098849F85062400E7D1C72D89B42C0CB55E2F0F8506240753A90F5D49B42C08CFE863FF95062406403E962D39B42C026BD14C3FA5062405F8E684CD29B42C0E14625D0FB506240FE9364C2D49B42C01CE3D418FE50624068869EDED69B42C04562821AFE506240158843DBD69B42C00102000000040000004562821AFE506240158843DBD69B42C08D3FF61FFE50624092054CE0D69B42C0DC9FE63FFF50624028E5FF9FD49B42C02D3185BDFF506240DC9BDF30D19B42C001020000000A0000002D3185BDFF506240DC9BDF30D19B42C0086C7308015162408D68F118D49B42C099000D80025162400936AE7FD79B42C01281EA1F045162402FB72000DD9B42C08641F4FF055162409298FB3FE29B42C0382EE3A606516240734B06DBE39B42C0B1C8659207516240C5579643E69B42C03D9D2B4A0951624000982144E89B42C08152FEFF0951624053AAE91FE99B42C01820D1040A516240946B651DE99B42C00102000000050000001820D1040A516240946B651DE99B42C0A1BEC0070A516240E869C020E99B42C0E2EFCD250B51624047BAB07FE89B42C0CAF21A600B516240304AD05FE89B42C062B933130C51624001BD9EF9E69B42C001020000000300000062B933130C51624001BD9EF9E69B42C029F8B7150C516240723F96F4E69B42C01236CF150C5162401D566AF4E69B42C00102000000040000001236CF150C5162401D566AF4E69B42C035A3D57F0C5162407E63192CE69B42C09C5C9DAD0D516240B5F81400E39B42C025AA5D670F516240B165B130DD9B42C001020000000400000025AA5D670F516240B165B130DD9B42C010EF94690F516240AC623B29DD9B42C0DD7305800F516240184740E0DC9B42C0A5AE6B6A0F516240EE23B726DD9B42C0010200000009000000D57036C2C7526240A85BD141F29942C0C50D0929C9526240FA25E2ADF39942C0F0B9B832CD52624051FDDE01F99942C079DE324CD2526240BB09BE69FA9942C061C7DA3AD3526240A3C7EF6DFA9942C02BC5E97FD45262406E3E6480FA9942C0BE1C2C52D7526240EB79ED88F99942C0F3B688DED8526240CE7AE706F99942C07D879512DB526240FAED9149F79942C00102000000030000007D879512DB526240FAED9149F79942C0191F662FDB52624064E4D132F79942C09737634FDB5262408DBADC19F79942C00102000000090000009737634FDB5262408DBADC19F79942C0D257EB1FDF5262400CEDF71FF49942C0AE92D96AE0526240B998B047F29942C07B8A77DBE052624043684EA8F19942C04B8D7516E2526240BF55E8CDF29942C0539A289DE35262401F4AB4E4F19942C04779419FE3526240378C82E0F19942C0DC3818A0E3526240A2CCABDFF19942C0927F37A7E3526240AC7128D1F19942C0010200000003000000927F37A7E3526240AC7128D1F19942C050A335ABE3526240EF9705C9F19942C09B6053AFE3526240964FD5C0F19942C00102000000090000009B6053AFE3526240964FD5C0F19942C03AF361ACE552624062D520CCED9942C066D6F786E75262403F47F5E7EC9942C088BA0F40EA526240E4DB16C0EF9942C0DD4A6540EC52624031CF4A5AF19942C0A1FE6959ED5262407EDC2340F29942C02A9D595CED526240BF9D9F3DF29942C0634BEA5FED5262407EDC2340F29942C03AB9027DEE526240F7B4D722F19942C00102000000030000003AB9027DEE526240F7B4D722F19942C0B8C7D287EE52624043B00518F19942C0308A808AEE5262409DD76815F19942C0010200000010000000308A808AEE5262409DD76815F19942C0058DF4FDEF5262405B261EABEF9942C007DD6FFEF0526240D97B4CFFED9942C0D4FCE71FF352624082FA3B80EA9942C0B2423635F5526240CB42E0EDE69942C0AFEC82C1F5526240D7385101E69942C0E1928895F6526240493CEAF9E49942C0680EFF9FF95262403F582140E19942C0631F09A0FD5262407707C25FDD9942C02920ED7F0053624076775380DE9942C064F0E65F015362409E8834E0E29942C064F0E65F0153624018DAEF3FE89942C02920ED7F0053624086AB0320EE9942C0DC9FE63FFF526240C52CC59FF29942C075CF1500FE5262400F0E51E0F89942C0D41F065FFD52624090508E5DFD9942C0010200000003000000D41F065FFD52624090508E5DFD9942C0F221A81AFD52624048B2FD1AFF9942C0A36B13A8FC526240F8A11DA3029A42C0010200000003000000A36B13A8FC526240F8A11DA3029A42C067EB85A7FC526240ED2C7AA7029A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000025000000A05FB9A5FC526240FCFCF6B4029A42C0F33EE99FFB526240AD52D55F0A9A42C03FEE1120F9526240C8E64FC01B9A42C0CF0DF21FF75262402B5BDA5F2C9A42C032135674F5526240B553CE72349A42C071112917F45262406BA395D63A9A42C078A686ECF2526240B676ECB13E9A42C05E5CF45FF1526240B3C068A0439A42C0E7BB00A0EF52624079831E204E9A42C086AB0320EE526240EB05FA9F579A42C0392BFDDFEC526240DB673AE05F9A42C016CBE31FEC526240FAA93B60689A42C016CBE31FEC526240A34B49206F9A42C0249B06A0EC526240224ECC1F789A42C04BDB0940ED52624040005FC0819A42C0AFCBF09FEE526240545227A0899A42C01FAC10A0F052624009E46D00919A42C0FD929E33F35262400598439C989A42C0394F2B3BF3526240B8CCE9B2989A42C00EC40D53F6526240B31E6393A19A42C075351E11F85262409C5BD71EAC9A42C06FFF80BDF85262406F6B6688BE9A42C0A1ED3D01F9526240681888AFC09A42C0680EFF9FF95262406BF12900C69A42C0DEAEF25FFB526240B2440CE0D29A42C0631F09A0FD52624076775380DE9A42C0DC9FE63FFF5262404FF92180E59A42C0ABB019E0025362405E9A22C0E99A42C0A9A10DC0065362403FEBD09FEC9A42C0F7263C570A536240FDDB65BFEE9A42C0EF13515D0A53624050DAC0C2EE9A42C0A99AC5300C536240FC4BF7DFEF9A42C001F15FC50E536240C632FD12F19A42C05314F93F115362407EDC2340F29A42C04B45196015536240109EBFBFF79A42C0707610E019536240FCDEA63FFB9A42C0623B08DB1D5362403B7A52D7FC9A42C0010200000003000000623B08DB1D5362403B7A52D7FC9A42C0BE8575E31D536240DE91B1DAFC9A42C0CDEABBE31D536240C40DCFDAFC9A42C0010200000017000000CDEABBE31D536240C40DCFDAFC9A42C0DBF40C861F53624060FA038AFD9A42C0E8E6D143235362401EEB98A9FF9A42C0648918C025536240566133C0059B42C00702092F26536240959A3DD00A9B42C0AB4CE77926536240873C388E0E9B42C0077536892653624020EF552B139B42C09F5912A026536240C0A7DEBF1E9B42C05DC6A8C626536240987F9994279B42C0B9EEF7D526536240001EAC5A2D9B42C0AD88F5A1265362405BC0159A359B42C0A239FC7F26536240AC7EB61F3A9B42C05AE95A2026536240E6CC76853E9B42C07F4FAC5325536240881BA66C479B42C056ED3FD723536240F907DB99539B42C05C26796422536240B2C0B22D5E9B42C069780EC021536240BBB8E8BF629B42C0755776C12053624042D2020F679B42C07F5C2C561E53624090EE8C5B719B42C06B14ED851D5362409393E414789B42C05CB7F75F1D53624021BE5D40799B42C0472701201D536240E68013C0839B42C0C1BA9F8C1D536240FA9BD0F2889B42C0010200000003000000C1BA9F8C1D536240FA9BD0F2889B42C0A9DE75911D536240438B112E899B42C02B15B7931D536240D293414A899B42C00102000000060000002B15B7931D536240D293414A899B42C061B94A1C1E53624027E9ABF58F9B42C01F7CCD172053624083ED71F0969B42C09CB11EAD205362402355CA21989B42C0BBB8E8BF2253624009771D609C9B42C0A642BB3823536240F2B483959D9B42C0010200000003000000A642BB3823536240F2B483959D9B42C029A84D4123536240AF1177AB9D9B42C041DD7F432353624027003EB19D9B42C001020000000400000041DD7F432353624027003EB19D9B42C06D6EF195255362407642F9CCA39B42C0B45FD27326536240543948E3AB9B42C014C1199126536240AA35997FB29B42C001020000000300000014C1199126536240AA35997FB29B42C00D912E91265362407B2A4C84B29B42C033824391265362403ADE5C8CB29B42C001020000000800000033824391265362403ADE5C8CB29B42C09F5912A026536240E9CD4D40B89B42C01FFC1FBB26536240690A534ABE9B42C0D130C6D126536240AC6AEE8DC69B42C04B2DA5782653624092729C80CB9B42C08DA9054026536240C693933FCE9B42C06A49EC7F255362408AC6DADFD99B42C06A49EC7F25536240B5824B6CE39B42C00102000000030000006A49EC7F25536240B5824B6CE39B42C08DACA1792553624054B02193E79B42C028C8389225536240B5B2DCC4EA9B42C001020000000300000028C8389225536240B5B2DCC4EA9B42C034C0609225536240ABD50DCAEA9B42C06903899225536240DE36F4D0EA9B42C00102000000030000006903899225536240DE36F4D0EA9B42C0648918C025536240C52CC59FF29B42C0547336742553624095F14B65F89B42C0010200000003000000547336742553624095F14B65F89B42C0611FF873255362401689096AF89B42C0A2FEEF73255362406D4F8D6AF89B42C0010200000004000000A2FEEF73255362406D4F8D6AF89B42C0E14ED83425536240618A7269FC9B42C04F89905F245362400455A357039C42C05770EB7223536240C4AE8EAD089C42C00102000000030000005770EB7223536240C4AE8EAD089C42C080E2B66C2353624084D95FD1089C42C035909A532353624032FB0262099C42C001020000001200000035909A532353624032FB0262099C42C094FF7F52235362402B8E5E68099C42C02F68210123536240D6E5EF390B9C42C015D9733E21536240AA549ADE0F9C42C013FFC1D11F5362403DD4B661149C42C0A65714C01E536240E82510C0179C42C021E7FD7F1C53624061E75C401E9C42C049360D40195362408DA90540269C42C0C1E50C2017536240A06B5F402F9C42C0A77E390E17536240210AC105349C42C06EB99FF816536240AE9E93DE379C42C08F6A7D36175362405DBB59283E9C42C0D955ED3F17536240F7EFB03F3F9C42C02CF587C11753624072EB7FCA429C42C06516461F18536240651DE967459C42C01FFC7A74195362404813EF004F9C42C0ADF545421B536240EB8F300C589C42C0D7E7209E1B5362406D0CF093599C42C0010200000006000000D7E7209E1B5362406D0CF093599C42C026D6F37F1853624074FE37407A9C42C0F9D51C20185362405C210780859C42C05105ED1F15536240742497FF909C42C08B04094012536240B73302E08E9C42C0C6FCE9F90D536240D4AFF2BC8C9C42C0010200000003000000C6FCE9F90D536240D4AFF2BC8C9C42C0FFB7EDD60D536240708D74AB8C9C42C0D45A0BC90D5362405DD659A48C9C42C0010200000005000000D45A0BC90D5362405DD659A48C9C42C02982EE810C53624083E4F8FC8B9C42C08432E8DF09536240B3823A408B9C42C021510DA0045362406CC207C0899C42C07BB540D70253624075632B59899C42C00102000000030000007BB540D70253624075632B59899C42C03A3DEFC60253624096B77E55899C42C06AE186C20253624061FA6E54899C42C001020000001A0000006AE186C20253624061FA6E54899C42C03C32569BFF5262401F590A92889C42C04562821AFE526240D117E714899C42C0554FE61FFD52624025726660899C42C0BD5DE5BFF6526240E68013C0839C42C0392BFDDFEC526240BF6F32607F9C42C07BF9F8DFE5526240FA3F2C40809C42C0BDC7F4DFDE52624001124DA0889C42C07356FABFD952624030F54E60959C42C023F609A0D85262408DD13AAA9A9C42C09E85F35FD65262407009C03FA59C42C0B524F6BFD2526240AA6FAAFFBD9C42C0B524F6BFD2526240AE934440CF9C42C0756506E0D5526240861854C0E29C42C00E661360D85262405B79C9FFE49C42C0BAE70A00DF52624020A9CF1FE49C42C0B2FAD97EE8526240E8667FA0DC9C42C068267387E852624024230CA8DC9C42C063207475EC526240C4D21B49DD9C42C0C17BFDFFEE526240FECAEFD9DF9C42C0E7BB00A0EF5262401CF80780E09C42C0D4FCE71FF35262409649C3DFE59C42C07CCD1720F65262406A8A5B60EA9C42C0B44AFAC5F65262403385CE6BEC9C42C0483547B1F7526240DF7A0382EF9C42C07DD236B6F95262403BAB8558F79C42C00102000000030000007DD236B6F95262403BAB8558F79C42C050E339B6F95262408D919158F79C42C0E5A210B7F9526240E08FEC5BF79C42C0010200000005000000E5A210B7F9526240E08FEC5BF79C42C07ABE0B00FA52624033FED87FF89C42C0F05EFFBFFB5262401870E01F009D42C0169F0260FC526240E47107A0079D42C0169F0260FC526240E90E62670A9D42C0010200000007000000169F0260FC526240E90E62670A9D42C037F4BB55FC526240FE2A1B310E9D42C01A828879FB5262405A8B0574159D42C0B2AE1B00FB5262402EE64240199D42C0B86EEFBFFA52624056F723A01D9D42C0350DE59FF45262401F6BA1BF2B9D42C02CAFD096E0526240000000E04F9D42C001020000006E000000E23362A581526240000000E04F9D42C0C30C8D2782526240BF153F7C4F9D42C072A02C2184526240A891F1834E9D42C0C1E677F5855262406083CF204F9D42C09CF0B7E287526240DBFF5B24489D42C0E412471E88526240FEB220393E9D42C0430477FB8752624031F378B5379D42C0853BBC8C875262408D3CB59F319D42C0C4398F2F86526240076B52C02C9D42C089552877845262400392B06F279D42C0BC0166BE835262400B896A00259D42C09F477B728352624030E186CE219D42C081D2AB5C83526240BA5A385A1F9D42C03A0C416983526240BD440603199D42C0E946585484526240755B7DD00E9D42C0DC0BCC0A85526240D2EC702A089D42C04DD87E3286526240339C7CC4F99C42C0447DDCC8865262407AE9DCA3ED9C42C008371955865262409663682BE59C42C056BD570886526240128A085ADC9C42C021938C9C855262408CA438A2D69C42C0C4AF58C385526240D634947FD29C42C02B4CDF6B88526240B3D771B2C39C42C071659AFA8A526240D6E65A0FBA9C42C02540A8E68D52624059F047F6AD9C42C08CD99255915262402F7C8ED9A39C42C033A7261C95526240F7C374C69C9C42C02971C2299852624022F36D66999C42C0BC7DB1529C526240A8E96976939C42C0317491E79F52624064DFBA078D9C42C00CC050D1A25262404527F0F3849C42C099B3E32BA65262400A26A36F779C42C0B98C9B1AA8526240E65AB4006D9C42C00B57AC86A952624043064DA6659C42C0B1A94E62AB526240827E95325F9C42C0486E4DBAAD526240793073CB589C42C0163A6524B1526240E3A9A2D34E9C42C089E0C9B8B35262405FFE5426469C42C0C776082DB5526240DC8C89833A9C42C0F0DB10E3B552624092DF47DA329C42C0DB8D999FB6526240B926EEC2209C42C0A2F611AEB6526240ED7DAA0A0D9C42C01CBFA6BDB7526240711706D1FF9B42C04877C6ADB852624036864A6DF39B42C030044A54B95262409F55664AEB9B42C0F45B2A25BA5262404C0C1357DF9B42C09D6340F6BA5262405D3A41F6D59B42C0A09F4E1EBB526240C2EB4493D59B42C0DE639FB6BC526240298F13CBD29B42C004FD2A65BE526240AAE8B413CA9B42C0A7751BD4BE52624085CFD6C1C19B42C0892E5EE2BE526240A01518B2BA9B42C089CF9D60BF52624032E8DF89B49B42C0A31CCC26C0526240941C661EAF9B42C0D843FB58C15262402CC0D254AA9B42C076FC1708C2526240586BCDFBA49B42C096C4FE57C2526240A83462669F9B42C06D2E4844C252624033B44B659B9B42C0C3B068DFC1526240579B5A11909B42C037ED73C6C1526240E8537D9D8A9B42C017AFC3E2C1526240201DC308869B42C05BC3561AC2526240466172FE819B42C0D8F8A7AFC2526240C1C991297A9B42C04C040539C3526240BF243A70739B42C054CF38C3C3526240E09D7C7A6C9B42C09C95A3B6C3526240B50F1E12639B42C072D1DA7EC3526240EF46301F5A9B42C075DFD682C352624071E888D7509B42C016647039C3526240569F06674B9B42C0DB4E5B23C2526240EA077591429B42C0ACFB6C89C152624088E41A553C9B42C0F6459D14C1526240CC75BFAF369B42C035E213FCC0526240EE08A7052F9B42C0B528FDCEC05262407CE82741249B42C01B50CAFFBF526240A3F08FAD1D9B42C039F9E3ACBE5262409F877F7D199B42C0333CAC26BE5262407E4D7BEF149B42C08A79B18BBD5262400F90D4E70F9B42C02E9CB525BC526240D18A146F099B42C035D5EEB2BA526240D4884FF0039B42C0B58E05E0BA526240929B3CC0EE9A42C0ACD73E2EBB526240F810F9D3EB9A42C034A1A41BBC5262400C885AE4E89A42C01C87B0D0BD5262407BB889FFE09A42C0FD1F1620C05262408E401768D29A42C06D03D259C1526240519DB3AACA9A42C0CFFF6101C2526240B48185DDC19A42C07BD058A0C2526240C50BD8C4B89A42C055E9DD0EC35262407D5061B6AE9A42C0E35B0EAAC3526240CA4054D0A39A42C0AA65C636C45262400CBD0F51969A42C0F6211400C8526240B37CB83F729A42C0DF8211A0CB526240DF180280639A42C0F885FCD8C9526240E17261495E9A42C0E603029DC9526240CA4A38995D9A42C0FE73E2BCC9526240850C3F93589A42C0C2A04CA3C95262400C231862509A42C08B57B494C7526240D79FC4E74E9A42C0171E45E7C6526240F2214D614A9A42C0760F75C4C6526240165A8C70499A42C094111780C6526240A0015020479A42C0748E4B66C652624090042B98429A42C09AFFFC63C6526240858ABB8B419A42C0E80F7283C6526240B0B9B42B3E9A42C0440AAF6EC6526240DBF6E2303D9A42C08641F4FFC5526240CC2D0840379A42C05C210780C5526240C80CAF7F329A42C03C5CBC69C452624017CAD303309A42C0B6FC76C8C3526240E24680892E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000019000000E98E0FC4C3526240E24680892E9A42C0E68013C0C35262407D0B46802E9A42C09CE0F65FC25262407D0B46802E9A42C0E40522D5C152624094D74AE82E9A42C027439FD9BF526240CF5F8D58309A42C073DE5A81BC52624034AF343A319A42C0DC195C29BA5262405EEC623F309A42C0F54A5986B8526240DD47C9062D9A42C0D277126CB7526240D4415E0F269A42C0BA698E07B6526240389CF9D51C9A42C05C397B67B45262402C6FFDAA129A42C0B1E485CFB1526240D276A796089A42C05B7C0A80B1526240B5914660079A42C0FC4BF7DFAF526240FC4E3860FC9942C09B3BFA5FAE5262405F2DD21FF59942C012E85D06AD52624062A70EA8ED9942C066E95443AC52624053060E68E99942C0F913950DAB5262402A28FB9DDC9942C00A7F8637AB52624003EF3F8DD69942C0DBFAE93FAB5262407B25DA9FD59942C0FE74A84BAB5262407B6D910FD59942C08786C5A8AB526240D035DDFCD09942C09F69D322AC5262404A1CC3ADCC9942C09ED96443AD52624018B14F00C59942C01E8BE95DAE526240F4112D30BE9942C00102000000030000001E8BE95DAE526240F4112D30BE9942C04A4B9B60AE526240C2DF8A1FBE9942C00CDD9867AE526240D44A0AF5BD9942C00102000000040000000CDD9867AE526240D44A0AF5BD9942C0985B1080AE526240343F4860BD9942C0228CFA7FB052624086EC7200B39942C096804EF7B0526240DB807456B09942C001020000000800000096804EF7B0526240DB807456B09942C02ED85768B1526240D66D50FBAD9942C01FA6D82CB252624033750DE9A69942C0992CEE3FB2526240C3499A3FA69942C044DD0720B55262407B6649809A9942C044DD0720B5526240BE0864C0A39942C01D9D0480B45262406F0C01C0B19942C01D9D0480B452624013DD6921B79942C001020000000A0000001D9D0480B452624013DD6921B79942C0003F3E7CB452624038807EDFBF9942C0DFCFDF3AB55262405DA79196CA9942C0E1390087B5526240792A9611CD9942C0A8CDEE7FB65262407B25DA9FD59942C057D7570DB8526240D6B3D606DD9942C04BCD7921B85262407102D369DD9942C01A12F758BA5262401A2E1796E49942C064C68091BC5262407D299721E99942C0E324EAE8BE52624054FD7669EB9942C0010200000003000000E324EAE8BE52624054FD7669EB9942C08C5363F8BE526240997E8978EB9942C02A8F5209BF52624037BA7889EB9942C00102000000050000002A8F5209BF52624037BA7889EB9942C003E0E9DFBF526240100B1060EC9942C0E960FD9FC3526240B5FB5580EF9942C094111780C652624067FCB1FFF09942C0D57036C2C7526240A85BD141F29942C001020000000400000073FB9B06FB5262400567953E199D42C06A72E778FB5262406CC8E479159D42C0169F0260FC52624075A334400E9D42C0169F0260FC526240E90E62670A9D42C0010200000005000000169F0260FC526240E90E62670A9D42C0525B8F67FC5262404FB2309F079D42C0383C73C5FB5262400633011A009D42C071AB2006FA526240AA76F28EF89C42C0E5A210B7F9526240E08FEC5BF79C42C0010200000002000000E5A210B7F9526240E08FEC5BF79C42C07DD236B6F95262403BAB8558F79C42C00102000000180000007DD236B6F95262403BAB8558F79C42C0F54DF5BFF7526240B5FB5580EF9C42C0CF9AC4C5F65262409FC5F76AEC9C42C01AB7E22CF6526240CFC59569EA9C42C0C8DB0022F3526240840CE4D9E59C42C0E4C40DAEEF52624081334289E09C42C0A026440AEF526240F8C500E4DF9C42C0287BF07FEC5262405F97E13FDD9C42C0121A1C80E852624053A7A89FDC9C42C0CD4AA47EE8526240E8667FA0DC9C42C09CDB847BE5526240B4A1AC29DA9C42C0DCAEE133E3526240993E856DD59C42C06BCB25FAE15262401EB97F76D19C42C03953324AE1526240B2B15C80C79C42C0E5F27A8BE2526240D08547D1B99C42C07F52488DE4526240AA80D657B29C42C0245D33F9E65262408C721F6FA89C42C011178046E9526240B4249B06A09C42C051F70148ED526240186BC9F4959C42C0DD297865F2526240D4D6E3198F9C42C0819B2045F8526240B95917128B9C42C0B9B59613FE52624090566B17899C42C0EE4FF39FFF52624001124DA0889C42C06AE186C20253624061FA6E54899C42C00102000000030000006AE186C20253624061FA6E54899C42C0780778D20253624054F60258899C42C07BB540D70253624075632B59899C42C00102000000050000007BB540D70253624075632B59899C42C0FDED57A604536240D1FD41C9899C42C069CB14CE095362403605323B8B9C42C01A530B800C536240D6E253008C9C42C0D45A0BC90D5362405DD659A48C9C42C0010200000003000000D45A0BC90D5362405DD659A48C9C42C0938ECDE90D536240D6C8AEB48C9C42C0C6FCE9F90D536240D4AFF2BC8C9C42C001020000000F000000C6FCE9F90D536240D4AFF2BC8C9C42C0DFEB5A31125362405D30B8E68E9C42C0102D681015536240F1A19F04919C42C028CA4A38195362406B216D88969C42C0D19D16721B536240CF3CCAD2989C42C03B037EE81D5362403ABF72CE999C42C0DDFF6C5020536240ED69E278999C42C09E5DBEF5215362404DEE1C6F979C42C0CA856F0624536240E0505326909C42C0B700D99024536240373FB445889C42C023168CA5235362405B40683D7C9C42C05F62878C22536240C5B99745729C42C093A1CFEC1F536240F4763A46689C42C08284CDA51D5362404BBB873A629C42C0D7E7209E1B5362406D0CF093599C42C0010200000013000000D7E7209E1B5362406D0CF093599C42C0E61604A01B5362407916CE7F599C42C05EC6038019536240B45318004F9C42C0F9D51C20185362402A615C60459C42C01DC6A4BF1753624025F213BD429C42C089658E4017536240AAF644323F9C42C0242A54371753624010F0FF3E3E9C42C0C4C5F6FF16536240D71D41E0379C42C08C2E6F0E17536240270FB0FB339C42C02721472917536240B8AD2D3C2F9C42C079D1B249195362404BE88942269C42C0AD93E9861C5362403868AF3E1E9C42C073C57BC41E536240EE2AFFB5179C42C0405E59B31F53624019E42EC2149C42C05AA8EB3F21536240D4D347E00F9C42C0B5F8140023536240E822CF3F0B9C42C01518570123536240412619390B9C42C059E7CE02235362405968E7340B9C42C035909A532353624032FB0262099C42C001020000000300000035909A532353624032FB0262099C42C0473426692353624078CF81E5089C42C05770EB7223536240C4AE8EAD089C42C00102000000040000005770EB7223536240C4AE8EAD089C42C01AE9FB5F24536240D4D00660039C42C055B9F53F25536240FC4E3860FC9B42C0A2FEEF73255362406D4F8D6AF89B42C0010200000003000000A2FEEF73255362406D4F8D6AF89B42C046CF2D74255362402DCBD765F89B42C0547336742553624095F14B65F89B42C0010200000003000000547336742553624095F14B65F89B42C0F551FCCE2553624095A828A8F29B42C06903899225536240DE36F4D0EA9B42C00102000000030000006903899225536240DE36F4D0EA9B42C034C0609225536240D554BBCBEA9B42C028C8389225536240B5B2DCC4EA9B42C001020000000300000028C8389225536240B5B2DCC4EA9B42C06A49EC7F255362400CEAB69FE79B42C06A49EC7F25536240B5824B6CE39B42C00102000000080000006A49EC7F25536240B5824B6CE39B42C031B2648E25536240F60604DFD99B42C0E3B55C472653624031D4BC3ECE9B42C0B76DCE7726536240B5EC5A8CCB9B42C0B3E908E026536240CAB1AB7FC69B42C01FFC1FBB26536240988EEF41BE9B42C04864C4AA26536240B949B148B89B42C033824391265362403ADE5C8CB29B42C001020000000300000033824391265362403ADE5C8CB29B42C00D912E9126536240CE28A787B29B42C014C1199126536240AA35997FB29B42C001020000000400000014C1199126536240AA35997FB29B42C0A239FC7F26536240013BEDDFAB9B42C0676902A025536240BE0864C0A39B42C041DD7F432353624027003EB19D9B42C001020000000300000041DD7F432353624027003EB19D9B42C09DFB613A235362407A5AD9999D9B42C0A642BB3823536240F2B483959D9B42C0010200000006000000A642BB3823536240F2B483959D9B42C08C344CC822536240EB2F606E9C9B42C0A72E2AF320536240F98D65B0989B42C00A48FB1F205362408F256200979B42C07F1711201E53624021E4BCFF8F9B42C02B15B7931D536240D293414A899B42C00102000000030000002B15B7931D536240D293414A899B42C0EB9FF18E1D536240549ADE0F899B42C0C1BA9F8C1D536240FA9BD0F2889B42C0010200000019000000C1BA9F8C1D536240FA9BD0F2889B42C03B061A221D5362409382B8BC839B42C01AF67B621D5362400F817E3A799B42C00BF5AA841D536240224ECC1F789B42C094A707601E53624078ACBE5F719B42C05A07ACC120536240AD122C0E679B42C0D7C633C321536240CDF5C7C5629B42C04AE9995E2253624058EB7A585E9B42C0F0C80EE0235362400B45BA9F539B42C052D90B6025536240CFE11060479B42C069183E2226536240F2D654713E9B42C0CEC6A58526536240EE3F321D3A9B42C0E3288AA12653624026378AAC359B42C0B3E908E0265362407D9BB45F2D9B42C05DC6A8C62653624045813E91279B42C016D22BAF2653624032EDF6B41E9B42C0EC246C8926536240C0E61C3C139B42C0A239FC7F26536240A583F57F0E9B42C08D92FC2D26536240DC60A8C30A9B42C0C9C452C92553624086E5CFB7059B42C0A625564623536240476A46ABFF9A42C0CD960744235362401EEB98A9FF9A42C0CA880B4023536240B9AF5EA0FF9A42C0E407F87F1F53624066FFF27FFD9A42C0CDEABBE31D536240C40DCFDAFC9A42C0010200000003000000CDEABBE31D536240C40DCFDAFC9A42C0EE0912DB1D5362408A9356D7FC9A42C0623B08DB1D5362403B7A52D7FC9A42C0010200000024000000623B08DB1D5362403B7A52D7FC9A42C0B75384E519536240F0A6B62FFB9A42C0EF33D362155362409320B7BAF79A42C0BB46263B1153624019A1E936F29A42C00D4059E70E536240D26AED22F19A42C005C314400C536240FC4BF7DFEF9A42C0C286A7570A536240FDDB65BFEE9A42C061DBA2CC06536240DAAF9696EC9A42C058C9C7EE025362403B2064B4E99A42C0F4F8BD4DFF5262400D38A682E59A42C051F932ACFD526240DBB28D89DE9A42C01A6B7F67FB52624035C703DBD29A42C02D697BAAF9526240E269430FC69A42C036AD1402F95262400E153EB6C09A42C02D3E05C0F85262409EEF0280BE9A42C007FE0120F8526240311BAE1FAC9A42C0915D0E60F65262406C58F89FA19A42C0D11CFE3FF352624005C655C0989A42C0EC55BF2DF35262403B21CF89989A42C04F47B6A9F0526240E569AFF4909A42C0773469AEEE526240AD557199899A42C0B0164449ED52624034C86EB0819A42C0106734A8EC526240A5D0C31A789A42C09348EC24EC526240149161156F9A42C01CE7DB27EC526240ADB0CF52689A42C0E643ABEEEC5262402E6695E35F9A42C0D3A46F2DEE526240FD42D9A5579A42C08297CFA8EF526240D28668194E9A42C084E4AE6FF1526240F581E49D439A42C0D4B7CCE9F25262401BB226BB3E9A42C00CEDF71FF4526240D0DECFDF3A9A42C0AC826275F552624038D6C56D349A42C0C908032AF75262403693CA6F2C9A42C080C6962FF95262408625D4C21B9A42C026E88AADFB526240729648580A9A42C0A05FB9A5FC526240FCFCF6B4029A42C0010200000003000000A05FB9A5FC526240FCFCF6B4029A42C007CC43A6FC5262405268B4B0029A42C0A36B13A8FC526240F8A11DA3029A42C0010200000003000000A36B13A8FC526240F8A11DA3029A42C0554FE61FFD526240C52F0620FF9942C0D41F065FFD52624090508E5DFD9942C0010200000011000000D41F065FFD52624090508E5DFD9942C0C2C8810DFE526240C847E6ECF89942C01B6A6F4BFF5262404EB4AB90F29942C0C4FBBB880053624062314514EE9942C0387A466C01536240BFD6A546E89942C0F6B8CA6E015362407A0E76D4E29942C0F47F5880005362404CF8A57EDE9942C06616FC91FD526240944E7F51DD9942C0274D83A2F9526240C8DF0731E19942C0704D70A0F6526240FC427EECE49942C06A1D0BC0F5526240AEB9A3FFE59942C06B65C22FF5526240307E1AF7E69942C0D1EEEB1BF35262401DBF0177EA9942C046A7F809F15262407A4501ECED9942C0F96B0D00F0526240CD6B36A0EF9942C0A6FD20DCEE5262401FDA22C4F09942C0308A808AEE5262409DD76815F19942C0010200000002000000308A808AEE5262409DD76815F19942C03AB9027DEE526240F7B4D722F19942C001020000000A0000003AB9027DEE526240F7B4D722F19942C0008E3D7BEE526240FBE99A24F19942C00F4D8F5CED526240BF9D9F3DF29942C0D4207134EC52624037D43950F19942C0BA63B14DEA5262400E5BC4C1EF9942C04273428DE7526240EC489AE4EC9942C04B862D87E75262403F47F5E7EC9942C0DA290C80E7526240048B68E0EC9942C0676902A0E55262403F5B62C0ED9942C09B6053AFE3526240964FD5C0F19942C00102000000030000009B6053AFE3526240964FD5C0F19942C0417452A9E3526240D75537CDF19942C0927F37A7E3526240AC7128D1F19942C0010200000007000000927F37A7E3526240AC7128D1F19942C02C29779FE3526240A2CCABDFF19942C07A281B20E2526240DD9CA5BFF29942C02DA814E0E052624072ECEA9FF19942C0E0247266E0526240CBD58F4DF29942C043B40C27DF5262409574DE10F49942C09737634FDB5262408DBADC19F79942C00102000000030000009737634FDB5262408DBADC19F79942C0D75DEA31DB5262403A652431F79942C07D879512DB526240FAED9149F79942C00102000000080000007D879512DB526240FAED9149F79942C0388600E0D8526240277E3100F99942C0ACC8433AD752624027367A90F99942C0B771D586D4526240B504CF73FA9942C011D77B3BD3526240A3C7EF6DFA9942C08B040940D2526240C10EAD5FFA9942C05803EF3FCD526240277E3100F99942C046820420C9526240186D9F9FF39942C001020000000200000046820420C9526240186D9F9FF39942C0D57036C2C7526240A85BD141F29942C0010200000005000000D57036C2C7526240A85BD141F29942C071AE6186C6526240907B5F01F19942C0251D8AA7C3526240FCC1C073EF9942C009FCE1E7BF526240398ABD61EC9942C02A8F5209BF52624037BA7889EB9942C00102000000030000002A8F5209BF52624037BA7889EB9942C080327CFABE52624058BD0D7BEB9942C0E324EAE8BE52624054FD7669EB9942C001020000000A000000E324EAE8BE52624054FD7669EB9942C02B2FF99FBC52624053AAE91FE99942C08C6E1860BA526240142928A0E49942C007FE0120B85262407707C25FDD9942C08D77EC0CB852624018755204DD9942C0EAA5738FB6526240875DCAAFD59942C09149A187B5526240F6A79E16CD9942C05C4DE83FB5526240C2E2CB9FCA9942C01D9D0480B4526240CD3F55E0BF9942C01D9D0480B452624013DD6921B79942C001020000000F0000001D9D0480B452624013DD6921B79942C0F72B5382B4526240690712CAB19942C091D6732DB5526240824CD7B8A39942C07610E099B55262404533AA679C9942C0F66DD27EB552624096027745959942C05F5BE443B5526240265305A3929942C0BB1006F9B4526240B583B641929942C01853FA53B45262403EDD8A0E929942C0BCB77DEAB35262405B66C7FC929942C07702AB34B35262402A60F18A969942C0B0822914B3526240B678C25C9C9942C0A54DD53DB25262407B832F4CA69942C0B365AF2DB252624063F9A9E0A69942C05E5CF45FB152624053EB5800AE9942C096804EF7B0526240DB807456B09942C001020000000400000096804EF7B0526240DB807456B09942C02891E975B05262405768D608B39942C0A68AF381AE526240E645DC52BD9942C00CDD9867AE526240D44A0AF5BD9942C00102000000030000000CDD9867AE526240D44A0AF5BD9942C04138B066AE5262402DF2A1FABD9942C01E8BE95DAE526240F4112D30BE9942C001020000001B0000001E8BE95DAE526240F4112D30BE9942C04BDB0940AD52624018B14F00C59942C0FB7A1920AC526240FC2257A0CC9942C0ECAAF69FAB52624024343800D19942C034153D4BAB526240632BC313D59942C0016C9B3DAB526240335F6FACD59942C0F02EBC37AB52624074345882D69942C0C66AF3FFAA52624053A7A89FDC9942C013EBF93FAC526240828AAA5FE99942C01B125212AD526240E5852AEBED9942C01EBEF15AAE5262406532C115F59942C0ED1C14DEAF526240DE077B6EFC9942C081EDBB7DB15262400E959059079A42C0CC1D47BDB1526240FC993050089A42C0EE04FBAFB35262404B4C61EF0F9A42C041A49531B4526240080FE4EA119A42C0217DEE5FB45262409DB415A0129A42C07FAD0100B652624032970AE01C9A42C0E39DE85FB75262405DC94400269A42C018AE0E80B8526240364B13002D9A42C0922EEC1FBA526240F3AB3940309A42C02E0FE37FBC52624046EC1340319A42C013BF1880BC52624046EC1340319A42C003E0E9DFBF5262400B1C1A60309A42C0A344A6D7C15262406B589DE62E9A42C09CE0F65FC2526240D009A1832E9A42C0E98E0FC4C3526240E24680892E9A42C0010200000053000000E98E0FC4C3526240E24680892E9A42C09B36E334C45262405F06088B2F9A42C0D11B936AC4526240D5085806309A42C04AE4277AC55262401C0B0A83329A42C05FB939F0C552624066F2CD36379A42C05F5A796EC65262401CB85E2E3D9A42C094111780C65262408D3FF61F3E9A42C097F10060C65262406110FD7F419A42C0748E4B66C6526240A2410A9E429A42C053399270C652624082BA922E479A42C0ACAF09C4C6526240C25B316D499A42C0C111EEDFC6526240C8A29F5F4A9A42C0E751F17FC75262409CE337E04E9A42C0F901FEDFC752624026D6F37F589A42C0DEB133E0C7526240BB95CA80589A42C0E1911DC0C75262407D51CC8B5D9A42C0B8150CF8C65262404184132C699A42C065BE28E6C552624072A7CF69719A42C095174FF3C4526240F211E797779A42C01661D4FFC3526240959460167F9A42C010035DFBC2526240C4BF19468B9A42C058288870C2526240FC71FBE5939A42C085E6DFD3C152624053B4CDE8A29A42C0C1D31A39C15262408946D2C9AD9A42C0BB44F5D6C0526240A8120AB6B69A42C0A9F00CBFC05262407E8D2441B89A42C053CDACA5C0526240593B40E6B99A42C032D7B331C052624068EA758BC09A42C0CDE33098BF5262409FE40E9BC89A42C0B323D577BE526240665710B9CF9A42C08D11E4FBBD526240D590B8C7D29A42C066FFF27FBD5262407B25DA9FD59A42C0E057F66EBD526240B094C041D69A42C07FA31D37BC526240CABD65F3DD9A42C0D3A7B0ADBA526240D2F1E20EE59A42C0E089B4E8B85262406AE67FA8EA9A42C03C4272D7B752624078F1D995F19A42C0C6CCF401B7526240F783CB74F99A42C01FCDA2C1B7526240D57A1A8B019B42C0E0A0BDFAB85262405070B1A2069B42C0001E51A1BA5262405890C1E50C9B42C0ED7E15E0BB526240B524F6BF129B42C0169F0260BC526240C4C5F6FF169B42C040BFEFDFBC5262400447B87F1B9B42C0A1CFEC5FBE52624013584AE0209B42C072906B9EBE5262406BB180AE229B42C0A7A32DF8BE5262403AC54F88259B42C006F1811DBF5262403B4ACA822E9B42C0C52F0620BF526240A06B5F402F9B42C0ADED3724BF526240E7A15B54309B42C00F327F3BBF5262407286E28E379B42C0FA87E3AFBF526240B177352F3D9B42C0EB6F09C0BF52624075CF15003E9B42C011B00C60C0526240EF906280449B42C049A01C60C15262400ED363004D9B42C05E3013A0C152624035E44460519B42C05E3013A0C1526240B4E6C75F5A9B42C03DF262BCC1526240ACE9D55B5E9B42C0C0A26CDBC1526240B56B425A639B42C073C009E0C15262402A3410CB669B42C073C009E0C1526240CF7A42C06B9B42C049A01C60C1526240849CF7FF719B42C03BD0F9DFC05262402D3E05C0789B42C01490F63FC05262405900AEBF809B42C000000000C05262402D414640859B42C003E0E9DFBF5262408F2221808A9B42C000000000C05262402DD4F59F909B42C011B00C60C052624015F7C4DF9B9B42C0CDF79D70C0526240AF9BAD179E9B42C0A994E876C0526240F5132928A09B42C0B2A7D370C052624072BF4351A09B42C0DC9FE63FBF5262401DC9E53FA49B42C05DE6CF12BF526240A04BDD3AA49B42C05491651CBE52624064613E0FA49B42C00417D0B0BD5262400573AA6BA39B42C03AFF1B20BD526240A728F27FA29B42C0DEAEF25FBB52624040964FA0999B42C007FE0120B8526240E613C31F8F9B42C07EECE4C2B752624087F71C588E9B42C02B39DD68B652624012B985538B9B42C0D4FCE71FB352624055E2957F889B42C0EA9BEA7FAF526240FEF0F3DF839B42C0593F0B9EAD5262409DE4954F809B42C0 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug398.xml geos-3.8.0/tests/xmltester/tests/ticket/bug398.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug398.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug398.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/398 - - - - - - -MULTIPOLYGON (((60.0 6.5105151320986412, -44.0044859469790026 11.6931320480208569, 0.0 25.9507790663861222, -0.0 26.8608278557796467, 0.0 29.8387923019253307, 60.0 10.3985283676378408, -60.0 7.8021345594223774, 60.0000000000000000 6.6570998796460161, 60.0 -6.5105151320986412)), ((43.3161197496508308 0.0, -0.0 0.0, 0.0 14.0346133423735822, 0.0 17.9226661292310787, -0.0 21.5874865260243638, 34.0258524396557860 -6.8981402622972743, 55.3161197496508308 0.0, -50.0044466166182886 0.0, 43.3161197496508308 -0.0)), ((13.4455725323347899 36.0, -60.0 36.0, 60.0 16.7944518298098018, 60.0 16.3644011555093201, -60.0 14.0439960304547569, 2.9187843276549756 -36.0, 11.8945390820010992 36.0, 13.4455725323347899 36.0))) - - -POLYGON ((50.0044466166182886 0.0, -0.0 21.5874865260243638, 0.0 -35.7392139719321804, 60.0 13.1838946818537934, -60.0 0.0, 50.0044466166182886 0.0)) - - - -MULTIPOLYGON (((0 25.950779066386122, 0 26.860827855779647, 0 29.83879230192533, 0 35.73921397193218, 60 13.183894681853793, 60 10.39852836763784, 60 7.802134559422377, 60 6.657099879646016, 60 6.510515132098641, 60 0, 55.31611974965083 0, 50.00444661661829 0, 43.31611974965083 0, 0 0, 0 14.034613342373582, 0 17.92266612923108, 0 21.587486526024364, 0 25.950779066386122), - (0 21.587486526024364, 34.025852439655786 6.898140262297274, 34.02585243965579 6.898140262297273, 0 21.587486526024364)), - ((13.44557253233479 36, 60 36, 60 16.794451829809802, 60 16.36440115550932, 60 14.043996030454757, 2.9187843276549756 36, 11.8945390820011 36, 13.44557253233479 36))) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug434.xml geos-3.8.0/tests/xmltester/tests/ticket/bug434.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug434.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug434.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ - - - http://trac.osgeo.org/geos/ticket/434 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - http://trac.osgeo.org/geos/ticket/434 - - -010300000001000000260000000000000012E136C100000000584704C17CCA693DFB9437C15F3458D7B8CA0AC17CCA693DFB9437C15E3458D7B8CA0AC1A15FFC2B329E37C1BBC9994706040BC1A15FFC2B329E37C1BCC9994706040BC10000000005AD37C10000000070BE04C100000000371438C1000000003074FEC0000000004DAF38C100000000A0DFE7C000000000DA3D39C10000000000289DC000000000121639C1000000000005E54000000000900A39C100000000404AF74000000000C33B39C100000000D84A034100000000878538C10000000098A10141C50E55840D0238C1504578023004FF4028952472DBE037C1EFD75A166897FD40B301719AFEDB37C115B828D1D1A5FD40240E3BD05F0537C1FAC38571278CF740322F8AA7A60437C146F1AC8AA08BF7406F06AC4CCD0237C1A29F2ECC947EF74091E37943ACB336C1E9D63E5D7FEBF74000000000B6C435C10000000020F1F840000000000E1E35C100000000209EFA4000000000BCBB33C1000000008815014100000000CAEF33C1000000002032F74000000000EE5134C10000000000F1DB40000000008ADD34C1000000008099CBC0E42825B8ED4F35C13972434F3048EEC079DE4959ABE935C1B7656ADAE51FE0C051400DD809C635C1001FCAB19AC1AA4023302240A30436C144723E9FFB13E0C0A98D3A4CC8A436C1F7F77487DBB2DFC06E7AF552B50036C1D559460AE05EE2C07870019EB07335C1681A197BE5D2F0C0DCC23BB59DA135C1BFEB4186272FFDC014961A1FF69D35C1CDEE1C7F6F09FEC0D4BA81C7E60236C186226939A60305C10FAF8B543D0536C15716FC2B2C0D05C10000000012E136C100000000584704C1 - - - -POLYGON ((-1565260.6206011446 111732.66899895086, -1512637.4197541769 -87800.91348955338, -1511887.9553205783 87542.9550616941, --1511879.1656611576 87539.07911020475, -1510380.224568009 -87022.64683612906, -1508816.2815230151 86762.62982427831, --1507230.8751184365 86766.26668522462, -1487056.6518885682 -88501.80293939149, -1425965.3129563173 92682.16829688638, --1425104.6790447247 92780.63793183706, -1382440.6790447247 -99644.63793183706, -1380883.552616635 100032.3964705434, --1307581.025805522 125025.53084629907, -1315580.6801167233 -98046.05735775629, -1340013.0573368135 33475.88610080863, --1374723.4937759638 -8035.814646773755, -1375540.3966797974 --9173.749061246888, -1399420.6762844694 -48224.22717737771, --1425311.2385910228 -29150.93862345213, -1417736.1160114263 -1117.9654269575603, -1417462.389107992 2977.2656135774496, --1417559.9528732277 4854.072719633237, -1418024.990767285 -6674.969026049172, -1418839.3112448766 8368.723955607617, --1419971.0593796924 9869.080500222728, -1421375.9629786243 -11117.347090073301, -1422999.064439784 12064.693514782575, --1424776.8706067775 12674.06108384778, -1426639.8365203394 -12921.612303871138, -1428515.0859069047 12797.663363516955, --1430329.261982915 12307.062948861332, -1432011.397055914 -11469.00257047849, -1433495.6886681858 10316.265821967412, --1434724.073684598 8893.945937735312, -1435648.499630413 -7257.681817144551, -1449143.4561333996 -23354.810616285424, --1483867.7348210595 -22958.05034354897, -1485776.6295743138 --23129.542180347664, -1487612.279399581 -23680.612364703436, --1489300.0024860846 -24588.84108720258, -1490771.1352932872 --25817.277855075656, -1491965.8260670996 -27315.944790741232, --1492835.4698562517 -29023.869938128897, -1493344.6859623056 --30871.56785348871, -1493472.7573724887 -32783.86656001538, --1493214.473613273 -34682.965854105925, -1492580.3427339422 --36491.60253873035, -1491596.1637957809 -38136.19380915876, --1490301.9772597842 -39549.830905140276, -1488750.4359754561 --40675.00123540831, -1487004.6630455877 -41465.928227252676, --1485135.683717921 -41890.43370642135, -1446007.6029769813 --46700.584262917684, -1416423.8835601667 -72339.85858975082, --1426885.4130973895 -117389.06894304338, -1427130.3703204703 --119697.9017421352, -1426824.687619137 -121878.75478429934, --1448107.0131300709 -162332.10613743018, -1498347.8261209533 --156680.5537782484, -1500189.4513298413 -156653.02325111572, --1502001.7906441302 -156981.3029334265, -1503716.7500390832 --157653.05855387077, -1505269.8942919231 -158643.0506092964, --1506602.8679708943 -159914.08267462972, -1539977.4973322283 --198577.71596101607, -1542144.8124445549 -169234.09042439144, --1542547.1855037627 -167113.735032329, -1543417.6618736198 --165138.87251636875, -1569723.593278455 -120135.5955899725, --1609322.6038058014 -44486.34486061129, -1610234.1160785698 --43067.65041476705, -1643974.2956479487 411.9052427339163, --1634783.2308133794 40946.81156439988, -1634563.0113663338 -42514.09863767898, -1631617.0113663338 94862.09863767898, --1631788.403045867 97268.87409831762, -1641289.145133498 -144525.1654491555, -1610591.364441635 135570.87839490557, --1578279.3072280572 118874.10762665431, -1570270.8915449486 -113373.9089381907, -1568640.3591467661 112475.31692187724, --1566865.9081669166 111911.91011199991, -1565260.6206011446 -111732.66899895086)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug459.xml geos-3.8.0/tests/xmltester/tests/ticket/bug459.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug459.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug459.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ - - http://trac.osgeo.org/geos/ticket/459 - - - - -0102000000080000003C0AD7E32D4E3A4152B81E250A4452412085EB91284A3A417A14AE2719445241285C8F42354A3A41A4703D6A1E445241CCCCCC0C474A3A415C8FC2851E445241C4F5289C4B4A3A415C8FC2C52B445241BE08DEAE534E3A41B1B518AB1F44524100000000604E3A419A9999C9064452413C0AD7E32D4E3A4152B81E250A445241 - - -010200000009000000B89C2EFE364A3A41DFC087291F445241545C8F42354A3A41A4703D6A1E4452418CEC6D6F354A3A41FE7E44D31D44524136C80FA4394A3A412D7F89121D445241409B06043D4A3A415860C1CC1C445241360D6849404A3A4136B46EC91C445241FC25CB4B474A3A41B72FD41F1D445241CDCCCC0C474A3A415C8FC2851E445241181E3474434A3A4116CE6F471F445241 - - - - -0105000000060000000102000000040000003C0AD7E32D4E3A4152B81E250A4452412085EB91284A3A417A14AE2719445241285C8F42354A3A41A4703D6A1E445241545C8F42354A3A41A4703D6A1E445241010200000002000000545C8F42354A3A41A4703D6A1E445241CDCCCC0C474A3A415C8FC2851E445241010200000005000000CDCCCC0C474A3A415C8FC2851E445241C4F5289C4B4A3A415C8FC2C52B445241BE08DEAE534E3A41B1B518AB1F44524100000000604E3A419A9999C9064452413C0AD7E32D4E3A4152B81E250A445241010200000002000000B89C2EFE364A3A41DFC087291F445241545C8F42354A3A41A4703D6A1E445241010200000007000000545C8F42354A3A41A4703D6A1E4452418CEC6D6F354A3A41FE7E44D31D44524136C80FA4394A3A412D7F89121D445241409B06043D4A3A415860C1CC1C445241360D6849404A3A4136B46EC91C445241FC25CB4B474A3A41B72FD41F1D445241CDCCCC0C474A3A415C8FC2851E445241010200000002000000CDCCCC0C474A3A415C8FC2851E445241181E3474434A3A4116CE6F471F445241 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug488.xml geos-3.8.0/tests/xmltester/tests/ticket/bug488.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug488.xml 2018-11-15 21:26:16.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug488.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - http://trac.osgeo.org/geos/ticket/488 - - - - - - TopologyException unioning two valid polygons. - Cause is very high precision causing almost-coincident line segments. - This causes robustness failures in noding in JTS 1.12. - Reduced version. - - -01060000000100000001030000000100000005000000DF52A140EC490340251EBD88237048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB014212704840002EF0471C4C0340EC39718803704840DF52A140EC490340251EBD8823704840 - - -01060000000200000001030000000100000004000000EF54EBB0384B03403FC50B78F36F484040B01B9F1C4C0340A9FB0142127048404F7F9BC7814D0340D9C5653E12704840EF54EBB0384B03403FC50B78F36F4840010300000001000000040000008D246CEE344E034016CFC66D597048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB0142127048408D246CEE344E034016CFC66D59704840 - - - -01030000000100000007000000DF52A140EC490340251EBD8823704840E66E8AF0484C034079579A23187048408D246CEE344E034016CFC66D597048404F7F9BC7814D0340D9C5653E12704840EF54EBB0384B03403FC50B78F36F484032DCBFEACF4B034080B385E507704840DF52A140EC490340251EBD8823704840 - - - - - - - TopologyException unioning two valid polygons. - Cause is very high precision causing almost-coincident line segments. - This causes robustness failures in noding in JTS 1.12. - Full version, using UnaryUnion. - - - 01070000000800000001030000000100000017000000655E3A27EC4703406906F11FE66F48407285047CEC4703400D8482D9F46F484029EB1855874603407741FDDCF46F4840409518A987460340F4658E9603704840B888AA59BD43034025CD6A9D03704840D8D514ACBD4303404A9AFB5612704840806492835842034008445D5A127048408858D22659420340B8D07DCD2F704840F888EA50BE4303404E231CCA2F704840FCEE55A3BE43034025DFAB833E704840AFA238CE23450340B2D241803E7048401F486F21244503408B31D1394D704840CCCD75A45349034040D7602F4D7048406A9947F952490340C5C941BC2F704840F56B8977824D03401F3486B12F7048404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB014212704840002EF0471C4C0340EC397188037048401ADA3A20B74A0340A210058C037048402798DAC9B64A0340E1F173D2F46F48406022AF17814D03403BEB43CBF46F4840CB89B9BF804D03405375B211E66F4840655E3A27EC4703406906F11FE66F4840010300000002000000160000005A59B2EB13530340E0CCA41CAB6F48405AC5D14614530340D2A637D6B96F4840E03957FF495003403886AADDB96F48400F5AE1584A50034036093D97C86F48406384CF0F804D034067788E9EC86F48404F7F9BC7814D0340D9C5653E1270484041B01B9F1C4C0340A9FB0142127048408A9547F61C4C0340516292FB2070484078A940254D5003408D53C4633E7048402D5DCE7E4D500340E8A2531D4D7048400E3B22D617530340FC9AE0154D704840D919463118530340228B6FCF5B70484063CDDE9B775B0340CD31DC716A704840F24C3EADAA580340574EC66603704840169AEFD40F5A034042D4DE620370484086DEF9DC735B03402ED93A32D76F4840F92E99273E5E03405720422AD76F4840F0AB1DAC07610340ED7A03AFB96F484068C81149076103404DB670F5AA6F48405AC22326A25F0340CEF481F9AA6F484025CD6488A25F0340A0BB14B3B96F48405A59B2EB13530340E0CCA41CAB6F484005000000BCF099184C500340C3421437127048403F7326724C50034076A3A4F020704840DF8DDC48E74E0340949551F42070484070EA1AF0E64E0340E032C13A12704840BCF099184C500340C3421437127048400103000000010000000500000016D36D62BC4303405943B670D76F48405807D7B4BC430340A921482AE66F48402E83F8DA214503405620DE26E66F48406F73C48721450340E3434C6DD76F484016D36D62BC4303405943B670D76F4840010300000002000000170000006A9947F952490340C5C941BC2F704840CCCD75A45349034040D7602F4D704840167F1C4D89460340FFC55E364D704840C1651EA189460340D4C7EDEF5B704840F71F96CDEE4703402BFD72EC5B704840AB496322EF470340F0A101A66A7048402387A54F5449034021787EA26A704840AAF53DA554490340CABF0C5C7970484060B64AD3B94A0340CD368158797048408A6BAE29BA4A03405C210F1288704840570D33B6E94E0340C9503A078870484009A86E5DE94E03401F6CAC4D797048402CD0AB71485703403F00213779704840E474261448570340A4CC927D6A7048402B536441AD580340F4A0B3796A704840947E14E3AC5803404A1425C05B704840D919463118530340228B6FCF5B7048400E3B22D617530340FC9AE0154D7048402D5DCE7E4D500340E8A2531D4D70484077A940254D5003408D53C4633E7048403E0361FAE74E0340AC4971673E70484023969EA1E74E0340329DE1AD2F7048406A9947F952490340C5C941BC2F704840050000002EF880CF824D034094E2156B3E70484057E87827834D0340EC35A5244D7048409097CDFB1D4C0340957341284D7048403089A0A41D4C0340491EB26E3E7048402EF880CF824D034094E2156B3E70484001030000000100000015000000F2AB10721F3E0340743421EB496E484097F444C11F3E034025AEBCA4586E4840CCF603D2843F0340765174A1586E4840835D0322853F0340C36E0F5B676E484032977910203E034040CD575E676E4840C193AE5F203E0340B791F217766E4840131F0372853F03406E31AA14766E4840803B03C2853F0340759944CE846E484078CC40E84F42034052BF9AC7846E4840EA326D8B504203401D78CE3AA26E48403A6ED4B41A450340E2230334A26E4840477DA8611A4503408878697A936E4840FEC590757F4603403745F776936E4840B66C9A217F4603400C415DBD846E4840458FB734E4470340F1B2E2B9846E4840E76F368BE34703406B9EAD46676E484031E12668194503406C569A4D676E4840156AFC14194503407040FF93586E4840B1D83E04B4430340A00F6997586E48403A83DFB1B34303402A9DCDDD496E4840F2AB10721F3E0340743421EB496E48400103000000020000000F000000C039DB99564203405A14F300BA6F484021D5163D57420340B6E51774D76F48408DB20FCD273E0340559E0A7ED76F4840676279928D3F0340BA7FE5EDF46F484016998B6B283E03406C0E2EF1F46F4840B5E7080A293E03404612506412704840D8D514ACBD4303404A9AFB5612704840B888AA59BD43034025CD6A9D037048403F9518A987460340F4658E9603704840655E3A27EC4703406906F11FE66F4840CA89B9BF804D03405375B211E66F4840380346EB1A4C034069A42AA2C86F4840C0D831A25049034034E549A9C86F4840F7F89D4C504903406558B7EFB96F4840C039DB99564203405A14F300BA6F4840050000006E73C48721450340E3434C6DD76F48402E83F8DA214503405620DE26E66F48405807D7B4BC430340A921482AE66F484016D36D62BC4303405943B670D76F48406E73C48721450340E3434C6DD76F4840010300000001000000050000009351D4474949034027C85FB6846E48406F38609D4949034086C8F96F936E48405C6047B1AE4A0340227F6E6C936E4840B7B2F05AAE4A0340B480D4B2846E48409351D4474949034027C85FB6846E4840010300000001000000050000002798DAC9B64A0340E1F173D2F46F484040B01B9F1C4C0340A9FB0142127048404F7F9BC7814D0340D9C5653E127048405F22AF17814D03403BEB43CBF46F48402798DAC9B64A0340E1F173D2F46F4840 - - - -01060000000300000001030000000100000015000000F2AB10721F3E0340743421EB496E484097F444C11F3E034025AEBCA4586E4840CCF603D2843F0340765174A1586E4840835D0322853F0340C36E0F5B676E484032977910203E034040CD575E676E4840C193AE5F203E0340B791F217766E4840131F0372853F03406E31AA14766E4840803B03C2853F0340759944CE846E484078CC40E84F42034052BF9AC7846E4840EA326D8B504203401D78CE3AA26E48403A6ED4B41A450340E2230334A26E4840477DA8611A4503408878697A936E4840FEC590757F4603403745F776936E4840B66C9A217F4603400C415DBD846E4840458FB734E4470340F1B2E2B9846E4840E76F368BE34703406B9EAD46676E484031E12668194503406C569A4D676E4840156AFC14194503407040FF93586E4840B1D83E04B4430340A00F6997586E48403A83DFB1B34303402A9DCDDD496E4840F2AB10721F3E0340743421EB496E4840010300000001000000050000009351D4474949034027C85FB6846E48406F38609D4949034086C8F96F936E48405C6047B1AE4A0340227F6E6C936E4840B7B2F05AAE4A0340B480D4B2846E48409351D4474949034027C85FB6846E484001030000000800000033000000C039DB99564203405A14F300BA6F484021D5163D57420340B6E51774D76F48408DB20FCD273E0340559E0A7ED76F4840676279928D3F0340BA7FE5EDF46F484016998B6B283E03406C0E2EF1F46F4840B5E7080A293E03404612506412704840D8D514ACBD4303404A9AFB5612704840806492835842034008445D5A127048408858D22659420340B8D07DCD2F704840F888EA50BE4303404E231CCA2F704840FCEE55A3BE43034025DFAB833E704840AFA238CE23450340B2D241803E7048401F486F21244503408B31D1394D704840CCCD75A45349034040D7602F4D704840167F1C4D89460340FFC55E364D704840C1651EA189460340D4C7EDEF5B704840F71F96CDEE4703402BFD72EC5B704840AB496322EF470340F0A101A66A7048402387A54F5449034021787EA26A704840AAF53DA554490340CABF0C5C7970484060B64AD3B94A0340CD368158797048408A6BAE29BA4A03405C210F1288704840570D33B6E94E0340C9503A078870484009A86E5DE94E03401F6CAC4D797048402CD0AB71485703403F00213779704840E474261448570340A4CC927D6A7048402B536441AD580340F4A0B3796A7048407B7FF321AD5803401C780B916570484063CDDE9B775B0340CD31DC716A704840F24C3EADAA580340574EC66603704840169AEFD40F5A034042D4DE620370484086DEF9DC735B03402ED93A32D76F4840F92E99273E5E03405720422AD76F4840F0AB1DAC07610340ED7A03AFB96F484068C81149076103404DB670F5AA6F48405AC22326A25F0340CEF481F9AA6F484025CD6488A25F0340A0BB14B3B96F48405A59B2EB13530340E0CCA41CAB6F48405AC5D14614530340D2A637D6B96F4840E03957FF495003403886AADDB96F48400F5AE1584A50034036093D97C86F48406384CF0F804D034067788E9EC86F48404F7F9BC7814D0340D9C5653E127048406022AF17814D03403BEB43CBF46F4840CB89B9BF804D03405375B211E66F4840655E3A27EC4703406906F11FE66F4840CA89B9BF804D03405375B211E66F4840380346EB1A4C034069A42AA2C86F4840C0D831A25049034034E549A9C86F4840F7F89D4C504903406558B7EFB96F4840C039DB99564203405A14F300BA6F484004000000655E3A27EC4703406906F11FE66F48407285047CEC4703400D8482D9F46F4840485227E839470340C4E33FDBF46F4840655E3A27EC4703406906F11FE66F484004000000B888AA59BD43034025CD6A9D037048403F9518A987460340F4658E9603704840409518A987460340F4658E9603704840B888AA59BD43034025CD6A9D03704840040000002798DAC9B64A0340E1F173D2F46F4840EF4C7DB4694B03403D243B8A037048401ADA3A20B74A0340A210058C037048402798DAC9B64A0340E1F173D2F46F48400400000024BB365A824D0340CBF1F0C82A7048402AB8160E354E0340DF9EADAF2F70484002218977824D034056A879B12F70484024BB365A824D0340CBF1F0C82A70484004000000925A34BFE74E034062EC56963470484077A940254D5003408D53C4633E7048403E0361FAE74E0340AC4971673E704840925A34BFE74E034062EC56963470484005000000BCF099184C500340C3421437127048403F7326724C50034076A3A4F020704840DF8DDC48E74E0340949551F42070484070EA1AF0E64E0340E032C13A12704840BCF099184C500340C342143712704840050000002EF880CF824D034094E2156B3E70484057E87827834D0340EC35A5244D7048409097CDFB1D4C0340957341284D7048403089A0A41D4C0340491EB26E3E7048402EF880CF824D034094E2156B3E704840 - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug527.xml geos-3.8.0/tests/xmltester/tests/ticket/bug527.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug527.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug527.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ - - - - - - -Bogus noding -http://trac.osgeo.org/geos/ticket/527 - - -LINESTRING( - 1725063 4819121, - 1725064.14183882 4819094.70208557, - 1725064.13656044 4819094.70235069, - 1725064.14210362 4819094.70227252, - 1725064.13656043 4819094.70235069, - 1725063 4819121 -) - - - -MULTILINESTRING((1725063 4819121,1725064.14183054 4819094.70227637),(1725064.14183054 4819094.70227637,1725064.14183882 4819094.70208557,1725064.13656044 4819094.70235069),(1725064.13656044 4819094.70235069,1725064.14183054 4819094.70227637),(1725064.14183054 4819094.70227637,1725064.14210362 4819094.70227252,1725064.14183054 4819094.70227637),(1725064.13656044 4819094.70235069,1725064.13656043 4819094.70235069,1725063 4819121)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug569.xml geos-3.8.0/tests/xmltester/tests/ticket/bug569.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug569.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug569.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - http://trac.osgeo.org/geos/ticket/569 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - http://trac.osgeo.org/geos/ticket/569 - - -POLYGON((0 0, 50 100, 30 130, 124 290, 82 144, 129 289, 120 140, 170 135, 0 0))' - - - -POLYGON((15.5470535900397 -19.5777711874573,11.4976107110387 -22.1992105250932,7.0200900440899 -23.9941312777285,2.2811981503014 -24.8957051516735,-2.54262706420865 -24.8703648467881,-7.27178546518863 -23.91905383054,-11.730201542863 -22.0771912109266,-15.7518800361076 -19.4133530161091,-19.1870862499068 -16.026718979212,-21.9079209611867 -12.0433798893166,-23.8130823487386 -7.61164299295461,-24.8316376515772 -2.89651023488152,-24.9256641297612 1.92646507633405,-24.0916609997104 6.67771444994727,-22.3606797749979 11.1803398874989,21.1511170340587 98.2039335056121,9.19874264155391 116.132495094369,6.98783622003994 120.23064392274,5.57528365445842 124.667717989469,5.01009019256528 129.289783261055,5.31186391571979 133.936487861541,6.47013548180344 138.446625110381,8.44472133485679 142.663726215772,102.444721334857 302.663726215772,105.268944378042 306.557401827796,108.786574484237 309.838137112046,112.867392107363 312.384482158602,117.360328999059 314.102173532677,122.09906062123 314.927623823346,126.908163332901 314.830275593097,131.223450301601 313.897227411553,131.262110575215 313.897446771617,135.985092572393 313.004342976951,140.449858682776 311.223877612704,144.491361195318 308.621868624476,147.960199061366 305.294503722218,150.728140759799 301.364784637119,152.692864594398 296.977980152364,153.781741190247 292.296255994245,153.954518362728 287.492680098896,146.403677896142 162.484321263188,172.487592975525 159.87592975525,177.321907493882 158.9037585047,181.871362160861 157.001608133172,185.958959796235 154.243482071137,189.425671833216 150.736685604923,192.13662534744 146.617651149311,193.98635030725 142.046630325048,194.902882900269 137.201459346772,194.85056529574 132.270640279816,193.831432917501 127.446007340574,191.885135255529 122.915263559051,189.087393296904 118.854678165818,185.54705359004 115.422228812543,15.5470535900397 -19.5777711874573)) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug582.xml geos-3.8.0/tests/xmltester/tests/ticket/bug582.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug582.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug582.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ - - - - - GC - overlapping polygons - - MULTIPOLYGON(EMPTY,((0 0,1 0,1 1,0 1, 0 0))) - - POINT (0.5 0.5) - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug586.xml geos-3.8.0/tests/xmltester/tests/ticket/bug586.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug586.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug586.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ - - - - - -http://trac.osgeo.org/geos/ticket/586 - - - 01060000000100000001030000000100000007000000FC9C4034A1C957C029FEFB19D9684A40F1502ADE523F56C061588FDD786C4C40417FBC44E19552C0D08D9DDB067C464089A1316892B753C02DCD95C08B6E4540BB379A190BBD54C058F25D2DADFE4440314E4AB97BC857C0C042B6CF69B74840FC9C4034A1C957C029FEFB19D9684A40 - - -0102000020E61000001A0000009D11A5BDC19754C005172B6A305D454008944DB9C29754C0A1B94E232D5D454044FAEDEBC09754C07099D365315D45409D11A5BDC19754C05A0D897B2C5D454012DA722EC59754C07099D365315D4540793BC269C19754C07EE36BCF2C5D454008944DB9C29754C0936FB6B9315D4540C0E78711C29754C03012DA722E5D454020240B98C09754C0459E245D335D4540E4BD6A65C29754C0697407B1335D45409D11A5BDC19754C03012DA722E5D45408481E7DEC39754C0B745990D325D4540793BC269C19754C03012DA722E5D45402B6A300DC39754C04CC3F011315D454020240B98C09754C0697407B1335D454008944DB9C29754C0DA1B7C61325D454020240B98C09754C0A1B94E232D5D45402B6A300DC39754C0B745990D325D45409D11A5BDC19754C0C58F31772D5D4540D97745F0BF9754C0B745990D325D4540C0E78711C29754C04CC3F011315D4540793BC269C19754C01361C3D32B5D4540FD4D2844C09754C0BE6A65C22F5D454008944DB9C29754C0B745990D325D454020240B98C09754C03737A6272C5D4540C0E78711C29754C077BE9F1A2F5D4540 - - - - 0105000000C6000000010200000003000000A72D26D9C09754C07C4791C32D5D4540FD4D2844C09754C0BE6A65C22F5D45401D9292AFC09754C06B77A626305D4540010200000003000000B336AFDEC09754C0C6DE96B02D5D454020240B98C09754C0A1B94E232D5D4540A72D26D9C09754C07C4791C32D5D4540010200000003000000D1DF4401C19754C074634670335D454020240B98C09754C0697407B1335D4540F1DB3BDBC09754C0B5055C69335D45400102000000030000000CE30A0DC19754C00FB5A5112D5D454020240B98C09754C03737A6272C5D4540AC7885FEC09754C04D216F432D5D45400102000000030000006E25D927C19754C06944CB7D315D4540D97745F0BF9754C0B745990D325D45401D9292AFC09754C06B77A626305D45400102000000030000006E25D927C19754C06944CB7D315D454020240B98C09754C0459E245D335D4540F1DB3BDBC09754C0B5055C69335D4540010200000003000000ADF7A63BC19754C0652B64A9305D454044FAEDEBC09754C07099D365315D4540C8F3D611C19754C0E3C05D82305D4540010200000003000000C5B7DC8EC19754C0E54297FC2C5D4540793BC269C19754C01361C3D32B5D45400CE30A0DC19754C00FB5A5112D5D4540010200000003000000FDF7C694C19754C08EA6BD702D5D4540793BC269C19754C07EE36BCF2C5D4540C5B7DC8EC19754C0E54297FC2C5D454001020000000300000027C48C03C29754C0F6A517A2305D4540C0E78711C29754C04CC3F011315D4540C4995FCDC19754C099D36531315D45400102000000030000004D93640BC29754C0CFD54F872E5D45409D11A5BDC19754C0C58F31772D5D4540798753A6C19754C08EC08CB22D5D45400102000000030000008EE0D019C29754C0EEED469C2E5D4540C0E78711C29754C03012DA722E5D45404D93640BC29754C0CFD54F872E5D4540010200000003000000DE327644C29754C0C71C63A9325D4540E4BD6A65C29754C0697407B1335D4540D1DF4401C19754C074634670335D4540010200000003000000AD4CEB75C29754C0C35E27FC2F5D45408481E7DEC39754C0B745990D325D4540A328DC48C29754C07E60725E2F5D4540010200000003000000B1406982C29754C067C45DDA315D454008944DB9C29754C0DA1B7C61325D4540DE327644C29754C0C71C63A9325D454001020000000300000036D7BD86C29754C01103D19A2D5D45409D11A5BDC19754C05A0D897B2C5D4540E060DFA3C19754C057322B162D5D4540010200000003000000E707068FC29754C06C5F8498315D454008944DB9C29754C0B745990D325D4540B1406982C29754C067C45DDA315D45400102000000030000001FA80991C29754C0A77686A92D5D454008944DB9C29754C0A1B94E232D5D454036D7BD86C29754C01103D19A2D5D45400102000000030000001FA80991C29754C0A77686A92D5D454012DA722EC59754C07099D365315D4540EA20F971C29754C062E412112E5D4540010200000003000000E0C165ACC29754C088542F79315D454008944DB9C29754C0936FB6B9315D45401E5D0CA9C29754C023E2C17C315D4540010200000003000000A9DB14D6C29754C0AAD2B84C315D45402B6A300DC39754C0B745990D325D4540456C20BBC29754C0EB497969315D4540010200000003000000A9DB14D6C29754C0AAD2B84C315D45402B6A300DC39754C04CC3F011315D454050C7BC88C29754C04F8B043E305D4540010200000002000000B336AFDEC09754C0C6DE96B02D5D4540A72D26D9C09754C07C4791C32D5D4540010200000002000000AC7885FEC09754C04D216F432D5D4540B336AFDEC09754C0C6DE96B02D5D4540010200000002000000D1DF4401C19754C074634670335D4540F1DB3BDBC09754C0B5055C69335D45400102000000020000000CE30A0DC19754C00FB5A5112D5D4540AC7885FEC09754C04D216F432D5D4540010200000002000000C8F3D611C19754C0E3C05D82305D45401D9292AFC09754C06B77A626305D4540010200000002000000ADF7A63BC19754C0652B64A9305D4540C8F3D611C19754C0E3C05D82305D454001020000000200000036EC0E3EC19754C04992F5BB2E5D45401D9292AFC09754C06B77A626305D454001020000000200000036EC0E3EC19754C04992F5BB2E5D4540A72D26D9C09754C07C4791C32D5D4540010200000002000000DF48EA4EC19754C01E030D912E5D4540B336AFDEC09754C0C6DE96B02D5D4540010200000002000000DF48EA4EC19754C01E030D912E5D454036EC0E3EC19754C04992F5BB2E5D454001020000000200000010E96754C19754C0A600F8F22E5D4540C8F3D611C19754C0E3C05D82305D454001020000000200000010E96754C19754C0A600F8F22E5D454036EC0E3EC19754C04992F5BB2E5D45400102000000020000005C55F65DC19754C057FA69C9305D45406E25D927C19754C06944CB7D315D45400102000000020000005C55F65DC19754C057FA69C9305D4540ADF7A63BC19754C0652B64A9305D4540010200000002000000B5E0455FC19754C0CA32C4B12E5D4540DF48EA4EC19754C01E030D912E5D4540010200000002000000B5E0455FC19754C0CA32C4B12E5D454010E96754C19754C0A600F8F22E5D45400102000000020000006663CC63C19754C063BFE45B2E5D4540AC7885FEC09754C04D216F432D5D45400102000000020000006663CC63C19754C063BFE45B2E5D4540DF48EA4EC19754C01E030D912E5D4540010200000002000000793BC269C19754C03012DA722E5D4540B5E0455FC19754C0CA32C4B12E5D4540010200000002000000C79B7E6AC19754C0E8D06F6E2E5D45406663CC63C19754C063BFE45B2E5D4540010200000002000000C79B7E6AC19754C0E8D06F6E2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000526EB66EC19754C0C9181E7A2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000526EB66EC19754C0C9181E7A2E5D4540C79B7E6AC19754C0E8D06F6E2E5D4540010200000002000000CD0C476FC19754C0C094AE7B2E5D4540793BC269C19754C03012DA722E5D4540010200000002000000CD0C476FC19754C0C094AE7B2E5D4540526EB66EC19754C0C9181E7A2E5D454001020000000200000067DECB74C19754C09F40A0302E5D45406663CC63C19754C063BFE45B2E5D454001020000000200000067DECB74C19754C09F40A0302E5D4540C79B7E6AC19754C0E8D06F6E2E5D454001020000000200000002F1BA7EC19754C0FAD005F52D5D45400CE30A0DC19754C00FB5A5112D5D454001020000000200000002F1BA7EC19754C0FAD005F52D5D454067DECB74C19754C09F40A0302E5D45400102000000020000003EAD4786C19754C071491F042E5D454067DECB74C19754C09F40A0302E5D45400102000000020000003EAD4786C19754C071491F042E5D454002F1BA7EC19754C0FAD005F52D5D4540010200000002000000FDF7C694C19754C08EA6BD702D5D454002F1BA7EC19754C0FAD005F52D5D45400102000000020000002691B199C19754C0950F3E532D5D4540C5B7DC8EC19754C0E54297FC2C5D45400102000000020000002691B199C19754C0950F3E532D5D4540FDF7C694C19754C08EA6BD702D5D4540010200000002000000D34324A3C19754C0B4A5C7B42F5D4540ADF7A63BC19754C0652B64A9305D4540010200000002000000D34324A3C19754C0B4A5C7B42F5D454010E96754C19754C0A600F8F22E5D4540010200000002000000E060DFA3C19754C057322B162D5D4540C5B7DC8EC19754C0E54297FC2C5D4540010200000002000000E060DFA3C19754C057322B162D5D45402691B199C19754C0950F3E532D5D4540010200000002000000BBF0F8A4C19754C0240B79AD2D5D4540FDF7C694C19754C08EA6BD702D5D4540010200000002000000BBF0F8A4C19754C0240B79AD2D5D45402691B199C19754C0950F3E532D5D454001020000000200000028D9C7A5C19754C0FA4DF0B32D5D45403EAD4786C19754C071491F042E5D454001020000000200000028D9C7A5C19754C0FA4DF0B32D5D4540BBF0F8A4C19754C0240B79AD2D5D4540010200000002000000798753A6C19754C08EC08CB22D5D4540BBF0F8A4C19754C0240B79AD2D5D4540010200000002000000798753A6C19754C08EC08CB22D5D454028D9C7A5C19754C0FA4DF0B32D5D45400102000000020000009FFF15ABC19754C09EC255C82F5D45405C55F65DC19754C057FA69C9305D45400102000000020000009FFF15ABC19754C09EC255C82F5D4540D34324A3C19754C0B4A5C7B42F5D45400102000000020000009D11A5BDC19754C03012DA722E5D45403EAD4786C19754C071491F042E5D45400102000000020000009D11A5BDC19754C03012DA722E5D454028D9C7A5C19754C0FA4DF0B32D5D45400102000000020000002A7664BFC19754C0B55D01722F5D4540B5E0455FC19754C0CA32C4B12E5D45400102000000020000002A7664BFC19754C0B55D01722F5D4540D34324A3C19754C0B4A5C7B42F5D4540010200000002000000FF3EE3C2C19754C05FEFFE782F5D45409FFF15ABC19754C09EC255C82F5D4540010200000002000000FF3EE3C2C19754C05FEFFE782F5D45402A7664BFC19754C0B55D01722F5D4540010200000002000000D6BB28C4C19754C0C615BD662F5D4540CD0C476FC19754C0C094AE7B2E5D4540010200000002000000D6BB28C4C19754C0C615BD662F5D45402A7664BFC19754C0B55D01722F5D45400102000000020000001DD474C6C19754C0CBA8196D2F5D4540FF3EE3C2C19754C05FEFFE782F5D45400102000000020000001DD474C6C19754C0CBA8196D2F5D4540D6BB28C4C19754C0C615BD662F5D4540010200000002000000C4995FCDC19754C099D36531315D45406E25D927C19754C06944CB7D315D4540010200000002000000C4995FCDC19754C099D36531315D45405C55F65DC19754C057FA69C9305D454001020000000200000057F379D0C19754C0012081092F5D4540526EB66EC19754C0C9181E7A2E5D454001020000000200000057F379D0C19754C0012081092F5D45409D11A5BDC19754C03012DA722E5D45400102000000020000006F39B0D1C19754C0C43C5B27305D45409FFF15ABC19754C09EC255C82F5D45400102000000020000006F39B0D1C19754C0C43C5B27305D45409D11A5BDC19754C005172B6A305D454001020000000200000026C79DD2C19754C0892991442F5D4540D6BB28C4C19754C0C615BD662F5D454001020000000200000026C79DD2C19754C0892991442F5D45401DD474C6C19754C0CBA8196D2F5D454001020000000200000026C79DD2C19754C077BE9F1A2F5D4540CD0C476FC19754C0C094AE7B2E5D454001020000000200000026C79DD2C19754C077BE9F1A2F5D454057F379D0C19754C0012081092F5D45400102000000020000007E3251D6C19754C03B193B382F5D454026C79DD2C19754C0892991442F5D45400102000000020000007E3251D6C19754C03B193B382F5D454026C79DD2C19754C077BE9F1A2F5D454001020000000200000023D8A9D6C19754C0F146003B2F5D454026C79DD2C19754C0892991442F5D454001020000000200000023D8A9D6C19754C0F146003B2F5D45407E3251D6C19754C03B193B382F5D454001020000000200000016481EDBC19754C096263A282F5D454026C79DD2C19754C077BE9F1A2F5D454001020000000200000016481EDBC19754C096263A282F5D45407E3251D6C19754C03B193B382F5D454001020000000200000084C232DDC19754C0901D8E2B2F5D454023D8A9D6C19754C0F146003B2F5D454001020000000200000084C232DDC19754C0901D8E2B2F5D454016481EDBC19754C096263A282F5D4540010200000002000000F36444DEC19754C0861BBB1D2F5D454057F379D0C19754C0012081092F5D4540010200000002000000F36444DEC19754C0861BBB1D2F5D454016481EDBC19754C096263A282F5D4540010200000002000000DE0033DFC19754C01D739EB12F5D4540FF3EE3C2C19754C05FEFFE782F5D4540010200000002000000DE0033DFC19754C01D739EB12F5D45401DD474C6C19754C0CBA8196D2F5D4540010200000002000000B77C37E1C19754C0E6930E222F5D454084C232DDC19754C0901D8E2B2F5D4540010200000002000000B77C37E1C19754C0E6930E222F5D4540F36444DEC19754C0861BBB1D2F5D4540010200000002000000AF7C96E7C19754C0BE6A65C22F5D454023D8A9D6C19754C0F146003B2F5D4540010200000002000000AF7C96E7C19754C0BE6A65C22F5D4540DE0033DFC19754C01D739EB12F5D4540010200000002000000394BD2E8C19754C084DE43CC2F5D4540DE0033DFC19754C01D739EB12F5D4540010200000002000000394BD2E8C19754C084DE43CC2F5D4540AF7C96E7C19754C0BE6A65C22F5D45400102000000020000007D190EEAC19754C0BC5122D62F5D45406F39B0D1C19754C0C43C5B27305D45400102000000020000007D190EEAC19754C0BC5122D62F5D4540394BD2E8C19754C084DE43CC2F5D45400102000000020000007CCA1CEBC19754C0EF039CD22F5D4540394BD2E8C19754C084DE43CC2F5D45400102000000020000007CCA1CEBC19754C0EF039CD22F5D45407D190EEAC19754C0BC5122D62F5D454001020000000200000011AAD4ECC19754C082C5E1CC2F5D4540AF7C96E7C19754C0BE6A65C22F5D454001020000000200000011AAD4ECC19754C082C5E1CC2F5D45407CCA1CEBC19754C0EF039CD22F5D4540010200000002000000D0879AF0C19754C0900117C92E5D4540798753A6C19754C08EC08CB22D5D4540010200000002000000D0879AF0C19754C0900117C92E5D45409D11A5BDC19754C03012DA722E5D454001020000000200000073D712F2C19754C0DC9DB5DB2E5D45409D11A5BDC19754C03012DA722E5D454001020000000200000073D712F2C19754C0DC9DB5DB2E5D4540F36444DEC19754C0861BBB1D2F5D4540010200000002000000FC8CECF3C19754C0B5958AD52E5D4540D0879AF0C19754C0900117C92E5D4540010200000002000000FC8CECF3C19754C0B5958AD52E5D454073D712F2C19754C0DC9DB5DB2E5D4540010200000002000000299548F5C19754C0D27A02D12E5D4540D0879AF0C19754C0900117C92E5D4540010200000002000000299548F5C19754C0D27A02D12E5D4540FC8CECF3C19754C0B5958AD52E5D4540010200000002000000636910F9C19754C0BCC1B0E92E5D4540B77C37E1C19754C0E6930E222F5D4540010200000002000000636910F9C19754C0BCC1B0E92E5D454073D712F2C19754C0DC9DB5DB2E5D4540010200000002000000200035F9C19754C06B455AE92E5D4540FC8CECF3C19754C0B5958AD52E5D4540010200000002000000200035F9C19754C06B455AE92E5D4540636910F9C19754C0BCC1B0E92E5D4540010200000002000000C73C90F9C19754C08368B0EA2E5D4540636910F9C19754C0BCC1B0E92E5D4540010200000002000000C73C90F9C19754C08368B0EA2E5D4540200035F9C19754C06B455AE92E5D4540010200000002000000F95F92FDC19754C0A13409DF2E5D4540299548F5C19754C0D27A02D12E5D4540010200000002000000F95F92FDC19754C0A13409DF2E5D4540200035F9C19754C06B455AE92E5D454001020000000200000027C48C03C29754C0F6A517A2305D45406F39B0D1C19754C0C43C5B27305D454001020000000200000027C48C03C29754C0F6A517A2305D45407D190EEAC19754C0BC5122D62F5D4540010200000002000000304D7608C29754C01BFBC6702F5D454084C232DDC19754C0901D8E2B2F5D4540010200000002000000304D7608C29754C01BFBC6702F5D454011AAD4ECC19754C082C5E1CC2F5D45400102000000020000004D93640BC29754C0CFD54F872E5D4540299548F5C19754C0D27A02D12E5D4540010200000002000000E3DBDE0CC29754C0CF1F15622F5D4540B77C37E1C19754C0E6930E222F5D4540010200000002000000E3DBDE0CC29754C0CF1F15622F5D4540304D7608C29754C01BFBC6702F5D4540010200000002000000C0E78711C29754C077BE9F1A2F5D4540C73C90F9C19754C08368B0EA2E5D4540010200000002000000FF318113C29754C03A00F84B2F5D4540C73C90F9C19754C08368B0EA2E5D4540010200000002000000FF318113C29754C03A00F84B2F5D4540E3DBDE0CC29754C0CF1F15622F5D45400102000000020000007543C814C29754C0F2BD2CA82E5D4540F95F92FDC19754C0A13409DF2E5D45400102000000020000007543C814C29754C0F2BD2CA82E5D45404D93640BC29754C0CFD54F872E5D45400102000000020000008EE0D019C29754C0EEED469C2E5D45407543C814C29754C0F2BD2CA82E5D45400102000000020000008FFBFB1EC29754C04B62917D315D4540C4995FCDC19754C099D36531315D45400102000000020000008FFBFB1EC29754C04B62917D315D454027C48C03C29754C0F6A517A2305D4540010200000002000000D56B7321C29754C01D5944802F5D4540E3DBDE0CC29754C0CF1F15622F5D4540010200000002000000D56B7321C29754C01D5944802F5D4540FF318113C29754C03A00F84B2F5D4540010200000002000000DB64CB21C29754C0BB01561C2F5D4540F95F92FDC19754C0A13409DF2E5D4540010200000002000000DB64CB21C29754C0BB01561C2F5D4540FF318113C29754C03A00F84B2F5D4540010200000002000000D4FF202CC29754C0EF51E3F92E5D45407543C814C29754C0F2BD2CA82E5D4540010200000002000000D4FF202CC29754C0EF51E3F92E5D4540DB64CB21C29754C0BB01561C2F5D45400102000000020000005BDA5F2CC29754C035CF11F92E5D45408EE0D019C29754C0EEED469C2E5D45400102000000020000005BDA5F2CC29754C035CF11F92E5D4540D4FF202CC29754C0EF51E3F92E5D45400102000000020000006DB6D72CC29754C04B70FCAA2F5D4540304D7608C29754C01BFBC6702F5D45400102000000020000006DB6D72CC29754C04B70FCAA2F5D4540D56B7321C29754C01D5944802F5D4540010200000002000000392F7E2DC29754C04577A9FE2E5D4540D4FF202CC29754C0EF51E3F92E5D4540010200000002000000392F7E2DC29754C04577A9FE2E5D45405BDA5F2CC29754C035CF11F92E5D45400102000000020000008542232FC29754C05598CBFE315D4540F1DB3BDBC09754C0B5055C69335D45400102000000020000008542232FC29754C05598CBFE315D45408FFBFB1EC29754C04B62917D315D4540010200000002000000E107733CC29754C0D1B271492F5D4540DB64CB21C29754C0BB01561C2F5D4540010200000002000000E107733CC29754C0D1B271492F5D4540392F7E2DC29754C04577A9FE2E5D4540010200000002000000DE327644C29754C0C71C63A9325D4540D1DF4401C19754C074634670335D4540010200000002000000DE327644C29754C0C71C63A9325D45408542232FC29754C05598CBFE315D4540010200000002000000A328DC48C29754C07E60725E2F5D4540392F7E2DC29754C04577A9FE2E5D4540010200000002000000A328DC48C29754C07E60725E2F5D4540E107733CC29754C0D1B271492F5D454001020000000200000065122C57C29754C0DCE60ECF2F5D4540D56B7321C29754C01D5944802F5D454001020000000200000065122C57C29754C0DCE60ECF2F5D4540E107733CC29754C0D1B271492F5D4540010200000002000000EA6DA85EC29754C05D428FF92D5D4540E060DFA3C19754C057322B162D5D4540010200000002000000EA6DA85EC29754C05D428FF92D5D45408EE0D019C29754C0EEED469C2E5D454001020000000200000001847B60C29754C046209CFD2F5D45406DB6D72CC29754C04B70FCAA2F5D454001020000000200000001847B60C29754C046209CFD2F5D454065122C57C29754C0DCE60ECF2F5D4540010200000002000000EC913668C29754C0B732EAC1315D45408FFBFB1EC29754C04B62917D315D4540010200000002000000EC913668C29754C0B732EAC1315D45408542232FC29754C05598CBFE315D4540010200000002000000EA20F971C29754C062E412112E5D45405BDA5F2CC29754C035CF11F92E5D4540010200000002000000EA20F971C29754C062E412112E5D4540EA6DA85EC29754C05D428FF92D5D4540010200000002000000C27F8F73C29754C05A9BCFB5315D454027C48C03C29754C0F6A517A2305D4540010200000002000000C27F8F73C29754C05A9BCFB5315D4540EC913668C29754C0B732EAC1315D4540010200000002000000AD4CEB75C29754C0C35E27FC2F5D4540A328DC48C29754C07E60725E2F5D4540010200000002000000AD4CEB75C29754C0C35E27FC2F5D454065122C57C29754C0DCE60ECF2F5D4540010200000002000000B1406982C29754C067C45DDA315D4540EC913668C29754C0B732EAC1315D4540010200000002000000B1406982C29754C067C45DDA315D4540C27F8F73C29754C05A9BCFB5315D454001020000000200000036D7BD86C29754C01103D19A2D5D4540EA6DA85EC29754C05D428FF92D5D454001020000000200000050C7BC88C29754C04F8B043E305D454001847B60C29754C046209CFD2F5D454001020000000200000050C7BC88C29754C04F8B043E305D4540AD4CEB75C29754C0C35E27FC2F5D45400102000000020000005B3E5E89C29754C016EEF405315D454011AAD4ECC19754C082C5E1CC2F5D45400102000000020000005B3E5E89C29754C016EEF405315D45406DB6D72CC29754C04B70FCAA2F5D4540010200000002000000E707068FC29754C06C5F8498315D45407CCA1CEBC19754C0EF039CD22F5D4540010200000002000000E707068FC29754C06C5F8498315D4540C27F8F73C29754C05A9BCFB5315D45400102000000020000001FA80991C29754C0A77686A92D5D4540EA20F971C29754C062E412112E5D45400102000000020000001FA80991C29754C0A77686A92D5D454036D7BD86C29754C01103D19A2D5D45400102000000020000008F4C579DC29754C07E0AE72D315D454001847B60C29754C046209CFD2F5D45400102000000020000008F4C579DC29754C07E0AE72D315D45405B3E5E89C29754C016EEF405315D45400102000000020000001E5D0CA9C29754C023E2C17C315D45405B3E5E89C29754C016EEF405315D45400102000000020000001E5D0CA9C29754C023E2C17C315D4540E707068FC29754C06C5F8498315D4540010200000002000000E0C165ACC29754C088542F79315D45408F4C579DC29754C07E0AE72D315D4540010200000002000000E0C165ACC29754C088542F79315D45401E5D0CA9C29754C023E2C17C315D4540010200000002000000456C20BBC29754C0EB497969315D45408F4C579DC29754C07E0AE72D315D4540010200000002000000456C20BBC29754C0EB497969315D4540E0C165ACC29754C088542F79315D4540010200000002000000A9DB14D6C29754C0AAD2B84C315D454050C7BC88C29754C04F8B043E305D4540010200000002000000A9DB14D6C29754C0AAD2B84C315D4540456C20BBC29754C0EB497969315D4540 - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug599.xml geos-3.8.0/tests/xmltester/tests/ticket/bug599.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug599.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug599.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ - - -http://trac.osgeo.org/geos/ticket/599 - - - - - -http://trac.osgeo.org/geos/ticket/599 - - -010200000020000000CE89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B2764940533AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649402C1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB80764940016B7AF59617ED3FCD71135A7B76494048663F9CD120ED3F46A22B6C61764940C63FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A7649404ADD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E92962576494066283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E76494094EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940F43F5475EA25ED3F04159F4CED7549409F7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E075494042DFCC9EBA28ED3F9DBB0276DA754940D5C78D6CF827ED3FD40E7F4DD6754940F050B92EA127ED3FDBBD816ED4754940D4C78D6CF827ED3FD40E7F4DD6754940D5C78D6CF827ED3FD40E7F4DD6754940650FA3D6EA21ED3F22A98592C9754940883F790E1B1BED3FEF8A85C6B8754940 - - -01020000001D000000CE89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B2764940533AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649402C1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB80764940016B7AF59617ED3FCD71135A7B76494048663F9CD120ED3F46A22B6C61764940C63FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A7649404ADD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E92962576494066283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E76494094EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940F43F5475EA25ED3F04159F4CED7549409F7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E075494042DFCC9EBA28ED3F9DBB0276DA754940D4C78D6CF827ED3FD40E7F4DD6754940650FA3D6EA21ED3F22A98592C9754940883F790E1B1BED3FEF8A85C6B8754940 - - - true - - - true - - - -01050000001D000000010200000002000000CD89E2FA1C04ED3F908BC5CAC37649407D2B6DCC4602ED3FE0C4EB55BF7649400102000000020000007D2B6DCC4602ED3FE0C4EB55BF7649407A765490FA06ED3FCF28A787B27649400102000000020000007A765490FA06ED3FCF28A787B2764940543AA28C020EED3F6FC6C4419D764940010200000002000000543AA28C020EED3F6FC6C4419D7649400949B0822914ED3F79A40BFB877649400102000000020000000949B0822914ED3F79A40BFB877649402D1B310E8916ED3F69E9656F847649400102000000020000002D1B310E8916ED3F69E9656F847649404DD070146A17ED3F650A8CAB807649400102000000020000004DD070146A17ED3F650A8CAB80764940006B7AF59617ED3FCD71135A7B764940010200000002000000006B7AF59617ED3FCD71135A7B76494047663F9CD120ED3F46A22B6C6176494001020000000200000047663F9CD120ED3F46A22B6C61764940C73FC7A24426ED3F1086F01E56764940010200000002000000C73FC7A24426ED3F1086F01E56764940EC7E5F6DD62AED3FE64581994A764940010200000002000000EC7E5F6DD62AED3FE64581994A76494049DD29786532ED3F89BC40A43A76494001020000000200000049DD29786532ED3F89BC40A43A76494012E22593AE34ED3F6946F58C3376494001020000000200000012E22593AE34ED3F6946F58C337649406F23AF18BF3AED3F4AD6E1E82A7649400102000000020000006F23AF18BF3AED3F4AD6E1E82A764940EBC2B414353DED3F2E3F709527764940010200000002000000EBC2B414353DED3F2E3F709527764940EBC2B414353DED3F1D7E929625764940010200000002000000EBC2B414353DED3F1D7E92962576494065283806AE3CED3F8FB575262376494001020000000200000065283806AE3CED3F8FB5752623764940A61EB3FD7538ED3FDC8BC3F418764940010200000002000000A61EB3FD7538ED3FDC8BC3F418764940F90A1C1A6030ED3FAC5AD2510E764940010200000002000000F90A1C1A6030ED3FAC5AD2510E76494093EB5C07BD2DED3F96B4E21B0A76494001020000000200000093EB5C07BD2DED3F96B4E21B0A76494092B1DAFCBF2AED3F763E97040376494001020000000200000092B1DAFCBF2AED3F763E970403764940F579D67FE728ED3FDD9FE63FFF754940010200000002000000F579D67FE728ED3FDD9FE63FFF754940F33F5475EA25ED3F04159F4CED754940010200000002000000F33F5475EA25ED3F04159F4CED7549409E7EABD09B25ED3F4EEDB199E87549400102000000020000009E7EABD09B25ED3F4EEDB199E87549405842D2020F27ED3FBD378600E07549400102000000020000005842D2020F27ED3FBD378600E075494041DFCC9EBA28ED3F9DBB0276DA75494001020000000200000041DFCC9EBA28ED3F9DBB0276DA754940D4C78D6CF827ED3FD40E7F4DD6754940010200000002000000D4C78D6CF827ED3FD40E7F4DD6754940F150B92EA127ED3FDBBD816ED4754940010200000002000000D4C78D6CF827ED3FD40E7F4DD6754940640FA3D6EA21ED3F22A98592C9754940010200000002000000640FA3D6EA21ED3F22A98592C9754940893F790E1B1BED3FEF8A85C6B8754940 - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug605.xml geos-3.8.0/tests/xmltester/tests/ticket/bug605.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug605.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug605.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ - - - http://trac.osgeo.org/geos/ticket/605 - - - com.vividsolutions.jtstest.testrunner.BufferResultMatcher - - - - http://trac.osgeo.org/geos/ticket/605 - - -LINESTRING(365851.11860 6133776.04159, 366074.92430 6134077.56523, -375141.31010 6138794.83236, 373718.87248 6137668.49630, 373346.64754 -6137433.71166638, 366752.52700 6134568.10150, 360775.41757 6127074.35479, -360762.97098 6127054.06482, 365851.11862 6133776.04159, 366074.92434 -6134077.56523, 366360.99154 6134339.22803, 366752.52702 6134568.10150, -373346.64754 6137433.71166638, 373718.87248 6137668.49630, 375295.49858 -6138886.92620, 373718.87248 6137668.49630, 373346.64754 6137433.71166, -366826.15047 6134600.68215, 366384.17707 6134356.53424, 365851.11862 -6133776.04159, 364105.70077 6130589.54564, 360283.95054 6126559.51325, -356917.60143 6124368.97007, 360279.79015 6126555.44586, 364105.70077 -6130589.54564, 365851.11862 6133776.04159, 364105.70077 6130589.54564, -360283.95054 6126559.51325) - - - - -POLYGON ((355917.6765000000013970 6124381.2275999998673797, -355939.2774000000208616 6124576.0504000000655651, -355998.4679999999934807 6124762.9166000001132488, -356092.9739999999874271 6124934.6463999999687076, -356219.1641999999992549 6125084.6414999999105930, -356372.1902000000118278 6125207.1387000000104308, -359638.8080733100068755 6127332.7850270699709654, -360038.8583028200082481 6127754.6042146598920226, -360042.8382790799951181 6127759.5940738096833229, -365050.9408594800042920 6134375.8229583799839020, -365271.9468999999808148 6134673.5746999997645617, -365399.9925999999977648 6134815.4453999996185303, -365686.0597999999881722 6135077.1081999996677041, -365731.3817567800288089 6135110.4964476702734828, -365766.0731999999843538 6135142.6305999998003244, -365855.4125532599864528 6135201.8687370792031288, -365856.3346000000019558 6135202.5480000004172325, -365857.1991783700068481 6135203.0533924298360944, -365900.6434000000008382 6135231.8598999995738268, -366006.7428950199973769 6135290.4697156799957156, -366247.8701000000000931 6135431.4215000001713634, -366353.9645000000018626 6135485.2427000002935529, -366417.4646187499747612 6135512.8379774494096637, -366427.6574000000255182 6135517.8535000002011657, -367936.5907135099987499 6136173.4557738900184631, -374679.7457999999751337 6139681.9391999999061227, -374708.2528112199506722 6139693.3706018300727010, -374850.1265000000130385 6139782.2717000003904104, -375033.3573999999789521 6139851.9556999998167157, -375226.6623000000254251 6139884.5542000001296401, -375422.6124999999883585 6139878.8142999997362494, -375613.6778000000049360 6139834.9567999998107553, -375792.5156999999890104 6139754.6668999996036291, -375952.2534999999916181 6139641.0302999997511506, -376086.7525000000023283 6139498.4139000000432134, -376190.8440999999875203 6139332.2982999999076128, -376260.5280999999959022 6139149.0674000000581145, -376293.1266000000177883 6138955.7625000001862645, -376287.3866999999736436 6138759.8123000003397465, -376243.5291999999899417 6138568.7470000004395843, -376163.2393000000156462 6138389.9090999998152256, -376049.6026999999885447 6138230.1712999995797873, -375906.9862999999895692 6138095.6722999997437000, -374330.3601999999955297 6136877.2423999998718500, -374252.3702000000048429 6136822.6947999997064471, -373880.1452000000281259 6136587.9101999998092651, -373745.2100000000209548 6136516.5705000003799796, -368792.5121412900043651 6134364.2741611804813147, -367214.0061748400330544 6133542.9728815201669931, -366095.5620286299963482 6132140.7336761802434921, -364982.7469999999739230 6130109.1394999995827675, -364831.3095999999786727 6129901.4380999999120831, -361566.4569188400055282 6126458.6538448799401522, -361560.3061999999918044 6126450.5280999997630715, -361431.7930000000051223 6126310.6421999996528029, -361412.6469055399647914 6126296.4613223504275084, -361009.5593000000226311 6125871.4057999998331070, -361007.8637289800099097 6125869.9373341500759125, -361005.3717000000178814 6125867.3097000000998378, -360991.3914410999859683 6125855.6713483100757003, -360861.3738000000012107 6125743.0683000003919005, -360844.7993283700197935 6125733.6356567097827792, -360824.9630999999935739 6125717.1222999999299645, -357462.7742999999900348 6123530.6464999997988343, -357288.7666999999783002 6123440.4033000003546476, -357100.4979000000166707 6123385.8378999996930361, -356905.2017999999807216 6123369.0470000002533197, -356710.3820999999879859 6123390.6755999997258186, -356523.5242999999900348 6123449.8926999997347593, -356351.8079000000143424 6123544.4231000002473593, -356201.8306999999913387 6123670.6347000002861023, -356079.3552999999956228 6123823.6780000003054738, -355989.0873000000137836 6123997.6728999996557832, -355934.4952000000048429 6124185.9338999995961785, 355917.6765000000013970 -6124381.2275999998673797)) - - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug615.xml geos-3.8.0/tests/xmltester/tests/ticket/bug615.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug615.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug615.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - - - - - - -See http://trac.osgeo.org/geos/ticket/615 - - -01060000000500000001030000000100000004000000239CFA9F7F9230401ABADB203141474018601F9DBA92304062D68BA19C40474027361FD7869230408D62B9A5D5404740239CFA9F7F9230401ABADB203141474001030000000100000004000000125901C0739230408653A0054F41474043CA4FAA7D923040DB5548F949414740239CFA9F7F9230401ABADB2031414740125901C0739230408653A0054F4147400103000000010000000B0000005EA791E509923040D3DDAD7E594247408BFD65F7E4913040CBA65CE15D4247406F2F698CD69130400A850838844247401A34F44F70913040D947A7AE7C424740B745990D329130400AA2EE0390424740454C89247A913040D8817346944247407E74EACA679130406E3997E2AA424740A81DFE9AAC913040CA8E8D40BC4247400C410E4A9891304074EFE192E342474036B05582C5913040E5ED08A7054347405EA791E509923040D3DDAD7E5942474001030000000100000005000000125901C0739230408653A0054F4147400DAB7823F3903040FD1873D712424740A73FFB9122923040367BA01518424740773A98D22192304096FAA9431D424740125901C0739230408653A0054F414740010300000001000000040000005EA791E509923040D3DDAD7E59424740C4D32B651992304027C286A757424740773A98D22192304096FAA9431D4247405EA791E509923040D3DDAD7E59424740 - - -0106000000050000000103000000010000000800000019C9CCC7889230401D2A92141A41474018601F9DBA92304062D68BA19C40474026361FD7869230408D62B9A5D5404740B48EAA26889230408CB96B09F9404740C3D8429083923040B0AC34290541474098DD938785923040C5387F130A41474026361FD786923040704221020E41474019C9CCC7889230401D2A92141A4147400103000000010000000700000035F1A79473923040BDB5C0724F41474043CA4FAA7D923040DA5548F94941474098DD938785923040F0C4AC174341474018EC866D8B9230400C59DDEA39414740A64412BD8C923040FEF15EB53241474019C9CCC7889230401D2A92141A41474035F1A79473923040BDB5C0724F414740010300000001000000130000005EA791E509923040D3DDAD7E594247408BFD65F7E4913040CAA65CE15D4247406F2F698CD69130400A85083884424740D252793BC29130401FF46C567D4247409A999999999130402D5BEB8B844247401A34F44F70913040D847A7AE7C424740B745990D329130400AA2EE0390424740459E245D33913040D881734694424740378E588B4F91304018096D3997424740444C89247A913040D8817346944247407E74EACA679130406D3997E2AA424740A81DFE9AAC913040C98E8D40BC424740E17F2BD9B19130406D73637AC24247400B410E4A9891304074EFE192E3424740280F0BB5A691304097E2AAB2EF424740D252793BC29130402D6002B7EE424740A81DFE9AAC9130400282397AFC42474036B05582C5913040E5ED08A7054347405EA791E509923040D3DDAD7E594247400103000000010000000E00000035F1A79473923040BDB5C0724F4147408A3C49BA66923040211FF46C5641474036CD3B4ED1913040C4B12E6EA3414740C47762D68B91304076374F75C8414740D3BCE3141D913040EE940ED6FF4147408CF337A110913040042159C0044247402979758E01913040F5D6C05609424740450DA661F8903040A0E062450D4247400DAB7823F3903040FC1873D71242474029965B5A0D91304020EF552B1342474099F04BFDBC913040834C327216424740A73FFB9122923040357BA01518424740773A98D22192304097FAA9431D42474035F1A79473923040BDB5C0724F414740010300000001000000040000005EA791E509923040D3DDAD7E59424740C3D32B651992304027C286A757424740773A98D22192304097FAA9431D4247405EA791E509923040D3DDAD7E59424740 - - - -01060000000C0000000103000000010000000C00000043CA4FAA7D923040DA5548F94941474098DD938785923040F0C4AC174341474018EC866D8B9230400C59DDEA39414740A64412BD8C923040FEF15EB53241474019C9CCC7889230401D2A92141A41474026361FD786923040704221020E41474098DD938785923040C5387F130A414740C3D8429083923040B0AC342905414740B48EAA26889230408CB96B09F940474026361FD7869230408D62B9A5D5404740239CFA9F7F9230401ABADB203141474043CA4FAA7D923040DA5548F9494147400103000000010000000A00000071D9271D0C91304001823120064247408CF337A110913040042159C004424740D3BCE3141D913040EE940ED6FF414740C47762D68B91304076374F75C841474036CD3B4ED1913040C4B12E6EA34147408A3C49BA66923040211FF46C5641474035F1A79473923040BDB5C0724F41474043CA4FAA7D923040DA5548F949414740125901C0739230408653A0054F41474071D9271D0C913040018231200642474001030000000100000005000000B745990D329130400AA2EE0390424740459E245D33913040D881734694424740378E588B4F91304018096D3997424740444C89247A913040D881734694424740B745990D329130400AA2EE0390424740010300000001000000050000000DAB7823F3903040FC1873D71242474071D9271D0C91304001823120064247402979758E01913040F5D6C05609424740450DA661F8903040A0E062450D4247400DAB7823F3903040FC1873D7124247400103000000010000000400000077459ECBAC91304054D11324814247406F2F698CD69130400A85083884424740D252793BC29130401FF46C567D42474077459ECBAC91304054D113248142474001030000000100000004000000A81DFE9AAC9130400282397AFC42474036B05582C5913040E5ED08A705434740B0C6C481B391304014A2E915F8424740A81DFE9AAC9130400282397AFC42474001030000000100000004000000D675324DA8913040353117A4EF424740B0C6C481B391304014A2E915F8424740D252793BC29130402D6002B7EE424740D675324DA8913040353117A4EF424740010300000001000000040000000B410E4A9891304074EFE192E3424740E17F2BD9B19130406D73637AC2424740A81DFE9AAC913040C98E8D40BC4247400B410E4A9891304074EFE192E3424740010300000001000000040000000B410E4A9891304074EFE192E3424740280F0BB5A691304097E2AAB2EF424740D675324DA8913040353117A4EF4247400B410E4A9891304074EFE192E3424740010300000001000000040000001A34F44F70913040D847A7AE7C4247409A999999999130402D5BEB8B8442474077459ECBAC91304054D11324814247401A34F44F70913040D847A7AE7C424740010300000001000000040000003893A64068913040B2A17BDD1442474099F04BFDBC913040834C327216424740A73FFB9122923040357BA015184247403893A64068913040B2A17BDD14424740010300000001000000040000000DAB7823F3903040FC1873D7124247403893A64068913040B2A17BDD1442474029965B5A0D91304020EF552B134247400DAB7823F3903040FC1873D712424740 - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug716.xml geos-3.8.0/tests/xmltester/tests/ticket/bug716.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug716.xml 2017-09-05 18:35:12.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug716.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ - - - - Intersects operation of polygons with collinear lines. - http://trac.osgeo.org/geos/ticket/716 - - - - http://trac.osgeo.org/geos/ticket/716 - a CW, b CW - - - POLYGON((0.04745459120333707 7.998990511152711, 10.222919749090828 34.08521670606894, 10 10, 0.04745459120333707 7.998990511152711)) - - - POLYGON((15 5, 0.010044793132693013 7.903085268568247, 10.260329547338191 34.181121949106455, 15 5)) - - - - true - - - - - - http://trac.osgeo.org/geos/ticket/716 - a CCW, b CW - - - POLYGON((0.04745459120333707 7.998990511152711, 10 10, 10.222919749090828 34.08521670606894, 0.04745459120333707 7.998990511152711)) - - - POLYGON((15 5, 0.010044793132693013 7.903085268568247, 10.260329547338191 34.181121949106455, 15 5)) - - - - true - - - - - - http://trac.osgeo.org/geos/ticket/716 - a CW, b CCW - - - POLYGON((0.04745459120333707 7.998990511152711, 10.222919749090828 34.08521670606894, 10 10, 0.04745459120333707 7.998990511152711)) - - - POLYGON((15 5, 10.260329547338191 34.181121949106455, 0.010044793132693013 7.903085268568247, 15 5)) - - - - true - - - - - - http://trac.osgeo.org/geos/ticket/716 - a CCW, b CCW - - - POLYGON((0.04745459120333707 7.998990511152711, 10 10, 10.222919749090828 34.08521670606894, 0.04745459120333707 7.998990511152711)) - - - POLYGON((15 5, 10.260329547338191 34.181121949106455, 0.010044793132693013 7.903085268568247, 15 5)) - - - - true - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/ticket/bug837.xml geos-3.8.0/tests/xmltester/tests/ticket/bug837.xml --- geos-3.7.1/tests/xmltester/tests/ticket/bug837.xml 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/ticket/bug837.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - - See https://trac.osgeo.org/geos/ticket/837 - - - Robustness issue - -0106000000E7010000010300000001000000050000006766666658012A41CDCCCC4C25D53B41CDCCCCCC56012A416766666689D53B4133333333E7022A419A9999198BD53B41CDCCCCCCE8022A410000000027D53B416766666658012A41CDCCCC4C25D53B410103000000010000000500000067666666D9022A4100000000ACD83B419A999999D7022A419A99991910D93B41CDCCCCCC9F032A41676666E610D93B419A999999A1032A41CDCCCCCCACD83B4167666666D9022A4100000000ACD83B4101030000000100000007000000CDCCCCCC0D022A41CDCCCC4C73D93B41000000000C022A4167666666D7D93B41CDCCCCCC43012A419A999999D6D93B410000000042012A41333333B33ADA3B419A999999D2022A41676666663CDA3B4100000000D6022A413333333374D93B41CDCCCCCC0D022A41CDCCCC4C73D93B410103000000010000000600000024CF5A3D3B012A41317FAAC3C8DB3B41E17A142E3E012A41F6285C0FC8DB3B415559285104022A41D9C503FA95DB3B41CDCCCCCC06022A41333333B303DB3B419A9999993E012A41676666E602DB3B4124CF5A3D3B012A41317FAAC3C8DB3B4101030000000100000005000000676666661B022A410000008052D63B410000000018022A41333333B31AD73B4133333333E0022A41000000801BD73B419A999999E3022A41CDCCCC4C53D63B41676666661B022A410000008052D63B41010300000001000000050000000000000061012A41333333B330D33B41333333335F012A41676666E694D33B419A99999927022A41333333B395D33B413333333329022A419A99999931D33B410000000061012A41333333B330D33B4101030000000100000005000000CDCCCCCCF4022A41CDCCCC4C6AD23B4100000000BD032A419A9999196BD23B41CDCCCCCCBE032A410000000007D23B419A999999F6022A419A99991906D23B41CDCCCCCCF4022A41CDCCCC4C6AD23B4101030000000100000005000000000000001F022A41333333338AD53B41333333331D022A4167666666EED53B4167666666E5022A4133333333EFD53B4133333333E7022A419A9999198BD53B41000000001F022A41333333338AD53B41010300000001000000050000000000000030022A4133333333A1D13B41676666662E022A41CDCCCC4C05D23B419A999999F6022A419A99991906D23B4167666666F8022A4100000000A2D13B410000000030022A4133333333A1D13B41010300000001000000050000009A999999D0FF2941000000002FD33B41CDCCCCCCCEFF29419A99991993D33B410000000097002A410000000094D33B41CDCCCCCC98002A41676666E62FD33B419A999999D0FF2941000000002FD33B41010300000001000000050000009A9999992C022A416766666669D23B41000000002B022A4100000080CDD23B4133333333F3022A4167666666CED23B41CDCCCCCCF4022A41CDCCCC4C6AD23B419A9999992C022A416766666669D23B4101030000000100000005000000333333335A012A4133333333C1D43B416766666658012A41CDCCCC4C25D53B419A99999920022A419A99991926D53B416766666622022A4100000000C2D43B41333333335A012A4133333333C1D43B4101030000000100000005000000333333339C002A41333333B367D23B419A9999999A002A41CDCCCCCCCBD23B41CDCCCCCC62012A419A999999CCD23B416766666664012A410000008068D23B41333333339C002A41333333B367D23B410103000000010000000700000006C9049260022A418AABDE4368DB3B41A4703D0A9F022A4190C2F56839DB3B41F12AE880CE022A41DC5887B827DB3B41CDCCCCCCD0022A4100000080A0DA3B419A99999908022A419A9999999FDA3B413333333305022A41676666E667DB3B4106C9049260022A418AABDE4368DB3B410103000000010000000500000067666666E5022A4133333333EFD53B419A999999E3022A41CDCCCC4C53D63B4100000000AC032A413333333354D63B419A999999AD032A419A999919F0D53B4167666666E5022A4133333333EFD53B410103000000010000000500000000000000E2022A4167666666B7D63B4133333333E0022A41000000801BD73B4167666666A8032A41676666661CD73B4133333333AA032A41CDCCCC4CB8D63B4100000000E2022A4167666666B7D63B4101030000000100000005000000F0C50F1998032A41ED967BD6D9DA3B417B14AEC7D3032A411F85EB91ADDA3B410CD07853F4032A410610D3C3A1DA3B410000000099032A4167666666A1DA3B41F0C50F1998032A41ED967BD6D9DA3B4101030000000100000005000000CDCCCCCCE8022A410000000027D53B4133333333E7022A419A9999198BD53B4167666666AF032A41000000008CD53B4100000000B1032A41676666E627D53B41CDCCCCCCE8022A410000000027D53B410103000000010000000F000000AEB054951B032A4150DCA5F104DB3B415C8FC27546032A41A4703D0AF1DA3B4152B81E8578032A41295C8F42F1DA3B41F0C50F1998032A41ED967BD6D9DA3B410000000099032A4167666666A1DA3B410CD07853F4032A410610D3C3A1DA3B41A0D9DBE161042A41E927E1067ADA3B419A99999964042A4100000000DAD93B4133333333D4022A41CDCCCC4CD8D93B419A999999D2022A41676666663CDA3B41676666660A022A41000000803BDA3B419A99999908022A419A9999999FDA3B41CDCCCCCCD0022A4100000080A0DA3B4100000000CF022A419A99999904DB3B41AEB054951B032A4150DCA5F104DB3B41010300000001000000070000009A999999E3022A41CDCCCC4C53D63B4100000000E2022A4167666666B7D63B419A9999993A052A4100000000BAD63B416766666641052A419A99999929D53B413333333379042A41333333B328D53B413333333374042A410000000055D63B419A999999E3022A41CDCCCC4C53D63B4101030000000100000007000000CDCCCCCC4F012A41CDCCCCCC19D73B410000000018022A41333333B31AD73B41676666661B022A410000008052D63B419A999999E3022A41CDCCCC4C53D63B4167666666E5022A4133333333EFD53B410000000055012A4100000080EDD53B41CDCCCCCC4F012A41CDCCCCCC19D73B410103000000010000000700000067666666B4032A419A9999995FD43B41CDCCCCCCB2032A41CDCCCCCCC3D43B419A999999EA022A41676666E6C2D43B41CDCCCCCCE8022A410000000027D53B413333333379042A41333333B328D53B41CDCCCCCC7C042A410000008060D43B4167666666B4032A419A9999995FD43B4101030000000100000005000000CDCCCCCC0D022A41CDCCCC4C73D93B41333333339E032A410000000075D93B41CDCCCCCC9F032A41676666E610D93B41676666660F022A41333333330FD93B41CDCCCCCC0D022A41CDCCCC4C73D93B410103000000010000000500000033333333F3022A4167666666CED23B41CDCCCCCCEF022A419A99999996D33B4100000000B8032A416766666697D33B4167666666BB032A4133333333CFD23B4133333333F3022A4167666666CED23B4101030000000100000005000000CDCCCCCCDC022A41333333B3E3D73B4133333333DB022A41676666E647D83B4167666666A3032A41333333B348D83B4100000000A5032A419A999999E4D73B41CDCCCCCCDC022A41333333B3E3D73B41010300000001000000050000002198275F04022A41E1077AF695DB3B41A4703D8A33022A41A4703D0A8ADB3B4106C9049260022A418AABDE4368DB3B413333333305022A41676666E667DB3B412198275F04022A41E1077AF695DB3B41010300000001000000050000009A99999987002A410000000019D73B410000000086002A419A9999197DD73B41333333334E012A41676666E67DD73B41CDCCCCCC4F012A41CDCCCCCC19D73B419A99999987002A410000000019D73B41010300000001000000070000000000000018022A41333333B31AD73B416766666616022A41CDCCCCCC7ED73B419A999999DE022A419A9999997FD73B41CDCCCCCCDC022A41333333B3E3D73B4100000000A5032A419A999999E4D73B4167666666A8032A41676666661CD73B410000000018022A41333333B31AD73B4101030000000100000005000000CDCCCCCC67012A41CDCCCC4CA0D13B416766666664012A410000008068D23B419A9999992C022A416766666669D23B410000000030022A4133333333A1D13B41CDCCCCCC67012A41CDCCCC4CA0D13B41010300000001000000050000009A9999999A002A41CDCCCCCCCBD23B41CDCCCCCC98002A41676666E62FD33B413333333329022A419A99999931D33B41000000002B022A4100000080CDD23B419A9999999A002A41CDCCCCCCCBD23B41010300000001000000050000003333333390002A416766666624D53B41676666668E002A410000008088D53B41CDCCCCCC56012A416766666689D53B416766666658012A41CDCCCC4C25D53B413333333390002A416766666624D53B4101030000000100000005000000CDCCCCCC25022A41CDCCCCCCF9D33B410000000024022A41676666E65DD43B4133333333EC022A41CDCCCCCC5ED43B4100000000EE022A41333333B3FAD33B41CDCCCCCC25022A41CDCCCCCCF9D33B4101030000000100000005000000333333339C002A41333333B367D23B416766666664012A410000008068D23B41CDCCCCCC67012A41CDCCCC4CA0D13B419A9999999F002A41000000809FD13B41333333339C002A41333333B367D23B41010300000001000000050000006766666695002A419A999919F8D33B419A99999993002A41333333335CD43B41CDCCCCCC5B012A419A9999195DD43B419A9999995D012A4100000000F9D33B416766666695002A419A999919F8D33B41010300000001000000050000003333333311022A419A999919ABD83B41676666660F022A41333333330FD93B419A999999D7022A419A99991910D93B4167666666D9022A4100000000ACD83B413333333311022A419A999919ABD83B4101030000000100000005000000333333334E012A41676666E67DD73B41676666664C012A4100000000E2D73B419A99999914022A41676666E6E2D73B416766666616022A41CDCCCCCC7ED73B41333333334E012A41676666E67DD73B4101030000000100000005000000CDCCCCCCEF022A419A99999996D33B4133333333EC022A41CDCCCCCC5ED43B4167666666B4032A419A9999995FD43B4100000000B8032A416766666697D33B41CDCCCCCCEF022A419A99999996D33B410103000000010000000500000033333333E7022A419A9999198BD53B4167666666E5022A4133333333EFD53B419A999999AD032A419A999919F0D53B4167666666AF032A41000000008CD53B4133333333E7022A419A9999198BD53B41010300000001000000050000000000000042012A41333333B33ADA3B419A9999993E012A41676666E602DB3B41CDCCCCCC06022A41333333B303DB3B41676666660A022A41000000803BDA3B410000000042012A41333333B33ADA3B410103000000010000000500000067666666D7FF29419A9999999ED13B4100000000D4FF2941CDCCCCCC66D23B41333333339C002A41333333B367D23B419A9999999F002A41000000809FD13B4167666666D7FF29419A9999999ED13B4101030000000100000005000000676666662E022A41CDCCCC4C05D23B419A9999992C022A416766666669D23B41CDCCCCCCF4022A41CDCCCC4C6AD23B419A999999F6022A419A99991906D23B41676666662E022A41CDCCCC4C05D23B4101030000000100000005000000333333335F012A41676666E694D33B419A9999995D012A4100000000F9D33B41CDCCCCCC25022A41CDCCCCCCF9D33B419A99999927022A41333333B395D33B41333333335F012A41676666E694D33B4101030000000100000005000000000000002B022A4100000080CDD23B413333333329022A419A99999931D33B4167666666F1022A410000008032D33B4133333333F3022A4167666666CED23B41000000002B022A4100000080CDD23B410103000000010000000500000033333333C6FF2941333333B387D53B41676666668E002A410000008088D53B413333333390002A416766666624D53B4100000000C8FF29419A99999923D53B4133333333C6FF2941333333B387D53B410103000000010000000500000000000000FA022A41676666E63DD13B4167666666F8022A4100000000A2D13B419A999999C0032A41676666E6A2D13B4133333333C2032A41CDCCCCCC3ED13B4100000000FA022A41676666E63DD13B41010300000001000000050000000000000049012A4133333333AAD83B413333333347012A41676666660ED93B41676666660F022A41333333330FD93B413333333311022A419A999919ABD83B410000000049012A4133333333AAD83B410103000000010000000500000000000000B0FF29419A9999199DDA3B4133333333AEFF29413333333301DB3B416766666676002A410000000002DB3B413333333378002A41676666E69DDA3B4100000000B0FF29419A9999199DDA3B41010300000001000000050000006766666616022A41CDCCCCCC7ED73B419A99999914022A41676666E6E2D73B41CDCCCCCCDC022A41333333B3E3D73B419A999999DE022A419A9999997FD73B416766666616022A41CDCCCCCC7ED73B41010300000001000000090000000850CA06B4042A412F6CD9763EDA3B419A9999192A052A4152B81EC5C8D93B41FC955A532D052A41DCDDF0D6C1D93B419A9999992E052A41CDCCCCCC76D93B41333333339E032A410000000075D93B41676666669C032A419A999919D9D93B419A99999964042A4100000000DAD93B410000000063042A419A9999193EDA3B410850CA06B4042A412F6CD9763EDA3B4101030000000100000005000000CDCCCCCC12022A410000000047D83B413333333311022A419A999919ABD83B4167666666D9022A4100000000ACD83B4133333333DB022A41676666E647D83B41CDCCCCCC12022A410000000047D83B4101030000000100000005000000CDCCCCCC8C002A419A999999ECD53B41000000008B002A41333333B350D63B413333333353012A419A99999951D63B410000000055012A4100000080EDD53B41CDCCCCCC8C002A419A999999ECD53B410103000000010000000500000094733070CE022A41B35AC2BE27DB3B41AE47E17AD9022A4115AE47A123DB3B41AEB054951B032A4150DCA5F104DB3B4100000000CF022A419A99999904DB3B4194733070CE022A41B35AC2BE27DB3B410103000000010000000500000033333333D2FF2941676666E6CAD23B419A999999D0FF2941000000002FD33B41CDCCCCCC98002A41676666E62FD33B419A9999999A002A41CDCCCCCCCBD23B4133333333D2FF2941676666E6CAD23B4101030000000100000005000000676666666B012A419A999919D8D03B419A99999969012A41333333333CD13B41CDCCCCCC31022A419A9999193DD13B419A99999933022A4100000000D9D03B41676666666B012A419A999919D8D03B4101030000000100000005000000CDCCCCCCC9FF294100000080BFD43B4100000000C8FF29419A99999923D53B413333333390002A416766666624D53B410000000092002A41CDCCCC4CC0D43B41CDCCCCCCC9FF294100000080BFD43B41010300000001000000050000006766666664012A410000008068D23B41CDCCCCCC62012A419A999999CCD23B41000000002B022A4100000080CDD23B419A9999992C022A416766666669D23B416766666664012A410000008068D23B41010300000001000000050000009A999999BDFF2941333333337CD73B4100000000BCFF2941CDCCCC4CE0D73B41676666664C012A4100000000E2D73B41333333334E012A41676666E67DD73B419A999999BDFF2941333333337CD73B4101030000000100000005000000333333334E012A41676666E67DD73B416766666616022A41CDCCCCCC7ED73B410000000018022A41333333B31AD73B41CDCCCCCC4F012A41CDCCCCCC19D73B41333333334E012A41676666E67DD73B410103000000010000000500000000000000D6022A413333333374D93B4133333333D4022A41CDCCCC4CD8D93B41676666669C032A419A999919D9D93B41333333339E032A410000000075D93B4100000000D6022A413333333374D93B410103000000010000000500000033333333DB022A41676666E647D83B4167666666D9022A4100000000ACD83B419A999999A1032A41CDCCCCCCACD83B4167666666A3032A41333333B348D83B4133333333DB022A41676666E647D83B41010300000001000000050000009A999999A1032A41CDCCCCCCACD83B41333333339E032A410000000075D93B416766666666042A41676666E675D93B41CDCCCCCC69042A41333333B3ADD83B419A999999A1032A41CDCCCCCCACD83B41010300000001000000050000009A99999927022A41333333B395D33B41CDCCCCCC25022A41CDCCCCCCF9D33B4100000000EE022A41333333B3FAD33B41CDCCCCCCEF022A419A99999996D33B419A99999927022A41333333B395D33B4101030000000100000005000000CDCCCCCC5B012A419A9999195DD43B41333333335A012A4133333333C1D43B416766666622022A4100000000C2D43B410000000024022A41676666E65DD43B41CDCCCCCC5B012A419A9999195DD43B4101030000000100000005000000CDCCCCCC56012A416766666689D53B410000000055012A4100000080EDD53B41333333331D022A4167666666EED53B41000000001F022A41333333338AD53B41CDCCCCCC56012A416766666689D53B41010300000001000000070000000000000048DA2941333333B3A1D23B413333333310DB29419A999999A2D23B410000000012DB2941000000803ED23B4133333333DADB2941CDCCCC4C3FD23B41CDCCCCCCDBDB294133333333DBD13B41676666664BDA294100000080D9D13B410000000048DA2941333333B3A1D23B410103000000010000000800000057A6F58CF4D82941E77E3F42A0D23B410AD7A3700AD929411F85EB519DD23B41FFD8CDD939D929417640928DA0D23B410000000048DA2941333333B3A1D23B41CDCCCCCC49DA29419A9999993DD23B4167666666B9D82941676666E63BD23B419A999999B7D8294100000000A0D23B4157A6F58CF4D82941E77E3F42A0D23B41010300000001000000050000000000000012DB2941000000803ED23B413333333310DB29419A999999A2D23B4167666666D8DB294167666666A3D23B4133333333DADB2941CDCCCC4C3FD23B410000000012DB2941000000803ED23B41010300000001000000080000004A863DE425D7294160874710E7D23B4190C2F5A838D7294190C2F568E5D23B419A99999980D72941AE47E1BAEED23B419A999919E1D72941C3F5281CD8D23B419094A37DEED7294142734CC3D1D23B4167666666EFD72941333333339FD23B413333333327D72941CDCCCC4C9ED23B414A863DE425D7294160874710E7D23B4101030000000100000007000000EFFDCAE546DA2941B484C7AAE6D23B410AD7A37053DA29411F85EBD1EED23B41E68D68B472DA2941CF93F4FC05D33B41CDCCCCCCD6DB29410000008007D33B4167666666D8DB294167666666A3D23B410000000048DA2941333333B3A1D23B41EFFDCAE546DA2941B484C7AAE6D23B4101030000000100000005000000CDCCCCCC09D429419A999999D2D13B410000000008D42941CDCCCCCC36D23B4133333333D0D429419A99999937D23B4100000000D2D4294100000080D3D13B41CDCCCCCC09D429419A999999D2D13B410103000000010000000500000033333333DADB2941CDCCCC4C3FD23B4167666666A2DC29413333333340D23B4133333333A4DC29419A999919DCD13B41CDCCCCCCDBDB294133333333DBD13B4133333333DADB2941CDCCCC4C3FD23B41010300000001000000050000009A99999977D229410000000035D23B41CDCCCCCC75D229419A99991999D23B416766666606D42941676666E69AD23B410000000008D42941CDCCCCCC36D23B419A99999977D229410000000035D23B41010300000001000000050000000000000038DE29419A99999915D13B413333333336DE2941333333B379D13B4167666666FEDE29419A9999997AD13B413333333300DF29416766666616D13B410000000038DE29419A99999915D13B410103000000010000000500000000000000FBDE2941CDCCCCCC42D23B4167666666F9DE2941676666E6A6D23B419A999999C1DF2941333333B3A7D23B4133333333C3DF29419A99999943D23B4100000000FBDE2941CDCCCCCC42D23B4101030000000100000005000000CDCCCCCCFCDE2941333333B3DED13B4100000000C5DF294100000080DFD13B419A999999C6DF2941676666667BD13B4167666666FEDE29419A9999997AD13B41CDCCCCCCFCDE2941333333B3DED13B410103000000010000000500000067666666C8DF2941CDCCCC4C17D13B419A999999C6DF2941676666667BD13B41CDCCCCCC8EE02941CDCCCC4C7CD13B419A99999990E029413333333318D13B4167666666C8DF2941CDCCCC4C17D13B4101030000000100000009000000CDCCCCCCFCDE2941333333B3DED13B4100000000FBDE2941CDCCCCCC42D23B4133333333C3DF29419A99999943D23B419A999999C1DF2941333333B3A7D23B410000000052E1294167666666A9D23B413333333357E129419A9999197DD13B419A999999C6DF2941676666667BD13B4100000000C5DF294100000080DFD13B41CDCCCCCCFCDE2941333333B3DED13B41010300000001000000050000006766666655E1294133333333E1D13B419A99999953E12941CDCCCC4C45D23B41CDCCCCCC1BE229413333333346D23B419A9999991DE229419A999919E2D13B416766666655E1294133333333E1D13B41010300000001000000050000003333333357E129419A9999197DD13B416766666655E1294133333333E1D13B419A9999991DE229419A999919E2D13B41676666661FE22941000000007ED13B413333333357E129419A9999197DD13B41010300000001000000050000009A99999953E12941CDCCCC4C45D23B410000000052E1294167666666A9D23B4167666666E2E2294133333333ABD23B4133333333E4E229419A99991947D23B419A99999953E12941CDCCCC4C45D23B41010300000001000000050000009A9999991DE229419A999919E2D13B41CDCCCCCC1BE229413333333346D23B4133333333E4E229419A99991947D23B41CDCCCCCCE5E2294100000000E3D13B419A9999991DE229419A999919E2D13B410103000000010000000500000033333333E4E229419A99991947D23B4167666666E2E2294133333333ABD23B419A999999AAE3294100000000ACD23B4167666666ACE32941676666E647D23B4133333333E4E229419A99991947D23B410103000000010000000500000000000000AEE32941CDCCCCCCE3D13B4167666666ACE32941676666E647D23B419A99999974E42941CDCCCCCC48D23B413333333376E42941333333B3E4D13B4100000000AEE32941CDCCCCCCE3D13B41010300000001000000050000009A99999974E42941CDCCCCCC48D23B41CDCCCCCC72E42941676666E6ACD23B41000000003BE52941333333B3ADD23B41CDCCCCCC3CE529419A99999949D23B419A99999974E42941CDCCCCCC48D23B41010300000001000000050000003333333376E42941333333B3E4D13B419A99999974E42941CDCCCCCC48D23B41CDCCCCCC3CE529419A99999949D23B41676666663EE5294100000080E5D13B413333333376E42941333333B3E4D13B4101030000000100000005000000CDCCCCCC3CE529419A99999949D23B41000000003BE52941333333B3ADD23B413333333303E629419A999999AED23B410000000005E62941000000804AD23B41CDCCCCCC3CE529419A99999949D23B4101030000000100000005000000333333330AE62941333333331ED13B416766666608E62941CDCCCC4C82D13B419A999999D0E629419A99991983D13B4167666666D2E62941000000001FD13B41333333330AE62941333333331ED13B410103000000010000000500000067666666CBE6294100000080AFD23B419A99999993E72941CDCCCC4CB0D23B416766666695E72941333333334CD23B4133333333CDE62941CDCCCC4C4BD23B4167666666CBE6294100000080AFD23B410103000000010000000500000067666666D2E62941000000001FD13B41CDCCCCCCCEE6294133333333E7D13B413333333397E729419A999919E8D13B419A9999999AE72941676666E61FD13B4167666666D2E62941000000001FD13B41010300000001000000050000006766666695E72941333333334CD23B419A99999993E72941CDCCCC4CB0D23B41CDCCCCCC5BE8294133333333B1D23B419A9999995DE829419A9999194DD23B416766666695E72941333333334CD23B41010300000001000000050000003333333300DF29416766666616D13B4167666666FEDE29419A9999997AD13B419A999999C6DF2941676666667BD13B4167666666C8DF2941CDCCCC4C17D13B413333333300DF29416766666616D13B4101030000000100000005000000CDCCCCCCBFC629410000000060D13B4133333333BEC629419A999919C4D13B416766666686C72941676666E6C4D13B410000000088C72941CDCCCCCC60D13B41CDCCCCCCBFC629410000000060D13B410103000000010000000F00000067666666BCC629413333333328D23B419A999999BAC62941CDCCCC4C8CD23B4167666666F2C52941676666668BD23B41CDCCCCCCF0C5294100000080EFD23B413333333398C32941676666E6ECD23B410000000093C32941CDCCCC4C19D43B41333333335BC429419A9999191AD43B416766666659C42941333333337ED43B41CDCCCCCCE9C52941676666E67FD43B419A999999EBC52941CDCCCCCC1BD43B41000000007CC729419A9999991DD43B413333333381C7294133333333F1D23B416766666649C829419A999919F2D23B41CDCCCCCC4CC82941676666E629D23B4167666666BCC629413333333328D23B41010300000001000000080000008FACC04B7BC72941166E53A649D43B410AD7A3F081C72941713D0A9747D43B4100000000E8C729417B14AE074BD43B41295C8F423AC82941EC51B85E41D43B415D3D57AA43C8294176AAA7D83FD43B413333333344C82941676666661ED43B41000000007CC729419A9999991DD43B418FACC04B7BC72941166E53A649D43B410103000000010000000B000000A47CE0D12DC62941D26BBB2AA1D73B4190C2F5A820C629411F85EB11ADD73B419A99991914C62941CDCCCC0CCDD73B4148E17A941BC62941EC51B81EEBD73B41676666E6A6C6294152B81EC51CD83B41B81E856B2CC729413E0AD76342D83B4169089E8569C729414878F78E56D83B41CDCCCCCC6AC729419A99999906D83B419A999999A2C62941CDCCCCCC05D83B4167666666A4C62941333333B3A1D73B41A47CE0D12DC62941D26BBB2AA1D73B41010300000001000000040000004CBAA863A7C72941303FC5FA6AD83B416F80C59830C82941F971D44498D83B416766666631C829419A9999996BD83B414CBAA863A7C72941303FC5FA6AD83B4101030000000100000005000000802C2FFBB8C8294111164E51D0D83B41CDCCCCCCCBC82941EC51B85EF7D83B41D6C46925F7C829415887DADEF7D83B41CDCCCCCCF7C829419A999999D0D83B41802C2FFBB8C8294111164E51D0D83B41010300000001000000040000009DA6E911B2C62941109EF10788D43B4184F15710C9C62941A1E21CE780D43B4133333333B2C62941CDCCCCCC80D43B419DA6E911B2C62941109EF10788D43B410103000000010000000800000090AEF26A3EC82941FD06003976D53B41AE47E17A1EC829413E0AD7A391D53B415C8FC2F5E1C7294190C2F568ABD53B419A999919B7C729417B14AE47DAD53B4115AE476186C72941C3F5281C01D63B41A6EE472379C72941790F342012D63B419A9999993BC829410000000013D63B4190AEF26A3EC82941FD06003976D53B41010300000001000000080000004E9B2C4673C729415D3014A919D63B41CDCCCC4C2CC72941C3F528DC74D63B41B81E856B0FC72941A4703DCAA6D63B411F85EBD1FAC62941D7A370BDC8D63B415C8FC2F597C62941EC51B85EF3D63B41CB2F566B6AC629413FF2F64B3DD73B41676666666EC72941676666663ED73B414E9B2C4673C729415D3014A919D63B4101030000000100000006000000A6EE472379C72941790F342012D63B41A9847D4773C729419F4463A719D63B41CDCCCCCC71C729413333333376D63B41000000003AC829419A99991977D63B419A9999993BC829410000000013D63B41A6EE472379C72941790F342012D63B410103000000010000000F000000CB2F566B6AC629413FF2F64B3DD73B419A99999968C629410000004040D73B41AE47E1FA67C62941A4703D4A64D73B41A4703D8A55C62941D7A3703D7DD73B41A47CE0D12DC62941D26BBB2AA1D73B4167666666A4C62941333333B3A1D73B419A999999A2C62941CDCCCCCC05D83B41CDCCCCCC6AC729419A99999906D83B4169089E8569C729414878F78E56D83B414CBAA863A7C72941303FC5FA6AD83B416766666631C829419A9999996BD83B41000000003AC829419A99991977D63B41CDCCCCCC71C729413333333376D63B41676666666EC72941676666663ED73B41CB2F566B6AC629413FF2F64B3DD73B410103000000010000000C000000B56494BE58C4294141BD7536A7D43B4115AE4761A7C4294148E17A94ABD43B411F85EB5165C5294190C2F568BBD43B41F6285C8F85C529417B14AE87AFD43B41AE47E1FA4FC629413E0AD763A5D43B41CDCCCC4C86C629419A99999995D43B41244A09FAB1C62941007D580F88D43B41CDCCCCCCB3C62941333333B31CD43B419A999999EBC52941CDCCCCCC1BD43B41CDCCCCCCE9C52941676666E67FD43B416766666659C42941333333337ED43B41B56494BE58C4294141BD7536A7D43B41010300000001000000070000009A9999992DC52941CDCCCC4CC2D13B41000000002CC529416766666626D23B4133333333F4C52941CDCCCC4C27D23B4167666666F2C52941676666668BD23B419A999999BAC62941CDCCCC4C8CD23B4133333333BEC629419A999919C4D13B419A9999992DC52941CDCCCC4CC2D13B4101030000000100000005000000333333332AC529419A9999998AD23B419A99999928C52941333333B3EED23B41CDCCCCCCF0C5294100000080EFD23B4167666666F2C52941676666668BD23B41333333332AC529419A9999998AD23B41010300000001000000050000009A999999F7C529419A9999195FD13B4100000000F6C5294133333333C3D13B4133333333BEC629419A999919C4D13B41CDCCCCCCBFC629410000000060D13B419A999999F7C529419A9999195FD13B410103000000010000000600000084F15710C9C62941A1E21CE780D43B418FACC04B7BC72941166E53A649D43B41000000007CC729419A9999991DD43B41CDCCCCCCB3C62941333333B31CD43B4133333333B2C62941CDCCCCCC80D43B4184F15710C9C62941A1E21CE780D43B410103000000010000000500000033333333BEC629419A999919C4D13B4167666666BCC629413333333328D23B419A99999984C729410000000029D23B416766666686C72941676666E6C4D13B4133333333BEC629419A999919C4D13B41010300000001000000050000000000000009C9294100000080E7D43B41CDCCCCCC03C92941CDCCCCCC13D63B4100000000CCC92941333333B314D63B4133333333D1C92941CDCCCC4CE8D43B410000000009C9294100000080E7D43B4101030000000100000005000000000000003AC829419A99991977D63B413333333338C8294133333333DBD63B416766666600C9294100000000DCD63B413333333302C92941676666E677D63B41000000003AC829419A99991977D63B4101030000000100000005000000000000002CC529416766666626D23B41333333332AC529419A9999998AD23B4167666666F2C52941676666668BD23B4133333333F4C52941CDCCCC4C27D23B41000000002CC529416766666626D23B41010300000001000000050000009A99999907C2294133333333EBD23B410000000006C22941CDCCCC4C4FD33B4133333333CEC229413333333350D33B41CDCCCCCCCFC229419A999919ECD23B419A99999907C2294133333333EBD23B41010300000001000000050000000000000006C22941CDCCCC4C4FD33B413333333304C2294167666666B3D33B4167666666CCC22941CDCCCC4CB4D33B4133333333CEC229413333333350D33B410000000006C22941CDCCCC4C4FD33B41010300000001000000060000008459F83600C22941B59FEE50A0D43B41713D0A5781C22941E17A142E88D43B4113E070BBC8C229415A3D3A418DD43B4100000000C9C22941000000807CD43B41CDCCCCCC00C22941333333B37BD43B418459F83600C22941B59FEE50A0D43B410103000000010000000700000067666666CCC22941CDCCCC4CB4D33B4100000000C9C22941000000807CD43B416766666659C42941333333337ED43B41333333335BC429419A9999191AD43B410000000093C32941CDCCCC4C19D43B419A99999994C3294133333333B5D33B4167666666CCC22941CDCCCC4CB4D33B410103000000020000001A000000A13AB048D0B52941616D149715D23B415C8FC275CFB52941C3F5289C45D23B4115AE4761EAB52941CDCCCCCC86D23B41B81E85EB1BB62941CDCCCC0CA5D23B41676666667DB62941295C8F82C9D23B41F6285C8F6CB72941C3F5289C0AD33B4115AE476192B729417B14AEC717D33B41713D0A57B4B72941E17A14EE1CD33B4152B81E85F6B729415C8FC23517D33B4148E17A1402B9294152B81E45CED23B4185EB51B866B92941B81E85ABAFD23B417B14AE47B9B92941EC51B81E09D33B410AD7A370E7B92941F6285C4F02D33B41AE47E1FA4DBA294185EB51B8E9D23B417B14AEC7FABA2941B81E856BC7D23B41562CE01DFEBA29410767AFF6CAD23B4167666666FFBA2941676666667FD23B413333333337BA2941000000807ED23B410000000039BA2941676666661AD23B41CDCCCCCC70B929419A99999919D23B416766666672B9294100000080B5D13B41CDCCCCCC19B72941676666E6B2D13B416766666616B729419A9999197BD23B41333333334EB62941CDCCCC4C7AD23B410000000050B629419A99991916D23B41A13AB048D0B52941616D149715D23B41050000006766666616B729419A9999197BD23B41CDCCCCCCA6B82941CDCCCCCC7CD23B4133333333A5B82941676666E6E0D23B419A99999914B7294133333333DFD23B416766666616B729419A9999197BD23B410103000000010000000600000091066719BBA429413D124827D5D93B41D7A3703D02A529419A999959A2D93B4171465D753BA52941E27218A071D93B416766666632A429410000008070D93B419A99999930A429419A999999D4D93B4191066719BBA429413D124827D5D93B4101030000000100000010000000B044C838C4A52941586FBD2123D93B4185EB51B864A62941AE47E1BA28D93B414632857E8CA62941E369B1E720D93B41CDCCCCCC8CA62941676666E60ED93B410000000055A72941CDCCCCCC0FD93B41861AC49B54A729413AE0CFDA26D93B41AE47E1FA6CA72941EC51B8DE2AD93B419A99991905A829413E0AD763B9D83B41333333333AA82941CDCCCC8C7DD83B4194ADAD9392A829413D3C15EF48D83B416766666658A729419A99999947D83B419A99999956A72941333333B3ABD83B4100000000FEA429419A999919A9D83B4167666666FCA42941333333330DD93B419A999999C4A529419A9999190ED93B41B044C838C4A52941586FBD2123D93B410103000000010000000500000037A2DF4EB3B429410B3E6C2A4CD13B41F6285C8F16B529419A99999983D13B41EE3218E488B5294154D3A181CDD13B41333333338BB529419A9999194DD13B4137A2DF4EB3B429410B3E6C2A4CD13B41010300000001000000040000004C01D3677BBB29415F7E392C48D33B410E14BB70C3BB29418A1C7B0678D33B4133333333C4BB29410000008048D33B414C01D3677BBB29415F7E392C48D33B410103000000010000000700000083F6941334BC29416210AF0DADD33B4190C2F5A8A0BC2941A4703D8AD4D33B41167FD1F250BD2941F5E2573521D43B419A99999954BD2941333333334AD33B41676666668CBC2941CDCCCC4C49D33B41CDCCCCCC8ABC294167666666ADD33B4183F6941334BC29416210AF0DADD33B41010300000001000000050000009A9999993ABA2941CDCCCC4CB6D13B410000000039BA2941676666661AD23B413333333301BB2941CDCCCC4C1BD23B410000000003BB294133333333B7D13B419A9999993ABA2941CDCCCC4CB6D13B4101030000000100000005000000333333338EBC294133333333E5D23B41676666668CBC2941CDCCCC4C49D33B419A99999954BD2941333333334AD33B416766666656BD29419A999919E6D23B41333333338EBC294133333333E5D23B4101030000000100000009000000CDCCCCCCB0A62941333333B3D8D03B4100000000AFA62941CDCCCCCC3CD13B41333333338EA32941CDCCCC4C39D13B41CDCCCCCC8AA329419A99999901D23B4167666666E3A529419A99991904D23B4133333333E5A5294100000000A0D13B419A99999975A72941333333B3A1D13B410000000079A7294100000080D9D03B41CDCCCCCCB0A62941333333B3D8D03B41010300000001000000050000009A9999999FA62941333333B3C1D43B41000000009EA62941CDCCCCCC25D53B413333333366A72941333333B326D53B41CDCCCCCC67A729419A999999C2D43B419A9999999FA62941333333B3C1D43B4101030000000100000005000000676666669AA629419A999919EED53B41CDCCCCCC98A629413333333352D63B410000000061A729410000000053D63B419A99999962A72941676666E6EED53B41676666669AA629419A999919EED53B41010300000001000000060000000D36E6798CA62941B4259AE820D93B41D7A3703DD7A629413333333312D93B410E28E39554A72941B7EED7D926D93B410000000055A72941CDCCCCCC0FD93B41CDCCCCCC8CA62941676666E60ED93B410D36E6798CA62941B4259AE820D93B4101030000000100000009000000562CE01DFEBA29410767AFF6CAD23B41676666E62DBB29415C8FC2B5FDD23B41C3F5285C57BB2941B81E85EB20D33B417B14AEC776BB29419A99991945D33B414C01D3677BBB29415F7E392C48D33B4133333333C4BB29410000008048D33B419A999999C7BB2941CDCCCC4C80D23B4167666666FFBA2941676666667FD23B41562CE01DFEBA29410767AFF6CAD23B41010300000001000000050000006766666656BD29419A999919E6D23B419A99999954BD2941333333334AD33B41000000001DBE2941000000004BD33B419A9999991EBE2941676666E6E6D23B416766666656BD29419A999919E6D23B41010300000001000000050000003333333374B929416766666651D13B416766666672B9294100000080B5D13B419A9999993ABA2941CDCCCC4CB6D13B41676666663CBA29413333333352D13B413333333374B929416766666651D13B41010300000001000000050000009A999999DEB72941000000007CD23B4100000000DDB729419A999919E0D23B4133333333A5B82941676666E6E0D23B41CDCCCCCCA6B82941CDCCCCCC7CD23B419A999999DEB72941000000007CD23B4101030000000100000008000000EE3218E488B5294154D3A181CDD13B41EC51B81EA9B52941713D0A57E2D13B41B81E85EBD0B5294152B81E85F0D13B41A13AB048D0B52941616D149715D23B410000000050B629419A99991916D23B416766666653B62941676666E64DD13B41333333338BB529419A9999194DD13B41EE3218E488B5294154D3A181CDD13B41010300000001000000050000000000000039BA2941676666661AD23B413333333337BA2941000000807ED23B4167666666FFBA2941676666667FD23B413333333301BB2941CDCCCC4C1BD23B410000000039BA2941676666661AD23B41010300000001000000050000009A999999CEBB2941CDCCCCCCEFD03B41CDCCCCCCCCBB2941676666E653D13B410000000095BC2941CDCCCCCC54D13B41CDCCCCCC96BC2941333333B3F0D03B419A999999CEBB2941CDCCCCCCEFD03B410103000000010000000500000000000000ACB829410000008050D13B4133333333AAB829419A999999B4D13B416766666672B9294100000080B5D13B413333333374B929416766666651D13B4100000000ACB829410000008050D13B41010300000001000000050000003333333358BD29410000000082D23B416766666656BD29419A999919E6D23B419A9999991EBE2941676666E6E6D23B416766666620BE2941CDCCCCCC82D23B413333333358BD29410000000082D23B41010300000001000000050000006766666672B9294100000080B5D13B41CDCCCCCC70B929419A99999919D23B410000000039BA2941676666661AD23B419A9999993ABA2941CDCCCC4CB6D13B416766666672B9294100000080B5D13B410103000000010000000500000033333333CBBB294100000000B8D13B4167666666C9BB2941333333331CD23B419A99999991BC2941000000001DD23B416766666693BC2941676666E6B8D13B4133333333CBBB294100000000B8D13B4101030000000100000005000000676666663CBA29413333333352D13B419A9999993ABA2941CDCCCC4CB6D13B410000000003BB294133333333B7D13B419A99999904BB29419A99991953D13B41676666663CBA29413333333352D13B41010300000001000000050000006766666653B62941676666E64DD13B419A99999951B6294100000000B2D13B41CDCCCCCC19B72941676666E6B2D13B419A9999991BB72941CDCCCCCC4ED13B416766666653B62941676666E64DD13B41010300000001000000050000000000000090BC29419A99991981D23B41333333338EBC294133333333E5D23B416766666656BD29419A999919E6D23B413333333358BD29410000000082D23B410000000090BC29419A99991981D23B41010300000001000000070000000E14BB70C3BB29418A1C7B0678D33B4148E17A94EBBB29410AD7A3B092D33B4183F6941334BC29416210AF0DADD33B41CDCCCCCC8ABC294167666666ADD33B41676666668CBC2941CDCCCC4C49D33B4133333333C4BB29410000008048D33B410E14BB70C3BB29418A1C7B0678D33B410103000000010000000700000009F5662588BD29413D60BFDCDAD43B4148E17A1469BD29417B14AEC728D53B41B81E85EBFEBD2941333333733CD53B41A52BB10510BE294191D58F943FD53B416766666614BE29419A9999993FD53B410000000016BE294100000080DBD43B4109F5662588BD29413D60BFDCDAD43B41010300000001000000050000009A999999C9A52941333333B3E1D73B4100000000C8A52941CDCCCCCC45D83B416766666658A729419A99999947D83B41333333335AA7294100000080E3D73B419A999999C9A52941333333B3E1D73B4101030000000100000005000000CDCCCCCCDAA52941333333B3F8D33B4133333333D9A52941CDCCCCCC5CD43B4167666666A1A629419A9999995DD43B4100000000A3A6294100000080F9D33B41CDCCCCCCDAA52941333333B3F8D33B410103000000010000000700000067666666E5B7294100000080EBD03B4100000000E2B72941CDCCCCCCB3D13B4133333333AAB829419A999999B4D13B4100000000ACB829410000008050D13B413333333374B929416766666651D13B410000000076B92941CDCCCC4CEDD03B4167666666E5B7294100000080EBD03B41010300000001000000050000009A999999C4B429419A999919E8D03B4100000000C3B42941333333334CD13B41333333338BB529419A9999194DD13B41CDCCCCCC8CB5294100000000E9D03B419A999999C4B429419A999919E8D03B41010300000001000000050000000000000016A529419A9999992FD33B416766666614A52941333333B393D33B419A999999DCA529419A99999994D33B4133333333DEA529410000008030D33B410000000016A529419A9999992FD33B4101030000000100000009000000B7FF787F3BA529417ADC7C9771D93B410AD7A3704FA52941C3F5289C60D93B410AD7A3705EA52941C3F5289C27D93B41EC51B89EA0A529413E0AD7E321D93B41B044C838C4A52941586FBD2123D93B419A999999C4A529419A9999190ED93B4167666666FCA42941333333330DD93B419A999999FAA42941CDCCCC4C71D93B41B7FF787F3BA529417ADC7C9771D93B410103000000010000000600000092F27C42B4A82941D19BA9F4E4D73B41AE47E1FA87A8294115AE47A1A5D73B41120E470090A829415E327EAF80D73B410000000024A829413333333380D73B416766666622A82941CDCCCC4CE4D73B4192F27C42B4A82941D19BA9F4E4D73B410103000000010000000B0000005559FCD60FBE2941124F038C3FD53B4152B81E85C8BE29419A99995961D53B411F85EBD126BF2941D7A370BD55D53B415C8FC275EFBF29411F85EB913ED53B41E17A14AE09C02941B81E85AB33D53B410AD7A37062C02941295C8F020DD53B4152B81E05CBC02941E17A146EF2D43B415C19B5701AC12941E1FA5DCFDED43B4167666666A6BF294133333333DDD43B41CDCCCCCCA4BF2941CDCCCC4C41D53B415559FCD60FBE2941124F038C3FD53B4101030000000100000007000000120E470090A829415E327EAF80D73B41E17A142E97A82941EC51B89E5FD73B4133333333CEA82941A4703DCA28D73B414F6D11BECCA82941A9BFB9D91CD73B41CDCCCCCC25A829419A9999191CD73B410000000024A829413333333380D73B41120E470090A829415E327EAF80D73B410103000000010000000700000013E070BBC8C229415A3D3A418DD43B41713D0A57F9C229415C8FC2B590D43B411F85EB51A9C3294185EB51789DD43B41B56494BE58C4294141BD7536A7D43B416766666659C42941333333337ED43B4100000000C9C22941000000807CD43B4113E070BBC8C229415A3D3A418DD43B4101030000000100000007000000F27B9CED36C1294183A1BAC5D7D43B4190C2F5289EC1294152B81E45BED43B41333333B3EEC12941713D0A97A3D43B418459F83600C22941B59FEE50A0D43B41CDCCCCCC00C22941333333B37BD43B419A99999938C12941CDCCCCCC7AD43B41F27B9CED36C1294183A1BAC5D7D43B4101030000000100000005000000CDCCCCCC3DC12941000000804ED33B41000000003CC129419A999999B2D33B413333333304C2294167666666B3D33B410000000006C22941CDCCCC4C4FD33B41CDCCCCCC3DC12941000000804ED33B410103000000010000000B000000CDCCCCCC0BA529413333333388D53B41000000000AA52941CDCCCC4CECD53B41676666669AA629419A999919EED53B41333333339CA62941000000008AD53B416766666664A72941CDCCCCCC8AD53B413333333366A72941333333B326D53B41000000009EA62941CDCCCCCC25D53B419A9999999FA62941333333B3C1D43B4167666666D7A52941676666E6C0D43B4100000000D4A529419A99991989D53B41CDCCCCCC0BA529413333333388D53B4101030000000100000005000000CDCCCCCCDAA52941333333B3F8D33B4100000000A3A6294100000080F9D33B4167666666A6A62941CDCCCC4C31D33B4133333333DEA529410000008030D33B41CDCCCCCCDAA52941333333B3F8D33B41010300000001000000050000009A9999999FA62941333333B3C1D43B41CDCCCCCC67A729419A999999C2D43B419A99999969A72941000000805ED43B4167666666A1A629419A9999995DD43B419A9999999FA62941333333B3C1D43B41010300000001000000050000009A99999912A52941CDCCCCCCF7D33B410000000011A52941676666E65BD43B4133333333D9A52941CDCCCCCC5CD43B41CDCCCCCCDAA52941333333B3F8D33B419A99999912A52941CDCCCCCCF7D33B41010300000001000000050000009A999999ABA629410000000005D23B4100000000AAA629419A99991969D23B413333333372A72941000000006AD23B41CDCCCCCC73A72941676666E605D23B419A999999ABA629410000000005D23B41010300000001000000050000000000000003BB294133333333B7D13B4167666666FFBA2941676666667FD23B419A999999C7BB2941CDCCCC4C80D23B4133333333CBBB294100000000B8D13B410000000003BB294133333333B7D13B41010300000001000000050000000000000076B92941CDCCCC4CEDD03B413333333374B929416766666651D13B419A99999904BB29419A99991953D13B416766666606BB294100000000EFD03B410000000076B92941CDCCCC4CEDD03B41010300000001000000050000003333333304C2294167666666B3D33B419A99999902C229419A99999917D43B41CDCCCCCCCAC229416766666618D43B4167666666CCC22941CDCCCC4CB4D33B413333333304C2294167666666B3D33B41010300000001000000050000006766666616B729419A9999197BD23B419A99999914B7294133333333DFD23B4100000000DDB729419A999919E0D23B419A999999DEB72941000000007CD23B416766666616B729419A9999197BD23B41010300000001000000050000009A99999951B6294100000000B2D13B41333333334EB62941CDCCCC4C7AD23B416766666616B729419A9999197BD23B41CDCCCCCC19B72941676666E6B2D13B419A99999951B6294100000000B2D13B4101030000000100000005000000CDCCCCCC19B72941676666E6B2D13B4100000000E2B72941CDCCCCCCB3D13B41CDCCCCCCE3B72941333333B34FD13B419A9999991BB72941CDCCCCCC4ED13B41CDCCCCCC19B72941676666E6B2D13B41010300000001000000070000003333333382A329419A999919F6D33B416766666680A32941333333335AD43B419A99999948A429419A9999195BD43B410000000047A4294133333333BFD43B41333333330FA5294100000000C0D43B419A99999912A52941CDCCCCCCF7D33B413333333382A329419A999919F6D33B410103000000010000000500000067666666ADA62941676666E6A0D13B419A999999ABA629410000000005D23B41CDCCCCCC73A72941676666E605D23B419A99999975A72941333333B3A1D13B4167666666ADA62941676666E6A0D13B4101030000000100000009000000855BDE9C92A82941148B9CE948D83B4115AE4761A3A82941E17A14EE3ED83B41EC51B89EA5A82941B81E85EB30D83B41CDCCCC4C94A82941CDCCCCCC08D83B41B81E85EBB4A82941676666E6E5D73B4192F27C42B4A82941D19BA9F4E4D73B416766666622A82941CDCCCC4CE4D73B419A99999920A829416766666648D83B41855BDE9C92A82941148B9CE948D83B4101030000000100000004000000195D796E9CF12941FA34DBD8D0D73B41340A5B1FA8F129411EC0F735D5D73B4133333333A8F12941676666E6D0D73B41195D796E9CF12941FA34DBD8D0D73B410103000000010000000500000000000000ECF02941CDCCCC4C13D53B4167666666E8F0294100000080DBD53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4133333333B4F129419A99991914D53B4100000000ECF02941CDCCCC4C13D53B4101030000000100000006000000BD2783378CEE2941FF99028FACD63B415C8FC27506EF2941676666A6D6D63B411AFE884C53EF294160005F65F3D63B419A99999954EF294100000000A2D63B41676666668CEE29419A999919A1D63B41BD2783378CEE2941FF99028FACD63B4101030000000100000005000000CDCCCCCC96EE29410000008048D43B410000000095EE29419A999999ACD43B41333333335DEF294167666666ADD43B41000000005FEF2941CDCCCC4C49D43B41CDCCCCCC96EE29410000008048D43B41010300000001000000050000009A9999995BEF29410000008011D53B41CDCCCCCC59EF29419A99999975D53B410000000022F029410000008076D53B41CDCCCCCC23F029416766666612D53B419A9999995BEF29410000008011D53B4101030000000100000007000000632DB122E1F02941975893F588D73B41D7A3703D63F1294100000080BBD73B41195D796E9CF12941FA34DBD8D0D73B4133333333A8F12941676666E6D0D73B41CDCCCCCCA9F12941CDCCCCCC6CD73B419A999999E1F02941676666E66BD73B41632DB122E1F02941975893F588D73B41010300000001000000050000000000000058EF2941CDCCCCCCD9D53B416766666656EF2941676666E63DD63B419A9999991EF02941333333B33ED63B413333333320F029419A999999DAD53B410000000058EF2941CDCCCCCCD9D53B41010300000001000000060000001AFE884C53EF294160005F65F3D63B412B5DA5D685EF2941A6489B4D06D73B41333333331BF02941676666E606D73B41CDCCCCCC1CF02941CDCCCCCCA2D63B419A99999954EF294100000000A2D63B411AFE884C53EF294160005F65F3D63B41010300000001000000050000009A999999EDF029419A999919AFD43B4100000000ECF02941CDCCCC4C13D53B4133333333B4F129419A99991914D53B41CDCCCCCCB5F1294100000000B0D43B419A999999EDF029419A999919AFD43B41010300000001000000060000002B5DA5D685EF2941A6489B4D06D73B419A999999ABEF2941E17A146E14D73B4185EB5138FDEF2941F6285CCF2FD73B412DBAF5481AF02941EB8702C73CD73B41333333331BF02941676666E606D73B412B5DA5D685EF2941A6489B4D06D73B410103000000010000000500000000000000E5F02941333333B3A3D63B419A999999E1F02941676666E66BD73B41CDCCCCCCA9F12941CDCCCCCC6CD73B4133333333ADF1294100000080A4D63B4100000000E5F02941333333B3A3D63B410103000000010000000500000067666666E8F0294100000080DBD53B41CDCCCCCCE6F029419A9999993FD63B4100000000AFF129416766666640D63B41CDCCCCCCB0F12941CDCCCC4CDCD53B4167666666E8F0294100000080DBD53B4101030000000100000005000000CDCCCCCC8FEE2941676666E6D8D53B41333333338EEE2941000000003DD63B416766666656EF2941676666E63DD63B410000000058EF2941CDCCCCCCD9D53B41CDCCCCCC8FEE2941676666E6D8D53B4101030000000100000007000000FE8E2EBA20EE2941836E03823CD63B4190C2F5A828EE2941A4703D8A47D63B411F85EBD169EE2941EC51B8DE7CD63B412EC1654977EE294118680004A1D63B41676666668CEE29419A999919A1D63B41333333338EEE2941000000003DD63B41FE8E2EBA20EE2941836E03823CD63B4101030000000100000005000000CDCCCCCCE8E929419A9999197BD33B4133333333E7E9294133333333DFD33B4167666666AFEA29419A999919E0D33B4100000000B1EA2941000000007CD33B41CDCCCCCCE8E929419A9999197BD33B41010300000001000000050000000000000055E829419A99999941D43B413333333353E82941333333B3A5D43B419A9999991BE929419A999999A6D43B41333333331DE929410000008042D43B410000000055E829419A99999941D43B4101030000000100000005000000676666663CEC294100000000AAD43B419A9999993AEC29419A9999190ED53B41CDCCCCCC02ED2941000000000FD53B419A99999904ED2941676666E6AAD43B41676666663CEC294100000000AAD43B4101030000000100000005000000CDCCCCCC59EF29419A99999975D53B410000000058EF2941CDCCCCCCD9D53B413333333320F029419A999999DAD53B410000000022F029410000008076D53B41CDCCCCCC59EF29419A99999975D53B4101030000000100000005000000333333338EEE2941000000003DD63B41676666668CEE29419A999919A1D63B419A99999954EF294100000000A2D63B416766666656EF2941676666E63DD63B41333333338EEE2941000000003DD63B41010300000001000000050000003333333353E82941333333B3A5D43B419A99999951E82941CDCCCCCC09D53B41CDCCCCCC19E92941333333B30AD53B419A9999991BE929419A999999A6D43B413333333353E82941333333B3A5D43B41010300000001000000050000002EC1654977EE294118680004A1D63B413E0AD72379EE2941D7A370FDA5D63B41BD2783378CEE2941FF99028FACD63B41676666668CEE29419A999919A1D63B412EC1654977EE294118680004A1D63B4101030000000100000006000000804CAF3638EC2941526A90EE9DD53B411F85EB51ABEC2941333333B392D53B41A956ED7F00ED2941053B2A0B9AD53B413333333301ED29419A99991973D53B410000000039EC29413333333372D53B41804CAF3638EC2941526A90EE9DD53B41010300000001000000050000006766666656EF2941676666E63DD63B419A99999954EF294100000000A2D63B41CDCCCCCC1CF02941CDCCCCCCA2D63B419A9999991EF02941333333B33ED63B416766666656EF2941676666E63DD63B4101030000000100000005000000000000001FE9294167666666DED33B41333333331DE929410000008042D43B4167666666E5E92941CDCCCC4C43D43B4133333333E7E9294133333333DFD33B41000000001FE9294167666666DED33B41010300000001000000050000000000000024E9294100000000B2D23B416766666622E929419A99991916D33B419A999999EAE929410000000017D33B4167666666ECE92941676666E6B2D23B410000000024E9294100000000B2D23B41010300000001000000100000001445DF8900ED29412EB9050C9AD53B417B14AE4719ED2941E17A142E9CD53B41C3F528DC64ED29417B14AE87B9D53B4190C2F528B6ED29410AD7A3F0E7D53B4185EB51B8F9ED2941295C8F4206D63B417EEA3ABF20EE294163BA08893CD63B41333333338EEE2941000000003DD63B41CDCCCCCC8FEE2941676666E6D8D53B410000000058EF2941CDCCCCCCD9D53B41CDCCCCCC59EF29419A99999975D53B419A99999991EE2941CDCCCCCC74D53B410000000095EE29419A999999ACD43B41CDCCCCCCCCED2941333333B3ABD43B4167666666C9ED2941676666E673D53B413333333301ED29419A99991973D53B411445DF8900ED29412EB9050C9AD53B4101030000000100000005000000333333335AE82941CDCCCC4C15D33B416766666658E829416766666679D33B419A99999920E92941333333337AD33B416766666622E929419A99991916D33B41333333335AE82941CDCCCC4C15D33B41010300000001000000050000006766666622E929419A99991916D33B419A99999920E92941333333337AD33B41CDCCCCCCE8E929419A9999197BD33B419A999999EAE929410000000017D33B416766666622E929419A99991916D33B410103000000010000000500000000000000EEE92941CDCCCCCC4ED23B4167666666ECE92941676666E6B2D23B419A999999B4EA2941333333B3B3D23B4133333333B6EA29419A9999994FD23B4100000000EEE92941CDCCCCCC4ED23B41010300000001000000050000009A9999995DE829419A9999194DD23B41333333335AE82941CDCCCC4C15D33B416766666622E929419A99991916D33B41CDCCCCCC25E92941676666E64DD23B419A9999995DE829419A9999194DD23B4101030000000100000005000000000000003EEC2941676666E645D43B41676666663CEC294100000000AAD43B419A99999904ED2941676666E6AAD43B413333333306ED2941CDCCCCCC46D43B41000000003EEC2941676666E645D43B410103000000010000000500000067666666F1E929419A99999986D13B41CDCCCCCCEFE92941333333B3EAD13B4100000000B8EA294100000080EBD13B419A999999B9EA29416766666687D13B4167666666F1E929419A99999986D13B410103000000010000000500000033333333AAEA2941676666660CD53B416766666672EB2941333333330DD53B413333333374EB29419A999919A9D43B4100000000ACEA2941CDCCCC4CA8D43B4133333333AAEA2941676666660CD53B410103000000010000000500000033333333F3E929410000008022D13B4167666666F1E929419A99999986D13B419A999999B9EA29416766666687D13B4167666666BBEA2941CDCCCC4C23D13B4133333333F3E929410000008022D13B410103000000010000000500000067666666ECE92941676666E6B2D23B419A999999EAE929410000000017D33B41CDCCCCCCB2EA2941676666E617D33B419A999999B4EA2941333333B3B3D23B4167666666ECE92941676666E6B2D23B41010300000001000000050000009A999999EAE929410000000017D33B41CDCCCCCCE8E929419A9999197BD33B4100000000B1EA2941000000007CD33B41CDCCCCCCB2EA2941676666E617D33B419A999999EAE929410000000017D33B410103000000010000000500000033333333E7E9294133333333DFD33B4167666666E5E92941CDCCCC4C43D43B419A999999ADEA29413333333344D43B4167666666AFEA29419A999919E0D33B4133333333E7E9294133333333DFD33B410103000000010000000500000067666666E5E92941CDCCCC4C43D43B41CDCCCCCCE3E9294167666666A7D43B4100000000ACEA2941CDCCCC4CA8D43B419A999999ADEA29413333333344D43B4167666666E5E92941CDCCCC4C43D43B410103000000010000000500000000000000E2E92941000000800BD53B4133333333E0E929419A9999996FD53B419A999999A8EA29410000008070D53B4133333333AAEA2941676666660CD53B4100000000E2E92941000000800BD53B41010300000001000000060000007CD264D096EA29419CDB3387D4D53B41C758A3EAA6EA2941AC86451ECED53B419A999999A8EA29410000008070D53B4133333333E0E929419A9999996FD53B419A999999DEE92941333333B3D3D53B417CD264D096EA29419CDB3387D4D53B4101030000000100000005000000000000002BE929419A99999921D13B413333333329E92941333333B385D13B4167666666F1E929419A99999986D13B4133333333F3E929410000008022D13B41000000002BE929419A99999921D13B4101030000000100000005000000CDCCCCCCE3E9294167666666A7D43B4100000000E2E92941000000800BD53B4133333333AAEA2941676666660CD53B4100000000ACEA2941CDCCCC4CA8D43B41CDCCCCCCE3E9294167666666A7D43B41010300000001000000050000004C00C769C9A3294112F9D822D4D93B415C8FC2750CA4294167666666F9D93B41EC3D9D1030A4294154C1C513F6D93B419A99999930A429419A999999D4D93B414C00C769C9A3294112F9D822D4D93B4101030000000100000006000000EC3D9D1030A4294154C1C513F6D93B4185EB51B868A42941A4703DCAF0D93B41A4703D0AA9A42941CDCCCC0CE2D93B4191066719BBA429413D124827D5D93B419A99999930A429419A999999D4D93B41EC3D9D1030A4294154C1C513F6D93B4101030000000100000005000000676666667BA329410000008086D53B419A99999979A329419A999999EAD53B41CDCCCCCC41A4294100000080EBD53B419A99999943A429416766666687D53B41676666667BA329410000008086D53B41010300000001000000050000006766666680A32941333333335AD43B41CDCCCCCC7EA32941CDCCCC4CBED43B410000000047A4294133333333BFD43B419A99999948A429419A9999195BD43B416766666680A32941333333335AD43B41010300000001000000050000000000000084A329410000000092D33B413333333382A329419A999919F6D33B41676666664AA4294100000000F7D33B41333333334CA42941CDCCCCCC92D33B410000000084A329410000000092D33B41010300000001000000050000009A99999943A429416766666687D53B41CDCCCCCC0BA529413333333388D53B41676666660DA529419A99991924D53B413333333345A42941CDCCCC4C23D53B419A99999943A429416766666687D53B41010300000001000000050000009A999999C1C62941CDCCCCCCFBD03B41CDCCCCCCBFC629410000000060D13B410000000088C72941CDCCCCCC60D13B41CDCCCCCC89C72941333333B3FCD03B419A999999C1C62941CDCCCCCCFBD03B4101030000000100000005000000075380D0B1D7294177FC9B7993D43B4175CCA98A24D7294158A69BC42ED43B410000000058D62941676666E62DD43B416766666656D629410000000092D43B41075380D0B1D7294177FC9B7993D43B4101030000000100000008000000856556A9C1E629416A9D9F3AEBD43B41713D0A57EAE629415C8FC235F3D43B41295C8F4238E72941CDCCCC8CFDD43B416C30D37D3CE729411D6E9B9F08D53B419A99999951E82941CDCCCCCC09D53B413333333353E82941333333B3A5D43B41CDCCCCCCC2E6294100000000A4D43B41856556A9C1E629416A9D9F3AEBD43B410103000000010000000500000000000000DFE229416766666673D33B4133333333DDE2294100000080D7D33B4167666666A5E32941CDCCCC4CD8D33B4133333333A7E329413333333374D33B4100000000DFE229416766666673D33B410103000000010000001400000090D9117220D7294167DE1CD92BD43B41C3F5285C05D72941A4703D8A18D43B415C8FC2F501D72941AE47E17AF4D33B41E42E0F89D5D62941ADE2604BCAD33B41CDCCCCCC59D62941CDCCCCCCC9D33B419259E8B55AD629414BDB791C97D33B41F6285C0FBBD52941AE47E1FA9DD33B419A999999EBD42941A4703D0A71D33B41295C8FC203D529413E0AD72369D33B410C94DDF238D529413D19FC6364D33B41CDCCCCCC02D429419A99991963D33B413333333301D4294133333333C7D33B4167666666C9D4294100000000C8D33B419A999999C7D429419A9999192CD43B41CDCCCCCC8FD52941000000002DD43B41333333338ED529419A99991991D43B416766666656D629410000000092D43B410000000058D62941676666E62DD43B416766666620D72941333333B32ED43B4190D9117220D7294167DE1CD92BD43B410103000000010000000B000000CDCCCCCC02D429419A99991963D33B419A99999904D4294100000000FFD23B410000000095D52941333333B300D33B41CDCCCCCC96D529419A9999999CD23B419A999999CED42941333333B39BD23B4133333333D0D429419A99999937D23B410000000008D42941CDCCCCCC36D23B416766666606D42941676666E69AD23B41333333333ED32941000000009AD23B419A9999993AD329413333333362D33B41CDCCCCCC02D429419A99991963D33B41010300000001000000060000006F1301C46CD729413C9C82DAEBD63B41676666667BD729419A9999D9DBD63B41295C8FC22DD72941D7A3707DC1D63B4142245A0315D72941C1F76D48BED63B413333333314D7294100000080EBD63B416F1301C46CD729413C9C82DAEBD63B41010300000001000000050000000000000088E02941333333B30CD33B416766666686E02941CDCCCCCC70D33B419A9999994EE12941333333B371D33B413333333350E129419A9999990DD33B410000000088E02941333333B30CD33B41010300000001000000050000006766666656D629410000000092D43B419A99999954D629419A999919F6D43B41CDCCCCCC1CD72941676666E6F6D43B419A9999991ED72941CDCCCCCC92D43B416766666656D629410000000092D43B4101030000000100000008000000C05006F49ED529413D301B9B21D63B41B81E856BCED529417B14AEC70DD63B411F85EBD128D6294167666626FCD53B410B135E6F50D62941C2789228EED53B413333333351D62941CDCCCC4CBED53B410000000089D5294167666666BDD53B416766666687D529410000008021D63B41C05006F49ED529413D301B9B21D63B41010300000001000000070000009A99999993E72941CDCCCC4CB0D23B410000000092E729416766666614D33B41CDCCCCCCC9E629419A99999913D33B4100000000C8E62941333333B377D33B416766666658E829416766666679D33B41CDCCCCCC5BE8294133333333B1D23B419A99999993E72941CDCCCC4CB0D23B410103000000010000000500000067666666C6E62941CDCCCCCCDBD33B419A999999C4E62941676666E63FD43B41CDCCCCCC8CE72941333333B340D43B419A9999998EE729419A999999DCD33B4167666666C6E62941CDCCCCCCDBD33B4101030000000100000005000000CDCCCCCCEAD329419A999999DCD83B4133333333E9D32941333333B340D93B4167666666B1D429410000008041D93B4100000000B3D4294167666666DDD83B41CDCCCCCCEAD329419A999999DCD83B41010300000001000000060000003685289693D529412111AED059D33B4185EB513851D62941D7A3707D2AD33B4151DA56AA5CD6294156F311DE26D33B41000000005FD62941676666669DD23B41CDCCCCCC96D529419A9999999CD23B413685289693D529412111AED059D33B41010300000001000000050000000000000071E429410000000011D33B41676666666FE429419A99991975D33B419A99999937E529410000000076D33B416766666639E52941CDCCCCCC11D33B410000000071E429410000000011D33B4101030000000100000006000000E42E0F89D5D62941ADE2604BCAD33B41D7A3703DADD629417B14AE07A4D33B41B81E856B79D62941A4703DCA95D33B419259E8B55AD629414BDB791C97D33B41CDCCCCCC59D62941CDCCCCCCC9D33B41E42E0F89D5D62941ADE2604BCAD33B4101030000000100000005000000CDCCCCCC4CE12941CDCCCCCCD5D33B41000000004BE12941676666E639D43B416766666613E22941333333B33AD43B410000000015E229419A999999D6D33B41CDCCCCCC4CE12941CDCCCCCCD5D33B410103000000010000000500000033333333EED329416766666614D83B419A999999ECD329410000008078D83B41CDCCCCCCB4D42941CDCCCC4C79D83B419A999999B6D429413333333315D83B4133333333EED329416766666614D83B41010300000001000000050000009A99999901E62941333333B312D33B41CDCCCCCCFFE52941CDCCCCCC76D33B4100000000C8E62941333333B377D33B41CDCCCCCCC9E629419A99999913D33B419A99999901E62941333333B312D33B41010300000001000000050000006766666639E52941CDCCCCCC11D33B419A99999901E62941333333B312D33B413333333303E629419A999999AED23B41000000003BE52941333333B3ADD23B416766666639E52941CDCCCCCC11D33B41010300000001000000050000003333333334E52941333333333ED43B416766666632E52941CDCCCC4CA2D43B419A999999FAE529419A999919A3D43B4167666666FCE52941000000003FD43B413333333334E52941333333333ED43B4101030000000100000005000000CDCCCCCC19E92941333333B30AD53B410000000018E92941CDCCCCCC6ED53B4133333333E0E929419A9999996FD53B4100000000E2E92941000000800BD53B41CDCCCCCC19E92941333333B30AD53B4101030000000100000005000000333333331DE929410000008042D43B41CDCCCCCC19E92941333333B30AD53B4100000000E2E92941000000800BD53B4167666666E5E92941CDCCCC4C43D43B41333333331DE929410000008042D43B410103000000010000000500000067666666CBE6294100000080AFD23B41CDCCCCCCC9E629419A99999913D33B410000000092E729416766666614D33B419A99999993E72941CDCCCC4CB0D23B4167666666CBE6294100000080AFD23B41010300000001000000050000006766666658E829416766666679D33B41CDCCCCCC56E8294100000080DDD33B41000000001FE9294167666666DED33B419A99999920E92941333333337AD33B416766666658E829416766666679D33B410103000000010000002D0000005E73F39332CF29412B3F652974DA3B41F6285C0F8DCF294185EB513882DA3B4190C2F5A819D02941CDCCCCCC68DA3B41B81E85EB9ED02941E17A146E9DDA3B41713D0AD7FBD02941676666E6E2DA3B41F6285C0F3FD129410000004014DB3B4115AE47E156D12941C3F5285C20DB3B415C8FC2F5BAD12941A4703DCA22DB3B41F6285C0F57D2294185EB517827DB3B4152B81E85E7D229411F85EB1116DB3B410AD7A3F00FD3294185EB513801DB3B4185EB513806D3294167666626EFDA3B41D7A370BD41D52941A4703D8ABDDA3B41F6285C0F6CD529415C8FC2B5ADDA3B417B14AEC79CD52941EC51B8DE86DA3B410AD7A370B7D529410AD7A3F061DA3B41E17A14AE20D629411F85EB5121DA3B4148E17A94BED6294115AE47E1BCD93B4190C2F5A839D729419A99995985D93B410AD7A37072D72941A4703D8A5BD93B41676666E6BBD72941295C8FC20BD93B41B81E856BC4D7294152B81EC5EDD83B415C8FC27554D729417B14AE47E3D83B413E0AD7A30AD729410AD7A3F0D3D83B410AD7A3F0D6D62941333333B3BED83B411F85EB51C1D6294148E17A94A7D83B418E1DD7F0C9D62941ECBDC3987BD83B413333333345D62941000000007BD83B419A99999943D629419A999919DFD83B41333333337BD52941CDCCCC4CDED83B419A99999979D529416766666642D93B4167666666B1D429410000008041D93B419A999999AFD429419A999999A5D93B4167666666E7D32941CDCCCCCCA4D93B4100000000E4D32941000000006DDA3B41CDCCCCCC1BD329419A9999196CDA3B41676666661DD329410000000008DA3B413333333355D229413333333307DA3B410000000057D229419A999919A3D93B419A999999C6D0294167666666A1D93B41CDCCCCCCC4D029410000008005DA3B419A999999FCCF29419A99999904DA3B4100000000FBCF2941333333B368DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B415E73F39332CF29412B3F652974DA3B41010300000001000000070000009148E9E4D4D62941AEE4B28917D83B41D7A370BDDAD629415C8FC275E1D73B41D163D14311D7294184D501C89BD73B413333333314D7294100000080EBD63B41000000004CD629419A999999EAD63B410000000047D62941676666E616D83B419148E9E4D4D62941AEE4B28917D83B4101030000000100000005000000CDCCCCCC89E029419A999999A8D23B410000000088E02941333333B30CD33B413333333350E129419A9999990DD33B410000000052E1294167666666A9D23B41CDCCCCCC89E029419A999999A8D23B4101030000000100000005000000CDCCCCCC72E42941676666E6ACD23B410000000071E429410000000011D33B416766666639E52941CDCCCCCC11D33B41000000003BE52941333333B3ADD23B41CDCCCCCC72E42941676666E6ACD23B4101030000000100000005000000000000006CE42941CDCCCC4C3DD43B41333333336AE4294167666666A1D43B416766666632E52941CDCCCC4CA2D43B413333333334E52941333333333ED43B41000000006CE42941CDCCCC4C3DD43B4101030000000100000005000000CDCCCCCCB4D42941CDCCCC4C79D83B4100000000B3D4294167666666DDD83B41333333337BD52941CDCCCC4CDED83B41000000007DD52941333333337AD83B41CDCCCCCCB4D42941CDCCCC4C79D83B41010300000001000000050000000000000021D32941CDCCCCCC3FD93B41333333331FD32941676666E6A3D93B4167666666E7D32941CDCCCCCCA4D93B4133333333E9D32941333333B340D93B410000000021D32941CDCCCCCC3FD93B41010300000001000000050000003333333350E129419A9999990DD33B419A9999994EE12941333333B371D33B41CDCCCCCC16E229410000008072D33B416766666618E22941676666660ED33B413333333350E129419A9999990DD33B41010300000001000000050000000000000052E1294167666666A9D23B413333333350E129419A9999990DD33B419A999999E0E22941CDCCCC4C0FD33B4167666666E2E2294133333333ABD23B410000000052E1294167666666A9D23B4101030000000100000005000000CDCCCCCC01D02941CDCCCC4CD8D83B410000000000D02941676666663CD93B4133333333C8D02941333333333DD93B4100000000CAD029419A999919D9D83B41CDCCCCCC01D02941CDCCCC4CD8D83B410103000000050000002F0000008E1DD7F0C9D62941ECBDC3987BD83B41CDCCCC4CCCD62941F6285C8F6FD83B419A999999D3D62941295C8F8223D83B41323AE4E5D4D62941A57CA18017D83B410000000047D62941676666E616D83B41676666664AD62941333333B34ED73B413333333382D52941676666E64DD73B41CDCCCCCC83D52941CDCCCCCCE9D63B419A999999BBD42941676666E6E8D63B4167666666BDD42941CDCCCCCC84D63B41000000002DD329419A99991983D63B419A99999929D32941CDCCCC4C4BD73B413333333361D22941676666664AD73B410000000063D22941CDCCCC4CE6D63B41CDCCCCCC9AD1294100000080E5D63B419A9999999CD129416766666681D63B4167666666D4D029410000008080D63B419A999999D2D029419A999999E4D63B41676666660AD02941333333B3E3D63B41CDCCCCCC0DD02941000000801BD63B419A99999945CF2941333333B31AD63B41CDCCCCCC43CF2941CDCCCCCC7ED63B419A9999997BCE2941676666E67DD63B41676666667DCE2941CDCCCCCC19D63B4133333333B5CD29410000000019D63B4100000000B0CD2941CDCCCC4C45D73B41CDCCCCCCE7CC29416766666644D73B4100000000E6CC294100000080A8D73B419A99999955CB2941CDCCCCCCA6D73B410000000054CB2941676666E60AD83B4167666666E4CC29419A9999990CD83B4100000000E1CC2941CDCCCCCCD4D83B419A99999939CF294167666666D7D83B41CDCCCCCC37CF2941000000803BD93B410000000000D02941676666663CD93B41CDCCCCCC01D02941CDCCCC4CD8D83B41676666665AD22941676666E6DAD83B41333333335CD22941333333B376D83B419A999999ECD329410000008078D83B4133333333EED329416766666614D83B419A999999B6D429413333333315D83B41CDCCCCCCB4D42941CDCCCC4C79D83B41000000007DD52941333333337AD83B41333333337BD52941CDCCCC4CDED83B419A99999943D629419A999919DFD83B413333333345D62941000000007BD83B418E1DD7F0C9D62941ECBDC3987BD83B41050000009A999999BBD42941676666E6E8D63B4100000000BAD42941000000004DD73B41CDCCCCCCF1D329419A9999194CD73B4167666666F3D3294100000000E8D63B419A999999BBD42941676666E6E8D63B41050000003333333361D22941676666664AD73B419A9999995FD2294100000080AED73B4133333333CFD02941CDCCCCCCACD73B41CDCCCCCCD0D02941333333B348D73B413333333361D22941676666664AD73B410500000000000000B0CD2941CDCCCC4C45D73B413333333378CE29419A99991946D73B419A99999976CE294133333333AAD73B4133333333AECD294167666666A9D73B4100000000B0CD2941CDCCCC4C45D73B410500000033333333EED329416766666614D83B410000000026D329410000008013D83B41CDCCCCCC27D3294167666666AFD73B4100000000F0D3294133333333B0D73B4133333333EED329416766666614D83B4101030000000100000006000000D17610E919D72941FA5D36B7A2D53B41676666E674D729413333337399D53B41F6285C8FE1D7294115AE47E17AD53B41F801297BE1D729419D0E31E45BD53B41333333331BD72941000000005BD53B41D17610E919D72941FA5D36B7A2D53B4101030000000100000004000000FF534E9AE5D72941C1294A32DAD43B4152B81E85E6D729415C8FC2B5CDD43B416BAA39D6E5D7294196DF196ACCD43B41FF534E9AE5D72941C1294A32DAD43B41010300000001000000060000006164E4EB37D7294102492AC24FD73B41A4703D8A50D7294185EB51B80AD73B410FBCCEBE6CD729413D6B31E0EBD63B413333333314D7294100000080EBD63B419A99999912D729419A9999994FD73B416164E4EB37D7294102492AC24FD73B4101030000000100000005000000CDCCCCCC33D329419A999999F2D43B416766666630D32941676666E6BAD53B419A999999F8D32941333333B3BBD53B4100000000FCD3294100000080F3D43B41CDCCCCCC33D329419A999999F2D43B410103000000010000000B000000BD1A22D40DDB294151098C9831D33B413E0AD7A32ADB2941F6285CCF2BD33B4185EB51B84EDB29415C8FC2F528D33B41333333B378DB2941676666262DD33B4148E17A148DDB29415C8FC23518D33B411F85EB519DDB294152B81E450CD33B417B14AE47C9DB29415C8FC27510D33B413384FEA1D6DB2941D71EDBCE10D33B41CDCCCCCCD6DB29410000008007D33B419A9999990EDB2941333333B306D33B41BD1A22D40DDB294151098C9831D33B41010300000001000000050000000B135E6F50D62941C2789228EED53B4190C2F5A89BD62941713D0A97D3D53B4183658A05B8D629411CF3FBB5BED53B413333333351D62941CDCCCC4CBED53B410B135E6F50D62941C2789228EED53B41010300000001000000080000006D158A1387D52941A97AF87F33D63B41295C8FC27DD5294185EB51782FD63B412C86473887D52941CA7CD1842BD63B416766666687D529410000008021D63B4100000000BFD42941333333B320D63B4167666666BDD42941CDCCCCCC84D63B419A99999985D529419A99999985D63B416D158A1387D52941A97AF87F33D63B4101030000000100000005000000333333338ED529419A99991991D43B41676666668CD5294133333333F5D43B419A99999954D629419A999919F6D43B416766666656D629410000000092D43B41333333338ED529419A99991991D43B41010300000001000000050000009A99999922D32941333333B3DBD83B410000000021D32941CDCCCCCC3FD93B4133333333E9D32941333333B340D93B41CDCCCCCCEAD329419A999999DCD83B419A99999922D32941333333B3DBD83B4101030000000100000007000000333333335CD22941333333B376D83B41676666665AD22941676666E6DAD83B413333333392D1294100000000DAD83B419A99999990D129419A9999193ED93B410000000021D32941CDCCCCCC3FD93B416766666624D329419A99999977D83B41333333335CD22941333333B376D83B410103000000010000000500000000000000B0CD2941CDCCCC4C45D73B4133333333AECD294167666666A9D73B419A99999976CE294133333333AAD73B413333333378CE29419A99991946D73B4100000000B0CD2941CDCCCC4C45D73B410103000000010000000500000000000000B3D4294167666666DDD83B4167666666B1D429410000008041D93B419A99999979D529416766666642D93B41333333337BD52941CDCCCC4CDED83B4100000000B3D4294167666666DDD83B41010300000001000000050000000000000057D229419A999919A3D93B413333333355D229413333333307DA3B41676666661DD329410000000008DA3B41333333331FD32941676666E6A3D93B410000000057D229419A999919A3D93B41010300000001000000040000002826D17824D729415DDDE2B72ED43B410155CA7220D72941B960A0D92BD43B416766666620D72941333333B32ED43B412826D17824D729415DDDE2B72ED43B410103000000010000000500000022D6369A5CD62941827E2CE326D33B41EC51B89E8FD62941D7A370BD16D33B41CDEAE2DDB1D62941604B70E101D33B41333333335DD629410000008001D33B4122D6369A5CD62941827E2CE326D33B41010300000001000000070000009094A37DEED7294142734CC3D1D23B41EC51B89E19D829411F85EB51BDD23B411F85EBD147D82941295C8F82B4D23B410AD7A3F079D8294185EB51B8B0D23B41A7FBB158F4D8294108CC4349A0D23B4167666666EFD72941333333339FD23B419094A37DEED7294142734CC3D1D23B4101030000000100000007000000E51FB9333AD9294178F8B393A0D23B410AD7A37068D92941AE47E1BAA3D23B41A4703D0AE0D929417B14AE47C3D23B417B14AEC72FDA29413E0AD7A3D7D23B412DFB58D446DA2941737C709FE6D23B410000000048DA2941333333B3A1D23B41E51FB9333AD9294178F8B393A0D23B410103000000010000001D0000002BACC992D6DB294100A875CE10D33B411F85EB51F7DB294190C2F5A811D33B411F85EB5196DC29417B14AE47E2D23B417B14AE47B6DC2941E17A146EE6D23B410AD7A3F0CFDC2941F6285C8FFCD23B4190C2F528B3DC2941D7A3707D28D33B4152B81E8596DC294190C2F5684BD33B413333333384DC29419A9999595CD33B41C3F528DC95DC29413333337372D33B417A7D08189DDC294130AEA5BF72D33B41333333339DDC2941000000806CD33B416766666686E02941CDCCCCCC70D33B41CDCCCCCC89E029419A999999A8D23B4167666666F9DE2941676666E6A6D23B41CDCCCCCCFCDE2941333333B3DED13B419A99999934DE2941CDCCCCCCDDD13B41CDCCCCCC32DE2941676666E641D23B419A9999996ADD29419A99991941D23B41000000006EDD2941CDCCCCCC78D13B41CDCCCCCCA5DC29410000000078D13B419A999999A7DC2941676666E613D13B413333333317DB29413333333312D13B416766666615DB2941CDCCCC4C76D13B419A999999DDDB29419A99991977D13B41CDCCCCCCDBDB294133333333DBD13B4133333333A4DC29419A999919DCD13B4167666666A2DC29413333333340D23B4133333333DADB2941CDCCCC4C3FD23B412BACC992D6DB294100A875CE10D33B4101030000000100000005000000A9DE638EFADF294146332F59D4D33B410000000007E029419A999959E0D33B41F6285C0F1BE02941E17A146EDDD33B41F26064F12DE029410E77C08DD4D33B41A9DE638EFADF294146332F59D4D33B410103000000010000000B00000033333333A7E329413333333374D33B4167666666A5E32941CDCCCC4CD8D33B410000000015E229419A999999D6D33B419A99999911E22941CDCCCCCC9ED43B41CDCCCCCCD9E22941333333B39FD43B419A999999DBE229419A9999993BD43B419A999999C4E62941676666E63FD43B4167666666C6E62941CDCCCCCCDBD33B419A9999996DE4294133333333D9D33B41676666666FE429419A99991975D33B4133333333A7E329413333333374D33B410103000000010000000900000000000000FCD3294100000080F3D43B41CDCCCCCCF6D32941CDCCCCCC1FD63B419A9999992ED32941000000001FD63B41000000002DD329419A99991983D63B4167666666BDD42941CDCCCCCC84D63B419A999999C2D429410000008058D53B41CDCCCCCC8AD52941CDCCCC4C59D53B41676666668CD5294133333333F5D43B4100000000FCD3294100000080F3D43B410103000000010000000B0000007216297BE1D72941227750E45BD53B41CDCCCC4CE1D7294152B81EC514D53B41FF534E9AE5D72941C1294A32DAD43B416BAA39D6E5D7294196DF196ACCD43B41F6285C0FD5D729419A999999ACD43B410F05B8CBB1D72941053C337693D43B419A9999991ED72941CDCCCCCC92D43B41CDCCCCCC1CD72941676666E6F6D43B419A99999954D629419A999919F6D43B410000000053D62941333333335AD53B417216297BE1D72941227750E45BD53B4101030000000100000007000000F1B2D2AC38D529413B383D6A64D33B419A99991984D52941E17A14AE5DD33B41DD74569393D529411C4462D159D33B410000000095D52941333333B300D33B419A99999904D4294100000000FFD23B41CDCCCCCC02D429419A99991963D33B41F1B2D2AC38D529413B383D6A64D33B41010300000001000000050000009A9999998EE729419A999999DCD33B41CDCCCCCC8CE72941333333B340D43B41333333331DE929410000008042D43B41000000001FE9294167666666DED33B419A9999998EE729419A999999DCD33B410103000000010000000500000067666666BDD42941CDCCCCCC84D63B419A999999BBD42941676666E6E8D63B41CDCCCCCC83D52941CDCCCCCCE9D63B419A99999985D529419A99999985D63B4167666666BDD42941CDCCCCCC84D63B41010300000001000000050000006766666639E52941CDCCCCCC11D33B419A99999937E529410000000076D33B41CDCCCCCCFFE52941CDCCCCCC76D33B419A99999901E62941333333B312D33B416766666639E52941CDCCCCCC11D33B4101030000000100000005000000CDCCCCCC8AD52941CDCCCC4C59D53B410000000089D5294167666666BDD53B413333333351D62941CDCCCC4CBED53B410000000053D62941333333335AD53B41CDCCCCCC8AD52941CDCCCC4C59D53B41010300000001000000050000006766666632CC294167666666F6D23B41CDCCCCCC30CC2941000000805AD33B4100000000F9CC2941676666665BD33B419A999999FACC294133333333F7D23B416766666632CC294167666666F6D23B4101030000000100000005000000E0F49F4E11D72941EE5E32BA9BD73B41AE47E17A26D72941B81E85AB80D73B4142E9BDEC37D72941624AC8BF4FD73B419A99999912D729419A9999994FD73B41E0F49F4E11D72941EE5E32BA9BD73B410103000000010000000700000015D475A14DD629412035782094D63B41AE47E17A18D62941AE47E13A84D63B4100000080A5D5294190C2F5A840D63B41A7A29C1687D5294113B64C8133D63B413333333382D52941676666E64DD73B41676666664AD62941333333B34ED73B4115D475A14DD629412035782094D63B41010300000001000000040000001AD0033A87D52941D4EA17842BD63B41C05006F49ED529413D301B9B21D63B416766666687D529410000008021D63B411AD0033A87D52941D4EA17842BD63B410103000000010000000500000000000000CAD029419A999919D9D83B419A999999C6D0294167666666A1D93B41CDCCCCCC8ED1294133333333A2D93B413333333392D1294100000000DAD83B4100000000CAD029419A999919D9D83B4101030000000100000005000000CDCCCCCCD0D02941333333B348D73B4133333333CFD02941CDCCCCCCACD73B419A9999995FD2294100000080AED73B413333333361D22941676666664AD73B41CDCCCCCCD0D02941333333B348D73B4101030000000100000005000000CDCCCCCC27D3294167666666AFD73B410000000026D329410000008013D83B4133333333EED329416766666614D83B4100000000F0D3294133333333B0D73B41CDCCCCCC27D3294167666666AFD73B410103000000010000000500000000000000CCC92941333333B314D63B4167666666CAC92941CDCCCCCC78D63B419A99999992CA29419A99999979D63B416766666694CA29410000008015D63B4100000000CCC92941333333B314D63B410103000000010000000500000000000000EDCC29419A99991918D63B4133333333EBCC2941333333337CD63B4167666666B3CD29419A9999197DD63B4133333333B5CD29410000000019D63B4100000000EDCC29419A99991918D63B41010300000001000000050000006766666624D329419A99999977D83B419A99999922D32941333333B3DBD83B41CDCCCCCCEAD329419A999999DCD83B419A999999ECD329410000008078D83B416766666624D329419A99999977D83B41010300000001000000050000009A999999C2D429410000008058D53B41CDCCCCCCC0D429419A999999BCD53B410000000089D5294167666666BDD53B41CDCCCCCC8AD52941CDCCCC4C59D53B419A999999C2D429410000008058D53B4101030000000100000005000000CDCCCCCC58D22941000000003FD93B410000000057D229419A999919A3D93B41333333331FD32941676666E6A3D93B410000000021D32941CDCCCCCC3FD93B41CDCCCCCC58D22941000000003FD93B410103000000010000000700000083658A05B8D629411CF3FBB5BED53B410AD7A370D4D62941A4703DCAA9D53B41D17610E919D72941FA5D36B7A2D53B41333333331BD72941000000005BD53B410000000053D62941333333335AD53B413333333351D62941CDCCCC4CBED53B4183658A05B8D629411CF3FBB5BED53B410103000000010000000500000067666666E7D32941CDCCCCCCA4D93B419A999999AFD429419A999999A5D93B4167666666B1D429410000008041D93B4133333333E9D32941333333B340D93B4167666666E7D32941CDCCCCCCA4D93B410103000000010000000500000067666666F3D3294100000000E8D63B41CDCCCCCCF1D329419A9999194CD73B4100000000BAD42941000000004DD73B419A999999BBD42941676666E6E8D63B4167666666F3D3294100000000E8D63B4101030000000100000005000000CDCCCCCC8AD52941CDCCCC4C59D53B410000000053D62941333333335AD53B419A99999954D629419A999919F6D43B41676666668CD5294133333333F5D43B41CDCCCCCC8AD52941CDCCCC4C59D53B4101030000000100000005000000CDCCCCCC8CE72941333333B340D43B41000000008BE72941CDCCCCCCA4D43B413333333353E82941333333B3A5D43B410000000055E829419A99999941D43B41CDCCCCCC8CE72941333333B340D43B41010300000001000000050000009A999999ECD329410000008078D83B41CDCCCCCCEAD329419A999999DCD83B4100000000B3D4294167666666DDD83B41CDCCCCCCB4D42941CDCCCC4C79D83B419A999999ECD329410000008078D83B41010300000001000000050000003333333303E629419A999999AED23B419A99999901E62941333333B312D33B41CDCCCCCCC9E629419A99999913D33B4167666666CBE6294100000080AFD23B413333333303E629419A999999AED23B41010300000001000000050000009A999999C4E62941676666E63FD43B41CDCCCCCCC2E6294100000000A4D43B41000000008BE72941CDCCCCCCA4D43B41CDCCCCCC8CE72941333333B340D43B419A999999C4E62941676666E63FD43B410103000000010000000500000000000000ACEA2941CDCCCC4CA8D43B413333333374EB29419A999919A9D43B41CDCCCCCC75EB29410000000045D43B419A999999ADEA29413333333344D43B4100000000ACEA2941CDCCCC4CA8D43B4101030000000100000005000000CDCCCCCC48FE2941CDCCCCCC38D13B410000000047FE2941676666E69CD13B41333333330FFF2941333333B39DD13B410000000011FF29419A99999939D13B41CDCCCCCC48FE2941CDCCCCCC38D13B41010300000001000000050000009A99999969012A41333333333CD13B41CDCCCCCC67012A41CDCCCC4CA0D13B410000000030022A4133333333A1D13B41CDCCCCCC31022A419A9999193DD13B419A99999969012A41333333333CD13B410103000000010000000500000033333333D9FF2941000000803AD13B4167666666D7FF29419A9999999ED13B419A9999999F002A41000000809FD13B4167666666A1002A41676666663BD13B4133333333D9FF2941000000803AD13B4101030000000100000005000000CDCCCCCC31022A419A9999193DD13B4100000000FA022A41676666E63DD13B41CDCCCCCCFB022A41CDCCCCCCD9D03B419A99999933022A4100000000D9D03B41CDCCCCCC31022A419A9999193DD13B41010300000001000000050000000000000030022A4133333333A1D13B4167666666F8022A4100000000A2D13B4100000000FA022A41676666E63DD13B41CDCCCCCC31022A419A9999193DD13B410000000030022A4133333333A1D13B410103000000010000000500000000000000DEE32941CDCCCCCCF0C63B4167666666DCE32941676666E654C73B41CDCCCCCC6CE529419A99999956C73B419A9999996EE5294100000080F2C63B4100000000DEE32941CDCCCCCCF0C63B410103000000010000000C0000005D3D57AA43C8294176AAA7D83FD43B41B81E856B64C82941A4703D8A3AD43B41295C8F42F6C829410AD7A3304ED43B41F6285C0FF6C829413333333359D43B41DE0906760BC92941FE69590B5AD43B41676666660CC92941CDCCCC4C1FD43B41CDCCCCCC9CCA29410000000021D43B4100000000A2CA2941333333B3F4D23B413333333381C7294133333333F1D23B41000000007CC729419A9999991DD43B413333333344C82941676666661ED43B415D3D57AA43C8294176AAA7D83FD43B4101030000000100000034000000579702670BC9294161C7C10A5AD43B41EC51B81E68C92941333333B35DD43B415C8FC2F589C92941C3F528DC69D43B411F85EBD1B1C92941A4703D0A74D43B41C3F528DC1AC929410AD7A370A2D43B416B98348509C9294102B58CDCC8D43B410000000009C9294100000080E7D43B4133333333D1C92941CDCCCC4CE8D43B4100000000CCC92941333333B314D63B416766666694CA29410000008015D63B419A99999992CA29419A99999979D63B4167666666CAC92941CDCCCCCC78D63B419A999999C8C92941676666E6DCD63B413333333338C8294133333333DBD63B4140977E8D30C8294169891B4198D83B4190C2F5A8B2C8294133333333C3D83B41802C2FFBB8C8294111164E51D0D83B41CDCCCCCCF7C829419A999999D0D83B4193EA1022F7C8294171A2D0DEF7D83B41F6285C0FE0C92941F6285C8FFAD83B41D7A370BDF7C92941E17A14AE0FD93B41295C8FC221CA2941C3F528DC10D93B41F6285C8F34CA29413E0AD7E3E3D83B41F6285C8F50CA2941295C8F02E5D83B4185EB51385ACA294148E17A14FAD83B415C8FC27546CB2941713D0A17FCD83B41CDCCCCCC4BCB294190C2F52823D93B41F61B1C4351CB29416C97083637D93B4133333333DFCC29410000000039D93B4100000000E1CC2941CDCCCCCCD4D83B419A99999950CB29419A999919D3D83B413333333352CB2941000000006FD83B419A999999E2CC2941333333B370D83B4167666666E4CC29419A9999990CD83B410000000054CB2941676666E60AD83B419A99999955CB2941CDCCCCCCA6D73B41CDCCCCCC1DCC2941333333B3A7D73B419A9999991FCC29419A99999943D73B41CDCCCCCCE7CC29416766666644D73B4133333333EBCC2941333333337CD63B410000000023CC2941CDCCCC4C7BD63B41CDCCCCCC24CC29413333333317D63B419A9999995CCB29416766666616D63B41333333335ECB2941CDCCCC4CB2D53B416766666626CC29419A999919B3D53B413333333328CC2941000000004FD53B410000000060CB2941333333334ED53B416766666663CB29410000000086D43B41333333339BCA29419A99991985D43B41CDCCCCCC9CCA29410000000021D43B41676666660CC92941CDCCCC4C1FD43B41579702670BC9294161C7C10A5AD43B41010300000001000000050000009A9999999ECA2941676666E6BCD33B41CDCCCCCC9CCA29410000000021D43B413333333365CB2941CDCCCCCC21D43B41CDCCCCCC66CB2941333333B3BDD33B419A9999999ECA2941676666E6BCD33B410103000000010000000500000067666666E2C92941CDCCCC4CFFD03B419A999999E0C929416766666663D13B4100000000A9CA29413333333364D13B419A999999AACA29419A99991900D13B4167666666E2C92941CDCCCC4CFFD03B41010300000001000000050000009A9999996DCB2941CDCCCC4C2DD23B41333333336ACB294100000080F5D23B416766666632CC294167666666F6D23B41CDCCCCCC35CC2941333333332ED23B419A9999996DCB2941CDCCCC4C2DD23B41010300000001000000050000006766666686C72941676666E6C4D13B419A9999994EC82941CDCCCCCCC5D13B410000000052C829419A999999FDD03B41CDCCCCCC89C72941333333B3FCD03B416766666686C72941676666E6C4D13B410103000000010000000500000049C15D8D09C92941228377CAC8D43B41CDCCCCCCFFC8294167666666DED43B4124A2ED64FCC8294192207E71E7D43B410000000009C9294100000080E7D43B4149C15D8D09C92941228377CAC8D43B41010300000001000000050000009A9999993BC829410000000013D63B41CDCCCCCC03C92941CDCCCCCC13D63B419A99999905C92941333333B3AFD53B41676666663DC82941CDCCCCCCAED53B419A9999993BC829410000000013D63B410103000000010000000A00000024A2ED64FCC8294192207E71E7D43B41EC51B81EF1C8294115AE476105D53B41F6285C8FE4C82941C3F5285C25D53B41D7A3703DC8C82941295C8F4235D53B41AE47E1FA3EC82941D7A370BD75D53B41B9BE295C3EC829410240B14576D53B41676666663DC82941CDCCCCCCAED53B419A99999905C92941333333B3AFD53B410000000009C9294100000080E7D43B4124A2ED64FCC8294192207E71E7D43B41010300000001000000050000009A9999993BC829410000000013D63B41000000003AC829419A99991977D63B413333333302C92941676666E677D63B41CDCCCCCC03C92941CDCCCCCC13D63B419A9999993BC829410000000013D63B4101030000000100000005000000CDCCCCCC03C92941CDCCCCCC13D63B416766666600C9294100000000DCD63B419A999999C8C92941676666E6DCD63B4100000000CCC92941333333B314D63B41CDCCCCCC03C92941CDCCCCCC13D63B41010300000001000000050000006766666686C72941676666E6C4D13B419A99999984C729410000000029D23B41CDCCCCCC4CC82941676666E629D23B419A9999994EC82941CDCCCCCCC5D13B416766666686C72941676666E6C4D13B410103000000010000000D000000000000002FCC29419A999999BED33B419A99999987CE294133333333C1D33B410000000086CE2941CDCCCC4C25D43B41333333334ECF29419A99991926D43B416766666653CF2941CDCCCCCCF9D23B41CDCCCCCCC2CD29419A999919F8D23B4167666666C6CD2941676666E62FD23B41CDCCCCCC35CC2941333333332ED23B416766666632CC294167666666F6D23B419A999999FACC294133333333F7D23B4100000000F9CC2941676666665BD33B41CDCCCCCC30CC2941000000805AD33B41000000002FCC29419A999999BED33B4101030000000100000005000000CDCCCCCCF3CC2941333333B387D43B4100000000F2CC2941CDCCCCCCEBD43B4167666666BACD29419A999999ECD43B4100000000BCCD29410000008088D43B41CDCCCCCCF3CC2941333333B387D43B410103000000010000000500000000000000BCCD29410000008088D43B413333333384CE29416766666689D43B410000000086CE2941CDCCCC4C25D43B41CDCCCCCCBDCD29416766666624D43B4100000000BCCD29410000008088D43B41010300000001000000050000006766666647CF29419A999999B6D53B419A99999945CF2941333333B31AD63B41CDCCCCCC0DD02941000000801BD63B419A9999990FD0294167666666B7D53B416766666647CF29419A999999B6D53B410103000000010000000700000033333333A9CD2941333333B3D5D83B41CDCCCCCCA5CD2941676666E69DD93B413333333336CF29419A9999999FD93B41CDCCCCCC37CF2941000000803BD93B419A9999996FCE2941333333B33AD93B416766666671CE29419A999999D6D83B4133333333A9CD2941333333B3D5D83B41010300000001000000050000003847E2B3EFCE2941A235298867DA3B417B14AE47FBCE29411F85EB916BDA3B415E73F39332CF29412B3F652974DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B413847E2B3EFCE2941A235298867DA3B410103000000010000000500000000000000EDCC29419A99991918D63B4133333333B5CD29410000000019D63B41CDCCCCCCB6CD2941CDCCCCCCB4D53B419A999999EECC294100000000B4D53B4100000000EDCC29419A99991918D63B4101030000000100000005000000CDCCCCCC24CC29413333333317D63B410000000023CC2941CDCCCC4C7BD63B4133333333EBCC2941333333337CD63B4100000000EDCC29419A99991918D63B41CDCCCCCC24CC29413333333317D63B41010300000001000000050000006766666626CC29419A999919B3D53B419A999999EECC294100000000B4D53B4167666666F0CC2941676666E64FD53B413333333328CC2941000000004FD53B416766666626CC29419A999919B3D53B41010300000001000000050000009A99999990D129419A9999193ED93B41CDCCCCCC8ED1294133333333A2D93B410000000057D229419A999919A3D93B41CDCCCCCC58D22941000000003FD93B419A99999990D129419A9999193ED93B4101030000000100000005000000CDCCCCCC32CF2941CDCCCCCC67DA3B4100000000FBCF2941333333B368DA3B419A999999FCCF29419A99999904DA3B416766666634CF2941333333B303DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B41010300000001000000050000009A9999999CD129416766666681D63B41CDCCCCCC9AD1294100000080E5D63B410000000063D22941CDCCCC4CE6D63B41CDCCCCCC64D229413333333382D63B419A9999999CD129416766666681D63B4101030000000100000005000000CDCCCCCC37CF2941000000803BD93B416766666634CF2941333333B303DA3B419A999999FCCF29419A99999904DA3B410000000000D02941676666663CD93B41CDCCCCCC37CF2941000000803BD93B4101030000000100000005000000CDCCCCCC72CB29410000000001D13B413333333371CB29419A99991965D13B41CDCCCCCCC9CD2941333333B367D13B4167666666CBCD29419A99999903D13B41CDCCCCCC72CB29410000000001D13B41010300000001000000050000009A99999990D129419A9999193ED93B41CDCCCCCC8ED1294133333333A2D93B410000000057D229419A999919A3D93B41CDCCCCCC58D22941000000003FD93B419A99999990D129419A9999193ED93B41010300000001000000050000006766666671CE29419A999999D6D83B419A9999996FCE2941333333B33AD93B41CDCCCCCC37CF2941000000803BD93B419A99999939CF294167666666D7D83B416766666671CE29419A999999D6D83B41010300000001000000050000000000000000D02941676666663CD93B4167666666FECF294100000080A0D93B419A999999C6D0294167666666A1D93B4133333333C8D02941333333333DD93B410000000000D02941676666663CD93B4101030000000100000013000000F61B1C4351CB29416C97083637D93B413E0AD7A35ECB29411F85EB5168D93B41B81E85EB7CCB2941E17A146E59D93B4190C2F528BFCB2941333333B34FD93B41F6285C0FE1CB2941C3F528DC58D93B41CDCCCCCC02CC294152B81E056AD93B41713D0AD780CC29411F85EB9170D93B41AE47E17A8ACC294152B81EC5FAD93B4148E17A94CACC2941A4703D0AF9D93B411F85EBD10ACE2941B81E856B01DA3B41AE47E1FA69CE29413E0AD7E338DA3B4198EE89A7EFCE294109E5DA8367DA3B41CDCCCCCC32CF2941CDCCCCCC67DA3B413333333336CF29419A9999999FD93B41CDCCCCCCA5CD2941676666E69DD93B4133333333A9CD2941333333B3D5D83B4100000000E1CC2941CDCCCCCCD4D83B4133333333DFCC29410000000039D93B41F61B1C4351CB29416C97083637D93B4101030000000100000005000000CDCCCCCCE7CC29416766666644D73B4100000000B0CD2941CDCCCC4C45D73B4167666666B3CD29419A9999197DD63B4133333333EBCC2941333333337CD63B41CDCCCCCCE7CC29416766666644D73B410103000000010000000500000067666666FECF294100000080A0D93B419A999999FCCF29419A99999904DA3B41CDCCCCCCC4D029410000008005DA3B419A999999C6D0294167666666A1D93B4167666666FECF294100000080A0D93B41010300000001000000050000009A99999968CB29419A99999959D33B41CDCCCCCC66CB2941333333B3BDD33B41000000002FCC29419A999999BED33B41CDCCCCCC30CC2941000000805AD33B419A99999968CB29419A99999959D33B4101030000000100000005000000CDCCCCCC66CB2941333333B3BDD33B413333333365CB2941CDCCCCCC21D43B41676666662DCC2941333333B322D43B41000000002FCC29419A999999BED33B41CDCCCCCC66CB2941333333B3BDD33B4101030000000100000005000000333333335ECB2941CDCCCC4CB2D53B419A9999995CCB29416766666616D63B41CDCCCCCC24CC29413333333317D63B416766666626CC29419A999919B3D53B41333333335ECB2941CDCCCC4CB2D53B4101030000000100000005000000676666661ACC2941676666E66FD83B41CDCCCCCC18CC294100000000D4D83B4100000000E1CC2941CDCCCCCCD4D83B419A999999E2CC2941333333B370D83B41676666661ACC2941676666E66FD83B41010300000001000000050000003333333352CB2941000000006FD83B419A99999950CB29419A999919D3D83B41CDCCCCCC18CC294100000000D4D83B41676666661ACC2941676666E66FD83B413333333352CB2941000000006FD83B41010300000001000000050000009A9999991FCC29419A99999943D73B41CDCCCCCC1DCC2941333333B3A7D73B4100000000E6CC294100000080A8D73B41CDCCCCCCE7CC29416766666644D73B419A9999991FCC29419A99999943D73B41010300000001000000050000006766666626CC29419A999919B3D53B41CDCCCCCC24CC29413333333317D63B4100000000EDCC29419A99991918D63B419A999999EECC294100000000B4D53B416766666626CC29419A999919B3D53B41010300000001000000050000000000000045D329419A99999909D13B41CDCCCCCC3FD32941676666E635D23B410000000008D42941CDCCCCCC36D23B41333333330DD42941676666660AD13B410000000045D329419A99999909D13B4101030000000100000005000000CDCCCCCC25E92941676666E64DD23B410000000024E9294100000000B2D23B4167666666ECE92941676666E6B2D23B4100000000EEE92941CDCCCCCC4ED23B41CDCCCCCC25E92941676666E64DD23B41010300000001000000090000000000000061E82941676666E684D13B419A9999995DE829419A9999194DD23B41CDCCCCCC25E92941676666E64DD23B410000000024E9294100000000B2D23B4167666666ECE92941676666E6B2D23B41CDCCCCCCEFE92941333333B3EAD13B419A99999927E92941CDCCCCCCE9D13B413333333329E92941333333B385D13B410000000061E82941676666E684D13B410103000000010000000500000033333333F4F729419A9999197FD53B4167666666F2F7294133333333E3D53B419A999999BAF829419A999919E4D53B4167666666BCF82941676666E67FD53B4133333333F4F729419A9999197FD53B41010300000001000000050000009A99999937FE2941676666E621D53B41CDCCCCCC35FE29410000000086D53B4100000000FEFE2941CDCCCCCC86D53B41CDCCCCCCFFFE2941333333B322D53B419A99999937FE2941676666E621D53B4101030000000100000005000000CDCCCCCCB3F829410000008074D73B4100000000B2F829419A999999D8D73B41333333337AF9294167666666D9D73B41000000007CF92941CDCCCC4C75D73B41CDCCCCCCB3F829410000008074D73B410103000000010000000500000033333333B7F82941CDCCCC4CACD63B4167666666B5F829416766666610D73B419A9999997DF929413333333311D73B41676666667FF929419A999919ADD63B4133333333B7F82941CDCCCC4CACD63B41010300000001000000050000009A9999990EF429419A999999B2D43B41CDCCCCCC0CF42941333333B316D53B4100000000D5F429410000008017D53B41CDCCCCCCD6F4294167666666B3D43B419A9999990EF429419A999999B2D43B41010300000001000000060000003FEEBC828BF52941D106B41C20D93B415C8FC2751EF629419A99991925D93B419142BA4F53F629415C1B0BE439D93B413333333354F62941CDCCCC4C02D93B41000000008CF529410000008001D93B413FEEBC828BF52941D106B41C20D93B41010300000001000000050000006766666645FE29410000000001D23B41CDCCCCCC41FE294133333333C9D23B41000000000AFF29419A999919CAD23B419A9999990DFF2941676666E601D23B416766666645FE29410000000001D23B41010300000001000000090000006766666626FE2941676666E60AD93B419A99999924FE2941000000006FD93B41676666665CFD2941333333336ED93B410000000059FD29416766666636DA3B413333333321FE29413333333337DA3B410000000023FE29419A999919D3D93B4133333333EBFE294100000000D4D93B419A999999EEFE2941CDCCCCCC0BD93B416766666626FE2941676666E60AD93B41010300000001000000070000009A999999AAFC2941676666E657D43B4167666666A5FC29413333333384D53B419A9999996DFD29419A99991985D53B410000000071FD2941676666E6BCD43B413333333339FE2941333333B3BDD43B41000000003BFE29419A99999959D43B419A999999AAFC2941676666E657D43B41010300000001000000050000009A9999999EFC2941333333B314D73B416766666699FC29410000000041D83B419A99999961FD2941CDCCCCCC41D83B41CDCCCCCC66FD29410000008015D73B419A9999999EFC2941333333B314D73B410103000000010000000500000033333333C1FF294100000000B4D63B4167666666BFFF29419A99991918D73B41CDCCCCCC4F012A41CDCCCCCC19D73B419A99999951012A41333333B3B5D63B4133333333C1FF294100000000B4D63B4101030000000100000005000000CDCCCCCCCAF429413333333370D73B4100000000C9F42941CDCCCC4CD4D73B413333333391F5294133333333D5D73B410000000093F529410000000071D73B41CDCCCCCCCAF429413333333370D73B4101030000000100000005000000676666660CFB29419A99991977D73B419A9999990AFB294133333333DBD73B4100000000D3FB294100000000DCD73B419A999999D4FB2941676666E677D73B41676666660CFB29419A99991977D73B410103000000010000000500000000000000EFF7294167666666ABD63B4133333333EDF72941000000800FD73B4167666666B5F829416766666610D73B4133333333B7F82941CDCCCC4CACD63B4100000000EFF7294167666666ABD63B41010300000001000000050000000000000088F929419A999999B8D43B413333333386F92941333333B31CD53B41676666664EFA29419A9999991DD53B413333333350FA294100000080B9D43B410000000088F929419A999999B8D43B4101030000000100000005000000CDCCCCCC29FE2941333333B342D83B413333333328FE2941CDCCCCCCA6D83B4167666666F0FE2941333333B3A7D83B4100000000F2FE29419A99999943D83B41CDCCCCCC29FE2941333333B342D83B4101030000000100000005000000CDCCCCCC66FD29410000008015D73B41000000002FFE29416766666616D73B419A99999930FE2941CDCCCC4CB2D63B416766666668FD294167666666B1D63B41CDCCCCCC66FD29410000008015D73B41010300000001000000050000003333333340FE2941CDCCCC4C2DD33B416766666608FF2941333333332ED33B41000000000AFF29419A999919CAD23B41CDCCCCCC41FE294133333333C9D23B413333333340FE2941CDCCCC4C2DD33B410103000000010000000500000067666666CFFB294133333333A4D83B41CDCCCCCCCDFB2941CDCCCC4C08D93B410000000096FC29413333333309D93B419A99999997FC29419A999919A5D83B4167666666CFFB294133333333A4D83B4101030000000100000005000000CDCCCCCC03FB29419A9999996BD93B413333333302FB2941333333B3CFD93B4167666666CAFB29419A999999D0D93B4100000000CCFB2941000000806CD93B41CDCCCCCC03FB29419A9999996BD93B4101030000000100000005000000CDCCCCCCE9F72941333333B3D7D73B4133333333E8F72941CDCCCCCC3BD83B4167666666B0F82941333333B33CD83B4100000000B2F829419A999999D8D73B41CDCCCCCCE9F72941333333B3D7D73B410103000000010000000500000033333333C6FF2941333333B387D53B419A999999C4FF2941CDCCCCCCEBD53B41CDCCCCCC8C002A419A999999ECD53B41676666668E002A410000008088D53B4133333333C6FF2941333333B387D53B410103000000010000000500000067666666B5F829416766666610D73B41CDCCCCCCB3F829410000008074D73B41000000007CF92941CDCCCC4C75D73B419A9999997DF929413333333311D73B4167666666B5F829416766666610D73B410103000000010000000500000067666666F5FE2941676666667BD73B41CDCCCCCCF3FE294100000080DFD73B4100000000BCFF2941CDCCCC4CE0D73B419A999999BDFF2941333333337CD73B4167666666F5FE2941676666667BD73B410103000000010000000500000085525C03E1F729415815C0FDD7D93B41A74E7FD6A8F829417A578344F0D93B4167666666A9F829419A999919CDD93B4133333333E1F72941CDCCCC4CCCD93B4185525C03E1F729415815C0FDD7D93B41010300000001000000050000008C30C5903DF92941E4B88EDF31DA3B4190C2F5A84CF92941676666E639DA3B4180005DA16FF9294157E173A846DA3B410000000070F929419A99991932DA3B418C30C5903DF92941E4B88EDF31DA3B4101030000000100000004000000B50F21852BFA2941642C140D97DA3B4162DE6B5136FA29415677133A9CDA3B416766666636FA29419A99991997DA3B41B50F21852BFA2941642C140D97DA3B410103000000010000000700000067666666F0FE2941333333B3A7D83B41CDCCCCCCECFE2941676666E66FD93B4133333333B5FF2941333333B370D93B41CDCCCCCCB6FF29419A9999990CD93B41000000007F002A41000000800DD93B41CDCCCCCC80002A4167666666A9D83B4167666666F0FE2941333333B3A7D83B4101030000000100000005000000333333339DF529416766666618D53B41676666669BF52941000000807CD53B41000000002CF72941333333337ED53B419A9999992DF729419A9999191AD53B41333333339DF529416766666618D53B41010300000001000000050000006766666601FF29419A999999BED43B41CDCCCCCCFFFE2941333333B322D53B4100000000C8FF29419A99999923D53B41CDCCCCCCC9FF294100000080BFD43B416766666601FF29419A999999BED43B41010300000001000000050000000000000048F329419A9999994DD43B413333333346F32941333333B3B1D43B419A9999990EF429419A999999B2D43B413333333310F42941000000804ED43B410000000048F329419A9999994DD43B4101030000000100000005000000CDCCCCCCF0F72941CDCCCC4C47D63B4100000000EFF7294167666666ABD63B4133333333B7F82941CDCCCC4CACD63B4100000000B9F829413333333348D63B41CDCCCCCCF0F72941CDCCCC4C47D63B41010300000001000000050000000000000020F72941000000003BD83B41333333331EF729419A9999199FD83B4167666666E6F72941676666E69FD83B4133333333E8F72941CDCCCCCC3BD83B410000000020F72941000000003BD83B4101030000000100000005000000676666667CF229410000000015D53B419A9999997AF229419A99991979D53B41CDCCCCCC42F32941676666E679D53B419A99999944F32941CDCCCCCC15D53B41676666667CF229410000000015D53B4101030000000100000005000000676666663FF329413333333342D63B41CDCCCCCC3DF32941CDCCCC4CA6D63B410000000006F429419A999919A7D63B419A99999907F429410000000043D63B41676666663FF329413333333342D63B41010300000001000000050000003333333384002A4133333333E1D73B416766666682002A41CDCCCC4C45D83B419A9999994A012A419A99991946D83B41676666664C012A4100000000E2D73B413333333384002A4133333333E1D73B4101030000000100000008000000952BAF0D6FF2294112B888761FD83B41A4703D8AABF22941A4703D0A36D83B41DDE5450736F32941F27BB10B69D83B41333333333AF32941000000806ED73B41CDCCCCCCA9F12941CDCCCCCC6CD73B4133333333A8F12941676666E6D0D73B416766666670F22941333333B3D1D73B41952BAF0D6FF2294112B888761FD83B4101030000000100000005000000A3AA38FFB6F329417B3D2D629BD83B41676666E6D9F3294185EB5178A9D83B41A58D8AEDFCF3294113744AF4B5D83B4167666666FDF32941333333B39BD83B41A3AA38FFB6F329417B3D2D629BD83B41010300000001000000080000001C87B5D6C3F42941BA598B72FED83B41CDCCCC4C10F52941E17A14EE1BD93B413FEEBC828BF52941D106B41C20D93B41000000008CF529410000008001D93B413333333354F62941CDCCCC4C02D93B410000000056F62941333333339ED83B419A999999C5F42941000000809CD83B411C87B5D6C3F42941BA598B72FED83B41010300000001000000050000003333333346F32941333333B3B1D43B419A99999944F32941CDCCCCCC15D53B41CDCCCCCC0CF42941333333B316D53B419A9999990EF429419A999999B2D43B413333333346F32941333333B3B1D43B4101030000000100000005000000CDCCCCCCBFF82941333333B3B7D43B4100000000BEF82941CDCCCCCC1BD53B413333333386F92941333333B31CD53B410000000088F929419A999999B8D43B41CDCCCCCCBFF82941333333B3B7D43B4101030000000100000005000000000000003BFE29419A99999959D43B413333333339FE2941333333B3BDD43B416766666601FF29419A999999BED43B413333333303FF2941000000805AD43B41000000003BFE29419A99999959D43B41010300000001000000050000009A9999997AF229419A99991979D53B410000000079F2294133333333DDD53B413333333341F3294100000000DED53B41CDCCCCCC42F32941676666E679D53B419A9999997AF229419A99991979D53B4101030000000100000005000000340A5B1FA8F129411EC0F735D5D73B41D7AC83006FF22941A6499E711FD83B416766666670F22941333333B3D1D73B4133333333A8F12941676666E6D0D73B41340A5B1FA8F129411EC0F735D5D73B41010300000001000000050000003333333310F42941000000804ED43B419A9999990EF429419A999999B2D43B41CDCCCCCCD6F4294167666666B3D43B4167666666D8F42941CDCCCC4C4FD43B413333333310F42941000000804ED43B4101030000000100000005000000333333332AF72941CDCCCC4CE2D53B416766666628F729416766666646D63B41CDCCCCCCF0F72941CDCCCC4C47D63B4167666666F2F7294133333333E3D53B41333333332AF72941CDCCCC4CE2D53B41010300000001000000050000000000000095EE29419A999999ACD43B419A99999991EE2941CDCCCCCC74D53B41CDCCCCCC59EF29419A99999975D53B41333333335DEF294167666666ADD43B410000000095EE29419A999999ACD43B4101030000000300000034000000D1205A6136FA29413A48B6419CDA3B419A99999992FA29415C8FC275C8DA3B41676666E6CAFA2941E17A14AEBADA3B41B81E85EB0CFB294185EB51F8BDDA3B41E17A14AE64FB2941EC51B85ED1DA3B410AD7A3F064FB29419A999959C2DA3B41295C8FC2C8FB2941CDCCCCCCD3DA3B41C3F5285C0CFC2941EC51B81EF0DA3B410AD7A37037FC2941EC51B85E28DB3B41CDCCCCCC9AFC2941713D0AD754DB3B41295C8F42D0FC2941C3F5281C77DB3B41EC51B89E07FD294167666666A0DB3B410C26313B1DFD2941BB46D78FC6DB3B413333333352FD2941CDCCCCCCC6DB3B410E89AC2551FD2941A434715901DC3B4152B81E0554FD2941713D0AD703DC3B41F6285C0F6FFD294152B81E053DDC3B41713D0AD7C5FD2941AE47E17A8ADC3B41905FB07D12FE2941A4C37FE18FDC3B41694AC41FEBFE2941F1DFF5CC90DC3B419A999919F0FE2941295C8FC28FDC3B41333333332DFF2941333333F352DC3B41AE47E1FA8DFF29411F85EB512CDC3B4190C2F5A81A002A413E0AD7E30DDC3B41B1AE034A72002A4160B347E6F8DB3B416766666676002A410000000002DB3B4133333333AEFF29413333333301DB3B4100000000B0FF29419A9999199DDA3B413333333378002A41676666E69DDA3B41CDCCCCCC79002A41CDCCCCCC39DA3B410000000042012A41333333B33ADA3B41CDCCCCCC43012A419A999999D6D93B41000000000C022A4167666666D7D93B41CDCCCCCC0D022A41CDCCCC4C73D93B419A99999945012A410000008072D93B410000000049012A4133333333AAD83B413333333311022A419A999919ABD83B41CDCCCCCC12022A410000000047D83B416766666682002A41CDCCCC4C45D83B413333333384002A4133333333E1D73B41CDCCCCCCF3FE294100000080DFD73B4167666666F5FE2941676666667BD73B41333333332DFE2941000000807AD73B41000000002FFE29416766666616D73B41CDCCCCCC66FD29410000008015D73B419A99999961FD2941CDCCCCCC41D83B416766666699FC29410000000041D83B410000000096FC29413333333309D93B41CDCCCCCCCDFB2941CDCCCC4C08D93B4167666666CAFB29419A999999D0D93B41CDCCCCCC39FA2941CDCCCCCCCED93B41D1205A6136FA29413A48B6419CDA3B4105000000CDCCCCCCF3FE294100000080DFD73B4167666666F0FE2941333333B3A7D83B413333333328FE2941CDCCCCCCA6D83B419A9999992BFE29419A999999DED73B41CDCCCCCCF3FE294100000080DFD73B410F00000067666666F0FE2941333333B3A7D83B41CDCCCCCC80002A4167666666A9D83B41000000007F002A41000000800DD93B41CDCCCCCCB6FF29419A9999990CD93B4133333333B5FF2941333333B370D93B41CDCCCCCCECFE2941676666E66FD93B4133333333EBFE294100000000D4D93B410000000023FE29419A999919D3D93B413333333321FE29413333333337DA3B410000000059FD29416766666636DA3B41676666665CFD2941333333336ED93B419A99999924FE2941000000006FD93B416766666626FE2941676666E60AD93B419A999999EEFE2941CDCCCCCC0BD93B4167666666F0FE2941333333B3A7D83B410103000000010000001700000067666666D6FB2941CDCCCCCC13D73B4100000000D3FB294100000000DCD73B416766666642FA2941CDCCCC4CDAD73B413333333344FA29413333333376D73B41000000007CF92941CDCCCC4C75D73B41333333337AF9294167666666D9D73B4100000000B2F829419A999999D8D73B4167666666B0F82941333333B33CD83B4133333333E8F72941CDCCCCCC3BD83B4167666666E6F72941676666E69FD83B41333333331EF729419A9999199FD83B41676666661CF729413333333303D93B419A999999E4F729419A99991904D93B4100000000E3F729413333333368D93B4133333333ABF829410000000069D93B4100000000ADF82941676666E604D93B41676666663DFA29419A99999906D93B41000000003FFA294100000080A2D83B4167666666CFFB294133333333A4D83B4133333333D1FB29419A99991940D83B416766666699FC29410000000041D83B419A9999999EFC2941333333B314D73B4167666666D6FB2941CDCCCCCC13D73B4101030000000100000009000000000000004BFA2941CDCCCCCCE5D53B413333333313FB29419A999999E6D53B419A99999911FB2941333333B34AD63B4100000000A2FC2941000000804CD63B41CDCCCCCCA3FC2941CDCCCC4CE8D53B41000000006CFD294133333333E9D53B419A9999996DFD29419A99991985D53B41CDCCCCCC4CFA2941333333B381D53B41000000004BFA2941CDCCCCCCE5D53B4101030000000100000007000000CDCCCCCC0BFF29410000000066D23B416766666608FF2941333333332ED33B413333333340FE2941CDCCCC4C2DD33B41CDCCCCCC3CFE294100000080F5D33B4133333333CDFF294133333333F7D33B4100000000D4FF2941CDCCCCCC66D23B41CDCCCCCC0BFF29410000000066D23B410103000000010000000700000000000000C9F42941CDCCCC4CD4D73B4133333333C7F429416766666638D83B4100000000FFF329410000008037D83B4167666666FDF32941333333B39BD83B41CDCCCCCC8DF52941676666669DD83B413333333391F5294133333333D5D73B4100000000C9F42941CDCCCC4CD4D73B4101030000000100000005000000CDCCCCCCB0F12941CDCCCC4CDCD53B410000000079F2294133333333DDD53B41676666667CF229410000000015D53B4133333333B4F129419A99991914D53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4101030000000100000005000000333333331AFB29413333333356D43B41CDCCCCCC16FB2941676666661ED53B4100000000DFFB2941CDCCCC4C1FD53B4167666666E2FB29419A99991957D43B41333333331AFB29413333333356D43B4101030000000100000005000000676666667CF229410000000015D53B419A99999944F32941CDCCCCCC15D53B410000000048F329419A9999994DD43B41CDCCCCCC7FF22941CDCCCCCC4CD43B41676666667CF229410000000015D53B41010300000001000000050000000000000071FD2941676666E6BCD43B41676666666FFD29410000000021D53B41CDCCCCCCFFFE2941333333B322D53B416766666601FF29419A999999BED43B410000000071FD2941676666E6BCD43B41010300000001000000050000000000000047FE2941676666E69CD13B416766666645FE29410000000001D23B419A9999990DFF2941676666E601D23B41333333330FFF2941333333B39DD13B410000000047FE2941676666E69CD13B41010300000001000000050000006766666632FE2941333333334ED63B419A99999930FE2941CDCCCC4CB2D63B4100000000F9FE29419A999919B3D63B419A999999FAFE2941000000004FD63B416766666632FE2941333333334ED63B4101030000000100000005000000000000003CF32941676666660AD73B41333333333AF32941000000806ED73B416766666602F42941CDCCCC4C6FD73B413333333304F42941333333330BD73B41000000003CF32941676666660AD73B41010300000001000000050000006766666673F92941676666E669D93B419A99999971F9294100000000CED93B41CDCCCCCC39FA2941CDCCCCCCCED93B419A9999993BFA2941333333B36AD93B416766666673F92941676666E669D93B41010300000001000000050000006766666649FA2941676666E649D63B419A99999947FA294100000000AED63B41CDCCCCCC0FFB2941CDCCCCCCAED63B419A99999911FB2941333333B34AD63B416766666649FA2941676666E649D63B410103000000010000000500000067666666CBFF2941676666665BD43B41CDCCCCCCC9FF294100000080BFD43B410000000092002A41CDCCCC4CC0D43B419A99999993002A41333333335CD43B4167666666CBFF2941676666665BD43B4101030000000100000005000000676666664EFA29419A9999991DD53B41CDCCCCCC4CFA2941333333B381D53B4133333333DDFB29416766666683D53B4100000000DFFB2941CDCCCC4C1FD53B41676666664EFA29419A9999991DD53B41010300000001000000050000009A9999993BFA2941333333B36AD93B41CDCCCCCC39FA2941CDCCCCCCCED93B413333333302FB2941333333B3CFD93B41CDCCCCCC03FB29419A9999996BD93B419A9999993BFA2941333333B36AD93B41010300000001000000050000003333333344FA29413333333376D73B416766666642FA2941CDCCCC4CDAD73B419A9999990AFB294133333333DBD73B41676666660CFB29419A99991977D73B413333333344FA29413333333376D73B41010300000001000000050000003333333347012A41676666660ED93B419A99999945012A410000008072D93B41CDCCCCCC0D022A41CDCCCC4C73D93B41676666660F022A41333333330FD93B413333333347012A41676666660ED93B4101030000000100000005000000676666668E002A410000008088D53B41CDCCCCCC8C002A419A999999ECD53B410000000055012A4100000080EDD53B41CDCCCCCC56012A416766666689D53B41676666668E002A410000008088D53B4101030000000100000005000000676666663DFA29419A99999906D93B419A9999993BFA2941333333B36AD93B4100000000CCFB2941000000806CD93B41CDCCCCCCCDFB2941CDCCCC4C08D93B41676666663DFA29419A99999906D93B4101030000000100000005000000676666667BFD29413333333364D23B419A99999979FD294167666666C8D23B41CDCCCCCC41FE294133333333C9D23B419A99999943FE29419A99991965D23B41676666667BFD29413333333364D23B4101030000000100000005000000CDCCCCCCA3FC2941CDCCCC4CE8D53B4100000000A2FC2941000000804CD63B41333333336AFD2941CDCCCC4C4DD63B41000000006CFD294133333333E9D53B41CDCCCCCCA3FC2941CDCCCC4CE8D53B410103000000010000000500000000000000D4FF2941CDCCCCCC66D23B4133333333D2FF2941676666E6CAD23B419A9999999A002A41CDCCCCCCCBD23B41333333339C002A41333333B367D23B4100000000D4FF2941CDCCCCCC66D23B4101030000000100000005000000000000008B002A41333333B350D63B416766666689002A41676666E6B4D63B419A99999951012A41333333B3B5D63B413333333353012A419A99999951D63B41000000008B002A41333333B350D63B41010300000001000000050000009A9999992BFE29419A999999DED73B41CDCCCCCC29FE2941333333B342D83B4100000000F2FE29419A99999943D83B41CDCCCCCCF3FE294100000080DFD73B419A9999992BFE29419A999999DED73B4101030000000100000005000000333333330EFB29410000000013D73B41676666660CFB29419A99991977D73B419A999999D4FB2941676666E677D73B4167666666D6FB2941CDCCCCCC13D73B41333333330EFB29410000000013D73B410103000000010000000500000033333333A0FC29419A999999B0D63B419A9999999EFC2941333333B314D73B41CDCCCCCC66FD29410000008015D73B416766666668FD294167666666B1D63B4133333333A0FC29419A999999B0D63B41010300000001000000050000009A999999E0FB294133333333BBD43B4100000000DFFB2941CDCCCC4C1FD53B4133333333A7FC29419A99991920D53B41CDCCCCCCA8FC294100000000BCD43B419A999999E0FB294133333333BBD43B4101030000000100000005000000676666667FF929419A999919ADD63B419A9999997DF929413333333311D73B410000000046FA29419A99991912D73B419A99999947FA294100000000AED63B41676666667FF929419A999919ADD63B41010300000001000000050000009A99999907F429410000000043D63B410000000006F429419A999919A7D63B4133333333CEF4294100000000A8D63B41CDCCCCCCCFF42941676666E643D63B419A99999907F429410000000043D63B41010300000001000000050000000000000062F6294100000080E1D53B413333333360F629419A99999945D63B416766666628F729416766666646D63B41333333332AF72941CDCCCC4CE2D53B410000000062F6294100000080E1D53B41010300000001000000050000009A9999996DFD29419A99991985D53B41000000006CFD294133333333E9D53B413333333334FE29419A999919EAD53B41CDCCCCCC35FE29410000000086D53B419A9999996DFD29419A99991985D53B41010300000001000000050000000000000046FA29419A99991912D73B413333333344FA29413333333376D73B41676666660CFB29419A99991977D73B41333333330EFB29410000000013D73B410000000046FA29419A99991912D73B41010300000001000000070000006766666632FE2941333333334ED63B41CDCCCCCCC2FF2941676666E64FD63B4133333333C6FF2941333333B387D53B4100000000FEFE2941CDCCCCCC86D53B4167666666FCFE2941676666E6EAD53B413333333334FE29419A999919EAD53B416766666632FE2941333333334ED63B410103000000010000000500000000000000F9FE29419A999919B3D63B4167666666F5FE2941676666667BD73B419A999999BDFF2941333333337CD73B4133333333C1FF294100000000B4D63B4100000000F9FE29419A999919B3D63B4101030000000100000005000000CDCCCCCC89F929410000008054D43B410000000088F929419A999999B8D43B413333333350FA294100000080B9D43B410000000052FA2941CDCCCC4C55D43B41CDCCCCCC89F929410000008054D43B4101030000000100000005000000333333336AFD2941CDCCCC4C4DD63B416766666668FD294167666666B1D63B419A99999930FE2941CDCCCC4CB2D63B416766666632FE2941333333334ED63B41333333336AFD2941CDCCCC4C4DD63B410103000000010000000500000067666666F2F7294133333333E3D53B41CDCCCCCCF0F72941CDCCCC4C47D63B4100000000B9F829413333333348D63B419A999999BAF829419A999919E4D53B4167666666F2F7294133333333E3D53B41010300000001000000050000009A9999999F002A41000000809FD13B41CDCCCCCC67012A41CDCCCC4CA0D13B419A99999969012A41333333333CD13B4167666666A1002A41676666663BD13B419A9999999F002A41000000809FD13B410103000000010000000500000033333333CEF4294100000000A8D63B4167666666CCF429419A9999190CD73B419A99999994F52941676666E60CD73B416766666696F52941CDCCCCCCA8D63B4133333333CEF4294100000000A8D63B41010300000001000000050000009A99999979FD294167666666C8D23B410000000078FD2941000000802CD33B413333333340FE2941CDCCCC4C2DD33B41CDCCCCCC41FE294133333333C9D23B419A99999979FD294167666666C8D23B410103000000010000000500000009D4954E72002A4121682FE5F8DB3B41B62D0F573B012A41404082BDC8DB3B41000000003D012A410000000067DB3B41CDCCCCCC74002A419A99991966DB3B4109D4954E72002A4121682FE5F8DB3B41010300000001000000050000009A99999911FB2941333333B34AD63B41CDCCCCCC0FFB2941CDCCCCCCAED63B4100000000D8FB2941333333B3AFD63B41CDCCCCCCD9FB29419A9999994BD63B419A99999911FB2941333333B34AD63B410103000000010000000500000033333333EDF72941000000800FD73B419A999999EBF729419A99999973D73B41CDCCCCCCB3F829410000008074D73B4167666666B5F829416766666610D73B4133333333EDF72941000000800FD73B41010300000001000000050000009A99999930FE2941CDCCCC4CB2D63B41333333332DFE2941000000807AD73B4167666666F5FE2941676666667BD73B4100000000F9FE29419A999919B3D63B419A99999930FE2941CDCCCC4CB2D63B410103000000010000000500000067666666BFFF29419A99991918D73B419A999999BDFF2941333333337CD73B410000000086002A419A9999197DD73B419A99999987002A410000000019D73B4167666666BFFF29419A99991918D73B4101030000000100000005000000CDCCCCCC3CFE294100000080F5D33B41000000003BFE29419A99999959D43B413333333303FF2941000000805AD43B410000000005FF294167666666F6D33B41CDCCCCCC3CFE294100000080F5D33B4101030000000100000005000000676666666FFD29410000000021D53B419A9999996DFD29419A99991985D53B41CDCCCCCC35FE29410000000086D53B419A99999937FE2941676666E621D53B41676666666FFD29410000000021D53B410103000000010000000500000067666666E2FB29419A99991957D43B419A999999E0FB294133333333BBD43B41CDCCCCCCA8FC294100000000BCD43B419A999999AAFC2941676666E657D43B4167666666E2FB29419A99991957D43B410103000000010000000500000000000000F9FE29419A999919B3D63B4133333333C1FF294100000000B4D63B41CDCCCCCCC2FF2941676666E64FD63B419A999999FAFE2941000000004FD63B4100000000F9FE29419A999919B3D63B41010300000001000000050000009A9999990DFF2941676666E601D23B41CDCCCCCC0BFF29410000000066D23B4100000000D4FF2941CDCCCCCC66D23B41CDCCCCCCD5FF2941333333B302D23B419A9999990DFF2941676666E601D23B410103000000010000001C0000005BF6085B53F6294185D47DE839D93B4103E4CCC5C5F629415744F2EA66D93B41CDCCCCCC1AF72941CDCCCC4C67D93B417945A7351AF729415AEB3A2288D93B41676666E636F72941B81E856B93D93B41291E8C89BAF729419F1CFA15CCD93B4167666666A9F829419A999919CDD93B41A74E7FD6A8F829417A578344F0D93B41333333B3C9F82941295C8F42F4D93B418C30C5903DF92941E4B88EDF31DA3B410000000070F929419A99991932DA3B4180005DA16FF9294157E173A846DA3B41F6285C0FC4F929415C8FC27565DA3B41B50F21852BFA2941642C140D97DA3B416766666636FA29419A99991997DA3B41CDCCCCCC39FA2941CDCCCCCCCED93B419A99999971F9294100000000CED93B416766666673F92941676666E669D93B419A9999993BFA2941333333B36AD93B41676666663DFA29419A99999906D93B4100000000ADF82941676666E604D93B4133333333ABF829410000000069D93B4100000000E3F729413333333368D93B419A999999E4F729419A99991904D93B41676666661CF729413333333303D93B41333333331EF729419A9999199FD83B410000000056F62941333333339ED83B415BF6085B53F6294185D47DE839D93B4101030000000100000009000000DDE5450736F32941F27BB10B69D83B41F6285C8F66F32941B81E85EB7AD83B41A3AA38FFB6F329417B3D2D629BD83B4167666666FDF32941333333B39BD83B41CDCCCCCC00F4294167666666D3D73B4100000000C9F42941CDCCCC4CD4D73B41CDCCCCCCCAF429413333333370D73B41333333333AF32941000000806ED73B41DDE5450736F32941F27BB10B69D83B4101030000000100000005000000CDCCCCCC7EFD2941000000009CD13B41676666667BFD29413333333364D23B419A99999943FE29419A99991965D23B410000000047FE2941676666E69CD13B41CDCCCCCC7EFD2941000000009CD13B4101030000000100000005000000333333330FFF2941333333B39DD13B419A9999990DFF2941676666E601D23B41CDCCCCCCD5FF2941333333B302D23B4167666666D7FF29419A9999999ED13B41333333330FFF2941333333B39DD13B41010300000001000000050000009A99999984F92941CDCCCCCC80D53B41CDCCCCCC82F92941676666E6E4D53B41000000004BFA2941CDCCCCCCE5D53B41CDCCCCCC4CFA2941333333B381D53B419A99999984F92941CDCCCCCC80D53B4101030000000100000006000000A58D8AEDFCF3294113744AF4B5D83B4152B81E058DF42941F6285C4FE9D83B411C87B5D6C3F42941BA598B72FED83B419A999999C5F42941000000809CD83B4167666666FDF32941333333B39BD83B41A58D8AEDFCF3294113744AF4B5D83B4101030000000100000005000000000000004BFA2941CDCCCCCCE5D53B416766666649FA2941676666E649D63B419A99999911FB2941333333B34AD63B413333333313FB29419A999999E6D53B41000000004BFA2941CDCCCCCCE5D53B4101030000000100000005000000676666668FF52941CDCCCC4C39D83B41CDCCCCCC8DF52941676666669DD83B410000000056F62941333333339ED83B419A99999957F629419A9999193AD83B41676666668FF52941CDCCCC4C39D83B4101030000000100000005000000CDCCCCCCD9FB29419A9999994BD63B4100000000D8FB2941333333B3AFD63B4133333333A0FC29419A999999B0D63B4100000000A2FC2941000000804CD63B41CDCCCCCCD9FB29419A9999994BD63B41010300000001000000050000000C26313B1DFD2941BB46D78FC6DB3B41F6285C8F2CFD294115AE47A1E1DB3B410E89AC2551FD2941A434715901DC3B413333333352FD2941CDCCCCCCC6DB3B410C26313B1DFD2941BB46D78FC6DB3B4101030000000100000005000000CDCCCCCC98002A41676666E62FD33B410000000097002A410000000094D33B41333333335F012A41676666E694D33B410000000061012A41333333B330D33B41CDCCCCCC98002A41676666E62FD33B410103000000010000000500000033333333CDFF294133333333F7D33B4167666666CBFF2941676666665BD43B419A99999993002A41333333335CD43B416766666695002A419A999919F8D33B4133333333CDFF294133333333F7D33B41010300000001000000070000006766666623F72941CDCCCCCC72D73B410000000020F72941000000003BD83B4133333333E8F72941CDCCCCCC3BD83B41CDCCCCCCE9F72941333333B3D7D73B4100000000B2F829419A999999D8D73B41CDCCCCCCB3F829410000008074D73B416766666623F72941CDCCCCCC72D73B41010300000001000000050000003333333378002A41676666E69DDA3B41CDCCCCCC74002A419A99991966DB3B41000000003D012A410000000067DB3B416766666640012A41CDCCCCCC9EDA3B413333333378002A41676666E69DDA3B4101030000000100000005000000000000003FFA294100000080A2D83B41676666663DFA29419A99999906D93B41CDCCCCCCCDFB2941CDCCCC4C08D93B4167666666CFFB294133333333A4D83B41000000003FFA294100000080A2D83B410103000000010000000500000067666666CFFB294133333333A4D83B419A99999997FC29419A999919A5D83B416766666699FC29410000000041D83B4133333333D1FB29419A99991940D83B4167666666CFFB294133333333A4D83B410103000000010000000500000067666666CCF429419A9999190CD73B41CDCCCCCCCAF429413333333370D73B410000000093F529410000000071D73B419A99999994F52941676666E60CD73B4167666666CCF429419A9999190CD73B410103000000010000000400000082A61DCFC5F629415A639CEE66D93B417945A7351AF729415AEB3A2288D93B41CDCCCCCC1AF72941CDCCCC4C67D93B4182A61DCFC5F629415A639CEE66D93B41010300000001000000050000006307CBA1BAF729417FFF6920CCD93B410AD7A3F0D1F7294190C2F528D6D93B4185525C03E1F729415815C0FDD7D93B4133333333E1F72941CDCCCC4CCCD93B416307CBA1BAF729417FFF6920CCD93B4101030000000100000005000000CDCCCCCCC2FF2941676666E64FD63B4133333333C1FF294100000000B4D63B416766666689002A41676666E6B4D63B41000000008B002A41333333B350D63B41CDCCCCCCC2FF2941676666E64FD63B4101030000000100000005000000333333336AFD2941CDCCCC4C4DD63B416766666632FE2941333333334ED63B413333333334FE29419A999919EAD53B41000000006CFD294133333333E9D53B41333333336AFD2941CDCCCC4C4DD63B410103000000010000000500000033333333A0FC29419A999999B0D63B416766666668FD294167666666B1D63B41333333336AFD2941CDCCCC4C4DD63B4100000000A2FC2941000000804CD63B4133333333A0FC29419A999999B0D63B410103000000010000000500000000000000DFFB2941CDCCCC4C1FD53B4133333333DDFB29416766666683D53B4167666666A5FC29413333333384D53B4133333333A7FC29419A99991920D53B4100000000DFFB2941CDCCCC4C1FD53B410103000000010000000500000000000000D8FB2941333333B3AFD63B4167666666D6FB2941CDCCCCCC13D73B419A9999999EFC2941333333B314D73B4133333333A0FC29419A999999B0D63B4100000000D8FB2941333333B3AFD63B41010300000001000000050000003333333334FE29419A999919EAD53B4167666666FCFE2941676666E6EAD53B4100000000FEFE2941CDCCCCCC86D53B41CDCCCCCC35FE29410000000086D53B413333333334FE29419A999919EAD53B410103000000010000001700000011698D2F1AF02941649FACBB3CD73B41000000806EF029419A99995962D73B41CE7AB6AA8AF02941CA615A826BD73B419A999999E1F02941676666E66BD73B4100000000E5F02941333333B3A3D63B4133333333ADF1294100000080A4D63B41CDCCCCCCA9F12941CDCCCCCC6CD73B41333333333AF32941000000806ED73B41000000003CF32941676666660AD73B413333333304F42941333333330BD73B416766666602F42941CDCCCC4C6FD73B41CDCCCCCCCAF429413333333370D73B4133333333CEF4294100000000A8D63B41CDCCCCCC3DF32941CDCCCC4CA6D63B41676666663FF329413333333342D63B413333333377F22941CDCCCC4C41D63B410000000079F2294133333333DDD53B41CDCCCCCCB0F12941CDCCCC4CDCD53B4100000000AFF129416766666640D63B41CDCCCCCCE6F029419A9999993FD63B4167666666E8F0294100000080DBD53B413333333320F029419A999999DAD53B4111698D2F1AF02941649FACBB3CD73B4101030000000100000007000000676666663FF329413333333342D63B410000000098F52941333333B344D63B41676666669BF52941000000807CD53B4133333333D3F42941333333B37BD53B4100000000D5F429410000008017D53B419A99999944F32941CDCCCCCC15D53B41676666663FF329413333333342D63B4101030000000100000009000000CDCCCCCC5CF62941CDCCCCCC0DD73B416766666659F6294100000000D6D73B413333333391F5294133333333D5D73B41676666668FF52941CDCCCC4C39D83B419A99999957F629419A9999193AD83B410000000056F62941333333339ED83B41333333331EF729419A9999199FD83B410000000025F72941333333B30ED73B41CDCCCCCC5CF62941CDCCCCCC0DD73B41010300000001000000050000000000000052FA2941CDCCCC4C55D43B41676666664EFA29419A9999991DD53B41CDCCCCCC16FB2941676666661ED53B41333333331AFB29413333333356D43B410000000052FA2941CDCCCC4C55D43B41010300000001000000050000000000000005FF294167666666F6D33B416766666601FF29419A999999BED43B41CDCCCCCCC9FF294100000080BFD43B4133333333CDFF294133333333F7D33B410000000005FF294167666666F6D33B41010300000001000000050000003333333360F629419A99999945D63B419A9999995EF62941333333B3A9D63B4100000000EFF7294167666666ABD63B41CDCCCCCCF0F72941CDCCCC4C47D63B413333333360F629419A99999945D63B410103000000010000000500000033333333CDFF294133333333F7D33B419A9999995D012A4100000000F9D33B41333333335F012A41676666E694D33B41CDCCCCCCCEFF29419A99991993D33B4133333333CDFF294133333333F7D33B4101030000000100000005000000CDCCCCCC00F4294167666666D3D73B4100000000FFF329410000008037D83B4133333333C7F429416766666638D83B4100000000C9F42941CDCCCC4CD4D73B41CDCCCCCC00F4294167666666D3D73B41010300000001000000050000003333333381F929410000000049D63B41676666667FF929419A999919ADD63B419A99999947FA294100000000AED63B416766666649FA2941676666E649D63B413333333381F929410000000049D63B41010300000001000000050000009A999999F7F72941676666E6B6D43B41CDCCCCCCF5F72941000000001BD53B4100000000BEF82941CDCCCCCC1BD53B41CDCCCCCCBFF82941333333B3B7D43B419A999999F7F72941676666E6B6D43B41010300000001000000050000000000000079F2294133333333DDD53B413333333377F22941CDCCCC4C41D63B41676666663FF329413333333342D63B413333333341F3294100000000DED53B410000000079F2294133333333DDD53B4101030000000100000005000000CE7AB6AA8AF02941CA615A826BD73B4148E17A14CCF029417B14AEC780D73B41632DB122E1F02941975893F588D73B419A999999E1F02941676666E66BD73B41CE7AB6AA8AF02941CA615A826BD73B410103000000010000000500000000000000B9F829413333333348D63B4133333333B7F82941CDCCCC4CACD63B41676666667FF929419A999919ADD63B413333333381F929410000000049D63B4100000000B9F829413333333348D63B41010300000001000000050000009A99999974FD2941333333B3F4D33B41CDCCCCCC72FD2941CDCCCCCC58D43B41000000003BFE29419A99999959D43B41CDCCCCCC3CFE294100000080F5D33B419A99999974FD2941333333B3F4D33B41 - - - -MULTIPOLYGON (((844640.8000000000465661 1822971.8000000000465661, 844639.9000000000232831 1823072.0000000000000000, 844539.8000000000465661 1823071.1000000000931323, 844539.0000000000000000 1823171.1999999999534339, 844639.0999999999767169 1823172.1000000000931323, 844638.2000000000698492 1823272.1999999999534339, 844738.3000000000465661 1823273.0000000000000000, 844838.4000000000232831 1823273.9000000001396984, 844839.3000000000465661 1823173.8000000000465661, 844841.0000000000000000 1822973.6000000000931323, 844740.9000000000232831 1822972.6999999999534339, 844640.8000000000465661 1822971.8000000000465661), (844740.9000000000232831 1822972.6999999999534339, 844739.2000000000698492 1823172.9000000001396984, 844740.0000000000000000 1823072.8000000000465661, 844740.9000000000232831 1822972.6999999999534339)), ((852149.7000000000698492 1822936.1000000000931323, 852148.8000000000465661 1823036.1999999999534339, 852048.7000000000698492 1823035.4000000001396984, 851948.5999999999767169 1823034.5000000000000000, 851947.7000000000698492 1823134.6000000000931323, 851847.5999999999767169 1823133.6999999999534339, 851848.5000000000000000 1823033.6000000000931323, 851748.4000000000232831 1823032.8000000000465661, 851747.5000000000000000 1823132.9000000001396984, 851647.4000000000232831 1823132.0000000000000000, 851645.7000000000698492 1823332.1999999999534339, 851644.8000000000465661 1823432.4000000001396984, 851644.0000000000000000 1823532.5000000000000000, 851744.0999999999767169 1823533.3000000000465661, 851742.4000000000232831 1823733.5000000000000000, 851942.5999999999767169 1823735.1999999999534339, 852142.8000000000465661 1823737.0000000000000000, 852242.9000000000232831 1823737.8000000000465661, 852242.0000000000000000 1823837.9000000001396984, 852342.0999999999767169 1823838.8000000000465661, 852343.0000000000000000 1823738.6999999999534339, 852343.9000000000232831 1823638.6000000000931323, 852243.8000000000465661 1823637.6999999999534339, 852244.5999999999767169 1823537.6000000000931323, 852344.7000000000698492 1823538.5000000000000000, 852345.5999999999767169 1823438.4000000001396984, 852346.4000000000232831 1823338.3000000000465661, 852446.5000000000000000 1823339.1000000000931323, 852447.4000000000232831 1823239.0000000000000000, 852347.3000000000465661 1823238.1000000000931323, 852348.2000000000698492 1823138.0000000000000000, 852448.3000000000465661 1823138.9000000001396984, 852449.0999999999767169 1823038.8000000000465661, 852349.0000000000000000 1823037.9000000001396984, 852349.9000000000232831 1822937.8000000000465661, 852249.8000000000465661 1822937.0000000000000000, 852149.7000000000698492 1822936.1000000000931323), (851747.5000000000000000 1823132.9000000001396984, 851746.7000000000698492 1823233.0000000000000000, 851745.8000000000465661 1823333.1000000000931323, 851747.5000000000000000 1823132.9000000001396984), (851844.2000000000698492 1823534.1999999999534339, 851845.0000000000000000 1823434.1000000000931323, 851845.9000000000232831 1823334.0000000000000000, 851844.2000000000698492 1823534.1999999999534339), (851944.3000000009778887 1823534.9999998814892024, 851944.3000000000465661 1823535.0000000000000000, 851944.2999999989988282 1823535.0000001164153218, 851944.3000000009778887 1823534.9999998814892024), (852045.3000000000465661 1823435.8000000000465661, 852145.4000000000232831 1823436.6000000000931323, 852245.5000000000000000 1823437.5000000000000000, 852045.3000000000465661 1823435.8000000000465661), (852246.3000000000465661 1823337.4000000001396984, 852248.0000000000000000 1823137.1999999999534339, 852247.2000000000698492 1823237.3000000000465661, 852246.3000000000465661 1823337.4000000001396984), (851943.4499961829278618 1823635.1004495162051171, 852043.5000000000000000 1823636.0000000000000000, 852143.5999999999767169 1823636.9000000001396984, 851943.4499961829278618 1823635.1004495162051171)), ((843138.3000000000465661 1823059.1000000000931323, 843139.2000000000698492 1822959.0000000000000000, 842939.0000000000000000 1822957.3000000000465661, 842738.7000000000698492 1822955.5000000000000000, 842737.8495794840855524 1823055.6995466686785221, 842637.8000000000465661 1823054.8000000000465661, 842537.7000000000698492 1823053.9000000001396984, 842437.5999999999767169 1823053.1000000000931323, 842329.6540499393595383 1823052.1657141472678632, 842379.2800000000279397 1823107.6000000000931323, 842436.4454971232917160 1823181.5063755111768842, 842452.5600000000558794 1823202.3400000000838190, 842472.4599999999627471 1823216.5200000000186265, 842472.1419695207150653 1823253.5901554452721030, 842471.7299999999813735 1823301.6100000001024455, 842485.1900000000605360 1823366.8000000000465661, 842509.9599999999627471 1823397.0500000000465661, 842558.7000000000698492 1823433.5100000000093132, 842678.2800000000279397 1823498.6100000001024455, 842697.1900000000605360 1823511.7800000000279397, 842714.1700000000419095 1823516.9299999999348074, 842747.2600000000093132 1823511.2099999999627471, 842881.0400000000372529 1823438.2700000000186265, 842931.3599999999860302 1823407.6699999999254942, 842972.6400000000139698 1823497.1200000001117587, 842995.7199999999720603 1823490.3100000000558794, 843046.9899999999906868 1823465.7199999999720603, 843133.3900000000139698 1823431.4199999999254942, 843135.0583509306889027 1823434.9636139289941639, 843158.9500000000698492 1823485.7099999999627471, 843179.6800000000512227 1823520.9199999999254942, 843195.3900000000139698 1823557.1000000000931323, 843197.7027817158959806 1823560.1727522832807153, 843233.7201772944536060 1823608.0253160321153700, 843253.7900000000372529 1823634.6899999999441206, 843290.0382458720123395 1823661.0534525145776570, 843344.3300000000745058 1823700.5400000000372529, 843432.4742545809131116 1823777.2083722923416644, 843434.3000000000465661 1823562.1999999999534339, 843534.5000000000000000 1823563.0000000000000000, 843535.3000000000465661 1823462.9000000001396984, 843536.2000000000698492 1823362.8000000000465661, 843436.0999999999767169 1823362.0000000000000000, 843336.0000000000000000 1823361.1000000000931323, 843335.0999999999767169 1823461.1999999999534339, 843334.2000000000698492 1823561.3000000000465661, 843234.0999999999767169 1823560.5000000000000000, 843235.8000000000465661 1823360.3000000000465661, 843237.5999999999767169 1823160.0000000000000000, 843137.5000000000000000 1823159.1999999999534339, 843138.3000000000465661 1823059.1000000000931323), (843137.5000000000000000 1823159.1999999999534339, 843135.7000000000698492 1823359.4000000001396984, 843136.5999999999767169 1823259.3000000000465661, 843137.5000000000000000 1823159.1999999999534339), (842787.0500000007450581 1823156.2000000001862645, 842837.0999999999767169 1823156.6000000000931323, 842937.2000000000698492 1823157.5000000000000000, 842787.0500000007450581 1823156.2000000001862645), (842635.2000000000698492 1823355.1000000000931323, 842835.4000000000232831 1823356.8000000000465661, 842735.3000000000465661 1823356.0000000000000000, 842635.2000000000698492 1823355.1000000000931323)), ((848944.5000000000000000 1823108.9000000001396984, 848942.8000000000465661 1823309.1000000000931323, 848941.0999999999767169 1823509.3000000000465661, 848940.2000000000698492 1823609.4000000001396984, 848939.4000000000232831 1823709.5000000000000000, 849039.5000000000000000 1823710.4000000001396984, 848839.3000000000465661 1823708.6000000000931323, 848739.2000000000698492 1823707.8000000000465661, 848438.8000000000465661 1823705.1999999999534339, 848439.7000000000698492 1823605.1000000000931323, 848339.5999999999767169 1823604.1999999999534339, 848239.5000000000000000 1823603.4000000001396984, 848238.6004495160887018 1823703.4500038172118366, 848138.5000000000000000 1823702.6000000000931323, 848038.4000000000232831 1823701.8000000000465661, 848037.5000000000000000 1823801.9000000001396984, 848137.6500033895717934 1823802.6996008253190666, 848136.8000000000465661 1823902.8000000000465661, 848236.9000000000232831 1823903.6999999999534339, 848237.8000000000465661 1823803.6000000000931323, 848437.9998201937414706 1823805.3199984552338719, 848437.0999999999767169 1823905.4000000001396984, 848537.2000000000698492 1823906.3000000000465661, 848637.3000000000465661 1823907.1000000000931323, 848638.1996403874363750 1823807.0399969106074423, 848738.3000000000465661 1823807.9000000001396984, 848737.4000000000232831 1823908.0000000000000000, 848736.8307372784474865 1823979.2289980300702155, 848757.1700000000419095 1823987.2099999999627471, 848796.1300000000046566 1823997.5500000000465661, 848798.2457518703304231 1824008.6234654255677015, 848936.8000000000465661 1824009.8000000000465661, 849036.9000000000232831 1824010.6999999999534339, 849036.0000000000000000 1824110.8000000000465661, 849136.0999999999767169 1824111.6000000000931323, 849135.3000000000465661 1824211.6999999999534339, 849227.4070192123763263 1824212.5281350379809737, 849235.4582774870796129 1824206.1182483835145831, 849236.3000000000465661 1824112.5000000000000000, 849237.0999999999767169 1824012.4000000001396984, 849337.2000000000698492 1824013.1999999999534339, 849338.0999999999767169 1823913.1000000000931323, 849338.9000000000232831 1823813.0000000000000000, 849238.8000000000465661 1823812.1999999999534339, 849239.7000000000698492 1823712.1000000000931323, 849240.5000000000000000 1823612.0000000000000000, 849241.4000000000232831 1823511.9000000001396984, 849242.3000000000465661 1823411.6999999999534339, 849243.0999999999767169 1823311.6000000000931323, 849143.0499966071220115 1823310.8003995732869953, 849143.9000000000232831 1823210.6999999999534339, 849043.8000000000465661 1823209.8000000000465661, 849044.5999999999767169 1823109.6999999999534339, 848944.5000000000000000 1823108.9000000001396984), (849039.5000000000000000 1823710.4000000001396984, 849040.3000000000465661 1823610.1999999999534339, 849140.4000000000232831 1823611.1000000000931323, 849139.5999999999767169 1823711.1999999999534339, 849039.5000000000000000 1823710.4000000001396984), (848737.4000000000232831 1823908.0000000000000000, 848837.5000000000000000 1823908.8000000000465661, 848937.5999999999767169 1823909.6999999999534339, 848737.4000000000232831 1823908.0000000000000000), (849137.0000000000000000 1824011.5000000000000000, 849138.7000000000698492 1823811.3000000000465661, 849137.9000000000232831 1823911.4000000001396984, 849137.0000000000000000 1824011.5000000000000000), (848488.0500002900371328 1823805.7500000025611371, 848571.4666664082324132 1823806.4666666644625366, 848538.0999999999767169 1823806.1999999999534339, 848488.0500002900371328 1823805.7500000025611371), (849038.5999999999767169 1823810.5000000000000000, 848938.5000000000000000 1823809.6000000000931323, 848838.4000000000232831 1823808.6999999999534339, 849038.5999999999767169 1823810.5000000000000000)), ((844932.7761059190379456 1823944.7908861120231450, 844927.9000000000232831 1823966.4000000001396984, 844926.1971254986710846 1823975.4433307987637818, 844920.5600000000558794 1824005.3800000001210719, 844914.2800000000279397 1824037.3600000001024455, 844900.1199999999953434 1824053.2600000000093132, 844831.4899999999906868 1824117.7399999999906868, 844831.2088827658444643 1824118.2226566665340215, 844815.2399999999906868 1824145.6400000001303852, 844784.9799999999813735 1824171.4100000001490116, 844763.5500000000465661 1824218.2800000000279397, 844739.1900000000605360 1824257.1100000001024455, 844732.5689081742893904 1824274.1257943792734295, 844729.6396295028971508 1824281.6538584602531046, 844728.9000000000232831 1824374.1999999999534339, 844727.2000000000698492 1824574.4000000001396984, 844729.6370590717997402 1824281.6604643084574491, 844694.1500000000232831 1824372.8600000001024455, 844679.7099999999627471 1824422.7900000000372529, 844669.4100000000325963 1824456.7399999999906868, 844619.9799999999813735 1824499.3700000001117587, 844597.2096419272711501 1824573.2967368511017412, 844596.3000000000465661 1824576.2500000000000000, 844595.9899999999906868 1824612.2900000000372529, 844586.7700000000186265 1824637.2399999999906868, 844566.9099158239550889 1824673.1669223201461136, 844560.3300000000745058 1824685.0700000002980232, 844554.0500000001629815 1824717.0500000000465661, 844557.7900000000372529 1824747.1200000001117587, 844627.4500000000698492 1824796.7700000000186265, 844694.2099999999627471 1824834.3900000001303852, 844724.7609713199781254 1824854.5584635899867862, 844755.6946466653607786 1824874.9795722477138042, 844824.2763564363121986 1824920.2543264275882393, 844824.2983818182256073 1824920.2688666565809399, 844889.3300000000745058 1824963.1999999999534339, 844892.4905942827463150 1824976.3175977508071810, 844901.9000000001396984 1825015.3699999998789281, 844923.5665353111689910 1825015.8703710103873163, 844923.5730725777102634 1825015.8705219828989357, 845040.0300000000279397 1825018.5600000000558794, 845051.8699999999953434 1825039.6799999999348074, 845072.8800000000046566 1825040.8600000001024455, 845082.2800000000279397 1824995.8900000001303852, 845096.2800000000279397 1824997.0100000000093132, 845101.1099999999860302 1825018.0800000000745058, 845219.2299999999813735 1825020.0900000000838190, 845221.9000000000232831 1825059.1600000001490116, 845224.6310738313477486 1825079.2110685959924012, 845231.3199999999487773 1825128.3200000000651926, 845246.4599999999627471 1825113.4299999999348074, 845279.5800000000745058 1825103.6999999999534339, 845296.5299999999115244 1825112.8600000001024455, 845313.4000000000232831 1825130.0200000000186265, 845376.4200000000419095 1825136.5700000000651926, 845381.2399999999906868 1825274.7700000000186265, 845413.2899999999208376 1825273.0400000000372529, 845573.4099999999161810 1825281.4200000001583248, 845620.9899999999906868 1825336.8900000003632158, 845687.8272242128150538 1825383.5150588175747544, 845721.4000000000232831 1825383.8000000002793968, 845687.8513357406482100 1825383.5318788068834692, 845693.6400000000139698 1825387.5700000000651926, 845721.2889667560812086 1825396.1617011527996510, 845766.5299999999115244 1825410.2199999999720603, 845836.8300000000745058 1825384.8000000000465661, 845903.4599999999627471 1825437.4299999999348074, 845949.9200000000419095 1825506.9000000001396984, 845983.5299999999115244 1825556.2500000000000000, 845995.4399999999441206 1825568.3600000001024455, 846045.4799999999813735 1825570.7900000000372529, 846123.5299999999115244 1825575.4699999999720603, 846195.7600000000093132 1825558.0700000000651926, 846215.9699999999720603 1825537.2199999999720603, 846211.1099999999860302 1825519.1500000001396984, 846496.8699999999953434 1825469.5399999998044223, 846518.0300000000279397 1825453.7099999999627471, 846542.3900000000139698 1825414.8700000001117587, 846555.7199999999720603 1825377.9399999999441206, 846608.3399999999674037 1825313.3200000000651926, 846687.2899999999208376 1825212.8799999998882413, 846748.8300000000745058 1825157.3500000000931323, 846777.2199999999720603 1825115.5399999998044223, 846813.9500000000698492 1825035.7600000000093132, 846818.2099999999627471 1825005.7700000000186265, 846762.2300000000977889 1824995.2800000000279397, 846725.3199999999487773 1824979.9399999999441206, 846699.4700000000884756 1824958.7000000001862645, 846688.6600000000325963 1824935.5800000000745058, 846692.9703912005061284 1824891.5967367838602513, 846694.1500000000232831 1824879.5600000000558794, 846697.8000000000465661 1824803.5100000000093132, 846698.4490068613085896 1824791.5024640944320709, 846698.4490068611921743 1824791.5024640944320709, 846701.3699999999953434 1824737.4599999999627471, 846728.6324568932177499 1824667.7812779853120446, 846730.0999999999767169 1824491.5000000000000000, 846630.0666614775545895 1824490.6005993541330099, 846630.8153520846972242 1824404.1268342211842537, 846604.2399999999906868 1824388.2299999999813735, 846546.7500000000000000 1824320.6600000001490116, 846531.5441637829644606 1824307.5050767704378814, 846529.0999999999767169 1824589.9000000001396984, 846529.9000000000232831 1824489.8000000000465661, 846530.8000000000465661 1824389.6000000000931323, 846531.5381628699833527 1824307.4998852408025414, 846526.8800000000046566 1824303.4699999999720603, 846531.6099206856451929 1824299.5188215249218047, 846531.7000000000698492 1824289.5000000000000000, 846531.6133103400934488 1824299.5159899489954114, 846543.4766106829047203 1824289.6058836125303060, 846567.2099999999627471 1824269.7800000000279397, 846612.4100000000325963 1824252.1500000001396984, 846632.2175146056106314 1824238.1584849809296429, 846669.8300000000745058 1824211.5900000000838190, 846684.0108215067302808 1824190.7108756965026259, 846698.2199999999720603 1824169.7900000000372529, 846732.9552037363173440 1824162.7156733260490000, 846778.4500000000698492 1824153.4499999999534339, 846832.7800000000279397 1824122.8800000001210719, 846832.7405478489818051 1824091.8918528039939702, 846832.7405478490982205 1824091.8918528039939702, 846832.6500000000232831 1824020.7700000000186265, 846834.8013788460521027 1823962.1964441391173750, 846835.2600000000093132 1823949.7099999999627471, 846834.9184087043395266 1823948.4144572964869440, 846826.5300000000279397 1823916.6000000000931323, 846808.8978883343515918 1823891.4617192756850272, 846808.8978883342351764 1823891.4617192756850272, 846738.2708267109701410 1823790.7680000271648169, 846636.0000000000000000 1823789.9000000001396984, 846736.2000000000698492 1823790.6999999999534339, 846736.2227924335747957 1823787.8480967523064464, 846722.6800000000512227 1823768.5400000000372529, 846720.9799999999813735 1823732.4799999999813735, 846698.7676939633674920 1823690.2944471046794206, 846678.6199999999953434 1823652.0300000000279397, 846652.7099999999627471 1823637.7900000000372529, 846637.3552883139345795 1823639.1112343843560666, 846557.5300000000279397 1823645.9799999999813735, 846453.8000000000465661 1823601.0400000000372529, 846465.8800000000046566 1823593.1400000001303852, 846492.3375450056046247 1823588.4149966377299279, 846492.3375450057210401 1823588.4149966377299279, 846530.0500000000465661 1823581.6799999999348074, 846537.7877689857268706 1823577.8179056709632277, 846538.5000000000000000 1823488.6999999999534339, 846539.4000000000232831 1823388.6000000000931323, 846439.3000000000465661 1823387.6999999999534339, 846440.0999999999767169 1823287.6000000000931323, 846441.0000000000000000 1823187.5000000000000000, 846340.9000000000232831 1823186.6000000000931323, 846340.0000000000000000 1823286.8000000000465661, 846342.5999999999767169 1822986.4000000001396984, 846242.5000000000000000 1822985.6000000000931323, 846239.9000000000232831 1823285.9000000001396984, 846139.8000000000465661 1823285.0000000000000000, 846138.9000000000232831 1823385.1000000000931323, 846239.0999959603650495 1823386.0004492898005992, 846237.3000000000465661 1823586.1999999999534339, 846337.4000000000232831 1823587.1000000000931323, 846336.5999999999767169 1823687.1999999999534339, 846436.7000000000698492 1823688.0000000000000000, 846435.8000000000465661 1823788.1000000000931323, 846535.9000000000232831 1823789.0000000000000000, 846535.0999999999767169 1823889.1000000000931323, 846534.2000000000698492 1823989.1999999999534339, 846334.0000000000000000 1823987.5000000000000000, 846233.9000000000232831 1823986.6000000000931323, 846232.2000000000698492 1824186.9000000001396984, 846332.2666689730249345 1824187.6997336181811988, 846331.4000000000232831 1824287.8000000000465661, 846231.3000000000465661 1824287.0000000000000000, 846230.5000000000000000 1824387.1000000000931323, 846228.8000000000465661 1824587.3000000000465661, 846128.5999999999767169 1824586.4000000001396984, 846129.5000000000000000 1824486.3000000000465661, 846130.4000000000232831 1824386.1999999999534339, 846030.3000000000465661 1824385.4000000001396984, 845930.2000000000698492 1824384.5000000000000000, 845929.3000000000465661 1824484.6000000000931323, 845829.2000000000698492 1824483.6999999999534339, 845830.9000000000232831 1824283.5000000000000000, 845831.8000000000465661 1824183.4000000001396984, 845731.7000000000698492 1824182.6000000000931323, 845730.8000000000465661 1824282.6999999999534339, 845729.9000000000232831 1824382.8000000000465661, 845629.8000000000465661 1824381.9000000001396984, 845630.7000000000698492 1824281.8000000000465661, 845530.5999999999767169 1824281.0000000000000000, 845531.4000000000232831 1824180.8000000000465661, 845431.3000000000465661 1824180.0000000000000000, 845432.2000000000698492 1824079.9000000001396984, 845332.0999999999767169 1824079.0000000000000000, 845232.0000000000000000 1824078.1999999999534339, 845233.7000000000698492 1823878.0000000000000000, 845133.5999999999767169 1823877.1000000000931323, 845134.4000000000232831 1823777.0000000000000000, 845137.0000000000000000 1823476.6999999999534339, 844836.7002122720004991 1823474.0750018553808331, 844838.4000000000232831 1823273.9000000001396984, 844638.2000000000698492 1823272.1999999999534339, 844637.3000000000465661 1823372.3000000000465661, 844639.0999999999767169 1823172.1000000000931323, 844438.8000000000465661 1823170.3000000000465661, 844438.0000000000000000 1823270.4000000001396984, 844437.0999999999767169 1823370.6000000000931323, 844436.3005327637074515 1823470.6333379461430013, 844236.0999999999767169 1823468.9000000001396984, 844233.5000000000000000 1823769.3000000000465661, 844234.3000000000465661 1823669.1999999999534339, 844134.2000000000698492 1823668.3000000000465661, 844135.0999999999767169 1823568.1999999999534339, 844135.9000000000232831 1823468.1000000000931323, 844035.8000000000465661 1823467.1999999999534339, 844035.0000000000000000 1823567.3000000000465661, 843934.9000000000232831 1823566.5000000000000000, 843934.0000000000000000 1823666.6000000000931323, 844034.0999999999767169 1823667.4000000001396984, 844033.3000000000465661 1823767.6000000000931323, 844133.3500033930176869 1823768.3996004268992692, 844132.5000000000000000 1823868.5000000000000000, 844032.4000000000232831 1823867.6999999999534339, 843932.3000000000465661 1823866.8000000000465661, 843931.4640845044050366 1823959.7723790116142482, 843983.0800000000745058 1823934.2700000000186265, 844023.3499999999767169 1823907.5900000000838190, 844032.1073635076172650 1823904.3161411110777408, 844096.6700000000419095 1823880.1799999999348074, 844132.3660955451196060 1823885.2547949166037142, 844156.6700000000419095 1823888.7099999999627471, 844244.6600000000325963 1823901.4699999999720603, 844332.3722259016940370 1823911.2127340587321669, 844371.6900000000605360 1823915.5800000000745058, 844466.6600000000325963 1823931.4100000001490116, 844482.7800000000279397 1823919.5300000000279397, 844583.9899999999906868 1823909.3900000001303852, 844611.1500000000232831 1823893.6000000000931323, 844632.9883521241135895 1823880.0599439740180969, 844633.9000000000232831 1823772.6999999999534339, 844633.0999999999767169 1823872.8000000000465661, 844633.0349857393885031 1823880.0310305394232273, 844644.5319209550507367 1823872.9027845042292029, 844733.6479543613968417 1823817.6497105411253870, 844736.9699999999720603 1823815.5900000000838190, 844788.0000000000000000 1823819.0300000000279397, 844829.1300000000046566 1823809.3700000001117587, 844833.8326968360925093 1823807.8463083780370653, 844850.2099999999627471 1823802.5400000000372529, 844923.1300000000046566 1823822.1899999999441206, 844923.0300000000279397 1823833.1999999999534339, 844933.7011916440678760 1823834.0420193299651146, 844933.7011916440678760 1823834.0420193301979452, 844980.0600000000558794 1823837.6999999999534339, 844996.9799999999813735 1823849.8600000001024455, 845016.9100000000325963 1823860.0400000000372529, 844941.4300000000512227 1823906.4399999999441206, 844932.7761059190379456 1823944.7908861120231450), (846531.7000000000698492 1824289.5000000000000000, 846431.5666620586998761 1824288.7005322319455445, 846432.4333310270449147 1824188.6002663818653673, 846532.5000000000000000 1824189.4000000001396984, 846531.7000000000698492 1824289.5000000000000000), (845530.5999999999767169 1824281.0000000000000000, 845528.0000000000000000 1824581.3000000000465661, 845529.7000000000698492 1824381.1000000000931323, 845530.5999999999767169 1824281.0000000000000000), (845030.0000000000000000 1824276.6999999999534339, 845029.2000000000698492 1824376.8000000000465661, 845028.3000000000465661 1824476.9000000001396984, 845030.0000000000000000 1824276.6999999999534339), (845028.3000000000465661 1824476.9000000001396984, 844828.1399970820639282 1824475.2003396356012672, 844828.1399972536601126 1824475.2003196582663804, 844928.2000000000698492 1824476.0000000000000000, 845028.3000000000465661 1824476.9000000001396984), (845424.4999999998835847 1824980.8000000000465661, 845724.8000000000465661 1824983.4000000001396984, 845624.7000000000698492 1824982.6000000000931323, 845524.5999999999767169 1824981.6999999999534339, 845424.4999999998835847 1824980.8000000000465661), (845424.4999999998835847 1824980.8000000000465661, 845425.3000000000465661 1824880.7000000001862645, 845426.2000000000698492 1824780.6000000000931323, 845424.4999999998835847 1824980.8000000000465661), (845425.3000000000465661 1824880.7000000001862645, 845325.1999999999534339 1824879.9000000001396984, 845225.0999999998603016 1824879.0000000002328306, 845425.3000000000465661 1824880.7000000001862645), (845924.9994006460765377 1824985.1666614776477218, 845924.9994342236313969 1824985.1666617682203650, 845923.3000000000465661 1825185.4000000001396984, 845924.0999999998603016 1825085.1999999999534339, 845924.9994006460765377 1824985.1666614776477218), (845923.3000000000465661 1825185.4000000001396984, 846023.4000000000232831 1825186.1999999997206032, 846123.4999999979045242 1825187.1000000000931323, 845923.3000000000465661 1825185.4000000001396984), (846023.4000000000232831 1825186.1999999997206032, 846025.0997169703477994 1824986.0333308828994632, 846025.0997336179716513 1824986.0333310270216316, 846024.3000000000465661 1825086.1000000003259629, 846023.4000000000232831 1825186.1999999997206032), (846024.3000000000465661 1825086.1000000003259629, 846224.4999999998835847 1825087.8000000002793968, 846124.4000000000232831 1825087.0000000002328306, 846024.3000000000465661 1825086.1000000003259629), (845824.0000000000000000 1825084.3999999999068677, 845823.1999999999534339 1825184.5000000000000000, 845822.3000000000465661 1825284.6000000000931323, 845824.0000000000000000 1825084.3999999999068677), (846223.5999999999767169 1825187.9000000001396984, 846323.7000000000698492 1825188.8000000000465661, 846322.0000000000000000 1825388.9999999997671694, 846221.9000000001396984 1825388.1000000003259629, 846222.7000000000698492 1825288.0000000000000000, 846223.5999999999767169 1825187.9000000001396984)), ((850038.8000000000465661 1823919.1000000000931323, 850038.0000000000000000 1824019.3000000000465661, 850036.2000000000698492 1824219.5000000000000000, 849936.0999999999767169 1824218.6000000000931323, 849937.0000000000000000 1824118.5000000000000000, 849937.9000000000232831 1824018.4000000001396984, 849837.8000000000465661 1824017.5000000000000000, 849836.9000000000232831 1824117.6000000000931323, 849838.5999999999767169 1823917.4000000001396984, 849839.5000000000000000 1823817.3000000000465661, 849739.4000000000232831 1823816.5000000000000000, 849738.5000000000000000 1823916.6000000000931323, 849638.4000000000232831 1823915.6999999999534339, 849636.7000000000698492 1824115.9000000001396984, 849536.5999999999767169 1824115.1000000000931323, 849536.2692815386690199 1824154.0469623315148056, 849548.6400000000139698 1824156.1799999999348074, 849586.4300000000512227 1824185.5300000000279397, 849627.0800000000745058 1824231.9399999999441206, 849660.8599999999860302 1824262.2600000000093132, 849680.3636364636477083 1824316.5078648633789271, 849684.3300000000745058 1824327.5400000000372529, 849716.9100000000325963 1824380.8700000001117587, 849723.6433544510509819 1824417.0156312044709921, 849724.5700000000651926 1824421.9899999999906868, 849734.1084225099766627 1824428.5586334464605898, 849795.2299999999813735 1824470.6500000001396984, 849833.6494826704729348 1824499.3959808573126793, 849858.9192303767194971 1824518.3031506924889982, 849877.8000000000465661 1824532.4299999999348074, 849918.6099999999860302 1824559.8100000000558794, 849933.1424997501308098 1824572.7773823689203709, 849975.2500000000000000 1824610.3500000000931323, 849989.3334234596695751 1824619.5091916196979582, 850022.0400000000372529 1824640.7800000000279397, 850032.5677580054616556 1824648.9592795723583549, 850097.6199999999953434 1824699.5000000000000000, 850126.2157696812646464 1824720.8470948324538767, 850132.0612414539791644 1824725.2108116219751537, 850231.5010046017123386 1824799.4438215284608305, 850232.1999999999534339 1824721.6999999999534339, 850231.5267270678887144 1824799.4630236667580903, 850261.7699999999022111 1824822.0400000002700835, 850331.0142051535658538 1824873.0456769433803856, 850355.2800000000279397 1824890.9199999999254942, 850395.4984792063478380 1824923.3835028100293130, 850412.9500000000698492 1824937.4699999999720603, 850430.4639477027812973 1824949.9542610689532012, 850502.5100000000093132 1825001.3100000002887100, 850529.9193536968668923 1825022.4474388197995722, 850568.1500000000232831 1825051.9299999999348074, 850629.7553476765751839 1825056.1121219883207232, 850703.2300000000977889 1825061.1000000000931323, 850729.6557179262163118 1825081.8907944774255157, 850730.0999999998603016 1825026.3000000000465661, 850731.0000000000000000 1824926.1999999997206032, 850729.6778027521213517 1825081.9081700157839805, 850786.8863288167631254 1825126.9177592005580664, 850829.4000000000232831 1825127.2999999998137355, 850786.9045230898773298 1825126.9320737929083407, 850829.1047918043332174 1825160.1337115378119051, 850843.4500000000698492 1825171.4200000001583248, 850909.2686471390770748 1825228.0858476529829204, 851028.7000000000698492 1825229.1000000000931323, 850928.5999999999767169 1825228.3000000000465661, 850909.3160021123476326 1825228.1266174018383026, 850920.9699999999720603 1825238.1599999999161810, 850928.5065637384541333 1825239.9912122096866369, 851028.4189400272443891 1825264.2676291153766215, 851044.8499999999767169 1825268.2600000000093132, 851102.7827544375322759 1825329.8732715183869004, 851110.3300000000745058 1825337.9000000001396984, 851127.8151626735925674 1825350.6580181920435280, 851170.0300000000279397 1825381.4599999999627471, 851221.7600178631255403 1825431.0510890716686845, 851227.1590260977391154 1825436.2268595299683511, 851227.1999999999534339 1825431.1000000000931323, 851228.9000000001396984 1825230.8000000000465661, 851227.1901407483965158 1825436.2566876544151455, 851273.3000000000465661 1825480.4600000001955777, 851301.4500000000698492 1825466.6799999999348074, 851334.4599999999627471 1825469.9700000002048910, 851378.3399999999674037 1825489.3699999998789281, 851378.4700000000884756 1825474.3500000000931323, 851428.3800000001210719 1825491.8000000002793968, 851462.1800000000512227 1825520.1200000001117587, 851483.7199999999720603 1825576.3700000001117587, 851533.4000000000232831 1825620.8400000000838190, 851560.1300000000046566 1825655.1100000001024455, 851587.8100000001722947 1825696.3999999999068677, 851598.6156093492172658 1825734.5618786055129021, 851606.2800000000279397 1825761.6300000001210719, 851624.5735819654073566 1825793.3493836307898164, 851626.0100000000093132 1825795.8400000000838190, 851639.5299999999115244 1825853.0200000000186265, 851682.9200000000419095 1825930.4799999999813735, 851721.2454862464219332 1825935.8808557775337249, 851829.5620444538071752 1825936.8006267512682825, 851832.0500000001629815 1825935.7600000000093132, 851862.5999999999767169 1825874.9499999999534339, 851910.9899999999906868 1825836.3200000000651926, 851981.3300000000745058 1825805.8900000001303852, 852025.1445593443932012 1825784.8995315656065941, 852027.1999999999534339 1825538.0000000000000000, 852028.0999999998603016 1825437.9000000001396984, 852026.4000000000232831 1825638.1000000003259629, 852025.1534868489252403 1825784.8952546196524054, 852125.6700376782100648 1825736.7402687221765518, 852127.0899999999674037 1825736.0600000000558794, 852226.1585109630832449 1825685.9766200690064579, 852227.4000000000232831 1825539.6999999999534339, 852229.1995466686785221 1825339.5504205159377307, 852228.3000000000465661 1825439.6000000000931323, 852226.5999999999767169 1825639.9000000001396984, 852226.1858489551814273 1825685.9627995418850332, 852249.7699999999022111 1825674.0400000002700835, 852272.2851927585434169 1825640.2651164256967604, 852303.5200000000186265 1825593.4100000001490116, 852327.2517712992848828 1825575.7208152329549193, 852332.7399999998742715 1825571.6300000001210719, 852365.7916617594892159 1825540.9439370818436146, 852387.2300000000977889 1825521.0400000000372529, 852412.2600000001257285 1825521.2600000000093132, 852428.0489484647987410 1825497.8378233269322664, 852457.8900000000139698 1825453.5700000000651926, 852474.1630311026237905 1825441.7649393097963184, 852528.9411304481327534 1825402.0268731063697487, 852530.3000000000465661 1825242.0000000000000000, 852529.5000000001164153 1825342.1000000003259629, 852570.0132622728124261 1825342.4642551054712385, 852629.0500000001629815 1825224.7700000000186265, 852630.6628004902740940 1825217.8396128332242370, 852631.3000000000465661 1825142.8000000000465661, 852531.1999999999534339 1825141.8999999996740371, 852532.9000000001396984 1824941.6999999999534339, 852432.8000000000465661 1824940.8000000000465661, 852433.7000000000698492 1824840.7000000001862645, 852434.4999999998835847 1824740.6000000000931323, 852436.2000000000698492 1824540.4000000001396984, 852236.0000000000000000 1824538.6999999999534339, 852336.0999999999767169 1824539.5000000000000000, 852337.8000000000465661 1824339.3000000000465661, 852337.0000000000000000 1824439.4000000001396984, 852637.3000000000465661 1824442.0000000000000000, 852640.7000000000698492 1824041.6000000000931323, 852540.5999999999767169 1824040.6999999999534339, 852538.0999999999767169 1824341.0000000000000000, 852438.0003961820621043 1824340.1504277260974050, 852438.8000000000465661 1824240.1000000000931323, 852439.7000000000698492 1824140.0000000000000000, 852440.5000000000000000 1824039.9000000001396984, 852340.4000000000232831 1824039.0000000000000000, 852140.2000000000698492 1824037.3000000000465661, 852040.0999999999767169 1824036.4000000001396984, 852041.0000000000000000 1823936.3000000000465661, 852041.8000000000465661 1823836.1999999999534339, 852141.9000000000232831 1823837.1000000000931323, 852142.8000000000465661 1823737.0000000000000000, 852042.7000000000698492 1823736.1000000000931323, 851942.5999999999767169 1823735.1999999999534339, 851842.5000000000000000 1823734.4000000001396984, 851742.4000000000232831 1823733.5000000000000000, 851642.3000000000465661 1823732.6999999999534339, 851641.4004495161352679 1823832.7500038172584027, 851541.3000000000465661 1823831.9000000001396984, 851441.2000000000698492 1823831.1000000000931323, 851341.0999999999767169 1823830.1999999999534339, 851241.0000000000000000 1823829.3000000000465661, 851140.9000000000232831 1823828.5000000000000000, 851140.0000000000000000 1823928.6000000000931323, 851039.9000000000232831 1823927.6999999999534339, 850939.8000000000465661 1823926.9000000001396984, 850938.9000000000232831 1824027.0000000000000000, 851039.0000000000000000 1824027.8000000000465661, 851139.0999999999767169 1824028.6999999999534339, 851239.2000000000698492 1824029.6000000000931323, 851238.4000000000232831 1824129.6999999999534339, 851138.3000000000465661 1824128.8000000000465661, 851137.4000000000232831 1824228.9000000001396984, 851237.5000000000000000 1824229.8000000000465661, 851236.7000000000698492 1824329.9000000001396984, 851136.5999999999767169 1824329.0000000000000000, 851036.5000000000000000 1824328.1999999999534339, 851037.3000000000465661 1824228.1000000000931323, 851038.2000000000698492 1824127.9000000001396984, 850938.0999999999767169 1824127.1000000000931323, 850937.2000000000698492 1824227.1999999999534339, 850837.0999999999767169 1824226.3000000000465661, 850737.0000000000000000 1824225.5000000000000000, 850736.0999999999767169 1824325.6000000000931323, 850735.3000000000465661 1824425.6999999999534339, 850935.5000000000000000 1824427.4000000001396984, 850934.5999999999767169 1824527.5000000000000000, 850933.8000000000465661 1824627.6000000000931323, 851033.9000000001396984 1824628.5000000000000000, 850833.7000000000698492 1824626.8000000000465661, 850832.0000000000000000 1824827.0000000002328306, 850831.0999999998603016 1824927.1000000000931323, 850834.4999999998835847 1824526.7000000001862645, 850734.4000000000232831 1824525.8000000002793968, 850732.7000000000698492 1824726.0000000000000000, 850632.5999999999767169 1824725.1999999999534339, 850633.5000000000000000 1824625.0000000000000000, 850634.3000000000465661 1824524.9000000001396984, 850635.2000000000698492 1824424.8000000000465661, 850535.0999999999767169 1824424.0000000000000000, 850535.9000000000232831 1824323.9000000001396984, 850485.8499998252373189 1824323.4499999985564500, 850636.0000000000000000 1824324.6999999999534339, 850637.7000000000698492 1824124.5000000000000000, 850537.5999999999767169 1824123.6999999999534339, 850538.5000000000000000 1824023.5000000000000000, 850539.4000000000232831 1823923.4000000001396984, 850540.2000000000698492 1823823.3000000000465661, 850440.0999999999767169 1823822.5000000000000000, 850340.0000000000000000 1823821.6000000000931323, 850239.9000000000232831 1823820.8000000000465661, 850238.2000000000698492 1824021.0000000000000000, 850138.0999999999767169 1824020.1000000000931323, 850138.9000000000232831 1823920.0000000000000000, 850038.8000000000465661 1823919.1000000000931323), (852028.0999999998603016 1825437.9000000001396984, 852028.9000000001396984 1825337.8000000002793968, 852129.0000000000000000 1825338.7000000001862645, 852128.1500038170488551 1825438.7995504839345813, 852028.0999999998603016 1825437.9000000001396984), (852530.3000000000465661 1825242.0000000000000000, 852330.1499963951064274 1825240.3004245448391885, 852330.1499966070987284 1825240.3003995732869953, 852430.1999999999534339 1825241.1000000000931323, 852530.3000000000465661 1825242.0000000000000000), (852432.8000000000465661 1824940.8000000000465661, 852431.0999999998603016 1825140.9999999997671694, 852431.9000000001396984 1825040.9000000001396984, 852432.8000000000465661 1824940.8000000000465661), (851842.5000000000000000 1823734.4000000001396984, 851840.7000000000698492 1823934.6000000000931323, 851841.5999999999767169 1823834.5000000000000000, 851842.5000000000000000 1823734.4000000001396984), (851840.7000000000698492 1823934.6000000000931323, 851640.5000000000000000 1823932.9000000001396984, 851740.5999999999767169 1823933.6999999999534339, 851840.7000000000698492 1823934.6000000000931323), (851640.5000000000000000 1823932.9000000001396984, 851639.7000000000698492 1824033.0000000000000000, 851638.8000000000465661 1824133.1000000000931323, 851640.5000000000000000 1823932.9000000001396984), (851639.7000000000698492 1824033.0000000000000000, 851839.9000000000232831 1824034.6999999999534339, 851739.8000000000465661 1824033.9000000001396984, 851639.7000000000698492 1824033.0000000000000000), (851839.9000000000232831 1824034.6999999999534339, 851940.0000000000000000 1824035.6000000000931323, 851939.0999999999767169 1824135.6999999999534339, 851839.0000000000000000 1824134.8000000000465661, 851839.9000000000232831 1824034.6999999999534339), (851939.0999999999767169 1824135.6999999999534339, 851938.3000000000465661 1824235.8000000000465661, 852038.4000000000232831 1824236.6000000000931323, 852037.5000000000000000 1824336.6999999999534339, 851937.4000000000232831 1824335.9000000001396984, 851939.0999999999767169 1824135.6999999999534339), (851638.8000000000465661 1824133.1000000000931323, 851438.6000002340879291 1824131.4000000020023435, 851538.7000000000698492 1824132.1999999999534339, 851638.8000000000465661 1824133.1000000000931323), (851541.3000000000465661 1823831.9000000001396984, 851539.9999999993015081 1823982.0500000873580575, 851540.4000000000232831 1823932.0000000000000000, 851541.3000000000465661 1823831.9000000001396984), (851239.2000000000698492 1824029.6000000000931323, 851339.4000000000232831 1824030.4000000001396984, 851439.5000000000000000 1824031.3000000000465661, 851239.2000000000698492 1824029.6000000000931323), (850736.0999999999767169 1824325.6000000000931323, 850836.2000000000698492 1824326.4000000001396984, 850936.4000000000232831 1824327.3000000000465661, 850736.0999999999767169 1824325.6000000000931323), (850535.0999999999767169 1824424.0000000000000000, 850334.9000000000232831 1824422.3000000000465661, 850435.0000000000000000 1824423.1000000000931323, 850535.0999999999767169 1824424.0000000000000000), (851134.0000000000000000 1824629.2999999998137355, 851134.8000000000465661 1824529.1999999999534339, 851235.0000000000000000 1824530.1000000000931323, 851234.0999999998603016 1824630.1999999997206032, 851134.0000000000000000 1824629.2999999998137355), (851235.0000000000000000 1824530.1000000000931323, 851235.8000000000465661 1824430.0000000000000000, 851335.9000000000232831 1824430.8000000000465661, 851436.0000000000000000 1824431.6999999999534339, 851435.1999999999534339 1824531.8000000002793968, 851335.0999999999767169 1824531.0000000000000000, 851235.0000000000000000 1824530.1000000000931323), (851435.1999999999534339 1824531.8000000002793968, 851433.5000000001164153 1824732.0000000000000000, 851434.3000000000465661 1824631.9000000001396984, 851435.1999999999534339 1824531.8000000002793968), (851833.9000000001396984 1824735.5000000000000000, 851934.0000000000000000 1824736.3000000000465661, 852134.1999999999534339 1824738.0000000000000000, 852034.0999999998603016 1824737.1999999999534339, 851833.9000000001396984 1824735.5000000000000000), (852134.1999999999534339 1824738.0000000000000000, 852234.3000000000465661 1824738.9000000001396984, 852334.4000000000232831 1824739.6999999999534339, 852333.5999999999767169 1824839.9000000001396984, 852233.4000000000232831 1824839.0000000002328306, 852033.1999999999534339 1824837.2999999998137355, 852133.3000000000465661 1824838.1000000003259629, 852134.1999999999534339 1824738.0000000000000000), (851833.9000000001396984 1824735.5000000000000000, 851832.1999999999534339 1824935.6999999999534339, 851833.0000000000000000 1824835.6000000000931323, 851833.9000000001396984 1824735.5000000000000000), (851934.8000000000465661 1824636.1999999999534339, 851936.5999999999767169 1824436.0000000000000000, 851935.7000000000698492 1824536.1000000000931323, 851934.8000000000465661 1824636.1999999999534339), (851935.7000000000698492 1824536.1000000000931323, 852135.9000000000232831 1824537.8000000000465661, 852035.8000000000465661 1824537.0000000000000000, 851935.7000000000698492 1824536.1000000000931323), (850338.3000000000465661 1824021.8000000000465661, 850336.9947843523696065 1824172.6026079109869897, 850337.4000000000232831 1824121.9000000001396984, 850338.3000000000465661 1824021.8000000000465661), (852138.5000000000000000 1824237.5000000000000000, 852137.2000000000698492 1824387.6499999999068677, 852137.5999999999767169 1824337.6000000000931323, 852138.5000000000000000 1824237.5000000000000000), (851336.8000000000465661 1824330.6999999999534339, 851537.0000000000000000 1824332.5000000000000000, 851436.9000000000232831 1824331.6000000000931323, 851336.8000000000465661 1824330.6999999999534339), (850333.0999999998603016 1824622.5000000000000000, 850433.2000000000698492 1824623.3000000000465661, 850533.4000000000232831 1824624.1999999997206032, 850333.0999999998603016 1824622.5000000000000000), (851532.7000000000698492 1824832.9999999997671694, 851531.0000000000000000 1825033.1999999999534339, 851531.8000000000465661 1824933.1000000000931323, 851532.7000000000698492 1824832.9999999997671694), (852131.6495722740655765 1825038.4003961817361414, 852231.7000000000698492 1825039.1999999999534339, 852131.6495722740655765 1825038.4003961822018027, 852131.6495722740655765 1825038.4003961817361414), (851430.0000000000000000 1825132.5000000000000000, 851430.9000000001396984 1825032.3000000000465661, 851429.2000000019324943 1825232.5999997649341822, 851430.0000000000000000 1825132.5000000000000000), (852230.9000004681292921 1825139.3000000037718564, 852431.0999995357124135 1825140.9999999958090484, 852331.0000000000000000 1825140.1999999997206032, 852230.9000004681292921 1825139.3000000037718564), (851228.9000002334360033 1825230.8000000023748726, 851329.0999999998603016 1825231.6999999999534339, 851429.1999999999534339 1825232.6000000000931323, 851228.9000002334360033 1825230.8000000023748726)), ((848367.0000000000000000 1820400.8000000000465661, 848366.2000000000698492 1820500.9000000001396984, 848566.4000000000232831 1820502.6000000000931323, 848567.3000000000465661 1820402.5000000000000000, 848367.0000000000000000 1820400.8000000000465661)), ((840536.4000000000232831 1822936.6999999999534339, 840535.5000000000000000 1823036.8000000000465661, 840135.0999999999767169 1823033.3000000000465661, 840133.4000000000232831 1823233.6000000000931323, 840433.7000000000698492 1823236.1000000000931323, 840434.5999999999767169 1823136.0000000000000000, 840634.8000000000465661 1823137.6999999999534339, 840636.5000000000000000 1822937.5000000000000000, 840536.4000000000232831 1822936.6999999999534339)), ((842338.3000000000465661 1822952.1000000000931323, 842337.5000000000000000 1823052.1999999999534339, 842437.5999999999767169 1823053.1000000000931323, 842438.4000000000232831 1822953.0000000000000000, 842338.3000000000465661 1822952.1000000000931323)), ((843239.3000000000465661 1822959.8000000000465661, 843238.4000000000232831 1823059.9000000001396984, 843338.5000000000000000 1823060.8000000000465661, 843339.4000000000232831 1822960.6999999999534339, 843239.3000000000465661 1822959.8000000000465661)), ((845041.2000000000698492 1822975.3000000000465661, 845040.3000000000465661 1823075.4000000001396984, 845140.5000000000000000 1823076.1999999999534339, 845141.3000000000465661 1822976.1000000000931323, 845041.2000000000698492 1822975.3000000000465661)), ((848645.0999999999767169 1823006.1999999999534339, 848644.2000000000698492 1823106.3000000000465661, 848744.3000000000465661 1823107.1000000000931323, 848743.4000000000232831 1823207.1999999999534339, 848843.5999999999767169 1823208.1000000000931323, 848845.3000000000465661 1823007.9000000001396984, 848745.2000000000698492 1823007.0000000000000000, 848645.0999999999767169 1823006.1999999999534339)), ((849045.5000000000000000 1823009.6000000000931323, 849044.5999999999767169 1823109.6999999999534339, 849144.7000000000698492 1823110.6000000000931323, 849143.9000000000232831 1823210.6999999999534339, 849244.0000000000000000 1823211.5000000000000000, 849244.8000000000465661 1823111.4000000001396984, 849245.7000000000698492 1823011.3000000000465661, 849145.5999999999767169 1823010.5000000000000000, 849045.5000000000000000 1823009.6000000000931323)), ((845241.4000000000232831 1822977.0000000000000000, 845240.5999999999767169 1823077.1000000000931323, 845540.9000000000232831 1823079.6999999999534339, 845541.7000000000698492 1822979.6000000000931323, 845241.4000000000232831 1822977.0000000000000000)), ((843237.5999999999767169 1823160.0000000000000000, 843236.7000000000698492 1823260.1999999999534339, 843336.8000000000465661 1823261.0000000000000000, 843337.7000000000698492 1823160.9000000001396984, 843237.5999999999767169 1823160.0000000000000000)), ((847869.2781056958483532 1823700.3483764692209661, 847875.5000000000000000 1823712.3500000000931323, 847885.5300000000279397 1823709.4299999999348074, 847894.9714689536485821 1823700.5537180337123573, 847869.2781056958483532 1823700.3483764692209661)), ((847644.0000000000000000 1822997.6000000000931323, 847643.0999999999767169 1823097.6999999999534339, 847743.2000000000698492 1823098.6000000000931323, 847742.4000000000232831 1823198.6999999999534339, 847642.3000000000465661 1823197.8000000000465661, 847641.4000000000232831 1823297.9000000001396984, 847541.3000000000465661 1823297.1000000000931323, 847543.0000000000000000 1823096.8000000000465661, 847442.9000000000232831 1823096.0000000000000000, 847443.8000000000465661 1822995.9000000001396984, 847243.5999999999767169 1822994.1999999999534339, 847242.7000000000698492 1823094.3000000000465661, 847342.8000000000465661 1823095.1000000000931323, 847341.9000000000232831 1823195.1999999999534339, 847141.7000000000698492 1823193.5000000000000000, 847140.8500036050099880 1823293.5995754553005099, 846940.7000000000698492 1823291.9000000001396984, 846939.8000000000465661 1823392.0000000000000000, 846970.2753116589738056 1823392.2587813676800579, 846981.2199999999720603 1823389.3200000000651926, 847004.9253986178664491 1823392.5530128753744066, 847140.0000000000000000 1823393.6999999999534339, 847139.4488143305061385 1823462.6671069087460637, 847145.7199999999720603 1823470.8200000000651926, 847161.3523601859342307 1823493.9881069546099752, 847339.3672460824018344 1823495.4997218698263168, 847339.3672459408408031 1823495.4997382292058319, 847239.3000000000465661 1823494.6999999999534339, 847238.9143226962769404 1823537.5958867857698351, 847253.3200000000651926 1823531.8100000000558794, 847271.3599999999860302 1823528.9599999999627471, 847292.3499999999767169 1823533.1500000001396984, 847302.5400000000372529 1823512.2099999999627471, 847310.6600000000325963 1823500.2700000000186265, 847332.6400000000139698 1823504.4599999999627471, 847339.2866948893060908 1823504.8064827919006348, 847355.6600000000325963 1823505.6600000001490116, 847435.1600000000325963 1823458.2800000000279397, 847451.1400000000139698 1823462.4299999999348074, 847463.9699999999720603 1823484.5600000000558794, 847449.5800000000745058 1823528.4899999999906868, 847435.2600000000093132 1823563.4100000001490116, 847426.0999999999767169 1823580.3500000000931323, 847434.9300000000512227 1823602.4499999999534339, 847438.5469397746492177 1823602.7486218325793743, 847438.5999999999767169 1823596.5000000000000000, 847939.2000000000698492 1823600.8000000000465661, 848039.3000000000465661 1823601.6999999999534339, 848139.4000000000232831 1823602.5000000000000000, 848140.1996004268294200 1823502.4499966071452945, 848240.3000000000465661 1823503.3000000000465661, 848241.2000000000698492 1823403.1999999999534339, 848341.3000000000465661 1823404.0000000000000000, 848342.2000000000698492 1823303.9000000001396984, 848242.0999999999767169 1823303.1000000000931323, 848242.9000000000232831 1823203.0000000000000000, 848142.8000000000465661 1823202.1000000000931323, 848143.7000000000698492 1823102.0000000000000000, 848043.5999999999767169 1823101.1000000000931323, 847943.4004533312981948 1823100.2495794841088355, 847944.3000000000465661 1823000.1999999999534339, 847844.2000000000698492 1822999.3000000000465661, 847744.0999999999767169 1822998.4000000001396984, 847644.0000000000000000 1822997.6000000000931323), (847840.8000000000465661 1823399.6999999999534339, 848041.0000000000000000 1823401.4000000001396984, 847940.9000000000232831 1823400.6000000000931323, 847740.7000000000698492 1823398.9000000001396984, 847840.8000000000465661 1823399.6999999999534339), (847340.2000000000698492 1823395.4000000001396984, 847341.0999999999767169 1823295.3000000000465661, 847339.7947843535803258 1823446.1026077666319907, 847340.2000000000698492 1823395.4000000001396984)), ((840534.7000000000698492 1823136.9000000001396984, 840533.8000000000465661 1823237.0000000000000000, 840533.0000000000000000 1823337.1000000000931323, 840633.0999999999767169 1823338.0000000000000000, 840633.9000000000232831 1823237.9000000001396984, 840634.8000000000465661 1823137.6999999999534339, 840534.7000000000698492 1823136.9000000001396984)), ((848343.0000000000000000 1823203.8000000000465661, 848342.2000000000698492 1823303.9000000001396984, 848442.3000000000465661 1823304.8000000000465661, 848441.4000000000232831 1823404.9000000001396984, 848440.5000000000000000 1823505.0000000000000000, 848439.7000000000698492 1823605.1000000000931323, 848539.8000000000465661 1823606.0000000000000000, 848639.9000000000232831 1823606.8000000000465661, 848740.0000000000000000 1823607.6999999999534339, 848940.2000000000698492 1823609.4000000001396984, 848941.9000000000232831 1823409.1999999999534339, 848942.8000000000465661 1823309.1000000000931323, 848842.7000000000698492 1823308.1999999999534339, 848742.5999999999767169 1823307.3000000000465661, 848741.7000000000698492 1823407.5000000000000000, 848641.5999999999767169 1823406.6000000000931323, 848642.5000000000000000 1823306.5000000000000000, 848542.4000000000232831 1823305.6000000000931323, 848543.2000000000698492 1823205.5000000000000000, 848443.0999999999767169 1823204.6999999999534339, 848343.0000000000000000 1823203.8000000000465661)), ((847005.1010217635193840 1823392.5769648831337690, 847028.2199999999720603 1823395.7299999999813735, 847088.0200000000186265 1823427.2800000000279397, 847127.8900000000139698 1823447.6400000001303852, 847139.4147413723403588 1823462.6228101521264762, 847140.0000000000000000 1823393.6999999999534339, 847005.1010217635193840 1823392.5769648831337690)), ((846839.2453886438161135 1823441.7628852878697217, 846860.8100000000558794 1823421.3200000000651926, 846883.9100000000325963 1823412.5100000000093132, 846908.9699999999720603 1823408.7199999999720603, 846970.1732329026563093 1823392.2861907500773668, 846839.7000000000698492 1823391.1999999999534339, 846739.5999999999767169 1823390.3000000000465661, 846738.9457818951923400 1823463.0635914430022240, 846748.3300000000745058 1823461.4100000001490116, 846784.3000000000465661 1823470.7299999999813735, 846832.5500000000465661 1823448.1100000001024455, 846839.2453886438161135 1823441.7628852878697217)), ((846537.7932778957765549 1823577.8151560502592474, 846632.6099999999860302 1823530.4899999999906868, 846638.3011996189597994 1823526.8873976771719754, 846663.8100000000558794 1823510.7399999999906868, 846680.9333718657726422 1823489.8806197270750999, 846638.6499961829977110 1823489.5004495161119848, 846639.5000000000000000 1823389.4000000001396984, 846539.4000000000232831 1823388.6000000000931323, 846537.7932778957765549 1823577.8151560502592474)), ((846774.3828207085607573 1824491.8535554548725486, 846781.7000000000698492 1824475.8500000000931323, 846742.8800000000046566 1824449.4899999999906868, 846730.5065471010748297 1824446.2829279752913862, 846730.0999999999767169 1824491.5000000000000000, 846774.3828207085607573 1824491.8535554548725486)), ((840285.5496141483308747 1825237.1534434701316059, 840321.1199999999953434 1825186.3500000000931323, 840349.7292272578924894 1825137.6253730582538992, 840217.1999999999534339 1825136.5000000000000000, 840216.3000000000465661 1825236.6000000000931323, 840164.7065963832428679 1825236.1361232441850007, 840198.2300000000977889 1825273.4000000001396984, 840216.0324496603570879 1825270.0772362546995282, 840244.3599999999860302 1825264.7900000000372529, 840276.5200000000186265 1825250.0500000000465661, 840285.5496141483308747 1825237.1534434701316059)), ((840776.0005421064561233 1824640.6855193595401943, 840779.5899999999674037 1824607.6200000001117587, 840807.0999999999767169 1824552.7900000000372529, 840806.3712267073569819 1824540.8504905498120934, 840722.9000000000232831 1824540.1000000000931323, 840722.0000000000000000 1824640.1999999997206032, 840721.1999999999534339 1824740.3000000000465661, 840720.3000000000465661 1824840.3999999999068677, 840777.3063839530805126 1824840.9125449107959867, 840785.6900000001769513 1824830.9299999997019768, 840786.8100000001722947 1824816.9199999999254942, 840778.1500000000232831 1824776.8000000000465661, 840794.4599999999627471 1824741.9000000001396984, 840794.1298595240805298 1824740.9557130229659379, 840771.9899999999906868 1824677.6300000001210719, 840776.0005421064561233 1824640.6855193595401943)), ((846747.9607268684776500 1824591.7584577207453549, 846760.2700000000186265 1824522.7199999999720603, 846774.3726710098562762 1824491.8757540725637227, 846730.0999999999767169 1824491.5000000000000000, 846729.3000000000465661 1824591.6000000000931323, 846728.6535641215741634 1824667.7273310977034271, 846739.2399999999906868 1824640.6699999999254942, 846747.9607268683612347 1824591.7584577207453549, 846747.9607268684776500 1824591.7584577207453549)), ((852337.0000000000000000 1824439.4000000001396984, 852336.0999999999767169 1824539.5000000000000000, 852436.2000000000698492 1824540.4000000001396984, 852437.0999999999767169 1824440.3000000000465661, 852337.0000000000000000 1824439.4000000001396984)), ((840420.8000000000465661 1824737.6999999999534339, 840420.0000000000000000 1824837.8000000002793968, 840620.1999999999534339 1824839.6000000000931323, 840621.0999999998603016 1824739.5000000000000000, 840420.8000000000465661 1824737.6999999999534339)), ((840418.1109029258368537 1825059.1317967977374792, 840498.3599999999860302 1825064.7299999999813735, 840518.2380844965809956 1825056.9086021005641669, 840518.2380844965809956 1825056.9086021010298282, 840555.6199999998789281 1825042.1999999997206032, 840618.2927486911648884 1825062.8509511181619018, 840618.4999999998835847 1825039.8000000002793968, 840618.3042305267881602 1825062.8547344340477139, 840630.4899999999906868 1825066.8700000001117587, 840706.5500000000465661 1824953.3900000001303852, 840733.0999999998603016 1824893.5500000002793968, 840777.2884344332851470 1824840.9339177750516683, 840620.1999999999534339 1824839.6000000000931323, 840619.3000000000465661 1824939.6999999999534339, 840319.0000000000000000 1824937.1000000000931323, 840318.1999999999534339 1825037.1999999999534339, 840317.3000000000465661 1825137.2999999998137355, 840349.7489700233563781 1825137.5917489812709391, 840359.7199999999720603 1825120.6100000001024455, 840367.2199999999720603 1825063.6099999998696148, 840400.3100000000558794 1825057.8900000001303852, 840418.1109029258368537 1825059.1317967977374792)), ((840125.7000000000698492 1824134.5000000000000000, 840124.8000000000465661 1824234.6000000000931323, 840224.9000000000232831 1824235.5000000000000000, 840225.8000000000465661 1824135.4000000001396984, 840125.7000000000698492 1824134.5000000000000000)), ((849436.1068061739206314 1824157.9318911028094590, 849493.6600000000325963 1824146.6999999999534339, 849536.2498576241778210 1824154.0436131369788200, 849536.5999999999767169 1824115.1000000000931323, 849436.5000000000000000 1824114.1999999999534339, 849436.1068061739206314 1824157.9318911028094590)), ((840525.2000000000698492 1824238.1000000000931323, 840524.4000000000232831 1824338.1999999999534339, 840624.5000000000000000 1824339.0000000000000000, 840625.3000000000465661 1824238.9000000001396984, 840525.2000000000698492 1824238.1000000000931323)), ((840130.0000000000000000 1823634.0000000000000000, 840129.0999999999767169 1823734.1000000000931323, 840128.2000000000698492 1823834.1999999999534339, 840127.4000000000232831 1823934.3000000000465661, 840227.5000000000000000 1823935.1999999999534339, 840327.5999999999767169 1823936.0000000000000000, 840329.3000000000465661 1823735.8000000000465661, 840229.2004490676335990 1823734.9500038132537156, 840230.0999999999767169 1823634.8000000000465661, 840130.0000000000000000 1823634.0000000000000000)), ((846738.2359706806018949 1823790.7183054306078702, 846736.2241999210091308 1823787.8501034213695675, 846736.2000000000698492 1823790.6999999999534339, 846738.2359706806018949 1823790.7183054306078702)), ((845534.0000000000000000 1823880.5000000000000000, 845634.0999999999767169 1823881.4000000001396984, 845635.0000000000000000 1823781.3000000000465661, 845534.9000000000232831 1823780.4000000001396984, 845534.0000000000000000 1823880.5000000000000000)), ((849439.0000000000000000 1823813.9000000001396984, 849438.2000000000698492 1823914.0000000000000000, 849437.3000000000465661 1824014.1000000000931323, 849537.4000000000232831 1824015.0000000000000000, 849538.3000000000465661 1823914.9000000001396984, 849539.0999999999767169 1823814.8000000000465661, 849439.0000000000000000 1823813.9000000001396984)), ((840627.9000000000232831 1823938.6000000000931323, 840628.8000000000465661 1823838.5000000000000000, 840528.7000000000698492 1823837.6000000000931323, 840527.8000000000465661 1823937.6999999999534339, 840427.7000000000698492 1823936.9000000001396984, 840426.0000000000000000 1824137.1000000000931323, 840325.9000000000232831 1824136.1999999999534339, 840325.0000000000000000 1824236.3000000000465661, 840525.2000000000698492 1824238.1000000000931323, 840526.0999999999767169 1824138.0000000000000000, 840626.2000000000698492 1824138.8000000000465661, 840627.0999999999767169 1824038.6999999999534339, 840627.9000000000232831 1823938.6000000000931323)), ((852442.2000000000698492 1823839.6000000000931323, 852441.4000000000232831 1823939.8000000000465661, 852341.3000000000465661 1823938.9000000001396984, 852340.4000000000232831 1824039.0000000000000000, 852540.5999999999767169 1824040.6999999999534339, 852542.4000000000232831 1823840.5000000000000000, 852442.2000000000698492 1823839.6000000000931323)), ((852141.9000000000232831 1823837.1000000000931323, 852141.0999999999767169 1823937.1999999999534339, 852140.2000000000698492 1824037.3000000000465661, 852240.3000000000465661 1824038.1000000000931323, 852241.2000000000698492 1823938.0000000000000000, 852242.0000000000000000 1823837.9000000001396984, 852141.9000000000232831 1823837.1000000000931323)), ((845433.9000000000232831 1823879.6999999999534339, 845433.0000000000000000 1823979.8000000000465661, 845533.2000000000698492 1823980.6000000000931323, 845534.0000000000000000 1823880.5000000000000000, 845433.9000000000232831 1823879.6999999999534339)), ((845238.8000000000465661 1823277.3000000000465661, 845237.0999999999767169 1823477.5000000000000000, 845337.2000000000698492 1823478.4000000001396984, 845336.4000000000232831 1823578.5000000000000000, 845236.3000000000465661 1823577.6000000000931323, 845235.4000000000232831 1823677.6999999999534339, 845135.3000000000465661 1823676.9000000001396984, 845134.4000000000232831 1823777.0000000000000000, 845234.5999999999767169 1823777.8000000000465661, 845334.7000000000698492 1823778.6999999999534339, 845335.5000000000000000 1823678.6000000000931323, 845635.8000000000465661 1823681.1999999999534339, 845635.0000000000000000 1823781.3000000000465661, 845735.0999999999767169 1823782.1000000000931323, 845737.7000000000698492 1823481.8000000000465661, 845537.4000000000232831 1823480.1000000000931323, 845539.2000000000698492 1823279.9000000001396984, 845338.9000000000232831 1823278.1999999999534339, 845238.8000000000465661 1823277.3000000000465661)), ((852345.5999999999767169 1823438.4000000001396984, 852343.9000000000232831 1823638.6000000000931323, 852342.0999999999767169 1823838.8000000000465661, 852442.2000000000698492 1823839.6000000000931323, 852444.0000000000000000 1823639.4000000001396984, 852445.7000000000698492 1823439.1999999999534339, 852345.5999999999767169 1823438.4000000001396984)), ((840331.0000000000000000 1823535.6000000000931323, 840330.2000000000698492 1823635.6999999999534339, 840430.2500038170255721 1823636.5995504839811474, 840429.4000000000232831 1823736.6999999999534339, 840329.3000000000465661 1823735.8000000000465661, 840328.5000000000000000 1823835.9000000001396984, 840428.5999999999767169 1823836.8000000000465661, 840528.7000000000698492 1823837.6000000000931323, 840529.5000000000000000 1823737.5000000000000000, 840531.2000000000698492 1823537.3000000000465661, 840431.0999999999767169 1823536.5000000000000000, 840331.0000000000000000 1823535.6000000000931323)), ((840225.8000000000465661 1824135.4000000001396984, 840325.9000000000232831 1824136.1999999999534339, 840326.7000000000698492 1824036.1000000000931323, 840226.5999999999767169 1824035.3000000000465661, 840225.8000000000465661 1824135.4000000001396984)), ((843460.0730511258589104 1823962.8622951649595052, 843444.5400000000372529 1824040.7800000000279397, 843519.4599999999627471 1824060.4499999999534339, 843528.0111173285404220 1824063.5803197363857180, 843528.0111173287732527 1824063.5803197363857180, 843620.2600000000093132 1824097.3500000000931323, 843667.4100000000325963 1824085.7399999999906868, 843767.7299999999813735 1824062.5700000000651926, 843780.8399999999674037 1824051.6699999999254942, 843825.2199999999720603 1824013.0100000000093132, 843877.5100000000093132 1823986.4299999999348074, 843917.2201316761784256 1823966.8100277709309012, 843731.2000000000698492 1823965.1999999999534339, 843730.4000000000232831 1824065.3000000000465661, 843530.2002663819584996 1824063.5666689730715007, 843531.0000000000000000 1823963.5000000000000000, 843460.0730511258589104 1823962.8622951649595052)), ((850638.5999999999767169 1824024.4000000001396984, 850637.7000000000698492 1824124.5000000000000000, 850838.0000000000000000 1824126.1999999999534339, 850838.8000000000465661 1824026.1000000000931323, 850638.5999999999767169 1824024.4000000001396984))) - - - - - diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateAA-big.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateAA-big.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateAA-big.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateAA-big.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,34 @@ + + + + +A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + + true + + + + +A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + + true + + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateAA.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateAA.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateAA.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateAA.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,2833 @@ + + + + +A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 20, 140 20, 120 100, 20 100, 20 20)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (120 100, 140 20, 20 20, 20 100, 120 100)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] + + POLYGON( + (0 0, 80 0, 80 80, 0 80, 0 0)) + + + POLYGON( + (100 200, 100 140, 180 140, 180 200, 100 200)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 140 200, 240 200, 240 120, 140 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (80 180, 140 260, 260 200, 200 60, 80 180)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (240 80, 140 120, 180 240, 280 200, 240 80)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + + POLYGON( + (140 40, 180 80, 120 100, 140 40)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + + POLYGON( + (120 100, 180 80, 130 40, 120 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 180 20, 140 140, 20 140, 20 20)) + + + POLYGON( + (180 100, 80 200, 180 280, 260 200, 180 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 140, 20 120, 0 220, 120 240, 140 140)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) + + + POLYGON( + (20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) + + + POLYGON( + (20 120, 300 120, 140 240, 20 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, + 20 20)) + + + POLYGON( + (100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, + 20 20)) + + + POLYGON( + (260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (0 140, 300 140, 140 240, 0 140)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (20 240, 20 140, 320 140, 180 240, 20 240)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (120 120, 220 20, 280 20, 240 160, 120 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 160 20, 260 120, 220 200, 140 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + + POLYGON( + (20 140, 120 40, 20 40, 20 140)) + + + POLYGON( + (190 140, 190 20, 140 20, 20 140, 190 140)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (300 20, 220 20, 120 120, 260 160, 300 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 240 160, 280 60, 160 20, 140 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (280 60, 180 60, 120 120, 260 180, 280 60)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (120 200, 120 120, 40 120, 40 200, 120 200)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (160 220, 140 120, 60 120, 40 220, 160 220)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 20 120, 20 220, 140 220, 140 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (320 20, 220 20, 80 160, 240 140, 320 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (60 40, 60 140, 180 140, 180 40, 60 40)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 80 140, 160 60, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (160 60, 20 20, 100 140, 160 60)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 100, 140 160, 160 40, 20 100)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (160 40, 20 100, 160 160, 160 40)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 180, 180 120, 80 40, 20 180)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (180 120, 100 40, 20 180, 180 120)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 140, 120 120, 120 40, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 180, 140 140, 140 60, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 120 40, 120 120, 20 140, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (120 40, 20 20, 20 140, 120 120, 120 40)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 60, 140 140, 20 180, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (140 60, 20 20, 20 180, 140 140, 140 60)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 60 120, 140 120, 180 20, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 40, 120 40, 120 120, 20 140, 20 40)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (150 150, 330 150, 250 70, 70 70, 150 150)) + + + POLYGON( + (150 150, 270 150, 140 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) + + + POLYGON( + (150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, + 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, + 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, + 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, + 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, + 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, + 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, + 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, + 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, + 70 40, 20 20)) + + + POLYGON( + (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, + 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, + 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, + 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, + 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, + 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, + 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, + 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, + 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, + 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, + 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, + 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, + 200 120, 120 120, 190 140)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, + 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, + 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, + 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, + 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, + 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, + 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, + 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, + 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, + 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, + 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, + 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, + 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, + 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, + 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, + 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) + + + POLYGON( + (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, + 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, + 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, + 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, + 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, + 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, + 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, + 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, + 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, + 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, + 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, + 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, + 200 120, 120 120, 190 140)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (60 160, 20 200, 260 200, 140 80, 60 160)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 140 80, 260 200, 20 200)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 60 160, 140 80, 260 200, 20 200)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (0 0, 0 200, 200 200, 200 0, 0 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 0, 100 200, 200 200, 200 0, 100 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 0, 120 200, 200 200, 200 0, 120 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (0 0, 0 200, 110 200, 110 0, 0 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2100 110, 2100 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 500 110, 500 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 130 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 17 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (101 99, 101 1000000, 102 1000000, 101 99)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 200 101, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) + + + POLYGON( + (10 307, 22 307, 153 34, 22 34, 10 307)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] + + POLYGON( + (160 200, 210 70, 120 70, 160 200)) + + + POLYGON( + (160 200, 310 20, 20 20, 160 200), + (160 200, 260 40, 70 40, 160 200)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + + POLYGON( + (170 120, 240 100, 260 50, 190 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + + POLYGON( + (270 90, 200 50, 150 80, 210 120, 270 90)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] + + POLYGON( + (170 120, 260 100, 240 60, 150 80, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] + + POLYGON( + (220 120, 270 80, 200 60, 160 100, 220 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] + + POLYGON( + (260 50, 180 70, 180 110, 260 90, 260 50)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] + + POLYGON( + (230 110, 290 80, 190 60, 140 90, 230 110)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + + POLYGON( + (170 120, 330 120, 280 70, 120 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + + POLYGON( + (170 120, 300 120, 250 70, 120 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] + + POLYGON( + (190 100, 310 100, 260 50, 140 50, 190 100)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (280 130, 360 130, 270 40, 190 40, 280 130)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] + + POLYGON( + (220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, + 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] + + POLYGON( + (260 130, 360 130, 280 40, 170 40, 260 130)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] + + POLYGON( + (240 110, 340 110, 290 60, 190 60, 240 110)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] + + POLYGON( + (250 120, 350 120, 280 50, 180 50, 250 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (120 180, 50 50, 200 50, 120 180)) + + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (120 180, 50 50, 200 50, 120 180)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (140 40, 40 40, 40 170, 140 40), + (110 190, 210 190, 210 50, 110 190)) + + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (140 40, 40 40, 40 170, 140 40), + (110 190, 210 190, 210 50, 110 190)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + + POLYGON( + (280 190, 330 150, 200 110, 150 150, 280 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + + POLYGON( + (80 190, 220 190, 140 110, 0 110, 80 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + + POLYGON( + (330 150, 200 110, 150 150, 280 190, 330 150)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] + + POLYGON( + (290 190, 340 150, 220 120, 170 170, 290 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] + + POLYGON( + (220 190, 340 190, 260 110, 140 110, 220 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + + POLYGON( + (140 190, 220 190, 100 70, 20 70, 140 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (140 220, 60 140, 140 60, 220 140, 140 220)) + + + MULTIPOLYGON( + ( + (100 20, 180 20, 180 100, 100 100, 100 20)), + ( + (20 100, 100 100, 100 180, 20 180, 20 100)), + ( + (100 180, 180 180, 180 260, 100 260, 100 180)), + ( + (180 100, 260 100, 260 180, 180 180, 180 100))) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 150 200, 110 110)), + ( + (110 110, 150 20, 70 20, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 150 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 150 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + + MULTIPOLYGON( + ( + (110 110, 20 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 20 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 70 200, 210 110, 70 20, 110 110), + (110 110, 110 140, 150 110, 110 80, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + false + false + false + false + false + false + true + true + false + false + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateAC.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateAC.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateAC.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateAC.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,36 @@ + + + + +AC A-shells overlapping B-shell at A-vertex + + POLYGON( + (100 60, 140 100, 100 140, 60 100, 100 60)) + + + MULTIPOLYGON( + ( + (80 40, 120 40, 120 80, 80 80, 80 40)), + ( + (120 80, 160 80, 160 120, 120 120, 120 80)), + ( + (80 120, 120 120, 120 160, 80 160, 80 120)), + ( + (40 80, 80 80, 80 120, 40 120, 40 80))) + + + true + + false + false + false + false + false + false + true + true + false + false + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateLA.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateLA.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateLA.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateLA.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,1932 @@ + + + + +L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] + + LINESTRING(150 150, 40 230) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + + LINESTRING(40 40, 50 130, 130 130) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] + + LINESTRING(40 230, 150 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] + + LINESTRING(210 150, 330 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] + + LINESTRING(200 150, 310 150, 360 220) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] + + LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] + + LINESTRING(210 210, 220 150, 320 150, 370 210) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] + + LINESTRING(20 60, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] + + LINESTRING(60 90, 310 180) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] + + LINESTRING(90 210, 210 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] + + LINESTRING(290 10, 130 170) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(30 100, 100 100, 180 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] + + LINESTRING(20 100, 100 100, 360 100, 410 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(90 210, 150 150, 210 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] + + LINESTRING(180 90, 280 120) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + + LINESTRING(70 70, 80 20) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] + + LINESTRING(130 20, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] + + LINESTRING(70 70, 80 20, 140 20, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(170 50, 170 20, 240 20, 260 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] + + LINESTRING(50 100, 140 190, 280 190) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + + LINESTRING(140 60, 180 100, 290 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + + LINESTRING(170 120, 210 80, 270 80) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] + + LINESTRING(170 120, 260 50) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(190 90, 190 270) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (190 190, 280 50, 100 50, 190 190)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (110 110, 250 100, 140 30, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(190 90, 190 190, 190 270) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (190 190, 280 50, 100 50, 190 190)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (110 110, 250 100, 140 30, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 110 110, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] + + LINESTRING(130 110, 180 110, 190 60) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + + LINESTRING(80 110, 180 110) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] + + LINESTRING(80 110, 180 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (60 180, 130 110, 60 40, 60 180), + (130 110, 200 40, 200 180, 130 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + + LINESTRING(80 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 180 110) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] + + LINESTRING(80 110, 130 110, 180 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (60 180, 130 110, 60 40, 60 180), + (130 110, 200 40, 200 180, 130 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] + + LINESTRING(160 70, 320 230) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] + + LINESTRING(160 70, 200 110, 280 190, 320 230) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] + + LINESTRING(70 50, 70 150) + + + MULTIPOLYGON( + ( + (0 0, 0 100, 140 100, 140 0, 0 0)), + ( + (20 170, 70 100, 130 170, 20 170))) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 200, 200 200, 110 110) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] + + LINESTRING(150 70, 160 110, 200 60, 150 70) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] + + LINESTRING(80 60, 120 40, 120 70, 80 60) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] + + LINESTRING(20 20, 200 20, 110 110, 20 20) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] + + LINESTRING(110 90, 170 30, 50 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] + + LINESTRING(110 110, 170 50, 170 110, 110 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] + + LINESTRING(110 90, 70 50, 130 50, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] + + LINESTRING(110 60, 20 150, 200 150, 110 60) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] + + LINESTRING(110 130, 110 70, 200 100, 110 130) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] + + LINESTRING(110 90, 160 40, 60 40, 110 90) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] + + LINESTRING(110 100, 40 30, 180 30, 110 100) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] + + LINESTRING(110 110, 180 30, 40 30, 110 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] + + LINESTRING(110 90, 180 30, 40 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] + + LINESTRING(110 90, 50 30, 180 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] + + LINESTRING(110 110, 200 200, 200 110, 110 200) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] + + LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 180 40, 110 40, 110 180) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] + + LINESTRING(110 60, 50 30, 170 30, 90 70) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] + + LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (200 200, 110 110, 20 210, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (60 180, 60 110, 160 110, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (200 200, 110 110, 20 200, 110 200, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 50, 110 170, 110 70, 110 150, 200 150)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 60, 110 160, 200 160)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 60, 110 160, 200 160)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + + MULTILINESTRING( + (110 100, 40 30, 180 30), + (170 30, 110 90, 50 30)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + + MULTILINESTRING( + (110 110, 60 40, 70 20, 150 20, 170 40), + (180 30, 40 30, 110 80)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 110, 200 110, 200 160), + (110 110, 200 110, 200 70, 20 150)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 160, 70 110, 150 110, 200 160), + (110 110, 20 110, 50 80, 70 110, 200 110)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 110, 20 170, 20 130, 200 90)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + false + false + false + false + false + false + true + false + true + false + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateLC.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateLC.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateLC.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateLC.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,57 @@ + + + + +LC - topographically equal with no boundary + + LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) + + + MULTILINESTRING( + (0 0, 0 50), + (0 50, 50 50), + (50 50, 50 0), + (50 0, 0 0)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +LC - equal with boundary intersection + + LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) + + + MULTILINESTRING( + (0 0, 60 0), + (60 0, 120 0), + (60 0, 60 60)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelateLL.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelateLL.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelateLL.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelateLL.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,3388 @@ + + + + +L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 40, 60 120) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(60 240, 40 40) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] + + LINESTRING(40 40, 180 180) + + + LINESTRING(120 120, 20 200) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(60 240, 120 120) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] + + LINESTRING(40 40, 180 180) + + + LINESTRING(20 180, 140 140) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 120, 120 40) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(40 40, 100 100) + + + LINESTRING(40 40, 100 100) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100) + + + LINESTRING(100 100, 40 40) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 120, 120 160) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(20 20, 180 180) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(20 20, 110 110) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(50 50, 140 140) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] + + LINESTRING(180 180, 40 40) + + + LINESTRING(120 120, 260 260) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] + + LINESTRING(40 40, 180 180) + + + LINESTRING(260 260, 120 120) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] + + LINESTRING(40 40, 180 180) + + + LINESTRING(120 120, 260 260) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(40 40, 20 100, 40 160, 20 200) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(20 200, 40 160, 20 100, 40 40) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(80 240, 200 120, 100 100, 40 40) + + + LINESTRING(20 200, 40 160, 20 100, 40 40) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(20 20, 60 60, 250 160, 310 230) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(20 20, 110 110, 200 110, 320 230) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(60 110, 60 250, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] + + LINESTRING(60 110, 60 250, 360 210) + + + LINESTRING(360 210, 310 160, 110 160, 60 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(160 160, 240 240) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(240 240, 160 160) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 150, 110 100, 170 100, 110 230) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 120, 200 190, 150 240, 200 240) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 240, 150 240, 200 200, 200 120) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 230, 80 140, 120 140, 140 230) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(60 110, 200 110, 250 160, 300 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + + LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(60 110, 220 110, 250 160, 280 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + + LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(130 160, 160 110, 190 110, 230 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 160, 180 110, 250 160, 320 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(140 160, 180 80, 220 160, 250 80) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(20 130, 70 130, 160 40) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(40 160, 40 100, 110 40, 170 40) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(30 140, 80 140, 100 100, 200 30) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, + 240 80, 300 80, 270 110, 200 110) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, + 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, + 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, + 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, + 40 190, 230 190, 20 200, 230 200) + + + LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, + 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, + 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, + 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, + 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 240, 200 120, 100 100, 40 40) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(260 210, 240 130, 280 120, 260 40) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + + LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) + + + LINESTRING(140 130, 100 110, 120 60, 170 60) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(110 160, 310 160, 340 190) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(140 160, 250 160, 310 160, 340 190) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(110 160, 250 160, 310 160) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 190, 140 140, 40 40) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(240 200, 200 260, 80 240, 140 180) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(140 180, 80 240, 200 260, 240 200) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 80 240) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 80, 120 80, 200 80, 260 20) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(100 100, 200 120, 240 140, 280 240) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 100 100) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(80 20, 80 80, 240 80, 300 20) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, + 300 80) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] + + LINESTRING(100 100, 20 180, 180 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + + LINESTRING(20 100, 180 100, 100 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + + LINESTRING(100 40, 100 160, 180 160) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] + + LINESTRING(20 100, 100 100, 180 100, 100 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 160 40) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 180 20) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] + + LINESTRING(60 60, 100 100, 140 60) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] + + LINESTRING(100 100, 190 10, 190 100) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 160 40, 160 100) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] + + LINESTRING(60 140, 160 40, 160 140) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 140 80, 80 20, 80 140) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(20 140, 140 20, 100 20, 100 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 140 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 140, 80 20) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 80, 140 80) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + + LINESTRING(130 150, 220 150, 220 240) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 130 150, 250 150) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 250 150) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 130 150, 250 150) + + + LINESTRING(130 240, 130 20, 30 20, 130 150) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + + LINESTRING(30 150, 250 150) + + + LINESTRING(120 240, 120 20, 20 20, 120 170) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + LINESTRING(110 110, 200 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + + LINESTRING(110 110, 200 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(20 110, 200 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + LINESTRING(20 110, 200 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] + + LINESTRING(90 200, 90 130, 110 110, 150 200) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] + + LINESTRING(200 110, 110 110, 90 130, 90 200) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] + + LINESTRING(80 80, 150 80, 210 80) + + + MULTILINESTRING( + (20 20, 140 140), + (20 140, 140 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(40 80, 260 20, 160 200, 40 80) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(260 20, 40 80, 160 200, 260 20) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(100 100, 180 180, 20 180, 100 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(180 100, 20 100, 100 180, 180 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(180 180, 100 100, 20 180, 180 180) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] + + LINESTRING(20 180, 100 100, 20 20, 20 180) + + + LINESTRING(100 20, 100 180, 180 100, 100 20) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(170 20, 20 170, 170 170, 170 20) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 150, 90 210, 40 150) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(20 150, 170 150, 90 230, 20 150) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(200 20, 20 200, 200 200, 20 20) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] + + LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) + + + LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] + + LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + + LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] + + LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + + LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] + + LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) + + + LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + + LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + + LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + + LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + + LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + + MULTILINESTRING( + (70 20, 20 90, 70 170), + (70 170, 120 90, 70 20)) + + + MULTILINESTRING( + (70 20, 20 90, 70 170), + (70 170, 120 90, 70 20)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 140, 90 60, 90 20), + (170 20, 130 20, 20 20)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (130 100, 130 60, 90 20, 50 90)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (130 100, 90 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (120 100, 170 100, 90 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (120 100, 170 100, 90 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (130 140, 130 60, 90 20, 20 90, 90 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60, 20 140, 90 20)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 120 120, 90 90, 160 60)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 120 120, 90 90, 120 60, 160 60)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 90 90, 160 60)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelatePA.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelatePA.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelatePA.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelatePA.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,1018 @@ + + + + +P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(20 20) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/A-2-2: a point outside a convex polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(70 170) + + + POLYGON( + (110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(110 130) + + + POLYGON( + (20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/A-2-4: dim(0){A.P.Int = B.A.Ext} + + POINT(100 70) + + + POLYGON( + (20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(100 70) + + + POLYGON( + (20 150, 90 150, 40 50, 160 50, 110 150, 180 150, 180 20, 20 20, 20 150)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] + + POINT(60 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] + + POINT(110 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] + + POINT(160 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] + + POINT(100 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] + + POINT(60 160) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] + + POINT(190 90) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] + + POINT(190 190) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] + + POINT(360 20) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] + + POINT(130 130) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] + + POINT(280 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] + + POINT(150 100) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] + + POINT(100 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] + + POINT(140 120) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + + POINT(190 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (90 50, 150 110, 190 50, 90 50), + (190 50, 230 110, 290 50, 190 50)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + + POINT(180 90) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (180 140, 180 40, 80 40, 180 140), + (180 90, 210 140, 310 40, 230 40, 180 90)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] + + MULTIPOINT((20 80), (110 160), (20 160)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] + + MULTIPOINT((20 80), (60 120), (20 160)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] + + MULTIPOINT((10 80), (110 170), (110 120)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] + + MULTIPOINT((10 80), (110 170), (160 120)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] + + MULTIPOINT((20 120), (60 120), (110 120), (160 120), (200 120)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] + + MULTIPOINT((60 120), (110 120), (160 120)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] + + MULTIPOINT((60 120), (160 120), (160 40), (60 40)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT((20 150), (60 120), (110 80)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT((110 80), (160 120), (200 160)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT((110 80), (110 120), (110 160)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] + + MULTIPOINT((110 170), (110 80)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] + + MULTIPOINT((60 120), (160 120), (110 80), (110 170)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] + + MULTIPOINT((90 80), (130 80)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] + + MULTIPOINT((60 120), (160 120), (110 80)) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] + + MULTIPOINT((40 170), (40 90), (130 170)) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] + + MULTIPOINT((90 170), (280 170), (190 90)) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] + + MULTIPOINT((190 110), (150 70), (230 70)) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] + + POINT(100 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] + + POINT(20 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] + + POINT(60 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] + + POINT(110 110) + + + MULTIPOLYGON( + ( + (110 110, 20 200, 200 200, 110 110), + (110 110, 80 180, 140 180, 110 110)), + ( + (110 110, 20 20, 200 20, 110 110), + (110 110, 80 40, 140 40, 110 110))) + + + true + + false + true + false + false + false + false + true + false + true + false + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelatePL.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelatePL.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelatePL.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelatePL.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,2286 @@ + + + + +P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] + + POINT(110 200) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/L-2: a point and a zero-length line + + POINT(110 200) + + + LINESTRING(110 200, 110 200) + + + true + + true + true + true + false + false + false + true + false + false + true + + + +P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] + + POINT(90 80) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] + + POINT(340 240) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + + POINT(230 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] + + POINT(160 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + + POINT(90 150) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + + POINT(150 80) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] + + POINT(150 150) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + + POINT(100 20) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] + + POINT(20 20) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] + + POINT(220 220) + + + LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(110 20) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(220 20) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(110 20) + + + LINESTRING(220 220, 20 20, 220 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(20 20) + + + LINESTRING(220 220, 20 20, 220 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(20 110) + + + LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] + + POINT(20 200) + + + LINESTRING(20 200, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(80 140) + + + LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, + 20 140) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 160) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 160) + + + LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(140 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(110 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(140 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(110 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(90 130) + + + LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, + 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, + 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, + 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, + 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] + + POINT(110 200) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + true + false + + + +P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] + + POINT(110 200) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 200) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] + + MULTIPOINT((50 250), (90 220), (130 190)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] + + MULTIPOINT((180 180), (230 130), (280 80)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] + + MULTIPOINT((50 120), (90 80), (130 40)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] + + MULTIPOINT((300 280), (340 240), (380 200)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + false + false + false + true + false + true + false + + + +mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] + + MULTIPOINT((230 150), (260 120), (290 90)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] + + MULTIPOINT((200 190), (240 150), (270 110)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] + + MULTIPOINT((160 150), (190 120), (220 90)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] + + MULTIPOINT((120 190), (160 150), (200 110)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + false + false + true + false + false + true + false + false + false + + + +mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] + + MULTIPOINT((90 80), (160 150), (340 240)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + + MULTIPOINT((90 80), (160 150), (300 150)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT((90 80), (160 150), (240 150)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT((90 80), (130 120), (210 150)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT((130 120), (210 150), (340 200)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT((160 150), (240 150), (340 210)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + + MULTIPOINT((160 150), (300 150), (340 150)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] + + MULTIPOINT((160 150), (240 150), (340 240)) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + false + true + false + false + false + false + true + false + false + true + + + diff -Nru geos-3.7.1/tests/xmltester/tests/validate/TestRelatePP.xml geos-3.8.0/tests/xmltester/tests/validate/TestRelatePP.xml --- geos-3.7.1/tests/xmltester/tests/validate/TestRelatePP.xml 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tests/validate/TestRelatePP.xml 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,303 @@ + + + + +P/P: same point [dim(0){A.P.Int = B.P.Int}] + + POINT(20 20) + + + POINT(20 20) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +P/P: different point [dim(0){A.P.Int = B.P.Ext}] + + POINT(20 20) + + + POINT(40 60) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] + + POINT(40 40) + + + MULTIPOINT((20 20), (80 80), (20 120)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] + + POINT(20 20) + + + MULTIPOINT((20 20), (80 80), (20 120)) + + + true + + false + true + false + false + false + false + true + false + false + true + + + +mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] + + MULTIPOINT((40 40), (80 60), (120 100)) + + + MULTIPOINT((40 40), (80 60), (120 100)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] + + MULTIPOINT((40 40), (80 60), (120 100)) + + + MULTIPOINT((40 40), (120 100), (80 60)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] + + MULTIPOINT((40 40), (60 100), (100 60), (120 120)) + + + MULTIPOINT((20 120), (60 60), (100 100), (140 40)) + + + true + + false + false + false + false + true + false + false + false + false + false + + + +mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] + + MULTIPOINT((20 20), (80 70), (140 120), (200 170)) + + + MULTIPOINT((20 20), (80 70), (140 120), (200 170)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] + + MULTIPOINT((20 20), (140 120), (80 70), (200 170)) + + + MULTIPOINT((80 70), (20 20), (200 170), (140 120)) + + + true + + true + true + true + false + false + true + true + false + false + true + + + +mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] + + MULTIPOINT((20 20), (80 70), (140 120), (200 170)) + + + MULTIPOINT((80 70), (140 120)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] + + MULTIPOINT((80 70), (20 200), (200 170), (140 120)) + + + MULTIPOINT((140 120), (80 70)) + + + true + + true + false + true + false + false + false + true + false + false + false + + + +mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] + + MULTIPOINT((80 70), (20 20), (200 170), (140 120)) + + + MULTIPOINT((80 170), (140 120), (200 80)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + +mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} + + MULTIPOINT((80 70), (20 20), (200 170), (140 120)) + + + MULTIPOINT((80 170), (140 120), (200 80), (80 70)) + + + true + + false + false + false + false + false + false + true + true + false + false + + + diff -Nru geos-3.7.1/tests/xmltester/tinyxml/tinystr.cpp geos-3.8.0/tests/xmltester/tinyxml/tinystr.cpp --- geos-3.7.1/tests/xmltester/tinyxml/tinystr.cpp 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml/tinystr.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original file by Yves Berquin. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -/* - * THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005. - */ - - -#ifndef TIXML_USE_STL - -#include "tinystr.h" - -// Error value for find primitive -const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); - - -// Null rep. -TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; - - -void TiXmlString::reserve (size_type cap) -{ - if (cap > capacity()) - { - TiXmlString tmp; - tmp.init(length(), cap); - memcpy(tmp.start(), data(), length()); - swap(tmp); - } -} - - -TiXmlString& TiXmlString::assign(const char* str, size_type len) -{ - size_type cap = capacity(); - if (len > cap || cap > 3*(len + 8)) - { - TiXmlString tmp; - tmp.init(len); - memcpy(tmp.start(), str, len); - swap(tmp); - } - else - { - memmove(start(), str, len); - set_size(len); - } - return *this; -} - - -TiXmlString& TiXmlString::append(const char* str, size_type len) -{ - size_type newsize = length() + len; - if (newsize > capacity()) - { - reserve (newsize + capacity()); - } - memmove(finish(), str, len); - set_size(newsize); - return *this; -} - - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) -{ - TiXmlString tmp; - tmp.reserve(a.length() + b.length()); - tmp += a; - tmp += b; - return tmp; -} - -TiXmlString operator + (const TiXmlString & a, const char* b) -{ - TiXmlString tmp; - TiXmlString::size_type b_len = static_cast( strlen(b) ); - tmp.reserve(a.length() + b_len); - tmp += a; - tmp.append(b, b_len); - return tmp; -} - -TiXmlString operator + (const char* a, const TiXmlString & b) -{ - TiXmlString tmp; - TiXmlString::size_type a_len = static_cast( strlen(a) ); - tmp.reserve(a_len + b.length()); - tmp.append(a, a_len); - tmp += b; - return tmp; -} - - -#endif // TIXML_USE_STL diff -Nru geos-3.7.1/tests/xmltester/tinyxml/tinystr.h geos-3.8.0/tests/xmltester/tinyxml/tinystr.h --- geos-3.7.1/tests/xmltester/tinyxml/tinystr.h 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml/tinystr.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,319 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original file by Yves Berquin. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -/* - * THIS FILE WAS ALTERED BY Tyge Lovset, 7. April 2005. - * - * - completely rewritten. compact, clean, and fast implementation. - * - sizeof(TiXmlString) = pointer size (4 bytes on 32-bit systems) - * - fixed reserve() to work as per specification. - * - fixed buggy compares operator==(), operator<(), and operator>() - * - fixed operator+=() to take a const ref argument, following spec. - * - added "copy" constructor with length, and most compare operators. - * - added swap(), clear(), size(), capacity(), operator+(). - */ - -#ifndef TIXML_USE_STL - -#ifndef TIXML_STRING_INCLUDED -#define TIXML_STRING_INCLUDED - -#include -#include - -/* The support for explicit isn't that universal, and it isn't really - required - it is used to check that the TiXmlString class isn't incorrectly - used. Be nice to old compilers and macro it here: -*/ -#if defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - #define TIXML_EXPLICIT explicit -#elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - #define TIXML_EXPLICIT explicit -#else - #define TIXML_EXPLICIT -#endif - - -/* - TiXmlString is an emulation of a subset of the std::string template. - Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. - Only the member functions relevant to the TinyXML project have been implemented. - The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase - a string and there's no more room, we allocate a buffer twice as big as we need. -*/ -class TiXmlString -{ - public : - // The size type used - typedef size_t size_type; - - // Error value for find primitive - static const size_type npos; // = -1; - - - // TiXmlString empty constructor - TiXmlString () : rep_(&nullrep_) - { - } - - // TiXmlString copy constructor - TiXmlString ( const TiXmlString & copy) : rep_(nullptr) - { - init(copy.length()); - memcpy(start(), copy.data(), length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(nullptr) - { - init( static_cast( strlen(copy) )); - memcpy(start(), copy, length()); - } - - // TiXmlString constructor, based on a string - TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(nullptr) - { - init(len); - memcpy(start(), str, len); - } - - // TiXmlString destructor - ~TiXmlString () - { - quit(); - } - - // = operator - TiXmlString& operator = (const char * copy) - { - return assign( copy, (size_type)strlen(copy)); - } - - // = operator - TiXmlString& operator = (const TiXmlString & copy) - { - return assign(copy.start(), copy.length()); - } - - - // += operator. Maps to append - TiXmlString& operator += (const char * suffix) - { - return append(suffix, static_cast( strlen(suffix) )); - } - - // += operator. Maps to append - TiXmlString& operator += (char single) - { - return append(&single, 1); - } - - // += operator. Maps to append - TiXmlString& operator += (const TiXmlString & suffix) - { - return append(suffix.data(), suffix.length()); - } - - - // Convert a TiXmlString into a null-terminated char * - const char * c_str () const { return rep_->str; } - - // Convert a TiXmlString into a char * (need not be null terminated). - const char * data () const { return rep_->str; } - - // Return the length of a TiXmlString - size_type length () const { return rep_->size; } - - // Alias for length() - size_type size () const { return rep_->size; } - - // Checks if a TiXmlString is empty - bool empty () const { return rep_->size == 0; } - - // Return capacity of string - size_type capacity () const { return rep_->capacity; } - - - // single char extraction - const char& at (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // [] operator - char& operator [] (size_type index) const - { - assert( index < length() ); - return rep_->str[ index ]; - } - - // find a char in a string. Return TiXmlString::npos if not found - size_type find (char lookup) const - { - return find(lookup, 0); - } - - // find a char in a string from an offset. Return TiXmlString::npos if not found - size_type find (char tofind, size_type offset) const - { - if (offset >= length()) return npos; - - for (const char* p = c_str() + offset; *p != '\0'; ++p) - { - if (*p == tofind) return static_cast< size_type >( p - c_str() ); - } - return npos; - } - - void clear () - { - //Lee: - //The original was just too strange, though correct: - // TiXmlString().swap(*this); - //Instead use the quit & re-init: - quit(); - init(0,0); - } - - /* Function to reserve a big amount of data when we know we'll need it. Be aware that this - function DOES NOT clear the content of the TiXmlString if any exists. - */ - void reserve (size_type cap); - - TiXmlString& assign (const char* str, size_type len); - - TiXmlString& append (const char* str, size_type len); - - void swap (TiXmlString& other) - { - Rep* r = rep_; - rep_ = other.rep_; - other.rep_ = r; - } - - private: - - void init(size_type sz) { init(sz, sz); } - void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } - char* start() const { return rep_->str; } - char* finish() const { return rep_->str + rep_->size; } - - struct Rep - { - size_type size, capacity; - char str[1]; - }; - - void init(size_type sz, size_type cap) - { - if (cap) - { - // Lee: the original form: - // rep_ = static_cast(operator new(sizeof(Rep) + cap)); - // doesn't work in some cases of new being overloaded. Switching - // to the normal allocation, although use an 'int' for systems - // that are overly picky about structure alignment. - const size_type bytesNeeded = sizeof(Rep) + cap; - const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); - rep_ = reinterpret_cast( new int[ intsNeeded ] ); - - rep_->str[ rep_->size = sz ] = '\0'; - rep_->capacity = cap; - } - else - { - rep_ = &nullrep_; - } - } - - void quit() - { - if (rep_ != &nullrep_) - { - // The rep_ is really an array of ints. (see the allocator, above). - // Cast it back before delete, so the compiler won't incorrectly call destructors. - delete [] ( reinterpret_cast( rep_ ) ); - } - } - - Rep * rep_; - static Rep nullrep_; - -} ; - - -inline bool operator == (const TiXmlString & a, const TiXmlString & b) -{ - return ( a.length() == b.length() ) // optimization on some platforms - && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare -} -inline bool operator < (const TiXmlString & a, const TiXmlString & b) -{ - return strcmp(a.c_str(), b.c_str()) < 0; -} - -inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } -inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } -inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } -inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } - -inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } -inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } -inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } -inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } - -TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); -TiXmlString operator + (const TiXmlString & a, const char* b); -TiXmlString operator + (const char* a, const TiXmlString & b); - - -/* - TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. - Only the operators that we need for TinyXML have been developped. -*/ -class TiXmlOutStream : public TiXmlString -{ -public : - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const TiXmlString & in) - { - *this += in; - return *this; - } - - // TiXmlOutStream << operator. - TiXmlOutStream & operator << (const char * in) - { - *this += in; - return *this; - } - -} ; - -#endif // TIXML_STRING_INCLUDED -#endif // TIXML_USE_STL diff -Nru geos-3.7.1/tests/xmltester/tinyxml/tinyxml.cpp geos-3.8.0/tests/xmltester/tinyxml/tinyxml.cpp --- geos-3.7.1/tests/xmltester/tinyxml/tinyxml.cpp 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml/tinyxml.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1888 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include - -#ifdef TIXML_USE_STL -#include -#include -#endif - -#include "tinyxml.h" - - -bool TiXmlBase::condenseWhiteSpace = true; - -// Microsoft compiler security -FILE* TiXmlFOpen( const char* filename, const char* mode ) -{ - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - FILE* fp = 0; - errno_t err = fopen_s( &fp, filename, mode ); - if ( !err && fp ) - return fp; - return 0; - #else - return fopen( filename, mode ); - #endif -} - -void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) -{ - int i=0; - - while( i<(int)str.length() ) - { - unsigned char c = (unsigned char) str[i]; - - if ( c == '&' - && i < ( (int)str.length() - 2 ) - && str[i+1] == '#' - && str[i+2] == 'x' ) - { - // Hexadecimal character reference. - // Pass through unchanged. - // © -- copyright symbol, for example. - // - // The -1 is a bug fix from Rob Laveaux. It keeps - // an overflow from happening if there is no ';'. - // There are actually 2 ways to exit this loop - - // while fails (error case) and break (semicolon found). - // However, there is no mechanism (currently) for - // this function to return an error. - while ( i<(int)str.length()-1 ) - { - outString->append( str.c_str() + i, 1 ); - ++i; - if ( str[i] == ';' ) - break; - } - } - else if ( c == '&' ) - { - outString->append( entity[0].str, entity[0].strLength ); - ++i; - } - else if ( c == '<' ) - { - outString->append( entity[1].str, entity[1].strLength ); - ++i; - } - else if ( c == '>' ) - { - outString->append( entity[2].str, entity[2].strLength ); - ++i; - } - else if ( c == '\"' ) - { - outString->append( entity[3].str, entity[3].strLength ); - ++i; - } - else if ( c == '\'' ) - { - outString->append( entity[4].str, entity[4].strLength ); - ++i; - } - else if ( c < 32 ) - { - // Easy pass at non-alpha/numeric/symbol - // Below 32 is symbolic. - char buf[ 32 ]; - - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); - #else - sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); - #endif - - //*ME: warning C4267: convert 'size_t' to 'int' - //*ME: Int-Cast to make compiler happy ... - outString->append( buf, (int)strlen( buf ) ); - ++i; - } - else - { - //char realc = (char) c; - //outString->append( &realc, 1 ); - *outString += (char) c; // somewhat more efficient function call. - ++i; - } - } -} - - -TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() -{ - parent = nullptr; - type = _type; - firstChild = nullptr; - lastChild = nullptr; - prev = nullptr; - next = nullptr; -} - - -TiXmlNode::~TiXmlNode() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = nullptr; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } -} - - -void TiXmlNode::CopyTo( TiXmlNode* target ) const -{ - target->SetValue (value.c_str() ); - target->userData = userData; -} - - -void TiXmlNode::Clear() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = nullptr; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } - - firstChild = nullptr; - lastChild = nullptr; -} - - -TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) -{ - assert( node->parent == nullptr || node->parent == this ); - assert( node->GetDocument() == nullptr || node->GetDocument() == this->GetDocument() ); - - if ( node->Type() == TiXmlNode::DOCUMENT ) - { - delete node; - if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - - node->parent = this; - - node->prev = lastChild; - node->next = nullptr; - - if ( lastChild ) - lastChild->next = node; - else - firstChild = node; // it was an empty list. - - lastChild = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) -{ - if ( addThis.Type() == TiXmlNode::DOCUMENT ) - { - if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return nullptr; - - return LinkEndChild( node ); -} - - -TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) -{ - if ( !beforeThis || beforeThis->parent != this ) { - return nullptr; - } - if ( addThis.Type() == TiXmlNode::DOCUMENT ) - { - if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return nullptr; - node->parent = this; - - node->next = beforeThis; - node->prev = beforeThis->prev; - if ( beforeThis->prev ) - { - beforeThis->prev->next = node; - } - else - { - assert( firstChild == beforeThis ); - firstChild = node; - } - beforeThis->prev = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) -{ - if ( !afterThis || afterThis->parent != this ) { - return nullptr; - } - if ( addThis.Type() == TiXmlNode::DOCUMENT ) - { - if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return nullptr; - node->parent = this; - - node->prev = afterThis; - node->next = afterThis->next; - if ( afterThis->next ) - { - afterThis->next->prev = node; - } - else - { - assert( lastChild == afterThis ); - lastChild = node; - } - afterThis->next = node; - return node; -} - - -TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) -{ - if ( replaceThis->parent != this ) - return nullptr; - - TiXmlNode* node = withThis.Clone(); - if ( !node ) - return nullptr; - - node->next = replaceThis->next; - node->prev = replaceThis->prev; - - if ( replaceThis->next ) - replaceThis->next->prev = node; - else - lastChild = node; - - if ( replaceThis->prev ) - replaceThis->prev->next = node; - else - firstChild = node; - - delete replaceThis; - node->parent = this; - return node; -} - - -bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) -{ - if ( removeThis->parent != this ) - { - assert( 0 ); - return false; - } - - if ( removeThis->next ) - removeThis->next->prev = removeThis->prev; - else - lastChild = removeThis->prev; - - if ( removeThis->prev ) - removeThis->prev->next = removeThis->next; - else - firstChild = removeThis->next; - - delete removeThis; - return true; -} - -const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = firstChild; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return nullptr; -} - - -const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = lastChild; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return nullptr; -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild(); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling(); - } -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild( val ); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling( val ); - } -} - - -const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = next; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return nullptr; -} - - -const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = prev; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return nullptr; -} - - -void TiXmlElement::RemoveAttribute( const char * name ) -{ - #ifdef TIXML_USE_STL - TIXML_STRING str( name ); - TiXmlAttribute* node = attributeSet.Find( str ); - #else - TiXmlAttribute* node = attributeSet.Find( name ); - #endif - if ( node ) - { - attributeSet.Remove( node ); - delete node; - } -} - -const TiXmlElement* TiXmlNode::FirstChildElement() const -{ - const TiXmlNode* node; - - for ( node = FirstChild(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return nullptr; -} - - -const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = FirstChild( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return nullptr; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement() const -{ - const TiXmlNode* node; - - for ( node = NextSibling(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return nullptr; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = NextSibling( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return nullptr; -} - - -const TiXmlDocument* TiXmlNode::GetDocument() const -{ - const TiXmlNode* node; - - for( node = this; node; node = node->parent ) - { - if ( node->ToDocument() ) - return node->ToDocument(); - } - return nullptr; -} - - -TiXmlElement::TiXmlElement (const char * _value) - : TiXmlNode( TiXmlNode::ELEMENT ) -{ - firstChild = lastChild = nullptr; - value = _value; -} - - -#ifdef TIXML_USE_STL -TiXmlElement::TiXmlElement( const std::string& _value ) - : TiXmlNode( TiXmlNode::ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} -#endif - - -TiXmlElement::TiXmlElement( const TiXmlElement& copy) - : TiXmlNode( TiXmlNode::ELEMENT ) -{ - firstChild = lastChild = nullptr; - copy.CopyTo( this ); -} - - -void TiXmlElement::operator=( const TiXmlElement& base ) -{ - ClearThis(); - base.CopyTo( this ); -} - - -TiXmlElement::~TiXmlElement() -{ - ClearThis(); -} - - -void TiXmlElement::ClearThis() -{ - Clear(); - while( attributeSet.First() ) - { - TiXmlAttribute* node = attributeSet.First(); - attributeSet.Remove( node ); - delete node; - } -} - - -const char* TiXmlElement::Attribute( const char* name ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - return node->Value(); - return nullptr; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - return &node->ValueStr(); - return 0; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, int* i ) const -{ - const char* s = Attribute( name ); - if ( i ) - { - if ( s ) { - *i = atoi( s ); - } - else { - *i = 0; - } - } - return s; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const -{ - const std::string* s = Attribute( name ); - if ( i ) - { - if ( s ) { - *i = atoi( s->c_str() ); - } - else { - *i = 0; - } - } - return s; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, double* d ) const -{ - const char* s = Attribute( name ); - if ( d ) - { - if ( s ) { - *d = atof( s ); - } - else { - *d = 0; - } - } - return s; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const -{ - const std::string* s = Attribute( name ); - if ( d ) - { - if ( s ) { - *d = atof( s->c_str() ); - } - else { - *d = 0; - } - } - return s; -} -#endif - - -int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - return node->QueryIntValue( ival ); -} - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - return node->QueryIntValue( ival ); -} -#endif - - -int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - return node->QueryDoubleValue( dval ); -} - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - return node->QueryDoubleValue( dval ); -} -#endif - - -void TiXmlElement::SetAttribute( const char * name, int val ) -{ - char buf[64]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%d", val ); - #else - sprintf( buf, "%d", val ); - #endif - SetAttribute( name, buf ); -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& name, int val ) -{ - std::ostringstream oss; - oss << val; - SetAttribute( name, oss.str() ); -} -#endif - - -void TiXmlElement::SetDoubleAttribute( const char * name, double val ) -{ - char buf[256]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%f", val ); - #else - sprintf( buf, "%f", val ); - #endif - SetAttribute( name, buf ); -} - - -void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) -{ - #ifdef TIXML_USE_STL - TIXML_STRING _name( cname ); - TIXML_STRING _value( cvalue ); - #else - const char* _name = cname; - const char* _value = cvalue; - #endif - - TiXmlAttribute* node = attributeSet.Find( _name ); - if ( node ) - { - node->SetValue( _value ); - return; - } - - TiXmlAttribute* attrib = new TiXmlAttribute( cname, cvalue ); - if ( attrib ) - { - attributeSet.Add( attrib ); - } - else - { - TiXmlDocument* document = GetDocument(); - if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& name, const std::string& _value ) -{ - TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - { - node->SetValue( _value ); - return; - } - - TiXmlAttribute* attrib = new TiXmlAttribute( name, _value ); - if ( attrib ) - { - attributeSet.Add( attrib ); - } - else - { - TiXmlDocument* document = GetDocument(); - if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN ); - } -} -#endif - - -void TiXmlElement::Print( FILE* cfile, int depth ) const -{ - int i; - assert( cfile ); - for ( i=0; iNext() ) - { - fprintf( cfile, " " ); - attrib->Print( cfile, depth ); - } - - // There are 3 different formatting approaches: - // 1) An element without children is printed as a node - // 2) An element with only a text child is printed as text - // 3) An element with children is printed on multiple lines. - TiXmlNode* node; - if ( !firstChild ) - { - fprintf( cfile, " />" ); - } - else if ( firstChild == lastChild && firstChild->ToText() ) - { - fprintf( cfile, ">" ); - firstChild->Print( cfile, depth + 1 ); - fprintf( cfile, "", value.c_str() ); - } - else - { - fprintf( cfile, ">" ); - - for ( node = firstChild; node; node=node->NextSibling() ) - { - if ( !node->ToText() ) - { - fprintf( cfile, "\n" ); - } - node->Print( cfile, depth+1 ); - } - fprintf( cfile, "\n" ); - for( i=0; i", value.c_str() ); - } -} - - -void TiXmlElement::CopyTo( TiXmlElement* target ) const -{ - // superclass: - TiXmlNode::CopyTo( target ); - - // Element class: - // Clone the attributes, then clone the children. - const TiXmlAttribute* attribute = nullptr; - for( attribute = attributeSet.First(); - attribute; - attribute = attribute->Next() ) - { - target->SetAttribute( attribute->Name(), attribute->Value() ); - } - - TiXmlNode* node = nullptr; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - -bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this, attributeSet.First() ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -TiXmlNode* TiXmlElement::Clone() const -{ - TiXmlElement* clone = new TiXmlElement( Value() ); - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -const char* TiXmlElement::GetText() const -{ - const TiXmlNode* child = this->FirstChild(); - if ( child ) { - const TiXmlText* childText = child->ToText(); - if ( childText ) { - return childText->Value(); - } - } - return nullptr; -} - - -TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - ClearError(); -} - -TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} - - -#ifdef TIXML_USE_STL -TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} -#endif - - -TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::DOCUMENT ) -{ - copy.CopyTo( this ); -} - - -void TiXmlDocument::operator=( const TiXmlDocument& copy ) -{ - Clear(); - copy.CopyTo( this ); -} - - -bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) -{ - // See STL_STRING_BUG below. - //StringToBuffer buf( value ); - - return LoadFile( Value(), encoding ); -} - - -bool TiXmlDocument::SaveFile() const -{ - // See STL_STRING_BUG below. -// StringToBuffer buf( value ); -// -// if ( buf.buffer && SaveFile( buf.buffer ) ) -// return true; -// -// return false; - return SaveFile( Value() ); -} - -bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) -{ - // There was a really terrifying little bug here. The code: - // value = filename - // in the STL case, cause the assignment method of the std::string to - // be called. What is strange, is that the std::string had the same - // address as it's c_str() method, and so bad things happen. Looks - // like a bug in the Microsoft STL implementation. - // Add an extra string to avoid the crash. - TIXML_STRING filename( _filename ); - value = filename; - - // reading in binary mode so that tinyxml can normalize the EOL - FILE* file = TiXmlFOpen( value.c_str (), "rb" ); - - if ( file ) - { - bool result = LoadFile( file, encoding ); - fclose( file ); - return result; - } - else - { - SetError( TIXML_ERROR_OPENING_FILE, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return false; - } -} - -bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) -{ - if ( !file ) - { - SetError( TIXML_ERROR_OPENING_FILE, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Delete the existing data: - Clear(); - location.Clear(); - - // Get the file size, so we can pre-allocate the string. HUGE speed impact. - long length = 0; - fseek( file, 0, SEEK_END ); - length = ftell( file ); - fseek( file, 0, SEEK_SET ); - - // Strange case, but good to handle up front. - if ( length <= 0 ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // If we have a file, assume it is all one big XML file, and read it in. - // The document parser may decide the document ends sooner than the entire file, however. - TIXML_STRING data; - data.reserve( length ); - - // Subtle bug here. TinyXml did use fgets. But from the XML spec: - // 2.11 End-of-Line Handling - // - // - // ...the XML processor MUST behave as if it normalized all line breaks in external - // parsed entities (including the document entity) on input, before parsing, by translating - // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to - // a single #xA character. - // - // - // It is not clear fgets does that, and certainly isn't clear it works cross platform. - // Generally, you expect fgets to translate from the convention of the OS to the c/unix - // convention, and not work generally. - - /* - while( fgets( buf, sizeof(buf), file ) ) - { - data += buf; - } - */ - - char* buf = new char[ length+1 ]; - buf[0] = 0; - - if ( fread( buf, length, 1, file ) != 1 ) { - delete [] buf; - SetError( TIXML_ERROR_OPENING_FILE, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return false; - } - - const char* lastPos = buf; - const char* p = buf; - - buf[length] = 0; - while( *p ) { - assert( p < (buf+length) ); - if ( *p == 0xa ) { - // Newline character. No special rules for this. Append all the characters - // since the last string, and include the newline. - data.append( lastPos, (p-lastPos+1) ); // append, include the newline - ++p; // move past the newline - lastPos = p; // and point to the new buffer (may be 0) - assert( p <= (buf+length) ); - } - else if ( *p == 0xd ) { - // Carriage return. Append what we have so far, then - // handle moving forward in the buffer. - if ( (p-lastPos) > 0 ) { - data.append( lastPos, p-lastPos ); // do not add the CR - } - data += (char)0xa; // a proper newline - - if ( *(p+1) == 0xa ) { - // Carriage return - new line sequence - p += 2; - lastPos = p; - assert( p <= (buf+length) ); - } - else { - // it was followed by something else...that is presumably characters again. - ++p; - lastPos = p; - assert( p <= (buf+length) ); - } - } - else { - ++p; - } - } - // Handle any left over characters. - if ( p-lastPos ) { - data.append( lastPos, p-lastPos ); - } - delete [] buf; - buf = nullptr; - - Parse( data.c_str(), nullptr, encoding ); - - if ( Error() ) - return false; - else - return true; -} - - -bool TiXmlDocument::SaveFile( const char * filename ) const -{ - // The old c stuff lives on... - FILE* fp = TiXmlFOpen( filename, "w" ); - if ( fp ) - { - bool result = SaveFile( fp ); - fclose( fp ); - return result; - } - return false; -} - - -bool TiXmlDocument::SaveFile( FILE* fp ) const -{ - if ( useMicrosoftBOM ) - { - const unsigned char TIXML_UTF_LEAD_0 = 0xefU; - const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; - const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - - fputc( TIXML_UTF_LEAD_0, fp ); - fputc( TIXML_UTF_LEAD_1, fp ); - fputc( TIXML_UTF_LEAD_2, fp ); - } - Print( fp, 0 ); - return (ferror(fp) == 0); -} - - -void TiXmlDocument::CopyTo( TiXmlDocument* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->error = error; - target->errorId = errorId; - target->errorDesc = errorDesc; - target->tabsize = tabsize; - target->errorLocation = errorLocation; - target->useMicrosoftBOM = useMicrosoftBOM; - - TiXmlNode* node = nullptr; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - - -TiXmlNode* TiXmlDocument::Clone() const -{ - TiXmlDocument* clone = new TiXmlDocument(); - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -void TiXmlDocument::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - node->Print( cfile, depth ); - fprintf( cfile, "\n" ); - } -} - - -bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -const TiXmlAttribute* TiXmlAttribute::Next() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return nullptr; - return next; -} - -/* -TiXmlAttribute* TiXmlAttribute::Next() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} -*/ - -const TiXmlAttribute* TiXmlAttribute::Previous() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return nullptr; - return prev; -} - -/* -TiXmlAttribute* TiXmlAttribute::Previous() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} -*/ - -void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - TIXML_STRING n, v; - - EncodeString( name, &n ); - EncodeString( value, &v ); - - if (value.find ('\"') == TIXML_STRING::npos) { - if ( cfile ) { - fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; - } - } - else { - if ( cfile ) { - fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; - } - } -} - - -int TiXmlAttribute::QueryIntValue( int* ival ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -int TiXmlAttribute::QueryDoubleValue( double* dval ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -void TiXmlAttribute::SetIntValue( int _value ) -{ - char buf [64]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); - #else - sprintf (buf, "%d", _value); - #endif - SetValue (buf); -} - -void TiXmlAttribute::SetDoubleValue( double _value ) -{ - char buf [256]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%f", _value); - #else - sprintf (buf, "%f", _value); - #endif - SetValue (buf); -} - -int TiXmlAttribute::IntValue() const -{ - return atoi (value.c_str ()); -} - -double TiXmlAttribute::DoubleValue() const -{ - return atof (value.c_str ()); -} - - -TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::COMMENT ) -{ - copy.CopyTo( this ); -} - - -void TiXmlComment::operator=( const TiXmlComment& base ) -{ - Clear(); - base.CopyTo( this ); -} - - -void TiXmlComment::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlComment::CopyTo( TiXmlComment* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlComment::Clone() const -{ - TiXmlComment* clone = new TiXmlComment(); - - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -void TiXmlText::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - if ( cdata ) - { - int i; - fprintf( cfile, "\n" ); - for ( i=0; i\n", value.c_str() ); // unformatted output - } - else - { - TIXML_STRING buffer; - EncodeString( value, &buffer ); - fprintf( cfile, "%s", buffer.c_str() ); - } -} - - -void TiXmlText::CopyTo( TiXmlText* target ) const -{ - TiXmlNode::CopyTo( target ); - target->cdata = cdata; -} - - -bool TiXmlText::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlText::Clone() const -{ - TiXmlText* clone = nullptr; - clone = new TiXmlText( "" ); - - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -TiXmlDeclaration::TiXmlDeclaration( const char * _version, - const char * _encoding, - const char * _standalone ) - : TiXmlNode( TiXmlNode::DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} - - -#ifdef TIXML_USE_STL -TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ) - : TiXmlNode( TiXmlNode::DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} -#endif - - -TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) - : TiXmlNode( TiXmlNode::DECLARATION ) -{ - copy.CopyTo( this ); -} - - -void TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) -{ - Clear(); - copy.CopyTo( this ); -} - - -void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - if ( cfile ) fprintf( cfile, "" ); - if ( str ) (*str) += "?>"; -} - - -void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->version = version; - target->encoding = encoding; - target->standalone = standalone; -} - - -bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlDeclaration::Clone() const -{ - TiXmlDeclaration* clone = new TiXmlDeclaration(); - - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -void TiXmlUnknown::Print( FILE* cfile, int depth ) const -{ - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlUnknown::Clone() const -{ - TiXmlUnknown* clone = new TiXmlUnknown(); - - if ( !clone ) - return nullptr; - - CopyTo( clone ); - return clone; -} - - -TiXmlAttributeSet::TiXmlAttributeSet() -{ - sentinel.next = &sentinel; - sentinel.prev = &sentinel; -} - - -TiXmlAttributeSet::~TiXmlAttributeSet() -{ - assert( sentinel.next == &sentinel ); - assert( sentinel.prev == &sentinel ); -} - - -void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) -{ - #ifdef TIXML_USE_STL - assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. - #else - assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. - #endif - - addMe->next = &sentinel; - addMe->prev = sentinel.prev; - - sentinel.prev->next = addMe; - sentinel.prev = addMe; -} - -void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node == removeMe ) - { - node->prev->next = node->next; - node->next->prev = node->prev; - node->next = nullptr; - node->prev = nullptr; - return; - } - } - assert( 0 ); // we tried to remove a non-linked attribute. -} - - -#ifdef TIXML_USE_STL -const TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const -{ - for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->name == name ) - return node; - } - return 0; -} - -/* -TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->name == name ) - return node; - } - return 0; -} -*/ -#endif - - -const TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const -{ - for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( strcmp( node->name.c_str(), name ) == 0 ) - return node; - } - return nullptr; -} - -/* -TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( strcmp( node->name.c_str(), name ) == 0 ) - return node; - } - return 0; -} -*/ - -#ifdef TIXML_USE_STL -std::istream& operator>> (std::istream & in, TiXmlNode & base) -{ - TIXML_STRING tag; - tag.reserve( 8 * 1000 ); - base.StreamIn( &in, &tag ); - - base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); - return in; -} -#endif - - -#ifdef TIXML_USE_STL -std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out << printer.Str(); - - return out; -} - - -std::string& operator<< (std::string& out, const TiXmlNode& base ) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out.append( printer.Str() ); - - return out; -} -#endif - - -TiXmlHandle TiXmlHandle::FirstChild() const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement() const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::Child( int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild(); - for ( i=0; - child && iNextSibling(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild( value ); - for ( i=0; - child && iNextSibling( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement(); - for ( i=0; - child && iNextSiblingElement(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement( value ); - for ( i=0; - child && iNextSiblingElement( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( nullptr ); -} - - -bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) -{ - DoIndent(); - buffer += "<"; - buffer += element.Value(); - - for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) - { - buffer += " "; - attrib->Print( nullptr, 0, &buffer ); - } - - if ( !element.FirstChild() ) - { - buffer += " />"; - DoLineBreak(); - } - else - { - buffer += ">"; - if ( element.FirstChild()->ToText() - && element.LastChild() == element.FirstChild() - && element.FirstChild()->ToText()->CDATA() == false ) - { - simpleTextPrint = true; - // no DoLineBreak()! - } - else - { - DoLineBreak(); - } - } - ++depth; - return true; -} - - -bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) -{ - --depth; - if ( !element.FirstChild() ) - { - // nothing. - } - else - { - if ( simpleTextPrint ) - { - simpleTextPrint = false; - } - else - { - DoIndent(); - } - buffer += ""; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlText& text ) -{ - if ( text.CDATA() ) - { - DoIndent(); - buffer += ""; - DoLineBreak(); - } - else if ( simpleTextPrint ) - { - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - } - else - { - DoIndent(); - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) -{ - DoIndent(); - declaration.Print( nullptr, 0, &buffer ); - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlComment& comment ) -{ - DoIndent(); - buffer += ""; - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) -{ - DoIndent(); - buffer += "<"; - buffer += unknown.Value(); - buffer += ">"; - DoLineBreak(); - return true; -} - diff -Nru geos-3.7.1/tests/xmltester/tinyxml/tinyxmlerror.cpp geos-3.8.0/tests/xmltester/tinyxml/tinyxmlerror.cpp --- geos-3.7.1/tests/xmltester/tinyxml/tinyxmlerror.cpp 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml/tinyxmlerror.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include "tinyxml.h" - -// The goal of the seperate error file is to make the first -// step towards localization. tinyxml (currently) only supports -// english error messages, but the could now be translated. -// -// It also cleans up the code a bit. -// - -const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] = -{ - "No error", - "Error", - "Failed to open file", - "Memory allocation failed.", - "Error parsing Element.", - "Failed to read Element name", - "Error reading Element value.", - "Error reading Attributes.", - "Error: empty tag.", - "Error reading end tag.", - "Error parsing Unknown.", - "Error parsing Comment.", - "Error parsing Declaration.", - "Error document empty.", - "Error null (0) or unexpected EOF found in input stream.", - "Error parsing CDATA.", - "Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.", -}; diff -Nru geos-3.7.1/tests/xmltester/tinyxml/tinyxml.h geos-3.8.0/tests/xmltester/tinyxml/tinyxml.h --- geos-3.7.1/tests/xmltester/tinyxml/tinyxml.h 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml/tinyxml.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,1802 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TINYXML_INCLUDED -#define TINYXML_INCLUDED - -#ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4530 ) -#pragma warning( disable : 4786 ) -#endif - -#include -#include -#include -#include -#include - -// Help out windows: -#if defined( _DEBUG ) && !defined( DEBUG ) -#define DEBUG -#endif - -#ifdef TIXML_USE_STL - #include - #include - #include - #define TIXML_STRING std::string -#else - #include "tinystr.h" - #define TIXML_STRING TiXmlString -#endif - -// Deprecated library function hell. Compilers want to use the -// new safe versions. This probably doesn't fully address the problem, -// but it gets closer. There are too many compilers for me to fully -// test. If you get compilation troubles, undefine TIXML_SAFE -#define TIXML_SAFE - -#ifdef TIXML_SAFE - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - // Microsoft visual studio, version 2005 and higher. - #define TIXML_SNPRINTF _snprintf_s - #define TIXML_SNSCANF _snscanf_s - #define TIXML_SSCANF sscanf_s - #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - //#pragma message( "Using _sn* functions." ) - #define TIXML_SNPRINTF _snprintf - #define TIXML_SNSCANF _snscanf - #define TIXML_SSCANF sscanf - #elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - //#warning( "Using sn* functions." ) - #define TIXML_SNPRINTF snprintf - #define TIXML_SNSCANF snscanf - #define TIXML_SSCANF sscanf - #else - #define TIXML_SSCANF sscanf - #endif -#endif - -class TiXmlDocument; -class TiXmlElement; -class TiXmlComment; -class TiXmlUnknown; -class TiXmlAttribute; -class TiXmlText; -class TiXmlDeclaration; -class TiXmlParsingData; - -const int TIXML_MAJOR_VERSION = 2; -const int TIXML_MINOR_VERSION = 5; -const int TIXML_PATCH_VERSION = 3; - -/* Internal structure for tracking location of items - in the XML file. -*/ -struct TiXmlCursor -{ - TiXmlCursor() { Clear(); } - void Clear() { row = col = -1; } - - int row; // 0 based. - int col; // 0 based. -}; - - -/** - If you call the Accept() method, it requires being passed a TiXmlVisitor - class to handle callbacks. For nodes that contain other nodes (Document, Element) - you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves - are simple called with Visit(). - - If you return 'true' from a Visit method, recursive parsing will continue. If you return - false, no children of this node or its sibilings will be Visited. - - All flavors of Visit methods have a default implementation that returns 'true' (continue - visiting). You need to only override methods that are interesting to you. - - Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. - - You should never change the document from a callback. - - @sa TiXmlNode::Accept() -*/ -class TiXmlVisitor -{ -public: - virtual ~TiXmlVisitor() {} - - /// Visit a document. - virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } - /// Visit a document. - virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } - - /// Visit an element. - virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } - /// Visit an element. - virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } - - /// Visit a declaration - virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } - /// Visit a text node - virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } - /// Visit a comment node - virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } - /// Visit an unknown node - virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } -}; - -// Only used by Attribute::Query functions -enum -{ - TIXML_SUCCESS, - TIXML_NO_ATTRIBUTE, - TIXML_WRONG_TYPE -}; - - -// Used by the parsing routines. -enum TiXmlEncoding -{ - TIXML_ENCODING_UNKNOWN, - TIXML_ENCODING_UTF8, - TIXML_ENCODING_LEGACY -}; - -const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; - -/** TiXmlBase is a base class for every class in TinyXml. - It does little except to establish that TinyXml classes - can be printed and provide some utility functions. - - In XML, the document and elements can contain - other elements and other types of nodes. - - @verbatim - A Document can contain: Element (container or leaf) - Comment (leaf) - Unknown (leaf) - Declaration( leaf ) - - An Element can contain: Element (container or leaf) - Text (leaf) - Attributes (not on tree) - Comment (leaf) - Unknown (leaf) - - A Decleration contains: Attributes (not on tree) - @endverbatim -*/ -class TiXmlBase -{ - friend class TiXmlNode; - friend class TiXmlElement; - friend class TiXmlDocument; - -public: - TiXmlBase() : userData(nullptr) {} - virtual ~TiXmlBase() {} - - /** All TinyXml classes can print themselves to a filestream - or the string class (TiXmlString in non-STL mode, std::string - in STL mode.) Either or both cfile and str can be null. - - This is a formatted print, and will insert - tabs and newlines. - - (For an unformatted stream, use the << operator.) - */ - virtual void Print( FILE* cfile, int depth ) const = 0; - - /** The world does not agree on whether white space should be kept or - not. In order to make everyone happy, these global, static functions - are provided to set whether or not TinyXml will condense all white space - into a single space or not. The default is to condense. Note changing this - value is not thread safe. - */ - static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } - - /// Return the current white space setting. - static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } - - /** Return the position, in the original source file, of this node or attribute. - The row and column are 1-based. (That is the first row and first column is - 1,1). If the returns values are 0 or less, then the parser does not have - a row and column value. - - Generally, the row and column value will be set when the TiXmlDocument::Load(), - TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set - when the DOM was created from operator>>. - - The values reflect the initial load. Once the DOM is modified programmatically - (by adding or changing nodes and attributes) the new values will NOT update to - reflect changes in the document. - - There is a minor performance cost to computing the row and column. Computation - can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. - - @sa TiXmlDocument::SetTabSize() - */ - int Row() const { return location.row + 1; } - int Column() const { return location.col + 1; } ///< See Row() - - void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. - void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. - const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. - - // Table that returs, for a given lead byte, the total number of bytes - // in the UTF-8 sequence. - static const int utf8ByteTable[256]; - - virtual const char* Parse( const char* p, - TiXmlParsingData* data, - TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; - - /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, - or they will be transformed into entities! - */ - static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); - - enum - { - TIXML_NO_ERROR = 0, - TIXML_ERROR, - TIXML_ERROR_OPENING_FILE, - TIXML_ERROR_OUT_OF_MEMORY, - TIXML_ERROR_PARSING_ELEMENT, - TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, - TIXML_ERROR_READING_ELEMENT_VALUE, - TIXML_ERROR_READING_ATTRIBUTES, - TIXML_ERROR_PARSING_EMPTY, - TIXML_ERROR_READING_END_TAG, - TIXML_ERROR_PARSING_UNKNOWN, - TIXML_ERROR_PARSING_COMMENT, - TIXML_ERROR_PARSING_DECLARATION, - TIXML_ERROR_DOCUMENT_EMPTY, - TIXML_ERROR_EMBEDDED_NULL, - TIXML_ERROR_PARSING_CDATA, - TIXML_ERROR_DOCUMENT_TOP_ONLY, - - TIXML_ERROR_STRING_COUNT - }; - -protected: - - static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); - inline static bool IsWhiteSpace( char c ) - { - return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); - } - inline static bool IsWhiteSpace( int c ) - { - if ( c < 256 ) - return IsWhiteSpace( (char) c ); - return false; // Again, only truly correct for English/Latin...but usually works. - } - - #ifdef TIXML_USE_STL - static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); - static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); - #endif - - /* Reads an XML name into the string provided. Returns - a pointer just past the last character of the name, - or 0 if the function has an error. - */ - static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); - - /* Reads text. Returns a pointer past the given end tag. - Wickedly complex options, but it keeps the (sensitive) code in one place. - */ - static const char* ReadText( const char* in, // where to start - TIXML_STRING* text, // the string read - bool ignoreWhiteSpace, // whether to keep the white space - const char* endTag, // what ends this text - bool ignoreCase, // whether to ignore case in the end tag - TiXmlEncoding encoding ); // the current encoding - - // If an entity has been found, transform it into a character. - static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); - - // Get a character, while interpreting entities. - // The length can be from 0 to 4 bytes. - inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) - { - assert( p ); - if ( encoding == TIXML_ENCODING_UTF8 ) - { - *length = utf8ByteTable[ *((const unsigned char*)p) ]; - assert( *length >= 0 && *length < 5 ); - } - else - { - *length = 1; - } - - if ( *length == 1 ) - { - if ( *p == '&' ) - return GetEntity( p, _value, length, encoding ); - *_value = *p; - return p+1; - } - else if ( *length ) - { - //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), - // and the null terminator isn't needed - for( int i=0; p[i] && i<*length; ++i ) { - _value[i] = p[i]; - } - return p + (*length); - } - else - { - // Not valid text. - return nullptr; - } - } - - // Return true if the next characters in the stream are any of the endTag sequences. - // Ignore case only works for english, and should only be relied on when comparing - // to English words: StringEqual( p, "version", true ) is fine. - static bool StringEqual( const char* p, - const char* endTag, - bool ignoreCase, - TiXmlEncoding encoding ); - - static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; - - TiXmlCursor location; - - /// Field containing a generic user pointer - void* userData; - - // None of these methods are reliable for any language except English. - // Good for approximation, not great for accuracy. - static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); - static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); - inline static int ToLower( int v, TiXmlEncoding encoding ) - { - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( v < 128 ) return tolower( v ); - return v; - } - else - { - return tolower( v ); - } - } - static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); - -private: - TiXmlBase( const TiXmlBase& ); // not implemented. - void operator=( const TiXmlBase& base ); // not allowed. - - struct Entity - { - const char* str; - unsigned int strLength; - char chr; - }; - enum - { - NUM_ENTITY = 5, - MAX_ENTITY_LENGTH = 6 - - }; - static Entity entity[ NUM_ENTITY ]; - static bool condenseWhiteSpace; -}; - - -/** The parent class for everything in the Document Object Model. - (Except for attributes). - Nodes have siblings, a parent, and children. A node can be - in a document, or stand on its own. The type of a TiXmlNode - can be queried, and it can be cast to its more defined type. -*/ -class TiXmlNode : public TiXmlBase -{ - friend class TiXmlDocument; - friend class TiXmlElement; - -public: - #ifdef TIXML_USE_STL - - /** An input stream operator, for every class. Tolerant of newlines and - formatting, but doesn't expect them. - */ - friend std::istream& operator >> (std::istream& in, TiXmlNode& base); - - /** An output stream operator, for every class. Note that this outputs - without any newlines or formatting, as opposed to Print(), which - includes tabs and new lines. - - The operator<< and operator>> are not completely symmetric. Writing - a node to a stream is very well defined. You'll get a nice stream - of output, without any extra whitespace or newlines. - - But reading is not as well defined. (As it always is.) If you create - a TiXmlElement (for example) and read that from an input stream, - the text needs to define an element or junk will result. This is - true of all input streams, but it's worth keeping in mind. - - A TiXmlDocument will read nodes until it reads a root element, and - all the children of that root element. - */ - friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); - - /// Appends the XML node or attribute to a std::string. - friend std::string& operator<< (std::string& out, const TiXmlNode& base ); - - #endif - - /** The types of XML nodes supported by TinyXml. (All the - unsupported types are picked up by UNKNOWN.) - */ - enum NodeType - { - DOCUMENT, - ELEMENT, - COMMENT, - UNKNOWN, - TEXT, - DECLARATION, - TYPECOUNT - }; - - ~TiXmlNode() override; - - /** The meaning of 'value' changes for the specific type of - TiXmlNode. - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - - The subclasses will wrap this function. - */ - const char *Value() const { return value.c_str (); } - - #ifdef TIXML_USE_STL - /** Return Value() as a std::string. If you only use STL, - this is more efficient than calling Value(). - Only available in STL mode. - */ - const std::string& ValueStr() const { return value; } - #endif - - const TIXML_STRING& ValueTStr() const { return value; } - - /** Changes the value of the node. Defined as: - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - */ - void SetValue(const char * _value) { value = _value;} - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Delete all the children of this node. Does not affect 'this'. - void Clear(); - - /// One step up the DOM. - TiXmlNode* Parent() { return parent; } - const TiXmlNode* Parent() const { return parent; } - - const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. - TiXmlNode* FirstChild() { return firstChild; } - const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. - /// The first child of this node with the matching 'value'. Will be null if none found. - TiXmlNode* FirstChild( const char * _value ) { - // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) - // call the method, cast the return back to non-const. - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); - } - const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. - TiXmlNode* LastChild() { return lastChild; } - - const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. - TiXmlNode* LastChild( const char * _value ) { - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. - #endif - - /** An alternate way to walk the children of a node. - One way to iterate over nodes is: - @verbatim - for( child = parent->FirstChild(); child; child = child->NextSibling() ) - @endverbatim - - IterateChildren does the same thing with the syntax: - @verbatim - child = 0; - while( child = parent->IterateChildren( child ) ) - @endverbatim - - IterateChildren takes the previous child as input and finds - the next one. If the previous child is null, it returns the - first. IterateChildren will return null when done. - */ - const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); - } - - /// This flavor of IterateChildren searches for children with a particular 'value' - const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - #endif - - /** Add a new node related to this. Adds a child past the LastChild. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); - - - /** Add a new node related to this. Adds a child past the LastChild. - - NOTE: the node to be added is passed by pointer, and will be - henceforth owned (and deleted) by tinyXml. This method is efficient - and avoids an extra copy, but should be used with care as it - uses a different memory model than the other insert functions. - - @sa InsertEndChild - */ - TiXmlNode* LinkEndChild( TiXmlNode* addThis ); - - /** Add a new node related to this. Adds a child before the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child after the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); - - /** Replace a child of this node. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); - - /// Delete a child of this node. - bool RemoveChild( TiXmlNode* removeThis ); - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling() const { return prev; } - TiXmlNode* PreviousSibling() { return prev; } - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling( const char * ) const; - TiXmlNode* PreviousSibling( const char *_prev ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Navigate to a sibling node. - const TiXmlNode* NextSibling() const { return next; } - TiXmlNode* NextSibling() { return next; } - - /// Navigate to a sibling node with the given 'value'. - const TiXmlNode* NextSibling( const char * ) const; - TiXmlNode* NextSibling( const char* _next ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement() const; - TiXmlElement* NextSiblingElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement( const char * ) const; - TiXmlElement* NextSiblingElement( const char *_next ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement() const; - TiXmlElement* FirstChildElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); - } - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement( const char * _value ) const; - TiXmlElement* FirstChildElement( const char * _value ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /** Query the type (as an enumerated value, above) of this node. - The possible types are: DOCUMENT, ELEMENT, COMMENT, - UNKNOWN, TEXT, and DECLARATION. - */ - int Type() const { return type; } - - /** Return a pointer to the Document this node lives in. - Returns null if not in a document. - */ - const TiXmlDocument* GetDocument() const; - TiXmlDocument* GetDocument() { - return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); - } - - /// Returns true if this node has no children. - bool NoChildren() const { return !firstChild; } - - virtual const TiXmlDocument* ToDocument() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlElement* ToElement() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlComment* ToComment() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlUnknown* ToUnknown() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlText* ToText() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlDeclaration* ToDeclaration() const { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - - virtual TiXmlDocument* ToDocument() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlElement* ToElement() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlComment* ToComment() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlText* ToText() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return nullptr; } ///< Cast to a more defined type. Will return null if not of the requested type. - - /** Create an exact duplicate of this node and return it. The memory must be deleted - by the caller. - */ - virtual TiXmlNode* Clone() const = 0; - - /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the - XML tree will be conditionally visited and the host will be called back - via the TiXmlVisitor interface. - - This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse - the XML for the callbacks, so the performance of TinyXML is unchanged by using this - interface versus any other.) - - The interface has been based on ideas from: - - - http://www.saxproject.org/ - - http://c2.com/cgi/wiki?HierarchicalVisitorPattern - - Which are both good references for "visiting". - - An example of using Accept(): - @verbatim - TiXmlPrinter printer; - tinyxmlDoc.Accept( &printer ); - const char* xmlcstr = printer.CStr(); - @endverbatim - */ - virtual bool Accept( TiXmlVisitor* visitor ) const = 0; - -protected: - TiXmlNode( NodeType _type ); - - // Copy to the allocated object. Shared functionality between Clone, Copy constructor, - // and the assignment operator. - void CopyTo( TiXmlNode* target ) const; - - #ifdef TIXML_USE_STL - // The real work of the input operator. - virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; - #endif - - // Figure out what is at *p, and parse it. Returns null if it is not an xml node. - TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); - - TiXmlNode* parent; - NodeType type; - - TiXmlNode* firstChild; - TiXmlNode* lastChild; - - TIXML_STRING value; - - TiXmlNode* prev; - TiXmlNode* next; - -private: - TiXmlNode( const TiXmlNode& ); // not implemented. - void operator=( const TiXmlNode& base ); // not allowed. -}; - - -/** An attribute is a name-value pair. Elements have an arbitrary - number of attributes, each with a unique name. - - @note The attributes are not TiXmlNodes, since they are not - part of the tinyXML document object model. There are other - suggested ways to look at this problem. -*/ -class TiXmlAttribute : public TiXmlBase -{ - friend class TiXmlAttributeSet; - -public: - /// Construct an empty attribute. - TiXmlAttribute() : TiXmlBase() - { - document = nullptr; - prev = next = nullptr; - } - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlAttribute( const std::string& _name, const std::string& _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - #endif - - /// Construct an attribute with a name and value. - TiXmlAttribute( const char * _name, const char * _value ) - { - name = _name; - value = _value; - document = nullptr; - prev = next = nullptr; - } - - const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. - const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. - #ifdef TIXML_USE_STL - const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. - #endif - int IntValue() const; ///< Return the value of this attribute, converted to an integer. - double DoubleValue() const; ///< Return the value of this attribute, converted to a double. - - // Get the tinyxml string representation - const TIXML_STRING& NameTStr() const { return name; } - - /** QueryIntValue examines the value string. It is an alternative to the - IntValue() method with richer error checking. - If the value is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. - - A specialized but useful call. Note that for success it returns 0, - which is the opposite of almost all other TinyXml calls. - */ - int QueryIntValue( int* _value ) const; - /// QueryDoubleValue examines the value string. See QueryIntValue(). - int QueryDoubleValue( double* _value ) const; - - void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. - void SetValue( const char* _value ) { value = _value; } ///< Set the value. - - void SetIntValue( int _value ); ///< Set the value from an integer. - void SetDoubleValue( double _value ); ///< Set the value from a double. - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetName( const std::string& _name ) { name = _name; } - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Get the next sibling attribute in the DOM. Returns null at end. - const TiXmlAttribute* Next() const; - TiXmlAttribute* Next() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); - } - - /// Get the previous sibling attribute in the DOM. Returns null at beginning. - const TiXmlAttribute* Previous() const; - TiXmlAttribute* Previous() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); - } - - bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } - bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } - bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } - - /* Attribute parsing starts: first letter of the name - returns: the next char after the value end quote - */ - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - // Prints this Attribute to a FILE stream. - void Print( FILE* cfile, int depth ) const override { - Print( cfile, depth, nullptr ); - } - void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - - // [internal use] - // Set the document pointer so the attribute can report errors. - void SetDocument( TiXmlDocument* doc ) { document = doc; } - -private: - TiXmlAttribute( const TiXmlAttribute& ); // not implemented. - void operator=( const TiXmlAttribute& base ); // not allowed. - - TiXmlDocument* document; // A pointer back to a document, for error reporting. - TIXML_STRING name; - TIXML_STRING value; - TiXmlAttribute* prev; - TiXmlAttribute* next; -}; - - -/* A class used to manage a group of attributes. - It is only used internally, both by the ELEMENT and the DECLARATION. - - The set can be changed transparent to the Element and Declaration - classes that use it, but NOT transparent to the Attribute - which has to implement a next() and previous() method. Which makes - it a bit problematic and prevents the use of STL. - - This version is implemented with circular lists because: - - I like circular lists - - it demonstrates some independence from the (typical) doubly linked list. -*/ -class TiXmlAttributeSet -{ -public: - TiXmlAttributeSet(); - ~TiXmlAttributeSet(); - - void Add( TiXmlAttribute* attribute ); - void Remove( TiXmlAttribute* attribute ); - - const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? nullptr : sentinel.next; } - TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? nullptr : sentinel.next; } - const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? nullptr : sentinel.prev; } - TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? nullptr : sentinel.prev; } - - const TiXmlAttribute* Find( const char* _name ) const; - TiXmlAttribute* Find( const char* _name ) { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) ); - } - #ifdef TIXML_USE_STL - const TiXmlAttribute* Find( const std::string& _name ) const; - TiXmlAttribute* Find( const std::string& _name ) { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) ); - } - - #endif - -private: - //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), - //*ME: this class must be also use a hidden/disabled copy-constructor !!! - TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed - void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) - - TiXmlAttribute sentinel; -}; - - -/** The element is a container class. It has a value, the element name, - and can contain other elements, text, comments, and unknowns. - Elements also contain an arbitrary number of attributes. -*/ -class TiXmlElement : public TiXmlNode -{ -public: - /// Construct an element. - TiXmlElement (const char * in_value); - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlElement( const std::string& _value ); - #endif - - TiXmlElement( const TiXmlElement& ); - - void operator=( const TiXmlElement& base ); - - ~TiXmlElement() override; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - */ - const char* Attribute( const char* name ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an integer, - the integer value will be put in the return 'i', if 'i' - is non-null. - */ - const char* Attribute( const char* name, int* i ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an double, - the double value will be put in the return 'd', if 'd' - is non-null. - */ - const char* Attribute( const char* name, double* d ) const; - - /** QueryIntAttribute examines the attribute - it is an alternative to the - Attribute() method with richer error checking. - If the attribute is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. If the attribute - does not exist, then TIXML_NO_ATTRIBUTE is returned. - */ - int QueryIntAttribute( const char* name, int* _value ) const; - /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). - int QueryDoubleAttribute( const char* name, double* _value ) const; - /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). - int QueryFloatAttribute( const char* name, float* _value ) const { - double d; - int result = QueryDoubleAttribute( name, &d ); - if ( result == TIXML_SUCCESS ) { - *_value = (float)d; - } - return result; - } - - #ifdef TIXML_USE_STL - /** Template form of the attribute query which will try to read the - attribute into the specified type. Very easy, very powerful, but - be careful to make sure to call this with the correct type. - - NOTE: This method doesn't work correctly for 'string' types. - - @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE - */ - template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - std::stringstream sstream( node->ValueStr() ); - sstream >> *outValue; - if ( !sstream.fail() ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; - } - /* - This is - in theory - a bug fix for "QueryValueAtribute returns truncated std::string" - but template specialization is hard to get working cross-compiler. Leaving the bug for now. - - // The above will fail for std::string because the space character is used as a seperator. - // Specialize for strings. Bug [ 1695429 ] QueryValueAtribute returns truncated std::string - template<> int QueryValueAttribute( const std::string& name, std::string* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - *outValue = node->ValueStr(); - return TIXML_SUCCESS; - } - */ - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char* name, const char * _value ); - - #ifdef TIXML_USE_STL - const std::string* Attribute( const std::string& name ) const; - const std::string* Attribute( const std::string& name, int* i ) const; - const std::string* Attribute( const std::string& name, double* d ) const; - int QueryIntAttribute( const std::string& name, int* _value ) const; - int QueryDoubleAttribute( const std::string& name, double* _value ) const; - - /// STL std::string form. - void SetAttribute( const std::string& name, const std::string& _value ); - ///< STL std::string form. - void SetAttribute( const std::string& name, int _value ); - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char * name, int value ); - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetDoubleAttribute( const char * name, double value ); - - /** Deletes an attribute with the given name. - */ - void RemoveAttribute( const char * name ); - #ifdef TIXML_USE_STL - void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. - #endif - - const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. - TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } - const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. - TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } - - /** Convenience function for easy access to the text inside an element. Although easy - and concise, GetText() is limited compared to getting the TiXmlText child - and accessing it directly. - - If the first child of 'this' is a TiXmlText, the GetText() - returns the character string of the Text node, else null is returned. - - This is a convenient method for getting the text of simple contained text: - @verbatim - This is text - const char* str = fooElement->GetText(); - @endverbatim - - 'str' will be a pointer to "This is text". - - Note that this function can be misleading. If the element foo was created from - this XML: - @verbatim - This is text - @endverbatim - - then the value of str would be null. The first child node isn't a text node, it is - another element. From this XML: - @verbatim - This is text - @endverbatim - GetText() will return "This is ". - - WARNING: GetText() accesses a child node - don't become confused with the - similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are - safe type casts on the referenced node. - */ - const char* GetText() const; - - /// Creates a new Element and returns it - the returned element is a copy. - TiXmlNode* Clone() const override; - // Print the Element to a FILE stream. - void Print( FILE* cfile, int depth ) const override; - - /* Attribtue parsing starts: next char past '<' - returns: next char past '>' - */ - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - const TiXmlElement* ToElement() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlElement* ToElement() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* visitor ) const override; - -protected: - - void CopyTo( TiXmlElement* target ) const; - void ClearThis(); // like clear, but initializes 'this' object as well - - // Used to be public [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - /* [internal use] - Reads the "value" of the element -- another element, or text. - This should terminate with the current end tag. - */ - const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - -private: - - TiXmlAttributeSet attributeSet; -}; - - -/** An XML comment. -*/ -class TiXmlComment : public TiXmlNode -{ -public: - /// Constructs an empty comment. - TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {} - /// Construct a comment from text. - TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::COMMENT ) { - SetValue( _value ); - } - TiXmlComment( const TiXmlComment& ); - void operator=( const TiXmlComment& base ); - - ~TiXmlComment() override {} - - /// Returns a copy of this Comment. - TiXmlNode* Clone() const override; - // Write this Comment to a FILE stream. - void Print( FILE* cfile, int depth ) const override; - - /* Attribtue parsing starts: at the ! of the !-- - returns: next char past '>' - */ - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - const TiXmlComment* ToComment() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlComment* ToComment() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* visitor ) const override; - -protected: - void CopyTo( TiXmlComment* target ) const; - - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif -// virtual void StreamOut( TIXML_OSTREAM * out ) const; - -private: - -}; - - -/** XML text. A text node can have 2 ways to output the next. "normal" output - and CDATA. It will default to the mode it was parsed from the XML file and - you generally want to leave it alone, but you can change the output mode with - SetCDATA() and query it with CDATA(). -*/ -class TiXmlText : public TiXmlNode -{ - friend class TiXmlElement; -public: - /** Constructor for text element. By default, it is treated as - normal, encoded text. If you want it be output as a CDATA text - element, set the parameter _cdata to 'true' - */ - TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TEXT) - { - SetValue( initValue ); - cdata = false; - } - ~TiXmlText() override {} - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TEXT) - { - SetValue( initValue ); - cdata = false; - } - #endif - - TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TEXT ) { copy.CopyTo( this ); } - void operator=( const TiXmlText& base ) { base.CopyTo( this ); } - - // Write this text object to a FILE stream. - void Print( FILE* cfile, int depth ) const override; - - /// Queries whether this represents text using a CDATA section. - bool CDATA() const { return cdata; } - /// Turns on or off a CDATA representation of text. - void SetCDATA( bool _cdata ) { cdata = _cdata; } - - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - const TiXmlText* ToText() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlText* ToText() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* content ) const override; - -protected : - /// [internal use] Creates a new Element and returns it. - TiXmlNode* Clone() const override; - void CopyTo( TiXmlText* target ) const; - - bool Blank() const; // returns true if all white space and new lines - // [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - bool cdata; // true if this should be input and output as a CDATA style text element -}; - - -/** In correct XML the declaration is the first entry in the file. - @verbatim - - @endverbatim - - TinyXml will happily read or write files without a declaration, - however. There are 3 possible attributes to the declaration: - version, encoding, and standalone. - - Note: In this version of the code, the attributes are - handled as special cases, not generic attributes, simply - because there can only be at most 3 and they are always the same. -*/ -class TiXmlDeclaration : public TiXmlNode -{ -public: - /// Construct an empty declaration. - TiXmlDeclaration() : TiXmlNode( TiXmlNode::DECLARATION ) {} - -#ifdef TIXML_USE_STL - /// Constructor. - TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ); -#endif - - /// Construct. - TiXmlDeclaration( const char* _version, - const char* _encoding, - const char* _standalone ); - - TiXmlDeclaration( const TiXmlDeclaration& copy ); - void operator=( const TiXmlDeclaration& copy ); - - ~TiXmlDeclaration() override {} - - /// Version. Will return an empty string if none was found. - const char *Version() const { return version.c_str (); } - /// Encoding. Will return an empty string if none was found. - const char *Encoding() const { return encoding.c_str (); } - /// Is this a standalone document? - const char *Standalone() const { return standalone.c_str (); } - - /// Creates a copy of this Declaration and returns it. - TiXmlNode* Clone() const override; - // Print this declaration to a FILE stream. - virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - void Print( FILE* cfile, int depth ) const override { - Print( cfile, depth, nullptr ); - } - - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - const TiXmlDeclaration* ToDeclaration() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlDeclaration* ToDeclaration() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* visitor ) const override; - -protected: - void CopyTo( TiXmlDeclaration* target ) const; - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - - TIXML_STRING version; - TIXML_STRING encoding; - TIXML_STRING standalone; -}; - - -/** Any tag that tinyXml doesn't recognize is saved as an - unknown. It is a tag of text, but should not be modified. - It will be written back to the XML, unchanged, when the file - is saved. - - DTD tags get thrown into TiXmlUnknowns. -*/ -class TiXmlUnknown : public TiXmlNode -{ -public: - TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {} - ~TiXmlUnknown() override {} - - TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::UNKNOWN ) { copy.CopyTo( this ); } - void operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); } - - /// Creates a copy of this Unknown and returns it. - TiXmlNode* Clone() const override; - // Print this Unknown to a FILE stream. - void Print( FILE* cfile, int depth ) const override; - - const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) override; - - const TiXmlUnknown* ToUnknown() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlUnknown* ToUnknown() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* content ) const override; - -protected: - void CopyTo( TiXmlUnknown* target ) const; - - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - -}; - - -/** Always the top level node. A document binds together all the - XML pieces. It can be saved, loaded, and printed to the screen. - The 'value' of a document node is the xml file name. -*/ -class TiXmlDocument : public TiXmlNode -{ -public: - /// Create an empty document, that has no name. - TiXmlDocument(); - /// Create a document with a name. The name of the document is also the filename of the xml. - TiXmlDocument( const char * documentName ); - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlDocument( const std::string& documentName ); - #endif - - TiXmlDocument( const TiXmlDocument& copy ); - void operator=( const TiXmlDocument& copy ); - - ~TiXmlDocument() override {} - - /** Load a file using the current document value. - Returns true if successful. Will delete any existing - document data before loading. - */ - bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the current document value. Returns true if successful. - bool SaveFile() const; - /// Load a file using the given filename. Returns true if successful. - bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given filename. Returns true if successful. - bool SaveFile( const char * filename ) const; - /** Load a file using the given FILE*. Returns true if successful. Note that this method - doesn't stream - the entire object pointed at by the FILE* - will be interpreted as an XML file. TinyXML doesn't stream in XML from the current - file location. Streaming may be added in the future. - */ - bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given FILE*. Returns true if successful. - bool SaveFile( FILE* ) const; - - #ifdef TIXML_USE_STL - bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. - { -// StringToBuffer f( filename ); -// return ( f.buffer && LoadFile( f.buffer, encoding )); - return LoadFile( filename.c_str(), encoding ); - } - bool SaveFile( const std::string& filename ) const ///< STL std::string version. - { -// StringToBuffer f( filename ); -// return ( f.buffer && SaveFile( f.buffer )); - return SaveFile( filename.c_str() ); - } - #endif - - /** Parse the given null terminated block of xml data. Passing in an encoding to this - method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml - to use that encoding, regardless of what TinyXml might otherwise try to detect. - */ - const char* Parse( const char* p, TiXmlParsingData* data = nullptr, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) override; - - /** Get the root element -- the only top level element -- of the document. - In well formed XML, there should only be one. TinyXml is tolerant of - multiple elements at the document level. - */ - const TiXmlElement* RootElement() const { return FirstChildElement(); } - TiXmlElement* RootElement() { return FirstChildElement(); } - - /** If an error occurs, Error will be set to true. Also, - - The ErrorId() will contain the integer identifier of the error (not generally useful) - - The ErrorDesc() method will return the name of the error. (very useful) - - The ErrorRow() and ErrorCol() will return the location of the error (if known) - */ - bool Error() const { return error; } - - /// Contains a textual (english) description of the error if one occurs. - const char * ErrorDesc() const { return errorDesc.c_str (); } - - /** Generally, you probably want the error string ( ErrorDesc() ). But if you - prefer the ErrorId, this function will fetch it. - */ - int ErrorId() const { return errorId; } - - /** Returns the location (if known) of the error. The first column is column 1, - and the first row is row 1. A value of 0 means the row and column wasn't applicable - (memory errors, for example, have no row/column) or the parser lost the error. (An - error in the error reporting, in that case.) - - @sa SetTabSize, Row, Column - */ - int ErrorRow() const { return errorLocation.row+1; } - int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() - - /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) - to report the correct values for row and column. It does not change the output - or input in any way. - - By calling this method, with a tab size - greater than 0, the row and column of each node and attribute is stored - when the file is loaded. Very useful for tracking the DOM back in to - the source file. - - The tab size is required for calculating the location of nodes. If not - set, the default of 4 is used. The tabsize is set per document. Setting - the tabsize to 0 disables row/column tracking. - - Note that row and column tracking is not supported when using operator>>. - - The tab size needs to be enabled before the parse or load. Correct usage: - @verbatim - TiXmlDocument doc; - doc.SetTabSize( 8 ); - doc.Load( "myfile.xml" ); - @endverbatim - - @sa Row, Column - */ - void SetTabSize( int _tabsize ) { tabsize = _tabsize; } - - int TabSize() const { return tabsize; } - - /** If you have handled the error, it can be reset with this call. The error - state is automatically cleared if you Parse a new XML block. - */ - void ClearError() { error = false; - errorId = 0; - errorDesc = ""; - errorLocation.row = errorLocation.col = 0; - //errorLocation.last = 0; - } - - /** Write the document to standard out using formatted printing ("pretty print"). */ - void Print() const { Print( stdout, 0 ); } - - /* Write the document to a string using formatted printing ("pretty print"). This - will allocate a character array (new char[]) and return it as a pointer. The - calling code pust call delete[] on the return char* to avoid a memory leak. - */ - //char* PrintToMemory() const; - - /// Print this Document to a FILE stream. - void Print( FILE* cfile, int depth = 0 ) const override; - // [internal use] - void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - - const TiXmlDocument* ToDocument() const override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - TiXmlDocument* ToDocument() override { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - bool Accept( TiXmlVisitor* content ) const override; - -protected : - // [internal use] - TiXmlNode* Clone() const override; - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - void CopyTo( TiXmlDocument* target ) const; - - bool error; - int errorId; - TIXML_STRING errorDesc; - int tabsize; - TiXmlCursor errorLocation; - bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. -}; - - -/** - A TiXmlHandle is a class that wraps a node pointer with null checks; this is - an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml - DOM structure. It is a separate utility class. - - Take an example: - @verbatim - - - - - - - @endverbatim - - Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very - easy to write a *lot* of code that looks like: - - @verbatim - TiXmlElement* root = document.FirstChildElement( "Document" ); - if ( root ) - { - TiXmlElement* element = root->FirstChildElement( "Element" ); - if ( element ) - { - TiXmlElement* child = element->FirstChildElement( "Child" ); - if ( child ) - { - TiXmlElement* child2 = child->NextSiblingElement( "Child" ); - if ( child2 ) - { - // Finally do something useful. - @endverbatim - - And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity - of such code. A TiXmlHandle checks for null pointers so it is perfectly safe - and correct to use: - - @verbatim - TiXmlHandle docHandle( &document ); - TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); - if ( child2 ) - { - // do something useful - @endverbatim - - Which is MUCH more concise and useful. - - It is also safe to copy handles - internally they are nothing more than node pointers. - @verbatim - TiXmlHandle handleCopy = handle; - @endverbatim - - What they should not be used for is iteration: - - @verbatim - int i=0; - while ( true ) - { - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); - if ( !child ) - break; - // do something - ++i; - } - @endverbatim - - It seems reasonable, but it is in fact two embedded while loops. The Child method is - a linear walk to find the element, so this code would iterate much more than it needs - to. Instead, prefer: - - @verbatim - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); - - for( child; child; child=child->NextSiblingElement() ) - { - // do something - } - @endverbatim -*/ -class TiXmlHandle -{ -public: - /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } - /// Copy constructor - TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } - TiXmlHandle operator=( const TiXmlHandle& ref ) { this->node = ref.node; return *this; } - - /// Return a handle to the first child node. - TiXmlHandle FirstChild() const; - /// Return a handle to the first child node with the given name. - TiXmlHandle FirstChild( const char * value ) const; - /// Return a handle to the first child element. - TiXmlHandle FirstChildElement() const; - /// Return a handle to the first child element with the given name. - TiXmlHandle FirstChildElement( const char * value ) const; - - /** Return a handle to the "index" child with the given name. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( const char* value, int index ) const; - /** Return a handle to the "index" child. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( int index ) const; - /** Return a handle to the "index" child element with the given name. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( const char* value, int index ) const; - /** Return a handle to the "index" child element. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( int index ) const; - - #ifdef TIXML_USE_STL - TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } - TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } - - TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } - TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } - #endif - - /** Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* ToNode() const { return node; } - /** Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : nullptr ); } - /** Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : nullptr ); } - /** Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : nullptr ); } - - /** @deprecated use ToNode. - Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* Node() const { return ToNode(); } - /** @deprecated use ToElement. - Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* Element() const { return ToElement(); } - /** @deprecated use ToText() - Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* Text() const { return ToText(); } - /** @deprecated use ToUnknown() - Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* Unknown() const { return ToUnknown(); } - -private: - TiXmlNode* node; -}; - - -/** Print to memory functionality. The TiXmlPrinter is useful when you need to: - - -# Print to memory (especially in non-STL mode) - -# Control formatting (line endings, etc.) - - When constructed, the TiXmlPrinter is in its default "pretty printing" mode. - Before calling Accept() you can call methods to control the printing - of the XML document. After TiXmlNode::Accept() is called, the printed document can - be accessed via the CStr(), Str(), and Size() methods. - - TiXmlPrinter uses the Visitor API. - @verbatim - TiXmlPrinter printer; - printer.SetIndent( "\t" ); - - doc.Accept( &printer ); - fprintf( stdout, "%s", printer.CStr() ); - @endverbatim -*/ -class TiXmlPrinter : public TiXmlVisitor -{ -public: - TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), - buffer(), indent( " " ), lineBreak( "\n" ) {} - - bool VisitEnter( const TiXmlDocument& doc ) override; - bool VisitExit( const TiXmlDocument& doc ) override; - - bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) override; - bool VisitExit( const TiXmlElement& element ) override; - - bool Visit( const TiXmlDeclaration& declaration ) override; - bool Visit( const TiXmlText& text ) override; - bool Visit( const TiXmlComment& comment ) override; - bool Visit( const TiXmlUnknown& unknown ) override; - - /** Set the indent characters for printing. By default 4 spaces - but tab (\t) is also useful, or null/empty string for no indentation. - */ - void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } - /// Query the indention string. - const char* Indent() { return indent.c_str(); } - /** Set the line breaking string. By default set to newline (\n). - Some operating systems prefer other characters, or can be - set to the null/empty string for no indenation. - */ - void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } - /// Query the current line breaking string. - const char* LineBreak() { return lineBreak.c_str(); } - - /** Switch over to "stream printing" which is the most dense formatting without - linebreaks. Common when the XML is needed for network transmission. - */ - void SetStreamPrinting() { indent = ""; - lineBreak = ""; - } - /// Return the result. - const char* CStr() { return buffer.c_str(); } - /// Return the length of the result string. - size_t Size() { return buffer.size(); } - - #ifdef TIXML_USE_STL - /// Return the result. - const std::string& Str() { return buffer; } - #endif - -private: - void DoIndent() { - for( int i=0; i -#include - -#include "tinyxml.h" - -//#define DEBUG_PARSER -#if defined( DEBUG_PARSER ) -# if defined( DEBUG ) && defined( _MSC_VER ) -# include -# define TIXML_LOG OutputDebugString -# else -# define TIXML_LOG printf -# endif -#endif - -// Note tha "PutString" hardcodes the same list. This -// is less flexible than it appears. Changing the entries -// or order will break putstring. -TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = -{ - { "&", 5, '&' }, - { "<", 4, '<' }, - { ">", 4, '>' }, - { """, 6, '\"' }, - { "'", 6, '\'' } -}; - -// Bunch of unicode info at: -// http://www.unicode.org/faq/utf_bom.html -// Including the basic of this table, which determines the #bytes in the -// sequence from the lead byte. 1 placed for invalid sequences -- -// although the result will be junk, pass it through as much as possible. -// Beware of the non-characters in UTF-8: -// ef bb bf (Microsoft "lead bytes") -// ef bf be -// ef bf bf - -const unsigned char TIXML_UTF_LEAD_0 = 0xefU; -const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; -const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - -const int TiXmlBase::utf8ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid -}; - - -void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) -{ - const unsigned long BYTE_MASK = 0xBF; - const unsigned long BYTE_MARK = 0x80; - const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - - if (input < 0x80) - *length = 1; - else if ( input < 0x800 ) - *length = 2; - else if ( input < 0x10000 ) - *length = 3; - else if ( input < 0x200000 ) - *length = 4; - else - { *length = 0; return; } // This code won't covert this correctly anyway. - - output += *length; - - // Scary scary fall throughs. - switch (*length) - { - case 4: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - /* FALLTHRU */ - case 3: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - /* FALLTHRU */ - case 2: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - /* FALLTHRU */ - case 1: - --output; - *output = (char)(input | FIRST_BYTE_MARK[*length]); - } -} - - -/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalpha( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalpha( anyByte ); -// } -} - - -/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalnum( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalnum( anyByte ); -// } -} - - -class TiXmlParsingData -{ - friend class TiXmlDocument; - public: - void Stamp( const char* now, TiXmlEncoding encoding ); - - const TiXmlCursor& Cursor() { return cursor; } - - private: - // Only used by the document! - TiXmlParsingData( const char* start, int _tabsize, int row, int col ) - { - assert( start ); - stamp = start; - tabsize = _tabsize; - cursor.row = row; - cursor.col = col; - } - - TiXmlCursor cursor; - const char* stamp; - int tabsize; -}; - - -void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) -{ - assert( now ); - - // Do nothing if the tabsize is 0. - if ( tabsize < 1 ) - { - return; - } - - // Get the current row, column. - int row = cursor.row; - int col = cursor.col; - const char* p = stamp; - assert( p ); - - while ( p < now ) - { - // Treat p as unsigned, so we have a happy compiler. - const unsigned char* pU = (const unsigned char*)p; - - // Code contributed by Fletcher Dunn: (modified by lee) - switch (*pU) { - case 0: - // We *should* never get here, but in case we do, don't - // advance past the terminating null character, ever - return; - - case '\r': - // bump down to the next line - ++row; - col = 0; - // Eat the character - ++p; - - // Check for \r\n sequence, and treat this as a single character - if (*p == '\n') { - ++p; - } - break; - - case '\n': - // bump down to the next line - ++row; - col = 0; - - // Eat the character - ++p; - - // Check for \n\r sequence, and treat this as a single - // character. (Yes, this bizarre thing does occur still - // on some arcane platforms...) - if (*p == '\r') { - ++p; - } - break; - - case '\t': - // Eat the character - ++p; - - // Skip to next tab stop - col = (col / tabsize + 1) * tabsize; - break; - - case TIXML_UTF_LEAD_0: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( *(p+1) && *(p+2) ) - { - // In these cases, don't advance the column. These are - // 0-width spaces. - if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) - p += 3; - else - { p +=3; ++col; } // A normal character. - } - } - else - { - ++p; - ++col; - } - break; - - default: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // Eat the 1 to 4 byte utf8 character. - int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; - if ( step == 0 ) - step = 1; // Error case from bad encoding, but handle gracefully. - p += step; - - // Just advance one column, of course. - ++col; - } - else - { - ++p; - ++col; - } - break; - } - } - cursor.row = row; - cursor.col = col; - assert( cursor.row >= -1 ); - assert( cursor.col >= -1 ); - stamp = p; - assert( stamp ); -} - - -const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) -{ - if ( !p || !*p ) - { - return nullptr; - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - while ( *p ) - { - const unsigned char* pU = (const unsigned char*)p; - - // Skip the stupid Microsoft UTF-8 Byte order marks - if ( *(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==TIXML_UTF_LEAD_1 - && *(pU+2)==TIXML_UTF_LEAD_2 ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbeU ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbfU ) - { - p += 3; - continue; - } - - if ( IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' ) // Still using old rules for white space. - ++p; - else - break; - } - } - else - { - while ( *p && (IsWhiteSpace( *p ) || *p == '\n' || *p =='\r') ) - ++p; - } - - return p; -} - -#ifdef TIXML_USE_STL -/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) -{ - for( ;; ) - { - if ( !in->good() ) return false; - - int c = in->peek(); - // At this scope, we can't get to a document. So fail silently. - if ( !IsWhiteSpace( c ) || c <= 0 ) - return true; - - *tag += (char) in->get(); - } -} - -/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) -{ - //assert( character > 0 && character < 128 ); // else it won't work in utf-8 - while ( in->good() ) - { - int c = in->peek(); - if ( c == character ) - return true; - if ( c <= 0 ) // Silent failure: can't get document at this scope - return false; - - in->get(); - *tag += (char) c; - } - return false; -} -#endif - -// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The -// "assign" optimization removes over 10% of the execution time. -// -const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) -{ - // Oddly, not supported on some comilers, - //name->clear(); - // So use this: - *name = ""; - assert( p ); - - // Names start with letters or underscores. - // Of course, in unicode, tinyxml has no idea what a letter *is*. The - // algorithm is generous. - // - // After that, they can be letters, underscores, numbers, - // hyphens, or colons. (Colons are valid ony for namespaces, - // but tinyxml can't tell namespaces from names.) - if ( p && *p - && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) - { - const char* start = p; - while( p && *p - && ( IsAlphaNum( (unsigned char ) *p, encoding ) - || *p == '_' - || *p == '-' - || *p == '.' - || *p == ':' ) ) - { - //(*name) += *p; // expensive - ++p; - } - if ( p-start > 0 ) { - name->assign( start, p-start ); - } - return p; - } - return nullptr; -} - -const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) -{ - // Presume an entity, and pull it out. - TIXML_STRING ent; - int i; - *length = 0; - - if ( *(p+1) && *(p+1) == '#' && *(p+2) ) - { - unsigned long ucs = 0; - ptrdiff_t delta = 0; - unsigned mult = 1; - - if ( *(p+2) == 'x' ) - { - // Hexadecimal. - if ( !*(p+3) ) return nullptr; - - const char* q = p+3; - q = strchr( q, ';' ); - - if ( !q || !*q ) return nullptr; - - delta = q-p; - --q; - - while ( *q != 'x' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else if ( *q >= 'a' && *q <= 'f' ) - ucs += mult * (*q - 'a' + 10); - else if ( *q >= 'A' && *q <= 'F' ) - ucs += mult * (*q - 'A' + 10 ); - else - return nullptr; - mult *= 16; - --q; - } - } - else - { - // Decimal. - if ( !*(p+2) ) return nullptr; - - const char* q = p+2; - q = strchr( q, ';' ); - - if ( !q || !*q ) return nullptr; - - delta = q-p; - --q; - - while ( *q != '#' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else - return nullptr; - mult *= 10; - --q; - } - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // convert the UCS to UTF-8 - ConvertUTF32ToUTF8( ucs, value, length ); - } - else - { - *value = (char)ucs; - *length = 1; - } - return p + delta + 1; - } - - // Now try to match it. - for( i=0; iappend( cArr, len ); - } - } - else - { - bool whitespace = false; - - // Remove leading white space: - p = SkipWhiteSpace( p, encoding ); - while ( p && *p - && !StringEqual( p, endTag, caseInsensitive, encoding ) ) - { - if ( *p == '\r' || *p == '\n' ) - { - whitespace = true; - ++p; - } - else if ( IsWhiteSpace( *p ) ) - { - whitespace = true; - ++p; - } - else - { - // If we've found whitespace, add it before the - // new character. Any whitespace just becomes a space. - if ( whitespace ) - { - (*text) += ' '; - whitespace = false; - } - int len; - char cArr[4] = { 0, 0, 0, 0 }; - p = GetChar( p, cArr, &len, encoding ); - if ( len == 1 ) - (*text) += cArr[0]; // more efficient - else - text->append( cArr, len ); - } - } - } - if ( p ) - p += strlen( endTag ); - return p; -} - -#ifdef TIXML_USE_STL - -void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - // The basic issue with a document is that we don't know what we're - // streaming. Read something presumed to be a tag (and hope), then - // identify it, and call the appropriate stream method on the tag. - // - // This "pre-streaming" will never read the closing ">" so the - // sub-tag can orient itself. - - if ( !StreamTo( in, '<', tag ) ) - { - SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - while ( in->good() ) - { - int tagIndex = (int) tag->length(); - while ( in->good() && in->peek() != '>' ) - { - int c = in->get(); - if ( c <= 0 ) - { - SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - break; - } - (*tag) += (char) c; - } - - if ( in->good() ) - { - // We now have something we presume to be a node of - // some sort. Identify it, and call the node to - // continue streaming. - TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); - - if ( node ) - { - node->StreamIn( in, tag ); - bool isElement = node->ToElement() != 0; - delete node; - node = 0; - - // If this is the root element, we're done. Parsing will be - // done by the >> operator. - if ( isElement ) - { - return; - } - } - else - { - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - } - } - // We should have returned sooner. - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); -} - -#endif - -const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) -{ - ClearError(); - - // Parse away, at the document level. Since a document - // contains nothing but other tags, most of what happens - // here is skipping white space. - if ( !p || !*p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - - // Note that, for a document, this needs to come - // before the while space skip, so that parsing - // starts from the pointer we are given. - location.Clear(); - if ( prevData ) - { - location.row = prevData->cursor.row; - location.col = prevData->cursor.col; - } - else - { - location.row = 0; - location.col = 0; - } - TiXmlParsingData data( p, TabSize(), location.row, location.col ); - location = data.Cursor(); - - if ( encoding == TIXML_ENCODING_UNKNOWN ) - { - // Check for the Microsoft UTF-8 lead bytes. - const unsigned char* pU = (const unsigned char*)p; - if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 - && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 - && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) - { - encoding = TIXML_ENCODING_UTF8; - useMicrosoftBOM = true; - } - } - - p = SkipWhiteSpace( p, encoding ); - if ( !p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, nullptr, nullptr, TIXML_ENCODING_UNKNOWN ); - return nullptr; - } - - while ( p && *p ) - { - TiXmlNode* node = Identify( p, encoding ); - if ( node ) - { - p = node->Parse( p, &data, encoding ); - LinkEndChild( node ); - } - else - { - break; - } - - // Did we get encoding info? - if ( encoding == TIXML_ENCODING_UNKNOWN - && node->ToDeclaration() ) - { - TiXmlDeclaration* dec = node->ToDeclaration(); - const char* enc = dec->Encoding(); - assert( enc ); - - if ( *enc == 0 ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice - else - encoding = TIXML_ENCODING_LEGACY; - } - - p = SkipWhiteSpace( p, encoding ); - } - - // Was this empty? - if ( !firstChild ) { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, nullptr, nullptr, encoding ); - return nullptr; - } - - // All is well. - return p; -} - -void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - // The first error in a chain is more accurate - don't set again! - if ( error ) - return; - - assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); - error = true; - errorId = err; - errorDesc = errorString[ errorId ]; - - errorLocation.Clear(); - if ( pError && data ) - { - data->Stamp( pError, encoding ); - errorLocation = data->Cursor(); - } -} - - -TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) -{ - TiXmlNode* returnNode = nullptr; - - p = SkipWhiteSpace( p, encoding ); - if( !p || !*p || *p != '<' ) - { - return nullptr; - } - - TiXmlDocument* doc = GetDocument(); - p = SkipWhiteSpace( p, encoding ); - - if ( !p || !*p ) - { - return nullptr; - } - - // What is this thing? - // - Elements start with a letter or underscore, but xml is reserved. - // - Comments: "; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); - return nullptr; - } - p += strlen( startTag ); - - // [ 1475201 ] TinyXML parses entities in comments - // Oops - ReadText doesn't work, because we don't want to parse the entities. - // p = ReadText( p, &value, false, endTag, false, encoding ); - // - // from the XML spec: - /* - [Definition: Comments may appear anywhere in a document outside other markup; in addition, - they may appear within the document type declaration at places allowed by the grammar. - They are not part of the document's character data; an XML processor MAY, but need not, - make it possible for an application to retrieve the text of comments. For compatibility, - the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity - references MUST NOT be recognized within comments. - - An example of a comment: - - - */ - - value = ""; - // Keep all the white space. - while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) - { - value.append( p, 1 ); - ++p; - } - if ( p ) - p += strlen( endTag ); - - return p; -} - - -const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) return nullptr; - -// int tabsize = 4; -// if ( document ) -// tabsize = document->TabSize(); - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - // Read the name, the '=' and the value. - const char* pErr = p; - p = ReadName( p, &name, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); - return nullptr; - } - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p || *p != '=' ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return nullptr; - } - - ++p; // skip '=' - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return nullptr; - } - - const char* end; - const char SINGLE_QUOTE = '\''; - const char DOUBLE_QUOTE = '\"'; - - if ( *p == SINGLE_QUOTE ) - { - ++p; - end = "\'"; // single quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else if ( *p == DOUBLE_QUOTE ) - { - ++p; - end = "\""; // double quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else - { - // All attribute values should be in single or double quotes. - // But this is such a common error that the parser will try - // its best, even without them. - value = ""; - while ( p && *p // existence - && !IsWhiteSpace( *p ) && *p != '\n' && *p != '\r' // whitespace - && *p != '/' && *p != '>' ) // tag end - { - if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { - // [ 1451649 ] Attribute values with trailing quotes not handled correctly - // We did not have an opening quote but seem to have a - // closing one. Give up and throw an error. - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return nullptr; - } - value += *p; - ++p; - } - } - return p; -} - -#ifdef TIXML_USE_STL -void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( !cdata && (c == '<' ) ) - { - return; - } - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - (*tag) += (char) c; - in->get(); // "commits" the peek made above - - if ( cdata && c == '>' && tag->size() >= 3 ) { - size_t len = tag->size(); - if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { - // terminator of cdata. - return; - } - } - } -} -#endif - -const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - value = ""; - TiXmlDocument* document = GetDocument(); - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - - const char* const startTag = ""; - - if ( cdata || StringEqual( p, startTag, false, encoding ) ) - { - cdata = true; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); - return nullptr; - } - p += strlen( startTag ); - - // Keep all the white space, ignore the encoding, etc. - while ( p && *p - && !StringEqual( p, endTag, false, encoding ) - ) - { - value += *p; - ++p; - } - - TIXML_STRING dummy; - p = ReadText( p, &dummy, false, endTag, false, encoding ); - return p; - } - else - { - bool ignoreWhite = true; - - const char* end = "<"; - p = ReadText( p, &value, ignoreWhite, end, false, encoding ); - if ( p ) - return p-1; // don't truncate the '<' - return nullptr; - } -} - -#ifdef TIXML_USE_STL -void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->get(); - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - (*tag) += (char) c; - - if ( c == '>' ) - { - // All is well. - return; - } - } -} -#endif - -const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) -{ - p = SkipWhiteSpace( p, _encoding ); - // Find the beginning, find the end, and look for - // the stuff in-between. - TiXmlDocument* document = GetDocument(); - if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, nullptr, nullptr, _encoding ); - return nullptr; - } - if ( data ) - { - data->Stamp( p, _encoding ); - location = data->Cursor(); - } - p += 5; - - version = ""; - encoding = ""; - standalone = ""; - - while ( p && *p ) - { - if ( *p == '>' ) - { - ++p; - return p; - } - - p = SkipWhiteSpace( p, _encoding ); - if ( StringEqual( p, "version", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - version = attrib.Value(); - } - else if ( StringEqual( p, "encoding", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - encoding = attrib.Value(); - } - else if ( StringEqual( p, "standalone", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - standalone = attrib.Value(); - } - else - { - // Read over whatever it is. - while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) - ++p; - } - } - return nullptr; -} - -bool TiXmlText::Blank() const -{ - for ( unsigned i=0; i // yes, this one new style header, is in the Android SDK. +#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__) +# include +# include +#else +# include +# include +#endif + +#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE) + // Microsoft Visual Studio, version 2005 and higher. Not WinCE. + /*int _snprintf_s( + char *buffer, + size_t sizeOfBuffer, + size_t count, + const char *format [, + argument] ... + );*/ + static inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... ) + { + va_list va; + va_start( va, format ); + int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va ); + va_end( va ); + return result; + } + + static inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char* format, va_list va ) + { + int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va ); + return result; + } + + #define TIXML_VSCPRINTF _vscprintf + #define TIXML_SSCANF sscanf_s +#elif defined _MSC_VER + // Microsoft Visual Studio 2003 and earlier or WinCE + #define TIXML_SNPRINTF _snprintf + #define TIXML_VSNPRINTF _vsnprintf + #define TIXML_SSCANF sscanf + #if (_MSC_VER < 1400 ) && (!defined WINCE) + // Microsoft Visual Studio 2003 and not WinCE. + #define TIXML_VSCPRINTF _vscprintf // VS2003's C runtime has this, but VC6 C runtime or WinCE SDK doesn't have. + #else + // Microsoft Visual Studio 2003 and earlier or WinCE. + static inline int TIXML_VSCPRINTF( const char* format, va_list va ) + { + int len = 512; + for (;;) { + len = len*2; + char* str = new char[len](); + const int required = _vsnprintf(str, len, format, va); + delete[] str; + if ( required != -1 ) { + TIXMLASSERT( required >= 0 ); + len = required; + break; + } + } + TIXMLASSERT( len >= 0 ); + return len; + } + #endif +#else + // GCC version 3 and higher + //#warning( "Using sn* functions." ) + #define TIXML_SNPRINTF snprintf + #define TIXML_VSNPRINTF vsnprintf + static inline int TIXML_VSCPRINTF( const char* format, va_list va ) + { + int len = vsnprintf( 0, 0, format, va ); + TIXMLASSERT( len >= 0 ); + return len; + } + #define TIXML_SSCANF sscanf +#endif + + +static const char LINE_FEED = (char)0x0a; // all line endings are normalized to LF +static const char LF = LINE_FEED; +static const char CARRIAGE_RETURN = (char)0x0d; // CR gets filtered out +static const char CR = CARRIAGE_RETURN; +static const char SINGLE_QUOTE = '\''; +static const char DOUBLE_QUOTE = '\"'; + +// Bunch of unicode info at: +// http://www.unicode.org/faq/utf_bom.html +// ef bb bf (Microsoft "lead bytes") - designates UTF-8 + +static const unsigned char TIXML_UTF_LEAD_0 = 0xefU; +static const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; +static const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; + +namespace tinyxml2 +{ + +struct Entity { + const char* pattern; + int length; + char value; +}; + +static const int NUM_ENTITIES = 5; +static const Entity entities[NUM_ENTITIES] = { + { "quot", 4, DOUBLE_QUOTE }, + { "amp", 3, '&' }, + { "apos", 4, SINGLE_QUOTE }, + { "lt", 2, '<' }, + { "gt", 2, '>' } +}; + + +StrPair::~StrPair() +{ + Reset(); +} + + +void StrPair::TransferTo( StrPair* other ) +{ + if ( this == other ) { + return; + } + // This in effect implements the assignment operator by "moving" + // ownership (as in auto_ptr). + + TIXMLASSERT( other != 0 ); + TIXMLASSERT( other->_flags == 0 ); + TIXMLASSERT( other->_start == 0 ); + TIXMLASSERT( other->_end == 0 ); + + other->Reset(); + + other->_flags = _flags; + other->_start = _start; + other->_end = _end; + + _flags = 0; + _start = 0; + _end = 0; +} + + +void StrPair::Reset() +{ + if ( _flags & NEEDS_DELETE ) { + delete [] _start; + } + _flags = 0; + _start = 0; + _end = 0; +} + + +void StrPair::SetStr( const char* str, int flags ) +{ + TIXMLASSERT( str ); + Reset(); + size_t len = strlen( str ); + TIXMLASSERT( _start == 0 ); + _start = new char[ len+1 ]; + memcpy( _start, str, len+1 ); + _end = _start + len; + _flags = flags | NEEDS_DELETE; +} + + +char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLineNumPtr ) +{ + TIXMLASSERT( p ); + TIXMLASSERT( endTag && *endTag ); + TIXMLASSERT(curLineNumPtr); + + char* start = p; + char endChar = *endTag; + size_t length = strlen( endTag ); + + // Inner loop of text parsing. + while ( *p ) { + if ( *p == endChar && strncmp( p, endTag, length ) == 0 ) { + Set( start, p, strFlags ); + return p + length; + } else if (*p == '\n') { + ++(*curLineNumPtr); + } + ++p; + TIXMLASSERT( p ); + } + return 0; +} + + +char* StrPair::ParseName( char* p ) +{ + if ( !p || !(*p) ) { + return 0; + } + if ( !XMLUtil::IsNameStartChar( *p ) ) { + return 0; + } + + char* const start = p; + ++p; + while ( *p && XMLUtil::IsNameChar( *p ) ) { + ++p; + } + + Set( start, p, 0 ); + return p; +} + + +void StrPair::CollapseWhitespace() +{ + // Adjusting _start would cause undefined behavior on delete[] + TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 ); + // Trim leading space. + _start = XMLUtil::SkipWhiteSpace( _start, 0 ); + + if ( *_start ) { + const char* p = _start; // the read pointer + char* q = _start; // the write pointer + + while( *p ) { + if ( XMLUtil::IsWhiteSpace( *p )) { + p = XMLUtil::SkipWhiteSpace( p, 0 ); + if ( *p == 0 ) { + break; // don't write to q; this trims the trailing space. + } + *q = ' '; + ++q; + } + *q = *p; + ++q; + ++p; + } + *q = 0; + } +} + + +const char* StrPair::GetStr() +{ + TIXMLASSERT( _start ); + TIXMLASSERT( _end ); + if ( _flags & NEEDS_FLUSH ) { + *_end = 0; + _flags ^= NEEDS_FLUSH; + + if ( _flags ) { + const char* p = _start; // the read pointer + char* q = _start; // the write pointer + + while( p < _end ) { + if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == CR ) { + // CR-LF pair becomes LF + // CR alone becomes LF + // LF-CR becomes LF + if ( *(p+1) == LF ) { + p += 2; + } + else { + ++p; + } + *q = LF; + ++q; + } + else if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == LF ) { + if ( *(p+1) == CR ) { + p += 2; + } + else { + ++p; + } + *q = LF; + ++q; + } + else if ( (_flags & NEEDS_ENTITY_PROCESSING) && *p == '&' ) { + // Entities handled by tinyXML2: + // - special entities in the entity table [in/out] + // - numeric character reference [in] + // 中 or 中 + + if ( *(p+1) == '#' ) { + const int buflen = 10; + char buf[buflen] = { 0 }; + int len = 0; + char* adjusted = const_cast( XMLUtil::GetCharacterRef( p, buf, &len ) ); + if ( adjusted == 0 ) { + *q = *p; + ++p; + ++q; + } + else { + TIXMLASSERT( 0 <= len && len <= buflen ); + TIXMLASSERT( q + len <= adjusted ); + p = adjusted; + memcpy( q, buf, len ); + q += len; + } + } + else { + bool entityFound = false; + for( int i = 0; i < NUM_ENTITIES; ++i ) { + const Entity& entity = entities[i]; + if ( strncmp( p + 1, entity.pattern, entity.length ) == 0 + && *( p + entity.length + 1 ) == ';' ) { + // Found an entity - convert. + *q = entity.value; + ++q; + p += entity.length + 2; + entityFound = true; + break; + } + } + if ( !entityFound ) { + // fixme: treat as error? + ++p; + ++q; + } + } + } + else { + *q = *p; + ++p; + ++q; + } + } + *q = 0; + } + // The loop below has plenty going on, and this + // is a less useful mode. Break it out. + if ( _flags & NEEDS_WHITESPACE_COLLAPSING ) { + CollapseWhitespace(); + } + _flags = (_flags & NEEDS_DELETE); + } + TIXMLASSERT( _start ); + return _start; +} + + + + +// --------- XMLUtil ----------- // + +const char* XMLUtil::writeBoolTrue = "true"; +const char* XMLUtil::writeBoolFalse = "false"; + +void XMLUtil::SetBoolSerialization(const char* writeTrue, const char* writeFalse) +{ + static const char* defTrue = "true"; + static const char* defFalse = "false"; + + writeBoolTrue = (writeTrue) ? writeTrue : defTrue; + writeBoolFalse = (writeFalse) ? writeFalse : defFalse; +} + + +const char* XMLUtil::ReadBOM( const char* p, bool* bom ) +{ + TIXMLASSERT( p ); + TIXMLASSERT( bom ); + *bom = false; + const unsigned char* pu = reinterpret_cast(p); + // Check for BOM: + if ( *(pu+0) == TIXML_UTF_LEAD_0 + && *(pu+1) == TIXML_UTF_LEAD_1 + && *(pu+2) == TIXML_UTF_LEAD_2 ) { + *bom = true; + p += 3; + } + TIXMLASSERT( p ); + return p; +} + + +void XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) +{ + const unsigned long BYTE_MASK = 0xBF; + const unsigned long BYTE_MARK = 0x80; + const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; + + if (input < 0x80) { + *length = 1; + } + else if ( input < 0x800 ) { + *length = 2; + } + else if ( input < 0x10000 ) { + *length = 3; + } + else if ( input < 0x200000 ) { + *length = 4; + } + else { + *length = 0; // This code won't convert this correctly anyway. + return; + } + + output += *length; + + // Scary scary fall throughs are annotated with carefully designed comments + // to suppress compiler warnings such as -Wimplicit-fallthrough in gcc + switch (*length) { + case 4: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + //fall through + case 3: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + //fall through + case 2: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + //fall through + case 1: + --output; + *output = (char)(input | FIRST_BYTE_MARK[*length]); + break; + default: + TIXMLASSERT( false ); + } +} + + +const char* XMLUtil::GetCharacterRef( const char* p, char* value, int* length ) +{ + // Presume an entity, and pull it out. + *length = 0; + + if ( *(p+1) == '#' && *(p+2) ) { + unsigned long ucs = 0; + TIXMLASSERT( sizeof( ucs ) >= 4 ); + ptrdiff_t delta = 0; + unsigned mult = 1; + static const char SEMICOLON = ';'; + + if ( *(p+2) == 'x' ) { + // Hexadecimal. + const char* q = p+3; + if ( !(*q) ) { + return 0; + } + + q = strchr( q, SEMICOLON ); + + if ( !q ) { + return 0; + } + TIXMLASSERT( *q == SEMICOLON ); + + delta = q-p; + --q; + + while ( *q != 'x' ) { + unsigned int digit = 0; + + if ( *q >= '0' && *q <= '9' ) { + digit = *q - '0'; + } + else if ( *q >= 'a' && *q <= 'f' ) { + digit = *q - 'a' + 10; + } + else if ( *q >= 'A' && *q <= 'F' ) { + digit = *q - 'A' + 10; + } + else { + return 0; + } + TIXMLASSERT( digit < 16 ); + TIXMLASSERT( digit == 0 || mult <= UINT_MAX / digit ); + const unsigned int digitScaled = mult * digit; + TIXMLASSERT( ucs <= ULONG_MAX - digitScaled ); + ucs += digitScaled; + TIXMLASSERT( mult <= UINT_MAX / 16 ); + mult *= 16; + --q; + } + } + else { + // Decimal. + const char* q = p+2; + if ( !(*q) ) { + return 0; + } + + q = strchr( q, SEMICOLON ); + + if ( !q ) { + return 0; + } + TIXMLASSERT( *q == SEMICOLON ); + + delta = q-p; + --q; + + while ( *q != '#' ) { + if ( *q >= '0' && *q <= '9' ) { + const unsigned int digit = *q - '0'; + TIXMLASSERT( digit < 10 ); + TIXMLASSERT( digit == 0 || mult <= UINT_MAX / digit ); + const unsigned int digitScaled = mult * digit; + TIXMLASSERT( ucs <= ULONG_MAX - digitScaled ); + ucs += digitScaled; + } + else { + return 0; + } + TIXMLASSERT( mult <= UINT_MAX / 10 ); + mult *= 10; + --q; + } + } + // convert the UCS to UTF-8 + ConvertUTF32ToUTF8( ucs, value, length ); + return p + delta + 1; + } + return p+1; +} + + +void XMLUtil::ToStr( int v, char* buffer, int bufferSize ) +{ + TIXML_SNPRINTF( buffer, bufferSize, "%d", v ); +} + + +void XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize ) +{ + TIXML_SNPRINTF( buffer, bufferSize, "%u", v ); +} + + +void XMLUtil::ToStr( bool v, char* buffer, int bufferSize ) +{ + TIXML_SNPRINTF( buffer, bufferSize, "%s", v ? writeBoolTrue : writeBoolFalse); +} + +/* + ToStr() of a number is a very tricky topic. + https://github.com/leethomason/tinyxml2/issues/106 +*/ +void XMLUtil::ToStr( float v, char* buffer, int bufferSize ) +{ + TIXML_SNPRINTF( buffer, bufferSize, "%.8g", (double)v ); +} + + +void XMLUtil::ToStr( double v, char* buffer, int bufferSize ) +{ + TIXML_SNPRINTF( buffer, bufferSize, "%.17g", v ); +} + + +void XMLUtil::ToStr(int64_t v, char* buffer, int bufferSize) +{ + // horrible syntax trick to make the compiler happy about %lld + TIXML_SNPRINTF(buffer, bufferSize, "%lld", (long long)v); +} + + +bool XMLUtil::ToInt( const char* str, int* value ) +{ + if ( TIXML_SSCANF( str, "%d", value ) == 1 ) { + return true; + } + return false; +} + +bool XMLUtil::ToUnsigned( const char* str, unsigned *value ) +{ + if ( TIXML_SSCANF( str, "%u", value ) == 1 ) { + return true; + } + return false; +} + +bool XMLUtil::ToBool( const char* str, bool* value ) +{ + int ival = 0; + if ( ToInt( str, &ival )) { + *value = (ival==0) ? false : true; + return true; + } + if ( StringEqual( str, "true" ) ) { + *value = true; + return true; + } + else if ( StringEqual( str, "false" ) ) { + *value = false; + return true; + } + return false; +} + + +bool XMLUtil::ToFloat( const char* str, float* value ) +{ + if ( TIXML_SSCANF( str, "%f", value ) == 1 ) { + return true; + } + return false; +} + + +bool XMLUtil::ToDouble( const char* str, double* value ) +{ + if ( TIXML_SSCANF( str, "%lf", value ) == 1 ) { + return true; + } + return false; +} + + +bool XMLUtil::ToInt64(const char* str, int64_t* value) +{ + long long v = 0; // horrible syntax trick to make the compiler happy about %lld + if (TIXML_SSCANF(str, "%lld", &v) == 1) { + *value = (int64_t)v; + return true; + } + return false; +} + + +char* XMLDocument::Identify( char* p, XMLNode** node ) +{ + TIXMLASSERT( node ); + TIXMLASSERT( p ); + char* const start = p; + int const startLine = _parseCurLineNum; + p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum ); + if( !*p ) { + *node = 0; + TIXMLASSERT( p ); + return p; + } + + // These strings define the matching patterns: + static const char* xmlHeader = { "( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; + p += xmlHeaderLen; + } + else if ( XMLUtil::StringEqual( p, commentHeader, commentHeaderLen ) ) { + returnNode = CreateUnlinkedNode( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; + p += commentHeaderLen; + } + else if ( XMLUtil::StringEqual( p, cdataHeader, cdataHeaderLen ) ) { + XMLText* text = CreateUnlinkedNode( _textPool ); + returnNode = text; + returnNode->_parseLineNum = _parseCurLineNum; + p += cdataHeaderLen; + text->SetCData( true ); + } + else if ( XMLUtil::StringEqual( p, dtdHeader, dtdHeaderLen ) ) { + returnNode = CreateUnlinkedNode( _commentPool ); + returnNode->_parseLineNum = _parseCurLineNum; + p += dtdHeaderLen; + } + else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) { + returnNode = CreateUnlinkedNode( _elementPool ); + returnNode->_parseLineNum = _parseCurLineNum; + p += elementHeaderLen; + } + else { + returnNode = CreateUnlinkedNode( _textPool ); + returnNode->_parseLineNum = _parseCurLineNum; // Report line of first non-whitespace character + p = start; // Back it up, all the text counts. + _parseCurLineNum = startLine; + } + + TIXMLASSERT( returnNode ); + TIXMLASSERT( p ); + *node = returnNode; + return p; +} + + +bool XMLDocument::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + if ( visitor->VisitEnter( *this ) ) { + for ( const XMLNode* node=FirstChild(); node; node=node->NextSibling() ) { + if ( !node->Accept( visitor ) ) { + break; + } + } + } + return visitor->VisitExit( *this ); +} + + +// --------- XMLNode ----------- // + +XMLNode::XMLNode( XMLDocument* doc ) : + _document( doc ), + _parent( 0 ), + _value(), + _parseLineNum( 0 ), + _firstChild( 0 ), _lastChild( 0 ), + _prev( 0 ), _next( 0 ), + _userData( 0 ), + _memPool( 0 ) +{ +} + + +XMLNode::~XMLNode() +{ + DeleteChildren(); + if ( _parent ) { + _parent->Unlink( this ); + } +} + +const char* XMLNode::Value() const +{ + // Edge case: XMLDocuments don't have a Value. Return null. + if ( this->ToDocument() ) + return 0; + return _value.GetStr(); +} + +void XMLNode::SetValue( const char* str, bool staticMem ) +{ + if ( staticMem ) { + _value.SetInternedStr( str ); + } + else { + _value.SetStr( str ); + } +} + +XMLNode* XMLNode::DeepClone(XMLDocument* target) const +{ + XMLNode* clone = this->ShallowClone(target); + if (!clone) return 0; + + for (const XMLNode* child = this->FirstChild(); child; child = child->NextSibling()) { + XMLNode* childClone = child->DeepClone(target); + TIXMLASSERT(childClone); + clone->InsertEndChild(childClone); + } + return clone; +} + +void XMLNode::DeleteChildren() +{ + while( _firstChild ) { + TIXMLASSERT( _lastChild ); + DeleteChild( _firstChild ); + } + _firstChild = _lastChild = 0; +} + + +void XMLNode::Unlink( XMLNode* child ) +{ + TIXMLASSERT( child ); + TIXMLASSERT( child->_document == _document ); + TIXMLASSERT( child->_parent == this ); + if ( child == _firstChild ) { + _firstChild = _firstChild->_next; + } + if ( child == _lastChild ) { + _lastChild = _lastChild->_prev; + } + + if ( child->_prev ) { + child->_prev->_next = child->_next; + } + if ( child->_next ) { + child->_next->_prev = child->_prev; + } + child->_next = 0; + child->_prev = 0; + child->_parent = 0; +} + + +void XMLNode::DeleteChild( XMLNode* node ) +{ + TIXMLASSERT( node ); + TIXMLASSERT( node->_document == _document ); + TIXMLASSERT( node->_parent == this ); + Unlink( node ); + TIXMLASSERT(node->_prev == 0); + TIXMLASSERT(node->_next == 0); + TIXMLASSERT(node->_parent == 0); + DeleteNode( node ); +} + + +XMLNode* XMLNode::InsertEndChild( XMLNode* addThis ) +{ + TIXMLASSERT( addThis ); + if ( addThis->_document != _document ) { + TIXMLASSERT( false ); + return 0; + } + InsertChildPreamble( addThis ); + + if ( _lastChild ) { + TIXMLASSERT( _firstChild ); + TIXMLASSERT( _lastChild->_next == 0 ); + _lastChild->_next = addThis; + addThis->_prev = _lastChild; + _lastChild = addThis; + + addThis->_next = 0; + } + else { + TIXMLASSERT( _firstChild == 0 ); + _firstChild = _lastChild = addThis; + + addThis->_prev = 0; + addThis->_next = 0; + } + addThis->_parent = this; + return addThis; +} + + +XMLNode* XMLNode::InsertFirstChild( XMLNode* addThis ) +{ + TIXMLASSERT( addThis ); + if ( addThis->_document != _document ) { + TIXMLASSERT( false ); + return 0; + } + InsertChildPreamble( addThis ); + + if ( _firstChild ) { + TIXMLASSERT( _lastChild ); + TIXMLASSERT( _firstChild->_prev == 0 ); + + _firstChild->_prev = addThis; + addThis->_next = _firstChild; + _firstChild = addThis; + + addThis->_prev = 0; + } + else { + TIXMLASSERT( _lastChild == 0 ); + _firstChild = _lastChild = addThis; + + addThis->_prev = 0; + addThis->_next = 0; + } + addThis->_parent = this; + return addThis; +} + + +XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis ) +{ + TIXMLASSERT( addThis ); + if ( addThis->_document != _document ) { + TIXMLASSERT( false ); + return 0; + } + + TIXMLASSERT( afterThis ); + + if ( afterThis->_parent != this ) { + TIXMLASSERT( false ); + return 0; + } + if ( afterThis == addThis ) { + // Current state: BeforeThis -> AddThis -> OneAfterAddThis + // Now AddThis must disappear from it's location and then + // reappear between BeforeThis and OneAfterAddThis. + // So just leave it where it is. + return addThis; + } + + if ( afterThis->_next == 0 ) { + // The last node or the only node. + return InsertEndChild( addThis ); + } + InsertChildPreamble( addThis ); + addThis->_prev = afterThis; + addThis->_next = afterThis->_next; + afterThis->_next->_prev = addThis; + afterThis->_next = addThis; + addThis->_parent = this; + return addThis; +} + + + + +const XMLElement* XMLNode::FirstChildElement( const char* name ) const +{ + for( const XMLNode* node = _firstChild; node; node = node->_next ) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { + return element; + } + } + return 0; +} + + +const XMLElement* XMLNode::LastChildElement( const char* name ) const +{ + for( const XMLNode* node = _lastChild; node; node = node->_prev ) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { + return element; + } + } + return 0; +} + + +const XMLElement* XMLNode::NextSiblingElement( const char* name ) const +{ + for( const XMLNode* node = _next; node; node = node->_next ) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { + return element; + } + } + return 0; +} + + +const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const +{ + for( const XMLNode* node = _prev; node; node = node->_prev ) { + const XMLElement* element = node->ToElementWithName( name ); + if ( element ) { + return element; + } + } + return 0; +} + + +char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) +{ + // This is a recursive method, but thinking about it "at the current level" + // it is a pretty simple flat list: + // + // + // + // With a special case: + // + // + // + // + // Where the closing element (/foo) *must* be the next thing after the opening + // element, and the names must match. BUT the tricky bit is that the closing + // element will be read by the child. + // + // 'endTag' is the end tag for this node, it is returned by a call to a child. + // 'parentEnd' is the end tag for the parent, which is filled in and returned. + + XMLDocument::DepthTracker tracker(_document); + if (_document->Error()) + return 0; + + while( p && *p ) { + XMLNode* node = 0; + + p = _document->Identify( p, &node ); + TIXMLASSERT( p ); + if ( node == 0 ) { + break; + } + + int initialLineNum = node->_parseLineNum; + + StrPair endTag; + p = node->ParseDeep( p, &endTag, curLineNumPtr ); + if ( !p ) { + DeleteNode( node ); + if ( !_document->Error() ) { + _document->SetError( XML_ERROR_PARSING, initialLineNum, 0); + } + break; + } + + XMLDeclaration* decl = node->ToDeclaration(); + if ( decl ) { + // Declarations are only allowed at document level + // + // Multiple declarations are allowed but all declarations + // must occur before anything else. + // + // Optimized due to a security test case. If the first node is + // a declaration, and the last node is a declaration, then only + // declarations have so far been addded. + bool wellLocated = false; + + if (ToDocument()) { + if (FirstChild()) { + wellLocated = + FirstChild() && + FirstChild()->ToDeclaration() && + LastChild() && + LastChild()->ToDeclaration(); + } + else { + wellLocated = true; + } + } + if ( !wellLocated ) { + _document->SetError( XML_ERROR_PARSING_DECLARATION, initialLineNum, "XMLDeclaration value=%s", decl->Value()); + DeleteNode( node ); + break; + } + } + + XMLElement* ele = node->ToElement(); + if ( ele ) { + // We read the end tag. Return it to the parent. + if ( ele->ClosingType() == XMLElement::CLOSING ) { + if ( parentEndTag ) { + ele->_value.TransferTo( parentEndTag ); + } + node->_memPool->SetTracked(); // created and then immediately deleted. + DeleteNode( node ); + return p; + } + + // Handle an end tag returned to this level. + // And handle a bunch of annoying errors. + bool mismatch = false; + if ( endTag.Empty() ) { + if ( ele->ClosingType() == XMLElement::OPEN ) { + mismatch = true; + } + } + else { + if ( ele->ClosingType() != XMLElement::OPEN ) { + mismatch = true; + } + else if ( !XMLUtil::StringEqual( endTag.GetStr(), ele->Name() ) ) { + mismatch = true; + } + } + if ( mismatch ) { + _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, initialLineNum, "XMLElement name=%s", ele->Name()); + DeleteNode( node ); + break; + } + } + InsertEndChild( node ); + } + return 0; +} + +/*static*/ void XMLNode::DeleteNode( XMLNode* node ) +{ + if ( node == 0 ) { + return; + } + TIXMLASSERT(node->_document); + if (!node->ToDocument()) { + node->_document->MarkInUse(node); + } + + MemPool* pool = node->_memPool; + node->~XMLNode(); + pool->Free( node ); +} + +void XMLNode::InsertChildPreamble( XMLNode* insertThis ) const +{ + TIXMLASSERT( insertThis ); + TIXMLASSERT( insertThis->_document == _document ); + + if (insertThis->_parent) { + insertThis->_parent->Unlink( insertThis ); + } + else { + insertThis->_document->MarkInUse(insertThis); + insertThis->_memPool->SetTracked(); + } +} + +const XMLElement* XMLNode::ToElementWithName( const char* name ) const +{ + const XMLElement* element = this->ToElement(); + if ( element == 0 ) { + return 0; + } + if ( name == 0 ) { + return element; + } + if ( XMLUtil::StringEqual( element->Name(), name ) ) { + return element; + } + return 0; +} + +// --------- XMLText ---------- // +char* XMLText::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) +{ + if ( this->CData() ) { + p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); + if ( !p ) { + _document->SetError( XML_ERROR_PARSING_CDATA, _parseLineNum, 0 ); + } + return p; + } + else { + int flags = _document->ProcessEntities() ? StrPair::TEXT_ELEMENT : StrPair::TEXT_ELEMENT_LEAVE_ENTITIES; + if ( _document->WhitespaceMode() == COLLAPSE_WHITESPACE ) { + flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING; + } + + p = _value.ParseText( p, "<", flags, curLineNumPtr ); + if ( p && *p ) { + return p-1; + } + if ( !p ) { + _document->SetError( XML_ERROR_PARSING_TEXT, _parseLineNum, 0 ); + } + } + return 0; +} + + +XMLNode* XMLText::ShallowClone( XMLDocument* doc ) const +{ + if ( !doc ) { + doc = _document; + } + XMLText* text = doc->NewText( Value() ); // fixme: this will always allocate memory. Intern? + text->SetCData( this->CData() ); + return text; +} + + +bool XMLText::ShallowEqual( const XMLNode* compare ) const +{ + TIXMLASSERT( compare ); + const XMLText* text = compare->ToText(); + return ( text && XMLUtil::StringEqual( text->Value(), Value() ) ); +} + + +bool XMLText::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + return visitor->Visit( *this ); +} + + +// --------- XMLComment ---------- // + +XMLComment::XMLComment( XMLDocument* doc ) : XMLNode( doc ) +{ +} + + +XMLComment::~XMLComment() +{ +} + + +char* XMLComment::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) +{ + // Comment parses as text. + p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNumPtr ); + if ( p == 0 ) { + _document->SetError( XML_ERROR_PARSING_COMMENT, _parseLineNum, 0 ); + } + return p; +} + + +XMLNode* XMLComment::ShallowClone( XMLDocument* doc ) const +{ + if ( !doc ) { + doc = _document; + } + XMLComment* comment = doc->NewComment( Value() ); // fixme: this will always allocate memory. Intern? + return comment; +} + + +bool XMLComment::ShallowEqual( const XMLNode* compare ) const +{ + TIXMLASSERT( compare ); + const XMLComment* comment = compare->ToComment(); + return ( comment && XMLUtil::StringEqual( comment->Value(), Value() )); +} + + +bool XMLComment::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + return visitor->Visit( *this ); +} + + +// --------- XMLDeclaration ---------- // + +XMLDeclaration::XMLDeclaration( XMLDocument* doc ) : XMLNode( doc ) +{ +} + + +XMLDeclaration::~XMLDeclaration() +{ + //printf( "~XMLDeclaration\n" ); +} + + +char* XMLDeclaration::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) +{ + // Declaration parses as text. + p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); + if ( p == 0 ) { + _document->SetError( XML_ERROR_PARSING_DECLARATION, _parseLineNum, 0 ); + } + return p; +} + + +XMLNode* XMLDeclaration::ShallowClone( XMLDocument* doc ) const +{ + if ( !doc ) { + doc = _document; + } + XMLDeclaration* dec = doc->NewDeclaration( Value() ); // fixme: this will always allocate memory. Intern? + return dec; +} + + +bool XMLDeclaration::ShallowEqual( const XMLNode* compare ) const +{ + TIXMLASSERT( compare ); + const XMLDeclaration* declaration = compare->ToDeclaration(); + return ( declaration && XMLUtil::StringEqual( declaration->Value(), Value() )); +} + + + +bool XMLDeclaration::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + return visitor->Visit( *this ); +} + +// --------- XMLUnknown ---------- // + +XMLUnknown::XMLUnknown( XMLDocument* doc ) : XMLNode( doc ) +{ +} + + +XMLUnknown::~XMLUnknown() +{ +} + + +char* XMLUnknown::ParseDeep( char* p, StrPair*, int* curLineNumPtr ) +{ + // Unknown parses as text. + p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr ); + if ( !p ) { + _document->SetError( XML_ERROR_PARSING_UNKNOWN, _parseLineNum, 0 ); + } + return p; +} + + +XMLNode* XMLUnknown::ShallowClone( XMLDocument* doc ) const +{ + if ( !doc ) { + doc = _document; + } + XMLUnknown* text = doc->NewUnknown( Value() ); // fixme: this will always allocate memory. Intern? + return text; +} + + +bool XMLUnknown::ShallowEqual( const XMLNode* compare ) const +{ + TIXMLASSERT( compare ); + const XMLUnknown* unknown = compare->ToUnknown(); + return ( unknown && XMLUtil::StringEqual( unknown->Value(), Value() )); +} + + +bool XMLUnknown::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + return visitor->Visit( *this ); +} + +// --------- XMLAttribute ---------- // + +const char* XMLAttribute::Name() const +{ + return _name.GetStr(); +} + +const char* XMLAttribute::Value() const +{ + return _value.GetStr(); +} + +char* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr ) +{ + // Parse using the name rules: bug fix, was using ParseText before + p = _name.ParseName( p ); + if ( !p || !*p ) { + return 0; + } + + // Skip white space before = + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); + if ( *p != '=' ) { + return 0; + } + + ++p; // move up to opening quote + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); + if ( *p != '\"' && *p != '\'' ) { + return 0; + } + + char endTag[2] = { *p, 0 }; + ++p; // move past opening quote + + p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr ); + return p; +} + + +void XMLAttribute::SetName( const char* n ) +{ + _name.SetStr( n ); +} + + +XMLError XMLAttribute::QueryIntValue( int* value ) const +{ + if ( XMLUtil::ToInt( Value(), value )) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +XMLError XMLAttribute::QueryUnsignedValue( unsigned int* value ) const +{ + if ( XMLUtil::ToUnsigned( Value(), value )) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +XMLError XMLAttribute::QueryInt64Value(int64_t* value) const +{ + if (XMLUtil::ToInt64(Value(), value)) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +XMLError XMLAttribute::QueryBoolValue( bool* value ) const +{ + if ( XMLUtil::ToBool( Value(), value )) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +XMLError XMLAttribute::QueryFloatValue( float* value ) const +{ + if ( XMLUtil::ToFloat( Value(), value )) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +XMLError XMLAttribute::QueryDoubleValue( double* value ) const +{ + if ( XMLUtil::ToDouble( Value(), value )) { + return XML_SUCCESS; + } + return XML_WRONG_ATTRIBUTE_TYPE; +} + + +void XMLAttribute::SetAttribute( const char* v ) +{ + _value.SetStr( v ); +} + + +void XMLAttribute::SetAttribute( int v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + _value.SetStr( buf ); +} + + +void XMLAttribute::SetAttribute( unsigned v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + _value.SetStr( buf ); +} + + +void XMLAttribute::SetAttribute(int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + _value.SetStr(buf); +} + + + +void XMLAttribute::SetAttribute( bool v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + _value.SetStr( buf ); +} + +void XMLAttribute::SetAttribute( double v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + _value.SetStr( buf ); +} + +void XMLAttribute::SetAttribute( float v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + _value.SetStr( buf ); +} + + +// --------- XMLElement ---------- // +XMLElement::XMLElement( XMLDocument* doc ) : XMLNode( doc ), + _closingType( OPEN ), + _rootAttribute( 0 ) +{ +} + + +XMLElement::~XMLElement() +{ + while( _rootAttribute ) { + XMLAttribute* next = _rootAttribute->_next; + DeleteAttribute( _rootAttribute ); + _rootAttribute = next; + } +} + + +const XMLAttribute* XMLElement::FindAttribute( const char* name ) const +{ + for( XMLAttribute* a = _rootAttribute; a; a = a->_next ) { + if ( XMLUtil::StringEqual( a->Name(), name ) ) { + return a; + } + } + return 0; +} + + +const char* XMLElement::Attribute( const char* name, const char* value ) const +{ + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return 0; + } + if ( !value || XMLUtil::StringEqual( a->Value(), value )) { + return a->Value(); + } + return 0; +} + +int XMLElement::IntAttribute(const char* name, int defaultValue) const +{ + int i = defaultValue; + QueryIntAttribute(name, &i); + return i; +} + +unsigned XMLElement::UnsignedAttribute(const char* name, unsigned defaultValue) const +{ + unsigned i = defaultValue; + QueryUnsignedAttribute(name, &i); + return i; +} + +int64_t XMLElement::Int64Attribute(const char* name, int64_t defaultValue) const +{ + int64_t i = defaultValue; + QueryInt64Attribute(name, &i); + return i; +} + +bool XMLElement::BoolAttribute(const char* name, bool defaultValue) const +{ + bool b = defaultValue; + QueryBoolAttribute(name, &b); + return b; +} + +double XMLElement::DoubleAttribute(const char* name, double defaultValue) const +{ + double d = defaultValue; + QueryDoubleAttribute(name, &d); + return d; +} + +float XMLElement::FloatAttribute(const char* name, float defaultValue) const +{ + float f = defaultValue; + QueryFloatAttribute(name, &f); + return f; +} + +const char* XMLElement::GetText() const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + return FirstChild()->Value(); + } + return 0; +} + + +void XMLElement::SetText( const char* inText ) +{ + if ( FirstChild() && FirstChild()->ToText() ) + FirstChild()->SetValue( inText ); + else { + XMLText* theText = GetDocument()->NewText( inText ); + InsertFirstChild( theText ); + } +} + + +void XMLElement::SetText( int v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + SetText( buf ); +} + + +void XMLElement::SetText( unsigned v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + SetText( buf ); +} + + +void XMLElement::SetText(int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + SetText(buf); +} + + +void XMLElement::SetText( bool v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + SetText( buf ); +} + + +void XMLElement::SetText( float v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + SetText( buf ); +} + + +void XMLElement::SetText( double v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + SetText( buf ); +} + + +XMLError XMLElement::QueryIntText( int* ival ) const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + const char* t = FirstChild()->Value(); + if ( XMLUtil::ToInt( t, ival ) ) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + +XMLError XMLElement::QueryUnsignedText( unsigned* uval ) const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + const char* t = FirstChild()->Value(); + if ( XMLUtil::ToUnsigned( t, uval ) ) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + +XMLError XMLElement::QueryInt64Text(int64_t* ival) const +{ + if (FirstChild() && FirstChild()->ToText()) { + const char* t = FirstChild()->Value(); + if (XMLUtil::ToInt64(t, ival)) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + +XMLError XMLElement::QueryBoolText( bool* bval ) const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + const char* t = FirstChild()->Value(); + if ( XMLUtil::ToBool( t, bval ) ) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + +XMLError XMLElement::QueryDoubleText( double* dval ) const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + const char* t = FirstChild()->Value(); + if ( XMLUtil::ToDouble( t, dval ) ) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + + +XMLError XMLElement::QueryFloatText( float* fval ) const +{ + if ( FirstChild() && FirstChild()->ToText() ) { + const char* t = FirstChild()->Value(); + if ( XMLUtil::ToFloat( t, fval ) ) { + return XML_SUCCESS; + } + return XML_CAN_NOT_CONVERT_TEXT; + } + return XML_NO_TEXT_NODE; +} + +int XMLElement::IntText(int defaultValue) const +{ + int i = defaultValue; + QueryIntText(&i); + return i; +} + +unsigned XMLElement::UnsignedText(unsigned defaultValue) const +{ + unsigned i = defaultValue; + QueryUnsignedText(&i); + return i; +} + +int64_t XMLElement::Int64Text(int64_t defaultValue) const +{ + int64_t i = defaultValue; + QueryInt64Text(&i); + return i; +} + +bool XMLElement::BoolText(bool defaultValue) const +{ + bool b = defaultValue; + QueryBoolText(&b); + return b; +} + +double XMLElement::DoubleText(double defaultValue) const +{ + double d = defaultValue; + QueryDoubleText(&d); + return d; +} + +float XMLElement::FloatText(float defaultValue) const +{ + float f = defaultValue; + QueryFloatText(&f); + return f; +} + + +XMLAttribute* XMLElement::FindOrCreateAttribute( const char* name ) +{ + XMLAttribute* last = 0; + XMLAttribute* attrib = 0; + for( attrib = _rootAttribute; + attrib; + last = attrib, attrib = attrib->_next ) { + if ( XMLUtil::StringEqual( attrib->Name(), name ) ) { + break; + } + } + if ( !attrib ) { + attrib = CreateAttribute(); + TIXMLASSERT( attrib ); + if ( last ) { + TIXMLASSERT( last->_next == 0 ); + last->_next = attrib; + } + else { + TIXMLASSERT( _rootAttribute == 0 ); + _rootAttribute = attrib; + } + attrib->SetName( name ); + } + return attrib; +} + + +void XMLElement::DeleteAttribute( const char* name ) +{ + XMLAttribute* prev = 0; + for( XMLAttribute* a=_rootAttribute; a; a=a->_next ) { + if ( XMLUtil::StringEqual( name, a->Name() ) ) { + if ( prev ) { + prev->_next = a->_next; + } + else { + _rootAttribute = a->_next; + } + DeleteAttribute( a ); + break; + } + prev = a; + } +} + + +char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr ) +{ + XMLAttribute* prevAttribute = 0; + + // Read the attributes. + while( p ) { + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); + if ( !(*p) ) { + _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, "XMLElement name=%s", Name() ); + return 0; + } + + // attribute. + if (XMLUtil::IsNameStartChar( *p ) ) { + XMLAttribute* attrib = CreateAttribute(); + TIXMLASSERT( attrib ); + attrib->_parseLineNum = _document->_parseCurLineNum; + + int attrLineNum = attrib->_parseLineNum; + + p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr ); + if ( !p || Attribute( attrib->Name() ) ) { + DeleteAttribute( attrib ); + _document->SetError( XML_ERROR_PARSING_ATTRIBUTE, attrLineNum, "XMLElement name=%s", Name() ); + return 0; + } + // There is a minor bug here: if the attribute in the source xml + // document is duplicated, it will not be detected and the + // attribute will be doubly added. However, tracking the 'prevAttribute' + // avoids re-scanning the attribute list. Preferring performance for + // now, may reconsider in the future. + if ( prevAttribute ) { + TIXMLASSERT( prevAttribute->_next == 0 ); + prevAttribute->_next = attrib; + } + else { + TIXMLASSERT( _rootAttribute == 0 ); + _rootAttribute = attrib; + } + prevAttribute = attrib; + } + // end of the tag + else if ( *p == '>' ) { + ++p; + break; + } + // end of the tag + else if ( *p == '/' && *(p+1) == '>' ) { + _closingType = CLOSED; + return p+2; // done; sealed element. + } + else { + _document->SetError( XML_ERROR_PARSING_ELEMENT, _parseLineNum, 0 ); + return 0; + } + } + return p; +} + +void XMLElement::DeleteAttribute( XMLAttribute* attribute ) +{ + if ( attribute == 0 ) { + return; + } + MemPool* pool = attribute->_memPool; + attribute->~XMLAttribute(); + pool->Free( attribute ); +} + +XMLAttribute* XMLElement::CreateAttribute() +{ + TIXMLASSERT( sizeof( XMLAttribute ) == _document->_attributePool.ItemSize() ); + XMLAttribute* attrib = new (_document->_attributePool.Alloc() ) XMLAttribute(); + TIXMLASSERT( attrib ); + attrib->_memPool = &_document->_attributePool; + attrib->_memPool->SetTracked(); + return attrib; +} + +// +// +// foobar +// +char* XMLElement::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) +{ + // Read the element name. + p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr ); + + // The closing element is the form. It is + // parsed just like a regular element then deleted from + // the DOM. + if ( *p == '/' ) { + _closingType = CLOSING; + ++p; + } + + p = _value.ParseName( p ); + if ( _value.Empty() ) { + return 0; + } + + p = ParseAttributes( p, curLineNumPtr ); + if ( !p || !*p || _closingType != OPEN ) { + return p; + } + + p = XMLNode::ParseDeep( p, parentEndTag, curLineNumPtr ); + return p; +} + + + +XMLNode* XMLElement::ShallowClone( XMLDocument* doc ) const +{ + if ( !doc ) { + doc = _document; + } + XMLElement* element = doc->NewElement( Value() ); // fixme: this will always allocate memory. Intern? + for( const XMLAttribute* a=FirstAttribute(); a; a=a->Next() ) { + element->SetAttribute( a->Name(), a->Value() ); // fixme: this will always allocate memory. Intern? + } + return element; +} + + +bool XMLElement::ShallowEqual( const XMLNode* compare ) const +{ + TIXMLASSERT( compare ); + const XMLElement* other = compare->ToElement(); + if ( other && XMLUtil::StringEqual( other->Name(), Name() )) { + + const XMLAttribute* a=FirstAttribute(); + const XMLAttribute* b=other->FirstAttribute(); + + while ( a && b ) { + if ( !XMLUtil::StringEqual( a->Value(), b->Value() ) ) { + return false; + } + a = a->Next(); + b = b->Next(); + } + if ( a || b ) { + // different count + return false; + } + return true; + } + return false; +} + + +bool XMLElement::Accept( XMLVisitor* visitor ) const +{ + TIXMLASSERT( visitor ); + if ( visitor->VisitEnter( *this, _rootAttribute ) ) { + for ( const XMLNode* node=FirstChild(); node; node=node->NextSibling() ) { + if ( !node->Accept( visitor ) ) { + break; + } + } + } + return visitor->VisitExit( *this ); +} + + +// --------- XMLDocument ----------- // + +// Warning: List must match 'enum XMLError' +const char* XMLDocument::_errorNames[XML_ERROR_COUNT] = { + "XML_SUCCESS", + "XML_NO_ATTRIBUTE", + "XML_WRONG_ATTRIBUTE_TYPE", + "XML_ERROR_FILE_NOT_FOUND", + "XML_ERROR_FILE_COULD_NOT_BE_OPENED", + "XML_ERROR_FILE_READ_ERROR", + "XML_ERROR_PARSING_ELEMENT", + "XML_ERROR_PARSING_ATTRIBUTE", + "XML_ERROR_PARSING_TEXT", + "XML_ERROR_PARSING_CDATA", + "XML_ERROR_PARSING_COMMENT", + "XML_ERROR_PARSING_DECLARATION", + "XML_ERROR_PARSING_UNKNOWN", + "XML_ERROR_EMPTY_DOCUMENT", + "XML_ERROR_MISMATCHED_ELEMENT", + "XML_ERROR_PARSING", + "XML_CAN_NOT_CONVERT_TEXT", + "XML_NO_TEXT_NODE", + "XML_ELEMENT_DEPTH_EXCEEDED" +}; + + +XMLDocument::XMLDocument( bool processEntities, Whitespace whitespaceMode ) : + XMLNode( 0 ), + _writeBOM( false ), + _processEntities( processEntities ), + _errorID(XML_SUCCESS), + _whitespaceMode( whitespaceMode ), + _errorStr(), + _errorLineNum( 0 ), + _charBuffer( 0 ), + _parseCurLineNum( 0 ), + _parsingDepth(0), + _unlinked(), + _elementPool(), + _attributePool(), + _textPool(), + _commentPool() +{ + // avoid VC++ C4355 warning about 'this' in initializer list (C4355 is off by default in VS2012+) + _document = this; +} + + +XMLDocument::~XMLDocument() +{ + Clear(); +} + + +void XMLDocument::MarkInUse(XMLNode* node) +{ + TIXMLASSERT(node); + TIXMLASSERT(node->_parent == 0); + + for (int i = 0; i < _unlinked.Size(); ++i) { + if (node == _unlinked[i]) { + _unlinked.SwapRemove(i); + break; + } + } +} + +void XMLDocument::Clear() +{ + DeleteChildren(); + while( _unlinked.Size()) { + DeleteNode(_unlinked[0]); // Will remove from _unlinked as part of delete. + } + +#ifdef TINYXML2_DEBUG + const bool hadError = Error(); +#endif + ClearError(); + + delete [] _charBuffer; + _charBuffer = 0; + _parsingDepth = 0; + +#if 0 + _textPool.Trace( "text" ); + _elementPool.Trace( "element" ); + _commentPool.Trace( "comment" ); + _attributePool.Trace( "attribute" ); +#endif + +#ifdef TINYXML2_DEBUG + if ( !hadError ) { + TIXMLASSERT( _elementPool.CurrentAllocs() == _elementPool.Untracked() ); + TIXMLASSERT( _attributePool.CurrentAllocs() == _attributePool.Untracked() ); + TIXMLASSERT( _textPool.CurrentAllocs() == _textPool.Untracked() ); + TIXMLASSERT( _commentPool.CurrentAllocs() == _commentPool.Untracked() ); + } +#endif +} + + +void XMLDocument::DeepCopy(XMLDocument* target) const +{ + TIXMLASSERT(target); + if (target == this) { + return; // technically success - a no-op. + } + + target->Clear(); + for (const XMLNode* node = this->FirstChild(); node; node = node->NextSibling()) { + target->InsertEndChild(node->DeepClone(target)); + } +} + +XMLElement* XMLDocument::NewElement( const char* name ) +{ + XMLElement* ele = CreateUnlinkedNode( _elementPool ); + ele->SetName( name ); + return ele; +} + + +XMLComment* XMLDocument::NewComment( const char* str ) +{ + XMLComment* comment = CreateUnlinkedNode( _commentPool ); + comment->SetValue( str ); + return comment; +} + + +XMLText* XMLDocument::NewText( const char* str ) +{ + XMLText* text = CreateUnlinkedNode( _textPool ); + text->SetValue( str ); + return text; +} + + +XMLDeclaration* XMLDocument::NewDeclaration( const char* str ) +{ + XMLDeclaration* dec = CreateUnlinkedNode( _commentPool ); + dec->SetValue( str ? str : "xml version=\"1.0\" encoding=\"UTF-8\"" ); + return dec; +} + + +XMLUnknown* XMLDocument::NewUnknown( const char* str ) +{ + XMLUnknown* unk = CreateUnlinkedNode( _commentPool ); + unk->SetValue( str ); + return unk; +} + +static FILE* callfopen( const char* filepath, const char* mode ) +{ + TIXMLASSERT( filepath ); + TIXMLASSERT( mode ); +#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE) + FILE* fp = 0; + errno_t err = fopen_s( &fp, filepath, mode ); + if ( err ) { + return 0; + } +#else + FILE* fp = fopen( filepath, mode ); +#endif + return fp; +} + +void XMLDocument::DeleteNode( XMLNode* node ) { + TIXMLASSERT( node ); + TIXMLASSERT(node->_document == this ); + if (node->_parent) { + node->_parent->DeleteChild( node ); + } + else { + // Isn't in the tree. + // Use the parent delete. + // Also, we need to mark it tracked: we 'know' + // it was never used. + node->_memPool->SetTracked(); + // Call the static XMLNode version: + XMLNode::DeleteNode(node); + } +} + + +XMLError XMLDocument::LoadFile( const char* filename ) +{ + if ( !filename ) { + TIXMLASSERT( false ); + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=" ); + return _errorID; + } + + Clear(); + FILE* fp = callfopen( filename, "rb" ); + if ( !fp ) { + SetError( XML_ERROR_FILE_NOT_FOUND, 0, "filename=%s", filename ); + return _errorID; + } + LoadFile( fp ); + fclose( fp ); + return _errorID; +} + +// This is likely overengineered template art to have a check that unsigned long value incremented +// by one still fits into size_t. If size_t type is larger than unsigned long type +// (x86_64-w64-mingw32 target) then the check is redundant and gcc and clang emit +// -Wtype-limits warning. This piece makes the compiler select code with a check when a check +// is useful and code with no check when a check is redundant depending on how size_t and unsigned long +// types sizes relate to each other. +template += sizeof(size_t))> +struct LongFitsIntoSizeTMinusOne { + static bool Fits( unsigned long value ) + { + return value < (size_t)-1; + } +}; + +template <> +struct LongFitsIntoSizeTMinusOne { + static bool Fits( unsigned long ) + { + return true; + } +}; + +XMLError XMLDocument::LoadFile( FILE* fp ) +{ + Clear(); + + fseek( fp, 0, SEEK_SET ); + if ( fgetc( fp ) == EOF && ferror( fp ) != 0 ) { + SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 ); + return _errorID; + } + + fseek( fp, 0, SEEK_END ); + const long filelength = ftell( fp ); + fseek( fp, 0, SEEK_SET ); + if ( filelength == -1L ) { + SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 ); + return _errorID; + } + TIXMLASSERT( filelength >= 0 ); + + if ( !LongFitsIntoSizeTMinusOne<>::Fits( filelength ) ) { + // Cannot handle files which won't fit in buffer together with null terminator + SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 ); + return _errorID; + } + + if ( filelength == 0 ) { + SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); + return _errorID; + } + + const size_t size = filelength; + TIXMLASSERT( _charBuffer == 0 ); + _charBuffer = new char[size+1]; + size_t read = fread( _charBuffer, 1, size, fp ); + if ( read != size ) { + SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 ); + return _errorID; + } + + _charBuffer[size] = 0; + + Parse(); + return _errorID; +} + + +XMLError XMLDocument::SaveFile( const char* filename, bool compact ) +{ + if ( !filename ) { + TIXMLASSERT( false ); + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=" ); + return _errorID; + } + + FILE* fp = callfopen( filename, "w" ); + if ( !fp ) { + SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=%s", filename ); + return _errorID; + } + SaveFile(fp, compact); + fclose( fp ); + return _errorID; +} + + +XMLError XMLDocument::SaveFile( FILE* fp, bool compact ) +{ + // Clear any error from the last save, otherwise it will get reported + // for *this* call. + ClearError(); + XMLPrinter stream( fp, compact ); + Print( &stream ); + return _errorID; +} + + +XMLError XMLDocument::Parse( const char* p, size_t len ) +{ + Clear(); + + if ( len == 0 || !p || !*p ) { + SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); + return _errorID; + } + if ( len == (size_t)(-1) ) { + len = strlen( p ); + } + TIXMLASSERT( _charBuffer == 0 ); + _charBuffer = new char[ len+1 ]; + memcpy( _charBuffer, p, len ); + _charBuffer[len] = 0; + + Parse(); + if ( Error() ) { + // clean up now essentially dangling memory. + // and the parse fail can put objects in the + // pools that are dead and inaccessible. + DeleteChildren(); + _elementPool.Clear(); + _attributePool.Clear(); + _textPool.Clear(); + _commentPool.Clear(); + } + return _errorID; +} + + +void XMLDocument::Print( XMLPrinter* streamer ) const +{ + if ( streamer ) { + Accept( streamer ); + } + else { + XMLPrinter stdoutStreamer( stdout ); + Accept( &stdoutStreamer ); + } +} + + +void XMLDocument::SetError( XMLError error, int lineNum, const char* format, ... ) +{ + TIXMLASSERT( error >= 0 && error < XML_ERROR_COUNT ); + _errorID = error; + _errorLineNum = lineNum; + _errorStr.Reset(); + + size_t BUFFER_SIZE = 1000; + char* buffer = new char[BUFFER_SIZE]; + + TIXMLASSERT(sizeof(error) <= sizeof(int)); + TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d", ErrorIDToName(error), int(error), int(error), lineNum); + + if (format) { + size_t len = strlen(buffer); + TIXML_SNPRINTF(buffer + len, BUFFER_SIZE - len, ": "); + len = strlen(buffer); + + va_list va; + va_start(va, format); + TIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va); + va_end(va); + } + _errorStr.SetStr(buffer); + delete[] buffer; +} + + +/*static*/ const char* XMLDocument::ErrorIDToName(XMLError errorID) +{ + TIXMLASSERT( errorID >= 0 && errorID < XML_ERROR_COUNT ); + const char* errorName = _errorNames[errorID]; + TIXMLASSERT( errorName && errorName[0] ); + return errorName; +} + +const char* XMLDocument::ErrorStr() const +{ + return _errorStr.Empty() ? "" : _errorStr.GetStr(); +} + + +void XMLDocument::PrintError() const +{ + printf("%s\n", ErrorStr()); +} + +const char* XMLDocument::ErrorName() const +{ + return ErrorIDToName(_errorID); +} + +void XMLDocument::Parse() +{ + TIXMLASSERT( NoChildren() ); // Clear() must have been called previously + TIXMLASSERT( _charBuffer ); + _parseCurLineNum = 1; + _parseLineNum = 1; + char* p = _charBuffer; + p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum ); + p = const_cast( XMLUtil::ReadBOM( p, &_writeBOM ) ); + if ( !*p ) { + SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); + return; + } + ParseDeep(p, 0, &_parseCurLineNum ); +} + +void XMLDocument::PushDepth() +{ + _parsingDepth++; + if (_parsingDepth == TINYXML2_MAX_ELEMENT_DEPTH) { + SetError(XML_ELEMENT_DEPTH_EXCEEDED, _parseCurLineNum, "Element nesting is too deep." ); + } +} + +void XMLDocument::PopDepth() +{ + TIXMLASSERT(_parsingDepth > 0); + --_parsingDepth; +} + +XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) : + _elementJustOpened( false ), + _stack(), + _firstElement( true ), + _fp( file ), + _depth( depth ), + _textDepth( -1 ), + _processEntities( true ), + _compactMode( compact ), + _buffer() +{ + for( int i=0; i'] = true; // not required, but consistency is nice + _buffer.Push( 0 ); +} + + +void XMLPrinter::Print( const char* format, ... ) +{ + va_list va; + va_start( va, format ); + + if ( _fp ) { + vfprintf( _fp, format, va ); + } + else { + const int len = TIXML_VSCPRINTF( format, va ); + // Close out and re-start the va-args + va_end( va ); + TIXMLASSERT( len >= 0 ); + va_start( va, format ); + TIXMLASSERT( _buffer.Size() > 0 && _buffer[_buffer.Size() - 1] == 0 ); + char* p = _buffer.PushArr( len ) - 1; // back up over the null terminator. + TIXML_VSNPRINTF( p, len+1, format, va ); + } + va_end( va ); +} + + +void XMLPrinter::Write( const char* data, size_t size ) +{ + if ( _fp ) { + fwrite ( data , sizeof(char), size, _fp); + } + else { + char* p = _buffer.PushArr( static_cast(size) ) - 1; // back up over the null terminator. + memcpy( p, data, size ); + p[size] = 0; + } +} + + +void XMLPrinter::Putc( char ch ) +{ + if ( _fp ) { + fputc ( ch, _fp); + } + else { + char* p = _buffer.PushArr( sizeof(char) ) - 1; // back up over the null terminator. + p[0] = ch; + p[1] = 0; + } +} + + +void XMLPrinter::PrintSpace( int depth ) +{ + for( int i=0; i 0 && *q < ENTITY_RANGE ) { + // Check for entities. If one is found, flush + // the stream up until the entity, write the + // entity, and keep looking. + if ( flag[(unsigned char)(*q)] ) { + while ( p < q ) { + const size_t delta = q - p; + const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta; + Write( p, toPrint ); + p += toPrint; + } + bool entityPatternPrinted = false; + for( int i=0; i( bom ) ); + } + if ( writeDec ) { + PushDeclaration( "xml version=\"1.0\"" ); + } +} + + +void XMLPrinter::OpenElement( const char* name, bool compactMode ) +{ + SealElementIfJustOpened(); + _stack.Push( name ); + + if ( _textDepth < 0 && !_firstElement && !compactMode ) { + Putc( '\n' ); + } + if ( !compactMode ) { + PrintSpace( _depth ); + } + + Write ( "<" ); + Write ( name ); + + _elementJustOpened = true; + _firstElement = false; + ++_depth; +} + + +void XMLPrinter::PushAttribute( const char* name, const char* value ) +{ + TIXMLASSERT( _elementJustOpened ); + Putc ( ' ' ); + Write( name ); + Write( "=\"" ); + PrintString( value, false ); + Putc ( '\"' ); +} + + +void XMLPrinter::PushAttribute( const char* name, int v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + PushAttribute( name, buf ); +} + + +void XMLPrinter::PushAttribute( const char* name, unsigned v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + PushAttribute( name, buf ); +} + + +void XMLPrinter::PushAttribute(const char* name, int64_t v) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr(v, buf, BUF_SIZE); + PushAttribute(name, buf); +} + + +void XMLPrinter::PushAttribute( const char* name, bool v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + PushAttribute( name, buf ); +} + + +void XMLPrinter::PushAttribute( const char* name, double v ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( v, buf, BUF_SIZE ); + PushAttribute( name, buf ); +} + + +void XMLPrinter::CloseElement( bool compactMode ) +{ + --_depth; + const char* name = _stack.Pop(); + + if ( _elementJustOpened ) { + Write( "/>" ); + } + else { + if ( _textDepth < 0 && !compactMode) { + Putc( '\n' ); + PrintSpace( _depth ); + } + Write ( "" ); + } + + if ( _textDepth == _depth ) { + _textDepth = -1; + } + if ( _depth == 0 && !compactMode) { + Putc( '\n' ); + } + _elementJustOpened = false; +} + + +void XMLPrinter::SealElementIfJustOpened() +{ + if ( !_elementJustOpened ) { + return; + } + _elementJustOpened = false; + Putc( '>' ); +} + + +void XMLPrinter::PushText( const char* text, bool cdata ) +{ + _textDepth = _depth-1; + + SealElementIfJustOpened(); + if ( cdata ) { + Write( "" ); + } + else { + PrintString( text, true ); + } +} + +void XMLPrinter::PushText( int64_t value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + +void XMLPrinter::PushText( int value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + + +void XMLPrinter::PushText( unsigned value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + + +void XMLPrinter::PushText( bool value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + + +void XMLPrinter::PushText( float value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + + +void XMLPrinter::PushText( double value ) +{ + char buf[BUF_SIZE]; + XMLUtil::ToStr( value, buf, BUF_SIZE ); + PushText( buf, false ); +} + + +void XMLPrinter::PushComment( const char* comment ) +{ + SealElementIfJustOpened(); + if ( _textDepth < 0 && !_firstElement && !_compactMode) { + Putc( '\n' ); + PrintSpace( _depth ); + } + _firstElement = false; + + Write( "" ); +} + + +void XMLPrinter::PushDeclaration( const char* value ) +{ + SealElementIfJustOpened(); + if ( _textDepth < 0 && !_firstElement && !_compactMode) { + Putc( '\n' ); + PrintSpace( _depth ); + } + _firstElement = false; + + Write( "" ); +} + + +void XMLPrinter::PushUnknown( const char* value ) +{ + SealElementIfJustOpened(); + if ( _textDepth < 0 && !_firstElement && !_compactMode) { + Putc( '\n' ); + PrintSpace( _depth ); + } + _firstElement = false; + + Write( "' ); +} + + +bool XMLPrinter::VisitEnter( const XMLDocument& doc ) +{ + _processEntities = doc.ProcessEntities(); + if ( doc.HasBOM() ) { + PushHeader( true, false ); + } + return true; +} + + +bool XMLPrinter::VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) +{ + const XMLElement* parentElem = 0; + if ( element.Parent() ) { + parentElem = element.Parent()->ToElement(); + } + const bool compactMode = parentElem ? CompactMode( *parentElem ) : _compactMode; + OpenElement( element.Name(), compactMode ); + while ( attribute ) { + PushAttribute( attribute->Name(), attribute->Value() ); + attribute = attribute->Next(); + } + return true; +} + + +bool XMLPrinter::VisitExit( const XMLElement& element ) +{ + CloseElement( CompactMode(element) ); + return true; +} + + +bool XMLPrinter::Visit( const XMLText& text ) +{ + PushText( text.Value(), text.CData() ); + return true; +} + + +bool XMLPrinter::Visit( const XMLComment& comment ) +{ + PushComment( comment.Value() ); + return true; +} + +bool XMLPrinter::Visit( const XMLDeclaration& declaration ) +{ + PushDeclaration( declaration.Value() ); + return true; +} + + +bool XMLPrinter::Visit( const XMLUnknown& unknown ) +{ + PushUnknown( unknown.Value() ); + return true; +} + +} // namespace tinyxml2 diff -Nru geos-3.7.1/tests/xmltester/tinyxml2/tinyxml2.h geos-3.8.0/tests/xmltester/tinyxml2/tinyxml2.h --- geos-3.7.1/tests/xmltester/tinyxml2/tinyxml2.h 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/tinyxml2/tinyxml2.h 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,2307 @@ +/* +Original code by Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#ifndef TINYXML2_INCLUDED +#define TINYXML2_INCLUDED + +#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__) +# include +# include +# include +# include +# include +# if defined(__PS3__) +# include +# endif +#else +# include +# include +# include +# include +# include +#endif +#include + +/* + TODO: intern strings instead of allocation. +*/ +/* + gcc: + g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe + + Formatting, Artistic Style: + AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h +*/ + +#if defined( _DEBUG ) || defined (__DEBUG__) +# ifndef TINYXML2_DEBUG +# define TINYXML2_DEBUG +# endif +#endif + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4251) +#endif + +#ifdef _WIN32 +# ifdef TINYXML2_EXPORT +# define TINYXML2_LIB __declspec(dllexport) +# elif defined(TINYXML2_IMPORT) +# define TINYXML2_LIB __declspec(dllimport) +# else +# define TINYXML2_LIB +# endif +#elif __GNUC__ >= 4 +# define TINYXML2_LIB __attribute__((visibility("default"))) +#else +# define TINYXML2_LIB +#endif + + +#if defined(TINYXML2_DEBUG) +# if defined(_MSC_VER) +# // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like +# define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); } +# elif defined (ANDROID_NDK) +# include +# define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } +# else +# include +# define TIXMLASSERT assert +# endif +#else +# define TIXMLASSERT( x ) {} +#endif + + +/* Versioning, past 1.0.14: + http://semver.org/ +*/ +static const int TIXML2_MAJOR_VERSION = 7; +static const int TIXML2_MINOR_VERSION = 0; +static const int TIXML2_PATCH_VERSION = 0; + +#define TINYXML2_MAJOR_VERSION 7 +#define TINYXML2_MINOR_VERSION 0 +#define TINYXML2_PATCH_VERSION 0 + +// A fixed element depth limit is problematic. There needs to be a +// limit to avoid a stack overflow. However, that limit varies per +// system, and the capacity of the stack. On the other hand, it's a trivial +// attack that can result from ill, malicious, or even correctly formed XML, +// so there needs to be a limit in place. +static const int TINYXML2_MAX_ELEMENT_DEPTH = 100; + +namespace tinyxml2 +{ +class XMLDocument; +class XMLElement; +class XMLAttribute; +class XMLComment; +class XMLText; +class XMLDeclaration; +class XMLUnknown; +class XMLPrinter; + +/* + A class that wraps strings. Normally stores the start and end + pointers into the XML file itself, and will apply normalization + and entity translation if actually read. Can also store (and memory + manage) a traditional char[] +*/ +class StrPair +{ +public: + enum { + NEEDS_ENTITY_PROCESSING = 0x01, + NEEDS_NEWLINE_NORMALIZATION = 0x02, + NEEDS_WHITESPACE_COLLAPSING = 0x04, + + TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, + TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION, + ATTRIBUTE_NAME = 0, + ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION, + ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION, + COMMENT = NEEDS_NEWLINE_NORMALIZATION + }; + + StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {} + ~StrPair(); + + void Set( char* start, char* end, int flags ) { + TIXMLASSERT( start ); + TIXMLASSERT( end ); + Reset(); + _start = start; + _end = end; + _flags = flags | NEEDS_FLUSH; + } + + const char* GetStr(); + + bool Empty() const { + return _start == _end; + } + + void SetInternedStr( const char* str ) { + Reset(); + _start = const_cast(str); + } + + void SetStr( const char* str, int flags=0 ); + + char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr ); + char* ParseName( char* in ); + + void TransferTo( StrPair* other ); + void Reset(); + +private: + void CollapseWhitespace(); + + enum { + NEEDS_FLUSH = 0x100, + NEEDS_DELETE = 0x200 + }; + + int _flags; + char* _start; + char* _end; + + StrPair( const StrPair& other ); // not supported + void operator=( const StrPair& other ); // not supported, use TransferTo() +}; + + +/* + A dynamic array of Plain Old Data. Doesn't support constructors, etc. + Has a small initial memory pool, so that low or no usage will not + cause a call to new/delete +*/ +template +class DynArray +{ +public: + DynArray() : + _mem( _pool ), + _allocated( INITIAL_SIZE ), + _size( 0 ) + { + } + + ~DynArray() { + if ( _mem != _pool ) { + delete [] _mem; + } + } + + void Clear() { + _size = 0; + } + + void Push( T t ) { + TIXMLASSERT( _size < INT_MAX ); + EnsureCapacity( _size+1 ); + _mem[_size] = t; + ++_size; + } + + T* PushArr( int count ) { + TIXMLASSERT( count >= 0 ); + TIXMLASSERT( _size <= INT_MAX - count ); + EnsureCapacity( _size+count ); + T* ret = &_mem[_size]; + _size += count; + return ret; + } + + T Pop() { + TIXMLASSERT( _size > 0 ); + --_size; + return _mem[_size]; + } + + void PopArr( int count ) { + TIXMLASSERT( _size >= count ); + _size -= count; + } + + bool Empty() const { + return _size == 0; + } + + T& operator[](int i) { + TIXMLASSERT( i>= 0 && i < _size ); + return _mem[i]; + } + + const T& operator[](int i) const { + TIXMLASSERT( i>= 0 && i < _size ); + return _mem[i]; + } + + const T& PeekTop() const { + TIXMLASSERT( _size > 0 ); + return _mem[ _size - 1]; + } + + int Size() const { + TIXMLASSERT( _size >= 0 ); + return _size; + } + + int Capacity() const { + TIXMLASSERT( _allocated >= INITIAL_SIZE ); + return _allocated; + } + + void SwapRemove(int i) { + TIXMLASSERT(i >= 0 && i < _size); + TIXMLASSERT(_size > 0); + _mem[i] = _mem[_size - 1]; + --_size; + } + + const T* Mem() const { + TIXMLASSERT( _mem ); + return _mem; + } + + T* Mem() { + TIXMLASSERT( _mem ); + return _mem; + } + +private: + DynArray( const DynArray& ); // not supported + void operator=( const DynArray& ); // not supported + + void EnsureCapacity( int cap ) { + TIXMLASSERT( cap > 0 ); + if ( cap > _allocated ) { + TIXMLASSERT( cap <= INT_MAX / 2 ); + int newAllocated = cap * 2; + T* newMem = new T[newAllocated]; + TIXMLASSERT( newAllocated >= _size ); + memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs + if ( _mem != _pool ) { + delete [] _mem; + } + _mem = newMem; + _allocated = newAllocated; + } + } + + T* _mem; + T _pool[INITIAL_SIZE]; + int _allocated; // objects allocated + int _size; // number objects in use +}; + + +/* + Parent virtual class of a pool for fast allocation + and deallocation of objects. +*/ +class MemPool +{ +public: + MemPool() {} + virtual ~MemPool() {} + + virtual int ItemSize() const = 0; + virtual void* Alloc() = 0; + virtual void Free( void* ) = 0; + virtual void SetTracked() = 0; +}; + + +/* + Template child class to create pools of the correct type. +*/ +template< int ITEM_SIZE > +class MemPoolT : public MemPool +{ +public: + MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {} + ~MemPoolT() { + MemPoolT< ITEM_SIZE >::Clear(); + } + + void Clear() { + // Delete the blocks. + while( !_blockPtrs.Empty()) { + Block* lastBlock = _blockPtrs.Pop(); + delete lastBlock; + } + _root = 0; + _currentAllocs = 0; + _nAllocs = 0; + _maxAllocs = 0; + _nUntracked = 0; + } + + virtual int ItemSize() const override { + return ITEM_SIZE; + } + int CurrentAllocs() const { + return _currentAllocs; + } + + virtual void* Alloc() override { + if ( !_root ) { + // Need a new block. + Block* block = new Block(); + _blockPtrs.Push( block ); + + Item* blockItems = block->items; + for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) { + blockItems[i].next = &(blockItems[i + 1]); + } + blockItems[ITEMS_PER_BLOCK - 1].next = 0; + _root = blockItems; + } + Item* const result = _root; + TIXMLASSERT( result != 0 ); + _root = _root->next; + + ++_currentAllocs; + if ( _currentAllocs > _maxAllocs ) { + _maxAllocs = _currentAllocs; + } + ++_nAllocs; + ++_nUntracked; + return result; + } + + virtual void Free( void* mem ) override { + if ( !mem ) { + return; + } + --_currentAllocs; + Item* item = static_cast( mem ); +#ifdef TINYXML2_DEBUG + memset( item, 0xfe, sizeof( *item ) ); +#endif + item->next = _root; + _root = item; + } + void Trace( const char* name ) { + printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n", + name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs, + ITEM_SIZE, _nAllocs, _blockPtrs.Size() ); + } + + void SetTracked() override { + --_nUntracked; + } + + int Untracked() const { + return _nUntracked; + } + + // This number is perf sensitive. 4k seems like a good tradeoff on my machine. + // The test file is large, 170k. + // Release: VS2010 gcc(no opt) + // 1k: 4000 + // 2k: 4000 + // 4k: 3900 21000 + // 16k: 5200 + // 32k: 4300 + // 64k: 4000 21000 + // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK + // in private part if ITEMS_PER_BLOCK is private + enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE }; + +private: + MemPoolT( const MemPoolT& ); // not supported + void operator=( const MemPoolT& ); // not supported + + union Item { + Item* next; + char itemData[ITEM_SIZE]; + }; + struct Block { + Item items[ITEMS_PER_BLOCK]; + }; + DynArray< Block*, 10 > _blockPtrs; + Item* _root; + + int _currentAllocs; + int _nAllocs; + int _maxAllocs; + int _nUntracked; +}; + + + +/** + Implements the interface to the "Visitor pattern" (see the Accept() method.) + If you call the Accept() method, it requires being passed a XMLVisitor + class to handle callbacks. For nodes that contain other nodes (Document, Element) + you will get called with a VisitEnter/VisitExit pair. Nodes that are always leafs + are simply called with Visit(). + + If you return 'true' from a Visit method, recursive parsing will continue. If you return + false, no children of this node or its siblings will be visited. + + All flavors of Visit methods have a default implementation that returns 'true' (continue + visiting). You need to only override methods that are interesting to you. + + Generally Accept() is called on the XMLDocument, although all nodes support visiting. + + You should never change the document from a callback. + + @sa XMLNode::Accept() +*/ +class TINYXML2_LIB XMLVisitor +{ +public: + virtual ~XMLVisitor() {} + + /// Visit a document. + virtual bool VisitEnter( const XMLDocument& /*doc*/ ) { + return true; + } + /// Visit a document. + virtual bool VisitExit( const XMLDocument& /*doc*/ ) { + return true; + } + + /// Visit an element. + virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ ) { + return true; + } + /// Visit an element. + virtual bool VisitExit( const XMLElement& /*element*/ ) { + return true; + } + + /// Visit a declaration. + virtual bool Visit( const XMLDeclaration& /*declaration*/ ) { + return true; + } + /// Visit a text node. + virtual bool Visit( const XMLText& /*text*/ ) { + return true; + } + /// Visit a comment node. + virtual bool Visit( const XMLComment& /*comment*/ ) { + return true; + } + /// Visit an unknown node. + virtual bool Visit( const XMLUnknown& /*unknown*/ ) { + return true; + } +}; + +// WARNING: must match XMLDocument::_errorNames[] +enum XMLError { + XML_SUCCESS = 0, + XML_NO_ATTRIBUTE, + XML_WRONG_ATTRIBUTE_TYPE, + XML_ERROR_FILE_NOT_FOUND, + XML_ERROR_FILE_COULD_NOT_BE_OPENED, + XML_ERROR_FILE_READ_ERROR, + XML_ERROR_PARSING_ELEMENT, + XML_ERROR_PARSING_ATTRIBUTE, + XML_ERROR_PARSING_TEXT, + XML_ERROR_PARSING_CDATA, + XML_ERROR_PARSING_COMMENT, + XML_ERROR_PARSING_DECLARATION, + XML_ERROR_PARSING_UNKNOWN, + XML_ERROR_EMPTY_DOCUMENT, + XML_ERROR_MISMATCHED_ELEMENT, + XML_ERROR_PARSING, + XML_CAN_NOT_CONVERT_TEXT, + XML_NO_TEXT_NODE, + XML_ELEMENT_DEPTH_EXCEEDED, + + XML_ERROR_COUNT +}; + + +/* + Utility functionality. +*/ +class TINYXML2_LIB XMLUtil +{ +public: + static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) { + TIXMLASSERT( p ); + + while( IsWhiteSpace(*p) ) { + if (curLineNumPtr && *p == '\n') { + ++(*curLineNumPtr); + } + ++p; + } + TIXMLASSERT( p ); + return p; + } + static char* SkipWhiteSpace( char* p, int* curLineNumPtr ) { + return const_cast( SkipWhiteSpace( const_cast(p), curLineNumPtr ) ); + } + + // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't + // correct, but simple, and usually works. + static bool IsWhiteSpace( char p ) { + return !IsUTF8Continuation(p) && isspace( static_cast(p) ); + } + + inline static bool IsNameStartChar( unsigned char ch ) { + if ( ch >= 128 ) { + // This is a heuristic guess in attempt to not implement Unicode-aware isalpha() + return true; + } + if ( isalpha( ch ) ) { + return true; + } + return ch == ':' || ch == '_'; + } + + inline static bool IsNameChar( unsigned char ch ) { + return IsNameStartChar( ch ) + || isdigit( ch ) + || ch == '.' + || ch == '-'; + } + + inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) { + if ( p == q ) { + return true; + } + TIXMLASSERT( p ); + TIXMLASSERT( q ); + TIXMLASSERT( nChar >= 0 ); + return strncmp( p, q, nChar ) == 0; + } + + inline static bool IsUTF8Continuation( char p ) { + return ( p & 0x80 ) != 0; + } + + static const char* ReadBOM( const char* p, bool* hasBOM ); + // p is the starting location, + // the UTF-8 value of the entity will be placed in value, and length filled in. + static const char* GetCharacterRef( const char* p, char* value, int* length ); + static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); + + // converts primitive types to strings + static void ToStr( int v, char* buffer, int bufferSize ); + static void ToStr( unsigned v, char* buffer, int bufferSize ); + static void ToStr( bool v, char* buffer, int bufferSize ); + static void ToStr( float v, char* buffer, int bufferSize ); + static void ToStr( double v, char* buffer, int bufferSize ); + static void ToStr(int64_t v, char* buffer, int bufferSize); + + // converts strings to primitive types + static bool ToInt( const char* str, int* value ); + static bool ToUnsigned( const char* str, unsigned* value ); + static bool ToBool( const char* str, bool* value ); + static bool ToFloat( const char* str, float* value ); + static bool ToDouble( const char* str, double* value ); + static bool ToInt64(const char* str, int64_t* value); + + // Changes what is serialized for a boolean value. + // Default to "true" and "false". Shouldn't be changed + // unless you have a special testing or compatibility need. + // Be careful: static, global, & not thread safe. + // Be sure to set static const memory as parameters. + static void SetBoolSerialization(const char* writeTrue, const char* writeFalse); + +private: + static const char* writeBoolTrue; + static const char* writeBoolFalse; +}; + + +/** XMLNode is a base class for every object that is in the + XML Document Object Model (DOM), except XMLAttributes. + Nodes have siblings, a parent, and children which can + be navigated. A node is always in a XMLDocument. + The type of a XMLNode can be queried, and it can + be cast to its more defined type. + + A XMLDocument allocates memory for all its Nodes. + When the XMLDocument gets deleted, all its Nodes + will also be deleted. + + @verbatim + A Document can contain: Element (container or leaf) + Comment (leaf) + Unknown (leaf) + Declaration( leaf ) + + An Element can contain: Element (container or leaf) + Text (leaf) + Attributes (not on tree) + Comment (leaf) + Unknown (leaf) + + @endverbatim +*/ +class TINYXML2_LIB XMLNode +{ + friend class XMLDocument; + friend class XMLElement; +public: + + /// Get the XMLDocument that owns this XMLNode. + const XMLDocument* GetDocument() const { + TIXMLASSERT( _document ); + return _document; + } + /// Get the XMLDocument that owns this XMLNode. + XMLDocument* GetDocument() { + TIXMLASSERT( _document ); + return _document; + } + + /// Safely cast to an Element, or null. + virtual XMLElement* ToElement() { + return 0; + } + /// Safely cast to Text, or null. + virtual XMLText* ToText() { + return 0; + } + /// Safely cast to a Comment, or null. + virtual XMLComment* ToComment() { + return 0; + } + /// Safely cast to a Document, or null. + virtual XMLDocument* ToDocument() { + return 0; + } + /// Safely cast to a Declaration, or null. + virtual XMLDeclaration* ToDeclaration() { + return 0; + } + /// Safely cast to an Unknown, or null. + virtual XMLUnknown* ToUnknown() { + return 0; + } + + virtual const XMLElement* ToElement() const { + return 0; + } + virtual const XMLText* ToText() const { + return 0; + } + virtual const XMLComment* ToComment() const { + return 0; + } + virtual const XMLDocument* ToDocument() const { + return 0; + } + virtual const XMLDeclaration* ToDeclaration() const { + return 0; + } + virtual const XMLUnknown* ToUnknown() const { + return 0; + } + + /** The meaning of 'value' changes for the specific type. + @verbatim + Document: empty (NULL is returned, not an empty string) + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + */ + const char* Value() const; + + /** Set the Value of an XML node. + @sa Value() + */ + void SetValue( const char* val, bool staticMem=false ); + + /// Gets the line number the node is in, if the document was parsed from a file. + int GetLineNum() const { return _parseLineNum; } + + /// Get the parent of this node on the DOM. + const XMLNode* Parent() const { + return _parent; + } + + XMLNode* Parent() { + return _parent; + } + + /// Returns true if this node has no children. + bool NoChildren() const { + return !_firstChild; + } + + /// Get the first child node, or null if none exists. + const XMLNode* FirstChild() const { + return _firstChild; + } + + XMLNode* FirstChild() { + return _firstChild; + } + + /** Get the first child element, or optionally the first child + element with the specified name. + */ + const XMLElement* FirstChildElement( const char* name = 0 ) const; + + XMLElement* FirstChildElement( const char* name = 0 ) { + return const_cast(const_cast(this)->FirstChildElement( name )); + } + + /// Get the last child node, or null if none exists. + const XMLNode* LastChild() const { + return _lastChild; + } + + XMLNode* LastChild() { + return _lastChild; + } + + /** Get the last child element or optionally the last child + element with the specified name. + */ + const XMLElement* LastChildElement( const char* name = 0 ) const; + + XMLElement* LastChildElement( const char* name = 0 ) { + return const_cast(const_cast(this)->LastChildElement(name) ); + } + + /// Get the previous (left) sibling node of this node. + const XMLNode* PreviousSibling() const { + return _prev; + } + + XMLNode* PreviousSibling() { + return _prev; + } + + /// Get the previous (left) sibling element of this node, with an optionally supplied name. + const XMLElement* PreviousSiblingElement( const char* name = 0 ) const ; + + XMLElement* PreviousSiblingElement( const char* name = 0 ) { + return const_cast(const_cast(this)->PreviousSiblingElement( name ) ); + } + + /// Get the next (right) sibling node of this node. + const XMLNode* NextSibling() const { + return _next; + } + + XMLNode* NextSibling() { + return _next; + } + + /// Get the next (right) sibling element of this node, with an optionally supplied name. + const XMLElement* NextSiblingElement( const char* name = 0 ) const; + + XMLElement* NextSiblingElement( const char* name = 0 ) { + return const_cast(const_cast(this)->NextSiblingElement( name ) ); + } + + /** + Add a child node as the last (right) child. + If the child node is already part of the document, + it is moved from its old location to the new location. + Returns the addThis argument or 0 if the node does not + belong to the same document. + */ + XMLNode* InsertEndChild( XMLNode* addThis ); + + XMLNode* LinkEndChild( XMLNode* addThis ) { + return InsertEndChild( addThis ); + } + /** + Add a child node as the first (left) child. + If the child node is already part of the document, + it is moved from its old location to the new location. + Returns the addThis argument or 0 if the node does not + belong to the same document. + */ + XMLNode* InsertFirstChild( XMLNode* addThis ); + /** + Add a node after the specified child node. + If the child node is already part of the document, + it is moved from its old location to the new location. + Returns the addThis argument or 0 if the afterThis node + is not a child of this node, or if the node does not + belong to the same document. + */ + XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis ); + + /** + Delete all the children of this node. + */ + void DeleteChildren(); + + /** + Delete a child of this node. + */ + void DeleteChild( XMLNode* node ); + + /** + Make a copy of this node, but not its children. + You may pass in a Document pointer that will be + the owner of the new Node. If the 'document' is + null, then the node returned will be allocated + from the current Document. (this->GetDocument()) + + Note: if called on a XMLDocument, this will return null. + */ + virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0; + + /** + Make a copy of this node and all its children. + + If the 'target' is null, then the nodes will + be allocated in the current document. If 'target' + is specified, the memory will be allocated is the + specified XMLDocument. + + NOTE: This is probably not the correct tool to + copy a document, since XMLDocuments can have multiple + top level XMLNodes. You probably want to use + XMLDocument::DeepCopy() + */ + XMLNode* DeepClone( XMLDocument* target ) const; + + /** + Test if 2 nodes are the same, but don't test children. + The 2 nodes do not need to be in the same Document. + + Note: if called on a XMLDocument, this will return false. + */ + virtual bool ShallowEqual( const XMLNode* compare ) const = 0; + + /** Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the + XML tree will be conditionally visited and the host will be called back + via the XMLVisitor interface. + + This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse + the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this + interface versus any other.) + + The interface has been based on ideas from: + + - http://www.saxproject.org/ + - http://c2.com/cgi/wiki?HierarchicalVisitorPattern + + Which are both good references for "visiting". + + An example of using Accept(): + @verbatim + XMLPrinter printer; + tinyxmlDoc.Accept( &printer ); + const char* xmlcstr = printer.CStr(); + @endverbatim + */ + virtual bool Accept( XMLVisitor* visitor ) const = 0; + + /** + Set user data into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void SetUserData(void* userData) { _userData = userData; } + + /** + Get user data set into the XMLNode. TinyXML-2 in + no way processes or interprets user data. + It is initially 0. + */ + void* GetUserData() const { return _userData; } + +protected: + explicit XMLNode( XMLDocument* ); + virtual ~XMLNode(); + + virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr); + + XMLDocument* _document; + XMLNode* _parent; + mutable StrPair _value; + int _parseLineNum; + + XMLNode* _firstChild; + XMLNode* _lastChild; + + XMLNode* _prev; + XMLNode* _next; + + void* _userData; + +private: + MemPool* _memPool; + void Unlink( XMLNode* child ); + static void DeleteNode( XMLNode* node ); + void InsertChildPreamble( XMLNode* insertThis ) const; + const XMLElement* ToElementWithName( const char* name ) const; + + XMLNode( const XMLNode& ); // not supported + XMLNode& operator=( const XMLNode& ); // not supported +}; + + +/** XML text. + + Note that a text node can have child element nodes, for example: + @verbatim + This is bold + @endverbatim + + A text node can have 2 ways to output the next. "normal" output + and CDATA. It will default to the mode it was parsed from the XML file and + you generally want to leave it alone, but you can change the output mode with + SetCData() and query it with CData(). +*/ +class TINYXML2_LIB XMLText : public XMLNode +{ + friend class XMLDocument; +public: + virtual bool Accept( XMLVisitor* visitor ) const override; + + virtual XMLText* ToText() override { + return this; + } + virtual const XMLText* ToText() const override { + return this; + } + + /// Declare whether this should be CDATA or standard text. + void SetCData( bool isCData ) { + _isCData = isCData; + } + /// Returns true if this is a CDATA text element. + bool CData() const { + return _isCData; + } + + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; + +protected: + explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {} + virtual ~XMLText() {} + + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; + +private: + bool _isCData; + + XMLText( const XMLText& ); // not supported + XMLText& operator=( const XMLText& ); // not supported +}; + + +/** An XML Comment. */ +class TINYXML2_LIB XMLComment : public XMLNode +{ + friend class XMLDocument; +public: + virtual XMLComment* ToComment() override { + return this; + } + virtual const XMLComment* ToComment() const override { + return this; + } + + virtual bool Accept( XMLVisitor* visitor ) const override; + + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; + +protected: + explicit XMLComment( XMLDocument* doc ); + virtual ~XMLComment(); + + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr) override; + +private: + XMLComment( const XMLComment& ); // not supported + XMLComment& operator=( const XMLComment& ); // not supported +}; + + +/** In correct XML the declaration is the first entry in the file. + @verbatim + + @endverbatim + + TinyXML-2 will happily read or write files without a declaration, + however. + + The text of the declaration isn't interpreted. It is parsed + and written as a string. +*/ +class TINYXML2_LIB XMLDeclaration : public XMLNode +{ + friend class XMLDocument; +public: + virtual XMLDeclaration* ToDeclaration() override{ + return this; + } + virtual const XMLDeclaration* ToDeclaration() const override{ + return this; + } + + virtual bool Accept( XMLVisitor* visitor ) const override; + + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; + +protected: + explicit XMLDeclaration( XMLDocument* doc ); + virtual ~XMLDeclaration(); + + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; + +private: + XMLDeclaration( const XMLDeclaration& ); // not supported + XMLDeclaration& operator=( const XMLDeclaration& ); // not supported +}; + + +/** Any tag that TinyXML-2 doesn't recognize is saved as an + unknown. It is a tag of text, but should not be modified. + It will be written back to the XML, unchanged, when the file + is saved. + + DTD tags get thrown into XMLUnknowns. +*/ +class TINYXML2_LIB XMLUnknown : public XMLNode +{ + friend class XMLDocument; +public: + virtual XMLUnknown* ToUnknown() override { + return this; + } + virtual const XMLUnknown* ToUnknown() const override { + return this; + } + + virtual bool Accept( XMLVisitor* visitor ) const override; + + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; + +protected: + explicit XMLUnknown( XMLDocument* doc ); + virtual ~XMLUnknown(); + + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; + +private: + XMLUnknown( const XMLUnknown& ); // not supported + XMLUnknown& operator=( const XMLUnknown& ); // not supported +}; + + + +/** An attribute is a name-value pair. Elements have an arbitrary + number of attributes, each with a unique name. + + @note The attributes are not XMLNodes. You may only query the + Next() attribute in a list. +*/ +class TINYXML2_LIB XMLAttribute +{ + friend class XMLElement; +public: + /// The name of the attribute. + const char* Name() const; + + /// The value of the attribute. + const char* Value() const; + + /// Gets the line number the attribute is in, if the document was parsed from a file. + int GetLineNum() const { return _parseLineNum; } + + /// The next attribute in the list. + const XMLAttribute* Next() const { + return _next; + } + + /** IntValue interprets the attribute as an integer, and returns the value. + If the value isn't an integer, 0 will be returned. There is no error checking; + use QueryIntValue() if you need error checking. + */ + int IntValue() const { + int i = 0; + QueryIntValue(&i); + return i; + } + + int64_t Int64Value() const { + int64_t i = 0; + QueryInt64Value(&i); + return i; + } + + /// Query as an unsigned integer. See IntValue() + unsigned UnsignedValue() const { + unsigned i=0; + QueryUnsignedValue( &i ); + return i; + } + /// Query as a boolean. See IntValue() + bool BoolValue() const { + bool b=false; + QueryBoolValue( &b ); + return b; + } + /// Query as a double. See IntValue() + double DoubleValue() const { + double d=0; + QueryDoubleValue( &d ); + return d; + } + /// Query as a float. See IntValue() + float FloatValue() const { + float f=0; + QueryFloatValue( &f ); + return f; + } + + /** QueryIntValue interprets the attribute as an integer, and returns the value + in the provided parameter. The function will return XML_SUCCESS on success, + and XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful. + */ + XMLError QueryIntValue( int* value ) const; + /// See QueryIntValue + XMLError QueryUnsignedValue( unsigned int* value ) const; + /// See QueryIntValue + XMLError QueryInt64Value(int64_t* value) const; + /// See QueryIntValue + XMLError QueryBoolValue( bool* value ) const; + /// See QueryIntValue + XMLError QueryDoubleValue( double* value ) const; + /// See QueryIntValue + XMLError QueryFloatValue( float* value ) const; + + /// Set the attribute to a string value. + void SetAttribute( const char* value ); + /// Set the attribute to value. + void SetAttribute( int value ); + /// Set the attribute to value. + void SetAttribute( unsigned value ); + /// Set the attribute to value. + void SetAttribute(int64_t value); + /// Set the attribute to value. + void SetAttribute( bool value ); + /// Set the attribute to value. + void SetAttribute( double value ); + /// Set the attribute to value. + void SetAttribute( float value ); + +private: + enum { BUF_SIZE = 200 }; + + XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {} + virtual ~XMLAttribute() {} + + XMLAttribute( const XMLAttribute& ); // not supported + void operator=( const XMLAttribute& ); // not supported + void SetName( const char* name ); + + char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr ); + + mutable StrPair _name; + mutable StrPair _value; + int _parseLineNum; + XMLAttribute* _next; + MemPool* _memPool; +}; + + +/** The element is a container class. It has a value, the element name, + and can contain other elements, text, comments, and unknowns. + Elements also contain an arbitrary number of attributes. +*/ +class TINYXML2_LIB XMLElement : public XMLNode +{ + friend class XMLDocument; +public: + /// Get the name of an element (which is the Value() of the node.) + const char* Name() const { + return Value(); + } + /// Set the name of the element. + void SetName( const char* str, bool staticMem=false ) { + SetValue( str, staticMem ); + } + + virtual XMLElement* ToElement() override { + return this; + } + virtual const XMLElement* ToElement() const override { + return this; + } + virtual bool Accept( XMLVisitor* visitor ) const override; + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none + exists. For example: + + @verbatim + const char* value = ele->Attribute( "foo" ); + @endverbatim + + The 'value' parameter is normally null. However, if specified, + the attribute will only be returned if the 'name' and 'value' + match. This allow you to write code: + + @verbatim + if ( ele->Attribute( "foo", "bar" ) ) callFooIsBar(); + @endverbatim + + rather than: + @verbatim + if ( ele->Attribute( "foo" ) ) { + if ( strcmp( ele->Attribute( "foo" ), "bar" ) == 0 ) callFooIsBar(); + } + @endverbatim + */ + const char* Attribute( const char* name, const char* value=0 ) const; + + /** Given an attribute name, IntAttribute() returns the value + of the attribute interpreted as an integer. The default + value will be returned if the attribute isn't present, + or if there is an error. (For a method with error + checking, see QueryIntAttribute()). + */ + int IntAttribute(const char* name, int defaultValue = 0) const; + /// See IntAttribute() + unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const; + /// See IntAttribute() + int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const; + /// See IntAttribute() + bool BoolAttribute(const char* name, bool defaultValue = false) const; + /// See IntAttribute() + double DoubleAttribute(const char* name, double defaultValue = 0) const; + /// See IntAttribute() + float FloatAttribute(const char* name, float defaultValue = 0) const; + + /** Given an attribute name, QueryIntAttribute() returns + XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion + can't be performed, or XML_NO_ATTRIBUTE if the attribute + doesn't exist. If successful, the result of the conversion + will be written to 'value'. If not successful, nothing will + be written to 'value'. This allows you to provide default + value: + + @verbatim + int value = 10; + QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10 + @endverbatim + */ + XMLError QueryIntAttribute( const char* name, int* value ) const { + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return XML_NO_ATTRIBUTE; + } + return a->QueryIntValue( value ); + } + + /// See QueryIntAttribute() + XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const { + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return XML_NO_ATTRIBUTE; + } + return a->QueryUnsignedValue( value ); + } + + /// See QueryIntAttribute() + XMLError QueryInt64Attribute(const char* name, int64_t* value) const { + const XMLAttribute* a = FindAttribute(name); + if (!a) { + return XML_NO_ATTRIBUTE; + } + return a->QueryInt64Value(value); + } + + /// See QueryIntAttribute() + XMLError QueryBoolAttribute( const char* name, bool* value ) const { + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return XML_NO_ATTRIBUTE; + } + return a->QueryBoolValue( value ); + } + /// See QueryIntAttribute() + XMLError QueryDoubleAttribute( const char* name, double* value ) const { + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return XML_NO_ATTRIBUTE; + } + return a->QueryDoubleValue( value ); + } + /// See QueryIntAttribute() + XMLError QueryFloatAttribute( const char* name, float* value ) const { + const XMLAttribute* a = FindAttribute( name ); + if ( !a ) { + return XML_NO_ATTRIBUTE; + } + return a->QueryFloatValue( value ); + } + + /// See QueryIntAttribute() + XMLError QueryStringAttribute(const char* name, const char** value) const { + const XMLAttribute* a = FindAttribute(name); + if (!a) { + return XML_NO_ATTRIBUTE; + } + *value = a->Value(); + return XML_SUCCESS; + } + + + + /** Given an attribute name, QueryAttribute() returns + XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion + can't be performed, or XML_NO_ATTRIBUTE if the attribute + doesn't exist. It is overloaded for the primitive types, + and is a generally more convenient replacement of + QueryIntAttribute() and related functions. + + If successful, the result of the conversion + will be written to 'value'. If not successful, nothing will + be written to 'value'. This allows you to provide default + value: + + @verbatim + int value = 10; + QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10 + @endverbatim + */ + XMLError QueryAttribute( const char* name, int* value ) const { + return QueryIntAttribute( name, value ); + } + + XMLError QueryAttribute( const char* name, unsigned int* value ) const { + return QueryUnsignedAttribute( name, value ); + } + + XMLError QueryAttribute(const char* name, int64_t* value) const { + return QueryInt64Attribute(name, value); + } + + XMLError QueryAttribute( const char* name, bool* value ) const { + return QueryBoolAttribute( name, value ); + } + + XMLError QueryAttribute( const char* name, double* value ) const { + return QueryDoubleAttribute( name, value ); + } + + XMLError QueryAttribute( const char* name, float* value ) const { + return QueryFloatAttribute( name, value ); + } + + /// Sets the named attribute to value. + void SetAttribute( const char* name, const char* value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + /// Sets the named attribute to value. + void SetAttribute( const char* name, int value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + /// Sets the named attribute to value. + void SetAttribute( const char* name, unsigned value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + + /// Sets the named attribute to value. + void SetAttribute(const char* name, int64_t value) { + XMLAttribute* a = FindOrCreateAttribute(name); + a->SetAttribute(value); + } + + /// Sets the named attribute to value. + void SetAttribute( const char* name, bool value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + /// Sets the named attribute to value. + void SetAttribute( const char* name, double value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + /// Sets the named attribute to value. + void SetAttribute( const char* name, float value ) { + XMLAttribute* a = FindOrCreateAttribute( name ); + a->SetAttribute( value ); + } + + /** + Delete an attribute. + */ + void DeleteAttribute( const char* name ); + + /// Return the first attribute in the list. + const XMLAttribute* FirstAttribute() const { + return _rootAttribute; + } + /// Query a specific attribute in the list. + const XMLAttribute* FindAttribute( const char* name ) const; + + /** Convenience function for easy access to the text inside an element. Although easy + and concise, GetText() is limited compared to getting the XMLText child + and accessing it directly. + + If the first child of 'this' is a XMLText, the GetText() + returns the character string of the Text node, else null is returned. + + This is a convenient method for getting the text of simple contained text: + @verbatim + This is text + const char* str = fooElement->GetText(); + @endverbatim + + 'str' will be a pointer to "This is text". + + Note that this function can be misleading. If the element foo was created from + this XML: + @verbatim + This is text + @endverbatim + + then the value of str would be null. The first child node isn't a text node, it is + another element. From this XML: + @verbatim + This is text + @endverbatim + GetText() will return "This is ". + */ + const char* GetText() const; + + /** Convenience function for easy access to the text inside an element. Although easy + and concise, SetText() is limited compared to creating an XMLText child + and mutating it directly. + + If the first child of 'this' is a XMLText, SetText() sets its value to + the given string, otherwise it will create a first child that is an XMLText. + + This is a convenient method for setting the text of simple contained text: + @verbatim + This is text + fooElement->SetText( "Hullaballoo!" ); + Hullaballoo! + @endverbatim + + Note that this function can be misleading. If the element foo was created from + this XML: + @verbatim + This is text + @endverbatim + + then it will not change "This is text", but rather prefix it with a text element: + @verbatim + Hullaballoo!This is text + @endverbatim + + For this XML: + @verbatim + + @endverbatim + SetText() will generate + @verbatim + Hullaballoo! + @endverbatim + */ + void SetText( const char* inText ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( int value ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( unsigned value ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText(int64_t value); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( bool value ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( double value ); + /// Convenience method for setting text inside an element. See SetText() for important limitations. + void SetText( float value ); + + /** + Convenience method to query the value of a child text node. This is probably best + shown by example. Given you have a document is this form: + @verbatim + + 1 + 1.4 + + @endverbatim + + The QueryIntText() and similar functions provide a safe and easier way to get to the + "value" of x and y. + + @verbatim + int x = 0; + float y = 0; // types of x and y are contrived for example + const XMLElement* xElement = pointElement->FirstChildElement( "x" ); + const XMLElement* yElement = pointElement->FirstChildElement( "y" ); + xElement->QueryIntText( &x ); + yElement->QueryFloatText( &y ); + @endverbatim + + @returns XML_SUCCESS (0) on success, XML_CAN_NOT_CONVERT_TEXT if the text cannot be converted + to the requested type, and XML_NO_TEXT_NODE if there is no child text to query. + + */ + XMLError QueryIntText( int* ival ) const; + /// See QueryIntText() + XMLError QueryUnsignedText( unsigned* uval ) const; + /// See QueryIntText() + XMLError QueryInt64Text(int64_t* uval) const; + /// See QueryIntText() + XMLError QueryBoolText( bool* bval ) const; + /// See QueryIntText() + XMLError QueryDoubleText( double* dval ) const; + /// See QueryIntText() + XMLError QueryFloatText( float* fval ) const; + + int IntText(int defaultValue = 0) const; + + /// See QueryIntText() + unsigned UnsignedText(unsigned defaultValue = 0) const; + /// See QueryIntText() + int64_t Int64Text(int64_t defaultValue = 0) const; + /// See QueryIntText() + bool BoolText(bool defaultValue = false) const; + /// See QueryIntText() + double DoubleText(double defaultValue = 0) const; + /// See QueryIntText() + float FloatText(float defaultValue = 0) const; + + // internal: + enum ElementClosingType { + OPEN, // + CLOSED, // + CLOSING // + }; + ElementClosingType ClosingType() const { + return _closingType; + } + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; + +protected: + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; + +private: + XMLElement( XMLDocument* doc ); + virtual ~XMLElement(); + XMLElement( const XMLElement& ); // not supported + void operator=( const XMLElement& ); // not supported + + XMLAttribute* FindOrCreateAttribute( const char* name ); + char* ParseAttributes( char* p, int* curLineNumPtr ); + static void DeleteAttribute( XMLAttribute* attribute ); + XMLAttribute* CreateAttribute(); + + enum { BUF_SIZE = 200 }; + ElementClosingType _closingType; + // The attribute list is ordered; there is no 'lastAttribute' + // because the list needs to be scanned for dupes before adding + // a new attribute. + XMLAttribute* _rootAttribute; +}; + + +enum Whitespace { + PRESERVE_WHITESPACE, + COLLAPSE_WHITESPACE +}; + + +/** A Document binds together all the functionality. + It can be saved, loaded, and printed to the screen. + All Nodes are connected and allocated to a Document. + If the Document is deleted, all its Nodes are also deleted. +*/ +class TINYXML2_LIB XMLDocument : public XMLNode +{ + friend class XMLElement; + // Gives access to SetError and Push/PopDepth, but over-access for everything else. + // Wishing C++ had "internal" scope. + friend class XMLNode; + friend class XMLText; + friend class XMLComment; + friend class XMLDeclaration; + friend class XMLUnknown; +public: + /// constructor + XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE ); + ~XMLDocument(); + + virtual XMLDocument* ToDocument() override { + TIXMLASSERT( this == _document ); + return this; + } + virtual const XMLDocument* ToDocument() const override { + TIXMLASSERT( this == _document ); + return this; + } + + /** + Parse an XML file from a character string. + Returns XML_SUCCESS (0) on success, or + an errorID. + + You may optionally pass in the 'nBytes', which is + the number of bytes which will be parsed. If not + specified, TinyXML-2 will assume 'xml' points to a + null terminated string. + */ + XMLError Parse( const char* xml, size_t nBytes=(size_t)(-1) ); + + /** + Load an XML file from disk. + Returns XML_SUCCESS (0) on success, or + an errorID. + */ + XMLError LoadFile( const char* filename ); + + /** + Load an XML file from disk. You are responsible + for providing and closing the FILE*. + + NOTE: The file should be opened as binary ("rb") + not text in order for TinyXML-2 to correctly + do newline normalization. + + Returns XML_SUCCESS (0) on success, or + an errorID. + */ + XMLError LoadFile( FILE* ); + + /** + Save the XML file to disk. + Returns XML_SUCCESS (0) on success, or + an errorID. + */ + XMLError SaveFile( const char* filename, bool compact = false ); + + /** + Save the XML file to disk. You are responsible + for providing and closing the FILE*. + + Returns XML_SUCCESS (0) on success, or + an errorID. + */ + XMLError SaveFile( FILE* fp, bool compact = false ); + + bool ProcessEntities() const { + return _processEntities; + } + Whitespace WhitespaceMode() const { + return _whitespaceMode; + } + + /** + Returns true if this document has a leading Byte Order Mark of UTF8. + */ + bool HasBOM() const { + return _writeBOM; + } + /** Sets whether to write the BOM when writing the file. + */ + void SetBOM( bool useBOM ) { + _writeBOM = useBOM; + } + + /** Return the root element of DOM. Equivalent to FirstChildElement(). + To get the first node, use FirstChild(). + */ + XMLElement* RootElement() { + return FirstChildElement(); + } + const XMLElement* RootElement() const { + return FirstChildElement(); + } + + /** Print the Document. If the Printer is not provided, it will + print to stdout. If you provide Printer, this can print to a file: + @verbatim + XMLPrinter printer( fp ); + doc.Print( &printer ); + @endverbatim + + Or you can use a printer to print to memory: + @verbatim + XMLPrinter printer; + doc.Print( &printer ); + // printer.CStr() has a const char* to the XML + @endverbatim + */ + void Print( XMLPrinter* streamer=0 ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; + + /** + Create a new Element associated with + this Document. The memory for the Element + is managed by the Document. + */ + XMLElement* NewElement( const char* name ); + /** + Create a new Comment associated with + this Document. The memory for the Comment + is managed by the Document. + */ + XMLComment* NewComment( const char* comment ); + /** + Create a new Text associated with + this Document. The memory for the Text + is managed by the Document. + */ + XMLText* NewText( const char* text ); + /** + Create a new Declaration associated with + this Document. The memory for the object + is managed by the Document. + + If the 'text' param is null, the standard + declaration is used.: + @verbatim + + @endverbatim + */ + XMLDeclaration* NewDeclaration( const char* text=0 ); + /** + Create a new Unknown associated with + this Document. The memory for the object + is managed by the Document. + */ + XMLUnknown* NewUnknown( const char* text ); + + /** + Delete a node associated with this document. + It will be unlinked from the DOM. + */ + void DeleteNode( XMLNode* node ); + + void ClearError() { + SetError(XML_SUCCESS, 0, 0); + } + + /// Return true if there was an error parsing the document. + bool Error() const { + return _errorID != XML_SUCCESS; + } + /// Return the errorID. + XMLError ErrorID() const { + return _errorID; + } + const char* ErrorName() const; + static const char* ErrorIDToName(XMLError errorID); + + /** Returns a "long form" error description. A hopefully helpful + diagnostic with location, line number, and/or additional info. + */ + const char* ErrorStr() const; + + /// A (trivial) utility function that prints the ErrorStr() to stdout. + void PrintError() const; + + /// Return the line where the error occurred, or zero if unknown. + int ErrorLineNum() const + { + return _errorLineNum; + } + + /// Clear the document, resetting it to the initial state. + void Clear(); + + /** + Copies this document to a target document. + The target will be completely cleared before the copy. + If you want to copy a sub-tree, see XMLNode::DeepClone(). + + NOTE: that the 'target' must be non-null. + */ + void DeepCopy(XMLDocument* target) const; + + // internal + char* Identify( char* p, XMLNode** node ); + + // internal + void MarkInUse(XMLNode*); + + virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const override{ + return 0; + } + virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const override { + return false; + } + +private: + XMLDocument( const XMLDocument& ); // not supported + void operator=( const XMLDocument& ); // not supported + + bool _writeBOM; + bool _processEntities; + XMLError _errorID; + Whitespace _whitespaceMode; + mutable StrPair _errorStr; + int _errorLineNum; + char* _charBuffer; + int _parseCurLineNum; + int _parsingDepth; + // Memory tracking does add some overhead. + // However, the code assumes that you don't + // have a bunch of unlinked nodes around. + // Therefore it takes less memory to track + // in the document vs. a linked list in the XMLNode, + // and the performance is the same. + DynArray _unlinked; + + MemPoolT< sizeof(XMLElement) > _elementPool; + MemPoolT< sizeof(XMLAttribute) > _attributePool; + MemPoolT< sizeof(XMLText) > _textPool; + MemPoolT< sizeof(XMLComment) > _commentPool; + + static const char* _errorNames[XML_ERROR_COUNT]; + + void Parse(); + + void SetError( XMLError error, int lineNum, const char* format, ... ); + + // Something of an obvious security hole, once it was discovered. + // Either an ill-formed XML or an excessively deep one can overflow + // the stack. Track stack depth, and error out if needed. + class DepthTracker { + public: + explicit DepthTracker(XMLDocument * document) { + this->_document = document; + document->PushDepth(); + } + ~DepthTracker() { + _document->PopDepth(); + } + private: + XMLDocument * _document; + }; + void PushDepth(); + void PopDepth(); + + template + NodeType* CreateUnlinkedNode( MemPoolT& pool ); +}; + +template +inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT& pool ) +{ + TIXMLASSERT( sizeof( NodeType ) == PoolElementSize ); + TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() ); + NodeType* returnNode = new (pool.Alloc()) NodeType( this ); + TIXMLASSERT( returnNode ); + returnNode->_memPool = &pool; + + _unlinked.Push(returnNode); + return returnNode; +} + +/** + A XMLHandle is a class that wraps a node pointer with null checks; this is + an incredibly useful thing. Note that XMLHandle is not part of the TinyXML-2 + DOM structure. It is a separate utility class. + + Take an example: + @verbatim + + + + + + + @endverbatim + + Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very + easy to write a *lot* of code that looks like: + + @verbatim + XMLElement* root = document.FirstChildElement( "Document" ); + if ( root ) + { + XMLElement* element = root->FirstChildElement( "Element" ); + if ( element ) + { + XMLElement* child = element->FirstChildElement( "Child" ); + if ( child ) + { + XMLElement* child2 = child->NextSiblingElement( "Child" ); + if ( child2 ) + { + // Finally do something useful. + @endverbatim + + And that doesn't even cover "else" cases. XMLHandle addresses the verbosity + of such code. A XMLHandle checks for null pointers so it is perfectly safe + and correct to use: + + @verbatim + XMLHandle docHandle( &document ); + XMLElement* child2 = docHandle.FirstChildElement( "Document" ).FirstChildElement( "Element" ).FirstChildElement().NextSiblingElement(); + if ( child2 ) + { + // do something useful + @endverbatim + + Which is MUCH more concise and useful. + + It is also safe to copy handles - internally they are nothing more than node pointers. + @verbatim + XMLHandle handleCopy = handle; + @endverbatim + + See also XMLConstHandle, which is the same as XMLHandle, but operates on const objects. +*/ +class TINYXML2_LIB XMLHandle +{ +public: + /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. + explicit XMLHandle( XMLNode* node ) : _node( node ) { + } + /// Create a handle from a node. + explicit XMLHandle( XMLNode& node ) : _node( &node ) { + } + /// Copy constructor + XMLHandle( const XMLHandle& ref ) : _node( ref._node ) { + } + /// Assignment + XMLHandle& operator=( const XMLHandle& ref ) { + _node = ref._node; + return *this; + } + + /// Get the first child of this handle. + XMLHandle FirstChild() { + return XMLHandle( _node ? _node->FirstChild() : 0 ); + } + /// Get the first child element of this handle. + XMLHandle FirstChildElement( const char* name = 0 ) { + return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 ); + } + /// Get the last child of this handle. + XMLHandle LastChild() { + return XMLHandle( _node ? _node->LastChild() : 0 ); + } + /// Get the last child element of this handle. + XMLHandle LastChildElement( const char* name = 0 ) { + return XMLHandle( _node ? _node->LastChildElement( name ) : 0 ); + } + /// Get the previous sibling of this handle. + XMLHandle PreviousSibling() { + return XMLHandle( _node ? _node->PreviousSibling() : 0 ); + } + /// Get the previous sibling element of this handle. + XMLHandle PreviousSiblingElement( const char* name = 0 ) { + return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 ); + } + /// Get the next sibling of this handle. + XMLHandle NextSibling() { + return XMLHandle( _node ? _node->NextSibling() : 0 ); + } + /// Get the next sibling element of this handle. + XMLHandle NextSiblingElement( const char* name = 0 ) { + return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 ); + } + + /// Safe cast to XMLNode. This can return null. + XMLNode* ToNode() { + return _node; + } + /// Safe cast to XMLElement. This can return null. + XMLElement* ToElement() { + return ( _node ? _node->ToElement() : 0 ); + } + /// Safe cast to XMLText. This can return null. + XMLText* ToText() { + return ( _node ? _node->ToText() : 0 ); + } + /// Safe cast to XMLUnknown. This can return null. + XMLUnknown* ToUnknown() { + return ( _node ? _node->ToUnknown() : 0 ); + } + /// Safe cast to XMLDeclaration. This can return null. + XMLDeclaration* ToDeclaration() { + return ( _node ? _node->ToDeclaration() : 0 ); + } + +private: + XMLNode* _node; +}; + + +/** + A variant of the XMLHandle class for working with const XMLNodes and Documents. It is the + same in all regards, except for the 'const' qualifiers. See XMLHandle for API. +*/ +class TINYXML2_LIB XMLConstHandle +{ +public: + explicit XMLConstHandle( const XMLNode* node ) : _node( node ) { + } + explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) { + } + XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) { + } + + XMLConstHandle& operator=( const XMLConstHandle& ref ) { + _node = ref._node; + return *this; + } + + const XMLConstHandle FirstChild() const { + return XMLConstHandle( _node ? _node->FirstChild() : 0 ); + } + const XMLConstHandle FirstChildElement( const char* name = 0 ) const { + return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 ); + } + const XMLConstHandle LastChild() const { + return XMLConstHandle( _node ? _node->LastChild() : 0 ); + } + const XMLConstHandle LastChildElement( const char* name = 0 ) const { + return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 ); + } + const XMLConstHandle PreviousSibling() const { + return XMLConstHandle( _node ? _node->PreviousSibling() : 0 ); + } + const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const { + return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 ); + } + const XMLConstHandle NextSibling() const { + return XMLConstHandle( _node ? _node->NextSibling() : 0 ); + } + const XMLConstHandle NextSiblingElement( const char* name = 0 ) const { + return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 ); + } + + + const XMLNode* ToNode() const { + return _node; + } + const XMLElement* ToElement() const { + return ( _node ? _node->ToElement() : 0 ); + } + const XMLText* ToText() const { + return ( _node ? _node->ToText() : 0 ); + } + const XMLUnknown* ToUnknown() const { + return ( _node ? _node->ToUnknown() : 0 ); + } + const XMLDeclaration* ToDeclaration() const { + return ( _node ? _node->ToDeclaration() : 0 ); + } + +private: + const XMLNode* _node; +}; + + +/** + Printing functionality. The XMLPrinter gives you more + options than the XMLDocument::Print() method. + + It can: + -# Print to memory. + -# Print to a file you provide. + -# Print XML without a XMLDocument. + + Print to Memory + + @verbatim + XMLPrinter printer; + doc.Print( &printer ); + SomeFunction( printer.CStr() ); + @endverbatim + + Print to a File + + You provide the file pointer. + @verbatim + XMLPrinter printer( fp ); + doc.Print( &printer ); + @endverbatim + + Print without a XMLDocument + + When loading, an XML parser is very useful. However, sometimes + when saving, it just gets in the way. The code is often set up + for streaming, and constructing the DOM is just overhead. + + The Printer supports the streaming case. The following code + prints out a trivially simple XML file without ever creating + an XML document. + + @verbatim + XMLPrinter printer( fp ); + printer.OpenElement( "foo" ); + printer.PushAttribute( "foo", "bar" ); + printer.CloseElement(); + @endverbatim +*/ +class TINYXML2_LIB XMLPrinter : public XMLVisitor +{ +public: + /** Construct the printer. If the FILE* is specified, + this will print to the FILE. Else it will print + to memory, and the result is available in CStr(). + If 'compact' is set to true, then output is created + with only required whitespace and newlines. + */ + XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 ); + virtual ~XMLPrinter() {} + + /** If streaming, write the BOM and declaration. */ + void PushHeader( bool writeBOM, bool writeDeclaration ); + /** If streaming, start writing an element. + The element must be closed with CloseElement() + */ + void OpenElement( const char* name, bool compactMode=false ); + /// If streaming, add an attribute to an open element. + void PushAttribute( const char* name, const char* value ); + void PushAttribute( const char* name, int value ); + void PushAttribute( const char* name, unsigned value ); + void PushAttribute(const char* name, int64_t value); + void PushAttribute( const char* name, bool value ); + void PushAttribute( const char* name, double value ); + /// If streaming, close the Element. + virtual void CloseElement( bool compactMode=false ); + + /// Add a text node. + void PushText( const char* text, bool cdata=false ); + /// Add a text node from an integer. + void PushText( int value ); + /// Add a text node from an unsigned. + void PushText( unsigned value ); + /// Add a text node from an unsigned. + void PushText(int64_t value); + /// Add a text node from a bool. + void PushText( bool value ); + /// Add a text node from a float. + void PushText( float value ); + /// Add a text node from a double. + void PushText( double value ); + + /// Add a comment + void PushComment( const char* comment ); + + void PushDeclaration( const char* value ); + void PushUnknown( const char* value ); + + virtual bool VisitEnter( const XMLDocument& /*doc*/ ) override; + virtual bool VisitExit( const XMLDocument& /*doc*/ ) override{ + return true; + } + + virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) override; + virtual bool VisitExit( const XMLElement& element ) override; + + virtual bool Visit( const XMLText& text ) override; + virtual bool Visit( const XMLComment& comment ) override; + virtual bool Visit( const XMLDeclaration& declaration ) override; + virtual bool Visit( const XMLUnknown& unknown ) override; + + /** + If in print to memory mode, return a pointer to + the XML file in memory. + */ + const char* CStr() const { + return _buffer.Mem(); + } + /** + If in print to memory mode, return the size + of the XML file in memory. (Note the size returned + includes the terminating null.) + */ + int CStrSize() const { + return _buffer.Size(); + } + /** + If in print to memory mode, reset the buffer to the + beginning. + */ + void ClearBuffer() { + _buffer.Clear(); + _buffer.Push(0); + _firstElement = true; + } + +protected: + virtual bool CompactMode( const XMLElement& ) { return _compactMode; } + + /** Prints out the space before an element. You may override to change + the space and tabs used. A PrintSpace() override should call Print(). + */ + virtual void PrintSpace( int depth ); + void Print( const char* format, ... ); + void Write( const char* data, size_t size ); + inline void Write( const char* data ) { Write( data, strlen( data ) ); } + void Putc( char ch ); + + void SealElementIfJustOpened(); + bool _elementJustOpened; + DynArray< const char*, 10 > _stack; + +private: + void PrintString( const char*, bool restrictedEntitySet ); // prints out, after detecting entities. + + bool _firstElement; + FILE* _fp; + int _depth; + int _textDepth; + bool _processEntities; + bool _compactMode; + + enum { + ENTITY_RANGE = 64, + BUF_SIZE = 200 + }; + bool _entityFlag[ENTITY_RANGE]; + bool _restrictedEntityFlag[ENTITY_RANGE]; + + DynArray< char, 20 > _buffer; + + // Prohibit cloning, intentionally not implemented + XMLPrinter( const XMLPrinter& ); + XMLPrinter& operator=( const XMLPrinter& ); +}; + + +} // tinyxml2 + +#if defined(_MSC_VER) +# pragma warning(pop) +#endif + +#endif // TINYXML2_INCLUDED diff -Nru geos-3.7.1/tests/xmltester/XMLTester.cpp geos-3.8.0/tests/xmltester/XMLTester.cpp --- geos-3.7.1/tests/xmltester/XMLTester.cpp 2018-11-29 22:42:00.000000000 +0000 +++ geos-3.8.0/tests/xmltester/XMLTester.cpp 2019-10-10 17:19:11.000000000 +0000 @@ -35,11 +35,15 @@ #include #include #include +#include #include #include #include #include #include +#include +#include +#include #include #include //#include @@ -91,97 +95,72 @@ namespace { -std::unique_ptr prepare( const geom::Geometry *g ) { - return std::unique_ptr ( PreparedGeometryFactory::prepare(g) ); +std::unique_ptr +prepare(const geom::Geometry* g) +{ + return PreparedGeometryFactory::prepare(g); } // Asymmetric Rounding Algorithm - equivalent to Java Math.round() // Copy from geos/util/math.cpp -double java_math_round(double val) +double +java_math_round(double val) { - double n; - double f = std::fabs(std::modf(val, &n)); + double n; + double f = std::fabs(std::modf(val, &n)); - if (val >= 0) - { - if (f < 0.5) { - return std::floor(val); - } else if (f > 0.5) { - return std::ceil(val); - } else { - return (n + 1.0); - } - } else { - if (f < 0.5) { - return std::ceil(val); - } else if (f > 0.5) { - return std::floor(val); - } else { - return n; - } - } + if(val >= 0) { + if(f < 0.5) { + return std::floor(val); + } + else if(f > 0.5) { + return std::ceil(val); + } + else { + return (n + 1.0); + } + } + else { + if(f < 0.5) { + return std::ceil(val); + } + else if(f > 0.5) { + return std::floor(val); + } + else { + return n; + } + } } // java_math_round +#ifdef not_used // a utility function defining a very simple method to indent a line of text -const char * getIndent( unsigned int numIndents ) +const char* +getIndent(unsigned int numIndents) { - static const char * pINDENT = " + "; - static const unsigned int LENGTH = static_cast(strlen( pINDENT )); + static const char* pINDENT = " + "; + static const unsigned int LENGTH = static_cast(strlen(pINDENT)); - if ( numIndents > LENGTH ) numIndents = LENGTH; + if(numIndents > LENGTH) { + numIndents = LENGTH; + } - return &pINDENT[ LENGTH-numIndents ]; + return &pINDENT[ LENGTH - numIndents ]; } +#endif +// void dump_to_stdout( const tinyxml2::XMLNode * pParent, unsigned int indent = 0 ) +// { +// if ( !pParent ) return; + +// printf( "%s", getIndent( indent)); + +// tinyxml2::XMLPrinter printer; +// pParent->Accept(&printer); +// } -void dump_to_stdout( const TiXmlNode * pParent, unsigned int indent = 0 ) -{ - if ( !pParent ) return; - - const TiXmlText *pText; - int t = pParent->Type(); - printf( "%s", getIndent( indent)); - - switch ( t ) - { - case TiXmlNode::DOCUMENT: - printf( "Document" ); - break; - - case TiXmlNode::ELEMENT: - printf( "Element \"%s\"", pParent->Value() ); - break; - - case TiXmlNode::COMMENT: - printf( "Comment: \"%s\"", pParent->Value()); - break; - - case TiXmlNode::UNKNOWN: - printf( "Unknown" ); - break; - - case TiXmlNode::TEXT: - pText = pParent->ToText(); - printf( "Text: [%s]", pText->Value() ); - break; - - case TiXmlNode::DECLARATION: - printf( "Declaration" ); - break; - default: - break; - } - printf( "\n" ); - - const TiXmlNode * pChild; - - for ( pChild = pParent->FirstChild(); pChild != nullptr; pChild = pChild->NextSibling()) - { - dump_to_stdout( pChild, indent+2 ); - } -} } @@ -197,12 +176,17 @@ std::string newstring; std::string::size_type last_slash = str.find_last_of('/', str.size()); - if ( last_slash == std::string::npos ) newstring = str; - else newstring = str.substr(last_slash+1); + if(last_slash == std::string::npos) { + newstring = str; + } + else { + newstring = str.substr(last_slash + 1); + } - for (std::string::iterator i=newstring.begin(), e=newstring.end(); i!=e; ++i) - { - if ( *i == '.' ) *i = '_'; + for(std::string::iterator i = newstring.begin(), e = newstring.end(); i != e; ++i) { + if(*i == '.') { + *i = '_'; + } } tolower(newstring); @@ -214,9 +198,13 @@ checkOverlaySuccess(geom::Geometry const& gRes, geom::Geometry const& gRealRes) { double tol = operation::overlay::snap::GeometrySnapper::computeSizeBasedSnapTolerance(gRes); - if ( gRes.equals(&gRealRes) ) return 1; + if(gRes.equals(&gRealRes)) { + return 1; + } std::cerr << "Using an overlay tolerance of " << tol << std::endl; - if ( gRes.equalsExact(&gRealRes, tol) ) return 1; + if(gRes.equalsExact(&gRealRes, tol)) { + return 1; + } return 0; } @@ -225,78 +213,71 @@ checkBufferSuccess(geom::Geometry const& gRes, geom::Geometry const& gRealRes, double dist) { int success = 1; - do - { + do { - if ( gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId() ) - { + if(gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId()) { std::cerr << "Expected result is of type " - << gRes.getGeometryType() - << "; obtained result is of type " - << gRealRes.getGeometryType() - << std::endl; - success=0; + << gRes.getGeometryType() + << "; obtained result is of type " + << gRealRes.getGeometryType() + << std::endl; + success = 0; break; } // Is a buffer always an area ? - if ( gRes.getDimension() != 2 ) - { + if(gRes.getDimension() != 2) { std::cerr << "Don't know how to validate " - << "result of buffer operation " - << "when expected result is not an " - << "areal type." - << std::endl; + << "result of buffer operation " + << "when expected result is not an " + << "areal type." + << std::endl; } geos::xmltester::BufferResultMatcher matcher; - if ( ! matcher.isBufferResultMatch(gRealRes, - gRes, - dist) ) - { -std::cerr << "BufferResultMatcher FAILED" << std::endl; - success=0; + if(! matcher.isBufferResultMatch(gRealRes, + gRes, + dist)) { + std::cerr << "BufferResultMatcher FAILED" << std::endl; + success = 0; break; } } - while (0); + while(0); return success; } static int checkSingleSidedBufferSuccess(geom::Geometry& gRes, - geom::Geometry& gRealRes, double dist) + geom::Geometry& gRealRes, double dist) { int success = 1; - do - { + do { - if ( gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId() ) - { + if(gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId()) { std::cerr << "Expected result is of type " - << gRes.getGeometryType() - << "; obtained result is of type " - << gRealRes.getGeometryType() - << std::endl; - success=0; + << gRes.getGeometryType() + << "; obtained result is of type " + << gRealRes.getGeometryType() + << std::endl; + success = 0; break; } geos::xmltester::SingleSidedBufferResultMatcher matcher; - if ( ! matcher.isBufferResultMatch(gRealRes, - gRes, - dist) ) - { -std::cerr << "SingleSidedBufferResultMatcher FAILED" << std::endl; - success=0; + if(! matcher.isBufferResultMatch(gRealRes, + gRes, + dist)) { + std::cerr << "SingleSidedBufferResultMatcher FAILED" << std::endl; + success = 0; break; } } - while (0); + while(0); return success; } @@ -305,7 +286,6 @@ : gA(nullptr), gB(nullptr), - gT(nullptr), pm(nullptr), factory(nullptr), wktreader(nullptr), @@ -331,19 +311,19 @@ int XMLTester::setVerbosityLevel(int value) { - int old_value=verbose; + int old_value = verbose; - verbose=value; + verbose = value; return old_value; } /*private*/ void -XMLTester::printTest(bool success, const std::string& expected_result, const std::string& actual_result, const util::Profile &prof) +XMLTester::printTest(bool success, const std::string& expected_result, const std::string& actual_result, + const util::Profile& prof) { - if ( sqlOutput ) - { + if(sqlOutput) { std::cout << "INSERT INTO \"" << normalize_filename(*curr_file) << "\" VALUES (" << caseCount << ", " << testCount << ", " @@ -352,118 +332,127 @@ std::string geomOut; - if ( gA ) { + if(gA) { std::cout << "'" << printGeom(gA) << "', "; - } else { + } + else { std::cout << "NULL, "; } - if ( gB ) { + if(gB) { std::cout << "'" << printGeom(gB) << "', "; - } else { + } + else { std::cout << "NULL, "; } std::cout << "'" << expected_result << "', " << "'" << actual_result << "', "; - if ( success ) std::cout << "'t'"; - else std::cout << "'f'"; + if(success) { + std::cout << "'t'"; + } + else { + std::cout << "'f'"; + } std::cout << ");" << std::endl; } - else - { - std::cout << *curr_file <<":"; + else { + std::cout << *curr_file << ":"; std::cout << " case" << caseCount << ":"; std::cout << " test" << testCount << ": " - << opSignature; - std::cout << ": " << (success?"ok.":"failed."); - std::cout << " (" << std::setprecision(15) << java_math_round(prof.getTot()/1000) << " ms)" << std::endl; + << opSignature; + std::cout << ": " << (success ? "ok." : "failed."); + std::cout << " (" << std::setprecision(15) << java_math_round(prof.getTot() / 1000) << " ms)" << std::endl; - std::cout << "\tDescription: " << curr_case_desc << std::endl; + // print geometry on failure for -v + // print geometry no matter what for -v -v and above + if (verbose > 1 || (verbose == 1 && !success)) { + std::cout << "\tDescription: " << curr_case_desc << std::endl; + if(gA) { + std::cout << "\tGeometry A: "; + printGeom(std::cout, gA); + std::cout << std::endl; + } - if ( gA ) { - std::cout << "\tGeometry A: "; - printGeom(std::cout, gA); - std::cout << std::endl; - } + if(gB) { + std::cout << "\tGeometry B: "; + printGeom(std::cout, gB); + std::cout << std::endl; + } - if ( gB ) { - std::cout << "\tGeometry B: "; - printGeom(std::cout, gB); + std::cout << "\tExpected result: " << expected_result << std::endl; + std::cout << "\tObtained result: " << actual_result << std::endl; std::cout << std::endl; } - - std::cout << "\tExpected result: "<FirstChildElement("precisionModel"); - if ( el ) parsePrecisionModel(el); - else pm.reset(new PrecisionModel()); + const tinyxml2::XMLElement* el = node->FirstChildElement("precisionModel"); + if(el) { + parsePrecisionModel(el); + } + else { + pm.reset(new PrecisionModel()); + } // Look for geometryOperation, if any usePrepared = false; el = node->FirstChildElement("geometryOperation"); - if ( el ) { - const TiXmlNode* txt = el->FirstChild(); - if ( txt ) { + if(el) { + const tinyxml2::XMLNode* txt = el->FirstChild(); + if(txt) { std::string op = trimBlanks(txt->Value()); - if ( op.find("PreparedGeometryOperation") ) { + if(op.find("PreparedGeometryOperation")) { usePrepared = true; - } else { + } + else { std::cerr << *curr_file - <<": WARNING: unknown geometryOperation: " + << ": WARNING: unknown geometryOperation: " << op << std::endl; } } } - if (verbose > 1) - { - std::cerr << *curr_file <<": run: Precision Model: " << pm->toString(); - if ( usePrepared ) std::cerr << " (prepared)"; + if(verbose > 1) { + std::cerr << *curr_file << ": run: Precision Model: " << pm->toString(); + if(usePrepared) { + std::cerr << " (prepared)"; + } std::cerr << std::endl; } @@ -507,22 +502,22 @@ wkbreader.reset(new io::WKBReader(*factory)); wkbwriter.reset(new io::WKBWriter()); - const TiXmlNode* casenode; - for ( casenode = node->FirstChild("case"); - casenode; - casenode = casenode->NextSibling("case") ) - { + const tinyxml2::XMLNode* casenode; + for(casenode = node->FirstChildElement("case"); + casenode; + casenode = casenode->NextSiblingElement("case")) { try { parseCase(casenode); - } catch (const std::exception& exc) { - std::cerr<Attribute("type"); - if ( typeStr ) type = typeStr; + if(typeStr) { + type = typeStr; + } const char* scaleStr = el->Attribute("scale"); - if ( ! scaleStr ) { - if ( type == "FLOATING_SINGLE" ) - { + if(! scaleStr) { + if(type == "FLOATING_SINGLE") { pm.reset(new PrecisionModel(PrecisionModel::FLOATING_SINGLE)); } - else - { + else { pm.reset(new PrecisionModel()); } - } else { + } + else { char* stopstring; @@ -552,10 +548,10 @@ double offsetX = 0; double offsetY = 2; - if ( ! el->QueryDoubleAttribute("offsetx", &offsetX) ) + if(! el->QueryDoubleAttribute("offsetx", &offsetX)) {} // std::cerr << "No offsetx" << std::endl; - if ( ! el->QueryDoubleAttribute("offsety", &offsetY) ) + if(! el->QueryDoubleAttribute("offsety", &offsetY)) {} // std::cerr << "No offsety" << std::endl; // NOTE: PrecisionModel discards offsets anyway... @@ -568,15 +564,14 @@ { operation::valid::IsValidOp ivo(g); bool valid = ivo.isValid(); - if ( ! valid ) - { - operation::valid::TopologyValidationError *err = ivo.getValidationError(); + if(! valid) { + operation::valid::TopologyValidationError* err = ivo.getValidationError(); std::cerr << *curr_file << ":" - << " case" << caseCount << ":" - << " test" << testCount << ": " - << opSignature << ": " - << " invalid geometry (" << label - << "): " << err->toString() << std::endl; + << " case" << caseCount << ":" + << " test" << testCount << ": " + << opSignature << ": " + << " invalid geometry (" << label + << "): " << err->toString() << std::endl; } return valid; } @@ -584,66 +579,72 @@ /** * Parse WKT or HEXWKB */ -geom::Geometry * -XMLTester::parseGeometry(const std::string &in, const char* label) +geom::Geometry* +XMLTester::parseGeometry(const std::string& in, const char* label) { - if ( ( ! wkbreader.get() ) || ( ! wktreader.get() ) ) + if((! wkbreader.get()) || (! wktreader.get())) { throw(runtime_error("No precision model specified")); + } std::stringstream is(in, std::ios_base::in); char first_char; // Remove leading spaces - while (is.get(first_char) && std::isspace(first_char)); + while(is.get(first_char) && std::isspace(first_char)); is.unget(); - geom::Geometry* ret; + std::unique_ptr ret; - switch (first_char) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - ret = wkbreader->readHEX(is); - break; - default: - ret = wktreader->read(in); - break; + switch(first_char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + ret = wkbreader->readHEX(is); + break; + default: + ret = wktreader->read(in); + break; } - if ( testValidInput ) testValid(ret, std::string(label)); + if(testValidInput) { + testValid(ret.get(), std::string(label)); + } //ret->normalize(); - return ret; + return ret.release(); } std::string -XMLTester::trimBlanks(const std::string &in) +XMLTester::trimBlanks(const std::string& in) { std::string out; std::string::size_type pos = in.find_first_not_of(" \t\n\r"); - if (pos!=std::string::npos) out=in.substr(pos); + if(pos != std::string::npos) { + out = in.substr(pos); + } pos = out.find_last_not_of(" \t\n\r"); - if (pos!=std::string::npos) out=out.substr(0, pos+1); + if(pos != std::string::npos) { + out = out.substr(0, pos + 1); + } return out; } void -XMLTester::parseCase(const TiXmlNode* node) +XMLTester::parseCase(const tinyxml2::XMLNode* node) { assert(node); @@ -651,39 +652,40 @@ std::string geomBin; std::string thrownException; - gA=nullptr; - gB=nullptr; + gA = nullptr; + gB = nullptr; //dump_to_stdout(node); curr_case_desc.clear(); - const TiXmlNode* txt = node->FirstChild("desc"); - if ( txt ) { + const tinyxml2::XMLNode* txt = node->FirstChildElement("desc"); + if(txt) { txt = txt->FirstChild(); - if ( txt ) curr_case_desc = trimBlanks(txt->Value()); + if(txt) { + curr_case_desc = trimBlanks(txt->Value()); + } } //std::cerr << "Desc: " << curr_case_desc << std::endl; try { - const TiXmlNode *el = node->FirstChild("a"); + const tinyxml2::XMLNode* el = node->FirstChildElement("a"); geomAin = el->FirstChild()->Value(); geomAin = trimBlanks(geomAin); gA = parseGeometry(geomAin, "Geometry A"); - if ( nullptr != (el = node->FirstChild("b")) ) - { + if(nullptr != (el = node->FirstChildElement("b"))) { geomBin = el->FirstChild()->Value(); geomBin = trimBlanks(geomBin); gB = parseGeometry(geomBin, "Geometry B"); } } - catch (const std::exception &e) { + catch(const std::exception& e) { thrownException = e.what(); } - catch (...) { + catch(...) { thrownException = "Unknown exception"; } @@ -691,26 +693,24 @@ //std::cerr << "B: " << geomBin << std::endl; - if ( thrownException != "" ) - { - std::cout << *curr_file <<":"; + if(thrownException != "") { + std::cout << *curr_file << ":"; std::cout << " case" << caseCount << ":"; - std::cout << " skipped ("<FirstChild("test"); - testnode; - testnode = testnode->NextSibling("test") ) - { + const tinyxml2::XMLNode* testnode; + for(testnode = node->FirstChildElement("test"); + testnode; + testnode = testnode->NextSiblingElement("test")) { parseTest(testnode); } - totalTestCount+=testCount; + totalTestCount += testCount; delete gA; delete gB; @@ -718,36 +718,34 @@ /*private*/ void -XMLTester::printGeom(std::ostream& os, const geom::Geometry *g) +XMLTester::printGeom(std::ostream& os, const geom::Geometry* g) { os << printGeom(g); } std::string -XMLTester::printGeom(const geom::Geometry *g) +XMLTester::printGeom(const geom::Geometry* g) { - if ( HEXWKB_output ) - { - std::stringstream s(std::ios_base::binary|std::ios_base::in|std::ios_base::out); + if(HEXWKB_output) { + std::stringstream s(std::ios_base::binary | std::ios_base::in | std::ios_base::out); wkbwriter->write(*g, s); std::stringstream s2; wkbreader->printHEX(s, s2); return s2.str(); } - else - { + else { return wktwriter->write(g); } } void -XMLTester::parseTest(const TiXmlNode* node) +XMLTester::parseTest(const tinyxml2::XMLNode* node) { using namespace operation::overlay; typedef std::unique_ptr< geom::Geometry > GeomPtr; - int success=0; // no success by default + int success = 0; // no success by default std::string opName; std::string opArg1; std::string opArg2; @@ -757,108 +755,136 @@ ++testCount; - const TiXmlNode* opnode = node->FirstChild("op"); - if ( ! opnode ) throw(runtime_error("case has no op")); + const tinyxml2::XMLNode* opnode = node->FirstChildElement("op"); + if(! opnode) { + throw(runtime_error("case has no op")); + } //dump_to_stdout(opnode); - const TiXmlElement* opel = opnode->ToElement(); + const tinyxml2::XMLElement* opel = opnode->ToElement(); const char* tmp = opel->Attribute("name"); - if ( tmp ) opName = tmp; + if(tmp) { + opName = tmp; + } tmp = opel->Attribute("arg1"); - if ( tmp ) opArg1 = tmp; + if(tmp) { + opArg1 = tmp; + } tmp = opel->Attribute("arg2"); - if ( tmp ) opArg2 = tmp; + if(tmp) { + opArg2 = tmp; + } tmp = opel->Attribute("arg3"); - if ( tmp ) opArg3 = tmp; + if(tmp) { + opArg3 = tmp; + } tmp = opel->Attribute("arg4"); - if ( tmp ) opArg4 = tmp; + if(tmp) { + opArg4 = tmp; + } - const TiXmlNode* resnode = opnode->FirstChild(); - if ( ! resnode ) - { - std::stringstream tmp; - tmp << "op of test " << testCount - << " of case " << caseCount - << " has no expected result child"; - throw(runtime_error(tmp.str())); + const tinyxml2::XMLNode* resnode = opnode->FirstChild(); + if(! resnode) { + std::stringstream p_tmp; + p_tmp << "op of test " << testCount + << " of case " << caseCount + << " has no expected result child"; + throw(runtime_error(p_tmp.str())); } opRes = resnode->Value(); // trim blanks - opRes=trimBlanks(opRes); - opName=trimBlanks(opName); + opRes = trimBlanks(opRes); + opName = trimBlanks(opName); tolower(opName); - std::string opSig=""; + std::string opSig = ""; - if ( opArg1 != "" ) opSig=opArg1; - if ( opArg2 != "" ) { - if ( opSig != "" ) opSig += ", "; + if(opArg1 != "") { + opSig = opArg1; + } + if(opArg2 != "") { + if(opSig != "") { + opSig += ", "; + } opSig += opArg2; } - if ( opArg3 != "" ) { - if ( opSig != "" ) opSig += ", "; + if(opArg3 != "") { + if(opSig != "") { + opSig += ", "; + } opSig += opArg3; } - if ( opArg4 != "" ) { - if ( opSig != "" ) opSig += ", "; + if(opArg4 != "") { + if(opSig != "") { + opSig += ", "; + } opSig += opArg4; } opSignature = opName + "(" + opSig + ")"; - std::string actual_result="NONE"; + std::string actual_result = "NONE"; // expected_result will be modified by specific tests // if needed (geometry normalization, for example) - std::string expected_result=opRes; + std::string expected_result = opRes; util::Profile profile("op"); - try - { - if (opName=="relate") - { + try { + if(opName == "relate") { std::unique_ptr im(gA->relate(gB)); assert(im.get()); - if (im->matches(opArg3)) actual_result="true"; - else actual_result="false"; + if(im->matches(opArg3)) { + actual_result = "true"; + } + else { + actual_result = "false"; + } - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="relatestring") - { + else if(opName == "relatestring") { std::unique_ptr im(gA->relate(gB)); assert(im.get()); - actual_result=im->toString(); + actual_result = im->toString(); - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="isvalid") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) { - gT=gB; + else if(opName == "isvalid") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; } - if (gT->isValid()) actual_result="true"; - else actual_result="false"; + if(p_gT->isValid()) { + actual_result = "true"; + } + else { + actual_result = "false"; + } - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="intersection") - { + else if(opName == "intersection") { GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -875,41 +901,71 @@ gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="union") - { + else if(opName == "densify") { + geom::Geometry* p_gT = gA; + GeomPtr gRes(parseGeometry(opRes, "expected")); + // gRes->normalize(); + + geom::util::Densifier den(p_gT); + double distanceTolerance = std::atof(opArg2.c_str()); + den.setDistanceTolerance(distanceTolerance); + GeomPtr gRealRes = den.getResultGeometry(); + + // gRealRes->normalize(); + + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } + + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); + + } + + + else if(opName == "union") { + GeomPtr gRes(parseGeometry(opRes, "expected")); + + profile.start(); GeomPtr gRealRes; - if ( gB ) { + if(gB) { #ifndef USE_BINARYOP - gRealRes.reset(gA->Union(gB)); + gRealRes = gA->Union(gB); #else gRealRes = BinaryOp(gA, gB, overlayOp(OverlayOp::opUNION)); #endif - } else { + } + else { gRealRes = gA->Union(); } + profile.stop(); + success = checkOverlaySuccess(*gRes, *gRealRes); - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="difference") - { + else if(opName == "difference") { GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -922,17 +978,19 @@ gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="symdifference") - { + else if(opName == "symdifference") { GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -944,171 +1002,343 @@ gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="intersects") - { - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + else if(opName == "intersects") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; - actual_result="false"; - if ( usePrepared ) - { - if ( prepare(g1)->intersects(g2) ) actual_result="true"; + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->intersects(g2)) { + actual_result = "true"; + } + } + else if(g1->intersects(g2)) { + actual_result = "true"; } - else if (g1->intersects(g2)) actual_result="true"; - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="contains") - { - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + else if(opName == "contains") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; - actual_result="false"; - if ( usePrepared ) - { - if ( prepare(g1)->contains(g2) ) actual_result="true"; + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->contains(g2)) { + actual_result = "true"; + } + } + else if(g1->contains(g2)) { + actual_result = "true"; } - else if (g1->contains(g2)) actual_result="true"; - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="within") - { - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + else if(opName == "overlaps") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; - actual_result="false"; - if ( usePrepared ) - { - if ( prepare(g1)->within(g2) ) actual_result="true"; + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->overlaps(g2)) { + actual_result = "true"; + } + } + else if(g1->overlaps(g2)) { + actual_result = "true"; } - else if (g1->within(g2)) actual_result="true"; - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="covers") - { - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + else if(opName == "within") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; - actual_result="false"; - if ( usePrepared ) - { - if ( prepare(g1)->covers(g2) ) actual_result="true"; + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->within(g2)) { + actual_result = "true"; + } + } + else if(g1->within(g2)) { + actual_result = "true"; } - else if (g1->covers(g2)) actual_result="true"; - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="coveredby") - { - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + else if(opName == "touches") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; - actual_result="false"; - if ( usePrepared ) - { - if ( prepare(g1)->coveredBy(g2) ) actual_result="true"; + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->touches(g2)) { + actual_result = "true"; + } + } + else if(g1->touches(g2)) { + actual_result = "true"; } - else if (g1->coveredBy(g2)) actual_result="true"; - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="getboundary") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + else if(opName == "crosses") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->crosses(g2)) { + actual_result = "true"; + } + } + else if(g1->crosses(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + else if(opName == "disjoint") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->disjoint(g2)) { + actual_result = "true"; + } + } + else if(g1->disjoint(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + else if(opName == "covers") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->covers(g2)) { + actual_result = "true"; + } + } + else if(g1->covers(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + // equalsTopo() is synomym for equals() in JTS + else if(opName == "equalstopo") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(g1->equals(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + else if(opName == "equalsexact") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(g1->equalsExact(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + // rather than implementing equalsnorm in the library, + // we just do it in this one test case for now + else if(opName == "equalsnorm") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + g1->normalize(); + g2->normalize(); + + actual_result = "false"; + if(g1->equalsExact(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + + else if(opName == "coveredby") { + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; + + actual_result = "false"; + if(usePrepared) { + if(prepare(g1)->coveredBy(g2)) { + actual_result = "true"; + } + } + else if(g1->coveredBy(g2)) { + actual_result = "true"; + } + + if(actual_result == opRes) { + success = 1; + } + } + + else if(opName == "getboundary") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - GeomPtr gRealRes(gT->getBoundary()); + GeomPtr gRealRes(p_gT->getBoundary()); gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="getcentroid") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + else if(opName == "getcentroid") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - GeomPtr gRealRes(gT->getCentroid()); + GeomPtr gRealRes(p_gT->getCentroid()); - if ( gRealRes.get() ) gRealRes->normalize(); - else gRealRes.reset(factory->createPoint()); + if(gRealRes.get()) { + gRealRes->normalize(); + } + else { + gRealRes = factory->createPoint(); + } gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="issimple") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + else if(opName == "issimple") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } - if (gT->isSimple()) actual_result="true"; - else actual_result="false"; + if(p_gT->isSimple()) { + actual_result = "true"; + } + else { + actual_result = "false"; + } - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="convexhull") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + else if(opName == "convexhull") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - GeomPtr gRealRes(gT->convexHull()); + GeomPtr gRealRes(p_gT->convexHull()); gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="buffer") - { + else if(opName == "buffer") { using namespace operation::buffer; - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -1119,12 +1349,12 @@ double dist = std::atof(opArg2.c_str()); BufferParameters params; - if ( opArg3 != "" ) { - params.setQuadrantSegments(std::atoi(opArg3.c_str())); + if(opArg3 != "") { + params.setQuadrantSegments(std::atoi(opArg3.c_str())); } - BufferOp op(gT, params); + BufferOp op(p_gT, params); gRealRes.reset(op.getResultGeometry(dist)); profile.stop(); @@ -1133,19 +1363,21 @@ // Validate the buffer operation success = checkBufferSuccess(*gRes, *gRealRes, dist); - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="buffersinglesided") - { + else if(opName == "buffersinglesided") { using namespace operation::buffer; - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -1156,41 +1388,42 @@ double dist = std::atof(opArg2.c_str()); BufferParameters params ; - params.setJoinStyle( BufferParameters::JOIN_ROUND ) ; - if ( opArg3 != "" ) { - params.setQuadrantSegments( std::atoi(opArg3.c_str())); + params.setJoinStyle(BufferParameters::JOIN_ROUND) ; + if(opArg3 != "") { + params.setQuadrantSegments(std::atoi(opArg3.c_str())); } bool leftSide = true ; - if ( opArg4 == "right" ) - { + if(opArg4 == "right") { leftSide = false ; } - BufferBuilder bufBuilder( params ) ; - gRealRes.reset( bufBuilder.bufferLineSingleSided( - gT, dist, leftSide ) ) ; + BufferBuilder bufBuilder(params) ; + gRealRes.reset(bufBuilder.bufferLineSingleSided( + p_gT, dist, leftSide)) ; profile.stop(); gRealRes->normalize(); // Validate the single sided buffer operation success = checkSingleSidedBufferSuccess(*gRes, - *gRealRes, dist); + *gRealRes, dist); - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="buffermitredjoin") - { + else if(opName == "buffermitredjoin") { using namespace operation::buffer; - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); @@ -1203,11 +1436,11 @@ BufferParameters params; params.setJoinStyle(BufferParameters::JOIN_MITRE); - if ( opArg3 != "" ) { - params.setQuadrantSegments(std::atoi(opArg3.c_str())); + if(opArg3 != "") { + params.setQuadrantSegments(std::atoi(opArg3.c_str())); } - BufferOp op(gT, params); + BufferOp op(p_gT, params); gRealRes.reset(op.getResultGeometry(dist)); profile.stop(); @@ -1216,50 +1449,60 @@ // Validate the buffer operation success = checkBufferSuccess(*gRes, *gRealRes, dist); - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="getinteriorpoint") - { - geom::Geometry *gT=gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + else if(opName == "getinteriorpoint") { + geom::Geometry* p_gT = gA; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } GeomPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - GeomPtr gRealRes(gT->getInteriorPoint()); - if ( gRealRes.get() ) gRealRes->normalize(); - else gRealRes.reset(factory->createPoint()); + GeomPtr gRealRes(p_gT->getInteriorPoint()); + if(gRealRes.get()) { + gRealRes->normalize(); + } + else { + gRealRes = factory->createPoint(); + } - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="iswithindistance") - { - double dist=std::atof(opArg3.c_str()); - if (gA->isWithinDistance(gB, dist)) { - actual_result="true"; - } else { - actual_result="false"; + else if(opName == "iswithindistance") { + double dist = std::atof(opArg3.c_str()); + if(gA->isWithinDistance(gB, dist)) { + actual_result = "true"; + } + else { + actual_result = "false"; } - if (actual_result==opRes) success=1; + if(actual_result == opRes) { + success = 1; + } } - else if (opName=="polygonize") - { + else if(opName == "polygonize") { GeomPtr gRes(wktreader->read(opRes)); gRes->normalize(); @@ -1268,140 +1511,136 @@ plgnzr.add(gA); - std::vector*polys = plgnzr.getPolygons(); - std::vector*newgeoms = new std::vector; - for (unsigned int i=0; isize(); i++) - newgeoms->push_back((*polys)[i]); - delete polys; + auto polys = plgnzr.getPolygons(); + std::vector* newgeoms = new std::vector; + for(unsigned int i = 0; i < polys->size(); i++) { + newgeoms->push_back((*polys)[i].release()); + } GeomPtr gRealRes(factory->createGeometryCollection(newgeoms)); gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="linemerge") - { + else if(opName == "linemerge") { GeomPtr gRes(wktreader->read(opRes)); gRes->normalize(); - geom::Geometry *gT=gA; + geom::Geometry* p_gT = gA; - if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + if((opArg1 == "B" || opArg1 == "b") && gB) { + p_gT = gB; + } LineMerger merger; - merger.add(gT); - std::unique_ptr< std::vector > lines ( merger.getMergedLineStrings() ); - std::vector*newgeoms = new std::vector(lines->begin(), + merger.add(p_gT); + std::unique_ptr< std::vector > lines(merger.getMergedLineStrings()); + std::vector* newgeoms = new std::vector(lines->begin(), lines->end()); GeomPtr gRealRes(factory->createGeometryCollection(newgeoms)); gRealRes->normalize(); - if (gRes->compareTo(gRealRes.get())==0) success=1; + if(gRes->compareTo(gRealRes.get()) == 0) { + success = 1; + } - actual_result=printGeom(gRealRes.get()); - expected_result=printGeom(gRes.get()); + actual_result = printGeom(gRealRes.get()); + expected_result = printGeom(gRes.get()); - if ( testValidOutput ) + if(testValidOutput) { success &= int(testValid(gRealRes.get(), "result")); + } } - else if (opName=="areatest") - { + else if(opName == "areatest") { char* rest; double toleratedDiff = std::strtod(opRes.c_str(), &rest); int validOut = 1; - if ( rest == opRes.c_str() ) - { + if(rest == opRes.c_str()) { throw std::runtime_error("malformed testcase: missing tolerated area difference in 'areatest' op"); } - if ( verbose > 1 ) - { - std::cerr << "Running intersection for areatest" << std::endl; + if(verbose > 1) { + std::cerr << "Running intersection for areatest" << std::endl; } #ifndef USE_BINARYOP GeomPtr gI(gA->intersection(gB)); #else GeomPtr gI = BinaryOp(gA, gB, - overlayOp(OverlayOp::opINTERSECTION)); + overlayOp(OverlayOp::opINTERSECTION)); #endif - if ( testValidOutput ) - { + if(testValidOutput) { validOut &= int(testValid(gI.get(), "areatest intersection")); } - if ( verbose > 1 ) - { - std::cerr << "Running difference(A,B) for areatest" << std::endl; + if(verbose > 1) { + std::cerr << "Running difference(A,B) for areatest" << std::endl; } #ifndef USE_BINARYOP GeomPtr gDab(gA->difference(gB)); #else GeomPtr gDab = BinaryOp(gA, gB, - overlayOp(OverlayOp::opDIFFERENCE)); + overlayOp(OverlayOp::opDIFFERENCE)); #endif - if ( testValidOutput ) - { + if(testValidOutput) { validOut &= int(testValid(gI.get(), "areatest difference(a,b)")); } - if ( verbose > 1 ) - { - std::cerr << "Running difference(B,A) for areatest" << std::endl; + if(verbose > 1) { + std::cerr << "Running difference(B,A) for areatest" << std::endl; } #ifndef USE_BINARYOP GeomPtr gDba(gB->difference(gA)); #else GeomPtr gDba = BinaryOp(gB, gA, - overlayOp(OverlayOp::opDIFFERENCE)); + overlayOp(OverlayOp::opDIFFERENCE)); #endif - if ( testValidOutput ) - { + if(testValidOutput) { validOut &= int(testValid(gI.get(), "areatest difference(b,a)")); } - if ( verbose > 1 ) - { - std::cerr << "Running symdifference for areatest" << std::endl; + if(verbose > 1) { + std::cerr << "Running symdifference for areatest" << std::endl; } #ifndef USE_BINARYOP GeomPtr gSD(gA->symDifference(gB)); #else GeomPtr gSD = BinaryOp(gA, gB, - overlayOp(OverlayOp::opSYMDIFFERENCE)); + overlayOp(OverlayOp::opSYMDIFFERENCE)); #endif - if ( testValidOutput ) - { + if(testValidOutput) { validOut &= int(testValid(gI.get(), "areatest symdifference")); } - if ( verbose > 1 ) - { - std::cerr << "Running union for areatest" << std::endl; + if(verbose > 1) { + std::cerr << "Running union for areatest" << std::endl; } #ifndef USE_BINARYOP GeomPtr gU(gA->Union(gB)); #else GeomPtr gU = BinaryOp(gA, gB, - overlayOp(OverlayOp::opUNION)); + overlayOp(OverlayOp::opUNION)); #endif double areaA = gA->getArea(); @@ -1421,65 +1660,154 @@ // ^ : intersection // A == ( A ^ B ) + ( A - B ) - double diff = std::fabs ( areaA - areaI - areaDab ); - if ( diff > maxdiff ) { + double diff = std::fabs(areaA - areaI - areaDab); + if(diff > maxdiff) { maxdiffop = "A == ( A ^ B ) + ( A - B )"; maxdiff = diff; } // B == ( A ^ B ) + ( B - A ) - diff = std::fabs ( areaB - areaI - areaDba ); - if ( diff > maxdiff ) { + diff = std::fabs(areaB - areaI - areaDba); + if(diff > maxdiff) { maxdiffop = "B == ( A ^ B ) + ( B - A )"; maxdiff = diff; } // ( A @ B ) == ( A - B ) + ( B - A ) - diff = std::fabs ( areaDab + areaDba - areaSD ); - if ( diff > maxdiff ) { + diff = std::fabs(areaDab + areaDba - areaSD); + if(diff > maxdiff) { maxdiffop = "( A @ B ) == ( A - B ) + ( B - A )"; maxdiff = diff; } // ( A u B ) == ( A ^ B ) + ( A @ B ) - diff = std::fabs ( areaI + areaSD - areaU ); - if ( diff > maxdiff ) { + diff = std::fabs(areaI + areaSD - areaU); + if(diff > maxdiff) { maxdiffop = "( A u B ) == ( A ^ B ) + ( A @ B )"; maxdiff = diff; } - if ( maxdiff <= toleratedDiff ) - { + if(maxdiff <= toleratedDiff) { success = 1 && validOut; } - std::stringstream tmp; - tmp << maxdiffop << ": " << maxdiff; - actual_result=tmp.str(); - expected_result=opRes; + std::stringstream p_tmp; + p_tmp << maxdiffop << ": " << maxdiff; + actual_result = p_tmp.str(); + expected_result = opRes; } - else if (opName=="distance") - { + else if(opName == "distance") { char* rest; double distE = std::strtod(opRes.c_str(), &rest); - if ( rest == opRes.c_str() ) - { + if(rest == opRes.c_str()) { throw std::runtime_error("malformed testcase: missing expected result in 'distance' op"); } - geom::Geometry *g1 = opArg1 == "B" ? gB : gA; - geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + geom::Geometry* g2 = opArg2 == "B" ? gB : gA; double distO = g1->distance(g2); - std::stringstream ss; ss << distO; + std::stringstream ss; + ss << distO; + actual_result = ss.str(); + + // TODO: Use a tolerance ? + success = (distO == distE) ? 1 : 0; + } + else if(opName == "minclearance") { + char* rest; + double minclearanceE = std::strtod(opRes.c_str(), &rest); + if(rest == opRes.c_str()) { + throw std::runtime_error("malformed testcase: missing expected result in 'minclearance' op"); + } + + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + precision::MinimumClearance mc(g1); + + double minclearanceO = mc.getDistance(); + std::stringstream ss; + ss << minclearanceO; actual_result = ss.str(); + // Hack for Inf/1.7976931348623157E308 comparison + if(minclearanceO > 1.7976931348623157E308) { + minclearanceO = 1.7976931348623157E308; + } + // TODO: Use a tolerance ? - success = ( distO == distE ) ? 1 : 0; + success = (minclearanceO == minclearanceE) ? 1 : 0; } + else if(opName == "minclearanceline") { + + double tol = 0.0000001; + GeomPtr lineE(parseGeometry(opRes, "expected")); + if(!lineE) { + throw std::runtime_error("malformed testcase: missing expected result in 'minclearanceline' op"); + } - else + geom::Geometry* g1 = opArg1 == "B" ? gB : gA; + precision::MinimumClearance mc(g1); + std::unique_ptr lineO = mc.getLine(); + lineO.get()->normalize(); + lineE.get()->normalize(); + + actual_result = printGeom(lineO.get()); + success = lineE.get()->equalsExact(lineO.get(), tol) ? 1 : 0; + } + + else if (opName == "buildarea") { + GeomPtr gExpected(parseGeometry(opRes, "expected")); + gExpected->normalize(); + + auto gGot = BuildArea().build(gA); + if( gGot ) + { + GeomPtr gRealRes(gGot.release()); + gRealRes->normalize(); + + if (gExpected->equals(gRealRes.get())) success=1; + + actual_result=printGeom(gRealRes.get()); + expected_result=printGeom(gExpected.get()); + if( actual_result == expected_result ) success=1; + + if ( testValidOutput ) + success &= int(testValid(gRealRes.get(), "result")); + } + else + { + success = false; + } + } + + else if (opName == "makevalid") + { + GeomPtr gExpected(parseGeometry(opRes, "expected")); + gExpected->normalize(); + + auto gGot = geos::operation::valid::MakeValid().build(gA); + if( gGot ) + { + GeomPtr gRealRes(gGot.release()); + gRealRes->normalize(); + + if (gExpected->equals(gRealRes.get())) success=1; + + actual_result=printGeom(gRealRes.get()); + expected_result=printGeom(gExpected.get()); + if( actual_result == expected_result ) success=1; + + if ( testValidOutput ) + success &= int(testValid(gRealRes.get(), "result")); + } + else + { + success = false; + } + } + + else { std::cerr << *curr_file << ":"; std::cerr << " case" << caseCount << ":"; std::cerr << " test" << testCount << ": " @@ -1489,54 +1817,70 @@ } } - catch (const std::exception &e) - { - std::cerr<<"EXCEPTION on case "< 1) - { + if((!success && verbose) || verbose > 0) { printTest(!!success, expected_result, actual_result, profile); } - if (test_predicates && gB && gA) { + if(test_predicates && gB && gA) { runPredicates(gA, gB); } } void -XMLTester::runPredicates(const geom::Geometry *gA, const geom::Geometry *gB) +XMLTester::runPredicates(const geom::Geometry* p_gA, const geom::Geometry* p_gB) { - std::cout << "\t Equals:\tAB=" << (gA->equals(gB)?"T":"F") << ", BA=" << (gB->equals(gA)?"T":"F") << std::endl; - std::cout << "\t Disjoint:\tAB=" << (gA->disjoint(gB)?"T":"F") << ", BA=" << (gB->disjoint(gA)?"T":"F") << std::endl; - std::cout << "\tIntersects:\tAB=" << (gA->intersects(gB)?"T":"F") << ", BA=" << (gB->intersects(gA)?"T":"F") << std::endl; - std::cout << "\t Touches:\tAB=" << (gA->touches(gB)?"T":"F") << ", BA=" << (gB->touches(gA)?"T":"F") << std::endl; - std::cout << "\t Crosses:\tAB=" << (gA->crosses(gB)?"T":"F") << ", BA=" << (gB->crosses(gA)?"T":"F") << std::endl; - std::cout << "\t Within:\tAB=" << (gA->within(gB)?"T":"F") << ", BA=" << (gB->within(gA)?"T":"F") << std::endl; - std::cout << "\t Contains:\tAB=" << (gA->contains(gB)?"T":"F") << ", BA=" << (gB->contains(gA)?"T":"F") << std::endl; - std::cout << "\t Overlaps:\tAB=" << (gA->overlaps(gB)?"T":"F") << ", BA=" << (gB->overlaps(gA)?"T":"F") << std::endl; - - std::cout << "\t Prepared Disjoint:\tAB=" << (prepare(gA)->disjoint(gB)?"T":"F") << ", BA=" << (prepare(gB)->disjoint(gA)?"T":"F") << std::endl; - std::cout << "\tPrepared Intersects:\tAB=" << (prepare(gA)->intersects(gB)?"T":"F") << ", BA=" << (prepare(gB)->intersects(gA)?"T":"F") << std::endl; - std::cout << "\t Prepared Touches:\tAB=" << (prepare(gA)->touches(gB)?"T":"F") << ", BA=" << (prepare(gB)->touches(gA)?"T":"F") << std::endl; - std::cout << "\t Prepared Crosses:\tAB=" << (prepare(gA)->crosses(gB)?"T":"F") << ", BA=" << (prepare(gB)->crosses(gA)?"T":"F") << std::endl; - std::cout << "\t Prepared Within:\tAB=" << (prepare(gA)->within(gB)?"T":"F") << ", BA=" << (prepare(gB)->within(gA)?"T":"F") << std::endl; - std::cout << "\t Prepared Contains:\tAB=" << (prepare(gA)->contains(gB)?"T":"F") << ", BA=" << (prepare(gB)->contains(gA)?"T":"F") << std::endl; - std::cout << "\t Prepared Overlaps:\tAB=" << (prepare(gA)->overlaps(gB)?"T":"F") << ", BA=" << (prepare(gB)->overlaps(gA)?"T":"F") << std::endl; + std::cout << "\t Equals:\tAB=" << (p_gA->equals(p_gB) ? "T" : "F") << ", BA=" << (p_gB->equals( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Disjoint:\tAB=" << (p_gA->disjoint(p_gB) ? "T" : "F") << ", BA=" << (p_gB->disjoint( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\tIntersects:\tAB=" << (p_gA->intersects(p_gB) ? "T" : "F") << ", BA=" << (p_gB->intersects( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Touches:\tAB=" << (p_gA->touches(p_gB) ? "T" : "F") << ", BA=" << (p_gB->touches( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Crosses:\tAB=" << (p_gA->crosses(p_gB) ? "T" : "F") << ", BA=" << (p_gB->crosses( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Within:\tAB=" << (p_gA->within(p_gB) ? "T" : "F") << ", BA=" << (p_gB->within( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Contains:\tAB=" << (p_gA->contains(p_gB) ? "T" : "F") << ", BA=" << (p_gB->contains( + p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Overlaps:\tAB=" << (p_gA->overlaps(p_gB) ? "T" : "F") << ", BA=" << (p_gB->overlaps( + p_gA) ? "T" : "F") << std::endl; + + std::cout << "\t Prepared Disjoint:\tAB=" << (prepare(p_gA)->disjoint(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->disjoint(p_gA) ? "T" : "F") << std::endl; + std::cout << "\tPrepared Intersects:\tAB=" << (prepare(p_gA)->intersects(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->intersects(p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Prepared Touches:\tAB=" << (prepare(p_gA)->touches(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->touches(p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Prepared Crosses:\tAB=" << (prepare(p_gA)->crosses(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->crosses(p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Prepared Within:\tAB=" << (prepare(p_gA)->within(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->within(p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Prepared Contains:\tAB=" << (prepare(p_gA)->contains(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->contains(p_gA) ? "T" : "F") << std::endl; + std::cout << "\t Prepared Overlaps:\tAB=" << (prepare(p_gA)->overlaps(p_gB) ? "T" : "F") << ", BA=" << (prepare( + p_gB)->overlaps(p_gA) ? "T" : "F") << std::endl; } XMLTester::~XMLTester() @@ -1545,7 +1889,7 @@ static void -usage(char *me, int exitcode, std::ostream &os) +usage(char* me, int exitcode, std::ostream& os) { os << "Usage: " << me << " [options] [ ...]" << std::endl; os << "Options: " << std::endl; @@ -1562,74 +1906,75 @@ void request_interrupt(int) { - geos::util::Interrupt::request(); + geos::util::Interrupt::request(); } int main(int argC, char* argV[]) { - int verbose=0; - bool sql_output=false; + int verbose = 0; + bool sql_output = false; #if defined(_MSC_VER) && defined(GEOS_TEST_USE_STACKWALKER) InitAllocCheck(); { #endif - if ( argC < 2 ) usage(argV[0], 1, std::cerr); + if(argC < 2) { + usage(argV[0], 1, std::cerr); + } - signal(15, request_interrupt); + signal(15, request_interrupt); - XMLTester tester; - tester.setVerbosityLevel(verbose); + XMLTester tester; + tester.setVerbosityLevel(verbose); - for (int i=1; i #include #include -#include "tinyxml/tinyxml.h" +#include "tinyxml2/tinyxml2.h" using namespace geos; class XMLTester { private: - enum { - SHOW_RUN_INFO=1, - SHOW_CASE, - SHOW_TEST, - SHOW_RESULT, - SHOW_GEOMS, - SHOW_GEOMS_FULL, - PRED - }; - - void parsePrecisionModel(const TiXmlElement* el); - void parseRun(const TiXmlNode* node); - void parseCase(const TiXmlNode* node); - void parseTest(const TiXmlNode* node); - void runPredicates(const geom::Geometry *a, const geom::Geometry *b); - geom::Geometry *parseGeometry(const std::string &in, const char* label="parsed"); - static std::string trimBlanks(const std::string &in); - void printGeom(std::ostream& os, const geom::Geometry *g); - std::string printGeom(const geom::Geometry *g); - void printTest(bool success, const std::string& expected_result, const std::string& actual_result, const util::Profile&); - - geom::Geometry *gA; - geom::Geometry *gB; - geom::Geometry *gT; - - bool usePrepared; - std::unique_ptr pm; - geom::GeometryFactory::Ptr factory; - std::unique_ptr wktreader; - std::unique_ptr wktwriter; - std::unique_ptr wkbreader; - std::unique_ptr wkbwriter; - TiXmlDocument xml; - - int verbose; - int test_predicates; - - int failed; - int succeeded; - int caseCount; - int testCount; - std::string opSignature; - - int testFileCount; - int totalTestCount; - - const std::string *curr_file; - std::string curr_case_desc; - - bool testValidOutput; - bool testValidInput; - bool sqlOutput; - bool HEXWKB_output; + enum { + SHOW_RUN_INFO = 1, + SHOW_CASE, + SHOW_TEST, + SHOW_RESULT, + SHOW_GEOMS, + SHOW_GEOMS_FULL, + PRED + }; + + void parsePrecisionModel(const tinyxml2::XMLElement* el); + void parseRun(const tinyxml2::XMLNode* node); + void parseCase(const tinyxml2::XMLNode* node); + void parseTest(const tinyxml2::XMLNode* node); + void runPredicates(const geom::Geometry* a, const geom::Geometry* b); + geom::Geometry* parseGeometry(const std::string& in, const char* label = "parsed"); + static std::string trimBlanks(const std::string& in); + void printGeom(std::ostream& os, const geom::Geometry* g); + std::string printGeom(const geom::Geometry* g); + void printTest(bool success, const std::string& expected_result, const std::string& actual_result, + const util::Profile&); + + geom::Geometry* gA; + geom::Geometry* gB; + + bool usePrepared; + std::unique_ptr pm; + geom::GeometryFactory::Ptr factory; + std::unique_ptr wktreader; + std::unique_ptr wktwriter; + std::unique_ptr wkbreader; + std::unique_ptr wkbwriter; + tinyxml2::XMLDocument xml; + + int verbose; + int test_predicates; + + int failed; + int succeeded; + int caseCount; + int testCount; + std::string opSignature; + + int testFileCount; + int totalTestCount; + + const std::string* curr_file; + std::string curr_case_desc; + + bool testValidOutput; + bool testValidInput; + bool sqlOutput; + bool HEXWKB_output; - bool testValid(const geom::Geometry* g, const std::string& label); + bool testValid(const geom::Geometry* g, const std::string& label); public: - XMLTester(); - ~XMLTester(); - void run(const std::string &testFile); - void resultSummary(std::ostream &os) const; - void resetCounters(); - - /* - * Values: - * 0: Show case description, run tests, show result - * 1: Show parsed geometry values - * 2: Run predicates - * - * Return previously set verbosity level - */ - int setVerbosityLevel(int val); - - int getFailuresCount() { return failed; } - - void testOutputValidity(bool val) { testValidOutput=val; } - void testInputValidity(bool val) { testValidInput=val; } - void setSQLOutput(bool val) { sqlOutput=val; } - void setHEXWKBOutput(bool val) { HEXWKB_output=val; } + XMLTester(); + ~XMLTester(); + void run(const std::string& testFile); + void resultSummary(std::ostream& os) const; + void resetCounters(); + + /* + * Values: + * 0: Show case description, run tests, show result + * 1: Show parsed geometry values + * 2: Run predicates + * + * Return previously set verbosity level + */ + int setVerbosityLevel(int val); + + int + getFailuresCount() + { + return failed; + } + + void + testOutputValidity(bool val) + { + testValidOutput = val; + } + void + testInputValidity(bool val) + { + testValidInput = val; + } + void + setSQLOutput(bool val) + { + sqlOutput = val; + } + void + setHEXWKBOutput(bool val) + { + HEXWKB_output = val; + } }; diff -Nru geos-3.7.1/TODO geos-3.8.0/TODO --- geos-3.7.1/TODO 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -GEOS TODO: - -- Feed PrecisionModel to OverlayResultValidator to set _TOLERANCE - -- Test unit tests for snapround package - -- DoubleBits misregards BYTE_ENDIAN, must check it. - -- BUILD CORRECTNESS: - - include from all .cpp files - -- WKB tester in doc/examples.cpp should do point-by-point comparison. - -- Implement Safe's idea of a compile-time enabled 2d-only - inlineable CoordinateSequence - -- WKB extension with LINEARRING ? - -- Check how to disable GEOS_VERSION define on command line - (or make GEOS_VERSION define in version.h optional) - not a major problems, just makes the compiler issue some warninigs. - -- Check GeometryEditor behaviour (modify passed geom or create a new one ?) - [not documented] - -- Add distinct binary predicates test support in XMLTester diff -Nru geos-3.7.1/tools/astyle/ASBeautifier.cpp geos-3.8.0/tools/astyle/ASBeautifier.cpp --- geos-3.7.1/tools/astyle/ASBeautifier.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASBeautifier.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,3744 @@ +// ASBeautifier.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#include "astyle.h" + +#include + +//----------------------------------------------------------------------------- +// astyle namespace +//----------------------------------------------------------------------------- + +namespace astyle { +// +// this must be global +static int g_preprocessorCppExternCBrace; + +//----------------------------------------------------------------------------- +// ASBeautifier class +//----------------------------------------------------------------------------- + +/** + * ASBeautifier's constructor + * This constructor is called only once for each source file. + * The cloned ASBeautifier objects are created with the copy constructor. + */ +ASBeautifier::ASBeautifier() +{ + waitingBeautifierStack = nullptr; + activeBeautifierStack = nullptr; + waitingBeautifierStackLengthStack = nullptr; + activeBeautifierStackLengthStack = nullptr; + + headerStack = nullptr; + tempStacks = nullptr; + parenDepthStack = nullptr; + blockStatementStack = nullptr; + parenStatementStack = nullptr; + braceBlockStateStack = nullptr; + continuationIndentStack = nullptr; + continuationIndentStackSizeStack = nullptr; + parenIndentStack = nullptr; + preprocIndentStack = nullptr; + sourceIterator = nullptr; + isModeManuallySet = false; + shouldForceTabIndentation = false; + setSpaceIndentation(4); + setContinuationIndentation(1); + setMinConditionalIndentOption(MINCOND_TWO); + setMaxContinuationIndentLength(40); + classInitializerIndents = 1; + tabLength = 0; + setClassIndent(false); + setModifierIndent(false); + setSwitchIndent(false); + setCaseIndent(false); + setBlockIndent(false); + setBraceIndent(false); + setBraceIndentVtk(false); + setNamespaceIndent(false); + setAfterParenIndent(false); + setLabelIndent(false); + setEmptyLineFill(false); + setCStyle(); + setPreprocDefineIndent(false); + setPreprocConditionalIndent(false); + setAlignMethodColon(false); + + // initialize ASBeautifier member vectors + beautifierFileType = 9; // reset to an invalid type + headers = new vector; + nonParenHeaders = new vector; + assignmentOperators = new vector; + nonAssignmentOperators = new vector; + preBlockStatements = new vector; + preCommandHeaders = new vector; + indentableHeaders = new vector; +} + +/** + * ASBeautifier's copy constructor + * Copy the vector objects to vectors in the new ASBeautifier + * object so the new object can be destroyed without deleting + * the vector objects in the copied vector. + * This is the reason a copy constructor is needed. + * + * Must explicitly call the base class copy constructor. + */ +ASBeautifier::ASBeautifier(const ASBeautifier& other) : ASBase(other) +{ + // these don't need to copy the stack + waitingBeautifierStack = nullptr; + activeBeautifierStack = nullptr; + waitingBeautifierStackLengthStack = nullptr; + activeBeautifierStackLengthStack = nullptr; + + // vector '=' operator performs a DEEP copy of all elements in the vector + + headerStack = new vector; + *headerStack = *other.headerStack; + + tempStacks = copyTempStacks(other); + + parenDepthStack = new vector; + *parenDepthStack = *other.parenDepthStack; + + blockStatementStack = new vector; + *blockStatementStack = *other.blockStatementStack; + + parenStatementStack = new vector; + *parenStatementStack = *other.parenStatementStack; + + braceBlockStateStack = new vector; + *braceBlockStateStack = *other.braceBlockStateStack; + + continuationIndentStack = new vector; + *continuationIndentStack = *other.continuationIndentStack; + + continuationIndentStackSizeStack = new vector; + *continuationIndentStackSizeStack = *other.continuationIndentStackSizeStack; + + parenIndentStack = new vector; + *parenIndentStack = *other.parenIndentStack; + + preprocIndentStack = new vector >; + *preprocIndentStack = *other.preprocIndentStack; + + // Copy the pointers to vectors. + // This is ok because the original ASBeautifier object + // is not deleted until end of job. + beautifierFileType = other.beautifierFileType; + headers = other.headers; + nonParenHeaders = other.nonParenHeaders; + assignmentOperators = other.assignmentOperators; + nonAssignmentOperators = other.nonAssignmentOperators; + preBlockStatements = other.preBlockStatements; + preCommandHeaders = other.preCommandHeaders; + indentableHeaders = other.indentableHeaders; + + // protected variables + // variables set by ASFormatter + // must also be updated in activeBeautifierStack + inLineNumber = other.inLineNumber; + runInIndentContinuation = other.runInIndentContinuation; + nonInStatementBrace = other.nonInStatementBrace; + objCColonAlignSubsequent = other.objCColonAlignSubsequent; + lineCommentNoBeautify = other.lineCommentNoBeautify; + isElseHeaderIndent = other.isElseHeaderIndent; + isCaseHeaderCommentIndent = other.isCaseHeaderCommentIndent; + isNonInStatementArray = other.isNonInStatementArray; + isSharpAccessor = other.isSharpAccessor; + isSharpDelegate = other.isSharpDelegate; + isInExternC = other.isInExternC; + isInBeautifySQL = other.isInBeautifySQL; + isInIndentableStruct = other.isInIndentableStruct; + isInIndentablePreproc = other.isInIndentablePreproc; + + // private variables + sourceIterator = other.sourceIterator; + currentHeader = other.currentHeader; + previousLastLineHeader = other.previousLastLineHeader; + probationHeader = other.probationHeader; + lastLineHeader = other.lastLineHeader; + indentString = other.indentString; + verbatimDelimiter = other.verbatimDelimiter; + isInQuote = other.isInQuote; + isInVerbatimQuote = other.isInVerbatimQuote; + haveLineContinuationChar = other.haveLineContinuationChar; + isInAsm = other.isInAsm; + isInAsmOneLine = other.isInAsmOneLine; + isInAsmBlock = other.isInAsmBlock; + isInComment = other.isInComment; + isInPreprocessorComment = other.isInPreprocessorComment; + isInRunInComment = other.isInRunInComment; + isInCase = other.isInCase; + isInQuestion = other.isInQuestion; + isContinuation = other.isContinuation; + isInHeader = other.isInHeader; + isInTemplate = other.isInTemplate; + isInDefine = other.isInDefine; + isInDefineDefinition = other.isInDefineDefinition; + classIndent = other.classIndent; + isIndentModeOff = other.isIndentModeOff; + isInClassHeader = other.isInClassHeader; + isInClassHeaderTab = other.isInClassHeaderTab; + isInClassInitializer = other.isInClassInitializer; + isInClass = other.isInClass; + isInObjCMethodDefinition = other.isInObjCMethodDefinition; + isInObjCMethodCall = other.isInObjCMethodCall; + isInObjCMethodCallFirst = other.isInObjCMethodCallFirst; + isImmediatelyPostObjCMethodDefinition = other.isImmediatelyPostObjCMethodDefinition; + isImmediatelyPostObjCMethodCall = other.isImmediatelyPostObjCMethodCall; + isInIndentablePreprocBlock = other.isInIndentablePreprocBlock; + isInObjCInterface = other.isInObjCInterface; + isInEnum = other.isInEnum; + isInEnumTypeID = other.isInEnumTypeID; + isInLet = other.isInLet; + isInTrailingReturnType = other.isInTrailingReturnType; + modifierIndent = other.modifierIndent; + switchIndent = other.switchIndent; + caseIndent = other.caseIndent; + namespaceIndent = other.namespaceIndent; + braceIndent = other.braceIndent; + braceIndentVtk = other.braceIndentVtk; + blockIndent = other.blockIndent; + shouldIndentAfterParen = other.shouldIndentAfterParen; + labelIndent = other.labelIndent; + isInConditional = other.isInConditional; + isModeManuallySet = other.isModeManuallySet; + shouldForceTabIndentation = other.shouldForceTabIndentation; + emptyLineFill = other.emptyLineFill; + lineOpensWithLineComment = other.lineOpensWithLineComment; + lineOpensWithComment = other.lineOpensWithComment; + lineStartsInComment = other.lineStartsInComment; + backslashEndsPrevLine = other.backslashEndsPrevLine; + blockCommentNoIndent = other.blockCommentNoIndent; + blockCommentNoBeautify = other.blockCommentNoBeautify; + previousLineProbationTab = other.previousLineProbationTab; + lineBeginsWithOpenBrace = other.lineBeginsWithOpenBrace; + lineBeginsWithCloseBrace = other.lineBeginsWithCloseBrace; + lineBeginsWithComma = other.lineBeginsWithComma; + lineIsCommentOnly = other.lineIsCommentOnly; + lineIsLineCommentOnly = other.lineIsLineCommentOnly; + shouldIndentBracedLine = other.shouldIndentBracedLine; + isInSwitch = other.isInSwitch; + foundPreCommandHeader = other.foundPreCommandHeader; + foundPreCommandMacro = other.foundPreCommandMacro; + shouldAlignMethodColon = other.shouldAlignMethodColon; + shouldIndentPreprocDefine = other.shouldIndentPreprocDefine; + shouldIndentPreprocConditional = other.shouldIndentPreprocConditional; + indentCount = other.indentCount; + spaceIndentCount = other.spaceIndentCount; + spaceIndentObjCMethodAlignment = other.spaceIndentObjCMethodAlignment; + bracePosObjCMethodAlignment = other.bracePosObjCMethodAlignment; + colonIndentObjCMethodAlignment = other.colonIndentObjCMethodAlignment; + lineOpeningBlocksNum = other.lineOpeningBlocksNum; + lineClosingBlocksNum = other.lineClosingBlocksNum; + fileType = other.fileType; + minConditionalOption = other.minConditionalOption; + minConditionalIndent = other.minConditionalIndent; + parenDepth = other.parenDepth; + indentLength = other.indentLength; + tabLength = other.tabLength; + continuationIndent = other.continuationIndent; + blockTabCount = other.blockTabCount; + maxContinuationIndent = other.maxContinuationIndent; + classInitializerIndents = other.classInitializerIndents; + templateDepth = other.templateDepth; + squareBracketCount = other.squareBracketCount; + prevFinalLineSpaceIndentCount = other.prevFinalLineSpaceIndentCount; + prevFinalLineIndentCount = other.prevFinalLineIndentCount; + defineIndentCount = other.defineIndentCount; + preprocBlockIndent = other.preprocBlockIndent; + quoteChar = other.quoteChar; + prevNonSpaceCh = other.prevNonSpaceCh; + currentNonSpaceCh = other.currentNonSpaceCh; + currentNonLegalCh = other.currentNonLegalCh; + prevNonLegalCh = other.prevNonLegalCh; +} + +/** + * ASBeautifier's destructor + */ +ASBeautifier::~ASBeautifier() +{ + deleteBeautifierContainer(waitingBeautifierStack); + deleteBeautifierContainer(activeBeautifierStack); + deleteContainer(waitingBeautifierStackLengthStack); + deleteContainer(activeBeautifierStackLengthStack); + deleteContainer(headerStack); + deleteTempStacksContainer(tempStacks); + deleteContainer(parenDepthStack); + deleteContainer(blockStatementStack); + deleteContainer(parenStatementStack); + deleteContainer(braceBlockStateStack); + deleteContainer(continuationIndentStack); + deleteContainer(continuationIndentStackSizeStack); + deleteContainer(parenIndentStack); + deleteContainer(preprocIndentStack); +} + +/** + * initialize the ASBeautifier. + * + * This init() should be called every time a ABeautifier object is to start + * beautifying a NEW source file. + * It is called only when a new ASFormatter object is created. + * init() receives a pointer to a ASSourceIterator object that will be + * used to iterate through the source code. + * + * @param iter a pointer to the ASSourceIterator or ASStreamIterator object. + */ +void ASBeautifier::init(ASSourceIterator* iter) +{ + sourceIterator = iter; + initVectors(); + ASBase::init(getFileType()); + g_preprocessorCppExternCBrace = 0; + + initContainer(waitingBeautifierStack, new vector); + initContainer(activeBeautifierStack, new vector); + + initContainer(waitingBeautifierStackLengthStack, new vector); + initContainer(activeBeautifierStackLengthStack, new vector); + + initContainer(headerStack, new vector); + + initTempStacksContainer(tempStacks, new vector*>); + tempStacks->emplace_back(new vector); + + initContainer(parenDepthStack, new vector); + initContainer(blockStatementStack, new vector); + initContainer(parenStatementStack, new vector); + initContainer(braceBlockStateStack, new vector); + braceBlockStateStack->push_back(true); + initContainer(continuationIndentStack, new vector); + initContainer(continuationIndentStackSizeStack, new vector); + continuationIndentStackSizeStack->emplace_back(0); + initContainer(parenIndentStack, new vector); + initContainer(preprocIndentStack, new vector >); + + previousLastLineHeader = nullptr; + currentHeader = nullptr; + + isInQuote = false; + isInVerbatimQuote = false; + haveLineContinuationChar = false; + isInAsm = false; + isInAsmOneLine = false; + isInAsmBlock = false; + isInComment = false; + isInPreprocessorComment = false; + isInRunInComment = false; + isContinuation = false; + isInCase = false; + isInQuestion = false; + isIndentModeOff = false; + isInClassHeader = false; + isInClassHeaderTab = false; + isInClassInitializer = false; + isInClass = false; + isInObjCMethodDefinition = false; + isInObjCMethodCall = false; + isInObjCMethodCallFirst = false; + isImmediatelyPostObjCMethodDefinition = false; + isImmediatelyPostObjCMethodCall = false; + isInIndentablePreprocBlock = false; + isInObjCInterface = false; + isInEnum = false; + isInEnumTypeID = false; + isInLet = false; + isInHeader = false; + isInTemplate = false; + isInConditional = false; + isInTrailingReturnType = false; + + indentCount = 0; + spaceIndentCount = 0; + spaceIndentObjCMethodAlignment = 0; + bracePosObjCMethodAlignment = 0; + colonIndentObjCMethodAlignment = 0; + lineOpeningBlocksNum = 0; + lineClosingBlocksNum = 0; + templateDepth = 0; + squareBracketCount = 0; + parenDepth = 0; + blockTabCount = 0; + prevFinalLineSpaceIndentCount = 0; + prevFinalLineIndentCount = 0; + defineIndentCount = 0; + preprocBlockIndent = 0; + prevNonSpaceCh = '{'; + currentNonSpaceCh = '{'; + prevNonLegalCh = '{'; + currentNonLegalCh = '{'; + quoteChar = ' '; + probationHeader = nullptr; + lastLineHeader = nullptr; + backslashEndsPrevLine = false; + lineOpensWithLineComment = false; + lineOpensWithComment = false; + lineStartsInComment = false; + isInDefine = false; + isInDefineDefinition = false; + lineCommentNoBeautify = false; + isElseHeaderIndent = false; + isCaseHeaderCommentIndent = false; + blockCommentNoIndent = false; + blockCommentNoBeautify = false; + previousLineProbationTab = false; + lineBeginsWithOpenBrace = false; + lineBeginsWithCloseBrace = false; + lineBeginsWithComma = false; + lineIsCommentOnly = false; + lineIsLineCommentOnly = false; + shouldIndentBracedLine = true; + isInSwitch = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + + isNonInStatementArray = false; + isSharpAccessor = false; + isSharpDelegate = false; + isInExternC = false; + isInBeautifySQL = false; + isInIndentableStruct = false; + isInIndentablePreproc = false; + inLineNumber = 0; + runInIndentContinuation = 0; + nonInStatementBrace = 0; + objCColonAlignSubsequent = 0; +} + +/* + * initialize the vectors + */ +void ASBeautifier::initVectors() +{ + if (fileType == beautifierFileType) // don't build unless necessary + return; + + beautifierFileType = fileType; + + headers->clear(); + nonParenHeaders->clear(); + assignmentOperators->clear(); + nonAssignmentOperators->clear(); + preBlockStatements->clear(); + preCommandHeaders->clear(); + indentableHeaders->clear(); + + ASResource::buildHeaders(headers, fileType, true); + ASResource::buildNonParenHeaders(nonParenHeaders, fileType, true); + ASResource::buildAssignmentOperators(assignmentOperators); + ASResource::buildNonAssignmentOperators(nonAssignmentOperators); + ASResource::buildPreBlockStatements(preBlockStatements, fileType); + ASResource::buildPreCommandHeaders(preCommandHeaders, fileType); + ASResource::buildIndentableHeaders(indentableHeaders); +} + +/** + * set indentation style to C/C++. + */ +void ASBeautifier::setCStyle() +{ + fileType = C_TYPE; +} + +/** + * set indentation style to Java. + */ +void ASBeautifier::setJavaStyle() +{ + fileType = JAVA_TYPE; +} + +/** + * set indentation style to C#. + */ +void ASBeautifier::setSharpStyle() +{ + fileType = SHARP_TYPE; +} + +/** + * set mode manually set flag + */ +void ASBeautifier::setModeManuallySet(bool state) +{ + isModeManuallySet = state; +} + +/** + * set tabLength equal to indentLength. + * This is done when tabLength is not explicitly set by + * "indent=force-tab-x" + * + */ +void ASBeautifier::setDefaultTabLength() +{ + tabLength = indentLength; +} + +/** + * indent using a different tab setting for indent=force-tab + * + * @param length number of spaces per tab. + */ +void ASBeautifier::setForceTabXIndentation(int length) +{ + // set tabLength instead of indentLength + indentString = "\t"; + tabLength = length; + shouldForceTabIndentation = true; +} + +/** + * indent using one tab per indentation + */ +void ASBeautifier::setTabIndentation(int length, bool forceTabs) +{ + indentString = "\t"; + indentLength = length; + shouldForceTabIndentation = forceTabs; +} + +/** + * indent using a number of spaces per indentation. + * + * @param length number of spaces per indent. + */ +void ASBeautifier::setSpaceIndentation(int length) +{ + indentString = string(length, ' '); + indentLength = length; +} + +/** +* indent continuation lines using a number of indents. +* +* @param indent number of indents per line. +*/ +void ASBeautifier::setContinuationIndentation(int indent) +{ + continuationIndent = indent; +} + +/** + * set the maximum indentation between two lines in a multi-line statement. + * + * @param max maximum indentation length. + */ +void ASBeautifier::setMaxContinuationIndentLength(int max) +{ + maxContinuationIndent = max; +} + +// retained for compatibility with release 2.06 +// "MaxInStatementIndent" has been changed to "MaxContinuationIndent" in 3.0 +// it is referenced only by the old "MaxInStatementIndent" options +void ASBeautifier::setMaxInStatementIndentLength(int max) +{ + setMaxContinuationIndentLength(max); +} + +/** + * set the minimum conditional indentation option. + * + * @param min minimal indentation option. + */ +void ASBeautifier::setMinConditionalIndentOption(int min) +{ + minConditionalOption = min; +} + +/** + * set minConditionalIndent from the minConditionalOption. + */ +void ASBeautifier::setMinConditionalIndentLength() +{ + if (minConditionalOption == MINCOND_ZERO) + minConditionalIndent = 0; + else if (minConditionalOption == MINCOND_ONE) + minConditionalIndent = indentLength; + else if (minConditionalOption == MINCOND_ONEHALF) + minConditionalIndent = indentLength / 2; + // minConditionalOption = INDENT_TWO + else + minConditionalIndent = indentLength * 2; +} + +/** + * set the state of the brace indent option. If true, braces will + * be indented one additional indent. + * + * @param state state of option. + */ +void ASBeautifier::setBraceIndent(bool state) +{ + braceIndent = state; +} + +/** +* set the state of the brace indent VTK option. If true, braces will +* be indented one additional indent, except for the opening brace. +* +* @param state state of option. +*/ +void ASBeautifier::setBraceIndentVtk(bool state) +{ + // need to set both of these + setBraceIndent(state); + braceIndentVtk = state; +} + +/** + * set the state of the block indentation option. If true, entire blocks + * will be indented one additional indent, similar to the GNU indent style. + * + * @param state state of option. + */ +void ASBeautifier::setBlockIndent(bool state) +{ + blockIndent = state; +} + +/** + * set the state of the class indentation option. If true, C++ class + * definitions will be indented one additional indent. + * + * @param state state of option. + */ +void ASBeautifier::setClassIndent(bool state) +{ + classIndent = state; +} + +/** + * set the state of the modifier indentation option. If true, C++ class + * access modifiers will be indented one-half an indent. + * + * @param state state of option. + */ +void ASBeautifier::setModifierIndent(bool state) +{ + modifierIndent = state; +} + +/** + * set the state of the switch indentation option. If true, blocks of 'switch' + * statements will be indented one additional indent. + * + * @param state state of option. + */ +void ASBeautifier::setSwitchIndent(bool state) +{ + switchIndent = state; +} + +/** + * set the state of the case indentation option. If true, lines of 'case' + * statements will be indented one additional indent. + * + * @param state state of option. + */ +void ASBeautifier::setCaseIndent(bool state) +{ + caseIndent = state; +} + +/** + * set the state of the namespace indentation option. + * If true, blocks of 'namespace' statements will be indented one + * additional indent. Otherwise, NO indentation will be added. + * + * @param state state of option. + */ +void ASBeautifier::setNamespaceIndent(bool state) +{ + namespaceIndent = state; +} + +/** +* set the state of the indent after parens option. +* +* @param state state of option. +*/ +void ASBeautifier::setAfterParenIndent(bool state) +{ + shouldIndentAfterParen = state; +} + +/** + * set the state of the label indentation option. + * If true, labels will be indented one indent LESS than the + * current indentation level. + * If false, labels will be flushed to the left with NO + * indent at all. + * + * @param state state of option. + */ +void ASBeautifier::setLabelIndent(bool state) +{ + labelIndent = state; +} + +/** + * set the state of the preprocessor indentation option. + * If true, multi-line #define statements will be indented. + * + * @param state state of option. + */ +void ASBeautifier::setPreprocDefineIndent(bool state) +{ + shouldIndentPreprocDefine = state; +} + +void ASBeautifier::setPreprocConditionalIndent(bool state) +{ + shouldIndentPreprocConditional = state; +} + +/** + * set the state of the empty line fill option. + * If true, empty lines will be filled with the whitespace. + * of their previous lines. + * If false, these lines will remain empty. + * + * @param state state of option. + */ +void ASBeautifier::setEmptyLineFill(bool state) +{ + emptyLineFill = state; +} + +void ASBeautifier::setAlignMethodColon(bool state) +{ + shouldAlignMethodColon = state; +} + +/** + * get the file type. + */ +int ASBeautifier::getFileType() const +{ + return fileType; +} + +/** + * get the number of spaces per indent + * + * @return value of indentLength option. + */ +int ASBeautifier::getIndentLength() const +{ + return indentLength; +} + +/** + * get the char used for indentation, space or tab + * + * @return the char used for indentation. + */ +string ASBeautifier::getIndentString() const +{ + return indentString; +} + +/** + * get mode manually set flag + */ +bool ASBeautifier::getModeManuallySet() const +{ + return isModeManuallySet; +} + +/** + * get the state of the force tab indentation option. + * + * @return state of force tab indentation. + */ +bool ASBeautifier::getForceTabIndentation() const +{ + return shouldForceTabIndentation; +} + +/** +* Get the state of the Objective-C align method colon option. +* +* @return state of shouldAlignMethodColon option. +*/ +bool ASBeautifier::getAlignMethodColon() const +{ + return shouldAlignMethodColon; +} + +/** + * get the state of the block indentation option. + * + * @return state of blockIndent option. + */ +bool ASBeautifier::getBlockIndent() const +{ + return blockIndent; +} + +/** + * get the state of the brace indentation option. + * + * @return state of braceIndent option. + */ +bool ASBeautifier::getBraceIndent() const +{ + return braceIndent; +} + +/** +* Get the state of the namespace indentation option. If true, blocks +* of the 'namespace' statement will be indented one additional indent. +* +* @return state of namespaceIndent option. +*/ +bool ASBeautifier::getNamespaceIndent() const +{ + return namespaceIndent; +} + +/** + * Get the state of the class indentation option. If true, blocks of + * the 'class' statement will be indented one additional indent. + * + * @return state of classIndent option. + */ +bool ASBeautifier::getClassIndent() const +{ + return classIndent; +} + +/** + * Get the state of the class access modifier indentation option. + * If true, the class access modifiers will be indented one-half indent. + * + * @return state of modifierIndent option. + */ +bool ASBeautifier::getModifierIndent() const +{ + return modifierIndent; +} + +/** + * get the state of the switch indentation option. If true, blocks of + * the 'switch' statement will be indented one additional indent. + * + * @return state of switchIndent option. + */ +bool ASBeautifier::getSwitchIndent() const +{ + return switchIndent; +} + +/** + * get the state of the case indentation option. If true, lines of 'case' + * statements will be indented one additional indent. + * + * @return state of caseIndent option. + */ +bool ASBeautifier::getCaseIndent() const +{ + return caseIndent; +} + +/** + * get the state of the empty line fill option. + * If true, empty lines will be filled with the whitespace. + * of their previous lines. + * If false, these lines will remain empty. + * + * @return state of emptyLineFill option. + */ +bool ASBeautifier::getEmptyLineFill() const +{ + return emptyLineFill; +} + +/** + * get the state of the preprocessor indentation option. + * If true, preprocessor "define" lines will be indented. + * If false, preprocessor "define" lines will be unchanged. + * + * @return state of shouldIndentPreprocDefine option. + */ +bool ASBeautifier::getPreprocDefineIndent() const +{ + return shouldIndentPreprocDefine; +} + +/** + * get the length of the tab indentation option. + * + * @return length of tab indent option. + */ +int ASBeautifier::getTabLength() const +{ + return tabLength; +} + +/** + * beautify a line of source code. + * every line of source code in a source code file should be sent + * one after the other to the beautify method. + * + * @return the indented line. + * @param originalLine the original unindented line. + */ +string ASBeautifier::beautify(const string& originalLine) +{ + string line; + bool isInQuoteContinuation = isInVerbatimQuote || haveLineContinuationChar; + + currentHeader = nullptr; + lastLineHeader = nullptr; + blockCommentNoBeautify = blockCommentNoIndent; + isInClass = false; + isInSwitch = false; + lineBeginsWithOpenBrace = false; + lineBeginsWithCloseBrace = false; + lineBeginsWithComma = false; + lineIsCommentOnly = false; + lineIsLineCommentOnly = false; + shouldIndentBracedLine = true; + isInAsmOneLine = false; + lineOpensWithLineComment = false; + lineOpensWithComment = false; + lineStartsInComment = isInComment; + previousLineProbationTab = false; + lineOpeningBlocksNum = 0; + lineClosingBlocksNum = 0; + if (isImmediatelyPostObjCMethodDefinition) + clearObjCMethodDefinitionAlignment(); + if (isImmediatelyPostObjCMethodCall) + { + isImmediatelyPostObjCMethodCall = false; + isInObjCMethodCall = false; + objCColonAlignSubsequent = 0; + } + + // handle and remove white spaces around the line: + // If not in comment, first find out size of white space before line, + // so that possible comments starting in the line continue in + // relation to the preliminary white-space. + if (isInQuoteContinuation) + { + // trim a single space added by ASFormatter, otherwise leave it alone + if (!(originalLine.length() == 1 && originalLine[0] == ' ')) + line = originalLine; + } + else if (isInComment || isInBeautifySQL) + { + // trim the end of comment and SQL lines + line = originalLine; + size_t trimEnd = line.find_last_not_of(" \t"); + if (trimEnd == string::npos) + trimEnd = 0; + else + trimEnd++; + if (trimEnd < line.length()) + line.erase(trimEnd); + // does a brace open the line + size_t firstChar = line.find_first_not_of(" \t"); + if (firstChar != string::npos) + { + if (line[firstChar] == '{') + lineBeginsWithOpenBrace = true; + else if (line[firstChar] == '}') + lineBeginsWithCloseBrace = true; + else if (line[firstChar] == ',') + lineBeginsWithComma = true; + } + } + else + { + line = trim(originalLine); + if (line.length() > 0) + { + if (line[0] == '{') + lineBeginsWithOpenBrace = true; + else if (line[0] == '}') + lineBeginsWithCloseBrace = true; + else if (line[0] == ',') + lineBeginsWithComma = true; + else if (line.compare(0, 2, "//") == 0) + lineIsLineCommentOnly = true; + else if (line.compare(0, 2, "/*") == 0) + { + if (line.find("*/", 2) != string::npos) + lineIsCommentOnly = true; + } + } + + isInRunInComment = false; + size_t j = line.find_first_not_of(" \t{"); + if (j != string::npos && line.compare(j, 2, "//") == 0) + lineOpensWithLineComment = true; + if (j != string::npos && line.compare(j, 2, "/*") == 0) + { + lineOpensWithComment = true; + size_t k = line.find_first_not_of(" \t"); + if (k != string::npos && line.compare(k, 1, "{") == 0) + isInRunInComment = true; + } + } + + // When indent is OFF the lines must still be processed by ASBeautifier. + // Otherwise the lines immediately following may not be indented correctly. + if ((lineIsLineCommentOnly || lineIsCommentOnly) + && line.find("*INDENT-OFF*", 0) != string::npos) + isIndentModeOff = true; + + if (line.length() == 0) + { + if (backslashEndsPrevLine) + { + backslashEndsPrevLine = false; + // check if this line ends a multi-line #define + // if so, remove the #define's cloned beautifier from the active + // beautifier stack and delete it. + if (isInDefineDefinition && !isInDefine) + { + isInDefineDefinition = false; + if (!activeBeautifierStack->empty()) + { + ASBeautifier* defineBeautifier = activeBeautifierStack->back(); + activeBeautifierStack->pop_back(); + delete defineBeautifier; + } + } + } + if (emptyLineFill && !isInQuoteContinuation) + { + if (isInIndentablePreprocBlock) + return preLineWS(preprocBlockIndent, 0); + if (!headerStack->empty() || isInEnum) + return preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount); + // must fall thru here + } + else + return line; + } + + // handle preprocessor commands + if (isInIndentablePreprocBlock + && line.length() > 0 + && line[0] != '#') + { + string indentedLine; + if (isInClassHeaderTab || isInClassInitializer) + { + // parsing is turned off in ASFormatter by indent-off + // the originalLine will probably never be returned here + indentedLine = preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount) + line; + return getIndentedLineReturn(indentedLine, originalLine); + } + indentedLine = preLineWS(preprocBlockIndent, 0) + line; + return getIndentedLineReturn(indentedLine, originalLine); + } + + if (!isInComment + && !isInQuoteContinuation + && line.length() > 0 + && ((line[0] == '#' && !isIndentedPreprocessor(line, 0)) + || backslashEndsPrevLine)) + { + if (line[0] == '#' && !isInDefine) + { + string preproc = extractPreprocessorStatement(line); + processPreprocessor(preproc, line); + if (isInIndentablePreprocBlock || isInIndentablePreproc) + { + string indentedLine; + if ((preproc.length() >= 2 && preproc.substr(0, 2) == "if")) // #if, #ifdef, #ifndef + { + indentedLine = preLineWS(preprocBlockIndent, 0) + line; + preprocBlockIndent += 1; + isInIndentablePreprocBlock = true; + } + else if (preproc == "else" || preproc == "elif") + { + indentedLine = preLineWS(preprocBlockIndent - 1, 0) + line; + } + else if (preproc == "endif") + { + preprocBlockIndent -= 1; + indentedLine = preLineWS(preprocBlockIndent, 0) + line; + if (preprocBlockIndent == 0) + isInIndentablePreprocBlock = false; + } + else + indentedLine = preLineWS(preprocBlockIndent, 0) + line; + return getIndentedLineReturn(indentedLine, originalLine); + } + if (shouldIndentPreprocConditional && preproc.length() > 0) + { + string indentedLine; + if (preproc.length() >= 2 && preproc.substr(0, 2) == "if") // #if, #ifdef, #ifndef + { + pair entry; // indentCount, spaceIndentCount + if (!isInDefine && activeBeautifierStack != nullptr && !activeBeautifierStack->empty()) + entry = activeBeautifierStack->back()->computePreprocessorIndent(); + else + entry = computePreprocessorIndent(); + preprocIndentStack->emplace_back(entry); + indentedLine = preLineWS(preprocIndentStack->back().first, + preprocIndentStack->back().second) + line; + return getIndentedLineReturn(indentedLine, originalLine); + } + if (preproc == "else" || preproc == "elif") + { + if (!preprocIndentStack->empty()) // if no entry don't indent + { + indentedLine = preLineWS(preprocIndentStack->back().first, + preprocIndentStack->back().second) + line; + return getIndentedLineReturn(indentedLine, originalLine); + } + } + else if (preproc == "endif") + { + if (!preprocIndentStack->empty()) // if no entry don't indent + { + indentedLine = preLineWS(preprocIndentStack->back().first, + preprocIndentStack->back().second) + line; + preprocIndentStack->pop_back(); + return getIndentedLineReturn(indentedLine, originalLine); + } + } + } + } + + // check if the last char is a backslash + if (line.length() > 0) + backslashEndsPrevLine = (line[line.length() - 1] == '\\'); + // comments within the definition line can be continued without the backslash + if (isInPreprocessorUnterminatedComment(line)) + backslashEndsPrevLine = true; + + // check if this line ends a multi-line #define + // if so, use the #define's cloned beautifier for the line's indentation + // and then remove it from the active beautifier stack and delete it. + if (!backslashEndsPrevLine && isInDefineDefinition && !isInDefine) + { + isInDefineDefinition = false; + // this could happen with invalid input + if (activeBeautifierStack->empty()) + return originalLine; + ASBeautifier* defineBeautifier = activeBeautifierStack->back(); + activeBeautifierStack->pop_back(); + + string indentedLine = defineBeautifier->beautify(line); + delete defineBeautifier; + return getIndentedLineReturn(indentedLine, originalLine); + } + + // unless this is a multi-line #define, return this precompiler line as is. + if (!isInDefine && !isInDefineDefinition) + return originalLine; + } + + // if there exists any worker beautifier in the activeBeautifierStack, + // then use it instead of me to indent the current line. + // variables set by ASFormatter must be updated. + if (!isInDefine && activeBeautifierStack != nullptr && !activeBeautifierStack->empty()) + { + activeBeautifierStack->back()->inLineNumber = inLineNumber; + activeBeautifierStack->back()->runInIndentContinuation = runInIndentContinuation; + activeBeautifierStack->back()->nonInStatementBrace = nonInStatementBrace; + activeBeautifierStack->back()->objCColonAlignSubsequent = objCColonAlignSubsequent; + activeBeautifierStack->back()->lineCommentNoBeautify = lineCommentNoBeautify; + activeBeautifierStack->back()->isElseHeaderIndent = isElseHeaderIndent; + activeBeautifierStack->back()->isCaseHeaderCommentIndent = isCaseHeaderCommentIndent; + activeBeautifierStack->back()->isNonInStatementArray = isNonInStatementArray; + activeBeautifierStack->back()->isSharpAccessor = isSharpAccessor; + activeBeautifierStack->back()->isSharpDelegate = isSharpDelegate; + activeBeautifierStack->back()->isInExternC = isInExternC; + activeBeautifierStack->back()->isInBeautifySQL = isInBeautifySQL; + activeBeautifierStack->back()->isInIndentableStruct = isInIndentableStruct; + activeBeautifierStack->back()->isInIndentablePreproc = isInIndentablePreproc; + // must return originalLine not the trimmed line + return activeBeautifierStack->back()->beautify(originalLine); + } + + // Flag an indented header in case this line is a one-line block. + // The header in the header stack will be deleted by a one-line block. + bool isInExtraHeaderIndent = false; + if (!headerStack->empty() + && lineBeginsWithOpenBrace + && (headerStack->back() != &AS_OPEN_BRACE + || probationHeader != nullptr)) + isInExtraHeaderIndent = true; + + size_t iPrelim = headerStack->size(); + + // calculate preliminary indentation based on headerStack and data from past lines + computePreliminaryIndentation(); + + // parse characters in the current line. + parseCurrentLine(line); + + // handle special cases of indentation + adjustParsedLineIndentation(iPrelim, isInExtraHeaderIndent); + + if (isInObjCMethodDefinition) + adjustObjCMethodDefinitionIndentation(line); + + if (isInObjCMethodCall) + adjustObjCMethodCallIndentation(line); + + if (isInDefine) + { + if (line.length() > 0 && line[0] == '#') + { + // the 'define' does not have to be attached to the '#' + string preproc = trim(line.substr(1)); + if (preproc.compare(0, 6, "define") == 0) + { + if (!continuationIndentStack->empty() + && continuationIndentStack->back() > 0) + { + defineIndentCount = indentCount; + } + else + { + defineIndentCount = indentCount - 1; + --indentCount; + } + } + } + + indentCount -= defineIndentCount; + } + + if (indentCount < 0) + indentCount = 0; + + if (lineCommentNoBeautify || blockCommentNoBeautify || isInQuoteContinuation) + indentCount = spaceIndentCount = 0; + + // finally, insert indentations into beginning of line + + string indentedLine = preLineWS(indentCount, spaceIndentCount) + line; + indentedLine = getIndentedLineReturn(indentedLine, originalLine); + + prevFinalLineSpaceIndentCount = spaceIndentCount; + prevFinalLineIndentCount = indentCount; + + if (lastLineHeader != nullptr) + previousLastLineHeader = lastLineHeader; + + if ((lineIsLineCommentOnly || lineIsCommentOnly) + && line.find("*INDENT-ON*", 0) != string::npos) + isIndentModeOff = false; + + return indentedLine; +} + +const string& ASBeautifier::getIndentedLineReturn(const string& newLine, const string& originalLine) const +{ + if (isIndentModeOff) + return originalLine; + return newLine; +} + +string ASBeautifier::preLineWS(int lineIndentCount, int lineSpaceIndentCount) const +{ + if (shouldForceTabIndentation) + { + if (tabLength != indentLength) + { + // adjust for different tab length + int indentCountOrig = lineIndentCount; + int spaceIndentCountOrig = lineSpaceIndentCount; + lineIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) / tabLength; + lineSpaceIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) % tabLength; + } + else + { + lineIndentCount += lineSpaceIndentCount / indentLength; + lineSpaceIndentCount = lineSpaceIndentCount % indentLength; + } + } + + string ws; + for (int i = 0; i < lineIndentCount; i++) + ws += indentString; + while ((lineSpaceIndentCount--) > 0) + ws += string(" "); + return ws; +} + +/** + * register a continuation indent. + */ +void ASBeautifier::registerContinuationIndent(const string& line, int i, int spaceIndentCount_, + int tabIncrementIn, int minIndent, bool updateParenStack) +{ + assert(i >= -1); + int remainingCharNum = line.length() - i; + int nextNonWSChar = getNextProgramCharDistance(line, i); + + // if indent is around the last char in the line OR indent-after-paren is requested, + // indent with the continuation indent + if (nextNonWSChar == remainingCharNum || shouldIndentAfterParen) + { + int previousIndent = spaceIndentCount_; + if (!continuationIndentStack->empty()) + previousIndent = continuationIndentStack->back(); + int currIndent = continuationIndent * indentLength + previousIndent; + if (currIndent > maxContinuationIndent && line[i] != '{') + currIndent = indentLength * 2 + spaceIndentCount_; + continuationIndentStack->emplace_back(currIndent); + if (updateParenStack) + parenIndentStack->emplace_back(previousIndent); + return; + } + + if (updateParenStack) + { + parenIndentStack->emplace_back(i + spaceIndentCount_ - runInIndentContinuation); + if (parenIndentStack->back() < 0) + parenIndentStack->back() = 0; + } + + int tabIncrement = tabIncrementIn; + + // check for following tabs + for (int j = i + 1; j < (i + nextNonWSChar); j++) + { + if (line[j] == '\t') + tabIncrement += convertTabToSpaces(j, tabIncrement); + } + + int continuationIndentCount = i + nextNonWSChar + spaceIndentCount_ + tabIncrement; + + // check for run-in statement + if (i > 0 && line[0] == '{') + continuationIndentCount -= indentLength; + + if (continuationIndentCount < minIndent) + continuationIndentCount = minIndent + spaceIndentCount_; + + // this is not done for an in-statement array + if (continuationIndentCount > maxContinuationIndent + && !(prevNonLegalCh == '=' && currentNonLegalCh == '{')) + continuationIndentCount = indentLength * 2 + spaceIndentCount_; + + if (!continuationIndentStack->empty() + && continuationIndentCount < continuationIndentStack->back()) + continuationIndentCount = continuationIndentStack->back(); + + // the block opener is not indented for a NonInStatementArray + if ((isNonInStatementArray && i >= 0 && line[i] == '{') + && !isInEnum && !braceBlockStateStack->empty() && braceBlockStateStack->back()) + continuationIndentCount = 0; + + continuationIndentStack->emplace_back(continuationIndentCount); +} + +/** +* Register a continuation indent for a class header or a class initializer colon. +*/ +void ASBeautifier::registerContinuationIndentColon(const string& line, int i, int tabIncrementIn) +{ + assert(line[i] == ':'); + assert(isInClassInitializer || isInClassHeaderTab); + + // register indent at first word after the colon + size_t firstChar = line.find_first_not_of(" \t"); + if (firstChar == (size_t) i) // firstChar is ':' + { + size_t firstWord = line.find_first_not_of(" \t", firstChar + 1); + if (firstWord != string::npos) + { + int continuationIndentCount = firstWord + spaceIndentCount + tabIncrementIn; + continuationIndentStack->emplace_back(continuationIndentCount); + isContinuation = true; + } + } +} + +/** + * Compute indentation for a preprocessor #if statement. + * This may be called for the activeBeautiferStack + * instead of the active ASBeautifier object. + */ +pair ASBeautifier::computePreprocessorIndent() +{ + computePreliminaryIndentation(); + pair entry(indentCount, spaceIndentCount); + if (!headerStack->empty() + && entry.first > 0 + && (headerStack->back() == &AS_IF + || headerStack->back() == &AS_ELSE + || headerStack->back() == &AS_FOR + || headerStack->back() == &AS_WHILE)) + --entry.first; + return entry; +} + +/** + * get distance to the next non-white space, non-comment character in the line. + * if no such character exists, return the length remaining to the end of the line. + */ +int ASBeautifier::getNextProgramCharDistance(const string& line, int i) const +{ + bool inComment = false; + int remainingCharNum = line.length() - i; + int charDistance; + char ch; + + for (charDistance = 1; charDistance < remainingCharNum; charDistance++) + { + ch = line[i + charDistance]; + if (inComment) + { + if (line.compare(i + charDistance, 2, "*/") == 0) + { + charDistance++; + inComment = false; + } + continue; + } + else if (isWhiteSpace(ch)) + continue; + else if (ch == '/') + { + if (line.compare(i + charDistance, 2, "//") == 0) + return remainingCharNum; + if (line.compare(i + charDistance, 2, "/*") == 0) + { + charDistance++; + inComment = true; + } + } + else + return charDistance; + } + + return charDistance; +} + +/** + * find the index number of a string element in a container of strings + * + * @return the index number of element in the container. -1 if element not found. + * @param container a vector of strings. + * @param element the element to find . + */ +int ASBeautifier::indexOf(const vector& container, const string* element) const +{ + vector::const_iterator where; + + where = find(container.begin(), container.end(), element); + if (where == container.end()) + return -1; + return (int) (where - container.begin()); +} + +/** + * convert tabs to spaces. + * i is the position of the character to convert to spaces. + * tabIncrementIn is the increment that must be added for tab indent characters + * to get the correct column for the current tab. + */ +int ASBeautifier::convertTabToSpaces(int i, int tabIncrementIn) const +{ + int tabToSpacesAdjustment = indentLength - 1 - ((tabIncrementIn + i) % indentLength); + return tabToSpacesAdjustment; +} + +/** + * trim removes the white space surrounding a line. + * + * @return the trimmed line. + * @param str the line to trim. + */ +string ASBeautifier::trim(const string& str) const +{ + int start = 0; + int end = str.length() - 1; + + while (start < end && isWhiteSpace(str[start])) + start++; + + while (start <= end && isWhiteSpace(str[end])) + end--; + + // don't trim if it ends in a continuation + if (end > -1 && str[end] == '\\') + end = str.length() - 1; + + string returnStr(str, start, end + 1 - start); + return returnStr; +} + +/** + * rtrim removes the white space from the end of a line. + * + * @return the trimmed line. + * @param str the line to trim. + */ +string ASBeautifier::rtrim(const string& str) const +{ + size_t len = str.length(); + size_t end = str.find_last_not_of(" \t"); + if (end == string::npos + || end == len - 1) + return str; + string returnStr(str, 0, end + 1); + return returnStr; +} + +/** + * Copy tempStacks for the copy constructor. + * The value of the vectors must also be copied. + */ +vector*>* ASBeautifier::copyTempStacks(const ASBeautifier& other) const +{ + vector*>* tempStacksNew = new vector*>; + vector*>::iterator iter; + for (iter = other.tempStacks->begin(); + iter != other.tempStacks->end(); + ++iter) + { + vector* newVec = new vector; + *newVec = **iter; + tempStacksNew->emplace_back(newVec); + } + return tempStacksNew; +} + +/** + * delete a member vectors to eliminate memory leak reporting + */ +void ASBeautifier::deleteBeautifierVectors() +{ + beautifierFileType = 9; // reset to an invalid type + delete headers; + delete nonParenHeaders; + delete preBlockStatements; + delete preCommandHeaders; + delete assignmentOperators; + delete nonAssignmentOperators; + delete indentableHeaders; +} + +/** + * delete a vector object + * T is the type of vector + * used for all vectors except tempStacks + */ +template +void ASBeautifier::deleteContainer(T& container) +{ + if (container != nullptr) + { + container->clear(); + delete (container); + container = nullptr; + } +} + +/** + * Delete the ASBeautifier vector object. + * This is a vector of pointers to ASBeautifier objects allocated with the 'new' operator. + * Therefore the ASBeautifier objects have to be deleted in addition to the + * ASBeautifier pointer entries. + */ +void ASBeautifier::deleteBeautifierContainer(vector*& container) +{ + if (container != nullptr) + { + vector::iterator iter = container->begin(); + while (iter < container->end()) + { + delete *iter; + ++iter; + } + container->clear(); + delete (container); + container = nullptr; + } +} + +/** + * Delete the tempStacks vector object. + * The tempStacks is a vector of pointers to strings allocated with the 'new' operator. + * Therefore the strings have to be deleted in addition to the tempStacks entries. + */ +void ASBeautifier::deleteTempStacksContainer(vector*>*& container) +{ + if (container != nullptr) + { + vector*>::iterator iter = container->begin(); + while (iter < container->end()) + { + delete *iter; + ++iter; + } + container->clear(); + delete (container); + container = nullptr; + } +} + +/** + * initialize a vector object + * T is the type of vector used for all vectors + */ +template +void ASBeautifier::initContainer(T& container, T value) +{ + // since the ASFormatter object is never deleted, + // the existing vectors must be deleted before creating new ones + if (container != nullptr) + deleteContainer(container); + container = value; +} + +/** + * Initialize the tempStacks vector object. + * The tempStacks is a vector of pointers to strings allocated with the 'new' operator. + * Any residual entries are deleted before the vector is initialized. + */ +void ASBeautifier::initTempStacksContainer(vector*>*& container, + vector*>* value) +{ + if (container != nullptr) + deleteTempStacksContainer(container); + container = value; +} + +/** + * Determine if an assignment statement ends with a comma + * that is not in a function argument. It ends with a + * comma if a comma is the last char on the line. + * + * @return true if line ends with a comma, otherwise false. + */ +bool ASBeautifier::statementEndsWithComma(const string& line, int index) const +{ + assert(line[index] == '='); + + bool isInComment_ = false; + bool isInQuote_ = false; + int parenCount = 0; + size_t lineLength = line.length(); + size_t i = 0; + char quoteChar_ = ' '; + + for (i = index + 1; i < lineLength; ++i) + { + char ch = line[i]; + + if (isInComment_) + { + if (line.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + + if (ch == '\\') + { + ++i; + continue; + } + + if (isInQuote_) + { + if (ch == quoteChar_) + isInQuote_ = false; + continue; + } + + if (ch == '"' + || (ch == '\'' && !isDigitSeparator(line, i))) + { + isInQuote_ = true; + quoteChar_ = ch; + continue; + } + + if (line.compare(i, 2, "//") == 0) + break; + + if (line.compare(i, 2, "/*") == 0) + { + if (isLineEndComment(line, i)) + break; + else + { + isInComment_ = true; + ++i; + continue; + } + } + + if (ch == '(') + parenCount++; + if (ch == ')') + parenCount--; + } + if (isInComment_ + || isInQuote_ + || parenCount > 0) + return false; + + size_t lastChar = line.find_last_not_of(" \t", i - 1); + + if (lastChar == string::npos || line[lastChar] != ',') + return false; + + return true; +} + +/** + * check if current comment is a line-end comment + * + * @return is before a line-end comment. + */ +bool ASBeautifier::isLineEndComment(const string& line, int startPos) const +{ + assert(line.compare(startPos, 2, "/*") == 0); + + // comment must be closed on this line with nothing after it + size_t endNum = line.find("*/", startPos + 2); + if (endNum != string::npos) + { + size_t nextChar = line.find_first_not_of(" \t", endNum + 2); + if (nextChar == string::npos) + return true; + } + return false; +} + +/** + * get the previous word index for an assignment operator + * + * @return is the index to the previous word (the in statement indent). + */ +int ASBeautifier::getContinuationIndentAssign(const string& line, size_t currPos) const +{ + assert(line[currPos] == '='); + + if (currPos == 0) + return 0; + + // get the last legal word (may be a number) + size_t end = line.find_last_not_of(" \t", currPos - 1); + if (end == string::npos || !isLegalNameChar(line[end])) + return 0; + + int start; // start of the previous word + for (start = end; start > -1; start--) + { + if (!isLegalNameChar(line[start])) + break; + } + start++; + + return start; +} + +/** + * get the instatement indent for a comma + * + * @return is the indent to the second word on the line (the in statement indent). + */ +int ASBeautifier::getContinuationIndentComma(const string& line, size_t currPos) const +{ + assert(line[currPos] == ','); + + // get first word on a line + size_t indent = line.find_first_not_of(" \t"); + if (indent == string::npos || !isLegalNameChar(line[indent])) + return 0; + + // bypass first word + for (; indent < currPos; indent++) + { + if (!isLegalNameChar(line[indent])) + break; + } + indent++; + if (indent >= currPos || indent < 4) + return 0; + + // point to second word or assignment operator + indent = line.find_first_not_of(" \t", indent); + if (indent == string::npos || indent >= currPos) + return 0; + + return indent; +} + +/** + * get the next word on a line + * the argument 'currPos' must point to the current position. + * + * @return is the next word or an empty string if none found. + */ +string ASBeautifier::getNextWord(const string& line, size_t currPos) const +{ + size_t lineLength = line.length(); + // get the last legal word (may be a number) + if (currPos == lineLength - 1) + return string(); + + size_t start = line.find_first_not_of(" \t", currPos + 1); + if (start == string::npos || !isLegalNameChar(line[start])) + return string(); + + size_t end; // end of the current word + for (end = start + 1; end <= lineLength; end++) + { + if (!isLegalNameChar(line[end]) || line[end] == '.') + break; + } + + return line.substr(start, end - start); +} + +/** + * Check if a preprocessor directive is always indented. + * C# "region" and "endregion" are always indented. + * C/C++ "pragma omp" is always indented. + * + * @return is true or false. + */ +bool ASBeautifier::isIndentedPreprocessor(const string& line, size_t currPos) const +{ + assert(line[0] == '#'); + string nextWord = getNextWord(line, currPos); + if (nextWord == "region" || nextWord == "endregion") + return true; + // is it #pragma omp + if (nextWord == "pragma") + { + // find pragma + size_t start = line.find("pragma"); + if (start == string::npos || !isLegalNameChar(line[start])) + return false; + // bypass pragma + for (; start < line.length(); start++) + { + if (!isLegalNameChar(line[start])) + break; + } + start++; + if (start >= line.length()) + return false; + // point to start of second word + start = line.find_first_not_of(" \t", start); + if (start == string::npos) + return false; + // point to end of second word + size_t end; + for (end = start; end < line.length(); end++) + { + if (!isLegalNameChar(line[end])) + break; + } + // check for "pragma omp" + string word = line.substr(start, end - start); + if (word == "omp" || word == "region" || word == "endregion") + return true; + } + return false; +} + +/** + * Check if a preprocessor directive is checking for __cplusplus defined. + * + * @return is true or false. + */ +bool ASBeautifier::isPreprocessorConditionalCplusplus(const string& line) const +{ + string preproc = trim(line.substr(1)); + if (preproc.compare(0, 5, "ifdef") == 0 && getNextWord(preproc, 4) == "__cplusplus") + return true; + if (preproc.compare(0, 2, "if") == 0) + { + // check for " #if defined(__cplusplus)" + size_t charNum = 2; + charNum = preproc.find_first_not_of(" \t", charNum); + if (charNum != string::npos && preproc.compare(charNum, 7, "defined") == 0) + { + charNum += 7; + charNum = preproc.find_first_not_of(" \t", charNum); + if (charNum != string::npos && preproc.compare(charNum, 1, "(") == 0) + { + ++charNum; + charNum = preproc.find_first_not_of(" \t", charNum); + if (charNum != string::npos && preproc.compare(charNum, 11, "__cplusplus") == 0) + return true; + } + } + } + return false; +} + +/** + * Check if a preprocessor definition contains an unterminated comment. + * Comments within a preprocessor definition can be continued without the backslash. + * + * @return is true or false. + */ +bool ASBeautifier::isInPreprocessorUnterminatedComment(const string& line) +{ + if (!isInPreprocessorComment) + { + size_t startPos = line.find("/*"); + if (startPos == string::npos) + return false; + } + size_t endNum = line.find("*/"); + if (endNum != string::npos) + { + isInPreprocessorComment = false; + return false; + } + isInPreprocessorComment = true; + return true; +} + +void ASBeautifier::popLastContinuationIndent() +{ + assert(!continuationIndentStackSizeStack->empty()); + int previousIndentStackSize = continuationIndentStackSizeStack->back(); + if (continuationIndentStackSizeStack->size() > 1) + continuationIndentStackSizeStack->pop_back(); + while (previousIndentStackSize < (int) continuationIndentStack->size()) + continuationIndentStack->pop_back(); +} + +// for unit testing +int ASBeautifier::getBeautifierFileType() const +{ return beautifierFileType; } + +/** + * Process preprocessor statements and update the beautifier stacks. + */ +void ASBeautifier::processPreprocessor(const string& preproc, const string& line) +{ + // When finding a multi-lined #define statement, the original beautifier + // 1. sets its isInDefineDefinition flag + // 2. clones a new beautifier that will be used for the actual indentation + // of the #define. This clone is put into the activeBeautifierStack in order + // to be called for the actual indentation. + // The original beautifier will have isInDefineDefinition = true, isInDefine = false + // The cloned beautifier will have isInDefineDefinition = true, isInDefine = true + if (shouldIndentPreprocDefine && preproc == "define" && line[line.length() - 1] == '\\') + { + if (!isInDefineDefinition) + { + // this is the original beautifier + isInDefineDefinition = true; + + // push a new beautifier into the active stack + // this beautifier will be used for the indentation of this define + ASBeautifier* defineBeautifier = new ASBeautifier(*this); + activeBeautifierStack->emplace_back(defineBeautifier); + } + else + { + // the is the cloned beautifier that is in charge of indenting the #define. + isInDefine = true; + } + } + else if (preproc.length() >= 2 && preproc.substr(0, 2) == "if") + { + if (isPreprocessorConditionalCplusplus(line) && !g_preprocessorCppExternCBrace) + g_preprocessorCppExternCBrace = 1; + // push a new beautifier into the stack + waitingBeautifierStackLengthStack->push_back(waitingBeautifierStack->size()); + activeBeautifierStackLengthStack->push_back(activeBeautifierStack->size()); + if (activeBeautifierStackLengthStack->back() == 0) + waitingBeautifierStack->emplace_back(new ASBeautifier(*this)); + else + waitingBeautifierStack->emplace_back(new ASBeautifier(*activeBeautifierStack->back())); + } + else if (preproc == "else") + { + if ((waitingBeautifierStack != nullptr) && !waitingBeautifierStack->empty()) + { + // MOVE current waiting beautifier to active stack. + activeBeautifierStack->emplace_back(waitingBeautifierStack->back()); + waitingBeautifierStack->pop_back(); + } + } + else if (preproc == "elif") + { + if ((waitingBeautifierStack != nullptr) && !waitingBeautifierStack->empty()) + { + // append a COPY current waiting beautifier to active stack, WITHOUT deleting the original. + activeBeautifierStack->emplace_back(new ASBeautifier(*(waitingBeautifierStack->back()))); + } + } + else if (preproc == "endif") + { + int stackLength = 0; + ASBeautifier* beautifier = nullptr; + + if (waitingBeautifierStackLengthStack != nullptr && !waitingBeautifierStackLengthStack->empty()) + { + stackLength = waitingBeautifierStackLengthStack->back(); + waitingBeautifierStackLengthStack->pop_back(); + while ((int) waitingBeautifierStack->size() > stackLength) + { + beautifier = waitingBeautifierStack->back(); + waitingBeautifierStack->pop_back(); + delete beautifier; + } + } + + if (!activeBeautifierStackLengthStack->empty()) + { + stackLength = activeBeautifierStackLengthStack->back(); + activeBeautifierStackLengthStack->pop_back(); + while ((int) activeBeautifierStack->size() > stackLength) + { + beautifier = activeBeautifierStack->back(); + activeBeautifierStack->pop_back(); + delete beautifier; + } + } + } +} + +// Compute the preliminary indentation based on data in the headerStack +// and data from previous lines. +// Update the class variable indentCount. +void ASBeautifier::computePreliminaryIndentation() +{ + indentCount = 0; + spaceIndentCount = 0; + isInClassHeaderTab = false; + + if (isInObjCMethodDefinition && !continuationIndentStack->empty()) + spaceIndentObjCMethodAlignment = continuationIndentStack->back(); + + if (!continuationIndentStack->empty()) + spaceIndentCount = continuationIndentStack->back(); + + for (size_t i = 0; i < headerStack->size(); i++) + { + isInClass = false; + + if (blockIndent) + { + // do NOT indent opening block for these headers + if (!((*headerStack)[i] == &AS_NAMESPACE + || (*headerStack)[i] == &AS_MODULE + || (*headerStack)[i] == &AS_CLASS + || (*headerStack)[i] == &AS_STRUCT + || (*headerStack)[i] == &AS_UNION + || (*headerStack)[i] == &AS_INTERFACE + || (*headerStack)[i] == &AS_THROWS + || (*headerStack)[i] == &AS_STATIC)) + ++indentCount; + } + else if (!(i > 0 && (*headerStack)[i - 1] != &AS_OPEN_BRACE + && (*headerStack)[i] == &AS_OPEN_BRACE)) + ++indentCount; + + if (!isJavaStyle() && !namespaceIndent && i > 0 + && ((*headerStack)[i - 1] == &AS_NAMESPACE + || (*headerStack)[i - 1] == &AS_MODULE) + && (*headerStack)[i] == &AS_OPEN_BRACE) + --indentCount; + + if (isCStyle() && i >= 1 + && (*headerStack)[i - 1] == &AS_CLASS + && (*headerStack)[i] == &AS_OPEN_BRACE) + { + if (classIndent) + ++indentCount; + isInClass = true; + } + + // is the switchIndent option is on, indent switch statements an additional indent. + else if (switchIndent && i > 1 + && (*headerStack)[i - 1] == &AS_SWITCH + && (*headerStack)[i] == &AS_OPEN_BRACE) + { + ++indentCount; + isInSwitch = true; + } + + } // end of for loop + + if (isInClassHeader) + { + if (!isJavaStyle()) + isInClassHeaderTab = true; + if (lineOpensWithLineComment || lineStartsInComment || lineOpensWithComment) + { + if (!lineBeginsWithOpenBrace) + --indentCount; + if (!continuationIndentStack->empty()) + spaceIndentCount -= continuationIndentStack->back(); + } + else if (blockIndent) + { + if (!lineBeginsWithOpenBrace) + ++indentCount; + } + } + + if (isInClassInitializer || isInEnumTypeID) + { + indentCount += classInitializerIndents; + } + + if (isInEnum && lineBeginsWithComma && !continuationIndentStack->empty()) + { + // unregister '=' indent from the previous line + continuationIndentStack->pop_back(); + isContinuation = false; + spaceIndentCount = 0; + } + + // Objective-C interface continuation line + if (isInObjCInterface) + ++indentCount; + + // unindent a class closing brace... + if (!lineStartsInComment + && isCStyle() + && isInClass + && classIndent + && headerStack->size() >= 2 + && (*headerStack)[headerStack->size() - 2] == &AS_CLASS + && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACE + && lineBeginsWithCloseBrace + && braceBlockStateStack->back()) + --indentCount; + + // unindent an indented switch closing brace... + else if (!lineStartsInComment + && isInSwitch + && switchIndent + && headerStack->size() >= 2 + && (*headerStack)[headerStack->size() - 2] == &AS_SWITCH + && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACE + && lineBeginsWithCloseBrace) + --indentCount; + + // handle special case of run-in comment in an indented class statement + if (isInClass + && classIndent + && isInRunInComment + && !lineOpensWithComment + && headerStack->size() > 1 + && (*headerStack)[headerStack->size() - 2] == &AS_CLASS) + --indentCount; + + if (isInConditional) + --indentCount; + if (g_preprocessorCppExternCBrace >= 4) + --indentCount; +} + +void ASBeautifier::adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent) +{ + if (lineStartsInComment) + return; + + // unindent a one-line statement in a header indent + if (!blockIndent + && lineBeginsWithOpenBrace + && headerStack->size() < iPrelim + && isInExtraHeaderIndent + && (lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum) + && shouldIndentBracedLine) + --indentCount; + + /* + * if '{' doesn't follow an immediately previous '{' in the headerStack + * (but rather another header such as "for" or "if", then unindent it + * by one indentation relative to its block. + */ + else if (!blockIndent + && lineBeginsWithOpenBrace + && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum) + && (headerStack->size() > 1 && (*headerStack)[headerStack->size() - 2] != &AS_OPEN_BRACE) + && shouldIndentBracedLine) + --indentCount; + + // must check one less in headerStack if more than one header on a line (allow-addins)... + else if (headerStack->size() > iPrelim + 1 + && !blockIndent + && lineBeginsWithOpenBrace + && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum) + && (headerStack->size() > 2 && (*headerStack)[headerStack->size() - 3] != &AS_OPEN_BRACE) + && shouldIndentBracedLine) + --indentCount; + + // unindent a closing brace... + else if (lineBeginsWithCloseBrace + && shouldIndentBracedLine) + --indentCount; + + // correctly indent one-line-blocks... + else if (lineOpeningBlocksNum > 0 + && lineOpeningBlocksNum == lineClosingBlocksNum + && previousLineProbationTab) + --indentCount; + + if (indentCount < 0) + indentCount = 0; + + // take care of extra brace indentation option... + if (!lineStartsInComment + && braceIndent + && shouldIndentBracedLine + && (lineBeginsWithOpenBrace || lineBeginsWithCloseBrace)) + { + if (!braceIndentVtk) + ++indentCount; + else + { + // determine if a style VTK brace is indented + bool haveUnindentedBrace = false; + for (size_t i = 0; i < headerStack->size(); i++) + { + if (((*headerStack)[i] == &AS_NAMESPACE + || (*headerStack)[i] == &AS_MODULE + || (*headerStack)[i] == &AS_CLASS + || (*headerStack)[i] == &AS_STRUCT) + && i + 1 < headerStack->size() + && (*headerStack)[i + 1] == &AS_OPEN_BRACE) + i++; + else if (lineBeginsWithOpenBrace) + { + // don't double count the current brace + if (i + 1 < headerStack->size() + && (*headerStack)[i] == &AS_OPEN_BRACE) + haveUnindentedBrace = true; + } + else if ((*headerStack)[i] == &AS_OPEN_BRACE) + haveUnindentedBrace = true; + } // end of for loop + if (haveUnindentedBrace) + ++indentCount; + } + } +} + +/** + * Compute indentCount adjustment when in a series of else-if statements + * and shouldBreakElseIfs is requested. + * It increments by one for each 'else' in the tempStack. + */ +int ASBeautifier::adjustIndentCountForBreakElseIfComments() const +{ + assert(isElseHeaderIndent && !tempStacks->empty()); + int indentCountIncrement = 0; + vector* lastTempStack = tempStacks->back(); + if (lastTempStack != nullptr) + { + for (size_t i = 0; i < lastTempStack->size(); i++) + { + if (*lastTempStack->at(i) == AS_ELSE) + indentCountIncrement++; + } + } + return indentCountIncrement; +} + +/** + * Extract a preprocessor statement without the #. + * If a error occurs an empty string is returned. + */ +string ASBeautifier::extractPreprocessorStatement(const string& line) const +{ + string preproc; + size_t start = line.find_first_not_of("#/ \t"); + if (start == string::npos) + return preproc; + size_t end = line.find_first_of("/ \t", start); + if (end == string::npos) + end = line.length(); + preproc = line.substr(start, end - start); + return preproc; +} + +void ASBeautifier::adjustObjCMethodDefinitionIndentation(const string& line_) +{ + // register indent for Objective-C continuation line + if (line_.length() > 0 + && (line_[0] == '-' || line_[0] == '+')) + { + if (shouldAlignMethodColon && objCColonAlignSubsequent != -1) + { + string convertedLine = getIndentedSpaceEquivalent(line_); + colonIndentObjCMethodAlignment = findObjCColonAlignment(convertedLine); + int objCColonAlignSubsequentIndent = objCColonAlignSubsequent + indentLength; + if (objCColonAlignSubsequentIndent > colonIndentObjCMethodAlignment) + colonIndentObjCMethodAlignment = objCColonAlignSubsequentIndent; + } + else if (continuationIndentStack->empty() + || continuationIndentStack->back() == 0) + { + continuationIndentStack->emplace_back(indentLength); + isContinuation = true; + } + } + // set indent for last definition line + else if (!lineBeginsWithOpenBrace) + { + if (shouldAlignMethodColon) + spaceIndentCount = computeObjCColonAlignment(line_, colonIndentObjCMethodAlignment); + else if (continuationIndentStack->empty()) + spaceIndentCount = spaceIndentObjCMethodAlignment; + } +} + +void ASBeautifier::adjustObjCMethodCallIndentation(const string& line_) +{ + static int keywordIndentObjCMethodAlignment = 0; + if (shouldAlignMethodColon && objCColonAlignSubsequent != -1) + { + if (isInObjCMethodCallFirst) + { + isInObjCMethodCallFirst = false; + string convertedLine = getIndentedSpaceEquivalent(line_); + bracePosObjCMethodAlignment = convertedLine.find('['); + keywordIndentObjCMethodAlignment = + getObjCFollowingKeyword(convertedLine, bracePosObjCMethodAlignment); + colonIndentObjCMethodAlignment = findObjCColonAlignment(convertedLine); + if (colonIndentObjCMethodAlignment >= 0) + { + int objCColonAlignSubsequentIndent = objCColonAlignSubsequent + indentLength; + if (objCColonAlignSubsequentIndent > colonIndentObjCMethodAlignment) + colonIndentObjCMethodAlignment = objCColonAlignSubsequentIndent; + if (lineBeginsWithOpenBrace) + colonIndentObjCMethodAlignment -= indentLength; + } + } + else + { + if (findObjCColonAlignment(line_) != -1) + { + if (colonIndentObjCMethodAlignment < 0) + spaceIndentCount += computeObjCColonAlignment(line_, objCColonAlignSubsequent); + else if (objCColonAlignSubsequent > colonIndentObjCMethodAlignment) + spaceIndentCount = computeObjCColonAlignment(line_, objCColonAlignSubsequent); + else + spaceIndentCount = computeObjCColonAlignment(line_, colonIndentObjCMethodAlignment); + } + else + { + if (spaceIndentCount < colonIndentObjCMethodAlignment) + spaceIndentCount += keywordIndentObjCMethodAlignment; + } + } + } + else // align keywords instead of colons + { + if (isInObjCMethodCallFirst) + { + isInObjCMethodCallFirst = false; + string convertedLine = getIndentedSpaceEquivalent(line_); + bracePosObjCMethodAlignment = convertedLine.find('['); + keywordIndentObjCMethodAlignment = + getObjCFollowingKeyword(convertedLine, bracePosObjCMethodAlignment); + } + else + { + if (spaceIndentCount < keywordIndentObjCMethodAlignment + bracePosObjCMethodAlignment) + spaceIndentCount += keywordIndentObjCMethodAlignment; + } + } +} + +/** + * Clear the variables used to align the Objective-C method definitions. + */ +void ASBeautifier::clearObjCMethodDefinitionAlignment() +{ + assert(isImmediatelyPostObjCMethodDefinition); + spaceIndentCount = 0; + spaceIndentObjCMethodAlignment = 0; + colonIndentObjCMethodAlignment = 0; + isInObjCMethodDefinition = false; + isImmediatelyPostObjCMethodDefinition = false; + if (!continuationIndentStack->empty()) + continuationIndentStack->pop_back(); +} + +/** + * Find the first alignment colon on a line. + * Ternary operators (?) are bypassed. + */ +int ASBeautifier::findObjCColonAlignment(const string& line) const +{ + bool haveTernary = false; + for (size_t i = 0; i < line.length(); i++) + { + i = line.find_first_of(":?", i); + if (i == string::npos) + break; + + if (line[i] == '?') + { + haveTernary = true; + continue; + } + if (haveTernary) + { + haveTernary = false; + continue; + } + return i; + } + return -1; +} + +/** + * Compute the spaceIndentCount necessary to align the current line colon + * with the colon position in the argument. + * If it cannot be aligned indentLength is returned and a new colon + * position is calculated. + */ +int ASBeautifier::computeObjCColonAlignment(const string& line, int colonAlignPosition) const +{ + int colonPosition = findObjCColonAlignment(line); + if (colonPosition < 0 || colonPosition > colonAlignPosition) + return indentLength; + return (colonAlignPosition - colonPosition); +} + +/* + * Compute position of the keyword following the method call object. + * This is oversimplified to find unusual method calls. + * Use for now and see what happens. + * Most programmers will probably use align-method-colon anyway. + */ +int ASBeautifier::getObjCFollowingKeyword(const string& line, int bracePos) const +{ + assert(line[bracePos] == '['); + size_t firstText = line.find_first_not_of(" \t", bracePos + 1); + if (firstText == string::npos) + return -(indentCount * indentLength - 1); + size_t searchBeg = firstText; + size_t objectEnd = 0; // end of object text + if (line[searchBeg] == '[') + { + objectEnd = line.find(']', searchBeg + 1); + if (objectEnd == string::npos) + return 0; + } + else + { + if (line[searchBeg] == '(') + { + searchBeg = line.find(')', searchBeg + 1); + if (searchBeg == string::npos) + return 0; + } + // bypass the object name + objectEnd = line.find_first_of(" \t", searchBeg + 1); + if (objectEnd == string::npos) + return 0; + --objectEnd; + } + size_t keyPos = line.find_first_not_of(" \t", objectEnd + 1); + if (keyPos == string::npos) + return 0; + return keyPos - firstText; +} + +/** + * Get a line using the current space indent with all tabs replaced by spaces. + * The indentCount is NOT included + * Needed to compute an accurate alignment. + */ +string ASBeautifier::getIndentedSpaceEquivalent(const string& line_) const +{ + string spaceIndent; + spaceIndent.append(spaceIndentCount, ' '); + string convertedLine = spaceIndent + line_; + for (size_t i = spaceIndent.length(); i < convertedLine.length(); i++) + { + if (convertedLine[i] == '\t') + { + size_t numSpaces = indentLength - (i % indentLength); + convertedLine.replace(i, 1, numSpaces, ' '); + i += indentLength - 1; + } + } + return convertedLine; +} + +/** + * Determine if an item is at a top level. + */ +bool ASBeautifier::isTopLevel() const +{ + if (headerStack->empty()) + return true; + else if (headerStack->back() == &AS_OPEN_BRACE + && headerStack->size() >= 2) + { + if ((*headerStack)[headerStack->size() - 2] == &AS_NAMESPACE + || (*headerStack)[headerStack->size() - 2] == &AS_MODULE + || (*headerStack)[headerStack->size() - 2] == &AS_CLASS + || (*headerStack)[headerStack->size() - 2] == &AS_INTERFACE + || (*headerStack)[headerStack->size() - 2] == &AS_STRUCT + || (*headerStack)[headerStack->size() - 2] == &AS_UNION) + return true; + } + else if (headerStack->back() == &AS_NAMESPACE + || headerStack->back() == &AS_MODULE + || headerStack->back() == &AS_CLASS + || headerStack->back() == &AS_INTERFACE + || headerStack->back() == &AS_STRUCT + || headerStack->back() == &AS_UNION) + return true; + return false; +} + +/** + * Parse the current line to update indentCount and spaceIndentCount. + */ +void ASBeautifier::parseCurrentLine(const string& line) +{ + bool isInLineComment = false; + bool isInOperator = false; + bool isSpecialChar = false; + bool haveCaseIndent = false; + bool haveAssignmentThisLine = false; + bool closingBraceReached = false; + bool previousLineProbation = (probationHeader != nullptr); + char ch = ' '; + int tabIncrementIn = 0; + if (isInQuote + && !haveLineContinuationChar + && !isInVerbatimQuote + && !isInAsm) + isInQuote = false; // missing closing quote + haveLineContinuationChar = false; + + for (size_t i = 0; i < line.length(); i++) + { + ch = line[i]; + + if (isInBeautifySQL) + continue; + + // handle special characters (i.e. backslash+character such as \n, \t, ...) + if (isInQuote && !isInVerbatimQuote) + { + if (isSpecialChar) + { + isSpecialChar = false; + continue; + } + if (line.compare(i, 2, "\\\\") == 0) + { + i++; + continue; + } + if (ch == '\\') + { + if (peekNextChar(line, i) == ' ') // is this '\' at end of line + haveLineContinuationChar = true; + else + isSpecialChar = true; + continue; + } + } + else if (isInDefine && ch == '\\') + continue; + + // bypass whitespace here + if (isWhiteSpace(ch)) + { + if (ch == '\t') + tabIncrementIn += convertTabToSpaces(i, tabIncrementIn); + continue; + } + + // handle quotes (such as 'x' and "Hello Dolly") + if (!(isInComment || isInLineComment) + && (ch == '"' + || (ch == '\'' && !isDigitSeparator(line, i)))) + { + if (!isInQuote) + { + quoteChar = ch; + isInQuote = true; + char prevCh = i > 0 ? line[i - 1] : ' '; + if (isCStyle() && prevCh == 'R') + { + int parenPos = line.find('(', i); + if (parenPos != -1) + { + isInVerbatimQuote = true; + verbatimDelimiter = line.substr(i + 1, parenPos - i - 1); + } + } + else if (isSharpStyle() && prevCh == '@') + isInVerbatimQuote = true; + // check for "C" following "extern" + else if (g_preprocessorCppExternCBrace == 2 && line.compare(i, 3, "\"C\"") == 0) + ++g_preprocessorCppExternCBrace; + } + else if (isInVerbatimQuote && ch == '"') + { + if (isCStyle()) + { + string delim = ')' + verbatimDelimiter; + int delimStart = i - delim.length(); + if (delimStart > 0 && line.substr(delimStart, delim.length()) == delim) + { + isInQuote = false; + isInVerbatimQuote = false; + } + } + else if (isSharpStyle()) + { + if (line.compare(i, 2, "\"\"") == 0) + i++; + else + { + isInQuote = false; + isInVerbatimQuote = false; + continue; + } + } + } + else if (quoteChar == ch) + { + isInQuote = false; + isContinuation = true; + continue; + } + } + if (isInQuote) + continue; + + // handle comments + + if (!(isInComment || isInLineComment) && line.compare(i, 2, "//") == 0) + { + // if there is a 'case' statement after these comments unindent by 1 + if (isCaseHeaderCommentIndent) + --indentCount; + // isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested + // if there is an 'else' after these comments a tempStacks indent is required + if (isElseHeaderIndent && lineOpensWithLineComment && !tempStacks->empty()) + indentCount += adjustIndentCountForBreakElseIfComments(); + isInLineComment = true; + i++; + continue; + } + else if (!(isInComment || isInLineComment) && line.compare(i, 2, "/*") == 0) + { + // if there is a 'case' statement after these comments unindent by 1 + if (isCaseHeaderCommentIndent && lineOpensWithComment) + --indentCount; + // isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested + // if there is an 'else' after these comments a tempStacks indent is required + if (isElseHeaderIndent && lineOpensWithComment && !tempStacks->empty()) + indentCount += adjustIndentCountForBreakElseIfComments(); + isInComment = true; + i++; + if (!lineOpensWithComment) // does line start with comment? + blockCommentNoIndent = true; // if no, cannot indent continuation lines + continue; + } + else if ((isInComment || isInLineComment) && line.compare(i, 2, "*/") == 0) + { + size_t firstText = line.find_first_not_of(" \t"); + // if there is a 'case' statement after these comments unindent by 1 + // only if the ending comment is the first entry on the line + if (isCaseHeaderCommentIndent && firstText == i) + --indentCount; + // if this comment close starts the line, must check for else-if indent + // isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested + // if there is an 'else' after these comments a tempStacks indent is required + if (firstText == i) + { + if (isElseHeaderIndent && !lineOpensWithComment && !tempStacks->empty()) + indentCount += adjustIndentCountForBreakElseIfComments(); + } + isInComment = false; + i++; + blockCommentNoIndent = false; // ok to indent next comment + continue; + } + // treat indented preprocessor lines as a line comment + else if (line[0] == '#' && isIndentedPreprocessor(line, i)) + { + isInLineComment = true; + } + + if (isInLineComment) + { + // bypass rest of the comment up to the comment end + while (i + 1 < line.length()) + i++; + + continue; + } + if (isInComment) + { + // if there is a 'case' statement after these comments unindent by 1 + if (!lineOpensWithComment && isCaseHeaderCommentIndent) + --indentCount; + // isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested + // if there is an 'else' after these comments a tempStacks indent is required + if (!lineOpensWithComment && isElseHeaderIndent && !tempStacks->empty()) + indentCount += adjustIndentCountForBreakElseIfComments(); + // bypass rest of the comment up to the comment end + while (i + 1 < line.length() + && line.compare(i + 1, 2, "*/") != 0) + i++; + + continue; + } + + // if we have reached this far then we are NOT in a comment or string of special character... + + if (probationHeader != nullptr) + { + if ((probationHeader == &AS_STATIC && ch == '{') + || (probationHeader == &AS_SYNCHRONIZED && ch == '(')) + { + // insert the probation header as a new header + isInHeader = true; + headerStack->emplace_back(probationHeader); + + // handle the specific probation header + isInConditional = (probationHeader == &AS_SYNCHRONIZED); + + isContinuation = false; + // if the probation comes from the previous line, then indent by 1 tab count. + if (previousLineProbation + && ch == '{' + && !(blockIndent && probationHeader == &AS_STATIC)) + { + ++indentCount; + previousLineProbationTab = true; + } + previousLineProbation = false; + } + + // dismiss the probation header + probationHeader = nullptr; + } + + prevNonSpaceCh = currentNonSpaceCh; + currentNonSpaceCh = ch; + if (!isLegalNameChar(ch) && ch != ',' && ch != ';') + { + prevNonLegalCh = currentNonLegalCh; + currentNonLegalCh = ch; + } + + if (isInHeader) + { + isInHeader = false; + currentHeader = headerStack->back(); + } + else + currentHeader = nullptr; + + if (isCStyle() && isInTemplate + && (ch == '<' || ch == '>') + && !(line.length() > i + 1 && line.compare(i, 2, ">=") == 0)) + { + if (ch == '<') + { + ++templateDepth; + continuationIndentStackSizeStack->push_back(continuationIndentStack->size()); + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true); + } + else if (ch == '>') + { + popLastContinuationIndent(); + if (--templateDepth <= 0) + { + ch = ';'; + isInTemplate = false; + templateDepth = 0; + } + } + } + + // handle parentheses + if (ch == '(' || ch == '[' || ch == ')' || ch == ']') + { + if (ch == '(' || ch == '[') + { + isInOperator = false; + // if have a struct header, this is a declaration not a definition + if (ch == '(' + && !headerStack->empty() + && headerStack->back() == &AS_STRUCT) + { + headerStack->pop_back(); + isInClassHeader = false; + if (line.find(AS_STRUCT, 0) > i) // if not on this line + indentCount -= classInitializerIndents; + if (indentCount < 0) + indentCount = 0; + } + + if (parenDepth == 0) + { + parenStatementStack->push_back(isContinuation); + isContinuation = true; + } + parenDepth++; + if (ch == '[') + { + ++squareBracketCount; + if (squareBracketCount == 1 && isCStyle()) + { + isInObjCMethodCall = true; + isInObjCMethodCallFirst = true; + } + } + + continuationIndentStackSizeStack->push_back(continuationIndentStack->size()); + + if (currentHeader != nullptr) + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, minConditionalIndent, true); + else if (!isInObjCMethodDefinition) + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true); + } + else if (ch == ')' || ch == ']') + { + if (ch == ']') + --squareBracketCount; + if (squareBracketCount <= 0) + { + squareBracketCount = 0; + if (isInObjCMethodCall) + isImmediatelyPostObjCMethodCall = true; + } + foundPreCommandHeader = false; + parenDepth--; + if (parenDepth == 0) + { + if (!parenStatementStack->empty()) // in case of unmatched closing parens + { + isContinuation = parenStatementStack->back(); + parenStatementStack->pop_back(); + } + isInAsm = false; + isInConditional = false; + } + + if (!continuationIndentStackSizeStack->empty()) + { + popLastContinuationIndent(); + + if (!parenIndentStack->empty()) + { + int poppedIndent = parenIndentStack->back(); + parenIndentStack->pop_back(); + + if (i == 0) + spaceIndentCount = poppedIndent; + } + } + } + continue; + } + + if (ch == '{') + { + // first, check if '{' is a block-opener or a static-array opener + bool isBlockOpener = ((prevNonSpaceCh == '{' && braceBlockStateStack->back()) + || prevNonSpaceCh == '}' + || prevNonSpaceCh == ')' + || prevNonSpaceCh == ';' + || peekNextChar(line, i) == '{' + || isInTrailingReturnType + || foundPreCommandHeader + || foundPreCommandMacro + || isInClassHeader + || (isInClassInitializer && !isLegalNameChar(prevNonSpaceCh)) + || isNonInStatementArray + || isInObjCMethodDefinition + || isInObjCInterface + || isSharpAccessor + || isSharpDelegate + || isInExternC + || isInAsmBlock + || getNextWord(line, i) == AS_NEW + || (isInDefine + && (prevNonSpaceCh == '(' + || isLegalNameChar(prevNonSpaceCh)))); + + if (isInObjCMethodDefinition) + { + objCColonAlignSubsequent = 0; + isImmediatelyPostObjCMethodDefinition = true; + if (lineBeginsWithOpenBrace) // for run-in braces + clearObjCMethodDefinitionAlignment(); + } + + if (!isBlockOpener && !isContinuation && !isInClassInitializer && !isInEnum) + { + if (isTopLevel()) + isBlockOpener = true; + } + + if (!isBlockOpener && currentHeader != nullptr) + { + for (size_t n = 0; n < nonParenHeaders->size(); n++) + if (currentHeader == (*nonParenHeaders)[n]) + { + isBlockOpener = true; + break; + } + } + + braceBlockStateStack->push_back(isBlockOpener); + + if (!isBlockOpener) + { + continuationIndentStackSizeStack->push_back(continuationIndentStack->size()); + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true); + parenDepth++; + if (i == 0) + shouldIndentBracedLine = false; + isInEnumTypeID = false; + + continue; + } + + // this brace is a block opener... + + ++lineOpeningBlocksNum; + + if (isInClassInitializer || isInEnumTypeID) + { + // decrease tab count if brace is broken + if (lineBeginsWithOpenBrace) + { + indentCount -= classInitializerIndents; + // decrease one more if an empty class + if (!headerStack->empty() + && (*headerStack).back() == &AS_CLASS) + { + int nextChar = getNextProgramCharDistance(line, i); + if ((int) line.length() > nextChar && line[nextChar] == '}') + --indentCount; + } + } + } + + if (isInObjCInterface) + { + isInObjCInterface = false; + if (lineBeginsWithOpenBrace) + --indentCount; + } + + if (braceIndent && !namespaceIndent && !headerStack->empty() + && ((*headerStack).back() == &AS_NAMESPACE + || (*headerStack).back() == &AS_MODULE)) + { + shouldIndentBracedLine = false; + --indentCount; + } + + // an indentable struct is treated like a class in the header stack + if (!headerStack->empty() + && (*headerStack).back() == &AS_STRUCT + && isInIndentableStruct) + (*headerStack).back() = &AS_CLASS; + + // is a brace inside a paren? + parenDepthStack->emplace_back(parenDepth); + blockStatementStack->push_back(isContinuation); + + if (!continuationIndentStack->empty()) + { + // completely purge the continuationIndentStack + while (!continuationIndentStack->empty()) + popLastContinuationIndent(); + if (isInClassInitializer || isInClassHeaderTab) + { + if (lineBeginsWithOpenBrace || lineBeginsWithComma) + spaceIndentCount = 0; + } + else + spaceIndentCount = 0; + } + + blockTabCount += (isContinuation ? 1 : 0); + if (g_preprocessorCppExternCBrace == 3) + ++g_preprocessorCppExternCBrace; + parenDepth = 0; + isInTrailingReturnType = false; + isInClassHeader = false; + isInClassHeaderTab = false; + isInClassInitializer = false; + isInEnumTypeID = false; + isContinuation = false; + isInQuestion = false; + isInLet = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + isInExternC = false; + + tempStacks->emplace_back(new vector); + headerStack->emplace_back(&AS_OPEN_BRACE); + lastLineHeader = &AS_OPEN_BRACE; + + continue; + } // end '{' + + //check if a header has been reached + bool isPotentialHeader = isCharPotentialHeader(line, i); + + if (isPotentialHeader && squareBracketCount == 0) + { + const string* newHeader = findHeader(line, i, headers); + + // java can have a 'default' not in a switch + if (newHeader == &AS_DEFAULT + && peekNextChar(line, (i + (*newHeader).length() - 1)) != ':') + newHeader = nullptr; + // Qt headers may be variables in C++ + if (isCStyle() + && (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)) + { + if (line.find_first_of("=;", i) != string::npos) + newHeader = nullptr; + } + else if (isSharpStyle() + && (newHeader == &AS_GET || newHeader == &AS_SET)) + { + if (getNextWord(line, i + (*newHeader).length()) == "is") + newHeader = nullptr; + } + else if (newHeader == &AS_USING + && peekNextChar(line, i + (*newHeader).length() - 1) != '(') + newHeader = nullptr; + + if (newHeader != nullptr) + { + // if we reached here, then this is a header... + bool isIndentableHeader = true; + + isInHeader = true; + + vector* lastTempStack = nullptr;; + if (!tempStacks->empty()) + lastTempStack = tempStacks->back(); + + // if a new block is opened, push a new stack into tempStacks to hold the + // future list of headers in the new block. + + // take care of the special case: 'else if (...)' + if (newHeader == &AS_IF && lastLineHeader == &AS_ELSE) + { + if (!headerStack->empty()) + headerStack->pop_back(); + } + + // take care of 'else' + else if (newHeader == &AS_ELSE) + { + if (lastTempStack != nullptr) + { + int indexOfIf = indexOf(*lastTempStack, &AS_IF); + if (indexOfIf != -1) + { + // recreate the header list in headerStack up to the previous 'if' + // from the temporary snapshot stored in lastTempStack. + int restackSize = lastTempStack->size() - indexOfIf - 1; + for (int r = 0; r < restackSize; r++) + { + headerStack->emplace_back(lastTempStack->back()); + lastTempStack->pop_back(); + } + if (!closingBraceReached) + indentCount += restackSize; + } + /* + * If the above if is not true, i.e. no 'if' before the 'else', + * then nothing beautiful will come out of this... + * I should think about inserting an Exception here to notify the caller of this... + */ + } + } + + // check if 'while' closes a previous 'do' + else if (newHeader == &AS_WHILE) + { + if (lastTempStack != nullptr) + { + int indexOfDo = indexOf(*lastTempStack, &AS_DO); + if (indexOfDo != -1) + { + // recreate the header list in headerStack up to the previous 'do' + // from the temporary snapshot stored in lastTempStack. + int restackSize = lastTempStack->size() - indexOfDo - 1; + for (int r = 0; r < restackSize; r++) + { + headerStack->emplace_back(lastTempStack->back()); + lastTempStack->pop_back(); + } + if (!closingBraceReached) + indentCount += restackSize; + } + } + } + // check if 'catch' closes a previous 'try' or 'catch' + else if (newHeader == &AS_CATCH || newHeader == &AS_FINALLY) + { + if (lastTempStack != nullptr) + { + int indexOfTry = indexOf(*lastTempStack, &AS_TRY); + if (indexOfTry == -1) + indexOfTry = indexOf(*lastTempStack, &AS_CATCH); + if (indexOfTry != -1) + { + // recreate the header list in headerStack up to the previous 'try' + // from the temporary snapshot stored in lastTempStack. + int restackSize = lastTempStack->size() - indexOfTry - 1; + for (int r = 0; r < restackSize; r++) + { + headerStack->emplace_back(lastTempStack->back()); + lastTempStack->pop_back(); + } + + if (!closingBraceReached) + indentCount += restackSize; + } + } + } + else if (newHeader == &AS_CASE) + { + isInCase = true; + if (!haveCaseIndent) + { + haveCaseIndent = true; + if (!lineBeginsWithOpenBrace) + --indentCount; + } + } + else if (newHeader == &AS_DEFAULT) + { + isInCase = true; + --indentCount; + } + else if (newHeader == &AS_STATIC + || newHeader == &AS_SYNCHRONIZED) + { + if (!headerStack->empty() + && (headerStack->back() == &AS_STATIC + || headerStack->back() == &AS_SYNCHRONIZED)) + { + isIndentableHeader = false; + } + else + { + isIndentableHeader = false; + probationHeader = newHeader; + } + } + else if (newHeader == &AS_TEMPLATE) + { + isInTemplate = true; + isIndentableHeader = false; + } + + if (isIndentableHeader) + { + headerStack->emplace_back(newHeader); + isContinuation = false; + if (indexOf(*nonParenHeaders, newHeader) == -1) + { + isInConditional = true; + } + lastLineHeader = newHeader; + } + else + isInHeader = false; + + i += newHeader->length() - 1; + + continue; + } // newHeader != nullptr + + if (findHeader(line, i, preCommandHeaders) != nullptr) + // must be after function arguments + if (prevNonSpaceCh == ')') + foundPreCommandHeader = true; + + // Objective-C NSException macros are preCommandHeaders + if (isCStyle() && findKeyword(line, i, AS_NS_DURING)) + foundPreCommandMacro = true; + if (isCStyle() && findKeyword(line, i, AS_NS_HANDLER)) + foundPreCommandMacro = true; + + if (parenDepth == 0 && findKeyword(line, i, AS_ENUM)) + isInEnum = true; + + if (isSharpStyle() && findKeyword(line, i, AS_LET)) + isInLet = true; + + } // isPotentialHeader + + if (ch == '?') + isInQuestion = true; + + // special handling of colons + if (ch == ':') + { + if (line.length() > i + 1 && line[i + 1] == ':') // look for :: + { + ++i; + continue; + } + else if (isInQuestion) + { + // do nothing special + } + else if (parenDepth > 0) + { + // found a 'for' loop or an objective-C statement + // so do nothing special + } + else if (isInEnum) + { + // found an enum with a base-type + isInEnumTypeID = true; + if (i == 0) + indentCount += classInitializerIndents; + } + else if ((isCStyle() || isSharpStyle()) + && !isInCase + && (prevNonSpaceCh == ')' || foundPreCommandHeader)) + { + // found a 'class' c'tor initializer + isInClassInitializer = true; + registerContinuationIndentColon(line, i, tabIncrementIn); + if (i == 0) + indentCount += classInitializerIndents; + } + else if (isInClassHeader || isInObjCInterface) + { + // is in a 'class A : public B' definition + isInClassHeaderTab = true; + registerContinuationIndentColon(line, i, tabIncrementIn); + } + else if (isInAsm || isInAsmOneLine || isInAsmBlock) + { + // do nothing special + } + else if (isDigit(peekNextChar(line, i))) + { + // found a bit field - do nothing special + } + else if (isCStyle() && isInClass && prevNonSpaceCh != ')') + { + // found a 'private:' or 'public:' inside a class definition + --indentCount; + if (modifierIndent) + spaceIndentCount += (indentLength / 2); + } + else if (isCStyle() && !isInClass + && headerStack->size() >= 2 + && (*headerStack)[headerStack->size() - 2] == &AS_CLASS + && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACE) + { + // found a 'private:' or 'public:' inside a class definition + // and on the same line as the class opening brace + // do nothing + } + else if (isJavaStyle() && lastLineHeader == &AS_FOR) + { + // found a java for-each statement + // so do nothing special + } + else + { + currentNonSpaceCh = ';'; // so that braces after the ':' will appear as block-openers + char peekedChar = peekNextChar(line, i); + if (isInCase) + { + isInCase = false; + ch = ';'; // from here on, treat char as ';' + } + else if (isCStyle() || (isSharpStyle() && peekedChar == ';')) + { + // is in a label (e.g. 'label1:') + if (labelIndent) + --indentCount; // unindent label by one indent + else if (!lineBeginsWithOpenBrace) + indentCount = 0; // completely flush indent to left + } + } + } + + if ((ch == ';' || (parenDepth > 0 && ch == ',')) && !continuationIndentStackSizeStack->empty()) + while ((int) continuationIndentStackSizeStack->back() + (parenDepth > 0 ? 1 : 0) + < (int) continuationIndentStack->size()) + continuationIndentStack->pop_back(); + + else if (ch == ',' && isInEnum && isNonInStatementArray && !continuationIndentStack->empty()) + continuationIndentStack->pop_back(); + + // handle commas + // previous "isInStatement" will be from an assignment operator or class initializer + if (ch == ',' && parenDepth == 0 && !isContinuation && !isNonInStatementArray) + { + // is comma at end of line + size_t nextChar = line.find_first_not_of(" \t", i + 1); + if (nextChar != string::npos) + { + if (line.compare(nextChar, 2, "//") == 0 + || line.compare(nextChar, 2, "/*") == 0) + nextChar = string::npos; + } + // register indent + if (nextChar == string::npos) + { + // register indent at previous word + if (isJavaStyle() && isInClassHeader) + { + // do nothing for now + } + // register indent at second word on the line + else if (!isInTemplate && !isInClassHeaderTab && !isInClassInitializer) + { + int prevWord = getContinuationIndentComma(line, i); + int continuationIndentCount = prevWord + spaceIndentCount + tabIncrementIn; + continuationIndentStack->emplace_back(continuationIndentCount); + isContinuation = true; + } + } + } + // handle comma first initializers + if (ch == ',' && parenDepth == 0 && lineBeginsWithComma + && (isInClassInitializer || isInClassHeaderTab)) + spaceIndentCount = 0; + + // handle ends of statements + if ((ch == ';' && parenDepth == 0) || ch == '}') + { + if (ch == '}') + { + // first check if this '}' closes a previous block, or a static array... + if (braceBlockStateStack->size() > 1) + { + bool braceBlockState = braceBlockStateStack->back(); + braceBlockStateStack->pop_back(); + if (!braceBlockState) + { + if (!continuationIndentStackSizeStack->empty()) + { + // this brace is a static array + popLastContinuationIndent(); + parenDepth--; + if (i == 0) + shouldIndentBracedLine = false; + + if (!parenIndentStack->empty()) + { + int poppedIndent = parenIndentStack->back(); + parenIndentStack->pop_back(); + if (i == 0) + spaceIndentCount = poppedIndent; + } + } + continue; + } + } + + // this brace is block closer... + + ++lineClosingBlocksNum; + + if (!continuationIndentStackSizeStack->empty()) + popLastContinuationIndent(); + + if (!parenDepthStack->empty()) + { + parenDepth = parenDepthStack->back(); + parenDepthStack->pop_back(); + isContinuation = blockStatementStack->back(); + blockStatementStack->pop_back(); + + if (isContinuation) + blockTabCount--; + } + + closingBraceReached = true; + if (i == 0) + spaceIndentCount = 0; + isInAsmBlock = false; + isInAsm = isInAsmOneLine = isInQuote = false; // close these just in case + + int headerPlace = indexOf(*headerStack, &AS_OPEN_BRACE); + if (headerPlace != -1) + { + const string* popped = headerStack->back(); + while (popped != &AS_OPEN_BRACE) + { + headerStack->pop_back(); + popped = headerStack->back(); + } + headerStack->pop_back(); + + if (headerStack->empty()) + g_preprocessorCppExternCBrace = 0; + + // do not indent namespace brace unless namespaces are indented + if (!namespaceIndent && !headerStack->empty() + && ((*headerStack).back() == &AS_NAMESPACE + || (*headerStack).back() == &AS_MODULE) + && i == 0) // must be the first brace on the line + shouldIndentBracedLine = false; + + if (!tempStacks->empty()) + { + vector* temp = tempStacks->back(); + tempStacks->pop_back(); + delete temp; + } + } + + ch = ' '; // needed due to cases such as '}else{', so that headers ('else' in this case) will be identified... + } // ch == '}' + + /* + * Create a temporary snapshot of the current block's header-list in the + * uppermost inner stack in tempStacks, and clear the headerStack up to + * the beginning of the block. + * Thus, the next future statement will think it comes one indent past + * the block's '{' unless it specifically checks for a companion-header + * (such as a previous 'if' for an 'else' header) within the tempStacks, + * and recreates the temporary snapshot by manipulating the tempStacks. + */ + if (!tempStacks->back()->empty()) + while (!tempStacks->back()->empty()) + tempStacks->back()->pop_back(); + while (!headerStack->empty() && headerStack->back() != &AS_OPEN_BRACE) + { + tempStacks->back()->emplace_back(headerStack->back()); + headerStack->pop_back(); + } + + if (parenDepth == 0 && ch == ';') + { + isContinuation = false; + isInClassInitializer = false; + } + + if (isInObjCMethodDefinition) + { + objCColonAlignSubsequent = 0; + isImmediatelyPostObjCMethodDefinition = true; + } + + previousLastLineHeader = nullptr; + isInClassHeader = false; // for 'friend' class + isInEnum = false; + isInEnumTypeID = false; + isInQuestion = false; + isInTemplate = false; + isInObjCInterface = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + squareBracketCount = 0; + + continue; + } + + if (isPotentialHeader) + { + // check for preBlockStatements in C/C++ ONLY if not within parentheses + // (otherwise 'struct XXX' statements would be wrongly interpreted...) + if (!isInTemplate && !(isCStyle() && parenDepth > 0)) + { + const string* newHeader = findHeader(line, i, preBlockStatements); + // CORBA IDL module + if (newHeader == &AS_MODULE) + { + char nextChar = peekNextChar(line, i + newHeader->length() - 1); + if (prevNonSpaceCh == ')' || !isalpha(nextChar)) + newHeader = nullptr; + } + if (newHeader != nullptr + && !(isCStyle() && newHeader == &AS_CLASS && isInEnum) // is not 'enum class' + && !(isCStyle() && newHeader == &AS_INTERFACE // CORBA IDL interface + && (headerStack->empty() + || headerStack->back() != &AS_OPEN_BRACE))) + { + if (!isSharpStyle()) + headerStack->emplace_back(newHeader); + // do not need 'where' in the headerStack + // do not need second 'class' statement in a row + else if (!(newHeader == &AS_WHERE + || ((newHeader == &AS_CLASS || newHeader == &AS_STRUCT) + && !headerStack->empty() + && (headerStack->back() == &AS_CLASS + || headerStack->back() == &AS_STRUCT)))) + headerStack->emplace_back(newHeader); + + if (!headerStack->empty()) + { + if ((*headerStack).back() == &AS_CLASS + || (*headerStack).back() == &AS_STRUCT + || (*headerStack).back() == &AS_INTERFACE) + { + isInClassHeader = true; + } + else if ((*headerStack).back() == &AS_NAMESPACE + || (*headerStack).back() == &AS_MODULE) + { + // remove continuationIndent from namespace + if (!continuationIndentStack->empty()) + continuationIndentStack->pop_back(); + isContinuation = false; + } + } + + i += newHeader->length() - 1; + continue; + } + } + const string* foundIndentableHeader = findHeader(line, i, indentableHeaders); + + if (foundIndentableHeader != nullptr) + { + // must bypass the header before registering the in statement + i += foundIndentableHeader->length() - 1; + if (!isInOperator && !isInTemplate && !isNonInStatementArray) + { + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false); + isContinuation = true; + } + continue; + } + + if (isCStyle() && findKeyword(line, i, AS_OPERATOR)) + isInOperator = true; + + if (g_preprocessorCppExternCBrace == 1 && findKeyword(line, i, AS_EXTERN)) + ++g_preprocessorCppExternCBrace; + + if (g_preprocessorCppExternCBrace == 3) // extern "C" is not followed by a '{' + g_preprocessorCppExternCBrace = 0; + + // "new" operator is a pointer, not a calculation + if (findKeyword(line, i, AS_NEW)) + { + if (isContinuation && !continuationIndentStack->empty() && prevNonSpaceCh == '=') + continuationIndentStack->back() = 0; + } + + if (isCStyle() && findKeyword(line, i, AS_AUTO) && isTopLevel()) + { + isInTrailingReturnType = true; + } + + if (isCStyle()) + { + if (findKeyword(line, i, AS_ASM) + || findKeyword(line, i, AS__ASM__)) + { + isInAsm = true; + } + else if (findKeyword(line, i, AS_MS_ASM) // microsoft specific + || findKeyword(line, i, AS_MS__ASM)) + { + int index = 4; + if (peekNextChar(line, i) == '_') // check for __asm + index = 5; + + char peekedChar = peekNextChar(line, i + index); + if (peekedChar == '{' || peekedChar == ' ') + isInAsmBlock = true; + else + isInAsmOneLine = true; + } + } + + // bypass the entire name for all others + string name = getCurrentWord(line, i); + i += name.length() - 1; + continue; + } + + // Handle Objective-C statements + + if (ch == '@' + && line.length() > i + 1 + && !isWhiteSpace(line[i + 1]) + && isCharPotentialHeader(line, i + 1)) + { + string curWord = getCurrentWord(line, i + 1); + if (curWord == AS_INTERFACE) + { + isInObjCInterface = true; + string name = '@' + curWord; + i += name.length() - 1; + continue; + } + else if (isInObjCInterface) + { + --indentCount; + isInObjCInterface = false; + } + + if (curWord == AS_PUBLIC + || curWord == AS_PRIVATE + || curWord == AS_PROTECTED) + { + --indentCount; + if (modifierIndent) + spaceIndentCount += (indentLength / 2); + string name = '@' + curWord; + i += name.length() - 1; + continue; + } + else if (curWord == AS_END) + { + popLastContinuationIndent(); + spaceIndentCount = 0; + isInObjCMethodDefinition = false; + string name = '@' + curWord; + i += name.length() - 1; + continue; + } + } + else if ((ch == '-' || ch == '+') + && (prevNonSpaceCh == ';' || prevNonSpaceCh == '{' + || headerStack->empty() || isInObjCInterface) + && ASBase::peekNextChar(line, i) != '-' + && ASBase::peekNextChar(line, i) != '+' + && line.find_first_not_of(" \t") == i) + { + if (isInObjCInterface) + --indentCount; + isInObjCInterface = false; + isInObjCMethodDefinition = true; + continue; + } + + // Handle operators + + bool isPotentialOperator = isCharPotentialOperator(ch); + + if (isPotentialOperator) + { + // Check if an operator has been reached. + const string* foundAssignmentOp = findOperator(line, i, assignmentOperators); + const string* foundNonAssignmentOp = findOperator(line, i, nonAssignmentOperators); + + if (foundNonAssignmentOp != nullptr) + { + if (foundNonAssignmentOp == &AS_LAMBDA) + foundPreCommandHeader = true; + if (isInTemplate && foundNonAssignmentOp == &AS_GR_GR) + foundNonAssignmentOp = nullptr; + } + + // Since findHeader's boundary checking was not used above, it is possible + // that both an assignment op and a non-assignment op where found, + // e.g. '>>' and '>>='. If this is the case, treat the LONGER one as the + // found operator. + if (foundAssignmentOp != nullptr && foundNonAssignmentOp != nullptr) + { + if (foundAssignmentOp->length() < foundNonAssignmentOp->length()) + foundAssignmentOp = nullptr; + else + foundNonAssignmentOp = nullptr; + } + + if (foundNonAssignmentOp != nullptr) + { + if (foundNonAssignmentOp->length() > 1) + i += foundNonAssignmentOp->length() - 1; + + // For C++ input/output, operator<< and >> should be + // aligned, if we are not in a statement already and + // also not in the "operator<<(...)" header line + if (!isInOperator + && continuationIndentStack->empty() + && isCStyle() + && (foundNonAssignmentOp == &AS_GR_GR + || foundNonAssignmentOp == &AS_LS_LS)) + { + // this will be true if the line begins with the operator + if (i < foundNonAssignmentOp->length() && spaceIndentCount == 0) + spaceIndentCount += 2 * indentLength; + // align to the beginning column of the operator + registerContinuationIndent(line, i - foundNonAssignmentOp->length(), spaceIndentCount, tabIncrementIn, 0, false); + } + } + + else if (foundAssignmentOp != nullptr) + { + foundPreCommandHeader = false; // clears this for array assignments + foundPreCommandMacro = false; + + if (foundAssignmentOp->length() > 1) + i += foundAssignmentOp->length() - 1; + + if (!isInOperator && !isInTemplate && (!isNonInStatementArray || isInEnum)) + { + // if multiple assignments, align on the previous word + if (foundAssignmentOp == &AS_ASSIGN + && prevNonSpaceCh != ']' // an array + && statementEndsWithComma(line, i)) + { + if (!haveAssignmentThisLine) // only one assignment indent per line + { + // register indent at previous word + haveAssignmentThisLine = true; + int prevWordIndex = getContinuationIndentAssign(line, i); + int continuationIndentCount = prevWordIndex + spaceIndentCount + tabIncrementIn; + continuationIndentStack->emplace_back(continuationIndentCount); + isContinuation = true; + } + } + // don't indent an assignment if 'let' + else if (isInLet) + { + isInLet = false; + } + else if (!lineBeginsWithComma) + { + if (i == 0 && spaceIndentCount == 0) + spaceIndentCount += indentLength; + registerContinuationIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false); + isContinuation = true; + } + } + } + } + } // end of for loop * end of for loop * end of for loop * end of for loop * end of for loop * +} + +} // end namespace astyle diff -Nru geos-3.7.1/tools/astyle/ASEnhancer.cpp geos-3.8.0/tools/astyle/ASEnhancer.cpp --- geos-3.7.1/tools/astyle/ASEnhancer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASEnhancer.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,796 @@ +// ASEnhancer.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#include "astyle.h" + +//----------------------------------------------------------------------------- +// astyle namespace +//----------------------------------------------------------------------------- + +namespace astyle { +// +//----------------------------------------------------------------------------- +// ASEnhancer class +//----------------------------------------------------------------------------- + +/** + * ASEnhancer constructor + */ +ASEnhancer::ASEnhancer() +{ +} + +/** + * Destructor of ASEnhancer + */ +ASEnhancer::~ASEnhancer() +{ +} + +/** + * initialize the ASEnhancer. + * + * init() is called each time an ASFormatter object is initialized. + */ +void ASEnhancer::init(int _fileType, + int _indentLength, + int _tabLength, + bool _useTabs, + bool _forceTab, + bool _namespaceIndent, + bool _caseIndent, + bool _preprocBlockIndent, + bool _preprocDefineIndent, + bool _emptyLineFill, + vector* >* _indentableMacros) +{ + // formatting variables from ASFormatter and ASBeautifier + ASBase::init(_fileType); + indentLength = _indentLength; + tabLength = _tabLength; + useTabs = _useTabs; + forceTab = _forceTab; + namespaceIndent = _namespaceIndent; + caseIndent = _caseIndent; + preprocBlockIndent = _preprocBlockIndent; + preprocDefineIndent = _preprocDefineIndent; + emptyLineFill = _emptyLineFill; + indentableMacros = _indentableMacros; + quoteChar = '\''; + + // unindent variables + lineNumber = 0; + braceCount = 0; + isInComment = false; + isInQuote = false; + switchDepth = 0; + eventPreprocDepth = 0; + lookingForCaseBrace = false; + unindentNextLine = false; + shouldUnindentLine = false; + shouldUnindentComment = false; + + // switch struct and vector + sw.switchBraceCount = 0; + sw.unindentDepth = 0; + sw.unindentCase = false; + switchStack.clear(); + + // other variables + nextLineIsEventIndent = false; + isInEventTable = false; + nextLineIsDeclareIndent = false; + isInDeclareSection = false; +} + +/** + * additional formatting for line of source code. + * every line of source code in a source code file should be sent + * one after the other to this function. + * indents event tables + * unindents the case blocks + * + * @param line the original formatted line will be updated if necessary. + */ +void ASEnhancer::enhance(string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL) +{ + shouldUnindentLine = true; + shouldUnindentComment = false; + lineNumber++; + + // check for beginning of event table + if (nextLineIsEventIndent) + { + isInEventTable = true; + nextLineIsEventIndent = false; + } + + // check for beginning of SQL declare section + if (nextLineIsDeclareIndent) + { + isInDeclareSection = true; + nextLineIsDeclareIndent = false; + } + + if (line.length() == 0 + && !isInEventTable + && !isInDeclareSection + && !emptyLineFill) + return; + + // test for unindent on attached braces + if (unindentNextLine) + { + sw.unindentDepth++; + sw.unindentCase = true; + unindentNextLine = false; + } + + // parse characters in the current line + parseCurrentLine(line, isInPreprocessor, isInSQL); + + // check for SQL indentable lines + if (isInDeclareSection) + { + size_t firstText = line.find_first_not_of(" \t"); + if (firstText == string::npos || line[firstText] != '#') + indentLine(line, 1); + } + + // check for event table indentable lines + if (isInEventTable + && (eventPreprocDepth == 0 + || (namespaceIndent && isInNamespace))) + { + size_t firstText = line.find_first_not_of(" \t"); + if (firstText == string::npos || line[firstText] != '#') + indentLine(line, 1); + } + + if (shouldUnindentComment && sw.unindentDepth > 0) + unindentLine(line, sw.unindentDepth - 1); + else if (shouldUnindentLine && sw.unindentDepth > 0) + unindentLine(line, sw.unindentDepth); +} + +/** + * convert a force-tab indent to spaces + * + * @param line a reference to the line that will be converted. + */ +void ASEnhancer::convertForceTabIndentToSpaces(string& line) const +{ + // replace tab indents with spaces + for (size_t i = 0; i < line.length(); i++) + { + if (!isWhiteSpace(line[i])) + break; + if (line[i] == '\t') + { + line.erase(i, 1); + line.insert(i, tabLength, ' '); + i += tabLength - 1; + } + } +} + +/** + * convert a space indent to force-tab + * + * @param line a reference to the line that will be converted. + */ +void ASEnhancer::convertSpaceIndentToForceTab(string& line) const +{ + assert(tabLength > 0); + + // replace leading spaces with tab indents + size_t newSpaceIndentLength = line.find_first_not_of(" \t"); + size_t tabCount = newSpaceIndentLength / tabLength; // truncate extra spaces + line.replace(0U, tabCount * tabLength, tabCount, '\t'); +} + +/** + * find the colon following a 'case' statement + * + * @param line a reference to the line. + * @param caseIndex the line index of the case statement. + * @return the line index of the colon. + */ +size_t ASEnhancer::findCaseColon(const string& line, size_t caseIndex) const +{ + size_t i = caseIndex; + bool isInQuote_ = false; + char quoteChar_ = ' '; + for (; i < line.length(); i++) + { + if (isInQuote_) + { + if (line[i] == '\\') + { + i++; + continue; + } + else if (line[i] == quoteChar_) // check ending quote + { + isInQuote_ = false; + quoteChar_ = ' '; + continue; + } + else + { + continue; // must close quote before continuing + } + } + if (line[i] == '"' // check opening quote + || (line[i] == '\'' && !isDigitSeparator(line, i))) + { + isInQuote_ = true; + quoteChar_ = line[i]; + continue; + } + if (line[i] == ':') + { + if ((i + 1 < line.length()) && (line[i + 1] == ':')) + i++; // bypass scope resolution operator + else + break; // found it + } + } + return i; +} + +/** +* indent a line by a given number of tabsets + * by inserting leading whitespace to the line argument. + * + * @param line a reference to the line to indent. + * @param indent the number of tabsets to insert. + * @return the number of characters inserted. + */ +int ASEnhancer::indentLine(string& line, int indent) const +{ + if (line.length() == 0 + && !emptyLineFill) + return 0; + + size_t charsToInsert = 0; + + if (forceTab && indentLength != tabLength) + { + // replace tab indents with spaces + convertForceTabIndentToSpaces(line); + // insert the space indents + charsToInsert = indent * indentLength; + line.insert(line.begin(), charsToInsert, ' '); + // replace leading spaces with tab indents + convertSpaceIndentToForceTab(line); + } + else if (useTabs) + { + charsToInsert = indent; + line.insert(line.begin(), charsToInsert, '\t'); + } + else // spaces + { + charsToInsert = indent * indentLength; + line.insert(line.begin(), charsToInsert, ' '); + } + + return charsToInsert; +} + +/** + * check for SQL "BEGIN DECLARE SECTION". + * must compare case insensitive and allow any spacing between words. + * + * @param line a reference to the line to indent. + * @param index the current line index. + * @return true if a hit. + */ +bool ASEnhancer::isBeginDeclareSectionSQL(const string& line, size_t index) const +{ + string word; + size_t hits = 0; + size_t i; + for (i = index; i < line.length(); i++) + { + i = line.find_first_not_of(" \t", i); + if (i == string::npos) + return false; + if (line[i] == ';') + break; + if (!isCharPotentialHeader(line, i)) + continue; + word = getCurrentWord(line, i); + for (size_t j = 0; j < word.length(); j++) + word[j] = (char) toupper(word[j]); + if (word == "EXEC" || word == "SQL") + { + i += word.length() - 1; + continue; + } + if (word == "DECLARE" || word == "SECTION") + { + hits++; + i += word.length() - 1; + continue; + } + if (word == "BEGIN") + { + hits++; + i += word.length() - 1; + continue; + } + return false; + } + if (hits == 3) + return true; + return false; +} + +/** + * check for SQL "END DECLARE SECTION". + * must compare case insensitive and allow any spacing between words. + * + * @param line a reference to the line to indent. + * @param index the current line index. + * @return true if a hit. + */ +bool ASEnhancer::isEndDeclareSectionSQL(const string& line, size_t index) const +{ + string word; + size_t hits = 0; + size_t i; + for (i = index; i < line.length(); i++) + { + i = line.find_first_not_of(" \t", i); + if (i == string::npos) + return false; + if (line[i] == ';') + break; + if (!isCharPotentialHeader(line, i)) + continue; + word = getCurrentWord(line, i); + for (size_t j = 0; j < word.length(); j++) + word[j] = (char) toupper(word[j]); + if (word == "EXEC" || word == "SQL") + { + i += word.length() - 1; + continue; + } + if (word == "DECLARE" || word == "SECTION") + { + hits++; + i += word.length() - 1; + continue; + } + if (word == "END") + { + hits++; + i += word.length() - 1; + continue; + } + return false; + } + if (hits == 3) + return true; + return false; +} + +/** + * check if a one-line brace has been reached, + * i.e. if the currently reached '{' character is closed + * with a complimentary '}' elsewhere on the current line, + *. + * @return false = one-line brace has not been reached. + * true = one-line brace has been reached. + */ +bool ASEnhancer::isOneLineBlockReached(const string& line, int startChar) const +{ + assert(line[startChar] == '{'); + + bool isInComment_ = false; + bool isInQuote_ = false; + int _braceCount = 1; + int lineLength = line.length(); + char quoteChar_ = ' '; + char ch = ' '; + + for (int i = startChar + 1; i < lineLength; ++i) + { + ch = line[i]; + + if (isInComment_) + { + if (line.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + + if (ch == '\\') + { + ++i; + continue; + } + + if (isInQuote_) + { + if (ch == quoteChar_) + isInQuote_ = false; + continue; + } + + if (ch == '"' + || (ch == '\'' && !isDigitSeparator(line, i))) + { + isInQuote_ = true; + quoteChar_ = ch; + continue; + } + + if (line.compare(i, 2, "//") == 0) + break; + + if (line.compare(i, 2, "/*") == 0) + { + isInComment_ = true; + ++i; + continue; + } + + if (ch == '{') + ++_braceCount; + else if (ch == '}') + --_braceCount; + + if (_braceCount == 0) + return true; + } + + return false; +} + +/** + * parse characters in the current line to determine if an indent + * or unindent is needed. + */ +void ASEnhancer::parseCurrentLine(string& line, bool isInPreprocessor, bool isInSQL) +{ + bool isSpecialChar = false; // is a backslash escape character + + for (size_t i = 0; i < line.length(); i++) + { + char ch = line[i]; + + // bypass whitespace + if (isWhiteSpace(ch)) + continue; + + // handle special characters (i.e. backslash+character such as \n, \t, ...) + if (isSpecialChar) + { + isSpecialChar = false; + continue; + } + if (!(isInComment) && line.compare(i, 2, "\\\\") == 0) + { + i++; + continue; + } + if (!(isInComment) && ch == '\\') + { + isSpecialChar = true; + continue; + } + + // handle quotes (such as 'x' and "Hello Dolly") + if (!isInComment + && (ch == '"' + || (ch == '\'' && !isDigitSeparator(line, i)))) + { + if (!isInQuote) + { + quoteChar = ch; + isInQuote = true; + } + else if (quoteChar == ch) + { + isInQuote = false; + continue; + } + } + + if (isInQuote) + continue; + + // handle comments + + if (!(isInComment) && line.compare(i, 2, "//") == 0) + { + // check for windows line markers + if (line.compare(i + 2, 1, "\xf0") > 0) + lineNumber--; + // unindent if not in case braces + if (line.find_first_not_of(" \t") == i + && sw.switchBraceCount == 1 + && sw.unindentCase) + shouldUnindentComment = true; + break; // finished with the line + } + else if (!(isInComment) && line.compare(i, 2, "/*") == 0) + { + // unindent if not in case braces + if (sw.switchBraceCount == 1 && sw.unindentCase) + shouldUnindentComment = true; + isInComment = true; + size_t commentEnd = line.find("*/", i); + if (commentEnd == string::npos) + i = line.length() - 1; + else + i = commentEnd - 1; + continue; + } + else if ((isInComment) && line.compare(i, 2, "*/") == 0) + { + // unindent if not in case braces + if (sw.switchBraceCount == 1 && sw.unindentCase) + shouldUnindentComment = true; + isInComment = false; + i++; + continue; + } + + if (isInComment) + { + // unindent if not in case braces + if (sw.switchBraceCount == 1 && sw.unindentCase) + shouldUnindentComment = true; + size_t commentEnd = line.find("*/", i); + if (commentEnd == string::npos) + i = line.length() - 1; + else + i = commentEnd - 1; + continue; + } + + // if we have reached this far then we are NOT in a comment or string of special characters + + if (line[i] == '{') + braceCount++; + + if (line[i] == '}') + braceCount--; + + // check for preprocessor within an event table + if (isInEventTable && line[i] == '#' && preprocBlockIndent) + { + string preproc; + preproc = line.substr(i + 1); + if (preproc.substr(0, 2) == "if") // #if, #ifdef, #ifndef) + eventPreprocDepth += 1; + if (preproc.substr(0, 5) == "endif" && eventPreprocDepth > 0) + eventPreprocDepth -= 1; + } + + bool isPotentialKeyword = isCharPotentialHeader(line, i); + + // ---------------- wxWidgets and MFC macros ---------------------------------- + + if (isPotentialKeyword) + { + for (size_t j = 0; j < indentableMacros->size(); j++) + { + // 'first' is the beginning macro + if (findKeyword(line, i, indentableMacros->at(j)->first)) + { + nextLineIsEventIndent = true; + break; + } + } + for (size_t j = 0; j < indentableMacros->size(); j++) + { + // 'second' is the ending macro + if (findKeyword(line, i, indentableMacros->at(j)->second)) + { + isInEventTable = false; + eventPreprocDepth = 0; + break; + } + } + } + + // ---------------- process SQL ----------------------------------------------- + + if (isInSQL) + { + if (isBeginDeclareSectionSQL(line, i)) + nextLineIsDeclareIndent = true; + if (isEndDeclareSectionSQL(line, i)) + isInDeclareSection = false; + break; + } + + // ---------------- process switch statements --------------------------------- + + if (isPotentialKeyword && findKeyword(line, i, ASResource::AS_SWITCH)) + { + switchDepth++; + switchStack.emplace_back(sw); // save current variables + sw.switchBraceCount = 0; + sw.unindentCase = false; // don't clear case until end of switch + i += 5; // bypass switch statement + continue; + } + + // just want unindented case statements from this point + + if (caseIndent + || switchDepth == 0 + || (isInPreprocessor && !preprocDefineIndent)) + { + // bypass the entire word + if (isPotentialKeyword) + { + string name = getCurrentWord(line, i); + i += name.length() - 1; + } + continue; + } + + i = processSwitchBlock(line, i); + + } // end of for loop * end of for loop * end of for loop * end of for loop +} + +/** + * process the character at the current index in a switch block. + * + * @param line a reference to the line to indent. + * @param index the current line index. + * @return the new line index. + */ +size_t ASEnhancer::processSwitchBlock(string& line, size_t index) +{ + size_t i = index; + bool isPotentialKeyword = isCharPotentialHeader(line, i); + + if (line[i] == '{') + { + sw.switchBraceCount++; + if (lookingForCaseBrace) // if 1st after case statement + { + sw.unindentCase = true; // unindenting this case + sw.unindentDepth++; + lookingForCaseBrace = false; // not looking now + } + return i; + } + lookingForCaseBrace = false; // no opening brace, don't indent + + if (line[i] == '}') + { + sw.switchBraceCount--; + if (sw.switchBraceCount == 0) // if end of switch statement + { + int lineUnindent = sw.unindentDepth; + if (line.find_first_not_of(" \t") == i + && !switchStack.empty()) + lineUnindent = switchStack[switchStack.size() - 1].unindentDepth; + if (shouldUnindentLine) + { + if (lineUnindent > 0) + i -= unindentLine(line, lineUnindent); + shouldUnindentLine = false; + } + switchDepth--; + sw = switchStack.back(); + switchStack.pop_back(); + } + return i; + } + + if (isPotentialKeyword + && (findKeyword(line, i, ASResource::AS_CASE) + || findKeyword(line, i, ASResource::AS_DEFAULT))) + { + if (sw.unindentCase) // if unindented last case + { + sw.unindentCase = false; // stop unindenting previous case + sw.unindentDepth--; + } + + i = findCaseColon(line, i); + + i++; + for (; i < line.length(); i++) // bypass whitespace + { + if (!isWhiteSpace(line[i])) + break; + } + if (i < line.length()) + { + if (line[i] == '{') + { + braceCount++; + sw.switchBraceCount++; + if (!isOneLineBlockReached(line, i)) + unindentNextLine = true; + return i; + } + } + lookingForCaseBrace = true; + i--; // need to process this char + return i; + } + if (isPotentialKeyword) + { + string name = getCurrentWord(line, i); // bypass the entire name + i += name.length() - 1; + } + return i; +} + +/** + * unindent a line by a given number of tabsets + * by erasing the leading whitespace from the line argument. + * + * @param line a reference to the line to unindent. + * @param unindent the number of tabsets to erase. + * @return the number of characters erased. + */ +int ASEnhancer::unindentLine(string& line, int unindent) const +{ + size_t whitespace = line.find_first_not_of(" \t"); + + if (whitespace == string::npos) // if line is blank + whitespace = line.length(); // must remove padding, if any + + if (whitespace == 0) + return 0; + + size_t charsToErase = 0; + + if (forceTab && indentLength != tabLength) + { + // replace tab indents with spaces + convertForceTabIndentToSpaces(line); + // remove the space indents + size_t spaceIndentLength = line.find_first_not_of(" \t"); + charsToErase = unindent * indentLength; + if (charsToErase <= spaceIndentLength) + line.erase(0, charsToErase); + else + charsToErase = 0; + // replace leading spaces with tab indents + convertSpaceIndentToForceTab(line); + } + else if (useTabs) + { + charsToErase = unindent; + if (charsToErase <= whitespace) + line.erase(0, charsToErase); + else + charsToErase = 0; + } + else // spaces + { + charsToErase = unindent * indentLength; + if (charsToErase <= whitespace) + line.erase(0, charsToErase); + else + charsToErase = 0; + } + + return charsToErase; +} + +} // end namespace astyle diff -Nru geos-3.7.1/tools/astyle/ASFormatter.cpp geos-3.8.0/tools/astyle/ASFormatter.cpp --- geos-3.7.1/tools/astyle/ASFormatter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASFormatter.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,8245 @@ +// ASFormatter.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#include "astyle.h" + +#include +#include + +//----------------------------------------------------------------------------- +// astyle namespace +//----------------------------------------------------------------------------- + +namespace astyle { +// +//----------------------------------------------------------------------------- +// ASFormatter class +//----------------------------------------------------------------------------- + +/** + * Constructor of ASFormatter + */ +ASFormatter::ASFormatter() +{ + sourceIterator = nullptr; + enhancer = new ASEnhancer; + preBraceHeaderStack = nullptr; + braceTypeStack = nullptr; + parenStack = nullptr; + structStack = nullptr; + questionMarkStack = nullptr; + lineCommentNoIndent = false; + formattingStyle = STYLE_NONE; + braceFormatMode = NONE_MODE; + pointerAlignment = PTR_ALIGN_NONE; + referenceAlignment = REF_SAME_AS_PTR; + objCColonPadMode = COLON_PAD_NO_CHANGE; + lineEnd = LINEEND_DEFAULT; + maxCodeLength = string::npos; + shouldPadCommas = false; + shouldPadOperators = false; + shouldPadParensOutside = false; + shouldPadFirstParen = false; + shouldPadParensInside = false; + shouldPadHeader = false; + shouldStripCommentPrefix = false; + shouldUnPadParens = false; + attachClosingBraceMode = false; + shouldBreakOneLineBlocks = true; + shouldBreakOneLineHeaders = false; + shouldBreakOneLineStatements = true; + shouldConvertTabs = false; + shouldIndentCol1Comments = false; + shouldIndentPreprocBlock = false; + shouldCloseTemplates = false; + shouldAttachExternC = false; + shouldAttachNamespace = false; + shouldAttachClass = false; + shouldAttachClosingWhile = false; + shouldAttachInline = false; + shouldBreakBlocks = false; + shouldBreakClosingHeaderBlocks = false; + shouldBreakClosingHeaderBraces = false; + shouldDeleteEmptyLines = false; + shouldBreakReturnType = false; + shouldBreakReturnTypeDecl = false; + shouldAttachReturnType = false; + shouldAttachReturnTypeDecl = false; + shouldBreakElseIfs = false; + shouldBreakLineAfterLogical = false; + shouldAddBraces = false; + shouldAddOneLineBraces = false; + shouldRemoveBraces = false; + shouldPadMethodColon = false; + shouldPadMethodPrefix = false; + shouldUnPadMethodPrefix = false; + shouldPadReturnType = false; + shouldUnPadReturnType = false; + shouldPadParamType = false; + shouldUnPadParamType = false; + + // initialize ASFormatter member vectors + formatterFileType = 9; // reset to an invalid type + headers = new vector; + nonParenHeaders = new vector; + preDefinitionHeaders = new vector; + preCommandHeaders = new vector; + operators = new vector; + assignmentOperators = new vector; + castOperators = new vector; + + // initialize ASEnhancer member vectors + indentableMacros = new vector* >; +} + +/** + * Destructor of ASFormatter + */ +ASFormatter::~ASFormatter() +{ + // delete ASFormatter stack vectors + deleteContainer(preBraceHeaderStack); + deleteContainer(braceTypeStack); + deleteContainer(parenStack); + deleteContainer(structStack); + deleteContainer(questionMarkStack); + + // delete ASFormatter member vectors + formatterFileType = 9; // reset to an invalid type + delete headers; + delete nonParenHeaders; + delete preDefinitionHeaders; + delete preCommandHeaders; + delete operators; + delete assignmentOperators; + delete castOperators; + + // delete ASEnhancer member vectors + delete indentableMacros; + + // must be done when the ASFormatter object is deleted (not ASBeautifier) + // delete ASBeautifier member vectors + ASBeautifier::deleteBeautifierVectors(); + + delete enhancer; +} + +/** + * initialize the ASFormatter. + * + * init() should be called every time a ASFormatter object is to start + * formatting a NEW source file. + * init() receives a pointer to a ASSourceIterator object that will be + * used to iterate through the source code. + * + * @param si a pointer to the ASSourceIterator or ASStreamIterator object. + */ +void ASFormatter::init(ASSourceIterator* si) +{ + buildLanguageVectors(); + fixOptionVariableConflicts(); + ASBeautifier::init(si); + sourceIterator = si; + + enhancer->init(getFileType(), + getIndentLength(), + getTabLength(), + getIndentString() == "\t", + getForceTabIndentation(), + getNamespaceIndent(), + getCaseIndent(), + shouldIndentPreprocBlock, + getPreprocDefineIndent(), + getEmptyLineFill(), + indentableMacros); + + initContainer(preBraceHeaderStack, new vector); + initContainer(parenStack, new vector); + initContainer(structStack, new vector); + initContainer(questionMarkStack, new vector); + parenStack->emplace_back(0); // parenStack must contain this default entry + initContainer(braceTypeStack, new vector); + braceTypeStack->emplace_back(NULL_TYPE); // braceTypeStack must contain this default entry + clearFormattedLineSplitPoints(); + + currentHeader = nullptr; + currentLine = ""; + readyFormattedLine = ""; + formattedLine = ""; + verbatimDelimiter = ""; + currentChar = ' '; + previousChar = ' '; + previousCommandChar = ' '; + previousNonWSChar = ','; // not a potential name or operator + quoteChar = '"'; + preprocBlockEnd = 0; + charNum = 0; + checksumIn = 0; + checksumOut = 0; + currentLineFirstBraceNum = string::npos; + formattedLineCommentNum = 0; + leadingSpaces = 0; + previousReadyFormattedLineLength = string::npos; + preprocBraceTypeStackSize = 0; + spacePadNum = 0; + methodAttachCharNum = string::npos; + methodAttachLineNum = 0; + methodBreakCharNum = string::npos; + methodBreakLineNum = 0; + nextLineSpacePadNum = 0; + objCColonAlign = 0; + templateDepth = 0; + squareBracketCount = 0; + runInIndentChars = 0; + tabIncrementIn = 0; + previousBraceType = NULL_TYPE; + + isVirgin = true; + isInVirginLine = true; + isInLineComment = false; + isInComment = false; + isInCommentStartLine = false; + noTrimCommentContinuation = false; + isInPreprocessor = false; + isInPreprocessorBeautify = false; + doesLineStartComment = false; + lineEndsInCommentOnly = false; + lineIsCommentOnly = false; + lineIsLineCommentOnly = false; + lineIsEmpty = false; + isImmediatelyPostCommentOnly = false; + isImmediatelyPostEmptyLine = false; + isInClassInitializer = false; + isInQuote = false; + isInVerbatimQuote = false; + haveLineContinuationChar = false; + isInQuoteContinuation = false; + isHeaderInMultiStatementLine = false; + isSpecialChar = false; + isNonParenHeader = false; + foundNamespaceHeader = false; + foundClassHeader = false; + foundStructHeader = false; + foundInterfaceHeader = false; + foundPreDefinitionHeader = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + foundTrailingReturnType = false; + foundCastOperator = false; + foundQuestionMark = false; + isInLineBreak = false; + endOfAsmReached = false; + endOfCodeReached = false; + isFormattingModeOff = false; + isInEnum = false; + isInExecSQL = false; + isInAsm = false; + isInAsmOneLine = false; + isInAsmBlock = false; + isLineReady = false; + elseHeaderFollowsComments = false; + caseHeaderFollowsComments = false; + isPreviousBraceBlockRelated = false; + isInPotentialCalculation = false; + needHeaderOpeningBrace = false; + shouldBreakLineAtNextChar = false; + shouldKeepLineUnbroken = false; + shouldReparseCurrentChar = false; + passedSemicolon = false; + passedColon = false; + isImmediatelyPostNonInStmt = false; + isCharImmediatelyPostNonInStmt = false; + isInTemplate = false; + isImmediatelyPostComment = false; + isImmediatelyPostLineComment = false; + isImmediatelyPostEmptyBlock = false; + isImmediatelyPostObjCMethodPrefix = false; + isImmediatelyPostPreprocessor = false; + isImmediatelyPostReturn = false; + isImmediatelyPostThrow = false; + isImmediatelyPostNewDelete = false; + isImmediatelyPostOperator = false; + isImmediatelyPostTemplate = false; + isImmediatelyPostPointerOrReference = false; + isCharImmediatelyPostReturn = false; + isCharImmediatelyPostThrow = false; + isCharImmediatelyPostNewDelete = false; + isCharImmediatelyPostOperator = false; + isCharImmediatelyPostComment = false; + isPreviousCharPostComment = false; + isCharImmediatelyPostLineComment = false; + isCharImmediatelyPostOpenBlock = false; + isCharImmediatelyPostCloseBlock = false; + isCharImmediatelyPostTemplate = false; + isCharImmediatelyPostPointerOrReference = false; + isInObjCInterface = false; + isInObjCMethodDefinition = false; + isInObjCReturnType = false; + isInObjCParam = false; + isInObjCSelector = false; + breakCurrentOneLineBlock = false; + shouldRemoveNextClosingBrace = false; + isInBraceRunIn = false; + returnTypeChecked = false; + currentLineBeginsWithBrace = false; + isPrependPostBlockEmptyLineRequested = false; + isAppendPostBlockEmptyLineRequested = false; + isIndentableProprocessor = false; + isIndentableProprocessorBlock = false; + prependEmptyLine = false; + appendOpeningBrace = false; + foundClosingHeader = false; + isImmediatelyPostHeader = false; + isInHeader = false; + isInCase = false; + isFirstPreprocConditional = false; + processedFirstConditional = false; + isJavaStaticConstructor = false; +} + +/** + * build vectors for each programing language + * depending on the file extension. + */ +void ASFormatter::buildLanguageVectors() +{ + if (getFileType() == formatterFileType) // don't build unless necessary + return; + + formatterFileType = getFileType(); + + headers->clear(); + nonParenHeaders->clear(); + preDefinitionHeaders->clear(); + preCommandHeaders->clear(); + operators->clear(); + assignmentOperators->clear(); + castOperators->clear(); + indentableMacros->clear(); // ASEnhancer + + ASResource::buildHeaders(headers, getFileType()); + ASResource::buildNonParenHeaders(nonParenHeaders, getFileType()); + ASResource::buildPreDefinitionHeaders(preDefinitionHeaders, getFileType()); + ASResource::buildPreCommandHeaders(preCommandHeaders, getFileType()); + ASResource::buildOperators(operators, getFileType()); + ASResource::buildAssignmentOperators(assignmentOperators); + ASResource::buildCastOperators(castOperators); + ASResource::buildIndentableMacros(indentableMacros); //ASEnhancer +} + +/** + * set the variables for each predefined style. + * this will override any previous settings. + */ +void ASFormatter::fixOptionVariableConflicts() +{ + if (formattingStyle == STYLE_ALLMAN) + { + setBraceFormatMode(BREAK_MODE); + } + else if (formattingStyle == STYLE_JAVA) + { + setBraceFormatMode(ATTACH_MODE); + } + else if (formattingStyle == STYLE_KR) + { + setBraceFormatMode(LINUX_MODE); + } + else if (formattingStyle == STYLE_STROUSTRUP) + { + setBraceFormatMode(LINUX_MODE); + setBreakClosingHeaderBracesMode(true); + } + else if (formattingStyle == STYLE_WHITESMITH) + { + setBraceFormatMode(BREAK_MODE); + setBraceIndent(true); + setClassIndent(true); // avoid hanging indent with access modifiers + setSwitchIndent(true); // avoid hanging indent with case statements + } + else if (formattingStyle == STYLE_VTK) + { + // the unindented class brace does NOT cause a hanging indent like Whitesmith + setBraceFormatMode(BREAK_MODE); + setBraceIndentVtk(true); // sets both braceIndent and braceIndentVtk + setSwitchIndent(true); // avoid hanging indent with case statements + } + else if (formattingStyle == STYLE_RATLIFF) + { + // attached braces can have hanging indents with the closing brace + setBraceFormatMode(ATTACH_MODE); + setBraceIndent(true); + setClassIndent(true); // avoid hanging indent with access modifiers + setSwitchIndent(true); // avoid hanging indent with case statements + } + else if (formattingStyle == STYLE_GNU) + { + setBraceFormatMode(BREAK_MODE); + setBlockIndent(true); + } + else if (formattingStyle == STYLE_LINUX) + { + setBraceFormatMode(LINUX_MODE); + // always for Linux style + setMinConditionalIndentOption(MINCOND_ONEHALF); + } + else if (formattingStyle == STYLE_HORSTMANN) + { + setBraceFormatMode(RUN_IN_MODE); + setSwitchIndent(true); + } + else if (formattingStyle == STYLE_1TBS) + { + setBraceFormatMode(LINUX_MODE); + setAddBracesMode(true); + setRemoveBracesMode(false); + } + else if (formattingStyle == STYLE_GOOGLE) + { + setBraceFormatMode(ATTACH_MODE); + setModifierIndent(true); + setClassIndent(false); + } + else if (formattingStyle == STYLE_MOZILLA) + { + setBraceFormatMode(LINUX_MODE); + } + else if (formattingStyle == STYLE_PICO) + { + setBraceFormatMode(RUN_IN_MODE); + setAttachClosingBraceMode(true); + setSwitchIndent(true); + setBreakOneLineBlocksMode(false); + setBreakOneLineStatementsMode(false); + // add-braces won't work for pico, but it could be fixed if necessary + // both options should be set to true + if (shouldAddBraces) + shouldAddOneLineBraces = true; + } + else if (formattingStyle == STYLE_LISP) + { + setBraceFormatMode(ATTACH_MODE); + setAttachClosingBraceMode(true); + setBreakOneLineStatementsMode(false); + // add-one-line-braces won't work for lisp + // only shouldAddBraces should be set to true + if (shouldAddOneLineBraces) + { + shouldAddBraces = true; + shouldAddOneLineBraces = false; + } + } + setMinConditionalIndentLength(); + // if not set by indent=force-tab-x set equal to indentLength + if (getTabLength() == 0) + setDefaultTabLength(); + // add-one-line-braces implies keep-one-line-blocks + if (shouldAddOneLineBraces) + setBreakOneLineBlocksMode(false); + // don't allow add-braces and remove-braces + if (shouldAddBraces || shouldAddOneLineBraces) + setRemoveBracesMode(false); + // don't allow break-return-type and attach-return-type + if (shouldBreakReturnType) + shouldAttachReturnType = false; + if (shouldBreakReturnTypeDecl) + shouldAttachReturnTypeDecl = false; + // don't allow indent-classes and indent-modifiers + if (getClassIndent()) + setModifierIndent(false); +} + +/** + * get the next formatted line. + * + * @return formatted line. + */ +string ASFormatter::nextLine() +{ + const string* newHeader = nullptr; + isInVirginLine = isVirgin; + isCharImmediatelyPostComment = false; + isPreviousCharPostComment = false; + isCharImmediatelyPostLineComment = false; + isCharImmediatelyPostOpenBlock = false; + isCharImmediatelyPostCloseBlock = false; + isCharImmediatelyPostTemplate = false; + + while (!isLineReady) + { + if (shouldReparseCurrentChar) + shouldReparseCurrentChar = false; + else if (!getNextChar()) + { + breakLine(); + continue; + } + else // stuff to do when reading a new character... + { + // make sure that a virgin '{' at the beginning of the file will be treated as a block... + if (isInVirginLine && currentChar == '{' + && currentLineBeginsWithBrace + && previousCommandChar == ' ') + previousCommandChar = '{'; + if (isInClassInitializer + && isBraceType(braceTypeStack->back(), COMMAND_TYPE)) + isInClassInitializer = false; + if (isInBraceRunIn) + isInLineBreak = false; + if (!isWhiteSpace(currentChar)) + isInBraceRunIn = false; + isPreviousCharPostComment = isCharImmediatelyPostComment; + isCharImmediatelyPostComment = false; + isCharImmediatelyPostTemplate = false; + isCharImmediatelyPostReturn = false; + isCharImmediatelyPostThrow = false; + isCharImmediatelyPostNewDelete = false; + isCharImmediatelyPostOperator = false; + isCharImmediatelyPostPointerOrReference = false; + isCharImmediatelyPostOpenBlock = false; + isCharImmediatelyPostCloseBlock = false; + } + + if ((lineIsLineCommentOnly || lineIsCommentOnly) + && currentLine.find("*INDENT-ON*", charNum) != string::npos + && isFormattingModeOff) + { + isFormattingModeOff = false; + breakLine(); + formattedLine = currentLine; + charNum = (int) currentLine.length() - 1; + continue; + } + if (isFormattingModeOff) + { + breakLine(); + formattedLine = currentLine; + charNum = (int) currentLine.length() - 1; + continue; + } + if ((lineIsLineCommentOnly || lineIsCommentOnly) + && currentLine.find("*INDENT-OFF*", charNum) != string::npos) + { + isFormattingModeOff = true; + if (isInLineBreak) // is true if not the first line + breakLine(); + formattedLine = currentLine; + charNum = (int) currentLine.length() - 1; + continue; + } + + if (shouldBreakLineAtNextChar) + { + if (isWhiteSpace(currentChar) && !lineIsEmpty) + continue; + isInLineBreak = true; + shouldBreakLineAtNextChar = false; + } + + if (isInExecSQL && !passedSemicolon) + { + if (currentChar == ';') + passedSemicolon = true; + appendCurrentChar(); + continue; + } + + if (isInLineComment) + { + formatLineCommentBody(); + continue; + } + else if (isInComment) + { + formatCommentBody(); + continue; + } + + else if (isInQuote) + { + formatQuoteBody(); + continue; + } + + // not in quote or comment or line comment + + if (isSequenceReached("//")) + { + formatLineCommentOpener(); + testForTimeToSplitFormattedLine(); + continue; + } + else if (isSequenceReached("/*")) + { + formatCommentOpener(); + testForTimeToSplitFormattedLine(); + continue; + } + else if (currentChar == '"' + || (currentChar == '\'' && !isDigitSeparator(currentLine, charNum))) + { + formatQuoteOpener(); + testForTimeToSplitFormattedLine(); + continue; + } + // treat these preprocessor statements as a line comment + else if (currentChar == '#' + && currentLine.find_first_not_of(" \t") == (size_t) charNum) + { + string preproc = trim(currentLine.c_str() + charNum + 1); + if (preproc.length() > 0 + && isCharPotentialHeader(preproc, 0) + && (findKeyword(preproc, 0, "region") + || findKeyword(preproc, 0, "endregion") + || findKeyword(preproc, 0, "error") + || findKeyword(preproc, 0, "warning") + || findKeyword(preproc, 0, "line"))) + { + currentLine = rtrim(currentLine); // trim the end only + // check for run-in + if (formattedLine.length() > 0 && formattedLine[0] == '{') + { + isInLineBreak = true; + isInBraceRunIn = false; + } + if (previousCommandChar == '}') + currentHeader = nullptr; + isInLineComment = true; + appendCurrentChar(); + continue; + } + } + + if (isInPreprocessor) + { + appendCurrentChar(); + continue; + } + + if (isInTemplate && shouldCloseTemplates) + { + if (previousNonWSChar == '>' && isWhiteSpace(currentChar) && peekNextChar() == '>') + continue; + } + + if (shouldRemoveNextClosingBrace && currentChar == '}') + { + currentLine[charNum] = currentChar = ' '; + shouldRemoveNextClosingBrace = false; + assert(adjustChecksumIn(-'}')); + if (isEmptyLine(currentLine)) + continue; + } + + // handle white space - needed to simplify the rest. + if (isWhiteSpace(currentChar)) + { + appendCurrentChar(); + continue; + } + + /* not in MIDDLE of quote or comment or SQL or white-space of any type ... */ + + // check if in preprocessor + // ** isInPreprocessor will be automatically reset at the beginning + // of a new line in getnextChar() + if (currentChar == '#' + && currentLine.find_first_not_of(" \t") == (size_t) charNum + && !isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE)) + { + isInPreprocessor = true; + // check for run-in + if (formattedLine.length() > 0 && formattedLine[0] == '{') + { + isInLineBreak = true; + isInBraceRunIn = false; + } + processPreprocessor(); + // if top level it is potentially indentable + if (shouldIndentPreprocBlock + && (isBraceType(braceTypeStack->back(), NULL_TYPE) + || isBraceType(braceTypeStack->back(), NAMESPACE_TYPE)) + && !foundClassHeader + && !isInClassInitializer + && sourceIterator->tellg() > preprocBlockEnd) + { + // indent the #if preprocessor blocks + string preproc = ASBeautifier::extractPreprocessorStatement(currentLine); + if (preproc.length() >= 2 && preproc.substr(0, 2) == "if") // #if, #ifdef, #ifndef + { + if (isImmediatelyPostPreprocessor) + breakLine(); + isIndentableProprocessorBlock = isIndentablePreprocessorBlock(currentLine, charNum); + isIndentableProprocessor = isIndentableProprocessorBlock; + } + } + if (isIndentableProprocessorBlock + && charNum < (int) currentLine.length() - 1 + && isWhiteSpace(currentLine[charNum + 1])) + { + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextText != string::npos) + currentLine.erase(charNum + 1, nextText - charNum - 1); + } + if (isIndentableProprocessorBlock + && sourceIterator->tellg() >= preprocBlockEnd) + isIndentableProprocessorBlock = false; + // need to fall thru here to reset the variables + } + + /* not in preprocessor ... */ + + if (isImmediatelyPostComment) + { + caseHeaderFollowsComments = false; + isImmediatelyPostComment = false; + isCharImmediatelyPostComment = true; + } + + if (isImmediatelyPostLineComment) + { + caseHeaderFollowsComments = false; + isImmediatelyPostLineComment = false; + isCharImmediatelyPostLineComment = true; + } + + if (isImmediatelyPostReturn) + { + isImmediatelyPostReturn = false; + isCharImmediatelyPostReturn = true; + } + + if (isImmediatelyPostThrow) + { + isImmediatelyPostThrow = false; + isCharImmediatelyPostThrow = true; + } + + if (isImmediatelyPostNewDelete) + { + isImmediatelyPostNewDelete = false; + isCharImmediatelyPostNewDelete = true; + } + + if (isImmediatelyPostOperator) + { + isImmediatelyPostOperator = false; + isCharImmediatelyPostOperator = true; + } + if (isImmediatelyPostTemplate) + { + isImmediatelyPostTemplate = false; + isCharImmediatelyPostTemplate = true; + } + if (isImmediatelyPostPointerOrReference) + { + isImmediatelyPostPointerOrReference = false; + isCharImmediatelyPostPointerOrReference = true; + } + + // reset isImmediatelyPostHeader information + if (isImmediatelyPostHeader) + { + // should braces be added + if (currentChar != '{' + && shouldAddBraces + && currentChar != '#' // don't add to preprocessor + && (shouldBreakOneLineStatements || !isHeaderInMultiStatementLine) + && isOkToBreakBlock(braceTypeStack->back())) + { + bool bracesAdded = addBracesToStatement(); + if (bracesAdded && !shouldAddOneLineBraces) + { + size_t firstText = currentLine.find_first_not_of(" \t"); + assert(firstText != string::npos); + if ((int) firstText == charNum || shouldBreakOneLineHeaders) + breakCurrentOneLineBlock = true; + } + } + // should braces be removed + else if (currentChar == '{' && shouldRemoveBraces) + { + bool bracesRemoved = removeBracesFromStatement(); + if (bracesRemoved) + { + shouldRemoveNextClosingBrace = true; + if (isBeforeAnyLineEndComment(charNum)) + spacePadNum--; + else if (shouldBreakOneLineBlocks + || (currentLineBeginsWithBrace + && currentLine.find_first_not_of(" \t") != string::npos)) + shouldBreakLineAtNextChar = true; + continue; + } + } + + // break 'else-if' if shouldBreakElseIfs is requested + if (shouldBreakElseIfs + && currentHeader == &AS_ELSE + && isOkToBreakBlock(braceTypeStack->back()) + && !isBeforeAnyComment() + && (shouldBreakOneLineStatements || !isHeaderInMultiStatementLine)) + { + string nextText = peekNextText(currentLine.substr(charNum)); + if (nextText.length() > 0 + && isCharPotentialHeader(nextText, 0) + && ASBase::findHeader(nextText, 0, headers) == &AS_IF) + { + isInLineBreak = true; + } + } + + // break a header (e.g. if, while, else) from the following statement + if (shouldBreakOneLineHeaders + && peekNextChar() != ' ' + && (shouldBreakOneLineStatements + || (!isHeaderInMultiStatementLine + && !isMultiStatementLine())) + && isOkToBreakBlock(braceTypeStack->back()) + && !isBeforeAnyComment()) + { + if (currentChar == '{') + { + if (!currentLineBeginsWithBrace) + { + if (isOneLineBlockReached(currentLine, charNum) == 3) + isInLineBreak = false; + else + breakCurrentOneLineBlock = true; + } + } + else if (currentHeader == &AS_ELSE) + { + string nextText = peekNextText(currentLine.substr(charNum), true); + if (nextText.length() > 0 + && ((isCharPotentialHeader(nextText, 0) + && ASBase::findHeader(nextText, 0, headers) != &AS_IF) + || nextText[0] == '{')) + isInLineBreak = true; + } + else + { + isInLineBreak = true; + } + } + + isImmediatelyPostHeader = false; + } + + if (passedSemicolon) // need to break the formattedLine + { + passedSemicolon = false; + if (parenStack->back() == 0 && !isCharImmediatelyPostComment && currentChar != ';') // allow ;; + { + // does a one-line block have ending comments? + if (isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE)) + { + size_t blockEnd = currentLine.rfind(AS_CLOSE_BRACE); + assert(blockEnd != string::npos); + // move ending comments to this formattedLine + if (isBeforeAnyLineEndComment(blockEnd)) + { + size_t commentStart = currentLine.find_first_not_of(" \t", blockEnd + 1); + assert(commentStart != string::npos); + assert((currentLine.compare(commentStart, 2, "//") == 0) + || (currentLine.compare(commentStart, 2, "/*") == 0)); + formattedLine.append(getIndentLength() - 1, ' '); + // append comment + int charNumSave = charNum; + charNum = commentStart; + while (charNum < (int) currentLine.length()) + { + currentChar = currentLine[charNum]; + if (currentChar == '\t' && shouldConvertTabs) + convertTabToSpaces(); + formattedLine.append(1, currentChar); + ++charNum; + } + size_t commentLength = currentLine.length() - commentStart; + currentLine.erase(commentStart, commentLength); + charNum = charNumSave; + currentChar = currentLine[charNum]; + testForTimeToSplitFormattedLine(); + } + } + isInExecSQL = false; + shouldReparseCurrentChar = true; + if (formattedLine.find_first_not_of(" \t") != string::npos) + isInLineBreak = true; + if (needHeaderOpeningBrace) + { + isCharImmediatelyPostCloseBlock = true; + needHeaderOpeningBrace = false; + } + continue; + } + } + + if (passedColon) + { + passedColon = false; + if (parenStack->back() == 0 + && !isBeforeAnyComment() + && (formattedLine.find_first_not_of(" \t") != string::npos)) + { + shouldReparseCurrentChar = true; + isInLineBreak = true; + continue; + } + } + + // Check if in template declaration, e.g. foo or foo + if (!isInTemplate && currentChar == '<') + { + checkIfTemplateOpener(); + } + + // Check for break return type + if ((size_t) charNum >= methodBreakCharNum && methodBreakLineNum == 0) + { + if ((size_t) charNum == methodBreakCharNum) + isInLineBreak = true; + methodBreakCharNum = string::npos; + methodBreakLineNum = 0; + } + // Check for attach return type + if ((size_t) charNum >= methodAttachCharNum && methodAttachLineNum == 0) + { + if ((size_t) charNum == methodAttachCharNum) + { + int pa = pointerAlignment; + int ra = referenceAlignment; + int itemAlignment = (previousNonWSChar == '*' || previousNonWSChar == '^') + ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra); + isInLineBreak = false; + if (previousNonWSChar == '*' || previousNonWSChar == '&' || previousNonWSChar == '^') + { + if (itemAlignment == REF_ALIGN_TYPE) + { + if (formattedLine.length() > 0 + && !isWhiteSpace(formattedLine[formattedLine.length() - 1])) + formattedLine.append(1, ' '); + } + else if (itemAlignment == REF_ALIGN_MIDDLE) + { + if (formattedLine.length() > 0 + && !isWhiteSpace(formattedLine[formattedLine.length() - 1])) + formattedLine.append(1, ' '); + } + else if (itemAlignment == REF_ALIGN_NAME) + { + if (formattedLine.length() > 0 + && isWhiteSpace(formattedLine[formattedLine.length() - 1])) + formattedLine.erase(formattedLine.length() - 1); + } + else + { + if (formattedLine.length() > 1 + && !isWhiteSpace(formattedLine[formattedLine.length() - 2])) + formattedLine.append(1, ' '); + } + } + else + formattedLine.append(1, ' '); + } + methodAttachCharNum = string::npos; + methodAttachLineNum = 0; + } + + // handle parens + if (currentChar == '(' || currentChar == '[' || (isInTemplate && currentChar == '<')) + { + questionMarkStack->push_back(foundQuestionMark); + foundQuestionMark = false; + parenStack->back()++; + if (currentChar == '[') + { + ++squareBracketCount; + if (getAlignMethodColon() && squareBracketCount == 1 && isCStyle()) + objCColonAlign = findObjCColonAlignment(); + } + } + else if (currentChar == ')' || currentChar == ']' || (isInTemplate && currentChar == '>')) + { + foundPreCommandHeader = false; + parenStack->back()--; + // this can happen in preprocessor directives + if (parenStack->back() < 0) + parenStack->back() = 0; + if (!questionMarkStack->empty()) + { + foundQuestionMark = questionMarkStack->back(); + questionMarkStack->pop_back(); + } + if (isInTemplate && currentChar == '>') + { + templateDepth--; + if (templateDepth == 0) + { + isInTemplate = false; + isImmediatelyPostTemplate = true; + } + } + + // check if this parenthesis closes a header, e.g. if (...), while (...) + if (isInHeader && parenStack->back() == 0) + { + isInHeader = false; + isImmediatelyPostHeader = true; + foundQuestionMark = false; + } + if (currentChar == ']') + { + --squareBracketCount; + if (squareBracketCount <= 0) + { + squareBracketCount = 0; + objCColonAlign = 0; + } + } + if (currentChar == ')') + { + foundCastOperator = false; + if (parenStack->back() == 0) + endOfAsmReached = true; + } + } + + // handle braces + if (currentChar == '{' || currentChar == '}') + { + // if appendOpeningBrace this was already done for the original brace + if (currentChar == '{' && !appendOpeningBrace) + { + BraceType newBraceType = getBraceType(); + breakCurrentOneLineBlock = false; + foundNamespaceHeader = false; + foundClassHeader = false; + foundStructHeader = false; + foundInterfaceHeader = false; + foundPreDefinitionHeader = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + foundTrailingReturnType = false; + isInPotentialCalculation = false; + isInObjCMethodDefinition = false; + isImmediatelyPostObjCMethodPrefix = false; + isInObjCInterface = false; + isInEnum = false; + isJavaStaticConstructor = false; + isCharImmediatelyPostNonInStmt = false; + needHeaderOpeningBrace = false; + shouldKeepLineUnbroken = false; + returnTypeChecked = false; + objCColonAlign = 0; + //assert(methodBreakCharNum == string::npos); // comment out + //assert(methodBreakLineNum == 0); // comment out + methodBreakCharNum = string::npos; + methodBreakLineNum = 0; + methodAttachCharNum = string::npos; + methodAttachLineNum = 0; + + isPreviousBraceBlockRelated = !isBraceType(newBraceType, ARRAY_TYPE); + braceTypeStack->emplace_back(newBraceType); + preBraceHeaderStack->emplace_back(currentHeader); + currentHeader = nullptr; + structStack->push_back(isInIndentableStruct); + if (isBraceType(newBraceType, STRUCT_TYPE) && isCStyle()) + isInIndentableStruct = isStructAccessModified(currentLine, charNum); + else + isInIndentableStruct = false; + } + + // this must be done before the braceTypeStack is popped + BraceType braceType = braceTypeStack->back(); + bool isOpeningArrayBrace = (isBraceType(braceType, ARRAY_TYPE) + && braceTypeStack->size() >= 2 + && !isBraceType((*braceTypeStack)[braceTypeStack->size() - 2], ARRAY_TYPE) + ); + + if (currentChar == '}') + { + // if a request has been made to append a post block empty line, + // but the block exists immediately before a closing brace, + // then there is no need for the post block empty line. + isAppendPostBlockEmptyLineRequested = false; + if (isInAsm) + endOfAsmReached = true; + isInAsmOneLine = isInQuote = false; + shouldKeepLineUnbroken = false; + squareBracketCount = 0; + + if (braceTypeStack->size() > 1) + { + previousBraceType = braceTypeStack->back(); + braceTypeStack->pop_back(); + isPreviousBraceBlockRelated = !isBraceType(braceType, ARRAY_TYPE); + } + else + { + previousBraceType = NULL_TYPE; + isPreviousBraceBlockRelated = false; + } + + if (!preBraceHeaderStack->empty()) + { + currentHeader = preBraceHeaderStack->back(); + preBraceHeaderStack->pop_back(); + } + else + currentHeader = nullptr; + + if (!structStack->empty()) + { + isInIndentableStruct = structStack->back(); + structStack->pop_back(); + } + else + isInIndentableStruct = false; + + if (isNonInStatementArray + && (!isBraceType(braceTypeStack->back(), ARRAY_TYPE) // check previous brace + || peekNextChar() == ';')) // check for "};" added V2.01 + isImmediatelyPostNonInStmt = true; + + if (!shouldBreakOneLineStatements + && ASBeautifier::getNextWord(currentLine, charNum) == AS_ELSE) + { + // handle special case of "else" at the end of line + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (ASBeautifier::peekNextChar(currentLine, nextText + 3) == ' ') + shouldBreakLineAtNextChar = true; + } + } + + // format braces + appendOpeningBrace = false; + if (isBraceType(braceType, ARRAY_TYPE)) + { + formatArrayBraces(braceType, isOpeningArrayBrace); + } + else + { + if (currentChar == '{') + formatOpeningBrace(braceType); + else + formatClosingBrace(braceType); + } + continue; + } + + if ((((previousCommandChar == '{' && isPreviousBraceBlockRelated) + || ((previousCommandChar == '}' + && !isImmediatelyPostEmptyBlock + && isPreviousBraceBlockRelated + && !isPreviousCharPostComment // Fixes wrongly appended newlines after '}' immediately after comments + && peekNextChar() != ' ' + && !isBraceType(previousBraceType, DEFINITION_TYPE)) + && !isBraceType(braceTypeStack->back(), DEFINITION_TYPE))) + && isOkToBreakBlock(braceTypeStack->back())) + // check for array + || (previousCommandChar == '{' // added 9/30/2010 + && isBraceType(braceTypeStack->back(), ARRAY_TYPE) + && !isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE) + && isNonInStatementArray) + // check for pico one line braces + || (formattingStyle == STYLE_PICO + && (previousCommandChar == '{' && isPreviousBraceBlockRelated) + && isBraceType(braceTypeStack->back(), COMMAND_TYPE) + && isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE) + && braceFormatMode == RUN_IN_MODE) + ) + { + isCharImmediatelyPostOpenBlock = (previousCommandChar == '{'); + isCharImmediatelyPostCloseBlock = (previousCommandChar == '}'); + + if (isCharImmediatelyPostOpenBlock + && !isCharImmediatelyPostComment + && !isCharImmediatelyPostLineComment) + { + previousCommandChar = ' '; + + if (braceFormatMode == NONE_MODE) + { + if (isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE) + && (isBraceType(braceTypeStack->back(), BREAK_BLOCK_TYPE) + || shouldBreakOneLineBlocks)) + isInLineBreak = true; + else if (currentLineBeginsWithBrace) + formatRunIn(); + else + breakLine(); + } + else if (braceFormatMode == RUN_IN_MODE + && currentChar != '#') + formatRunIn(); + else + isInLineBreak = true; + } + else if (isCharImmediatelyPostCloseBlock + && shouldBreakOneLineStatements + && !isCharImmediatelyPostComment + && ((isLegalNameChar(currentChar) && currentChar != '.') + || currentChar == '+' + || currentChar == '-' + || currentChar == '*' + || currentChar == '&' + || currentChar == '(')) + { + previousCommandChar = ' '; + isInLineBreak = true; + } + } + + // reset block handling flags + isImmediatelyPostEmptyBlock = false; + + // Objective-C method prefix with no return type + if (isImmediatelyPostObjCMethodPrefix && currentChar != '(') + { + if (shouldPadMethodPrefix || shouldUnPadMethodPrefix) + padObjCMethodPrefix(); + isImmediatelyPostObjCMethodPrefix = false; + } + + // look for headers + bool isPotentialHeader = isCharPotentialHeader(currentLine, charNum); + + if (isPotentialHeader && !isInTemplate && squareBracketCount == 0) + { + isNonParenHeader = false; + foundClosingHeader = false; + + newHeader = findHeader(headers); + + // java can have a 'default' not in a switch + if (newHeader == &AS_DEFAULT + && ASBeautifier::peekNextChar( + currentLine, charNum + (*newHeader).length() - 1) != ':') + newHeader = nullptr; + // Qt headers may be variables in C++ + if (isCStyle() + && (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)) + { + if (currentLine.find_first_of("=;", charNum) != string::npos) + newHeader = nullptr; + } + if (isJavaStyle() + && (newHeader == &AS_SYNCHRONIZED)) + { + // want synchronized statements not synchronized methods + if (!isBraceType(braceTypeStack->back(), COMMAND_TYPE)) + newHeader = nullptr; + } + else if (newHeader == &AS_USING + && ASBeautifier::peekNextChar( + currentLine, charNum + (*newHeader).length() - 1) != '(') + newHeader = nullptr; + + if (newHeader != nullptr) + { + foundClosingHeader = isClosingHeader(newHeader); + + if (!foundClosingHeader) + { + // these are closing headers + if ((newHeader == &AS_WHILE && currentHeader == &AS_DO) + || (newHeader == &_AS_FINALLY && currentHeader == &_AS_TRY) + || (newHeader == &_AS_EXCEPT && currentHeader == &_AS_TRY)) + foundClosingHeader = true; + // don't append empty block for these related headers + else if (isSharpStyle() + && previousNonWSChar == '}' + && ((newHeader == &AS_SET && currentHeader == &AS_GET) + || (newHeader == &AS_REMOVE && currentHeader == &AS_ADD)) + && isOkToBreakBlock(braceTypeStack->back())) + isAppendPostBlockEmptyLineRequested = false; + } + + // TODO: this can be removed in a future release + // version 3.0 - break erroneous attached header from previous versions + if (isSharpStyle() + && ((newHeader == &AS_SET && currentHeader == &AS_GET) + || (newHeader == &AS_REMOVE && currentHeader == &AS_ADD)) + && !isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE) + && currentLine[currentLine.find_first_not_of(" \t")] == '}') + isInLineBreak = true; + // END TODO + + const string* previousHeader = currentHeader; + currentHeader = newHeader; + needHeaderOpeningBrace = true; + + // is the previous statement on the same line? + if ((previousNonWSChar == ';' || previousNonWSChar == ':') + && !isInLineBreak + && isOkToBreakBlock(braceTypeStack->back())) + { + // if breaking lines, break the line at the header + // except for multiple 'case' statements on a line + if (maxCodeLength != string::npos + && previousHeader != &AS_CASE) + isInLineBreak = true; + else + isHeaderInMultiStatementLine = true; + } + + if (foundClosingHeader && previousNonWSChar == '}') + { + if (isOkToBreakBlock(braceTypeStack->back())) + isLineBreakBeforeClosingHeader(); + + // get the adjustment for a comment following the closing header + if (isInLineBreak) + nextLineSpacePadNum = getNextLineCommentAdjustment(); + else + spacePadNum = getCurrentLineCommentAdjustment(); + } + + // check if the found header is non-paren header + isNonParenHeader = findHeader(nonParenHeaders) != nullptr; + + if (isNonParenHeader + && (currentHeader == &AS_CATCH + || currentHeader == &AS_CASE)) + { + int startChar = charNum + currentHeader->length() - 1; + if (ASBeautifier::peekNextChar(currentLine, startChar) == '(') + isNonParenHeader = false; + } + + // join 'else if' statements + if (currentHeader == &AS_IF + && previousHeader == &AS_ELSE + && isInLineBreak + && !shouldBreakElseIfs + && !isCharImmediatelyPostLineComment + && !isImmediatelyPostPreprocessor) + { + // 'else' must be last thing on the line + size_t start = formattedLine.length() >= 6 ? formattedLine.length() - 6 : 0; + if (formattedLine.find(AS_ELSE, start) != string::npos) + { + appendSpacePad(); + isInLineBreak = false; + } + } + + appendSequence(*currentHeader); + goForward(currentHeader->length() - 1); + // if a paren-header is found add a space after it, if needed + // this checks currentLine, appendSpacePad() checks formattedLine + // in 'case' and C# 'catch' can be either a paren or non-paren header + if (shouldPadHeader + && !isNonParenHeader + && charNum < (int) currentLine.length() - 1 && !isWhiteSpace(currentLine[charNum + 1])) + appendSpacePad(); + + // Signal that a header has been reached + // *** But treat a closing while() (as in do...while) + // as if it were NOT a header since a closing while() + // should never have a block after it! + if (currentHeader != &AS_CASE && currentHeader != &AS_DEFAULT + && !(foundClosingHeader && currentHeader == &AS_WHILE)) + { + isInHeader = true; + + // in C# 'catch' and 'delegate' can be a paren or non-paren header + if (isNonParenHeader && !isSharpStyleWithParen(currentHeader)) + { + isImmediatelyPostHeader = true; + isInHeader = false; + } + } + + if (shouldBreakBlocks + && isOkToBreakBlock(braceTypeStack->back()) + && !isHeaderInMultiStatementLine) + { + if (previousHeader == nullptr + && !foundClosingHeader + && !isCharImmediatelyPostOpenBlock + && !isImmediatelyPostCommentOnly) + { + isPrependPostBlockEmptyLineRequested = true; + } + + if (isClosingHeader(currentHeader) + || foundClosingHeader) + { + isPrependPostBlockEmptyLineRequested = false; + } + + if (shouldBreakClosingHeaderBlocks + && isCharImmediatelyPostCloseBlock + && !isImmediatelyPostCommentOnly + && !(currentHeader == &AS_WHILE // do-while + && foundClosingHeader)) + { + isPrependPostBlockEmptyLineRequested = true; + } + } + + if (currentHeader == &AS_CASE + || currentHeader == &AS_DEFAULT) + isInCase = true; + + continue; + } + else if ((newHeader = findHeader(preDefinitionHeaders)) != nullptr + && parenStack->back() == 0 + && !isInEnum) // not C++11 enum class + { + if (newHeader == &AS_NAMESPACE || newHeader == &AS_MODULE) + foundNamespaceHeader = true; + if (newHeader == &AS_CLASS) + foundClassHeader = true; + if (newHeader == &AS_STRUCT) + foundStructHeader = true; + if (newHeader == &AS_INTERFACE && !foundNamespaceHeader && !foundClassHeader) + foundInterfaceHeader = true; + foundPreDefinitionHeader = true; + appendSequence(*newHeader); + goForward(newHeader->length() - 1); + + continue; + } + else if ((newHeader = findHeader(preCommandHeaders)) != nullptr) + { + // must be after function arguments + if (previousNonWSChar == ')') + foundPreCommandHeader = true; + } + else if ((newHeader = findHeader(castOperators)) != nullptr) + { + foundCastOperator = true; + appendSequence(*newHeader); + goForward(newHeader->length() - 1); + continue; + } + } // (isPotentialHeader && !isInTemplate) + + if (isInLineBreak) // OK to break line here + { + breakLine(); + if (isInVirginLine) // adjust for the first line + { + lineCommentNoBeautify = lineCommentNoIndent; + lineCommentNoIndent = false; + if (isImmediatelyPostPreprocessor) + { + isInIndentablePreproc = isIndentableProprocessor; + isIndentableProprocessor = false; + } + } + } + + if (previousNonWSChar == '}' || currentChar == ';') + { + if (currentChar == ';') + { + squareBracketCount = 0; + //assert(methodBreakCharNum == string::npos); // comment out + //assert(methodBreakLineNum == 0); // comment out + methodBreakCharNum = string::npos; + methodBreakLineNum = 0; + methodAttachCharNum = string::npos; + methodAttachLineNum = 0; + + if (((shouldBreakOneLineStatements + || isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE)) + && isOkToBreakBlock(braceTypeStack->back())) + && !(attachClosingBraceMode && peekNextChar() == '}')) + { + passedSemicolon = true; + } + else if (!shouldBreakOneLineStatements + && ASBeautifier::getNextWord(currentLine, charNum) == AS_ELSE) + { + // handle special case of "else" at the end of line + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (ASBeautifier::peekNextChar(currentLine, nextText + 3) == ' ') + passedSemicolon = true; + } + + if (shouldBreakBlocks + && currentHeader != nullptr + && currentHeader != &AS_CASE + && currentHeader != &AS_DEFAULT + && !isHeaderInMultiStatementLine + && parenStack->back() == 0) + { + isAppendPostBlockEmptyLineRequested = true; + } + } + if (currentChar != ';' + || (needHeaderOpeningBrace && parenStack->back() == 0)) + currentHeader = nullptr; + + resetEndOfStatement(); + } + + if (currentChar == ':' + && previousChar != ':' // not part of '::' + && peekNextChar() != ':') // not part of '::' + { + if (isInCase) + { + isInCase = false; + if (shouldBreakOneLineStatements) + passedColon = true; + } + else if (isCStyle() // for C/C++ only + && isOkToBreakBlock(braceTypeStack->back()) + && shouldBreakOneLineStatements + && !foundQuestionMark // not in a ?: sequence + && !foundPreDefinitionHeader // not in a definition block + && previousCommandChar != ')' // not after closing paren of a method header + && !foundPreCommandHeader // not after a 'noexcept' + && squareBracketCount == 0 // not in objC method call + && !isInObjCMethodDefinition // not objC '-' or '+' method + && !isInObjCInterface // not objC @interface + && !isInObjCSelector // not objC @selector + && !isDigit(peekNextChar()) // not a bit field + && !isInEnum // not an enum with a base type + && !isInAsm // not in extended assembler + && !isInAsmOneLine // not in extended assembler + && !isInAsmBlock) // not in extended assembler + { + passedColon = true; + } + + if (isCStyle() + && (squareBracketCount > 0 || isInObjCMethodDefinition || isInObjCSelector) + && !foundQuestionMark) // not in a ?: sequence + { + isImmediatelyPostObjCMethodPrefix = false; + isInObjCReturnType = false; + isInObjCParam = true; + if (shouldPadMethodColon) + padObjCMethodColon(); + } + + if (isInObjCInterface) + { + appendSpacePad(); + if ((int) currentLine.length() > charNum + 1 + && !isWhiteSpace(currentLine[charNum + 1])) + currentLine.insert(charNum + 1, " "); + } + + if (isClassInitializer()) + isInClassInitializer = true; + } + + if (currentChar == '?') + foundQuestionMark = true; + + if (isPotentialHeader && !isInTemplate) + { + if (findKeyword(currentLine, charNum, AS_NEW) + || findKeyword(currentLine, charNum, AS_DELETE)) + { + isInPotentialCalculation = false; + isImmediatelyPostNewDelete = true; + } + + if (findKeyword(currentLine, charNum, AS_RETURN)) + { + isInPotentialCalculation = true; + isImmediatelyPostReturn = true; // return is the same as an = sign + } + + if (findKeyword(currentLine, charNum, AS_OPERATOR)) + isImmediatelyPostOperator = true; + + if (findKeyword(currentLine, charNum, AS_ENUM)) + { + size_t firstNum = currentLine.find_first_of("(){},/"); + if (firstNum == string::npos + || currentLine[firstNum] == '{' + || currentLine[firstNum] == '/') + isInEnum = true; + } + + if (isCStyle() + && findKeyword(currentLine, charNum, AS_THROW) + && previousCommandChar != ')' + && !foundPreCommandHeader) // 'const' throw() + isImmediatelyPostThrow = true; + + if (isCStyle() && findKeyword(currentLine, charNum, AS_EXTERN) && isExternC()) + isInExternC = true; + + if (isCStyle() && findKeyword(currentLine, charNum, AS_AUTO) + && (isBraceType(braceTypeStack->back(), NULL_TYPE) + || isBraceType(braceTypeStack->back(), DEFINITION_TYPE))) + foundTrailingReturnType = true; + + // check for break/attach return type + if (shouldBreakReturnType || shouldBreakReturnTypeDecl + || shouldAttachReturnType || shouldAttachReturnTypeDecl) + { + if ((isBraceType(braceTypeStack->back(), NULL_TYPE) + || isBraceType(braceTypeStack->back(), DEFINITION_TYPE)) + && !returnTypeChecked + && !foundNamespaceHeader + && !foundClassHeader + && !isInObjCMethodDefinition + // bypass objective-C and java @ character + && charNum == (int) currentLine.find_first_not_of(" \t") + && !(isCStyle() && isCharPotentialHeader(currentLine, charNum) + && (findKeyword(currentLine, charNum, AS_PUBLIC) + || findKeyword(currentLine, charNum, AS_PRIVATE) + || findKeyword(currentLine, charNum, AS_PROTECTED)))) + { + findReturnTypeSplitPoint(currentLine); + returnTypeChecked = true; + } + } + + // Objective-C NSException macros are preCommandHeaders + if (isCStyle() && findKeyword(currentLine, charNum, AS_NS_DURING)) + foundPreCommandMacro = true; + if (isCStyle() && findKeyword(currentLine, charNum, AS_NS_HANDLER)) + foundPreCommandMacro = true; + + if (isCStyle() && isExecSQL(currentLine, charNum)) + isInExecSQL = true; + + if (isCStyle()) + { + if (findKeyword(currentLine, charNum, AS_ASM) + || findKeyword(currentLine, charNum, AS__ASM__)) + { + isInAsm = true; + } + else if (findKeyword(currentLine, charNum, AS_MS_ASM) // microsoft specific + || findKeyword(currentLine, charNum, AS_MS__ASM)) + { + int index = 4; + if (peekNextChar() == '_') // check for __asm + index = 5; + + char peekedChar = ASBase::peekNextChar(currentLine, charNum + index); + if (peekedChar == '{' || peekedChar == ' ') + isInAsmBlock = true; + else + isInAsmOneLine = true; + } + } + + if (isJavaStyle() + && (findKeyword(currentLine, charNum, AS_STATIC) + && isNextCharOpeningBrace(charNum + 6))) + isJavaStaticConstructor = true; + + if (isSharpStyle() + && (findKeyword(currentLine, charNum, AS_DELEGATE) + || findKeyword(currentLine, charNum, AS_UNCHECKED))) + isSharpDelegate = true; + + // append the entire name + string name = getCurrentWord(currentLine, charNum); + // must pad the 'and' and 'or' operators if required + if (name == "and" || name == "or") + { + if (shouldPadOperators && previousNonWSChar != ':') + { + appendSpacePad(); + appendOperator(name); + goForward(name.length() - 1); + if (!isBeforeAnyComment() + && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0) + && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0)) + appendSpaceAfter(); + } + else + { + appendOperator(name); + goForward(name.length() - 1); + } + } + else + { + appendSequence(name); + goForward(name.length() - 1); + } + + continue; + + } // (isPotentialHeader && !isInTemplate) + + // determine if this is an Objective-C statement + + if (currentChar == '@' + && isCStyle() + && (int) currentLine.length() > charNum + 1 + && !isWhiteSpace(currentLine[charNum + 1]) + && isCharPotentialHeader(currentLine, charNum + 1) + && findKeyword(currentLine, charNum + 1, AS_INTERFACE) + && isBraceType(braceTypeStack->back(), NULL_TYPE)) + { + isInObjCInterface = true; + string name = '@' + AS_INTERFACE; + appendSequence(name); + goForward(name.length() - 1); + continue; + } + else if (currentChar == '@' + && isCStyle() + && (int) currentLine.length() > charNum + 1 + && !isWhiteSpace(currentLine[charNum + 1]) + && isCharPotentialHeader(currentLine, charNum + 1) + && findKeyword(currentLine, charNum + 1, AS_SELECTOR)) + { + isInObjCSelector = true; + string name = '@' + AS_SELECTOR; + appendSequence(name); + goForward(name.length() - 1); + continue; + } + else if ((currentChar == '-' || currentChar == '+') + && isCStyle() + && (int) currentLine.find_first_not_of(" \t") == charNum + && !isInPotentialCalculation + && !isInObjCMethodDefinition + && (isBraceType(braceTypeStack->back(), NULL_TYPE) + || (isBraceType(braceTypeStack->back(), EXTERN_TYPE)))) + { + isInObjCMethodDefinition = true; + isImmediatelyPostObjCMethodPrefix = true; + isInObjCParam = false; + isInObjCInterface = false; + if (getAlignMethodColon()) + objCColonAlign = findObjCColonAlignment(); + appendCurrentChar(); + continue; + } + + // determine if this is a potential calculation + + bool isPotentialOperator = isCharPotentialOperator(currentChar); + newHeader = nullptr; + + if (isPotentialOperator) + { + newHeader = findOperator(operators); + + // check for Java ? wildcard + if (newHeader != nullptr + && newHeader == &AS_GCC_MIN_ASSIGN + && isJavaStyle() + && isInTemplate) + newHeader = nullptr; + + if (newHeader != nullptr) + { + if (newHeader == &AS_LAMBDA) + foundPreCommandHeader = true; + + // correct mistake of two >> closing a template + if (isInTemplate && (newHeader == &AS_GR_GR || newHeader == &AS_GR_GR_GR)) + newHeader = &AS_GR; + + if (!isInPotentialCalculation) + { + // must determine if newHeader is an assignment operator + // do NOT use findOperator - the length must be exact!!! + if (find(begin(*assignmentOperators), end(*assignmentOperators), newHeader) + != end(*assignmentOperators)) + { + foundPreCommandHeader = false; + char peekedChar = peekNextChar(); + isInPotentialCalculation = !(newHeader == &AS_EQUAL && peekedChar == '*') + && !(newHeader == &AS_EQUAL && peekedChar == '&') + && !isCharImmediatelyPostOperator; + } + } + } + } + + // process pointers and references + // check newHeader to eliminate things like '&&' sequence + if (newHeader != nullptr && !isJavaStyle() + && (newHeader == &AS_MULT + || newHeader == &AS_BIT_AND + || newHeader == &AS_BIT_XOR + || newHeader == &AS_AND) + && isPointerOrReference()) + { + if (!isDereferenceOrAddressOf() && !isOperatorPaddingDisabled()) + formatPointerOrReference(); + else + { + appendOperator(*newHeader); + goForward(newHeader->length() - 1); + } + isImmediatelyPostPointerOrReference = true; + continue; + } + + if (shouldPadOperators && newHeader != nullptr && !isOperatorPaddingDisabled()) + { + padOperators(newHeader); + continue; + } + + // remove spaces before commas + if (currentChar == ',') + { + const size_t len = formattedLine.length(); + size_t lastText = formattedLine.find_last_not_of(' '); + if (lastText != string::npos && lastText < len - 1) + { + formattedLine.resize(lastText + 1); + int size_diff = len - (lastText + 1); + spacePadNum -= size_diff; + } + } + + // pad commas and semi-colons + if (currentChar == ';' + || (currentChar == ',' && (shouldPadOperators || shouldPadCommas))) + { + char nextChar = ' '; + if (charNum + 1 < (int) currentLine.length()) + nextChar = currentLine[charNum + 1]; + if (!isWhiteSpace(nextChar) + && nextChar != '}' + && nextChar != ')' + && nextChar != ']' + && nextChar != '>' + && nextChar != ';' + && !isBeforeAnyComment() + /* && !(isBraceType(braceTypeStack->back(), ARRAY_TYPE)) */ + ) + { + appendCurrentChar(); + appendSpaceAfter(); + continue; + } + } + + // pad parens + if (currentChar == '(' || currentChar == ')') + { + if (currentChar == '(') + { + if (shouldPadHeader + && (isCharImmediatelyPostReturn + || isCharImmediatelyPostThrow + || isCharImmediatelyPostNewDelete)) + appendSpacePad(); + } + + if (shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen) + padParens(); + else + appendCurrentChar(); + + if (isInObjCMethodDefinition) + { + if (currentChar == '(' && isImmediatelyPostObjCMethodPrefix) + { + if (shouldPadMethodPrefix || shouldUnPadMethodPrefix) + padObjCMethodPrefix(); + isImmediatelyPostObjCMethodPrefix = false; + isInObjCReturnType = true; + } + else if (currentChar == ')' && isInObjCReturnType) + { + if (shouldPadReturnType || shouldUnPadReturnType) + padObjCReturnType(); + isInObjCReturnType = false; + } + else if (isInObjCParam + && (shouldPadParamType || shouldUnPadParamType)) + padObjCParamType(); + } + continue; + } + + // bypass the entire operator + if (newHeader != nullptr) + { + appendOperator(*newHeader); + goForward(newHeader->length() - 1); + continue; + } + + appendCurrentChar(); + + } // end of while loop * end of while loop * end of while loop * end of while loop + + // return a beautified (i.e. correctly indented) line. + + string beautifiedLine; + size_t readyFormattedLineLength = trim(readyFormattedLine).length(); + bool isInNamespace = isBraceType(braceTypeStack->back(), NAMESPACE_TYPE); + + if (prependEmptyLine // prepend a blank line before this formatted line + && readyFormattedLineLength > 0 + && previousReadyFormattedLineLength > 0) + { + isLineReady = true; // signal a waiting readyFormattedLine + beautifiedLine = beautify(""); + previousReadyFormattedLineLength = 0; + // call the enhancer for new empty lines + enhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL); + } + else // format the current formatted line + { + isLineReady = false; + runInIndentContinuation = runInIndentChars; + beautifiedLine = beautify(readyFormattedLine); + previousReadyFormattedLineLength = readyFormattedLineLength; + // the enhancer is not called for no-indent line comments + if (!lineCommentNoBeautify && !isFormattingModeOff) + enhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL); + runInIndentChars = 0; + lineCommentNoBeautify = lineCommentNoIndent; + lineCommentNoIndent = false; + isInIndentablePreproc = isIndentableProprocessor; + isIndentableProprocessor = false; + isElseHeaderIndent = elseHeaderFollowsComments; + isCaseHeaderCommentIndent = caseHeaderFollowsComments; + objCColonAlignSubsequent = objCColonAlign; + if (isCharImmediatelyPostNonInStmt) + { + isNonInStatementArray = false; + isCharImmediatelyPostNonInStmt = false; + } + isInPreprocessorBeautify = isInPreprocessor; // used by ASEnhancer + isInBeautifySQL = isInExecSQL; // used by ASEnhancer + } + + prependEmptyLine = false; + assert(computeChecksumOut(beautifiedLine)); + return beautifiedLine; +} + +/** + * check if there are any indented lines ready to be read by nextLine() + * + * @return are there any indented lines ready? + */ +bool ASFormatter::hasMoreLines() const +{ + return !endOfCodeReached; +} + +/** + * comparison function for BraceType enum + */ +bool ASFormatter::isBraceType(BraceType a, BraceType b) const +{ + if (a == NULL_TYPE || b == NULL_TYPE) + return (a == b); + return ((a & b) == b); +} + +/** + * set the formatting style. + * + * @param style the formatting style. + */ +void ASFormatter::setFormattingStyle(FormatStyle style) +{ + formattingStyle = style; +} + +/** + * set the add braces mode. + * options: + * true braces added to headers for single line statements. + * false braces NOT added to headers for single line statements. + * + * @param state the add braces state. + */ +void ASFormatter::setAddBracesMode(bool state) +{ + shouldAddBraces = state; +} + +/** + * set the add one line braces mode. + * options: + * true one line braces added to headers for single line statements. + * false one line braces NOT added to headers for single line statements. + * + * @param state the add one line braces state. + */ +void ASFormatter::setAddOneLineBracesMode(bool state) +{ + shouldAddBraces = state; + shouldAddOneLineBraces = state; +} + +/** + * set the remove braces mode. + * options: + * true braces removed from headers for single line statements. + * false braces NOT removed from headers for single line statements. + * + * @param state the remove braces state. + */ +void ASFormatter::setRemoveBracesMode(bool state) +{ + shouldRemoveBraces = state; +} + +// retained for compatibility with release 2.06 +// "Brackets" have been changed to "Braces" in 3.0 +// it is referenced only by the old "bracket" options +void ASFormatter::setAddBracketsMode(bool state) +{ + setAddBracesMode(state); +} + +// retained for compatibility with release 2.06 +// "Brackets" have been changed to "Braces" in 3.0 +// it is referenced only by the old "bracket" options +void ASFormatter::setAddOneLineBracketsMode(bool state) +{ + setAddOneLineBracesMode(state); +} + +// retained for compatibility with release 2.06 +// "Brackets" have been changed to "Braces" in 3.0 +// it is referenced only by the old "bracket" options +void ASFormatter::setRemoveBracketsMode(bool state) +{ + setRemoveBracesMode(state); +} + +// retained for compatibility with release 2.06 +// "Brackets" have been changed to "Braces" in 3.0 +// it is referenced only by the old "bracket" options +void ASFormatter::setBreakClosingHeaderBracketsMode(bool state) +{ + setBreakClosingHeaderBracesMode(state); +} + +/** + * set the brace formatting mode. + * options: + * + * @param mode the brace formatting mode. + */ +void ASFormatter::setBraceFormatMode(BraceMode mode) +{ + braceFormatMode = mode; +} + +/** + * set 'break after' mode for maximum code length + * + * @param state the 'break after' mode. + */ +void ASFormatter::setBreakAfterMode(bool state) +{ + shouldBreakLineAfterLogical = state; +} + +/** + * set closing header brace breaking mode + * options: + * true braces just before closing headers (e.g. 'else', 'catch') + * will be broken, even if standard braces are attached. + * false closing header braces will be treated as standard braces. + * + * @param state the closing header brace breaking mode. + */ +void ASFormatter::setBreakClosingHeaderBracesMode(bool state) +{ + shouldBreakClosingHeaderBraces = state; +} + +/** + * set 'else if()' breaking mode + * options: + * true 'else' headers will be broken from their succeeding 'if' headers. + * false 'else' headers will be attached to their succeeding 'if' headers. + * + * @param state the 'else if()' breaking mode. + */ +void ASFormatter::setBreakElseIfsMode(bool state) +{ + shouldBreakElseIfs = state; +} + +/** +* set comma padding mode. +* options: +* true statement commas and semicolons will be padded with spaces around them. +* false statement commas and semicolons will not be padded. +* +* @param state the padding mode. +*/ +void ASFormatter::setCommaPaddingMode(bool state) +{ + shouldPadCommas = state; +} + +/** + * set maximum code length + * + * @param max the maximum code length. + */ +void ASFormatter::setMaxCodeLength(int max) +{ + maxCodeLength = max; +} + +/** + * set operator padding mode. + * options: + * true statement operators will be padded with spaces around them. + * false statement operators will not be padded. + * + * @param state the padding mode. + */ +void ASFormatter::setOperatorPaddingMode(bool state) +{ + shouldPadOperators = state; +} + +/** + * set parenthesis outside padding mode. + * options: + * true statement parentheses will be padded with spaces around them. + * false statement parentheses will not be padded. + * + * @param state the padding mode. + */ +void ASFormatter::setParensOutsidePaddingMode(bool state) +{ + shouldPadParensOutside = state; +} + +/** + * set parenthesis inside padding mode. + * options: + * true statement parenthesis will be padded with spaces around them. + * false statement parenthesis will not be padded. + * + * @param state the padding mode. + */ +void ASFormatter::setParensInsidePaddingMode(bool state) +{ + shouldPadParensInside = state; +} + +/** + * set padding mode before one or more open parentheses. + * options: + * true first open parenthesis will be padded with a space before. + * false first open parenthesis will not be padded. + * + * @param state the padding mode. + */ +void ASFormatter::setParensFirstPaddingMode(bool state) +{ + shouldPadFirstParen = state; +} + +/** + * set header padding mode. + * options: + * true headers will be padded with spaces around them. + * false headers will not be padded. + * + * @param state the padding mode. + */ +void ASFormatter::setParensHeaderPaddingMode(bool state) +{ + shouldPadHeader = state; +} + +/** + * set parenthesis unpadding mode. + * options: + * true statement parenthesis will be unpadded with spaces removed around them. + * false statement parenthesis will not be unpadded. + * + * @param state the padding mode. + */ +void ASFormatter::setParensUnPaddingMode(bool state) +{ + shouldUnPadParens = state; +} + +/** +* set the state of the preprocessor indentation option. +* If true, #ifdef blocks at level 0 will be indented. +* +* @param state state of option. +*/ +void ASFormatter::setPreprocBlockIndent(bool state) +{ + shouldIndentPreprocBlock = state; +} + +/** + * Set strip comment prefix mode. + * options: + * true strip leading '*' in a comment. + * false leading '*' in a comment will be left unchanged. + * + * @param state the strip comment prefix mode. + */ +void ASFormatter::setStripCommentPrefix(bool state) +{ + shouldStripCommentPrefix = state; +} + +/** + * set objective-c '-' or '+' class prefix padding mode. + * options: + * true class prefix will be padded a spaces after them. + * false class prefix will be left unchanged. + * + * @param state the padding mode. + */ +void ASFormatter::setMethodPrefixPaddingMode(bool state) +{ + shouldPadMethodPrefix = state; +} + +/** + * set objective-c '-' or '+' class prefix unpadding mode. + * options: + * true class prefix will be unpadded with spaces after them removed. + * false class prefix will left unchanged. + * + * @param state the unpadding mode. + */ +void ASFormatter::setMethodPrefixUnPaddingMode(bool state) +{ + shouldUnPadMethodPrefix = state; +} + +// set objective-c '-' or '+' return type padding mode. +void ASFormatter::setReturnTypePaddingMode(bool state) +{ + shouldPadReturnType = state; +} + +// set objective-c '-' or '+' return type unpadding mode. +void ASFormatter::setReturnTypeUnPaddingMode(bool state) +{ + shouldUnPadReturnType = state; +} + +// set objective-c method parameter type padding mode. +void ASFormatter::setParamTypePaddingMode(bool state) +{ + shouldPadParamType = state; +} + +// set objective-c method parameter type unpadding mode. +void ASFormatter::setParamTypeUnPaddingMode(bool state) +{ + shouldUnPadParamType = state; +} + +/** + * set objective-c method colon padding mode. + * + * @param mode objective-c colon padding mode. + */ +void ASFormatter::setObjCColonPaddingMode(ObjCColonPad mode) +{ + shouldPadMethodColon = true; + objCColonPadMode = mode; +} + +/** + * set option to attach closing braces + * + * @param state true = attach, false = don't attach. + */ +void ASFormatter::setAttachClosingBraceMode(bool state) +{ + attachClosingBraceMode = state; +} + +/** + * set option to attach class braces + * + * @param state true = attach, false = use style default. + */ +void ASFormatter::setAttachClass(bool state) +{ + shouldAttachClass = state; +} + +/** + * set option to attach extern "C" braces + * + * @param state true = attach, false = use style default. + */ +void ASFormatter::setAttachExternC(bool state) +{ + shouldAttachExternC = state; +} + +/** + * set option to attach namespace braces + * + * @param state true = attach, false = use style default. + */ +void ASFormatter::setAttachNamespace(bool state) +{ + shouldAttachNamespace = state; +} + +/** + * set option to attach inline braces + * + * @param state true = attach, false = use style default. + */ +void ASFormatter::setAttachInline(bool state) +{ + shouldAttachInline = state; +} + +void ASFormatter::setAttachClosingWhile(bool state) +{ + shouldAttachClosingWhile = state; +} + +/** + * set option to break/not break one-line blocks + * + * @param state true = break, false = don't break. + */ +void ASFormatter::setBreakOneLineBlocksMode(bool state) +{ + shouldBreakOneLineBlocks = state; +} + +/** +* set one line headers breaking mode +*/ +void ASFormatter::setBreakOneLineHeadersMode(bool state) +{ + shouldBreakOneLineHeaders = state; +} + +/** +* set option to break/not break lines consisting of multiple statements. +* +* @param state true = break, false = don't break. +*/ +void ASFormatter::setBreakOneLineStatementsMode(bool state) +{ + shouldBreakOneLineStatements = state; +} + +void ASFormatter::setCloseTemplatesMode(bool state) +{ + shouldCloseTemplates = state; +} + +/** + * set option to convert tabs to spaces. + * + * @param state true = convert, false = don't convert. + */ +void ASFormatter::setTabSpaceConversionMode(bool state) +{ + shouldConvertTabs = state; +} + +/** + * set option to indent comments in column 1. + * + * @param state true = indent, false = don't indent. + */ +void ASFormatter::setIndentCol1CommentsMode(bool state) +{ + shouldIndentCol1Comments = state; +} + +/** + * set option to force all line ends to a particular style. + * + * @param fmt format enum value + */ +void ASFormatter::setLineEndFormat(LineEndFormat fmt) +{ + lineEnd = fmt; +} + +/** + * set option to break unrelated blocks of code with empty lines. + * + * @param state true = convert, false = don't convert. + */ +void ASFormatter::setBreakBlocksMode(bool state) +{ + shouldBreakBlocks = state; +} + +/** + * set option to break closing header blocks of code (such as 'else', 'catch', ...) with empty lines. + * + * @param state true = convert, false = don't convert. + */ +void ASFormatter::setBreakClosingHeaderBlocksMode(bool state) +{ + shouldBreakClosingHeaderBlocks = state; +} + +/** + * set option to delete empty lines. + * + * @param state true = delete, false = don't delete. + */ +void ASFormatter::setDeleteEmptyLinesMode(bool state) +{ + shouldDeleteEmptyLines = state; +} + +void ASFormatter::setBreakReturnType(bool state) +{ + shouldBreakReturnType = state; +} + +void ASFormatter::setBreakReturnTypeDecl(bool state) +{ + shouldBreakReturnTypeDecl = state; +} + +void ASFormatter::setAttachReturnType(bool state) +{ + shouldAttachReturnType = state; +} + +void ASFormatter::setAttachReturnTypeDecl(bool state) +{ + shouldAttachReturnTypeDecl = state; +} + +/** + * set the pointer alignment. + * + * @param alignment the pointer alignment. + */ +void ASFormatter::setPointerAlignment(PointerAlign alignment) +{ + pointerAlignment = alignment; +} + +void ASFormatter::setReferenceAlignment(ReferenceAlign alignment) +{ + referenceAlignment = alignment; +} + +/** + * jump over several characters. + * + * @param i the number of characters to jump over. + */ +void ASFormatter::goForward(int i) +{ + while (--i >= 0) + getNextChar(); +} + +/** + * peek at the next unread character. + * + * @return the next unread character. + */ +char ASFormatter::peekNextChar() const +{ + char ch = ' '; + size_t peekNum = currentLine.find_first_not_of(" \t", charNum + 1); + + if (peekNum == string::npos) + return ch; + + ch = currentLine[peekNum]; + + return ch; +} + +/** + * check if current placement is before a comment + * + * @return is before a comment. + */ +bool ASFormatter::isBeforeComment() const +{ + bool foundComment = false; + size_t peekNum = currentLine.find_first_not_of(" \t", charNum + 1); + + if (peekNum == string::npos) + return foundComment; + + foundComment = (currentLine.compare(peekNum, 2, "/*") == 0); + + return foundComment; +} + +/** + * check if current placement is before a comment or line-comment + * + * @return is before a comment or line-comment. + */ +bool ASFormatter::isBeforeAnyComment() const +{ + bool foundComment = false; + size_t peekNum = currentLine.find_first_not_of(" \t", charNum + 1); + + if (peekNum == string::npos) + return foundComment; + + foundComment = (currentLine.compare(peekNum, 2, "/*") == 0 + || currentLine.compare(peekNum, 2, "//") == 0); + + return foundComment; +} + +/** + * check if current placement is before a comment or line-comment + * if a block comment it must be at the end of the line + * + * @return is before a comment or line-comment. + */ +bool ASFormatter::isBeforeAnyLineEndComment(int startPos) const +{ + bool foundLineEndComment = false; + size_t peekNum = currentLine.find_first_not_of(" \t", startPos + 1); + + if (peekNum != string::npos) + { + if (currentLine.compare(peekNum, 2, "//") == 0) + foundLineEndComment = true; + else if (currentLine.compare(peekNum, 2, "/*") == 0) + { + // comment must be closed on this line with nothing after it + size_t endNum = currentLine.find("*/", peekNum + 2); + if (endNum != string::npos) + { + size_t nextChar = currentLine.find_first_not_of(" \t", endNum + 2); + if (nextChar == string::npos) + foundLineEndComment = true; + } + } + } + return foundLineEndComment; +} + +/** + * check if current placement is before a comment followed by a line-comment + * + * @return is before a multiple line-end comment. + */ +bool ASFormatter::isBeforeMultipleLineEndComments(int startPos) const +{ + bool foundMultipleLineEndComment = false; + size_t peekNum = currentLine.find_first_not_of(" \t", startPos + 1); + + if (peekNum != string::npos) + { + if (currentLine.compare(peekNum, 2, "/*") == 0) + { + // comment must be closed on this line with nothing after it + size_t endNum = currentLine.find("*/", peekNum + 2); + if (endNum != string::npos) + { + size_t nextChar = currentLine.find_first_not_of(" \t", endNum + 2); + if (nextChar != string::npos + && currentLine.compare(nextChar, 2, "//") == 0) + foundMultipleLineEndComment = true; + } + } + } + return foundMultipleLineEndComment; +} + +/** + * get the next character, increasing the current placement in the process. + * the new character is inserted into the variable currentChar. + * + * @return whether succeeded to receive the new character. + */ +bool ASFormatter::getNextChar() +{ + isInLineBreak = false; + previousChar = currentChar; + + if (!isWhiteSpace(currentChar)) + { + previousNonWSChar = currentChar; + if (!isInComment && !isInLineComment && !isInQuote + && !isImmediatelyPostComment + && !isImmediatelyPostLineComment + && !isInPreprocessor + && !isSequenceReached("/*") + && !isSequenceReached("//")) + previousCommandChar = currentChar; + } + + if (charNum + 1 < (int) currentLine.length() + && (!isWhiteSpace(peekNextChar()) || isInComment || isInLineComment)) + { + currentChar = currentLine[++charNum]; + + if (currentChar == '\t' && shouldConvertTabs) + convertTabToSpaces(); + + return true; + } + + // end of line has been reached + return getNextLine(); +} + +/** + * get the next line of input, increasing the current placement in the process. + * + * @param emptyLineWasDeleted an empty line was deleted. + * @return whether succeeded in reading the next line. + */ +bool ASFormatter::getNextLine(bool emptyLineWasDeleted /*false*/) +{ + if (!sourceIterator->hasMoreLines()) + { + endOfCodeReached = true; + return false; + } + if (appendOpeningBrace) + currentLine = "{"; // append brace that was removed from the previous line + else + { + currentLine = sourceIterator->nextLine(emptyLineWasDeleted); + assert(computeChecksumIn(currentLine)); + } + // reset variables for new line + inLineNumber++; + if (endOfAsmReached) + endOfAsmReached = isInAsmBlock = isInAsm = false; + shouldKeepLineUnbroken = false; + isInCommentStartLine = false; + isInCase = false; + isInAsmOneLine = false; + isHeaderInMultiStatementLine = false; + isInQuoteContinuation = isInVerbatimQuote || haveLineContinuationChar; + haveLineContinuationChar = false; + isImmediatelyPostEmptyLine = lineIsEmpty; + previousChar = ' '; + + if (currentLine.length() == 0) + currentLine = string(" "); // a null is inserted if this is not done + + if (methodBreakLineNum > 0) + --methodBreakLineNum; + if (methodAttachLineNum > 0) + --methodAttachLineNum; + + // unless reading in the first line of the file, break a new line. + if (!isVirgin) + isInLineBreak = true; + else + isVirgin = false; + + if (isImmediatelyPostNonInStmt) + { + isCharImmediatelyPostNonInStmt = true; + isImmediatelyPostNonInStmt = false; + } + + // check if is in preprocessor before line trimming + // a blank line after a \ will remove the flag + isImmediatelyPostPreprocessor = isInPreprocessor; + if (!isInComment + && (previousNonWSChar != '\\' + || isEmptyLine(currentLine))) + isInPreprocessor = false; + + if (passedSemicolon) + isInExecSQL = false; + initNewLine(); + + currentChar = currentLine[charNum]; + if (isInBraceRunIn && previousNonWSChar == '{' && !isInComment) + isInLineBreak = false; + isInBraceRunIn = false; + + if (currentChar == '\t' && shouldConvertTabs) + convertTabToSpaces(); + + // check for an empty line inside a command brace. + // if yes then read the next line (calls getNextLine recursively). + // must be after initNewLine. + if (shouldDeleteEmptyLines + && lineIsEmpty + && isBraceType((*braceTypeStack)[braceTypeStack->size() - 1], COMMAND_TYPE)) + { + if (!shouldBreakBlocks || previousNonWSChar == '{' || !commentAndHeaderFollows()) + { + isInPreprocessor = isImmediatelyPostPreprocessor; // restore + lineIsEmpty = false; + return getNextLine(true); + } + } + return true; +} + +/** + * jump over the leading white space in the current line, + * IF the line does not begin a comment or is in a preprocessor definition. + */ +void ASFormatter::initNewLine() +{ + size_t len = currentLine.length(); + size_t tabSize = getTabLength(); + charNum = 0; + + // don't trim these + if (isInQuoteContinuation + || (isInPreprocessor && !getPreprocDefineIndent())) + return; + + // SQL continuation lines must be adjusted so the leading spaces + // is equivalent to the opening EXEC SQL + if (isInExecSQL) + { + // replace leading tabs with spaces + // so that continuation indent will be spaces + size_t tabCount_ = 0; + size_t i; + for (i = 0; i < currentLine.length(); i++) + { + if (!isWhiteSpace(currentLine[i])) // stop at first text + break; + if (currentLine[i] == '\t') + { + size_t numSpaces = tabSize - ((tabCount_ + i) % tabSize); + currentLine.replace(i, 1, numSpaces, ' '); + tabCount_++; + i += tabSize - 1; + } + } + // this will correct the format if EXEC SQL is not a hanging indent + trimContinuationLine(); + return; + } + + // comment continuation lines must be adjusted so the leading spaces + // is equivalent to the opening comment + if (isInComment) + { + if (noTrimCommentContinuation) + leadingSpaces = tabIncrementIn = 0; + trimContinuationLine(); + return; + } + + // compute leading spaces + isImmediatelyPostCommentOnly = lineIsLineCommentOnly || lineEndsInCommentOnly; + lineIsCommentOnly = false; + lineIsLineCommentOnly = false; + lineEndsInCommentOnly = false; + doesLineStartComment = false; + currentLineBeginsWithBrace = false; + lineIsEmpty = false; + currentLineFirstBraceNum = string::npos; + tabIncrementIn = 0; + + // bypass whitespace at the start of a line + // preprocessor tabs are replaced later in the program + for (charNum = 0; isWhiteSpace(currentLine[charNum]) && charNum + 1 < (int) len; charNum++) + { + if (currentLine[charNum] == '\t' && !isInPreprocessor) + tabIncrementIn += tabSize - 1 - ((tabIncrementIn + charNum) % tabSize); + } + leadingSpaces = charNum + tabIncrementIn; + + if (isSequenceReached("/*")) + { + doesLineStartComment = true; + if ((int) currentLine.length() > charNum + 2 + && currentLine.find("*/", charNum + 2) != string::npos) + lineIsCommentOnly = true; + } + else if (isSequenceReached("//")) + { + lineIsLineCommentOnly = true; + } + else if (isSequenceReached("{")) + { + currentLineBeginsWithBrace = true; + currentLineFirstBraceNum = charNum; + size_t firstText = currentLine.find_first_not_of(" \t", charNum + 1); + if (firstText != string::npos) + { + if (currentLine.compare(firstText, 2, "//") == 0) + lineIsLineCommentOnly = true; + else if (currentLine.compare(firstText, 2, "/*") == 0 + || isExecSQL(currentLine, firstText)) + { + // get the extra adjustment + size_t j; + for (j = charNum + 1; j < firstText && isWhiteSpace(currentLine[j]); j++) + { + if (currentLine[j] == '\t') + tabIncrementIn += tabSize - 1 - ((tabIncrementIn + j) % tabSize); + } + leadingSpaces = j + tabIncrementIn; + if (currentLine.compare(firstText, 2, "/*") == 0) + doesLineStartComment = true; + } + } + } + else if (isWhiteSpace(currentLine[charNum]) && !(charNum + 1 < (int) currentLine.length())) + { + lineIsEmpty = true; + } + + // do not trim indented preprocessor define (except for comment continuation lines) + if (isInPreprocessor) + { + if (!doesLineStartComment) + leadingSpaces = 0; + charNum = 0; + } +} + +/** + * Append a character to the current formatted line. + * The formattedLine split points are updated. + * + * @param ch the character to append. + * @param canBreakLine if true, a registered line-break + */ +void ASFormatter::appendChar(char ch, bool canBreakLine) +{ + if (canBreakLine && isInLineBreak) + breakLine(); + + formattedLine.append(1, ch); + isImmediatelyPostCommentOnly = false; + if (maxCodeLength != string::npos) + { + // These compares reduce the frequency of function calls. + if (isOkToSplitFormattedLine()) + updateFormattedLineSplitPoints(ch); + if (formattedLine.length() > maxCodeLength) + testForTimeToSplitFormattedLine(); + } +} + +/** + * Append a string sequence to the current formatted line. + * The formattedLine split points are NOT updated. + * But the formattedLine is checked for time to split. + * + * @param sequence the sequence to append. + * @param canBreakLine if true, a registered line-break + */ +void ASFormatter::appendSequence(const string& sequence, bool canBreakLine) +{ + if (canBreakLine && isInLineBreak) + breakLine(); + formattedLine.append(sequence); + if (formattedLine.length() > maxCodeLength) + testForTimeToSplitFormattedLine(); +} + +/** + * Append an operator sequence to the current formatted line. + * The formattedLine split points are updated. + * + * @param sequence the sequence to append. + * @param canBreakLine if true, a registered line-break + */ +void ASFormatter::appendOperator(const string& sequence, bool canBreakLine) +{ + if (canBreakLine && isInLineBreak) + breakLine(); + formattedLine.append(sequence); + if (maxCodeLength != string::npos) + { + // These compares reduce the frequency of function calls. + if (isOkToSplitFormattedLine()) + updateFormattedLineSplitPointsOperator(sequence); + if (formattedLine.length() > maxCodeLength) + testForTimeToSplitFormattedLine(); + } +} + +/** + * append a space to the current formattedline, UNLESS the + * last character is already a white-space character. + */ +void ASFormatter::appendSpacePad() +{ + int len = formattedLine.length(); + if (len > 0 && !isWhiteSpace(formattedLine[len - 1])) + { + formattedLine.append(1, ' '); + spacePadNum++; + if (maxCodeLength != string::npos) + { + // These compares reduce the frequency of function calls. + if (isOkToSplitFormattedLine()) + updateFormattedLineSplitPoints(' '); + if (formattedLine.length() > maxCodeLength) + testForTimeToSplitFormattedLine(); + } + } +} + +/** + * append a space to the current formattedline, UNLESS the + * next character is already a white-space character. + */ +void ASFormatter::appendSpaceAfter() +{ + int len = currentLine.length(); + if (charNum + 1 < len && !isWhiteSpace(currentLine[charNum + 1])) + { + formattedLine.append(1, ' '); + spacePadNum++; + if (maxCodeLength != string::npos) + { + // These compares reduce the frequency of function calls. + if (isOkToSplitFormattedLine()) + updateFormattedLineSplitPoints(' '); + if (formattedLine.length() > maxCodeLength) + testForTimeToSplitFormattedLine(); + } + } +} + +/** + * register a line break for the formatted line. + */ +void ASFormatter::breakLine(bool isSplitLine /*false*/) +{ + isLineReady = true; + isInLineBreak = false; + spacePadNum = nextLineSpacePadNum; + nextLineSpacePadNum = 0; + readyFormattedLine = formattedLine; + formattedLine.erase(); + // queue an empty line prepend request if one exists + prependEmptyLine = isPrependPostBlockEmptyLineRequested; + + if (!isSplitLine) + { + formattedLineCommentNum = string::npos; + clearFormattedLineSplitPoints(); + + if (isAppendPostBlockEmptyLineRequested) + { + isAppendPostBlockEmptyLineRequested = false; + isPrependPostBlockEmptyLineRequested = true; + } + else + isPrependPostBlockEmptyLineRequested = false; + } +} + +/** + * check if the currently reached open-brace (i.e. '{') + * opens a: + * - a definition type block (such as a class or namespace), + * - a command block (such as a method block) + * - a static array + * this method takes for granted that the current character + * is an opening brace. + * + * @return the type of the opened block. + */ +BraceType ASFormatter::getBraceType() +{ + assert(currentChar == '{'); + + BraceType returnVal = NULL_TYPE; + + if ((previousNonWSChar == '=' + || isBraceType(braceTypeStack->back(), ARRAY_TYPE)) + && previousCommandChar != ')' + && !isNonParenHeader) + returnVal = ARRAY_TYPE; + else if (foundPreDefinitionHeader && previousCommandChar != ')') + { + returnVal = DEFINITION_TYPE; + if (foundNamespaceHeader) + returnVal = (BraceType)(returnVal | NAMESPACE_TYPE); + else if (foundClassHeader) + returnVal = (BraceType)(returnVal | CLASS_TYPE); + else if (foundStructHeader) + returnVal = (BraceType)(returnVal | STRUCT_TYPE); + else if (foundInterfaceHeader) + returnVal = (BraceType)(returnVal | INTERFACE_TYPE); + } + else if (isInEnum) + { + returnVal = (BraceType)(ARRAY_TYPE | ENUM_TYPE); + } + else + { + bool isCommandType = (foundPreCommandHeader + || foundPreCommandMacro + || (currentHeader != nullptr && isNonParenHeader) + || (previousCommandChar == ')') + || (previousCommandChar == ':' && !foundQuestionMark) + || (previousCommandChar == ';') + || ((previousCommandChar == '{' || previousCommandChar == '}') + && isPreviousBraceBlockRelated) + || (isInClassInitializer + && ((!isLegalNameChar(previousNonWSChar) && previousNonWSChar != '(') + || foundPreCommandHeader)) + || foundTrailingReturnType + || isInObjCMethodDefinition + || isInObjCInterface + || isJavaStaticConstructor + || isSharpDelegate); + + // C# methods containing 'get', 'set', 'add', and 'remove' do NOT end with parens + if (!isCommandType && isSharpStyle() && isNextWordSharpNonParenHeader(charNum + 1)) + { + isCommandType = true; + isSharpAccessor = true; + } + + if (isInExternC) + returnVal = (isCommandType ? COMMAND_TYPE : EXTERN_TYPE); + else + returnVal = (isCommandType ? COMMAND_TYPE : ARRAY_TYPE); + } + + int foundOneLineBlock = isOneLineBlockReached(currentLine, charNum); + + if (foundOneLineBlock == 2 && returnVal == COMMAND_TYPE) + returnVal = ARRAY_TYPE; + + if (foundOneLineBlock > 0) + { + returnVal = (BraceType) (returnVal | SINGLE_LINE_TYPE); + if (breakCurrentOneLineBlock) + returnVal = (BraceType) (returnVal | BREAK_BLOCK_TYPE); + if (foundOneLineBlock == 3) + returnVal = (BraceType)(returnVal | EMPTY_BLOCK_TYPE); + } + + if (isBraceType(returnVal, ARRAY_TYPE)) + { + if (isNonInStatementArrayBrace()) + { + returnVal = (BraceType)(returnVal | ARRAY_NIS_TYPE); + isNonInStatementArray = true; + isImmediatelyPostNonInStmt = false; // in case of "},{" + nonInStatementBrace = formattedLine.length() - 1; + } + if (isUniformInitializerBrace()) + returnVal = (BraceType)(returnVal | INIT_TYPE); + } + + return returnVal; +} + +bool ASFormatter::isNumericVariable(string word) const +{ + if (word == "bool" + || word == "int" + || word == "void" + || word == "char" + || word == "long" + || word == "short" + || word == "double" + || word == "float" + || (word.length() >= 4 // check end of word for _t + && word.compare(word.length() - 2, 2, "_t") == 0) +// removed release 3.1 +// || word == "Int32" +// || word == "UInt32" +// || word == "Int64" +// || word == "UInt64" + || word == "BOOL" + || word == "DWORD" + || word == "HWND" + || word == "INT" + || word == "LPSTR" + || word == "VOID" + || word == "LPVOID" + || word == "wxFontEncoding" + ) + return true; + return false; +} + +/** +* check if a colon is a class initializer separator +* +* @return whether it is a class initializer separator +*/ +bool ASFormatter::isClassInitializer() const +{ + assert(currentChar == ':'); + assert(previousChar != ':' && peekNextChar() != ':'); // not part of '::' + + // this should be similar to ASBeautifier::parseCurrentLine() + bool foundClassInitializer = false; + + if (foundQuestionMark) + { + // do nothing special + } + else if (parenStack->back() > 0) + { + // found a 'for' loop or an objective-C statement + // so do nothing special + } + else if (isInEnum) + { + // found an enum with a base-type + } + else if (isCStyle() + && !isInCase + && (previousCommandChar == ')' || foundPreCommandHeader)) + { + // found a 'class' c'tor initializer + foundClassInitializer = true; + } + return foundClassInitializer; +} + +/** + * check if a line is empty + * + * @return whether line is empty + */ +bool ASFormatter::isEmptyLine(const string& line) const +{ + return line.find_first_not_of(" \t") == string::npos; +} + +/** + * Check if the following text is "C" as in extern "C". + * + * @return whether the statement is extern "C" + */ +bool ASFormatter::isExternC() const +{ + // charNum should be at 'extern' + assert(!isWhiteSpace(currentLine[charNum])); + size_t startQuote = currentLine.find_first_of(" \t\"", charNum); + if (startQuote == string::npos) + return false; + startQuote = currentLine.find_first_not_of(" \t", startQuote); + if (startQuote == string::npos) + return false; + if (currentLine.compare(startQuote, 3, "\"C\"") != 0) + return false; + return true; +} + +/** + * Check if the currently reached '*', '&' or '^' character is + * a pointer-or-reference symbol, or another operator. + * A pointer dereference (*) or an "address of" character (&) + * counts as a pointer or reference because it is not an + * arithmetic operator. + * + * @return whether current character is a reference-or-pointer + */ +bool ASFormatter::isPointerOrReference() const +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + + if (isJavaStyle()) + return false; + + if (isCharImmediatelyPostOperator) + return false; + + // get the last legal word (may be a number) + string lastWord = getPreviousWord(currentLine, charNum); + if (lastWord.empty()) + lastWord = " "; + + // check for preceding or following numeric values + string nextText = peekNextText(currentLine.substr(charNum + 1)); + if (nextText.length() == 0) + nextText = " "; + if (isDigit(lastWord[0]) + || isDigit(nextText[0]) + || nextText[0] == '!' + || nextText[0] == '~') + return false; + + // check for multiply then a dereference (a * *b) + char nextChar = peekNextChar(); + if (currentChar == '*' + && nextChar == '*' + && !isPointerToPointer(currentLine, charNum)) + return false; + + if ((foundCastOperator && nextChar == '>') + || isPointerOrReferenceVariable(lastWord)) + return true; + + if (isInClassInitializer + && previousNonWSChar != '(' + && previousNonWSChar != '{' + && previousCommandChar != ',' + && nextChar != ')' + && nextChar != '}') + return false; + + //check for rvalue reference + if (currentChar == '&' && nextChar == '&') + { + if (lastWord == AS_AUTO) + return true; + if (previousNonWSChar == '>') + return true; + string followingText; + if ((int) currentLine.length() > charNum + 2) + followingText = peekNextText(currentLine.substr(charNum + 2)); + if (followingText.length() > 0 && followingText[0] == ')') + return true; + if (currentHeader != nullptr || isInPotentialCalculation) + return false; + if (parenStack->back() > 0 && isBraceType(braceTypeStack->back(), COMMAND_TYPE)) + return false; + return true; + } + if (nextChar == '*' + || previousNonWSChar == '=' + || previousNonWSChar == '(' + || previousNonWSChar == '[' + || isCharImmediatelyPostReturn + || isInTemplate + || isCharImmediatelyPostTemplate + || currentHeader == &AS_CATCH + || currentHeader == &AS_FOREACH + || currentHeader == &AS_QFOREACH) + return true; + + if (isBraceType(braceTypeStack->back(), ARRAY_TYPE) + && isLegalNameChar(lastWord[0]) + && isLegalNameChar(nextChar) + && previousNonWSChar != ')') + { + if (isArrayOperator()) + return false; + } + + // checks on operators in parens + if (parenStack->back() > 0 + && isLegalNameChar(lastWord[0]) + && isLegalNameChar(nextChar)) + { + // if followed by an assignment it is a pointer or reference + // if followed by semicolon it is a pointer or reference in range-based for + const string* followingOperator = getFollowingOperator(); + if (followingOperator != nullptr + && followingOperator != &AS_MULT + && followingOperator != &AS_BIT_AND) + { + if (followingOperator == &AS_ASSIGN || followingOperator == &AS_COLON) + return true; + return false; + } + + if (isBraceType(braceTypeStack->back(), COMMAND_TYPE) + || squareBracketCount > 0) + return false; + return true; + } + + // checks on operators in parens with following '(' + if (parenStack->back() > 0 + && nextChar == '(' + && previousNonWSChar != ',' + && previousNonWSChar != '(' + && previousNonWSChar != '!' + && previousNonWSChar != '&' + && previousNonWSChar != '*' + && previousNonWSChar != '|') + return false; + + if (nextChar == '-' + || nextChar == '+') + { + size_t nextNum = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextNum != string::npos) + { + if (currentLine.compare(nextNum, 2, "++") != 0 + && currentLine.compare(nextNum, 2, "--") != 0) + return false; + } + } + + bool isPR = (!isInPotentialCalculation + || (!isLegalNameChar(previousNonWSChar) + && !(previousNonWSChar == ')' && nextChar == '(') + && !(previousNonWSChar == ')' && currentChar == '*' && !isImmediatelyPostCast()) + && previousNonWSChar != ']') + || (!isWhiteSpace(nextChar) + && nextChar != '-' + && nextChar != '(' + && nextChar != '[' + && !isLegalNameChar(nextChar)) + ); + + return isPR; +} + +/** + * Check if the currently reached '*' or '&' character is + * a dereferenced pointer or "address of" symbol. + * NOTE: this MUST be a pointer or reference as determined by + * the function isPointerOrReference(). + * + * @return whether current character is a dereference or address of + */ +bool ASFormatter::isDereferenceOrAddressOf() const +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + + if (isCharImmediatelyPostTemplate) + return false; + + if (previousNonWSChar == '=' + || previousNonWSChar == ',' + || previousNonWSChar == '.' + || previousNonWSChar == '{' + || previousNonWSChar == '>' + || previousNonWSChar == '<' + || previousNonWSChar == '?' + || isCharImmediatelyPostLineComment + || isCharImmediatelyPostComment + || isCharImmediatelyPostReturn) + return true; + + char nextChar = peekNextChar(); + if (currentChar == '*' && nextChar == '*') + { + if (previousNonWSChar == '(') + return true; + if ((int) currentLine.length() < charNum + 2) + return true; + return false; + } + if (currentChar == '&' && nextChar == '&') + { + if (previousNonWSChar == '(' || isInTemplate) + return true; + if ((int) currentLine.length() < charNum + 2) + return true; + return false; + } + + // check first char on the line + if (charNum == (int) currentLine.find_first_not_of(" \t") + && (isBraceType(braceTypeStack->back(), COMMAND_TYPE) + || parenStack->back() != 0)) + return true; + + string nextText = peekNextText(currentLine.substr(charNum + 1)); + if (nextText.length() > 0) + { + if (nextText[0] == ')' || nextText[0] == '>' + || nextText[0] == ',' || nextText[0] == '=') + return false; + if (nextText[0] == ';') + return true; + } + + // check for reference to a pointer *& + if ((currentChar == '*' && nextChar == '&') + || (previousNonWSChar == '*' && currentChar == '&')) + return false; + + if (!isBraceType(braceTypeStack->back(), COMMAND_TYPE) + && parenStack->back() == 0) + return false; + + string lastWord = getPreviousWord(currentLine, charNum); + if (lastWord == "else" || lastWord == "delete") + return true; + + if (isPointerOrReferenceVariable(lastWord)) + return false; + + bool isDA = (!(isLegalNameChar(previousNonWSChar) || previousNonWSChar == '>') + || (nextText.length() > 0 && !isLegalNameChar(nextText[0]) && nextText[0] != '/') + || (ispunct((unsigned char)previousNonWSChar) && previousNonWSChar != '.') + || isCharImmediatelyPostReturn); + + return isDA; +} + +/** + * Check if the currently reached '*' or '&' character is + * centered with one space on each side. + * Only spaces are checked, not tabs. + * If true then a space will be deleted on the output. + * + * @return whether current character is centered. + */ +bool ASFormatter::isPointerOrReferenceCentered() const +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + + int prNum = charNum; + int lineLength = (int) currentLine.length(); + + // check for end of line + if (peekNextChar() == ' ') + return false; + + // check space before + if (prNum < 1 + || currentLine[prNum - 1] != ' ') + return false; + + // check no space before that + if (prNum < 2 + || currentLine[prNum - 2] == ' ') + return false; + + // check for ** or && + if (prNum + 1 < lineLength + && (currentLine[prNum + 1] == '*' || currentLine[prNum + 1] == '&')) + prNum++; + + // check space after + if (prNum + 1 <= lineLength + && currentLine[prNum + 1] != ' ') + return false; + + // check no space after that + if (prNum + 2 < lineLength + && currentLine[prNum + 2] == ' ') + return false; + + return true; +} + +/** + * Check if a word is a pointer or reference variable type. + * + * @return whether word is a pointer or reference variable. + */ +bool ASFormatter::isPointerOrReferenceVariable(const string& word) const +{ + return (word == "char" + || word == "int" + || word == "void" + || (word.length() >= 6 // check end of word for _t + && word.compare(word.length() - 2, 2, "_t") == 0) + || word == "INT" + || word == "VOID"); +} + +/** + * Check if * * is a pointer to a pointer or a multiply then a dereference. + * + * @return true if a pointer *. + */ +bool ASFormatter::isPointerToPointer(const string& line, int currPos) const +{ + assert(line[currPos] == '*' && peekNextChar() == '*'); + if ((int) line.length() > currPos + 1 && line[currPos + 1] == '*') + return true; + size_t nextText = line.find_first_not_of(" \t", currPos + 1); + if (nextText == string::npos || line[nextText] != '*') + return false; + size_t nextText2 = line.find_first_not_of(" \t", nextText + 1); + if (nextText == string::npos) + return false; + if (line[nextText2] == ')' || line[nextText2] == '*') + return true; + return false; +} + +/** + * check if the currently reached '+' or '-' character is a unary operator + * this method takes for granted that the current character + * is a '+' or '-'. + * + * @return whether the current '+' or '-' is a unary operator. + */ +bool ASFormatter::isUnaryOperator() const +{ + assert(currentChar == '+' || currentChar == '-'); + + // does a digit follow a c-style cast + if (previousCommandChar == ')') + { + if (!isdigit(peekNextChar())) + return false; + size_t end = currentLine.rfind(')', charNum); + if (end == string::npos) + return false; + size_t lastChar = currentLine.find_last_not_of(" \t", end - 1); + if (lastChar == string::npos) + return false; + if (currentLine[lastChar] == '*') + end = lastChar; + string prevWord = getPreviousWord(currentLine, end); + if (prevWord.empty()) + return false; + if (!isNumericVariable(prevWord)) + return false; + return true; + } + + return ((isCharImmediatelyPostReturn || !isLegalNameChar(previousCommandChar)) + && previousCommandChar != '.' + && previousCommandChar != '\"' + && previousCommandChar != '\'' + && previousCommandChar != ']'); +} + +/** + * check if the currently reached comment is in a 'switch' statement + * + * @return whether the current '+' or '-' is in an exponent. + */ +bool ASFormatter::isInSwitchStatement() const +{ + assert(isInLineComment || isInComment); + if (!preBraceHeaderStack->empty()) + for (size_t i = 1; i < preBraceHeaderStack->size(); i++) + if (preBraceHeaderStack->at(i) == &AS_SWITCH) + return true; + return false; +} + +/** + * check if the currently reached '+' or '-' character is + * part of an exponent, i.e. 0.2E-5. + * + * @return whether the current '+' or '-' is in an exponent. + */ +bool ASFormatter::isInExponent() const +{ + assert(currentChar == '+' || currentChar == '-'); + + if (charNum >= 2) + { + char prevPrevFormattedChar = currentLine[charNum - 2]; + char prevFormattedChar = currentLine[charNum - 1]; + return ((prevFormattedChar == 'e' || prevFormattedChar == 'E') + && (prevPrevFormattedChar == '.' || isDigit(prevPrevFormattedChar))); + } + return false; +} + +/** + * check if an array brace should NOT have an in-statement indent + * + * @return the array is non in-statement + */ +bool ASFormatter::isNonInStatementArrayBrace() const +{ + bool returnVal = false; + char nextChar = peekNextChar(); + // if this opening brace begins the line there will be no inStatement indent + if (currentLineBeginsWithBrace + && (size_t) charNum == currentLineFirstBraceNum + && nextChar != '}') + returnVal = true; + // if an opening brace ends the line there will be no inStatement indent + if (isWhiteSpace(nextChar) + || isBeforeAnyLineEndComment(charNum) + || nextChar == '{') + returnVal = true; + + // Java "new Type [] {...}" IS an inStatement indent + if (isJavaStyle() && previousNonWSChar == ']') + returnVal = false; + + return returnVal; +} + +/** + * check if a one-line block has been reached, + * i.e. if the currently reached '{' character is closed + * with a complimentary '}' elsewhere on the current line, + *. + * @return 0 = one-line block has not been reached. + * 1 = one-line block has been reached. + * 2 = one-line block has been reached and is followed by a comma. + * 3 = one-line block has been reached and is an empty block. + */ +int ASFormatter::isOneLineBlockReached(const string& line, int startChar) const +{ + assert(line[startChar] == '{'); + + bool isInComment_ = false; + bool isInQuote_ = false; + bool hasText = false; + int braceCount = 0; + int lineLength = line.length(); + char quoteChar_ = ' '; + char ch = ' '; + char prevCh = ' '; + + for (int i = startChar; i < lineLength; ++i) + { + ch = line[i]; + + if (isInComment_) + { + if (line.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + + if (isInQuote_) + { + if (ch == '\\') + ++i; + else if (ch == quoteChar_) + isInQuote_ = false; + continue; + } + + if (ch == '"' + || (ch == '\'' && !isDigitSeparator(line, i))) + { + isInQuote_ = true; + quoteChar_ = ch; + continue; + } + + if (line.compare(i, 2, "//") == 0) + break; + + if (line.compare(i, 2, "/*") == 0) + { + isInComment_ = true; + ++i; + continue; + } + + if (ch == '{') + { + ++braceCount; + continue; + } + if (ch == '}') + { + --braceCount; + if (braceCount == 0) + { + // is this an array? + if (parenStack->back() == 0 && prevCh != '}') + { + size_t peekNum = line.find_first_not_of(" \t", i + 1); + if (peekNum != string::npos && line[peekNum] == ',') + return 2; + } + if (!hasText) + return 3; // is an empty block + return 1; + } + } + if (ch == ';') + continue; + if (!isWhiteSpace(ch)) + { + hasText = true; + prevCh = ch; + } + } + + return 0; +} + +/** + * peek at the next word to determine if it is a C# non-paren header. + * will look ahead in the input file if necessary. + * + * @param startChar position on currentLine to start the search + * @return true if the next word is get or set. + */ +bool ASFormatter::isNextWordSharpNonParenHeader(int startChar) const +{ + // look ahead to find the next non-comment text + string nextText = peekNextText(currentLine.substr(startChar)); + if (nextText.length() == 0) + return false; + if (nextText[0] == '[') + return true; + if (!isCharPotentialHeader(nextText, 0)) + return false; + if (findKeyword(nextText, 0, AS_GET) || findKeyword(nextText, 0, AS_SET) + || findKeyword(nextText, 0, AS_ADD) || findKeyword(nextText, 0, AS_REMOVE)) + return true; + return false; +} + +/** + * peek at the next char to determine if it is an opening brace. + * will look ahead in the input file if necessary. + * this determines a java static constructor. + * + * @param startChar position on currentLine to start the search + * @return true if the next word is an opening brace. + */ +bool ASFormatter::isNextCharOpeningBrace(int startChar) const +{ + bool retVal = false; + string nextText = peekNextText(currentLine.substr(startChar)); + if (nextText.length() > 0 + && nextText.compare(0, 1, "{") == 0) + retVal = true; + return retVal; +} + +/** +* Check if operator and, pointer, and reference padding is disabled. +* Disabling is done thru a NOPAD tag in an ending comment. +* +* @return true if the formatting on this line is disabled. +*/ +bool ASFormatter::isOperatorPaddingDisabled() const +{ + size_t commentStart = currentLine.find("//", charNum); + if (commentStart == string::npos) + { + commentStart = currentLine.find("/*", charNum); + // comment must end on this line + if (commentStart != string::npos) + { + size_t commentEnd = currentLine.find("*/", commentStart + 2); + if (commentEnd == string::npos) + commentStart = string::npos; + } + } + if (commentStart == string::npos) + return false; + size_t noPadStart = currentLine.find("*NOPAD*", commentStart); + if (noPadStart == string::npos) + return false; + return true; +} + +/** +* Determine if an opening array-type brace should have a leading space pad. +* This is to identify C++11 uniform initializers. +*/ +bool ASFormatter::isUniformInitializerBrace() const +{ + if (isCStyle() && !isInEnum && !isImmediatelyPostPreprocessor) + { + if (isInClassInitializer + || isLegalNameChar(previousNonWSChar) + || previousNonWSChar == '(') + return true; + } + return false; +} + +/** +* Determine if there is a following statement on the current line. +*/ +bool ASFormatter::isMultiStatementLine() const +{ + assert((isImmediatelyPostHeader || foundClosingHeader)); + bool isInComment_ = false; + bool isInQuote_ = false; + int semiCount_ = 0; + int parenCount_ = 0; + int braceCount_ = 0; + + for (size_t i = 0; i < currentLine.length(); i++) + { + if (isInComment_) + { + if (currentLine.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + continue; + } + } + if (currentLine.compare(i, 2, "/*") == 0) + { + isInComment_ = true; + continue; + } + if (currentLine.compare(i, 2, "//") == 0) + return false; + if (isInQuote_) + { + if (currentLine[i] == '"' || currentLine[i] == '\'') + isInQuote_ = false; + continue; + } + if (currentLine[i] == '"' || currentLine[i] == '\'') + { + isInQuote_ = true; + continue; + } + if (currentLine[i] == '(') + { + ++parenCount_; + continue; + } + if (currentLine[i] == ')') + { + --parenCount_; + continue; + } + if (parenCount_ > 0) + continue; + if (currentLine[i] == '{') + { + ++braceCount_; + } + if (currentLine[i] == '}') + { + --braceCount_; + } + if (braceCount_ > 0) + continue; + if (currentLine[i] == ';') + { + ++semiCount_; + if (semiCount_ > 1) + return true; + continue; + } + } + return false; +} + +/** + * get the next non-whitespace substring on following lines, bypassing all comments. + * + * @param firstLine the first line to check + * @return the next non-whitespace substring. + */ +string ASFormatter::peekNextText(const string& firstLine, + bool endOnEmptyLine /*false*/, + shared_ptr streamArg /*nullptr*/) const +{ + assert(sourceIterator->getPeekStart() == 0 || streamArg != nullptr); // Borland may need != 0 + bool isFirstLine = true; + string nextLine_ = firstLine; + size_t firstChar = string::npos; + shared_ptr stream = streamArg; + if (stream == nullptr) // Borland may need == 0 + stream = make_shared(sourceIterator); + + // find the first non-blank text, bypassing all comments. + bool isInComment_ = false; + while (stream->hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + nextLine_ = stream->peekNextLine(); + + firstChar = nextLine_.find_first_not_of(" \t"); + if (firstChar == string::npos) + { + if (endOnEmptyLine && !isInComment_) + break; + continue; + } + + if (nextLine_.compare(firstChar, 2, "/*") == 0) + { + firstChar += 2; + isInComment_ = true; + } + + if (isInComment_) + { + firstChar = nextLine_.find("*/", firstChar); + if (firstChar == string::npos) + continue; + firstChar += 2; + isInComment_ = false; + firstChar = nextLine_.find_first_not_of(" \t", firstChar); + if (firstChar == string::npos) + continue; + } + + if (nextLine_.compare(firstChar, 2, "//") == 0) + continue; + + // found the next text + break; + } + + if (firstChar == string::npos) + nextLine_ = ""; + else + nextLine_ = nextLine_.substr(firstChar); + return nextLine_; +} + +/** + * adjust comment position because of adding or deleting spaces + * the spaces are added or deleted to formattedLine + * spacePadNum contains the adjustment + */ +void ASFormatter::adjustComments() +{ + assert(spacePadNum != 0); + assert(isSequenceReached("//") || isSequenceReached("/*")); + + // block comment must be closed on this line with nothing after it + if (isSequenceReached("/*")) + { + size_t endNum = currentLine.find("*/", charNum + 2); + if (endNum == string::npos) + return; + // following line comments may be a tag from AStyleWx //[[)> + size_t nextNum = currentLine.find_first_not_of(" \t", endNum + 2); + if (nextNum != string::npos + && currentLine.compare(nextNum, 2, "//") != 0) + return; + } + + size_t len = formattedLine.length(); + // don't adjust a tab + if (formattedLine[len - 1] == '\t') + return; + // if spaces were removed, need to add spaces before the comment + if (spacePadNum < 0) + { + int adjust = -spacePadNum; // make the number positive + formattedLine.append(adjust, ' '); + } + // if spaces were added, need to delete extra spaces before the comment + // if cannot be done put the comment one space after the last text + else if (spacePadNum > 0) + { + int adjust = spacePadNum; + size_t lastText = formattedLine.find_last_not_of(' '); + if (lastText != string::npos + && lastText < len - adjust - 1) + formattedLine.resize(len - adjust); + else if (len > lastText + 2) + formattedLine.resize(lastText + 2); + else if (len < lastText + 2) + formattedLine.append(len - lastText, ' '); + } +} + +/** + * append the current brace inside the end of line comments + * currentChar contains the brace, it will be appended to formattedLine + * formattedLineCommentNum is the comment location on formattedLine + */ +void ASFormatter::appendCharInsideComments() +{ + if (formattedLineCommentNum == string::npos // does the comment start on the previous line? + || formattedLineCommentNum == 0) + { + appendCurrentChar(); // don't attach + return; + } + assert(formattedLine.compare(formattedLineCommentNum, 2, "//") == 0 + || formattedLine.compare(formattedLineCommentNum, 2, "/*") == 0); + + // find the previous non space char + size_t end = formattedLineCommentNum; + size_t beg = formattedLine.find_last_not_of(" \t", end - 1); + if (beg == string::npos) + { + appendCurrentChar(); // don't attach + return; + } + beg++; + + // insert the brace + if (end - beg < 3) // is there room to insert? + formattedLine.insert(beg, 3 - end + beg, ' '); + if (formattedLine[beg] == '\t') // don't pad with a tab + formattedLine.insert(beg, 1, ' '); + formattedLine[beg + 1] = currentChar; + testForTimeToSplitFormattedLine(); + + if (isBeforeComment()) + breakLine(); + else if (isCharImmediatelyPostLineComment) + shouldBreakLineAtNextChar = true; +} + +/** + * add or remove space padding to operators + * the operators and necessary padding will be appended to formattedLine + * the calling function should have a continue statement after calling this method + * + * @param newOperator the operator to be padded + */ +void ASFormatter::padOperators(const string* newOperator) +{ + assert(shouldPadOperators); + assert(newOperator != nullptr); + + char nextNonWSChar = ASBase::peekNextChar(currentLine, charNum); + bool shouldPad = (newOperator != &AS_SCOPE_RESOLUTION + && newOperator != &AS_PLUS_PLUS + && newOperator != &AS_MINUS_MINUS + && newOperator != &AS_NOT + && newOperator != &AS_BIT_NOT + && newOperator != &AS_ARROW + && !(newOperator == &AS_COLON && !foundQuestionMark // objC methods + && (isInObjCMethodDefinition || isInObjCInterface + || isInObjCSelector || squareBracketCount != 0)) + && !(newOperator == &AS_MINUS && isInExponent()) + && !(newOperator == &AS_PLUS && isInExponent()) + && !((newOperator == &AS_PLUS || newOperator == &AS_MINUS) // check for unary plus or minus + && (previousNonWSChar == '(' + || previousNonWSChar == '[' + || previousNonWSChar == '=' + || previousNonWSChar == ',' + || previousNonWSChar == ':' + || previousNonWSChar == '{')) +//? // commented out in release 2.05.1 - doesn't seem to do anything??? +//x && !((newOperator == &AS_MULT || newOperator == &AS_BIT_AND || newOperator == &AS_AND) +//x && isPointerOrReference()) + && !(newOperator == &AS_MULT + && (previousNonWSChar == '.' + || previousNonWSChar == '>')) // check for -> + && !(newOperator == &AS_MULT && peekNextChar() == '>') + && !((isInTemplate || isImmediatelyPostTemplate) + && (newOperator == &AS_LS || newOperator == &AS_GR)) + && !(newOperator == &AS_GCC_MIN_ASSIGN + && ASBase::peekNextChar(currentLine, charNum + 1) == '>') + && !(newOperator == &AS_GR && previousNonWSChar == '?') + && !(newOperator == &AS_QUESTION // check for Java wildcard + && isJavaStyle() + && (previousNonWSChar == '<' + || nextNonWSChar == '>' + || nextNonWSChar == '.')) + && !(newOperator == &AS_QUESTION // check for C# null conditional operator + && isSharpStyle() + && (nextNonWSChar == '.' + || nextNonWSChar == '[')) + && !isCharImmediatelyPostOperator + && !isInCase + && !isInAsm + && !isInAsmOneLine + && !isInAsmBlock + ); + + // pad before operator + if (shouldPad + && !(newOperator == &AS_COLON + && (!foundQuestionMark && !isInEnum) && currentHeader != &AS_FOR) + && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?) + && currentLine.find(':', charNum + 1) == string::npos) + ) + appendSpacePad(); + appendOperator(*newOperator); + goForward(newOperator->length() - 1); + + currentChar = (*newOperator)[newOperator->length() - 1]; + // pad after operator + // but do not pad after a '-' that is a unary-minus. + if (shouldPad + && !isBeforeAnyComment() + && !(newOperator == &AS_PLUS && isUnaryOperator()) + && !(newOperator == &AS_MINUS && isUnaryOperator()) + && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0) + && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0) + && !(peekNextChar() == ',') + && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?) + && peekNextChar() == '[') + ) + appendSpaceAfter(); +} + +/** + * format pointer or reference + * currentChar contains the pointer or reference + * the symbol and necessary padding will be appended to formattedLine + * the calling function should have a continue statement after calling this method + * + * NOTE: Do NOT use appendCurrentChar() in this method. The line should not be + * broken once the calculation starts. + */ +void ASFormatter::formatPointerOrReference() +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(!isJavaStyle()); + + int pa = pointerAlignment; + int ra = referenceAlignment; + int itemAlignment = (currentChar == '*' || currentChar == '^') + ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra); + + // check for ** and && + int ptrLength = 1; + char peekedChar = peekNextChar(); + if ((currentChar == '*' && peekedChar == '*') + || (currentChar == '&' && peekedChar == '&')) + { + ptrLength = 2; + size_t nextChar = currentLine.find_first_not_of(" \t", charNum + 2); + if (nextChar == string::npos) + peekedChar = ' '; + else + peekedChar = currentLine[nextChar]; + } + // check for cast + if (peekedChar == ')' || peekedChar == '>' || peekedChar == ',') + { + formatPointerOrReferenceCast(); + return; + } + + // check for a padded space and remove it + if (charNum > 0 + && !isWhiteSpace(currentLine[charNum - 1]) + && formattedLine.length() > 0 + && isWhiteSpace(formattedLine[formattedLine.length() - 1])) + { + formattedLine.erase(formattedLine.length() - 1); + spacePadNum--; + } + + if (itemAlignment == PTR_ALIGN_TYPE) + { + formatPointerOrReferenceToType(); + } + else if (itemAlignment == PTR_ALIGN_MIDDLE) + { + formatPointerOrReferenceToMiddle(); + } + else if (itemAlignment == PTR_ALIGN_NAME) + { + formatPointerOrReferenceToName(); + } + else // pointerAlignment == PTR_ALIGN_NONE + { + formattedLine.append(currentLine.substr(charNum, ptrLength)); + if (ptrLength > 1) + goForward(ptrLength - 1); + } +} + +/** + * format pointer or reference with align to type + */ +void ASFormatter::formatPointerOrReferenceToType() +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(!isJavaStyle()); + + // do this before bumping charNum + bool isOldPRCentered = isPointerOrReferenceCentered(); + string sequenceToInsert(1, currentChar); + // get the sequence + if (currentChar == peekNextChar()) + { + for (size_t i = charNum + 1; currentLine.length() > i; i++) + { + if (currentLine[i] == sequenceToInsert[0]) + { + sequenceToInsert.append(1, currentLine[i]); + goForward(1); + continue; + } + break; + } + } + // append the seqence + string charSave; + size_t prevCh = formattedLine.find_last_not_of(" \t"); + if (prevCh < formattedLine.length()) + { + charSave = formattedLine.substr(prevCh + 1); + formattedLine.resize(prevCh + 1); + } + formattedLine.append(sequenceToInsert); + if (peekNextChar() != ')') + formattedLine.append(charSave); + else + spacePadNum -= charSave.length(); + // if no space after then add one + if (charNum < (int) currentLine.length() - 1 + && !isWhiteSpace(currentLine[charNum + 1]) + && currentLine[charNum + 1] != ')') + appendSpacePad(); + // if old pointer or reference is centered, remove a space + if (isOldPRCentered + && isWhiteSpace(formattedLine[formattedLine.length() - 1])) + { + formattedLine.erase(formattedLine.length() - 1, 1); + spacePadNum--; + } + // update the formattedLine split point + if (maxCodeLength != string::npos && formattedLine.length() > 0) + { + size_t index = formattedLine.length() - 1; + if (isWhiteSpace(formattedLine[index])) + { + updateFormattedLineSplitPointsPointerOrReference(index); + testForTimeToSplitFormattedLine(); + } + } +} + +/** + * format pointer or reference with align in the middle + */ +void ASFormatter::formatPointerOrReferenceToMiddle() +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(!isJavaStyle()); + + // compute current whitespace before + size_t wsBefore = currentLine.find_last_not_of(" \t", charNum - 1); + if (wsBefore == string::npos) + wsBefore = 0; + else + wsBefore = charNum - wsBefore - 1; + string sequenceToInsert(1, currentChar); + if (currentChar == peekNextChar()) + { + for (size_t i = charNum + 1; currentLine.length() > i; i++) + { + if (currentLine[i] == sequenceToInsert[0]) + { + sequenceToInsert.append(1, currentLine[i]); + goForward(1); + continue; + } + break; + } + } + // if reference to a pointer check for conflicting alignment + else if (currentChar == '*' && peekNextChar() == '&' + && (referenceAlignment == REF_ALIGN_TYPE + || referenceAlignment == REF_ALIGN_MIDDLE + || referenceAlignment == REF_SAME_AS_PTR)) + { + sequenceToInsert = "*&"; + goForward(1); + for (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++) + goForward(1); + } + // if a comment follows don't align, just space pad + if (isBeforeAnyComment()) + { + appendSpacePad(); + formattedLine.append(sequenceToInsert); + appendSpaceAfter(); + return; + } + // do this before goForward() + bool isAfterScopeResolution = previousNonWSChar == ':'; + size_t charNumSave = charNum; + // if this is the last thing on the line + if (currentLine.find_first_not_of(" \t", charNum + 1) == string::npos) + { + if (wsBefore == 0 && !isAfterScopeResolution) + formattedLine.append(1, ' '); + formattedLine.append(sequenceToInsert); + return; + } + // goForward() to convert tabs to spaces, if necessary, + // and move following characters to preceding characters + // this may not work every time with tab characters + for (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++) + { + goForward(1); + if (formattedLine.length() > 0) + formattedLine.append(1, currentLine[i]); + else + spacePadNum--; + } + // find space padding after + size_t wsAfter = currentLine.find_first_not_of(" \t", charNumSave + 1); + if (wsAfter == string::npos || isBeforeAnyComment()) + wsAfter = 0; + else + wsAfter = wsAfter - charNumSave - 1; + // don't pad before scope resolution operator, but pad after + if (isAfterScopeResolution) + { + size_t lastText = formattedLine.find_last_not_of(" \t"); + formattedLine.insert(lastText + 1, sequenceToInsert); + appendSpacePad(); + } + else if (formattedLine.length() > 0) + { + // whitespace should be at least 2 chars to center + if (wsBefore + wsAfter < 2) + { + size_t charsToAppend = (2 - (wsBefore + wsAfter)); + formattedLine.append(charsToAppend, ' '); + spacePadNum += charsToAppend; + if (wsBefore == 0) + wsBefore++; + if (wsAfter == 0) + wsAfter++; + } + // insert the pointer or reference char + size_t padAfter = (wsBefore + wsAfter) / 2; + size_t index = formattedLine.length() - padAfter; + if (index < formattedLine.length()) + formattedLine.insert(index, sequenceToInsert); + else + formattedLine.append(sequenceToInsert); + } + else // formattedLine.length() == 0 + { + formattedLine.append(sequenceToInsert); + if (wsAfter == 0) + wsAfter++; + formattedLine.append(wsAfter, ' '); + spacePadNum += wsAfter; + } + // update the formattedLine split point after the pointer + if (maxCodeLength != string::npos && formattedLine.length() > 0) + { + size_t index = formattedLine.find_last_not_of(" \t"); + if (index != string::npos && (index < formattedLine.length() - 1)) + { + index++; + updateFormattedLineSplitPointsPointerOrReference(index); + testForTimeToSplitFormattedLine(); + } + } +} + +/** + * format pointer or reference with align to name + */ +void ASFormatter::formatPointerOrReferenceToName() +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(!isJavaStyle()); + + // do this before bumping charNum + bool isOldPRCentered = isPointerOrReferenceCentered(); + + size_t startNum = formattedLine.find_last_not_of(" \t"); + if (startNum == string::npos) + startNum = 0; + string sequenceToInsert(1, currentChar); + if (currentChar == peekNextChar()) + { + for (size_t i = charNum + 1; currentLine.length() > i; i++) + { + if (currentLine[i] == sequenceToInsert[0]) + { + sequenceToInsert.append(1, currentLine[i]); + goForward(1); + continue; + } + break; + } + } + // if reference to a pointer align both to name + else if (currentChar == '*' && peekNextChar() == '&') + { + sequenceToInsert = "*&"; + goForward(1); + for (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++) + goForward(1); + } + char peekedChar = peekNextChar(); + bool isAfterScopeResolution = previousNonWSChar == ':'; // check for :: + // if this is not the last thing on the line + if ((isLegalNameChar(peekedChar) || peekedChar == '(' || peekedChar == '[' || peekedChar == '=') + && (int) currentLine.find_first_not_of(" \t", charNum + 1) > charNum) + { + // goForward() to convert tabs to spaces, if necessary, + // and move following characters to preceding characters + // this may not work every time with tab characters + for (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++) + { + // if a padded paren follows don't move + if (shouldPadParensOutside && peekedChar == '(' && !isOldPRCentered) + { + // empty parens don't count + size_t start = currentLine.find_first_not_of("( \t", i); + if (start != string::npos && currentLine[start] != ')') + break; + } + goForward(1); + if (formattedLine.length() > 0) + formattedLine.append(1, currentLine[charNum]); + else + spacePadNum--; + } + } + // don't pad before scope resolution operator + if (isAfterScopeResolution) + { + size_t lastText = formattedLine.find_last_not_of(" \t"); + if (lastText != string::npos && lastText + 1 < formattedLine.length()) + formattedLine.erase(lastText + 1); + } + // if no space before * then add one + else if (formattedLine.length() > 0 + && (formattedLine.length() <= startNum + 1 + || !isWhiteSpace(formattedLine[startNum + 1]))) + { + formattedLine.insert(startNum + 1, 1, ' '); + spacePadNum++; + } + appendSequence(sequenceToInsert, false); + // if old pointer or reference is centered, remove a space + if (isOldPRCentered + && formattedLine.length() > startNum + 1 + && isWhiteSpace(formattedLine[startNum + 1]) + && peekedChar != '*' // check for '* *' + && !isBeforeAnyComment()) + { + formattedLine.erase(startNum + 1, 1); + spacePadNum--; + } + // don't convert to *= or &= + if (peekedChar == '=') + { + appendSpaceAfter(); + // if more than one space before, delete one + if (formattedLine.length() > startNum + && isWhiteSpace(formattedLine[startNum + 1]) + && isWhiteSpace(formattedLine[startNum + 2])) + { + formattedLine.erase(startNum + 1, 1); + spacePadNum--; + } + } + // update the formattedLine split point + if (maxCodeLength != string::npos) + { + size_t index = formattedLine.find_last_of(" \t"); + if (index != string::npos + && index < formattedLine.length() - 1 + && (formattedLine[index + 1] == '*' + || formattedLine[index + 1] == '&' + || formattedLine[index + 1] == '^')) + { + updateFormattedLineSplitPointsPointerOrReference(index); + testForTimeToSplitFormattedLine(); + } + } +} + +/** + * format pointer or reference cast + * currentChar contains the pointer or reference + * NOTE: the pointers and references in function definitions + * are processed as a cast (e.g. void foo(void*, void*)) + * is processed here. + */ +void ASFormatter::formatPointerOrReferenceCast() +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(!isJavaStyle()); + + int pa = pointerAlignment; + int ra = referenceAlignment; + int itemAlignment = (currentChar == '*' || currentChar == '^') + ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra); + + string sequenceToInsert(1, currentChar); + if (isSequenceReached("**") || isSequenceReached("&&")) + { + goForward(1); + sequenceToInsert.append(1, currentLine[charNum]); + } + if (itemAlignment == PTR_ALIGN_NONE) + { + appendSequence(sequenceToInsert, false); + return; + } + // remove preceding whitespace + char prevCh = ' '; + size_t prevNum = formattedLine.find_last_not_of(" \t"); + if (prevNum != string::npos) + { + prevCh = formattedLine[prevNum]; + if (itemAlignment == PTR_ALIGN_TYPE && currentChar == '*' && prevCh == '*') + { + // '* *' may be a multiply followed by a dereference + if (prevNum + 2 < formattedLine.length() + && isWhiteSpace(formattedLine[prevNum + 2])) + { + spacePadNum -= (formattedLine.length() - 2 - prevNum); + formattedLine.erase(prevNum + 2); + } + } + else if (prevNum + 1 < formattedLine.length() + && isWhiteSpace(formattedLine[prevNum + 1]) + && prevCh != '(') + { + spacePadNum -= (formattedLine.length() - 1 - prevNum); + formattedLine.erase(prevNum + 1); + } + } + bool isAfterScopeResolution = previousNonWSChar == ':'; + if ((itemAlignment == PTR_ALIGN_MIDDLE || itemAlignment == PTR_ALIGN_NAME) + && !isAfterScopeResolution && prevCh != '(') + { + appendSpacePad(); + // in this case appendSpacePad may or may not update the split point + if (maxCodeLength != string::npos && formattedLine.length() > 0) + updateFormattedLineSplitPointsPointerOrReference(formattedLine.length() - 1); + appendSequence(sequenceToInsert, false); + } + else + appendSequence(sequenceToInsert, false); +} + +/** + * add or remove space padding to parens + * currentChar contains the paren + * the parens and necessary padding will be appended to formattedLine + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::padParens() +{ + assert(currentChar == '(' || currentChar == ')'); + assert(shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen); + + int spacesOutsideToDelete = 0; + int spacesInsideToDelete = 0; + + if (currentChar == '(') + { + spacesOutsideToDelete = formattedLine.length() - 1; + spacesInsideToDelete = 0; + + // compute spaces outside the opening paren to delete + if (shouldUnPadParens) + { + char lastChar = ' '; + bool prevIsParenHeader = false; + size_t i = formattedLine.find_last_not_of(" \t"); + if (i != string::npos) + { + // if last char is a brace the previous whitespace is an indent + if (formattedLine[i] == '{') + spacesOutsideToDelete = 0; + else if (isCharImmediatelyPostPointerOrReference) + spacesOutsideToDelete = 0; + else + { + spacesOutsideToDelete -= i; + lastChar = formattedLine[i]; + // if previous word is a header, it will be a paren header + string prevWord = getPreviousWord(formattedLine, formattedLine.length()); + const string* prevWordH = nullptr; + if (shouldPadHeader + && prevWord.length() > 0 + && isCharPotentialHeader(prevWord, 0)) + prevWordH = ASBase::findHeader(prevWord, 0, headers); + if (prevWordH != nullptr) + prevIsParenHeader = true; // don't unpad + else if (prevWord == AS_RETURN) + prevIsParenHeader = true; // don't unpad + else if ((prevWord == AS_NEW || prevWord == AS_DELETE) + && shouldPadHeader) + prevIsParenHeader = true; // don't unpad + else if (isCStyle() && prevWord == AS_THROW && shouldPadHeader) + prevIsParenHeader = true; // don't unpad + else if (prevWord == "and" || prevWord == "or" || prevWord == "in") + prevIsParenHeader = true; // don't unpad + // don't unpad variables + else if (isNumericVariable(prevWord)) + prevIsParenHeader = true; // don't unpad + } + } + // do not unpad operators, but leave them if already padded + if (shouldPadParensOutside || prevIsParenHeader) + spacesOutsideToDelete--; + else if (lastChar == '|' // check for || + || lastChar == '&' // check for && + || lastChar == ',' + || (lastChar == '(' && shouldPadParensInside) + || (lastChar == '>' && !foundCastOperator) + || lastChar == '<' + || lastChar == '?' + || lastChar == ':' + || lastChar == ';' + || lastChar == '=' + || lastChar == '+' + || lastChar == '-' + || lastChar == '*' + || lastChar == '/' + || lastChar == '%' + || lastChar == '^' + ) + spacesOutsideToDelete--; + + if (spacesOutsideToDelete > 0) + { + formattedLine.erase(i + 1, spacesOutsideToDelete); + spacePadNum -= spacesOutsideToDelete; + } + } + + // pad open paren outside + char peekedCharOutside = peekNextChar(); + if (shouldPadFirstParen && previousChar != '(' && peekedCharOutside != ')') + appendSpacePad(); + else if (shouldPadParensOutside) + { + if (!(currentChar == '(' && peekedCharOutside == ')')) + appendSpacePad(); + } + + appendCurrentChar(); + + // unpad open paren inside + if (shouldUnPadParens) + { + size_t j = currentLine.find_first_not_of(" \t", charNum + 1); + if (j != string::npos) + spacesInsideToDelete = j - charNum - 1; + if (shouldPadParensInside) + spacesInsideToDelete--; + if (spacesInsideToDelete > 0) + { + currentLine.erase(charNum + 1, spacesInsideToDelete); + spacePadNum -= spacesInsideToDelete; + } + // convert tab to space if requested + if (shouldConvertTabs + && (int) currentLine.length() > charNum + 1 + && currentLine[charNum + 1] == '\t') + currentLine[charNum + 1] = ' '; + } + + // pad open paren inside + char peekedCharInside = peekNextChar(); + if (shouldPadParensInside) + if (!(currentChar == '(' && peekedCharInside == ')')) + appendSpaceAfter(); + } + else if (currentChar == ')') + { + // unpad close paren inside + if (shouldUnPadParens) + { + spacesInsideToDelete = formattedLine.length(); + size_t i = formattedLine.find_last_not_of(" \t"); + if (i != string::npos) + spacesInsideToDelete = formattedLine.length() - 1 - i; + if (shouldPadParensInside) + spacesInsideToDelete--; + if (spacesInsideToDelete > 0) + { + formattedLine.erase(i + 1, spacesInsideToDelete); + spacePadNum -= spacesInsideToDelete; + } + } + + // pad close paren inside + if (shouldPadParensInside) + if (!(previousChar == '(' && currentChar == ')')) + appendSpacePad(); + + appendCurrentChar(); + + // unpad close paren outside + // close parens outside are left unchanged + if (shouldUnPadParens) + { + //spacesOutsideToDelete = 0; + //size_t j = currentLine.find_first_not_of(" \t", charNum + 1); + //if (j != string::npos) + // spacesOutsideToDelete = j - charNum - 1; + //if (shouldPadParensOutside) + // spacesOutsideToDelete--; + + //if (spacesOutsideToDelete > 0) + //{ + // currentLine.erase(charNum + 1, spacesOutsideToDelete); + // spacePadNum -= spacesOutsideToDelete; + //} + } + + // pad close paren outside + char peekedCharOutside = peekNextChar(); + if (shouldPadParensOutside) + if (peekedCharOutside != ';' + && peekedCharOutside != ',' + && peekedCharOutside != '.' + && peekedCharOutside != '+' // check for ++ + && peekedCharOutside != '-' // check for -- + && peekedCharOutside != ']') + appendSpaceAfter(); + } +} + +/** +* add or remove space padding to objective-c method prefix (- or +) +* if this is a '(' it begins a return type +* these options have precedence over the padParens methods +* the padParens method has already been called, this method adjusts +*/ +void ASFormatter::padObjCMethodPrefix() +{ + assert(isInObjCMethodDefinition && isImmediatelyPostObjCMethodPrefix); + assert(shouldPadMethodPrefix || shouldUnPadMethodPrefix); + + size_t prefix = formattedLine.find_first_of("+-"); + if (prefix == string::npos) + return; + size_t firstChar = formattedLine.find_first_not_of(" \t", prefix + 1); + if (firstChar == string::npos) + firstChar = formattedLine.length(); + int spaces = firstChar - prefix - 1; + + if (shouldPadMethodPrefix) + { + if (spaces == 0) + { + formattedLine.insert(prefix + 1, 1, ' '); + spacePadNum += 1; + } + else if (spaces > 1) + { + formattedLine.erase(prefix + 1, spaces - 1); + formattedLine[prefix + 1] = ' '; // convert any tab to space + spacePadNum -= spaces - 1; + } + } + // this option will be ignored if used with pad-method-prefix + else if (shouldUnPadMethodPrefix) + { + if (spaces > 0) + { + formattedLine.erase(prefix + 1, spaces); + spacePadNum -= spaces; + } + } +} + +/** +* add or remove space padding to objective-c parens +* these options have precedence over the padParens methods +* the padParens method has already been called, this method adjusts +*/ +void ASFormatter::padObjCReturnType() +{ + assert(currentChar == ')' && isInObjCReturnType); + assert(shouldPadReturnType || shouldUnPadReturnType); + + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextText == string::npos) + return; + int spaces = nextText - charNum - 1; + + if (shouldPadReturnType) + { + if (spaces == 0) + { + // this will already be padded if pad-paren is used + if (formattedLine[formattedLine.length() - 1] != ' ') + { + formattedLine.append(" "); + spacePadNum += 1; + } + } + else if (spaces > 1) + { + // do not use goForward here + currentLine.erase(charNum + 1, spaces - 1); + currentLine[charNum + 1] = ' '; // convert any tab to space + spacePadNum -= spaces - 1; + } + } + // this option will be ignored if used with pad-return-type + else if (shouldUnPadReturnType) + { + // this will already be padded if pad-paren is used + if (formattedLine[formattedLine.length() - 1] == ' ') + { + int lastText = formattedLine.find_last_not_of(" \t"); + spacePadNum -= formattedLine.length() - lastText - 1; + formattedLine.resize(lastText + 1); + } + // do not use goForward here + currentLine.erase(charNum + 1, spaces); + spacePadNum -= spaces; + } +} + +/** +* add or remove space padding to objective-c parens +* these options have precedence over the padParens methods +* the padParens method has already been called, this method adjusts +*/ +void ASFormatter::padObjCParamType() +{ + assert((currentChar == '(' || currentChar == ')') && isInObjCMethodDefinition); + assert(!isImmediatelyPostObjCMethodPrefix && !isInObjCReturnType); + assert(shouldPadParamType || shouldUnPadParamType); + + if (currentChar == '(') + { + // open paren has already been attached to formattedLine by padParen + size_t paramOpen = formattedLine.rfind('('); + assert(paramOpen != string::npos); + size_t prevText = formattedLine.find_last_not_of(" \t", paramOpen - 1); + if (prevText == string::npos) + return; + int spaces = paramOpen - prevText - 1; + + if (shouldPadParamType + || objCColonPadMode == COLON_PAD_ALL + || objCColonPadMode == COLON_PAD_AFTER) + { + if (spaces == 0) + { + formattedLine.insert(paramOpen, 1, ' '); + spacePadNum += 1; + } + if (spaces > 1) + { + formattedLine.erase(prevText + 1, spaces - 1); + formattedLine[prevText + 1] = ' '; // convert any tab to space + spacePadNum -= spaces - 1; + } + } + // this option will be ignored if used with pad-param-type + else if (shouldUnPadParamType + || objCColonPadMode == COLON_PAD_NONE + || objCColonPadMode == COLON_PAD_BEFORE) + { + if (spaces > 0) + { + formattedLine.erase(prevText + 1, spaces); + spacePadNum -= spaces; + } + } + } + else if (currentChar == ')') + { + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextText == string::npos) + return; + int spaces = nextText - charNum - 1; + + if (shouldPadParamType) + { + if (spaces == 0) + { + // this will already be padded if pad-paren is used + if (formattedLine[formattedLine.length() - 1] != ' ') + { + formattedLine.append(" "); + spacePadNum += 1; + } + } + else if (spaces > 1) + { + // do not use goForward here + currentLine.erase(charNum + 1, spaces - 1); + currentLine[charNum + 1] = ' '; // convert any tab to space + spacePadNum -= spaces - 1; + } + } + // this option will be ignored if used with pad-param-type + else if (shouldUnPadParamType) + { + // this will already be padded if pad-paren is used + if (formattedLine[formattedLine.length() - 1] == ' ') + { + spacePadNum -= 1; + int lastText = formattedLine.find_last_not_of(" \t"); + formattedLine.resize(lastText + 1); + } + if (spaces > 0) + { + // do not use goForward here + currentLine.erase(charNum + 1, spaces); + spacePadNum -= spaces; + } + } + } +} + +/** + * format opening brace as attached or broken + * currentChar contains the brace + * the braces will be appended to the current formattedLine or a new formattedLine as necessary + * the calling function should have a continue statement after calling this method + * + * @param braceType the type of brace to be formatted. + */ +void ASFormatter::formatOpeningBrace(BraceType braceType) +{ + assert(!isBraceType(braceType, ARRAY_TYPE)); + assert(currentChar == '{'); + + parenStack->emplace_back(0); + + bool breakBrace = isCurrentBraceBroken(); + + if (breakBrace) + { + if (isBeforeAnyComment() && isOkToBreakBlock(braceType) && sourceIterator->hasMoreLines()) + { + // if comment is at line end leave the comment on this line + if (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBrace) + { + currentChar = ' '; // remove brace from current line + if (parenStack->size() > 1) + parenStack->pop_back(); + currentLine[charNum] = currentChar; + appendOpeningBrace = true; // append brace to following line + } + // else put comment after the brace + else if (!isBeforeMultipleLineEndComments(charNum)) + breakLine(); + } + else if (!isBraceType(braceType, SINGLE_LINE_TYPE)) + { + formattedLine = rtrim(formattedLine); + breakLine(); + } + else if ((shouldBreakOneLineBlocks || isBraceType(braceType, BREAK_BLOCK_TYPE)) + && !isBraceType(braceType, EMPTY_BLOCK_TYPE)) + breakLine(); + else if (!isInLineBreak) + appendSpacePad(); + + appendCurrentChar(); + + // should a following comment break from the brace? + // must break the line AFTER the brace + if (isBeforeComment() + && formattedLine.length() > 0 + && formattedLine[0] == '{' + && isOkToBreakBlock(braceType) + && (braceFormatMode == BREAK_MODE + || braceFormatMode == LINUX_MODE)) + { + shouldBreakLineAtNextChar = true; + } + } + else // attach brace + { + // are there comments before the brace? + if (isCharImmediatelyPostComment || isCharImmediatelyPostLineComment) + { + if (isOkToBreakBlock(braceType) + && !(isCharImmediatelyPostComment && isCharImmediatelyPostLineComment) // don't attach if two comments on the line + && !isImmediatelyPostPreprocessor +// && peekNextChar() != '}' // don't attach { } // removed release 2.03 + && previousCommandChar != '{' // don't attach { { + && previousCommandChar != '}' // don't attach } { + && previousCommandChar != ';') // don't attach ; { + { + appendCharInsideComments(); + } + else + { + appendCurrentChar(); // don't attach + } + } + else if (previousCommandChar == '{' + || (previousCommandChar == '}' && !isInClassInitializer) + || previousCommandChar == ';') // '}' , ';' chars added for proper handling of '{' immediately after a '}' or ';' + { + appendCurrentChar(); // don't attach + } + else + { + // if a blank line precedes this don't attach + if (isEmptyLine(formattedLine)) + appendCurrentChar(); // don't attach + else if (isOkToBreakBlock(braceType) + && !(isImmediatelyPostPreprocessor + && currentLineBeginsWithBrace)) + { + if (!isBraceType(braceType, EMPTY_BLOCK_TYPE)) + { + appendSpacePad(); + appendCurrentChar(false); // OK to attach + testForTimeToSplitFormattedLine(); // line length will have changed + // should a following comment attach with the brace? + // insert spaces to reposition the comment + if (isBeforeComment() + && !isBeforeMultipleLineEndComments(charNum) + && (!isBeforeAnyLineEndComment(charNum) || currentLineBeginsWithBrace)) + { + shouldBreakLineAtNextChar = true; + currentLine.insert(charNum + 1, charNum + 1, ' '); + } + else if (!isBeforeAnyComment()) // added in release 2.03 + { + shouldBreakLineAtNextChar = true; + } + } + else + { + if (currentLineBeginsWithBrace && (size_t) charNum == currentLineFirstBraceNum) + { + appendSpacePad(); + appendCurrentChar(false); // attach + shouldBreakLineAtNextChar = true; + } + else + { + appendSpacePad(); + appendCurrentChar(); // don't attach + } + } + } + else + { + if (!isInLineBreak) + appendSpacePad(); + appendCurrentChar(); // don't attach + } + } + } +} + +/** + * format closing brace + * currentChar contains the brace + * the calling function should have a continue statement after calling this method + * + * @param braceType the type of the opening brace for this closing brace. + */ +void ASFormatter::formatClosingBrace(BraceType braceType) +{ + assert(!isBraceType(braceType, ARRAY_TYPE)); + assert(currentChar == '}'); + + // parenStack must contain one entry + if (parenStack->size() > 1) + parenStack->pop_back(); + + // mark state of immediately after empty block + // this state will be used for locating braces that appear immediately AFTER an empty block (e.g. '{} \n}'). + if (previousCommandChar == '{') + isImmediatelyPostEmptyBlock = true; + + if (attachClosingBraceMode) + { + // for now, namespaces and classes will be attached. Uncomment the lines below to break. + if ((isEmptyLine(formattedLine) // if a blank line precedes this + || isCharImmediatelyPostLineComment + || isCharImmediatelyPostComment + || (isImmediatelyPostPreprocessor && (int) currentLine.find_first_not_of(" \t") == charNum) +// || (isBraceType(braceType, CLASS_TYPE) && isOkToBreakBlock(braceType) && previousNonWSChar != '{') +// || (isBraceType(braceType, NAMESPACE_TYPE) && isOkToBreakBlock(braceType) && previousNonWSChar != '{') + ) + && (!isBraceType(braceType, SINGLE_LINE_TYPE) || isOkToBreakBlock(braceType))) + { + breakLine(); + appendCurrentChar(); // don't attach + } + else + { + if (previousNonWSChar != '{' + && (!isBraceType(braceType, SINGLE_LINE_TYPE) + || isOkToBreakBlock(braceType))) + appendSpacePad(); + appendCurrentChar(false); // attach + } + } + else if (!isBraceType(braceType, EMPTY_BLOCK_TYPE) + && (isBraceType(braceType, BREAK_BLOCK_TYPE) + || isOkToBreakBlock(braceType))) + { + breakLine(); + appendCurrentChar(); + } + else + { + appendCurrentChar(); + } + + // if a declaration follows a definition, space pad + if (isLegalNameChar(peekNextChar())) + appendSpaceAfter(); + + if (shouldBreakBlocks + && currentHeader != nullptr + && !isHeaderInMultiStatementLine + && parenStack->back() == 0) + { + if (currentHeader == &AS_CASE || currentHeader == &AS_DEFAULT) + { + // do not yet insert a line if "break" statement is outside the braces + string nextText = peekNextText(currentLine.substr(charNum + 1)); + if (nextText.length() > 0 + && nextText.substr(0, 5) != "break") + isAppendPostBlockEmptyLineRequested = true; + } + else + isAppendPostBlockEmptyLineRequested = true; + } +} + +/** + * format array braces as attached or broken + * determine if the braces can have an inStatement indent + * currentChar contains the brace + * the braces will be appended to the current formattedLine or a new formattedLine as necessary + * the calling function should have a continue statement after calling this method + * + * @param braceType the type of brace to be formatted, must be an ARRAY_TYPE. + * @param isOpeningArrayBrace indicates if this is the opening brace for the array block. + */ +void ASFormatter::formatArrayBraces(BraceType braceType, bool isOpeningArrayBrace) +{ + assert(isBraceType(braceType, ARRAY_TYPE)); + assert(currentChar == '{' || currentChar == '}'); + + if (currentChar == '{') + { + // is this the first opening brace in the array? + if (isOpeningArrayBrace) + { + if (braceFormatMode == ATTACH_MODE + || braceFormatMode == LINUX_MODE) + { + // break an enum if mozilla + if (isBraceType(braceType, ENUM_TYPE) + && formattingStyle == STYLE_MOZILLA) + { + isInLineBreak = true; + appendCurrentChar(); // don't attach + } + // don't attach to a preprocessor directive or '\' line + else if ((isImmediatelyPostPreprocessor + || (formattedLine.length() > 0 + && formattedLine[formattedLine.length() - 1] == '\\')) + && currentLineBeginsWithBrace) + { + isInLineBreak = true; + appendCurrentChar(); // don't attach + } + else if (isCharImmediatelyPostComment) + { + // TODO: attach brace to line-end comment + appendCurrentChar(); // don't attach + } + else if (isCharImmediatelyPostLineComment && !isBraceType(braceType, SINGLE_LINE_TYPE)) + { + appendCharInsideComments(); + } + else + { + // if a blank line precedes this don't attach + if (isEmptyLine(formattedLine)) + appendCurrentChar(); // don't attach + else + { + // if brace is broken or not an assignment + if (currentLineBeginsWithBrace + && !isBraceType(braceType, SINGLE_LINE_TYPE)) + { + appendSpacePad(); + appendCurrentChar(false); // OK to attach + // TODO: debug the following line + testForTimeToSplitFormattedLine(); // line length will have changed + + if (currentLineBeginsWithBrace + && currentLineFirstBraceNum == (size_t) charNum) + shouldBreakLineAtNextChar = true; + } + else + { + if (previousNonWSChar != '(') + { + // don't space pad C++11 uniform initialization + if (!isBraceType(braceType, INIT_TYPE)) + appendSpacePad(); + } + appendCurrentChar(); + } + } + } + } + else if (braceFormatMode == BREAK_MODE) + { + if (isWhiteSpace(peekNextChar()) && !isInVirginLine) + breakLine(); + else if (isBeforeAnyComment() && sourceIterator->hasMoreLines()) + { + // do not break unless comment is at line end + if (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBrace) + { + currentChar = ' '; // remove brace from current line + appendOpeningBrace = true; // append brace to following line + } + } + if (!isInLineBreak && previousNonWSChar != '(') + { + // don't space pad C++11 uniform initialization + if (!isBraceType(braceType, INIT_TYPE)) + appendSpacePad(); + } + appendCurrentChar(); + + if (currentLineBeginsWithBrace + && currentLineFirstBraceNum == (size_t) charNum + && !isBraceType(braceType, SINGLE_LINE_TYPE)) + shouldBreakLineAtNextChar = true; + } + else if (braceFormatMode == RUN_IN_MODE) + { + if (isWhiteSpace(peekNextChar()) && !isInVirginLine) + breakLine(); + else if (isBeforeAnyComment() && sourceIterator->hasMoreLines()) + { + // do not break unless comment is at line end + if (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBrace) + { + currentChar = ' '; // remove brace from current line + appendOpeningBrace = true; // append brace to following line + } + } + if (!isInLineBreak && previousNonWSChar != '(') + { + // don't space pad C++11 uniform initialization + if (!isBraceType(braceType, INIT_TYPE)) + appendSpacePad(); + } + appendCurrentChar(); + } + else if (braceFormatMode == NONE_MODE) + { + if (currentLineBeginsWithBrace + && (size_t) charNum == currentLineFirstBraceNum) + { + appendCurrentChar(); // don't attach + } + else + { + if (previousNonWSChar != '(') + { + // don't space pad C++11 uniform initialization + if (!isBraceType(braceType, INIT_TYPE)) + appendSpacePad(); + } + appendCurrentChar(false); // OK to attach + } + } + } + else // not the first opening brace + { + if (braceFormatMode == RUN_IN_MODE) + { + if (previousNonWSChar == '{' + && braceTypeStack->size() > 2 + && !isBraceType((*braceTypeStack)[braceTypeStack->size() - 2], + SINGLE_LINE_TYPE)) + formatArrayRunIn(); + } + else if (!isInLineBreak + && !isWhiteSpace(peekNextChar()) + && previousNonWSChar == '{' + && braceTypeStack->size() > 2 + && !isBraceType((*braceTypeStack)[braceTypeStack->size() - 2], + SINGLE_LINE_TYPE)) + formatArrayRunIn(); + + appendCurrentChar(); + } + } + else if (currentChar == '}') + { + if (attachClosingBraceMode) + { + if (isEmptyLine(formattedLine) // if a blank line precedes this + || isImmediatelyPostPreprocessor + || isCharImmediatelyPostLineComment + || isCharImmediatelyPostComment) + appendCurrentChar(); // don't attach + else + { + appendSpacePad(); + appendCurrentChar(false); // attach + } + } + else + { + // does this close the first opening brace in the array? + // must check if the block is still a single line because of anonymous statements + if (!isBraceType(braceType, INIT_TYPE) + && (!isBraceType(braceType, SINGLE_LINE_TYPE) + || formattedLine.find('{') == string::npos)) + breakLine(); + appendCurrentChar(); + } + + // if a declaration follows an enum definition, space pad + char peekedChar = peekNextChar(); + if ((isLegalNameChar(peekedChar) && peekedChar != '.') + || peekedChar == '[') + appendSpaceAfter(); + } +} + +/** + * determine if a run-in can be attached. + * if it can insert the indents in formattedLine and reset the current line break. + */ +void ASFormatter::formatRunIn() +{ + assert(braceFormatMode == RUN_IN_MODE || braceFormatMode == NONE_MODE); + + // keep one line blocks returns true without indenting the run-in + if (formattingStyle != STYLE_PICO + && !isOkToBreakBlock(braceTypeStack->back())) + return; // true; + + // make sure the line begins with a brace + size_t lastText = formattedLine.find_last_not_of(" \t"); + if (lastText == string::npos || formattedLine[lastText] != '{') + return; // false; + + // make sure the brace is broken + if (formattedLine.find_first_not_of(" \t{") != string::npos) + return; // false; + + if (isBraceType(braceTypeStack->back(), NAMESPACE_TYPE)) + return; // false; + + bool extraIndent = false; + bool extraHalfIndent = false; + isInLineBreak = true; + + // cannot attach a class modifier without indent-classes + if (isCStyle() + && isCharPotentialHeader(currentLine, charNum) + && (isBraceType(braceTypeStack->back(), CLASS_TYPE) + || (isBraceType(braceTypeStack->back(), STRUCT_TYPE) + && isInIndentableStruct))) + { + if (findKeyword(currentLine, charNum, AS_PUBLIC) + || findKeyword(currentLine, charNum, AS_PRIVATE) + || findKeyword(currentLine, charNum, AS_PROTECTED)) + { + if (getModifierIndent()) + extraHalfIndent = true; + else if (!getClassIndent()) + return; // false; + } + else if (getClassIndent()) + extraIndent = true; + } + + // cannot attach a 'case' statement without indent-switches + if (!getSwitchIndent() + && isCharPotentialHeader(currentLine, charNum) + && (findKeyword(currentLine, charNum, AS_CASE) + || findKeyword(currentLine, charNum, AS_DEFAULT))) + return; // false; + + // extra indent for switch statements + if (getSwitchIndent() + && !preBraceHeaderStack->empty() + && preBraceHeaderStack->back() == &AS_SWITCH + && ((isLegalNameChar(currentChar) + && !findKeyword(currentLine, charNum, AS_CASE)))) + extraIndent = true; + + isInLineBreak = false; + // remove for extra whitespace + if (formattedLine.length() > lastText + 1 + && formattedLine.find_first_not_of(" \t", lastText + 1) == string::npos) + formattedLine.erase(lastText + 1); + + if (extraHalfIndent) + { + int indentLength_ = getIndentLength(); + runInIndentChars = indentLength_ / 2; + formattedLine.append(runInIndentChars - 1, ' '); + } + else if (getForceTabIndentation() && getIndentLength() != getTabLength()) + { + // insert the space indents + string indent; + int indentLength_ = getIndentLength(); + int tabLength_ = getTabLength(); + indent.append(indentLength_, ' '); + if (extraIndent) + indent.append(indentLength_, ' '); + // replace spaces indents with tab indents + size_t tabCount = indent.length() / tabLength_; // truncate extra spaces + indent.replace(0U, tabCount * tabLength_, tabCount, '\t'); + runInIndentChars = indentLength_; + if (indent[0] == ' ') // allow for brace + indent.erase(0, 1); + formattedLine.append(indent); + } + else if (getIndentString() == "\t") + { + appendChar('\t', false); + runInIndentChars = 2; // one for { and one for tab + if (extraIndent) + { + appendChar('\t', false); + runInIndentChars++; + } + } + else // spaces + { + int indentLength_ = getIndentLength(); + formattedLine.append(indentLength_ - 1, ' '); + runInIndentChars = indentLength_; + if (extraIndent) + { + formattedLine.append(indentLength_, ' '); + runInIndentChars += indentLength_; + } + } + isInBraceRunIn = true; +} + +/** + * remove whitespace and add indentation for an array run-in. + */ +void ASFormatter::formatArrayRunIn() +{ + assert(isBraceType(braceTypeStack->back(), ARRAY_TYPE)); + + // make sure the brace is broken + if (formattedLine.find_first_not_of(" \t{") != string::npos) + return; + + size_t lastText = formattedLine.find_last_not_of(" \t"); + if (lastText == string::npos || formattedLine[lastText] != '{') + return; + + // check for extra whitespace + if (formattedLine.length() > lastText + 1 + && formattedLine.find_first_not_of(" \t", lastText + 1) == string::npos) + formattedLine.erase(lastText + 1); + + if (getIndentString() == "\t") + { + appendChar('\t', false); + runInIndentChars = 2; // one for { and one for tab + } + else + { + int indent = getIndentLength(); + formattedLine.append(indent - 1, ' '); + runInIndentChars = indent; + } + isInBraceRunIn = true; + isInLineBreak = false; +} + +/** + * delete a braceTypeStack vector object + * BraceTypeStack did not work with the DeleteContainer template + */ +void ASFormatter::deleteContainer(vector*& container) +{ + if (container != nullptr) + { + container->clear(); + delete (container); + container = nullptr; + } +} + +/** + * delete a vector object + * T is the type of vector + * used for all vectors except braceTypeStack + */ +template +void ASFormatter::deleteContainer(T& container) +{ + if (container != nullptr) + { + container->clear(); + delete (container); + container = nullptr; + } +} + +/** + * initialize a braceType vector object + * braceType did not work with the DeleteContainer template + */ +void ASFormatter::initContainer(vector*& container, vector* value) +{ + if (container != nullptr) + deleteContainer(container); + container = value; +} + +/** + * initialize a vector object + * T is the type of vector + * used for all vectors except braceTypeStack + */ +template +void ASFormatter::initContainer(T& container, T value) +{ + // since the ASFormatter object is never deleted, + // the existing vectors must be deleted before creating new ones + if (container != nullptr) + deleteContainer(container); + container = value; +} + +/** + * convert a tab to spaces. + * charNum points to the current character to convert to spaces. + * tabIncrementIn is the increment that must be added for tab indent characters + * to get the correct column for the current tab. + * replaces the tab in currentLine with the required number of spaces. + * replaces the value of currentChar. + */ +void ASFormatter::convertTabToSpaces() +{ + assert(currentChar == '\t'); + + // do NOT replace if in quotes + if (isInQuote || isInQuoteContinuation) + return; + + size_t tabSize = getTabLength(); + size_t numSpaces = tabSize - ((tabIncrementIn + charNum) % tabSize); + currentLine.replace(charNum, 1, numSpaces, ' '); + currentChar = currentLine[charNum]; +} + +/** +* is it ok to break this block? +*/ +bool ASFormatter::isOkToBreakBlock(BraceType braceType) const +{ + // Actually, there should not be an ARRAY_TYPE brace here. + // But this will avoid breaking a one line block when there is. + // Otherwise they will be formatted differently on consecutive runs. + if (isBraceType(braceType, ARRAY_TYPE) + && isBraceType(braceType, SINGLE_LINE_TYPE)) + return false; + if (isBraceType(braceType, COMMAND_TYPE) + && isBraceType(braceType, EMPTY_BLOCK_TYPE)) + return false; + if (!isBraceType(braceType, SINGLE_LINE_TYPE) + || isBraceType(braceType, BREAK_BLOCK_TYPE) + || shouldBreakOneLineBlocks) + return true; + return false; +} + +/** +* check if a sharp header is a paren or non-paren header +*/ +bool ASFormatter::isSharpStyleWithParen(const string* header) const +{ + return (isSharpStyle() && peekNextChar() == '(' + && (header == &AS_CATCH + || header == &AS_DELEGATE)); +} + +/** + * Check for a following header when a comment is reached. + * firstLine must contain the start of the comment. + * return value is a pointer to the header or nullptr. + */ +const string* ASFormatter::checkForHeaderFollowingComment(const string& firstLine) const +{ + assert(isInComment || isInLineComment); + assert(shouldBreakElseIfs || shouldBreakBlocks || isInSwitchStatement()); + // look ahead to find the next non-comment text + bool endOnEmptyLine = (currentHeader == nullptr); + if (isInSwitchStatement()) + endOnEmptyLine = false; + string nextText = peekNextText(firstLine, endOnEmptyLine); + + if (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0)) + return nullptr; + + return ASBase::findHeader(nextText, 0, headers); +} + +/** + * process preprocessor statements. + * charNum should be the index of the #. + * + * delete braceTypeStack entries added by #if if a #else is found. + * prevents double entries in the braceTypeStack. + */ +void ASFormatter::processPreprocessor() +{ + assert(currentChar == '#'); + + const size_t preproc = currentLine.find_first_not_of(" \t", charNum + 1); + + if (preproc == string::npos) + return; + + if (currentLine.compare(preproc, 2, "if") == 0) + { + preprocBraceTypeStackSize = braceTypeStack->size(); + } + else if (currentLine.compare(preproc, 4, "else") == 0) + { + // delete stack entries added in #if + // should be replaced by #else + if (preprocBraceTypeStackSize > 0) + { + int addedPreproc = braceTypeStack->size() - preprocBraceTypeStackSize; + for (int i = 0; i < addedPreproc; i++) + braceTypeStack->pop_back(); + } + } +} + +/** + * determine if the next line starts a comment + * and a header follows the comment or comments. + */ +bool ASFormatter::commentAndHeaderFollows() +{ + // called ONLY IF shouldDeleteEmptyLines and shouldBreakBlocks are TRUE. + assert(shouldDeleteEmptyLines && shouldBreakBlocks); + + // is the next line a comment + auto stream = make_shared(sourceIterator); + if (!stream->hasMoreLines()) + return false; + string nextLine_ = stream->peekNextLine(); + size_t firstChar = nextLine_.find_first_not_of(" \t"); + if (firstChar == string::npos + || !(nextLine_.compare(firstChar, 2, "//") == 0 + || nextLine_.compare(firstChar, 2, "/*") == 0)) + return false; + + // find the next non-comment text, and reset + string nextText = peekNextText(nextLine_, false, stream); + if (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0)) + return false; + + const string* newHeader = ASBase::findHeader(nextText, 0, headers); + + if (newHeader == nullptr) + return false; + + // if a closing header, reset break unless break is requested + if (isClosingHeader(newHeader) && !shouldBreakClosingHeaderBlocks) + { + isAppendPostBlockEmptyLineRequested = false; + return false; + } + + return true; +} + +/** + * determine if a brace should be attached or broken + * uses braces in the braceTypeStack + * the last brace in the braceTypeStack is the one being formatted + * returns true if the brace should be broken + */ +bool ASFormatter::isCurrentBraceBroken() const +{ + assert(braceTypeStack->size() > 1); + + bool breakBrace = false; + size_t stackEnd = braceTypeStack->size() - 1; + + // check brace modifiers + if (shouldAttachExternC + && isBraceType((*braceTypeStack)[stackEnd], EXTERN_TYPE)) + { + return false; + } + if (shouldAttachNamespace + && isBraceType((*braceTypeStack)[stackEnd], NAMESPACE_TYPE)) + { + return false; + } + if (shouldAttachClass + && (isBraceType((*braceTypeStack)[stackEnd], CLASS_TYPE) + || isBraceType((*braceTypeStack)[stackEnd], INTERFACE_TYPE))) + { + return false; + } + if (shouldAttachInline + && isCStyle() // for C++ only + && braceFormatMode != RUN_IN_MODE + && !(currentLineBeginsWithBrace && peekNextChar() == '/') + && isBraceType((*braceTypeStack)[stackEnd], COMMAND_TYPE)) + { + size_t i; + for (i = 1; i < braceTypeStack->size(); i++) + if (isBraceType((*braceTypeStack)[i], CLASS_TYPE) + || isBraceType((*braceTypeStack)[i], STRUCT_TYPE)) + return false; + } + + // check braces + if (isBraceType((*braceTypeStack)[stackEnd], EXTERN_TYPE)) + { + if (currentLineBeginsWithBrace + || braceFormatMode == RUN_IN_MODE) + breakBrace = true; + } + else if (braceFormatMode == NONE_MODE) + { + if (currentLineBeginsWithBrace + && currentLineFirstBraceNum == (size_t) charNum) + breakBrace = true; + } + else if (braceFormatMode == BREAK_MODE || braceFormatMode == RUN_IN_MODE) + { + breakBrace = true; + } + else if (braceFormatMode == LINUX_MODE) + { + // break a namespace if NOT stroustrup or mozilla + if (isBraceType((*braceTypeStack)[stackEnd], NAMESPACE_TYPE)) + { + if (formattingStyle != STYLE_STROUSTRUP + && formattingStyle != STYLE_MOZILLA) + breakBrace = true; + } + // break a class or interface if NOT stroustrup + else if (isBraceType((*braceTypeStack)[stackEnd], CLASS_TYPE) + || isBraceType((*braceTypeStack)[stackEnd], INTERFACE_TYPE)) + { + if (formattingStyle != STYLE_STROUSTRUP) + breakBrace = true; + } + // break a struct if mozilla - an enum is processed as an array brace + else if (isBraceType((*braceTypeStack)[stackEnd], STRUCT_TYPE)) + { + if (formattingStyle == STYLE_MOZILLA) + breakBrace = true; + } + // break the first brace if a function + else if (isBraceType((*braceTypeStack)[stackEnd], COMMAND_TYPE)) + { + if (stackEnd == 1) + { + breakBrace = true; + } + else if (stackEnd > 1) + { + // break the first brace after these if a function + if (isBraceType((*braceTypeStack)[stackEnd - 1], NAMESPACE_TYPE) + || isBraceType((*braceTypeStack)[stackEnd - 1], CLASS_TYPE) + || isBraceType((*braceTypeStack)[stackEnd - 1], ARRAY_TYPE) + || isBraceType((*braceTypeStack)[stackEnd - 1], STRUCT_TYPE) + || isBraceType((*braceTypeStack)[stackEnd - 1], EXTERN_TYPE)) + { + breakBrace = true; + } + } + } + } + return breakBrace; +} + +/** + * format comment body + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatCommentBody() +{ + assert(isInComment); + + // append the comment + while (charNum < (int) currentLine.length()) + { + currentChar = currentLine[charNum]; + if (isSequenceReached("*/")) + { + formatCommentCloser(); + break; + } + if (currentChar == '\t' && shouldConvertTabs) + convertTabToSpaces(); + appendCurrentChar(); + ++charNum; + } + if (shouldStripCommentPrefix) + stripCommentPrefix(); +} + +/** + * format a comment opener + * the comment opener will be appended to the current formattedLine or a new formattedLine as necessary + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatCommentOpener() +{ + assert(isSequenceReached("/*")); + + isInComment = isInCommentStartLine = true; + isImmediatelyPostLineComment = false; + if (previousNonWSChar == '}') + resetEndOfStatement(); + + // Check for a following header. + // For speed do not check multiple comment lines more than once. + // For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'. + const string* followingHeader = nullptr; + if ((doesLineStartComment + && !isImmediatelyPostCommentOnly + && isBraceType(braceTypeStack->back(), COMMAND_TYPE)) + && (shouldBreakElseIfs + || isInSwitchStatement() + || (shouldBreakBlocks + && !isImmediatelyPostEmptyLine + && previousCommandChar != '{'))) + followingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum)); + + if (spacePadNum != 0 && !isInLineBreak) + adjustComments(); + formattedLineCommentNum = formattedLine.length(); + + // must be done BEFORE appendSequence + if (previousCommandChar == '{' + && !isImmediatelyPostComment + && !isImmediatelyPostLineComment) + { + if (isBraceType(braceTypeStack->back(), NAMESPACE_TYPE)) + { + // namespace run-in is always broken. + isInLineBreak = true; + } + else if (braceFormatMode == NONE_MODE) + { + // should a run-in statement be attached? + if (currentLineBeginsWithBrace) + formatRunIn(); + } + else if (braceFormatMode == ATTACH_MODE) + { + // if the brace was not attached? + if (formattedLine.length() > 0 && formattedLine[0] == '{' + && !isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE)) + isInLineBreak = true; + } + else if (braceFormatMode == RUN_IN_MODE) + { + // should a run-in statement be attached? + if (formattedLine.length() > 0 && formattedLine[0] == '{') + formatRunIn(); + } + } + else if (!doesLineStartComment) + noTrimCommentContinuation = true; + + // ASBeautifier needs to know the following statements + if (shouldBreakElseIfs && followingHeader == &AS_ELSE) + elseHeaderFollowsComments = true; + if (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT) + caseHeaderFollowsComments = true; + + // appendSequence will write the previous line + appendSequence(AS_OPEN_COMMENT); + goForward(1); + + // must be done AFTER appendSequence + + // Break before the comment if a header follows the line comment. + // But not break if previous line is empty, a comment, or a '{'. + if (shouldBreakBlocks + && followingHeader != nullptr + && !isImmediatelyPostEmptyLine + && previousCommandChar != '{') + { + if (isClosingHeader(followingHeader)) + { + if (!shouldBreakClosingHeaderBlocks) + isPrependPostBlockEmptyLineRequested = false; + } + // if an opening header, break before the comment + else + isPrependPostBlockEmptyLineRequested = true; + } + + if (previousCommandChar == '}') + currentHeader = nullptr; +} + +/** + * format a comment closer + * the comment closer will be appended to the current formattedLine + */ +void ASFormatter::formatCommentCloser() +{ + assert(isSequenceReached("*/")); + isInComment = false; + noTrimCommentContinuation = false; + isImmediatelyPostComment = true; + appendSequence(AS_CLOSE_COMMENT); + goForward(1); + if (doesLineStartComment + && (currentLine.find_first_not_of(" \t", charNum + 1) == string::npos)) + lineEndsInCommentOnly = true; + if (peekNextChar() == '}' + && previousCommandChar != ';' + && !isBraceType(braceTypeStack->back(), ARRAY_TYPE) + && !isInPreprocessor + && isOkToBreakBlock(braceTypeStack->back())) + { + isInLineBreak = true; + shouldBreakLineAtNextChar = true; + } +} + +/** + * format a line comment body + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatLineCommentBody() +{ + assert(isInLineComment); + + // append the comment + while (charNum < (int) currentLine.length()) +// && !isLineReady // commented out in release 2.04, unnecessary + { + currentChar = currentLine[charNum]; + if (currentChar == '\t' && shouldConvertTabs) + convertTabToSpaces(); + appendCurrentChar(); + ++charNum; + } + + // explicitly break a line when a line comment's end is found. + if (charNum == (int) currentLine.length()) + { + isInLineBreak = true; + isInLineComment = false; + isImmediatelyPostLineComment = true; + currentChar = 0; //make sure it is a neutral char. + } +} + +/** + * format a line comment opener + * the line comment opener will be appended to the current formattedLine or a new formattedLine as necessary + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatLineCommentOpener() +{ + assert(isSequenceReached("//")); + + if ((int) currentLine.length() > charNum + 2 + && currentLine[charNum + 2] == '\xf2') // check for windows line marker + isAppendPostBlockEmptyLineRequested = false; + + isInLineComment = true; + isCharImmediatelyPostComment = false; + if (previousNonWSChar == '}') + resetEndOfStatement(); + + // Check for a following header. + // For speed do not check multiple comment lines more than once. + // For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'. + const string* followingHeader = nullptr; + if ((lineIsLineCommentOnly + && !isImmediatelyPostCommentOnly + && isBraceType(braceTypeStack->back(), COMMAND_TYPE)) + && (shouldBreakElseIfs + || isInSwitchStatement() + || (shouldBreakBlocks + && !isImmediatelyPostEmptyLine + && previousCommandChar != '{'))) + followingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum)); + + // do not indent if in column 1 or 2 + // or in a namespace before the opening brace + if ((!shouldIndentCol1Comments && !lineCommentNoIndent) + || foundNamespaceHeader) + { + if (charNum == 0) + lineCommentNoIndent = true; + else if (charNum == 1 && currentLine[0] == ' ') + lineCommentNoIndent = true; + } + // move comment if spaces were added or deleted + if (!lineCommentNoIndent && spacePadNum != 0 && !isInLineBreak) + adjustComments(); + formattedLineCommentNum = formattedLine.length(); + + // must be done BEFORE appendSequence + // check for run-in statement + if (previousCommandChar == '{' + && !isImmediatelyPostComment + && !isImmediatelyPostLineComment) + { + if (braceFormatMode == NONE_MODE) + { + if (currentLineBeginsWithBrace) + formatRunIn(); + } + else if (braceFormatMode == RUN_IN_MODE) + { + if (!lineCommentNoIndent) + formatRunIn(); + else + isInLineBreak = true; + } + else if (braceFormatMode == BREAK_MODE) + { + if (formattedLine.length() > 0 && formattedLine[0] == '{') + isInLineBreak = true; + } + else + { + if (currentLineBeginsWithBrace) + isInLineBreak = true; + } + } + + // ASBeautifier needs to know the following statements + if (shouldBreakElseIfs && followingHeader == &AS_ELSE) + elseHeaderFollowsComments = true; + if (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT) + caseHeaderFollowsComments = true; + + // appendSequence will write the previous line + appendSequence(AS_OPEN_LINE_COMMENT); + goForward(1); + + // must be done AFTER appendSequence + + // Break before the comment if a header follows the line comment. + // But do not break if previous line is empty, a comment, or a '{'. + if (shouldBreakBlocks + && followingHeader != nullptr + && !isImmediatelyPostEmptyLine + && previousCommandChar != '{') + { + if (isClosingHeader(followingHeader)) + { + if (!shouldBreakClosingHeaderBlocks) + isPrependPostBlockEmptyLineRequested = false; + } + // if an opening header, break before the comment + else + isPrependPostBlockEmptyLineRequested = true; + } + + if (previousCommandChar == '}') + currentHeader = nullptr; + + // if tabbed input don't convert the immediately following tabs to spaces + if (getIndentString() == "\t" && lineCommentNoIndent) + { + while (charNum + 1 < (int) currentLine.length() + && currentLine[charNum + 1] == '\t') + { + currentChar = currentLine[++charNum]; + appendCurrentChar(); + } + } + + // explicitly break a line when a line comment's end is found. + if (charNum + 1 == (int) currentLine.length()) + { + isInLineBreak = true; + isInLineComment = false; + isImmediatelyPostLineComment = true; + currentChar = 0; //make sure it is a neutral char. + } +} + +/** + * format quote body + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatQuoteBody() +{ + assert(isInQuote); + + if (isSpecialChar) + { + isSpecialChar = false; + } + else if (currentChar == '\\' && !isInVerbatimQuote) + { + if (peekNextChar() == ' ') // is this '\' at end of line + haveLineContinuationChar = true; + else + isSpecialChar = true; + } + else if (isInVerbatimQuote && currentChar == '"') + { + if (isCStyle()) + { + string delim = ')' + verbatimDelimiter; + int delimStart = charNum - delim.length(); + if (delimStart > 0 && currentLine.substr(delimStart, delim.length()) == delim) + { + isInQuote = false; + isInVerbatimQuote = false; + } + } + else if (isSharpStyle()) + { + if ((int) currentLine.length() > charNum + 1 + && currentLine[charNum + 1] == '"') // check consecutive quotes + { + appendSequence("\"\""); + goForward(1); + return; + } + isInQuote = false; + isInVerbatimQuote = false; + } + } + else if (quoteChar == currentChar) + { + isInQuote = false; + } + + appendCurrentChar(); + + // append the text to the ending quoteChar or an escape sequence + // tabs in quotes are NOT changed by convert-tabs + if (isInQuote && currentChar != '\\') + { + while (charNum + 1 < (int) currentLine.length() + && currentLine[charNum + 1] != quoteChar + && currentLine[charNum + 1] != '\\') + { + currentChar = currentLine[++charNum]; + appendCurrentChar(); + } + } + if (charNum + 1 >= (int) currentLine.length() + && currentChar != '\\' + && !isInVerbatimQuote) + isInQuote = false; // missing closing quote +} + +/** + * format a quote opener + * the quote opener will be appended to the current formattedLine or a new formattedLine as necessary + * the calling function should have a continue statement after calling this method + */ +void ASFormatter::formatQuoteOpener() +{ + assert(currentChar == '"' + || (currentChar == '\'' && !isDigitSeparator(currentLine, charNum))); + + isInQuote = true; + quoteChar = currentChar; + if (isCStyle() && previousChar == 'R') + { + int parenPos = currentLine.find('(', charNum); + if (parenPos != -1) + { + isInVerbatimQuote = true; + verbatimDelimiter = currentLine.substr(charNum + 1, parenPos - charNum - 1); + } + } + else if (isSharpStyle() && previousChar == '@') + isInVerbatimQuote = true; + + // a quote following a brace is an array + if (previousCommandChar == '{' + && !isImmediatelyPostComment + && !isImmediatelyPostLineComment + && isNonInStatementArray + && !isBraceType(braceTypeStack->back(), SINGLE_LINE_TYPE) + && !isWhiteSpace(peekNextChar())) + { + if (braceFormatMode == NONE_MODE) + { + if (currentLineBeginsWithBrace) + formatRunIn(); + } + else if (braceFormatMode == RUN_IN_MODE) + { + formatRunIn(); + } + else if (braceFormatMode == BREAK_MODE) + { + if (formattedLine.length() > 0 && formattedLine[0] == '{') + isInLineBreak = true; + } + else + { + if (currentLineBeginsWithBrace) + isInLineBreak = true; + } + } + previousCommandChar = ' '; + appendCurrentChar(); +} + +/** + * get the next line comment adjustment that results from breaking a closing brace. + * the brace must be on the same line as the closing header. + * i.e "} else" changed to "} else". + */ +int ASFormatter::getNextLineCommentAdjustment() +{ + assert(foundClosingHeader && previousNonWSChar == '}'); + if (charNum < 1) // "else" is in column 1 + return 0; + size_t lastBrace = currentLine.rfind('}', charNum - 1); + if (lastBrace != string::npos) + return (lastBrace - charNum); // return a negative number + return 0; +} + +// for console build only +LineEndFormat ASFormatter::getLineEndFormat() const +{ + return lineEnd; +} + +/** + * get the current line comment adjustment that results from attaching + * a closing header to a closing brace. + * the brace must be on the line previous to the closing header. + * the adjustment is 2 chars, one for the brace and one for the space. + * i.e "} else" changed to "} else". + */ +int ASFormatter::getCurrentLineCommentAdjustment() +{ + assert(foundClosingHeader && previousNonWSChar == '}'); + if (charNum < 1) + return 2; + size_t lastBrace = currentLine.rfind('}', charNum - 1); + if (lastBrace == string::npos) + return 2; + return 0; +} + +/** + * get the previous word on a line + * the argument 'currPos' must point to the current position. + * + * @return is the previous word or an empty string if none found. + */ +string ASFormatter::getPreviousWord(const string& line, int currPos) const +{ + // get the last legal word (may be a number) + if (currPos == 0) + return string(); + + size_t end = line.find_last_not_of(" \t", currPos - 1); + if (end == string::npos || !isLegalNameChar(line[end])) + return string(); + + int start; // start of the previous word + for (start = end; start > -1; start--) + { + if (!isLegalNameChar(line[start]) || line[start] == '.') + break; + } + start++; + + return (line.substr(start, end - start + 1)); +} + +/** + * check if a line break is needed when a closing brace + * is followed by a closing header. + * the break depends on the braceFormatMode and other factors. + */ +void ASFormatter::isLineBreakBeforeClosingHeader() +{ + assert(foundClosingHeader && previousNonWSChar == '}'); + + if (currentHeader == &AS_WHILE && shouldAttachClosingWhile) + { + appendClosingHeader(); + return; + } + + if (braceFormatMode == BREAK_MODE + || braceFormatMode == RUN_IN_MODE + || attachClosingBraceMode) + { + isInLineBreak = true; + } + else if (braceFormatMode == NONE_MODE) + { + if (shouldBreakClosingHeaderBraces + || getBraceIndent() || getBlockIndent()) + { + isInLineBreak = true; + } + else + { + appendSpacePad(); + // is closing brace broken? + size_t i = currentLine.find_first_not_of(" \t"); + if (i != string::npos && currentLine[i] == '}') + isInLineBreak = false; + + if (shouldBreakBlocks) + isAppendPostBlockEmptyLineRequested = false; + } + } + // braceFormatMode == ATTACH_MODE, LINUX_MODE + else + { + if (shouldBreakClosingHeaderBraces + || getBraceIndent() || getBlockIndent()) + { + isInLineBreak = true; + } + else + { + appendClosingHeader(); + if (shouldBreakBlocks) + isAppendPostBlockEmptyLineRequested = false; + } + } +} + +/** + * Append a closing header to the previous closing brace, if possible + */ +void ASFormatter::appendClosingHeader() +{ + // if a blank line does not precede this + // or last line is not a one line block, attach header + bool previousLineIsEmpty = isEmptyLine(formattedLine); + int previousLineIsOneLineBlock = 0; + size_t firstBrace = findNextChar(formattedLine, '{'); + if (firstBrace != string::npos) + previousLineIsOneLineBlock = isOneLineBlockReached(formattedLine, firstBrace); + if (!previousLineIsEmpty + && previousLineIsOneLineBlock == 0) + { + isInLineBreak = false; + appendSpacePad(); + spacePadNum = 0; // don't count as comment padding + } +} + +/** + * Add braces to a single line statement following a header. + * braces are not added if the proper conditions are not met. + * braces are added to the currentLine. + */ +bool ASFormatter::addBracesToStatement() +{ + assert(isImmediatelyPostHeader); + + if (currentHeader != &AS_IF + && currentHeader != &AS_ELSE + && currentHeader != &AS_FOR + && currentHeader != &AS_WHILE + && currentHeader != &AS_DO + && currentHeader != &AS_FOREACH + && currentHeader != &AS_QFOREACH + && currentHeader != &AS_QFOREVER + && currentHeader != &AS_FOREVER) + return false; + + if (currentHeader == &AS_WHILE && foundClosingHeader) // do-while + return false; + + // do not brace an empty statement + if (currentChar == ';') + return false; + + // do not add if a header follows + if (isCharPotentialHeader(currentLine, charNum)) + if (findHeader(headers) != nullptr) + return false; + + // find the next semi-colon + size_t nextSemiColon = charNum; + if (currentChar != ';') + nextSemiColon = findNextChar(currentLine, ';', charNum + 1); + if (nextSemiColon == string::npos) + return false; + + // add closing brace before changing the line length + if (nextSemiColon == currentLine.length() - 1) + currentLine.append(" }"); + else + currentLine.insert(nextSemiColon + 1, " }"); + // add opening brace + currentLine.insert(charNum, "{ "); + assert(computeChecksumIn("{}")); + currentChar = '{'; + if ((int) currentLine.find_first_not_of(" \t") == charNum) + currentLineBeginsWithBrace = true; + // remove extra spaces + if (!shouldAddOneLineBraces) + { + size_t lastText = formattedLine.find_last_not_of(" \t"); + if ((formattedLine.length() - 1) - lastText > 1) + formattedLine.erase(lastText + 1); + } + return true; +} + +/** + * Remove braces from a single line statement following a header. + * braces are not removed if the proper conditions are not met. + * The first brace is replaced by a space. + */ +bool ASFormatter::removeBracesFromStatement() +{ + assert(isImmediatelyPostHeader); + assert(currentChar == '{'); + + if (currentHeader != &AS_IF + && currentHeader != &AS_ELSE + && currentHeader != &AS_FOR + && currentHeader != &AS_WHILE + && currentHeader != &AS_FOREACH) + return false; + + if (currentHeader == &AS_WHILE && foundClosingHeader) // do-while + return false; + + bool isFirstLine = true; + string nextLine_; + // leave nextLine_ empty if end of line comment follows + if (!isBeforeAnyLineEndComment(charNum) || currentLineBeginsWithBrace) + nextLine_ = currentLine.substr(charNum + 1); + size_t nextChar = 0; + + // find the first non-blank text + ASPeekStream stream(sourceIterator); + while (stream.hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + { + nextLine_ = stream.peekNextLine(); + nextChar = 0; + } + + nextChar = nextLine_.find_first_not_of(" \t", nextChar); + if (nextChar != string::npos) + break; + } + if (!stream.hasMoreLines()) + return false; + + // don't remove if comments or a header follow the brace + if ((nextLine_.compare(nextChar, 2, "/*") == 0) + || (nextLine_.compare(nextChar, 2, "//") == 0) + || (isCharPotentialHeader(nextLine_, nextChar) + && ASBase::findHeader(nextLine_, nextChar, headers) != nullptr)) + return false; + + // find the next semi-colon + size_t nextSemiColon = nextChar; + if (nextLine_[nextChar] != ';') + nextSemiColon = findNextChar(nextLine_, ';', nextChar + 1); + if (nextSemiColon == string::npos) + return false; + + // find the closing brace + isFirstLine = true; + nextChar = nextSemiColon + 1; + while (stream.hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + { + nextLine_ = stream.peekNextLine(); + nextChar = 0; + } + nextChar = nextLine_.find_first_not_of(" \t", nextChar); + if (nextChar != string::npos) + break; + } + if (nextLine_.length() == 0 || nextLine_[nextChar] != '}') + return false; + + // remove opening brace + currentLine[charNum] = currentChar = ' '; + assert(adjustChecksumIn(-'{')); + return true; +} + +/** + * Find the next character that is not in quotes or a comment. + * + * @param line the line to be searched. + * @param searchChar the char to find. + * @param searchStart the start position on the line (default is 0). + * @return the position on the line or string::npos if not found. + */ +size_t ASFormatter::findNextChar(const string& line, char searchChar, int searchStart /*0*/) const +{ + // find the next searchChar + size_t i; + for (i = searchStart; i < line.length(); i++) + { + if (line.compare(i, 2, "//") == 0) + return string::npos; + if (line.compare(i, 2, "/*") == 0) + { + size_t endComment = line.find("*/", i + 2); + if (endComment == string::npos) + return string::npos; + i = endComment + 2; + if (i >= line.length()) + return string::npos; + } + if (line[i] == '"' + || (line[i] == '\'' && !isDigitSeparator(line, i))) + { + char quote = line[i]; + while (i < line.length()) + { + size_t endQuote = line.find(quote, i + 1); + if (endQuote == string::npos) + return string::npos; + i = endQuote; + if (line[endQuote - 1] != '\\') // check for '\"' + break; + if (line[endQuote - 2] == '\\') // check for '\\' + break; + } + } + + if (line[i] == searchChar) + break; + + // for now don't process C# 'delegate' braces + // do this last in case the search char is a '{' + if (line[i] == '{') + return string::npos; + } + if (i >= line.length()) // didn't find searchChar + return string::npos; + + return i; +} + +/** + * Find split point for break/attach return type. + */ +void ASFormatter::findReturnTypeSplitPoint(const string& firstLine) +{ + assert((isBraceType(braceTypeStack->back(), NULL_TYPE) + || isBraceType(braceTypeStack->back(), DEFINITION_TYPE))); + assert(shouldBreakReturnType || shouldBreakReturnTypeDecl + || shouldAttachReturnType || shouldAttachReturnTypeDecl); + + bool isFirstLine = true; + bool isInComment_ = false; + bool isInQuote_ = false; + bool foundSplitPoint = false; + bool isAlreadyBroken = false; + char quoteChar_ = ' '; + char currNonWSChar = ' '; + char prevNonWSChar = ' '; + size_t parenCount = 0; + size_t squareCount = 0; + size_t angleCount = 0; + size_t breakLineNum = 0; + size_t breakCharNum = string::npos; + string line = firstLine; + + // Process the lines until a ';' or '{'. + ASPeekStream stream(sourceIterator); + while (stream.hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + { + if (isInQuote_) + return; + line = stream.peekNextLine(); + if (!foundSplitPoint) + ++breakLineNum; + } + size_t firstCharNum = line.find_first_not_of(" \t"); + if (firstCharNum == string::npos) + continue; + if (line[firstCharNum] == '#') + { + // don't attach to a preprocessor + if (shouldAttachReturnType || shouldAttachReturnTypeDecl) + return; + else + continue; + } + // parse the line + for (size_t i = 0; i < line.length(); i++) + { + if (!isWhiteSpace(line[i])) + { + prevNonWSChar = currNonWSChar; + currNonWSChar = line[i]; + } + else if (line[i] == '\t' && shouldConvertTabs) + { + size_t tabSize = getTabLength(); + size_t numSpaces = tabSize - ((tabIncrementIn + i) % tabSize); + line.replace(i, 1, numSpaces, ' '); + currentChar = line[i]; + } + if (line.compare(i, 2, "/*") == 0) + isInComment_ = true; + if (isInComment_) + { + if (line.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + if (line[i] == '\\') + { + ++i; + continue; + } + + if (isInQuote_) + { + if (line[i] == quoteChar_) + isInQuote_ = false; + continue; + } + + if (line[i] == '"' + || (line[i] == '\'' && !isDigitSeparator(line, i))) + { + isInQuote_ = true; + quoteChar_ = line[i]; + continue; + } + if (line.compare(i, 2, "//") == 0) + { + i = line.length(); + continue; + } + // not in quote or comment + if (!foundSplitPoint) + { + if (line[i] == '<') + { + ++angleCount; + continue; + } + if (line[i] == '>') + { + if (angleCount) + --angleCount; + if (!angleCount) + { + size_t nextCharNum = line.find_first_not_of(" \t*&", i + 1); + if (nextCharNum == string::npos) + { + breakCharNum = string::npos; + continue; + } + if (line[nextCharNum] != ':') // scope operator + breakCharNum = nextCharNum; + } + continue; + } + if (angleCount) + continue; + if (line[i] == '[') + { + ++squareCount; + continue; + } + if (line[i] == ']') + { + if (squareCount) + --squareCount; + continue; + } + // an assignment before the parens is not a function + if (line[i] == '=') + return; + if (isWhiteSpace(line[i]) || line[i] == '*' || line[i] == '&') + { + size_t nextNum = line.find_first_not_of(" \t", i + 1); + if (nextNum == string::npos) + breakCharNum = string::npos; + else + { + if (line.length() > nextNum + 1 + && line[nextNum] == ':' && line[nextNum + 1] == ':') + i = --nextNum; + else if (line[nextNum] != '(') + breakCharNum = string::npos; + } + continue; + } + if ((isLegalNameChar(line[i]) || line[i] == '~') + && breakCharNum == string::npos) + { + breakCharNum = i; + if (isLegalNameChar(line[i]) + && findKeyword(line, i, AS_OPERATOR)) + { + if (breakCharNum == firstCharNum) + isAlreadyBroken = true; + foundSplitPoint = true; + // find the operator, may be parens + size_t parenNum = + line.find_first_not_of(" \t", i + AS_OPERATOR.length()); + if (parenNum == string::npos) + return; + // find paren after the operator + parenNum = line.find('(', parenNum + 1); + if (parenNum == string::npos) + return; + i = --parenNum; + } + continue; + } + if (line[i] == ':' + && line.length() > i + 1 + && line[i + 1] == ':') + { + size_t nextCharNum = line.find_first_not_of(" \t:", i + 1); + if (nextCharNum == string::npos) + return; + + if (isLegalNameChar(line[nextCharNum]) + && findKeyword(line, nextCharNum, AS_OPERATOR)) + { + i = nextCharNum; + if (breakCharNum == firstCharNum) + isAlreadyBroken = true; + foundSplitPoint = true; + // find the operator, may be parens + size_t parenNum = + line.find_first_not_of(" \t", i + AS_OPERATOR.length()); + if (parenNum == string::npos) + return; + // find paren after the operator + parenNum = line.find('(', parenNum + 1); + if (parenNum == string::npos) + return; + i = --parenNum; + } + else + i = --nextCharNum; + continue; + } + if (line[i] == '(' && !squareCount) + { + // is line is already broken? + if (breakCharNum == firstCharNum && breakLineNum > 0) + isAlreadyBroken = true; + ++parenCount; + foundSplitPoint = true; + continue; + } + } + // end !foundSplitPoint + if (line[i] == '(') + { + // consecutive ')(' parens is probably a function pointer + if (prevNonWSChar == ')' && !parenCount) + return; + ++parenCount; + continue; + } + if (line[i] == ')') + { + if (parenCount) + --parenCount; + continue; + } + if (line[i] == '{') + { + if (shouldBreakReturnType && foundSplitPoint && !isAlreadyBroken) + { + methodBreakCharNum = breakCharNum; + methodBreakLineNum = breakLineNum; + } + if (shouldAttachReturnType && foundSplitPoint && isAlreadyBroken) + { + methodAttachCharNum = breakCharNum; + methodAttachLineNum = breakLineNum; + } + return; + } + if (line[i] == ';') + { + if (shouldBreakReturnTypeDecl && foundSplitPoint && !isAlreadyBroken) + { + methodBreakCharNum = breakCharNum; + methodBreakLineNum = breakLineNum; + } + if ((shouldAttachReturnTypeDecl && foundSplitPoint && isAlreadyBroken)) + { + methodAttachCharNum = breakCharNum; + methodAttachLineNum = breakLineNum; + } + return; + } + if (line[i] == '}') + return; + } // end of for loop + if (!foundSplitPoint) + breakCharNum = string::npos; + } // end of while loop +} + +/** + * Look ahead in the file to see if a struct has access modifiers. + * + * @param firstLine a reference to the line to indent. + * @param index the current line index. + * @return true if the struct has access modifiers. + */ +bool ASFormatter::isStructAccessModified(const string& firstLine, size_t index) const +{ + assert(firstLine[index] == '{'); + assert(isCStyle()); + + bool isFirstLine = true; + size_t braceCount = 1; + string nextLine_ = firstLine.substr(index + 1); + ASPeekStream stream(sourceIterator); + + // find the first non-blank text, bypassing all comments and quotes. + bool isInComment_ = false; + bool isInQuote_ = false; + char quoteChar_ = ' '; + while (stream.hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + nextLine_ = stream.peekNextLine(); + // parse the line + for (size_t i = 0; i < nextLine_.length(); i++) + { + if (isWhiteSpace(nextLine_[i])) + continue; + if (nextLine_.compare(i, 2, "/*") == 0) + isInComment_ = true; + if (isInComment_) + { + if (nextLine_.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + if (nextLine_[i] == '\\') + { + ++i; + continue; + } + + if (isInQuote_) + { + if (nextLine_[i] == quoteChar_) + isInQuote_ = false; + continue; + } + + if (nextLine_[i] == '"' + || (nextLine_[i] == '\'' && !isDigitSeparator(nextLine_, i))) + { + isInQuote_ = true; + quoteChar_ = nextLine_[i]; + continue; + } + if (nextLine_.compare(i, 2, "//") == 0) + { + i = nextLine_.length(); + continue; + } + // handle braces + if (nextLine_[i] == '{') + ++braceCount; + if (nextLine_[i] == '}') + --braceCount; + if (braceCount == 0) + return false; + // check for access modifiers + if (isCharPotentialHeader(nextLine_, i)) + { + if (findKeyword(nextLine_, i, AS_PUBLIC) + || findKeyword(nextLine_, i, AS_PRIVATE) + || findKeyword(nextLine_, i, AS_PROTECTED)) + return true; + string name = getCurrentWord(nextLine_, i); + i += name.length() - 1; + } + } // end of for loop + } // end of while loop + + return false; +} + +/** +* Look ahead in the file to see if a preprocessor block is indentable. +* +* @param firstLine a reference to the line to indent. +* @param index the current line index. +* @return true if the block is indentable. +*/ +bool ASFormatter::isIndentablePreprocessorBlock(const string& firstLine, size_t index) +{ + assert(firstLine[index] == '#'); + + bool isFirstLine = true; + bool isInIndentableBlock = false; + bool blockContainsBraces = false; + bool blockContainsDefineContinuation = false; + bool isInClassConstructor = false; + bool isPotentialHeaderGuard = false; // ifndef is first preproc statement + bool isPotentialHeaderGuard2 = false; // define is within the first proproc + int numBlockIndents = 0; + int lineParenCount = 0; + string nextLine_ = firstLine.substr(index); + auto stream = make_shared(sourceIterator); + + // find end of the block, bypassing all comments and quotes. + bool isInComment_ = false; + bool isInQuote_ = false; + char quoteChar_ = ' '; + while (stream->hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + nextLine_ = stream->peekNextLine(); + // parse the line + for (size_t i = 0; i < nextLine_.length(); i++) + { + if (isWhiteSpace(nextLine_[i])) + continue; + if (nextLine_.compare(i, 2, "/*") == 0) + isInComment_ = true; + if (isInComment_) + { + if (nextLine_.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + if (nextLine_[i] == '\\') + { + ++i; + continue; + } + if (isInQuote_) + { + if (nextLine_[i] == quoteChar_) + isInQuote_ = false; + continue; + } + + if (nextLine_[i] == '"' + || (nextLine_[i] == '\'' && !isDigitSeparator(nextLine_, i))) + { + isInQuote_ = true; + quoteChar_ = nextLine_[i]; + continue; + } + if (nextLine_.compare(i, 2, "//") == 0) + { + i = nextLine_.length(); + continue; + } + // handle preprocessor statement + if (nextLine_[i] == '#') + { + string preproc = ASBeautifier::extractPreprocessorStatement(nextLine_); + if (preproc.length() >= 2 && preproc.substr(0, 2) == "if") // #if, #ifdef, #ifndef + { + numBlockIndents += 1; + isInIndentableBlock = true; + // flag first preprocessor conditional for header include guard check + if (!processedFirstConditional) + { + processedFirstConditional = true; + isFirstPreprocConditional = true; + if (isNDefPreprocStatement(nextLine_, preproc)) + isPotentialHeaderGuard = true; + } + } + else if (preproc == "endif") + { + if (numBlockIndents > 0) + numBlockIndents -= 1; + // must exit BOTH loops + if (numBlockIndents == 0) + goto EndOfWhileLoop; + } + else if (preproc == "define") + { + if (nextLine_[nextLine_.length() - 1] == '\\') + blockContainsDefineContinuation = true; + // check for potential header include guards + else if (isPotentialHeaderGuard && numBlockIndents == 1) + isPotentialHeaderGuard2 = true; + } + i = nextLine_.length(); + continue; + } + // handle exceptions + if (nextLine_[i] == '{' || nextLine_[i] == '}') + blockContainsBraces = true; + else if (nextLine_[i] == '(') + ++lineParenCount; + else if (nextLine_[i] == ')') + --lineParenCount; + else if (nextLine_[i] == ':') + { + // check for '::' + if (nextLine_.length() > i + 1 && nextLine_[i + 1] == ':') + ++i; + else + isInClassConstructor = true; + } + // bypass unnecessary parsing - must exit BOTH loops + if (blockContainsBraces || isInClassConstructor || blockContainsDefineContinuation) + goto EndOfWhileLoop; + } // end of for loop, end of line + if (lineParenCount != 0) + break; + } // end of while loop +EndOfWhileLoop: + preprocBlockEnd = sourceIterator->tellg(); + if (preprocBlockEnd < 0) + preprocBlockEnd = sourceIterator->getStreamLength(); + if (blockContainsBraces + || isInClassConstructor + || blockContainsDefineContinuation + || lineParenCount != 0 + || numBlockIndents != 0) + isInIndentableBlock = false; + // find next executable instruction + // this WILL RESET the get pointer + string nextText = peekNextText("", false, stream); + // bypass header include guards + if (isFirstPreprocConditional) + { + isFirstPreprocConditional = false; + if (nextText.empty() && isPotentialHeaderGuard2) + { + isInIndentableBlock = false; + preprocBlockEnd = 0; + } + } + // this allows preprocessor blocks within this block to be indented + if (!isInIndentableBlock) + preprocBlockEnd = 0; + // peekReset() is done by previous peekNextText() + return isInIndentableBlock; +} + +bool ASFormatter::isNDefPreprocStatement(const string& nextLine_, const string& preproc) const +{ + if (preproc == "ifndef") + return true; + // check for '!defined' + if (preproc == "if") + { + size_t i = nextLine_.find('!'); + if (i == string::npos) + return false; + i = nextLine_.find_first_not_of(" \t", ++i); + if (i != string::npos && nextLine_.compare(i, 7, "defined") == 0) + return true; + } + return false; +} + +/** + * Check to see if this is an EXEC SQL statement. + * + * @param line a reference to the line to indent. + * @param index the current line index. + * @return true if the statement is EXEC SQL. + */ +bool ASFormatter::isExecSQL(const string& line, size_t index) const +{ + if (line[index] != 'e' && line[index] != 'E') // quick check to reject most + return false; + string word; + if (isCharPotentialHeader(line, index)) + word = getCurrentWord(line, index); + for (size_t i = 0; i < word.length(); i++) + word[i] = (char) toupper(word[i]); + if (word != "EXEC") + return false; + size_t index2 = index + word.length(); + index2 = line.find_first_not_of(" \t", index2); + if (index2 == string::npos) + return false; + word.erase(); + if (isCharPotentialHeader(line, index2)) + word = getCurrentWord(line, index2); + for (size_t i = 0; i < word.length(); i++) + word[i] = (char) toupper(word[i]); + if (word != "SQL") + return false; + return true; +} + +/** + * The continuation lines must be adjusted so the leading spaces + * is equivalent to the text on the opening line. + * + * Updates currentLine and charNum. + */ +void ASFormatter::trimContinuationLine() +{ + size_t len = currentLine.length(); + size_t tabSize = getTabLength(); + charNum = 0; + + if (leadingSpaces > 0 && len > 0) + { + size_t i; + size_t continuationIncrementIn = 0; + for (i = 0; (i < len) && (i + continuationIncrementIn < leadingSpaces); i++) + { + if (!isWhiteSpace(currentLine[i])) // don't delete any text + { + if (i < continuationIncrementIn) + leadingSpaces = i + tabIncrementIn; + continuationIncrementIn = tabIncrementIn; + break; + } + if (currentLine[i] == '\t') + continuationIncrementIn += tabSize - 1 - ((continuationIncrementIn + i) % tabSize); + } + + if ((int) continuationIncrementIn == tabIncrementIn) + charNum = i; + else + { + // build a new line with the equivalent leading chars + string newLine; + int leadingChars = 0; + if ((int) leadingSpaces > tabIncrementIn) + leadingChars = leadingSpaces - tabIncrementIn; + newLine.append(leadingChars, ' '); + newLine.append(currentLine, i, len - i); + currentLine = newLine; + charNum = leadingChars; + if (currentLine.length() == 0) + currentLine = string(" "); // a null is inserted if this is not done + } + if (i >= len) + charNum = 0; + } +} + +/** + * Determine if a header is a closing header + * + * @return true if the header is a closing header. + */ +bool ASFormatter::isClosingHeader(const string* header) const +{ + return (header == &AS_ELSE + || header == &AS_CATCH + || header == &AS_FINALLY); +} + +/** + * Determine if a * following a closing paren is immediately. + * after a cast. If so it is a deference and not a multiply. + * e.g. "(int*) *ptr" is a deference. + */ +bool ASFormatter::isImmediatelyPostCast() const +{ + assert(previousNonWSChar == ')' && currentChar == '*'); + // find preceding closing paren on currentLine or readyFormattedLine + string line; // currentLine or readyFormattedLine + size_t paren = currentLine.rfind(')', charNum); + if (paren != string::npos) + line = currentLine; + // if not on currentLine it must be on the previous line + else + { + line = readyFormattedLine; + paren = line.rfind(')'); + if (paren == string::npos) + return false; + } + if (paren == 0) + return false; + + // find character preceding the closing paren + size_t lastChar = line.find_last_not_of(" \t", paren - 1); + if (lastChar == string::npos) + return false; + // check for pointer cast + if (line[lastChar] == '*') + return true; + return false; +} + +/** + * Determine if a < is a template definition or instantiation. + * Sets the class variables isInTemplate and templateDepth. + */ +void ASFormatter::checkIfTemplateOpener() +{ + assert(!isInTemplate && currentChar == '<'); + + // find first char after the '<' operators + size_t firstChar = currentLine.find_first_not_of("< \t", charNum); + if (firstChar == string::npos + || currentLine[firstChar] == '=') + { + // this is not a template -> leave... + isInTemplate = false; + return; + } + + bool isFirstLine = true; + int parenDepth_ = 0; + int maxTemplateDepth = 0; + templateDepth = 0; + string nextLine_ = currentLine.substr(charNum); + ASPeekStream stream(sourceIterator); + + // find the angle braces, bypassing all comments and quotes. + bool isInComment_ = false; + bool isInQuote_ = false; + char quoteChar_ = ' '; + while (stream.hasMoreLines() || isFirstLine) + { + if (isFirstLine) + isFirstLine = false; + else + nextLine_ = stream.peekNextLine(); + // parse the line + for (size_t i = 0; i < nextLine_.length(); i++) + { + char currentChar_ = nextLine_[i]; + if (isWhiteSpace(currentChar_)) + continue; + if (nextLine_.compare(i, 2, "/*") == 0) + isInComment_ = true; + if (isInComment_) + { + if (nextLine_.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + if (currentChar_ == '\\') + { + ++i; + continue; + } + + if (isInQuote_) + { + if (currentChar_ == quoteChar_) + isInQuote_ = false; + continue; + } + + if (currentChar_ == '"' + || (currentChar_ == '\'' && !isDigitSeparator(nextLine_, i))) + { + isInQuote_ = true; + quoteChar_ = currentChar_; + continue; + } + if (nextLine_.compare(i, 2, "//") == 0) + { + i = nextLine_.length(); + continue; + } + + // not in a comment or quote + if (currentChar_ == '<') + { + ++templateDepth; + ++maxTemplateDepth; + continue; + } + else if (currentChar_ == '>') + { + --templateDepth; + if (templateDepth == 0) + { + if (parenDepth_ == 0) + { + // this is a template! + isInTemplate = true; + templateDepth = maxTemplateDepth; + } + return; + } + continue; + } + else if (currentChar_ == '(' || currentChar_ == ')') + { + if (currentChar_ == '(') + ++parenDepth_; + else + --parenDepth_; + if (parenDepth_ >= 0) + continue; + // this is not a template -> leave... + isInTemplate = false; + templateDepth = 0; + return; + } + else if (nextLine_.compare(i, 2, AS_AND) == 0 + || nextLine_.compare(i, 2, AS_OR) == 0) + { + // this is not a template -> leave... + isInTemplate = false; + templateDepth = 0; + return; + } + else if (currentChar_ == ',' // comma, e.g. A + || currentChar_ == '&' // reference, e.g. A + || currentChar_ == '*' // pointer, e.g. A + || currentChar_ == '^' // C++/CLI managed pointer, e.g. A + || currentChar_ == ':' // ::, e.g. std::string + || currentChar_ == '=' // assign e.g. default parameter + || currentChar_ == '[' // [] e.g. string[] + || currentChar_ == ']' // [] e.g. string[] + || currentChar_ == '(' // (...) e.g. function definition + || currentChar_ == ')' // (...) e.g. function definition + || (isJavaStyle() && currentChar_ == '?') // Java wildcard + ) + { + continue; + } + else if (!isLegalNameChar(currentChar_)) + { + // this is not a template -> leave... + isInTemplate = false; + templateDepth = 0; + return; + } + string name = getCurrentWord(nextLine_, i); + i += name.length() - 1; + } // end for loop + } // end while loop +} + +void ASFormatter::updateFormattedLineSplitPoints(char appendedChar) +{ + assert(maxCodeLength != string::npos); + assert(formattedLine.length() > 0); + + if (!isOkToSplitFormattedLine()) + return; + + char nextChar = peekNextChar(); + + // don't split before an end of line comment + if (nextChar == '/') + return; + + // don't split before or after a brace + if (appendedChar == '{' || appendedChar == '}' + || previousNonWSChar == '{' || previousNonWSChar == '}' + || nextChar == '{' || nextChar == '}' + || currentChar == '{' || currentChar == '}') // currentChar tests for an appended brace + return; + + // don't split before or after a block paren + if (appendedChar == '[' || appendedChar == ']' + || previousNonWSChar == '[' + || nextChar == '[' || nextChar == ']') + return; + + if (isWhiteSpace(appendedChar)) + { + if (nextChar != ')' // space before a closing paren + && nextChar != '(' // space before an opening paren + && nextChar != '/' // space before a comment + && nextChar != ':' // space before a colon + && currentChar != ')' // appended space before and after a closing paren + && currentChar != '(' // appended space before and after a opening paren + && previousNonWSChar != '(' // decided at the '(' + // don't break before a pointer or reference aligned to type + && !(nextChar == '*' + && !isCharPotentialOperator(previousNonWSChar) + && pointerAlignment == PTR_ALIGN_TYPE) + && !(nextChar == '&' + && !isCharPotentialOperator(previousNonWSChar) + && (referenceAlignment == REF_ALIGN_TYPE + || (referenceAlignment == REF_SAME_AS_PTR && pointerAlignment == PTR_ALIGN_TYPE))) + ) + { + if (formattedLine.length() - 1 <= maxCodeLength) + maxWhiteSpace = formattedLine.length() - 1; + else + maxWhiteSpacePending = formattedLine.length() - 1; + } + } + // unpadded closing parens may split after the paren (counts as whitespace) + else if (appendedChar == ')') + { + if (nextChar != ')' + && nextChar != ' ' + && nextChar != ';' + && nextChar != ',' + && nextChar != '.' + && !(nextChar == '-' && pointerSymbolFollows())) // check for -> + { + if (formattedLine.length() <= maxCodeLength) + maxWhiteSpace = formattedLine.length(); + else + maxWhiteSpacePending = formattedLine.length(); + } + } + // unpadded commas may split after the comma + else if (appendedChar == ',') + { + if (formattedLine.length() <= maxCodeLength) + maxComma = formattedLine.length(); + else + maxCommaPending = formattedLine.length(); + } + else if (appendedChar == '(') + { + if (nextChar != ')' && nextChar != '(' && nextChar != '"' && nextChar != '\'') + { + // if follows an operator break before + size_t parenNum; + if (previousNonWSChar != ' ' && isCharPotentialOperator(previousNonWSChar)) + parenNum = formattedLine.length() - 1; + else + parenNum = formattedLine.length(); + if (formattedLine.length() <= maxCodeLength) + maxParen = parenNum; + else + maxParenPending = parenNum; + } + } + else if (appendedChar == ';') + { + if (nextChar != ' ' && nextChar != '}' && nextChar != '/') // check for following comment + { + if (formattedLine.length() <= maxCodeLength) + maxSemi = formattedLine.length(); + else + maxSemiPending = formattedLine.length(); + } + } +} + +void ASFormatter::updateFormattedLineSplitPointsOperator(const string& sequence) +{ + assert(maxCodeLength != string::npos); + assert(formattedLine.length() > 0); + + if (!isOkToSplitFormattedLine()) + return; + + char nextChar = peekNextChar(); + + // don't split before an end of line comment + if (nextChar == '/') + return; + + // check for logical conditional + if (sequence == "||" || sequence == "&&" || sequence == "or" || sequence == "and") + { + if (shouldBreakLineAfterLogical) + { + if (formattedLine.length() <= maxCodeLength) + maxAndOr = formattedLine.length(); + else + maxAndOrPending = formattedLine.length(); + } + else + { + // adjust for leading space in the sequence + size_t sequenceLength = sequence.length(); + if (formattedLine.length() > sequenceLength + && isWhiteSpace(formattedLine[formattedLine.length() - sequenceLength - 1])) + sequenceLength++; + if (formattedLine.length() - sequenceLength <= maxCodeLength) + maxAndOr = formattedLine.length() - sequenceLength; + else + maxAndOrPending = formattedLine.length() - sequenceLength; + } + } + // comparison operators will split after the operator (counts as whitespace) + else if (sequence == "==" || sequence == "!=" || sequence == ">=" || sequence == "<=") + { + if (formattedLine.length() <= maxCodeLength) + maxWhiteSpace = formattedLine.length(); + else + maxWhiteSpacePending = formattedLine.length(); + } + // unpadded operators that will split BEFORE the operator (counts as whitespace) + else if (sequence == "+" || sequence == "-" || sequence == "?") + { + if (charNum > 0 + && !(sequence == "+" && isInExponent()) + && !(sequence == "-" && isInExponent()) + && (isLegalNameChar(currentLine[charNum - 1]) + || currentLine[charNum - 1] == ')' + || currentLine[charNum - 1] == ']' + || currentLine[charNum - 1] == '\"')) + { + if (formattedLine.length() - 1 <= maxCodeLength) + maxWhiteSpace = formattedLine.length() - 1; + else + maxWhiteSpacePending = formattedLine.length() - 1; + } + } + // unpadded operators that will USUALLY split AFTER the operator (counts as whitespace) + else if (sequence == "=" || sequence == ":") + { + // split BEFORE if the line is too long + // do NOT use <= here, must allow for a brace attached to an array + size_t splitPoint = 0; + if (formattedLine.length() < maxCodeLength) + splitPoint = formattedLine.length(); + else + splitPoint = formattedLine.length() - 1; + // padded or unpadded arrays + if (previousNonWSChar == ']') + { + if (formattedLine.length() - 1 <= maxCodeLength) + maxWhiteSpace = splitPoint; + else + maxWhiteSpacePending = splitPoint; + } + else if (charNum > 0 + && (isLegalNameChar(currentLine[charNum - 1]) + || currentLine[charNum - 1] == ')' + || currentLine[charNum - 1] == ']')) + { + if (formattedLine.length() <= maxCodeLength) + maxWhiteSpace = splitPoint; + else + maxWhiteSpacePending = splitPoint; + } + } +} + +/** + * Update the split point when a pointer or reference is formatted. + * The argument is the maximum index of the last whitespace character. + */ +void ASFormatter::updateFormattedLineSplitPointsPointerOrReference(size_t index) +{ + assert(maxCodeLength != string::npos); + assert(formattedLine.length() > 0); + assert(index < formattedLine.length()); + + if (!isOkToSplitFormattedLine()) + return; + + if (index < maxWhiteSpace) // just in case + return; + + if (index <= maxCodeLength) + maxWhiteSpace = index; + else + maxWhiteSpacePending = index; +} + +bool ASFormatter::isOkToSplitFormattedLine() +{ + assert(maxCodeLength != string::npos); + // Is it OK to split the line? + if (shouldKeepLineUnbroken + || isInLineComment + || isInComment + || isInQuote + || isInCase + || isInPreprocessor + || isInExecSQL + || isInAsm || isInAsmOneLine || isInAsmBlock + || isInTemplate) + return false; + + if (!isOkToBreakBlock(braceTypeStack->back()) && currentChar != '{') + { + shouldKeepLineUnbroken = true; + clearFormattedLineSplitPoints(); + return false; + } + if (isBraceType(braceTypeStack->back(), ARRAY_TYPE)) + { + shouldKeepLineUnbroken = true; + if (!isBraceType(braceTypeStack->back(), ARRAY_NIS_TYPE)) + clearFormattedLineSplitPoints(); + return false; + } + return true; +} + +/* This is called if the option maxCodeLength is set. + */ +void ASFormatter::testForTimeToSplitFormattedLine() +{ + // DO NOT ASSERT maxCodeLength HERE + // should the line be split + if (formattedLine.length() > maxCodeLength && !isLineReady) + { + size_t splitPoint = findFormattedLineSplitPoint(); + if (splitPoint > 0 && splitPoint < formattedLine.length()) + { + string splitLine = formattedLine.substr(splitPoint); + formattedLine = formattedLine.substr(0, splitPoint); + breakLine(true); + formattedLine = splitLine; + // if break-blocks is requested and this is a one-line statement + string nextWord = ASBeautifier::getNextWord(currentLine, charNum - 1); + if (isAppendPostBlockEmptyLineRequested + && (nextWord == "break" || nextWord == "continue")) + { + isAppendPostBlockEmptyLineRequested = false; + isPrependPostBlockEmptyLineRequested = true; + } + else + isPrependPostBlockEmptyLineRequested = false; + // adjust max split points + maxAndOr = (maxAndOr > splitPoint) ? (maxAndOr - splitPoint) : 0; + maxSemi = (maxSemi > splitPoint) ? (maxSemi - splitPoint) : 0; + maxComma = (maxComma > splitPoint) ? (maxComma - splitPoint) : 0; + maxParen = (maxParen > splitPoint) ? (maxParen - splitPoint) : 0; + maxWhiteSpace = (maxWhiteSpace > splitPoint) ? (maxWhiteSpace - splitPoint) : 0; + if (maxSemiPending > 0) + { + maxSemi = (maxSemiPending > splitPoint) ? (maxSemiPending - splitPoint) : 0; + maxSemiPending = 0; + } + if (maxAndOrPending > 0) + { + maxAndOr = (maxAndOrPending > splitPoint) ? (maxAndOrPending - splitPoint) : 0; + maxAndOrPending = 0; + } + if (maxCommaPending > 0) + { + maxComma = (maxCommaPending > splitPoint) ? (maxCommaPending - splitPoint) : 0; + maxCommaPending = 0; + } + if (maxParenPending > 0) + { + maxParen = (maxParenPending > splitPoint) ? (maxParenPending - splitPoint) : 0; + maxParenPending = 0; + } + if (maxWhiteSpacePending > 0) + { + maxWhiteSpace = (maxWhiteSpacePending > splitPoint) ? (maxWhiteSpacePending - splitPoint) : 0; + maxWhiteSpacePending = 0; + } + // don't allow an empty formatted line + size_t firstText = formattedLine.find_first_not_of(" \t"); + if (firstText == string::npos && formattedLine.length() > 0) + { + formattedLine.erase(); + clearFormattedLineSplitPoints(); + if (isWhiteSpace(currentChar)) + for (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++) + goForward(1); + } + else if (firstText > 0) + { + formattedLine.erase(0, firstText); + maxSemi = (maxSemi > firstText) ? (maxSemi - firstText) : 0; + maxAndOr = (maxAndOr > firstText) ? (maxAndOr - firstText) : 0; + maxComma = (maxComma > firstText) ? (maxComma - firstText) : 0; + maxParen = (maxParen > firstText) ? (maxParen - firstText) : 0; + maxWhiteSpace = (maxWhiteSpace > firstText) ? (maxWhiteSpace - firstText) : 0; + } + // reset formattedLineCommentNum + if (formattedLineCommentNum != string::npos) + { + formattedLineCommentNum = formattedLine.find("//"); + if (formattedLineCommentNum == string::npos) + formattedLineCommentNum = formattedLine.find("/*"); + } + } + } +} + +size_t ASFormatter::findFormattedLineSplitPoint() const +{ + assert(maxCodeLength != string::npos); + // determine where to split + size_t minCodeLength = 10; + size_t splitPoint = 0; + splitPoint = maxSemi; + if (maxAndOr >= minCodeLength) + splitPoint = maxAndOr; + if (splitPoint < minCodeLength) + { + splitPoint = maxWhiteSpace; + // use maxParen instead if it is long enough + if (maxParen > splitPoint + || maxParen >= maxCodeLength * .7) + splitPoint = maxParen; + // use maxComma instead if it is long enough + // increasing the multiplier causes more splits at whitespace + if (maxComma > splitPoint + || maxComma >= maxCodeLength * .3) + splitPoint = maxComma; + } + // replace split point with first available break point + if (splitPoint < minCodeLength) + { + splitPoint = string::npos; + if (maxSemiPending > 0 && maxSemiPending < splitPoint) + splitPoint = maxSemiPending; + if (maxAndOrPending > 0 && maxAndOrPending < splitPoint) + splitPoint = maxAndOrPending; + if (maxCommaPending > 0 && maxCommaPending < splitPoint) + splitPoint = maxCommaPending; + if (maxParenPending > 0 && maxParenPending < splitPoint) + splitPoint = maxParenPending; + if (maxWhiteSpacePending > 0 && maxWhiteSpacePending < splitPoint) + splitPoint = maxWhiteSpacePending; + if (splitPoint == string::npos) + splitPoint = 0; + } + // if remaining line after split is too long + else if (formattedLine.length() - splitPoint > maxCodeLength) + { + // if end of the currentLine, find a new split point + size_t newCharNum; + if (!isWhiteSpace(currentChar) && isCharPotentialHeader(currentLine, charNum)) + newCharNum = getCurrentWord(currentLine, charNum).length() + charNum; + else + newCharNum = charNum + 2; + if (newCharNum + 1 > currentLine.length()) + { + // don't move splitPoint from before a conditional to after + if (maxWhiteSpace > splitPoint + 3) + splitPoint = maxWhiteSpace; + if (maxParen > splitPoint) + splitPoint = maxParen; + } + } + + return splitPoint; +} + +void ASFormatter::clearFormattedLineSplitPoints() +{ + maxSemi = 0; + maxAndOr = 0; + maxComma = 0; + maxParen = 0; + maxWhiteSpace = 0; + maxSemiPending = 0; + maxAndOrPending = 0; + maxCommaPending = 0; + maxParenPending = 0; + maxWhiteSpacePending = 0; +} + +/** + * Check if a pointer symbol (->) follows on the currentLine. + */ +bool ASFormatter::pointerSymbolFollows() const +{ + size_t peekNum = currentLine.find_first_not_of(" \t", charNum + 1); + if (peekNum == string::npos || currentLine.compare(peekNum, 2, "->") != 0) + return false; + return true; +} + +/** + * Compute the input checksum. + * This is called as an assert so it for is debug config only + */ +bool ASFormatter::computeChecksumIn(const string& currentLine_) +{ + for (size_t i = 0; i < currentLine_.length(); i++) + if (!isWhiteSpace(currentLine_[i])) + checksumIn += currentLine_[i]; + return true; +} + +/** + * Adjust the input checksum for deleted chars. + * This is called as an assert so it for is debug config only + */ +bool ASFormatter::adjustChecksumIn(int adjustment) +{ + checksumIn += adjustment; + return true; +} + +/** + * get the value of checksumIn for unit testing + * + * @return checksumIn. + */ +size_t ASFormatter::getChecksumIn() const +{ + return checksumIn; +} + +/** + * Compute the output checksum. + * This is called as an assert so it is for debug config only + */ +bool ASFormatter::computeChecksumOut(const string& beautifiedLine) +{ + for (size_t i = 0; i < beautifiedLine.length(); i++) + if (!isWhiteSpace(beautifiedLine[i])) + checksumOut += beautifiedLine[i]; + return true; +} + +/** + * Return isLineReady for the final check at end of file. + */ +bool ASFormatter::getIsLineReady() const +{ + return isLineReady; +} + +/** + * get the value of checksumOut for unit testing + * + * @return checksumOut. + */ +size_t ASFormatter::getChecksumOut() const +{ + return checksumOut; +} + +/** + * Return the difference in checksums. + * If zero all is okay. + */ +int ASFormatter::getChecksumDiff() const +{ + return checksumOut - checksumIn; +} + +// for unit testing +int ASFormatter::getFormatterFileType() const +{ + return formatterFileType; +} + +// Check if an operator follows the next word. +// The next word must be a legal name. +const string* ASFormatter::getFollowingOperator() const +{ + // find next word + size_t nextNum = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextNum == string::npos) + return nullptr; + + if (!isLegalNameChar(currentLine[nextNum])) + return nullptr; + + // bypass next word and following spaces + while (nextNum < currentLine.length()) + { + if (!isLegalNameChar(currentLine[nextNum]) + && !isWhiteSpace(currentLine[nextNum])) + break; + nextNum++; + } + + if (nextNum >= currentLine.length() + || !isCharPotentialOperator(currentLine[nextNum]) + || currentLine[nextNum] == '/') // comment + return nullptr; + + const string* newOperator = ASBase::findOperator(currentLine, nextNum, operators); + return newOperator; +} + +// Check following data to determine if the current character is an array operator. +bool ASFormatter::isArrayOperator() const +{ + assert(currentChar == '*' || currentChar == '&' || currentChar == '^'); + assert(isBraceType(braceTypeStack->back(), ARRAY_TYPE)); + + // find next word + size_t nextNum = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextNum == string::npos) + return false; + + if (!isLegalNameChar(currentLine[nextNum])) + return false; + + // bypass next word and following spaces + while (nextNum < currentLine.length()) + { + if (!isLegalNameChar(currentLine[nextNum]) + && !isWhiteSpace(currentLine[nextNum])) + break; + nextNum++; + } + + // check for characters that indicate an operator + if (currentLine[nextNum] == ',' + || currentLine[nextNum] == '}' + || currentLine[nextNum] == ')' + || currentLine[nextNum] == '(') + return true; + return false; +} + +// Reset the flags that indicate various statement information. +void ASFormatter::resetEndOfStatement() +{ + foundQuestionMark = false; + foundNamespaceHeader = false; + foundClassHeader = false; + foundStructHeader = false; + foundInterfaceHeader = false; + foundPreDefinitionHeader = false; + foundPreCommandHeader = false; + foundPreCommandMacro = false; + foundTrailingReturnType = false; + foundCastOperator = false; + isInPotentialCalculation = false; + isSharpAccessor = false; + isSharpDelegate = false; + isInObjCMethodDefinition = false; + isImmediatelyPostObjCMethodPrefix = false; + isInObjCReturnType = false; + isInObjCParam = false; + isInObjCInterface = false; + isInObjCSelector = false; + isInEnum = false; + isInExternC = false; + elseHeaderFollowsComments = false; + returnTypeChecked = false; + nonInStatementBrace = 0; + while (!questionMarkStack->empty()) + questionMarkStack->pop_back(); +} + +// Find the colon alignment for Objective-C method definitions and method calls. +int ASFormatter::findObjCColonAlignment() const +{ + assert(currentChar == '+' || currentChar == '-' || currentChar == '['); + assert(getAlignMethodColon()); + + bool isFirstLine = true; + bool haveFirstColon = false; + bool foundMethodColon = false; + bool isInComment_ = false; + bool isInQuote_ = false; + bool haveTernary = false; + char quoteChar_ = ' '; + int sqBracketCount = 0; + int colonAdjust = 0; + int colonAlign = 0; + string nextLine_ = currentLine; + ASPeekStream stream(sourceIterator); + + // peek next line + while (sourceIterator->hasMoreLines() || isFirstLine) + { + if (!isFirstLine) + nextLine_ = stream.peekNextLine(); + // parse the line + haveFirstColon = false; + nextLine_ = ASBeautifier::trim(nextLine_); + for (size_t i = 0; i < nextLine_.length(); i++) + { + if (isWhiteSpace(nextLine_[i])) + continue; + if (nextLine_.compare(i, 2, "/*") == 0) + isInComment_ = true; + if (isInComment_) + { + if (nextLine_.compare(i, 2, "*/") == 0) + { + isInComment_ = false; + ++i; + } + continue; + } + if (nextLine_[i] == '\\') + { + ++i; + continue; + } + if (isInQuote_) + { + if (nextLine_[i] == quoteChar_) + isInQuote_ = false; + continue; + } + + if (nextLine_[i] == '"' + || (nextLine_[i] == '\'' && !isDigitSeparator(nextLine_, i))) + { + isInQuote_ = true; + quoteChar_ = nextLine_[i]; + continue; + } + if (nextLine_.compare(i, 2, "//") == 0) + { + i = nextLine_.length(); + continue; + } + // process the current char + if ((nextLine_[i] == '{' && (currentChar == '-' || currentChar == '+')) + || nextLine_[i] == ';') + goto EndOfWhileLoop; // end of method definition + if (nextLine_[i] == ']') + { + --sqBracketCount; + if (sqBracketCount == 0) + goto EndOfWhileLoop; // end of method call + } + if (nextLine_[i] == '[') + ++sqBracketCount; + if (isFirstLine) // colon align does not include the first line + continue; + if (sqBracketCount > 1) + continue; + if (haveFirstColon) // multiple colons per line + continue; + if (nextLine_[i] == '?') + { + haveTernary = true; + continue; + } + // compute colon adjustment + if (nextLine_[i] == ':') + { + if (haveTernary) + { + haveTernary = false; + continue; + } + haveFirstColon = true; + foundMethodColon = true; + if (shouldPadMethodColon) + { + int spacesStart; + for (spacesStart = i; spacesStart > 0; spacesStart--) + if (!isWhiteSpace(nextLine_[spacesStart - 1])) + break; + int spaces = i - spacesStart; + if (objCColonPadMode == COLON_PAD_ALL || objCColonPadMode == COLON_PAD_BEFORE) + colonAdjust = 1 - spaces; + else if (objCColonPadMode == COLON_PAD_NONE || objCColonPadMode == COLON_PAD_AFTER) + colonAdjust = 0 - spaces; + } + // compute alignment + int colonPosition = i + colonAdjust; + if (colonPosition > colonAlign) + colonAlign = colonPosition; + } + } // end of for loop + isFirstLine = false; + } // end of while loop +EndOfWhileLoop: + if (!foundMethodColon) + colonAlign = -1; + return colonAlign; +} + +// pad an Objective-C method colon +void ASFormatter::padObjCMethodColon() +{ + assert(currentChar == ':'); + int commentAdjust = 0; + char nextChar = peekNextChar(); + if (objCColonPadMode == COLON_PAD_NONE + || objCColonPadMode == COLON_PAD_AFTER + || nextChar == ')') + { + // remove spaces before + for (int i = formattedLine.length() - 1; (i > -1) && isWhiteSpace(formattedLine[i]); i--) + { + formattedLine.erase(i); + --commentAdjust; + } + } + else + { + // pad space before + for (int i = formattedLine.length() - 1; (i > 0) && isWhiteSpace(formattedLine[i]); i--) + if (isWhiteSpace(formattedLine[i - 1])) + { + formattedLine.erase(i); + --commentAdjust; + } + if (formattedLine.length() > 0) + { + appendSpacePad(); + formattedLine.back() = ' '; // convert any tab to space + } + } + if (objCColonPadMode == COLON_PAD_NONE + || objCColonPadMode == COLON_PAD_BEFORE + || nextChar == ')') + { + // remove spaces after + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextText == string::npos) + nextText = currentLine.length(); + int spaces = nextText - charNum - 1; + if (spaces > 0) + { + // do not use goForward here + currentLine.erase(charNum + 1, spaces); + spacePadNum -= spaces; + } + } + else + { + // pad space after + size_t nextText = currentLine.find_first_not_of(" \t", charNum + 1); + if (nextText == string::npos) + nextText = currentLine.length(); + int spaces = nextText - charNum - 1; + if (spaces == 0) + { + currentLine.insert(charNum + 1, 1, ' '); + spacePadNum += 1; + } + else if (spaces > 1) + { + // do not use goForward here + currentLine.erase(charNum + 1, spaces - 1); + currentLine[charNum + 1] = ' '; // convert any tab to space + spacePadNum -= spaces - 1; + } + } + spacePadNum += commentAdjust; +} + +// Remove the leading '*' from a comment line and indent to the next tab. +void ASFormatter::stripCommentPrefix() +{ + int firstChar = formattedLine.find_first_not_of(" \t"); + if (firstChar < 0) + return; + + if (isInCommentStartLine) + { + // comment opener must begin the line + if (formattedLine.compare(firstChar, 2, "/*") != 0) + return; + int commentOpener = firstChar; + // ignore single line comments + int commentEnd = formattedLine.find("*/", firstChar + 2); + if (commentEnd != -1) + return; + // first char after the comment opener must be at least one indent + int followingText = formattedLine.find_first_not_of(" \t", commentOpener + 2); + if (followingText < 0) + return; + if (formattedLine[followingText] == '*' || formattedLine[followingText] == '!') + followingText = formattedLine.find_first_not_of(" \t", followingText + 1); + if (followingText < 0) + return; + if (formattedLine[followingText] == '*') + return; + int indentLen = getIndentLength(); + int followingTextIndent = followingText - commentOpener; + if (followingTextIndent < indentLen) + { + string stringToInsert(indentLen - followingTextIndent, ' '); + formattedLine.insert(followingText, stringToInsert); + } + return; + } + // comment body including the closer + if (formattedLine[firstChar] == '*') + { + if (formattedLine.compare(firstChar, 2, "*/") == 0) + { + // line starts with an end comment + formattedLine = "*/"; + } + else + { + // build a new line with one indent + int secondChar = formattedLine.find_first_not_of(" \t", firstChar + 1); + if (secondChar < 0) + { + adjustChecksumIn(-'*'); + formattedLine.erase(); + return; + } + if (formattedLine[secondChar] == '*') + return; + // replace the leading '*' + int indentLen = getIndentLength(); + adjustChecksumIn(-'*'); + // second char must be at least one indent + if (formattedLine.substr(0, secondChar).find('\t') != string::npos) + { + formattedLine.erase(firstChar, 1); + } + else + { + int spacesToInsert = 0; + if (secondChar >= indentLen) + spacesToInsert = secondChar; + else + spacesToInsert = indentLen; + formattedLine = string(spacesToInsert, ' ') + formattedLine.substr(secondChar); + } + // remove a trailing '*' + int lastChar = formattedLine.find_last_not_of(" \t"); + if (lastChar > -1 && formattedLine[lastChar] == '*') + { + adjustChecksumIn(-'*'); + formattedLine[lastChar] = ' '; + } + } + } + else + { + // first char not a '*' + // first char must be at least one indent + if (formattedLine.substr(0, firstChar).find('\t') == string::npos) + { + int indentLen = getIndentLength(); + if (firstChar < indentLen) + { + string stringToInsert(indentLen, ' '); + formattedLine = stringToInsert + formattedLine.substr(firstChar); + } + } + } +} + +} // end namespace astyle diff -Nru geos-3.7.1/tools/astyle/ASLocalizer.cpp geos-3.8.0/tools/astyle/ASLocalizer.cpp --- geos-3.7.1/tools/astyle/ASLocalizer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASLocalizer.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,1166 @@ +// ASLocalizer.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. +// +// File encoding for this file is UTF-8 WITHOUT a byte order mark (BOM). +// руÑÑкий 中文(简体) 日本語 í•œêµ­ì˜ +// +// Windows: +// Add the required "Language" to the system. +// The settings do NOT need to be changed to the added language. +// Change the "Region" settings. +// Change both the "Format" and the "Current Language..." settings. +// A restart is required if the codepage has changed. +// Windows problems: +// Hindi - no available locale, language pack removed +// Japanese - language pack install error +// Ukranian - displays a ? instead of i +// +// Linux: +// Change the LANG environment variable: LANG=fr_FR.UTF-8. +// setlocale() will use the LANG environment variable on Linux. +// +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * To add a new language to this source module: + * + * Add a new translation class to ASLocalizer.h. + * Update the WinLangCode array in ASLocalizer.cpp. + * Add the language code to setTranslationClass() in ASLocalizer.cpp. + * Add the English-Translation pair to the constructor in ASLocalizer.cpp. + * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + */ + +//---------------------------------------------------------------------------- +// headers +//---------------------------------------------------------------------------- + +#include "ASLocalizer.h" + +#ifdef _WIN32 + #include +#endif + +#ifdef __VMS + #define __USE_STD_IOSTREAM 1 + #include +#else + #include +#endif + +#include +#include +#include // needed by some compilers +#include +#include + +#ifdef _MSC_VER + #pragma warning(disable: 4996) // secure version deprecation warnings +#endif + +#ifdef __BORLANDC__ + #pragma warn -8104 // Local Static with constructor dangerous for multi-threaded apps +#endif + +#ifdef __INTEL_COMPILER + #pragma warning(disable: 383) // value copied to temporary, reference to temporary used + #pragma warning(disable: 981) // operands are evaluated in unspecified order +#endif + +#ifdef __clang__ + #pragma clang diagnostic ignored "-Wdeprecated-declarations" // wcstombs +#endif + +namespace astyle { + +#ifndef ASTYLE_LIB + +//---------------------------------------------------------------------------- +// ASLocalizer class methods. +//---------------------------------------------------------------------------- + +ASLocalizer::ASLocalizer() +// Set the locale information. +{ + // set language default values to english (ascii) + // this will be used if a locale or a language cannot be found + m_localeName = "UNKNOWN"; + m_langID = "en"; + m_lcid = 0; + m_subLangID.clear(); + m_translation = nullptr; + + // Not all compilers support the C++ function locale::global(locale("")); + char* localeName = setlocale(LC_ALL, ""); + if (localeName == nullptr) // use the english (ascii) defaults + { + fprintf(stderr, "\n%s\n\n", "Cannot set native locale, reverting to English"); + setTranslationClass(); + return; + } + // set the class variables +#ifdef _WIN32 + size_t lcid = GetUserDefaultLCID(); + setLanguageFromLCID(lcid); +#else + setLanguageFromName(localeName); +#endif +} + +ASLocalizer::~ASLocalizer() +// Delete dynamically allocated memory. +{ + delete m_translation; +} + +#ifdef _WIN32 + +struct WinLangCode +{ + size_t winLang; + char canonicalLang[3]; +}; + +static WinLangCode wlc[] = +// primary language identifier http://msdn.microsoft.com/en-us/library/aa912554.aspx +// sublanguage identifier http://msdn.microsoft.com/en-us/library/aa913256.aspx +// language ID http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx +{ + { LANG_BULGARIAN, "bg" }, // bg-BG 1251 + { LANG_CHINESE, "zh" }, // zh-CHS, zh-CHT + { LANG_DUTCH, "nl" }, // nl-NL 1252 + { LANG_ENGLISH, "en" }, // en-US 1252 + { LANG_ESTONIAN, "et" }, // et-EE + { LANG_FINNISH, "fi" }, // fi-FI 1252 + { LANG_FRENCH, "fr" }, // fr-FR 1252 + { LANG_GERMAN, "de" }, // de-DE 1252 + { LANG_GREEK, "el" }, // el-GR 1253 + { LANG_HINDI, "hi" }, // hi-IN + { LANG_HUNGARIAN, "hu" }, // hu-HU 1250 + { LANG_ITALIAN, "it" }, // it-IT 1252 + { LANG_JAPANESE, "ja" }, // ja-JP + { LANG_KOREAN, "ko" }, // ko-KR + { LANG_NORWEGIAN, "nn" }, // nn-NO 1252 + { LANG_POLISH, "pl" }, // pl-PL 1250 + { LANG_PORTUGUESE, "pt" }, // pt-PT 1252 + { LANG_ROMANIAN, "ro" }, // ro-RO 1250 + { LANG_RUSSIAN, "ru" }, // ru-RU 1251 + { LANG_SPANISH, "es" }, // es-ES 1252 + { LANG_SWEDISH, "sv" }, // sv-SE 1252 + { LANG_UKRAINIAN, "uk" }, // uk-UA 1251 +}; + +void ASLocalizer::setLanguageFromLCID(size_t lcid) +// Windows get the language to use from the user locale. +// NOTE: GetUserDefaultLocaleName() gets nearly the same name as Linux. +// But it needs Windows Vista or higher. +// Same with LCIDToLocaleName(). +{ + m_lcid = lcid; + m_langID = "en"; // default to english + + size_t lang = PRIMARYLANGID(LANGIDFROMLCID(m_lcid)); + size_t sublang = SUBLANGID(LANGIDFROMLCID(m_lcid)); + // find language in the wlc table + size_t count = sizeof(wlc) / sizeof(wlc[0]); + for (size_t i = 0; i < count; i++) + { + if (wlc[i].winLang == lang) + { + m_langID = wlc[i].canonicalLang; + break; + } + } + if (m_langID == "zh") + { + if (sublang == SUBLANG_CHINESE_SIMPLIFIED || sublang == SUBLANG_CHINESE_SINGAPORE) + m_subLangID = "CHS"; + else + m_subLangID = "CHT"; // default + } + setTranslationClass(); +} + +#endif // _WIN32 + +string ASLocalizer::getLanguageID() const +// Returns the language ID in m_langID. +{ + return m_langID; +} + +const Translation* ASLocalizer::getTranslationClass() const +// Returns the name of the translation class in m_translation. Used for testing. +{ + assert(m_translation); + return m_translation; +} + +void ASLocalizer::setLanguageFromName(const char* langID) +// Linux set the language to use from the langID. +// +// the language string has the following form +// +// lang[_LANG][.encoding][@modifier] +// +// (see environ(5) in the Open Unix specification) +// +// where lang is the primary language, LANG is a sublang/territory, +// encoding is the charset to use and modifier "allows the user to select +// a specific instance of localization data within a single category" +// +// for example, the following strings are valid: +// fr +// fr_FR +// de_DE.iso88591 +// de_DE@euro +// de_DE.iso88591@euro +{ + // the constants describing the format of lang_LANG locale string + m_lcid = 0; + string langStr = langID; + m_langID = langStr.substr(0, 2); + + // need the sublang for chinese + if (m_langID == "zh" && langStr[2] == '_') + { + string subLang = langStr.substr(3, 2); + if (subLang == "CN" || subLang == "SG") + m_subLangID = "CHS"; + else + m_subLangID = "CHT"; // default + } + setTranslationClass(); +} + +const char* ASLocalizer::settext(const char* textIn) const +// Call the settext class and return the value. +{ + assert(m_translation); + const string stringIn = textIn; + return m_translation->translate(stringIn).c_str(); +} + +void ASLocalizer::setTranslationClass() +// Return the required translation class. +// Sets the class variable m_translation from the value of m_langID. +// Get the language ID at http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx +{ + assert(m_langID.length()); + // delete previously set (--ascii option) + if (m_translation != nullptr) + { + delete m_translation; + m_translation = nullptr; + } + if (m_langID == "bg") + m_translation = new Bulgarian; + else if (m_langID == "zh" && m_subLangID == "CHS") + m_translation = new ChineseSimplified; + else if (m_langID == "zh" && m_subLangID == "CHT") + m_translation = new ChineseTraditional; + else if (m_langID == "nl") + m_translation = new Dutch; + else if (m_langID == "en") + m_translation = new English; + else if (m_langID == "et") + m_translation = new Estonian; + else if (m_langID == "fi") + m_translation = new Finnish; + else if (m_langID == "fr") + m_translation = new French; + else if (m_langID == "de") + m_translation = new German; + else if (m_langID == "el") + m_translation = new Greek; + else if (m_langID == "hi") + m_translation = new Hindi; + else if (m_langID == "hu") + m_translation = new Hungarian; + else if (m_langID == "it") + m_translation = new Italian; + else if (m_langID == "ja") + m_translation = new Japanese; + else if (m_langID == "ko") + m_translation = new Korean; + else if (m_langID == "nn") + m_translation = new Norwegian; + else if (m_langID == "pl") + m_translation = new Polish; + else if (m_langID == "pt") + m_translation = new Portuguese; + else if (m_langID == "ro") + m_translation = new Romanian; + else if (m_langID == "ru") + m_translation = new Russian; + else if (m_langID == "es") + m_translation = new Spanish; + else if (m_langID == "sv") + m_translation = new Swedish; + else if (m_langID == "uk") + m_translation = new Ukrainian; + else // default + m_translation = new English; +} + +//---------------------------------------------------------------------------- +// Translation base class methods. +//---------------------------------------------------------------------------- + +void Translation::addPair(const string& english, const wstring& translated) +// Add a string pair to the translation vector. +{ + pair entry(english, translated); + m_translation.emplace_back(entry); +} + +string Translation::convertToMultiByte(const wstring& wideStr) const +// Convert wchar_t to a multibyte string using the currently assigned locale. +// Return an empty string if an error occurs. +{ + static bool msgDisplayed = false; + // get length of the output excluding the nullptr and validate the parameters + size_t mbLen = wcstombs(nullptr, wideStr.c_str(), 0); + if (mbLen == string::npos) + { + if (!msgDisplayed) + { + fprintf(stderr, "\n%s\n\n", "Cannot convert to multi-byte string, reverting to English"); + msgDisplayed = true; + } + return ""; + } + // convert the characters + char* mbStr = new (nothrow) char[mbLen + 1]; + if (mbStr == nullptr) + { + if (!msgDisplayed) + { + fprintf(stderr, "\n%s\n\n", "Bad memory alloc for multi-byte string, reverting to English"); + msgDisplayed = true; + } + return ""; + } + wcstombs(mbStr, wideStr.c_str(), mbLen + 1); + // return the string + string mbTranslation = mbStr; + delete[] mbStr; + return mbTranslation; +} + +string Translation::getTranslationString(size_t i) const +// Return the translation ascii value. Used for testing. +{ + if (i >= m_translation.size()) + return string(); + return m_translation[i].first; +} + +size_t Translation::getTranslationVectorSize() const +// Return the translation vector size. Used for testing. +{ + return m_translation.size(); +} + +bool Translation::getWideTranslation(const string& stringIn, wstring& wideOut) const +// Get the wide translation string. Used for testing. +{ + for (size_t i = 0; i < m_translation.size(); i++) + { + if (m_translation[i].first == stringIn) + { + wideOut = m_translation[i].second; + return true; + } + } + // not found + wideOut = L""; + return false; +} + +string& Translation::translate(const string& stringIn) const +// Translate a string. +// Return a mutable string so the method can have a "const" designation. +// This allows "settext" to be called from a "const" method. +{ + m_mbTranslation.clear(); + for (size_t i = 0; i < m_translation.size(); i++) + { + if (m_translation[i].first == stringIn) + { + m_mbTranslation = convertToMultiByte(m_translation[i].second); + break; + } + } + // not found, return english + if (m_mbTranslation.empty()) + m_mbTranslation = stringIn; + return m_mbTranslation; +} + +//---------------------------------------------------------------------------- +// Translation class methods. +// These classes have only a constructor which builds the language vector. +//---------------------------------------------------------------------------- + +Bulgarian::Bulgarian() // българÑки +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Форматиран %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Ðепроменен %s\n"); // should align with formatted + addPair("Directory %s\n", L"Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s\n"); + addPair("Default option file %s\n", L"Файл Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ по подразбиране %s\n"); + addPair("Project option file %s\n", L"Файл Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ за проекта %s\n"); + addPair("Exclude %s\n", L"Изключвам %s\n"); + addPair("Exclude (unmatched) %s\n", L"Изключване (неÑравнимо) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s форматиран %s hепроменен "); + addPair(" seconds ", L" Ñекунди "); + addPair("%d min %d sec ", L"%d мин %d Ñек "); + addPair("%s lines\n", L"%s линии\n"); + addPair("Opening HTML documentation %s\n", L"Откриване HTML Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ %s\n"); + addPair("Invalid default options:", L"Ðевалидни опции по подразбиране:"); + addPair("Invalid project options:", L"Ðевалидни опции за проекти:"); + addPair("Invalid command line options:", L"Ðевалидни опции за ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´:"); + addPair("For help on options type 'astyle -h'", L"За помощ отноÑно възможноÑтите тип 'astyle -h'"); + addPair("Cannot open default option file", L"Ðе може да Ñе отвори файлът Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ по подразбиране"); + addPair("Cannot open project option file", L"Ðе може да Ñе отвори файла Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ за проекта"); + addPair("Cannot open directory", L"Ðе може да Ñе отвори директориÑ"); + addPair("Cannot open HTML file %s\n", L"Ðе може да Ñе отвори HTML файл %s\n"); + addPair("Command execute failure", L"Command изпълни недоÑтатъчноÑÑ‚"); + addPair("Command is not installed", L"Command не е инÑталиран"); + addPair("Missing filename in %s\n", L"ЛипÑва името на файла в %s\n"); + addPair("Recursive option with no wildcard", L"РекурÑивно опциÑ, без маÑка"); + addPair("Did you intend quote the filename", L"Знаете ли намерение да цитирам името на файла"); + addPair("No file to process %s\n", L"Ðе файл за обработка %s\n"); + addPair("Did you intend to use --recursive", L"Знаете ли възнамерÑвате да използвате --recursive"); + addPair("Cannot process UTF-32 encoding", L"Ðе може да Ñа UTF-32 кодиране"); + addPair("Artistic Style has terminated\n", L"Artistic Style е прекратено\n"); +} + +ChineseSimplified::ChineseSimplified() // 中文(简体) +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"æ ¼å¼åŒ– %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"æœªæ”¹å˜ %s\n"); // should align with formatted + addPair("Directory %s\n", L"目录 %s\n"); + addPair("Default option file %s\n", L"默认选项文件 %s\n"); + addPair("Project option file %s\n", L"项目选项文件 %s\n"); + addPair("Exclude %s\n", L"排除 %s\n"); + addPair("Exclude (unmatched) %s\n", L"排除(无匹é…项) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s æ ¼å¼åŒ– %s æœªæ”¹å˜ "); + addPair(" seconds ", L" 秒 "); + addPair("%d min %d sec ", L"%d 分 %d 秒 "); + addPair("%s lines\n", L"%s è¡Œ\n"); + addPair("Opening HTML documentation %s\n", L"打开HTML文档 %s\n"); + addPair("Invalid default options:", L"默认选项无效:"); + addPair("Invalid project options:", L"项目选项无效:"); + addPair("Invalid command line options:", L"无效的命令行选项:"); + addPair("For help on options type 'astyle -h'", L"输入 'astyle -h' 以获得有关命令行的帮助"); + addPair("Cannot open default option file", L"无法打开默认选项文件"); + addPair("Cannot open project option file", L"无法打开项目选项文件"); + addPair("Cannot open directory", L"无法打开目录"); + addPair("Cannot open HTML file %s\n", L"无法打开HTML文件 %s\n"); + addPair("Command execute failure", L"执行命令失败"); + addPair("Command is not installed", L"未安装命令"); + addPair("Missing filename in %s\n", L"在%s缺少文件å\n"); + addPair("Recursive option with no wildcard", L"递归选项没有通é…符"); + addPair("Did you intend quote the filename", L"你打算引用文件å"); + addPair("No file to process %s\n", L"没有文件å¯å¤„ç† %s\n"); + addPair("Did you intend to use --recursive", L"你打算使用 --recursive"); + addPair("Cannot process UTF-32 encoding", L"ä¸èƒ½å¤„ç†UTF-32ç¼–ç "); + addPair("Artistic Style has terminated\n", L"Artistic Style å·²ç»ç»ˆæ­¢è¿è¡Œ\n"); +} + +ChineseTraditional::ChineseTraditional() // 中文(ç¹é«”) +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"æ ¼å¼åŒ– %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"未改變 %s\n"); // should align with formatted + addPair("Directory %s\n", L"目錄 %s\n"); + addPair("Default option file %s\n", L"默èªé¸é …文件 %s\n"); + addPair("Project option file %s\n", L"é …ç›®é¸é …文件 %s\n"); + addPair("Exclude %s\n", L"排除 %s\n"); + addPair("Exclude (unmatched) %s\n", L"排除(無匹é…項) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s æ ¼å¼åŒ– %s 未改變 "); + addPair(" seconds ", L" 秒 "); + addPair("%d min %d sec ", L"%d 分 %d 秒 "); + addPair("%s lines\n", L"%s è¡Œ\n"); + addPair("Opening HTML documentation %s\n", L"打開HTML文檔 %s\n"); + addPair("Invalid default options:", L"默èªé¸é …無效:"); + addPair("Invalid project options:", L"é …ç›®é¸é …無效:"); + addPair("Invalid command line options:", L"無效的命令行é¸é …:"); + addPair("For help on options type 'astyle -h'", L"輸入'astyle -h'以ç²å¾—有關命令行的幫助:"); + addPair("Cannot open default option file", L"無法打開默èªé¸é …文件"); + addPair("Cannot open project option file", L"無法打開項目é¸é …文件"); + addPair("Cannot open directory", L"無法打開目錄"); + addPair("Cannot open HTML file %s\n", L"無法打開HTML文件 %s\n"); + addPair("Command execute failure", L"執行命令失敗"); + addPair("Command is not installed", L"未安è£å‘½ä»¤"); + addPair("Missing filename in %s\n", L"在%s缺少文件å\n"); + addPair("Recursive option with no wildcard", L"éžæ­¸é¸é …沒有通é…符"); + addPair("Did you intend quote the filename", L"你打算引用文件å"); + addPair("No file to process %s\n", L"沒有文件å¯è™•ç† %s\n"); + addPair("Did you intend to use --recursive", L"你打算使用 --recursive"); + addPair("Cannot process UTF-32 encoding", L"ä¸èƒ½è™•ç†UTF-32編碼"); + addPair("Artistic Style has terminated\n", L"Artistic Style 已經終止é‹è¡Œ\n"); +} + +Dutch::Dutch() // Nederlandse +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Geformatteerd %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Onveranderd %s\n"); // should align with formatted + addPair("Directory %s\n", L"Directory %s\n"); + addPair("Default option file %s\n", L"Standaard optie bestand %s\n"); + addPair("Project option file %s\n", L"Project optie bestand %s\n"); + addPair("Exclude %s\n", L"Uitsluiten %s\n"); + addPair("Exclude (unmatched) %s\n", L"Uitgesloten (ongeëvenaarde) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s geformatteerd %s onveranderd "); + addPair(" seconds ", L" seconden "); + addPair("%d min %d sec ", L"%d min %d sec "); + addPair("%s lines\n", L"%s lijnen\n"); + addPair("Opening HTML documentation %s\n", L"Het openen van HTML-documentatie %s\n"); + addPair("Invalid default options:", L"Ongeldige standaardopties:"); + addPair("Invalid project options:", L"Ongeldige projectopties:"); + addPair("Invalid command line options:", L"Ongeldige command line opties:"); + addPair("For help on options type 'astyle -h'", L"Voor hulp bij 'astyle-h' opties het type"); + addPair("Cannot open default option file", L"Kan het standaardoptiesbestand niet openen"); + addPair("Cannot open project option file", L"Kan het project optie bestand niet openen"); + addPair("Cannot open directory", L"Kan niet open directory"); + addPair("Cannot open HTML file %s\n", L"Kan HTML-bestand niet openen %s\n"); + addPair("Command execute failure", L"Voeren commando falen"); + addPair("Command is not installed", L"Command is niet geïnstalleerd"); + addPair("Missing filename in %s\n", L"Ontbrekende bestandsnaam in %s\n"); + addPair("Recursive option with no wildcard", L"Recursieve optie met geen wildcard"); + addPair("Did you intend quote the filename", L"Heeft u van plan citaat van de bestandsnaam"); + addPair("No file to process %s\n", L"Geen bestand te verwerken %s\n"); + addPair("Did you intend to use --recursive", L"Hebt u van plan bent te gebruiken --recursive"); + addPair("Cannot process UTF-32 encoding", L"Kan niet verwerken UTF-32 codering"); + addPair("Artistic Style has terminated\n", L"Artistic Style heeft beëindigd\n"); +} + +English::English() +// this class is NOT translated +{} + +Estonian::Estonian() // Eesti +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formaadis %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Muutumatu %s\n"); // should align with formatted + addPair("Directory %s\n", L"Kataloog %s\n"); + addPair("Default option file %s\n", L"Vaikefunktsioonifail %s\n"); + addPair("Project option file %s\n", L"Projekti valiku fail %s\n"); + addPair("Exclude %s\n", L"Välista %s\n"); + addPair("Exclude (unmatched) %s\n", L"Välista (tasakaalustamata) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formaadis %s muutumatu "); + addPair(" seconds ", L" sekundit "); + addPair("%d min %d sec ", L"%d min %d sek "); + addPair("%s lines\n", L"%s read\n"); + addPair("Opening HTML documentation %s\n", L"Avamine HTML dokumentatsioon %s\n"); + addPair("Invalid default options:", L"Vaikevalikud on sobimatud:"); + addPair("Invalid project options:", L"Projekti valikud on sobimatud:"); + addPair("Invalid command line options:", L"Vale käsureavõtmetega:"); + addPair("For help on options type 'astyle -h'", L"Abiks võimaluste tüüp 'astyle -h'"); + addPair("Cannot open default option file", L"Vaikimisi valitud faili ei saa avada"); + addPair("Cannot open project option file", L"Projektivaliku faili ei saa avada"); + addPair("Cannot open directory", L"Ei saa avada kataloogi"); + addPair("Cannot open HTML file %s\n", L"Ei saa avada HTML-faili %s\n"); + addPair("Command execute failure", L"Käsk täita rike"); + addPair("Command is not installed", L"Käsk ei ole paigaldatud"); + addPair("Missing filename in %s\n", L"Kadunud failinimi %s\n"); + addPair("Recursive option with no wildcard", L"Rekursiivne võimalus ilma metamärgi"); + addPair("Did you intend quote the filename", L"Kas te kavatsete tsiteerida failinimi"); + addPair("No file to process %s\n", L"No faili töötlema %s\n"); + addPair("Did you intend to use --recursive", L"Kas te kavatsete kasutada --recursive"); + addPair("Cannot process UTF-32 encoding", L"Ei saa töödelda UTF-32 kodeeringus"); + addPair("Artistic Style has terminated\n", L"Artistic Style on lõpetatud\n"); +} + +Finnish::Finnish() // Suomeksi +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Muotoiltu %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Ennallaan %s\n"); // should align with formatted + addPair("Directory %s\n", L"Directory %s\n"); + addPair("Default option file %s\n", L"Oletusasetustiedosto %s\n"); + addPair("Project option file %s\n", L"Projektin valintatiedosto %s\n"); + addPair("Exclude %s\n", L"Sulkea %s\n"); + addPair("Exclude (unmatched) %s\n", L"Sulkea (verraton) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s muotoiltu %s ennallaan "); + addPair(" seconds ", L" sekuntia "); + addPair("%d min %d sec ", L"%d min %d sek "); + addPair("%s lines\n", L"%s linjat\n"); + addPair("Opening HTML documentation %s\n", L"Avaaminen HTML asiakirjat %s\n"); + addPair("Invalid default options:", L"Virheelliset oletusasetukset:"); + addPair("Invalid project options:", L"Virheelliset hankevalinnat:"); + addPair("Invalid command line options:", L"Virheellinen komentorivin:"); + addPair("For help on options type 'astyle -h'", L"Apua vaihtoehdoista tyyppi 'astyle -h'"); + addPair("Cannot open default option file", L"Et voi avata oletusasetustiedostoa"); + addPair("Cannot open project option file", L"Projektin asetustiedostoa ei voi avata"); + addPair("Cannot open directory", L"Ei Open Directory"); + addPair("Cannot open HTML file %s\n", L"Ei voi avata HTML-tiedoston %s\n"); + addPair("Command execute failure", L"Suorita komento vika"); + addPair("Command is not installed", L"Komento ei ole asennettu"); + addPair("Missing filename in %s\n", L"Puuttuvat tiedostonimi %s\n"); + addPair("Recursive option with no wildcard", L"Rekursiivinen vaihtoehto ilman wildcard"); + addPair("Did you intend quote the filename", L"Oletko aio lainata tiedostonimi"); + addPair("No file to process %s\n", L"Ei tiedostoa käsitellä %s\n"); + addPair("Did you intend to use --recursive", L"Oliko aiot käyttää --recursive"); + addPair("Cannot process UTF-32 encoding", L"Ei voi käsitellä UTF-32 koodausta"); + addPair("Artistic Style has terminated\n", L"Artistic Style on päättynyt\n"); +} + +French::French() // Française +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formaté %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Inchangée %s\n"); // should align with formatted + addPair("Directory %s\n", L"Répertoire %s\n"); + addPair("Default option file %s\n", L"Fichier d'option par défaut %s\n"); + addPair("Project option file %s\n", L"Fichier d'option de projet %s\n"); + addPair("Exclude %s\n", L"Exclure %s\n"); + addPair("Exclude (unmatched) %s\n", L"Exclure (non appariés) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formaté %s inchangée "); + addPair(" seconds ", L" seconde "); + addPair("%d min %d sec ", L"%d min %d sec "); + addPair("%s lines\n", L"%s lignes\n"); + addPair("Opening HTML documentation %s\n", L"Ouverture documentation HTML %s\n"); + addPair("Invalid default options:", L"Options par défaut invalides:"); + addPair("Invalid project options:", L"Options de projet non valides:"); + addPair("Invalid command line options:", L"Blancs options ligne de commande:"); + addPair("For help on options type 'astyle -h'", L"Pour de l'aide sur les options tapez 'astyle -h'"); + addPair("Cannot open default option file", L"Impossible d'ouvrir le fichier d'option par défaut"); + addPair("Cannot open project option file", L"Impossible d'ouvrir le fichier d'option de projet"); + addPair("Cannot open directory", L"Impossible d'ouvrir le répertoire"); + addPair("Cannot open HTML file %s\n", L"Impossible d'ouvrir le fichier HTML %s\n"); + addPair("Command execute failure", L"Exécuter échec de la commande"); + addPair("Command is not installed", L"Commande n'est pas installé"); + addPair("Missing filename in %s\n", L"Nom de fichier manquant dans %s\n"); + addPair("Recursive option with no wildcard", L"Option récursive sans joker"); + addPair("Did you intend quote the filename", L"Avez-vous l'intention de citer le nom de fichier"); + addPair("No file to process %s\n", L"Aucun fichier à traiter %s\n"); + addPair("Did you intend to use --recursive", L"Avez-vous l'intention d'utiliser --recursive"); + addPair("Cannot process UTF-32 encoding", L"Impossible de traiter codage UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style a mis fin\n"); +} + +German::German() // Deutsch +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formatiert %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Unverändert %s\n"); // should align with formatted + addPair("Directory %s\n", L"Verzeichnis %s\n"); + addPair("Default option file %s\n", L"Standard-Optionsdatei %s\n"); + addPair("Project option file %s\n", L"Projektoptionsdatei %s\n"); + addPair("Exclude %s\n", L"Ausschließen %s\n"); + addPair("Exclude (unmatched) %s\n", L"Ausschließen (unerreichte) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formatiert %s unverändert "); + addPair(" seconds ", L" sekunden "); + addPair("%d min %d sec ", L"%d min %d sek "); + addPair("%s lines\n", L"%s linien\n"); + addPair("Opening HTML documentation %s\n", L"Öffnen HTML-Dokumentation %s\n"); + addPair("Invalid default options:", L"Ungültige Standardoptionen:"); + addPair("Invalid project options:", L"Ungültige Projektoptionen:"); + addPair("Invalid command line options:", L"Ungültige Kommandozeilen-Optionen:"); + addPair("For help on options type 'astyle -h'", L"Für Hilfe zu den Optionen geben Sie 'astyle -h'"); + addPair("Cannot open default option file", L"Die Standardoptionsdatei kann nicht geöffnet werden"); + addPair("Cannot open project option file", L"Die Projektoptionsdatei kann nicht geöffnet werden"); + addPair("Cannot open directory", L"Kann nicht geöffnet werden Verzeichnis"); + addPair("Cannot open HTML file %s\n", L"Kann nicht öffnen HTML-Datei %s\n"); + addPair("Command execute failure", L"Execute Befehl Scheitern"); + addPair("Command is not installed", L"Befehl ist nicht installiert"); + addPair("Missing filename in %s\n", L"Missing in %s Dateiname\n"); + addPair("Recursive option with no wildcard", L"Rekursive Option ohne Wildcard"); + addPair("Did you intend quote the filename", L"Haben Sie die Absicht Inhalte der Dateiname"); + addPair("No file to process %s\n", L"Keine Datei zu verarbeiten %s\n"); + addPair("Did you intend to use --recursive", L"Haben Sie verwenden möchten --recursive"); + addPair("Cannot process UTF-32 encoding", L"Nicht verarbeiten kann UTF-32 Codierung"); + addPair("Artistic Style has terminated\n", L"Artistic Style ist beendet\n"); +} + +Greek::Greek() // ελληνικά +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"ΔιαμοÏφωμένη %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Αμετάβλητος %s\n"); // should align with formatted + addPair("Directory %s\n", L"Κατάλογος %s\n"); + addPair("Default option file %s\n", L"ΠÏοεπιλεγμένο αÏχείο επιλογών %s\n"); + addPair("Project option file %s\n", L"ΑÏχείο επιλογής έÏγου %s\n"); + addPair("Exclude %s\n", L"Αποκλείω %s\n"); + addPair("Exclude (unmatched) %s\n", L"Ausschließen (unerreichte) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s σχηματοποιημένη %s αμετάβλητες "); + addPair(" seconds ", L" δευτεÏόλεπτα "); + addPair("%d min %d sec ", L"%d λεπ %d δευ "); + addPair("%s lines\n", L"%s γÏαμμές\n"); + addPair("Opening HTML documentation %s\n", L"Εγκαίνια έγγÏαφα HTML %s\n"); + addPair("Invalid default options:", L"Μη έγκυÏες επιλογές Ï€Ïοεπιλογής:"); + addPair("Invalid project options:", L"Μη έγκυÏες επιλογές έÏγου:"); + addPair("Invalid command line options:", L"Μη έγκυÏη επιλογές γÏαμμής εντολών:"); + addPair("For help on options type 'astyle -h'", L"Για βοήθεια σχετικά με το είδος επιλογές 'astyle -h'"); + addPair("Cannot open default option file", L"Δεν είναι δυνατό να ανοίξει το Ï€Ïοεπιλεγμένο αÏχείο επιλογών"); + addPair("Cannot open project option file", L"Δεν είναι δυνατό να ανοίξει το αÏχείο επιλογής έÏγου"); + addPair("Cannot open directory", L"Δεν μποÏείτε να ανοίξετε τον κατάλογο"); + addPair("Cannot open HTML file %s\n", L"Δεν μποÏείτε να ανοίξετε το αÏχείο HTML %s\n"); + addPair("Command execute failure", L"Εντολή να εκτελέσει την αποτυχία"); + addPair("Command is not installed", L"Η εντολή δεν έχει εγκατασταθεί"); + addPair("Missing filename in %s\n", L"Λείπει το όνομα αÏχείου σε %s\n"); + addPair("Recursive option with no wildcard", L"ΑναδÏομικές επιλογή χωÏίς μπαλαντέÏ"); + addPair("Did you intend quote the filename", L"Μήπως σκοπεÏετε να αναφέÏετε το όνομα του αÏχείου"); + addPair("No file to process %s\n", L"Δεν υπάÏχει αÏχείο για την επεξεÏγασία %s\n"); + addPair("Did you intend to use --recursive", L"Μήπως σκοπεÏετε να χÏησιμοποιήσετε --recursive"); + addPair("Cannot process UTF-32 encoding", L"δεν μποÏεί να επεξεÏγαστεί UTF-32 κωδικοποίηση"); + addPair("Artistic Style has terminated\n", L"Artistic Style έχει λήξει\n"); +} + +Hindi::Hindi() // हिनà¥à¤¦à¥€ +// build the translation vector in the Translation base class +{ + // NOTE: Scintilla based editors (CodeBlocks) cannot always edit Hindi. + // Use Visual Studio instead. + addPair("Formatted %s\n", L"सà¥à¤µà¤°à¥‚पित किया %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"अपरिवरà¥à¤¤à¤¿à¤¤ %s\n"); // should align with formatted + addPair("Directory %s\n", L"निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ %s\n"); + addPair("Default option file %s\n", L"डिफ़ॉलà¥à¤Ÿ विकलà¥à¤ª फ़ाइल %s\n"); + addPair("Project option file %s\n", L"पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ विकलà¥à¤ª फ़ाइल %s\n"); + addPair("Exclude %s\n", L"निकालना %s\n"); + addPair("Exclude (unmatched) %s\n", L"अपवरà¥à¤œà¤¿à¤¤ (बेजोड़) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s सà¥à¤µà¤°à¥‚पित किया %s अपरिवरà¥à¤¤à¤¿à¤¤ "); + addPair(" seconds ", L" सेकंड "); + addPair("%d min %d sec ", L"%d मिनट %d सेकंड "); + addPair("%s lines\n", L"%s लाइनों\n"); + addPair("Opening HTML documentation %s\n", L"à¤à¤šà¤Ÿà¥€à¤à¤®à¤à¤² पà¥à¤°à¤²à¥‡à¤–न खोलना %s\n"); + addPair("Invalid default options:", L"अमानà¥à¤¯ डिफ़ॉलà¥à¤Ÿ विकलà¥à¤ª:"); + addPair("Invalid project options:", L"अमानà¥à¤¯ पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ विकलà¥à¤ª:"); + addPair("Invalid command line options:", L"कमांड लाइन विकलà¥à¤ª अवैध:"); + addPair("For help on options type 'astyle -h'", L"विकलà¥à¤ªà¥‹à¤‚ पर मदद के लिठपà¥à¤°à¤•à¤¾à¤° 'astyle -h'"); + addPair("Cannot open default option file", L"डिफ़ॉलà¥à¤Ÿ विकलà¥à¤ª फ़ाइल नहीं खोल सकता"); + addPair("Cannot open project option file", L"परियोजना विकलà¥à¤ª फ़ाइल नहीं खोल सकता"); + addPair("Cannot open directory", L"निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ नहीं खोल सकता"); + addPair("Cannot open HTML file %s\n", L"HTML फ़ाइल नहीं खोल सकता %s\n"); + addPair("Command execute failure", L"आदेश विफलता निषà¥à¤ªà¤¾à¤¦à¤¿à¤¤"); + addPair("Command is not installed", L"कमान सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ नहीं है"); + addPair("Missing filename in %s\n", L"लापता में फ़ाइलनाम %s\n"); + addPair("Recursive option with no wildcard", L"कोई वाइलà¥à¤¡à¤•à¤¾à¤°à¥à¤¡ साथ पà¥à¤¨à¤°à¤¾à¤µà¤°à¥à¤¤à¥€ विकलà¥à¤ª"); + addPair("Did you intend quote the filename", L"कà¥à¤¯à¤¾ आप बोली फ़ाइलनाम का इरादा"); + addPair("No file to process %s\n", L"कोई फ़ाइल %s पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ के लिà¤\n"); + addPair("Did you intend to use --recursive", L"कà¥à¤¯à¤¾ आप उपयोग करना चाहते हैं --recursive"); + addPair("Cannot process UTF-32 encoding", L"UTF-32 कूटबनà¥à¤§à¤¨ पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ नहीं कर सकते"); + addPair("Artistic Style has terminated\n", L"Artistic Style समापà¥à¤¤ किया है\n"); +} + +Hungarian::Hungarian() // Magyar +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formázott %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Változatlan %s\n"); // should align with formatted + addPair("Directory %s\n", L"Címjegyzék %s\n"); + addPair("Default option file %s\n", L"Alapértelmezett beállítási fájl %s\n"); + addPair("Project option file %s\n", L"Projekt opciófájl %s\n"); + addPair("Exclude %s\n", L"Kizár %s\n"); + addPair("Exclude (unmatched) %s\n", L"Escludere (senza pari) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formázott %s változatlan "); + addPair(" seconds ", L" másodperc "); + addPair("%d min %d sec ", L"%d jeg %d más "); + addPair("%s lines\n", L"%s vonalak\n"); + addPair("Opening HTML documentation %s\n", L"Nyitó HTML dokumentáció %s\n"); + addPair("Invalid default options:", L"Érvénytelen alapértelmezett beállítások:"); + addPair("Invalid project options:", L"Érvénytelen projektbeállítások:"); + addPair("Invalid command line options:", L"Érvénytelen parancssori opciók:"); + addPair("For help on options type 'astyle -h'", L"Ha segítségre van lehetÅ‘ség típus 'astyle-h'"); + addPair("Cannot open default option file", L"Nem lehet megnyitni az alapértelmezett beállítási fájlt"); + addPair("Cannot open project option file", L"Nem lehet megnyitni a projekt opció fájlt"); + addPair("Cannot open directory", L"Nem lehet megnyitni könyvtár"); + addPair("Cannot open HTML file %s\n", L"Nem lehet megnyitni a HTML fájlt %s\n"); + addPair("Command execute failure", L"Command végre hiba"); + addPair("Command is not installed", L"Parancs nincs telepítve"); + addPair("Missing filename in %s\n", L"Hiányzó fájlnév %s\n"); + addPair("Recursive option with no wildcard", L"Rekurzív kapcsolót nem wildcard"); + addPair("Did you intend quote the filename", L"Esetleg kívánja idézni a fájlnév"); + addPair("No file to process %s\n", L"Nincs fájl feldolgozása %s\n"); + addPair("Did you intend to use --recursive", L"Esetleg a használni kívánt --recursive"); + addPair("Cannot process UTF-32 encoding", L"Nem tudja feldolgozni UTF-32 kódolással"); + addPair("Artistic Style has terminated\n", L"Artistic Style megszűnt\n"); +} + +Italian::Italian() // Italiano +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formattata %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Immutato %s\n"); // should align with formatted + addPair("Directory %s\n", L"Elenco %s\n"); + addPair("Default option file %s\n", L"File di opzione predefinito %s\n"); + addPair("Project option file %s\n", L"File di opzione del progetto %s\n"); + addPair("Exclude %s\n", L"Escludere %s\n"); + addPair("Exclude (unmatched) %s\n", L"Escludere (senza pari) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s ormattata %s immutato "); + addPair(" seconds ", L" secondo "); + addPair("%d min %d sec ", L"%d min %d seg "); + addPair("%s lines\n", L"%s linee\n"); + addPair("Opening HTML documentation %s\n", L"Apertura di documenti HTML %s\n"); + addPair("Invalid default options:", L"Opzioni di default non valide:"); + addPair("Invalid project options:", L"Opzioni di progetto non valide:"); + addPair("Invalid command line options:", L"Opzioni della riga di comando non valido:"); + addPair("For help on options type 'astyle -h'", L"Per informazioni sulle opzioni di tipo 'astyle-h'"); + addPair("Cannot open default option file", L"Impossibile aprire il file di opzione predefinito"); + addPair("Cannot open project option file", L"Impossibile aprire il file di opzione del progetto"); + addPair("Cannot open directory", L"Impossibile aprire la directory"); + addPair("Cannot open HTML file %s\n", L"Impossibile aprire il file HTML %s\n"); + addPair("Command execute failure", L"Esegui fallimento comando"); + addPair("Command is not installed", L"Il comando non è installato"); + addPair("Missing filename in %s\n", L"Nome del file mancante in %s\n"); + addPair("Recursive option with no wildcard", L"Opzione ricorsiva senza jolly"); + addPair("Did you intend quote the filename", L"Avete intenzione citare il nome del file"); + addPair("No file to process %s\n", L"Nessun file al processo %s\n"); + addPair("Did you intend to use --recursive", L"Hai intenzione di utilizzare --recursive"); + addPair("Cannot process UTF-32 encoding", L"Non è possibile processo di codifica UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style ha terminato\n"); +} + +Japanese::Japanese() // 日本語 +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"フォーマット済ã¿ã® %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"変ã‚ã‚Šã¾ã›ã‚“ %s\n"); // should align with formatted + addPair("Directory %s\n", L"ディレクトリ %s\n"); + addPair("Default option file %s\n", L"デフォルトオプションファイル %s\n"); + addPair("Project option file %s\n", L"プロジェクトオプションファイル %s\n"); + addPair("Exclude %s\n", L"除外ã™ã‚‹ %s\n"); + addPair("Exclude (unmatched) %s\n", L"除外ã™ã‚‹ï¼ˆä¸€è‡´ã—ã¾ã›ã‚“) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s フフォーマット済ã¿ã® %s 変ã‚ã‚Šã¾ã›ã‚“ "); + addPair(" seconds ", L" 秒 "); + addPair("%d min %d sec ", L"%d 分 %d 秒 "); + addPair("%s lines\n", L"%s ライン\n"); + addPair("Opening HTML documentation %s\n", L"オープニングHTMLドキュメント %s\n"); + addPair("Invalid default options:", L"無効ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚ªãƒ—ション:"); + addPair("Invalid project options:", L"無効ãªãƒ—ロジェクトオプション:"); + addPair("Invalid command line options:", L"無効ãªã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション:"); + addPair("For help on options type 'astyle -h'", L"コオプションã®ç¨®é¡žã®ãƒ˜ãƒ«ãƒ—ã«ã¤ã„ã¦'astyle- h'を入力ã—ã¦ãã ã•ã„"); + addPair("Cannot open default option file", L"デフォルトã®ã‚ªãƒ—ションファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“"); + addPair("Cannot open project option file", L"プロジェクトオプションファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“"); + addPair("Cannot open directory", L"ディレクトリを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。"); + addPair("Cannot open HTML file %s\n", L"HTMLファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“ %s\n"); + addPair("Command execute failure", L"コマンドãŒå¤±æ•—を実行ã—ã¾ã™"); + addPair("Command is not installed", L"コマンドãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“"); + addPair("Missing filename in %s\n", L"%s ã§ã€ãƒ•ã‚¡ã‚¤ãƒ«åãŒã‚ã‚Šã¾ã›ã‚“\n"); + addPair("Recursive option with no wildcard", L"無ワイルドカードを使用ã—ã¦å†å¸°çš„ãªã‚ªãƒ—ション"); + addPair("Did you intend quote the filename", L"ã‚ãªãŸã¯ãƒ•ã‚¡ã‚¤ãƒ«åを引用ã™ã‚‹ã¤ã‚‚ã‚Šã§ã—ãŸ"); + addPair("No file to process %s\n", L"ã„ã„ãˆãƒ•ã‚¡ã‚¤ãƒ«ã¯å‡¦ç†ã—ãªã„よã†ã« %s\n"); + addPair("Did you intend to use --recursive", L"ã‚ãªãŸã¯--recursive使用ã™ã‚‹ã¤ã‚‚ã‚Šã§ã—ãŸ"); + addPair("Cannot process UTF-32 encoding", L"UTF - 32エンコーディングを処ç†ã§ãã¾ã›ã‚“"); + addPair("Artistic Style has terminated\n", L"Artistic Style 終了ã—ã¾ã—ãŸ\n"); +} + +Korean::Korean() // í•œêµ­ì˜ +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"ìˆ˜ì •ë¨ %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"ë³€ê²½ì—†ìŒ %s\n"); // should align with formatted + addPair("Directory %s\n", L"디렉토리 %s\n"); + addPair("Default option file %s\n", L"기본 옵션 íŒŒì¼ %s\n"); + addPair("Project option file %s\n", L"프로ì íŠ¸ 옵션 íŒŒì¼ %s\n"); + addPair("Exclude %s\n", L"ì œì™¸ë¨ %s\n"); + addPair("Exclude (unmatched) %s\n", L"제외 (NO ì¼ì¹˜) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s ìˆ˜ì •ë¨ %s ë³€ê²½ì—†ìŒ "); + addPair(" seconds ", L" ì´ˆ "); + addPair("%d min %d sec ", L"%d 분 %d ì´ˆ "); + addPair("%s lines\n", L"%s ë¼ì¸\n"); + addPair("Opening HTML documentation %s\n", L"HTML 문서를 열기 %s\n"); + addPair("Invalid default options:", L"ìž˜ëª»ëœ ê¸°ë³¸ 옵션:"); + addPair("Invalid project options:", L"ìž˜ëª»ëœ í”„ë¡œì íŠ¸ 옵션:"); + addPair("Invalid command line options:", L"ìž˜ëª»ëœ ëª…ë ¹ì¤„ 옵션 :"); + addPair("For help on options type 'astyle -h'", L"ë„움ë§ì„ 보려면 옵션 유형 'astyle - H'를 사용합니다"); + addPair("Cannot open default option file", L"기본 옵션 파ì¼ì„ ì—´ 수 없습니다."); + addPair("Cannot open project option file", L"프로ì íŠ¸ 옵션 파ì¼ì„ ì—´ 수 없습니다."); + addPair("Cannot open directory", L"디렉토리를 열지 못했습니다"); + addPair("Cannot open HTML file %s\n", L"HTML 파ì¼ì„ ì—´ 수 없습니다 %s\n"); + addPair("Command execute failure", L"명령 실패를 실행"); + addPair("Command is not installed", L"ëª…ë ¹ì´ ì„¤ì¹˜ë˜ì–´ 있지 않습니다"); + addPair("Missing filename in %s\n", L"%s ì—ì„œ 누ë½ëœ íŒŒì¼ ì´ë¦„\n"); + addPair("Recursive option with no wildcard", L"와ì¼ë“œ ì¹´ë“œì—†ì´ ìž¬ê·€ 옵션"); + addPair("Did you intend quote the filename", L"ë‹¹ì‹ ì€ íŒŒì¼ ì´ë¦„ì„ ì¸ìš©í•˜ê³ ìží•˜ë‚˜ìš”"); + addPair("No file to process %s\n", L"처리할 파ì¼ì´ 없습니다 %s\n"); + addPair("Did you intend to use --recursive", L"--recursive 를 ì‚¬ìš©í•˜ê³ ìž í•˜ì‹­ë‹ˆê¹Œ"); + addPair("Cannot process UTF-32 encoding", L"UTF-32 ì¸ì½”ë”©ì„ ì²˜ë¦¬í•  수 없습니다"); + addPair("Artistic Style has terminated\n", L"Artistic Style를 종료합니다\n"); +} + +Norwegian::Norwegian() // Norsk +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formatert %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Uendret %s\n"); // should align with formatted + addPair("Directory %s\n", L"Katalog %s\n"); + addPair("Default option file %s\n", L"Standard alternativfil %s\n"); + addPair("Project option file %s\n", L"Prosjekt opsjonsfil %s\n"); + addPair("Exclude %s\n", L"Ekskluder %s\n"); + addPair("Exclude (unmatched) %s\n", L"Ekskluder (uovertruffen) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formatert %s uendret "); + addPair(" seconds ", L" sekunder "); + addPair("%d min %d sec ", L"%d min %d sek? "); + addPair("%s lines\n", L"%s linjer\n"); + addPair("Opening HTML documentation %s\n", L"Ã…pning HTML dokumentasjon %s\n"); + addPair("Invalid default options:", L"Ugyldige standardalternativer:"); + addPair("Invalid project options:", L"Ugyldige prosjektalternativer:"); + addPair("Invalid command line options:", L"Kommandolinjevalg Ugyldige:"); + addPair("For help on options type 'astyle -h'", L"For hjelp til alternativer type 'astyle -h'"); + addPair("Cannot open default option file", L"Kan ikke Ã¥pne standardvalgsfilen"); + addPair("Cannot open project option file", L"Kan ikke Ã¥pne prosjektvalgsfilen"); + addPair("Cannot open directory", L"Kan ikke Ã¥pne katalog"); + addPair("Cannot open HTML file %s\n", L"Kan ikke Ã¥pne HTML-fil %s\n"); + addPair("Command execute failure", L"Command utføre svikt"); + addPair("Command is not installed", L"Command er ikke installert"); + addPair("Missing filename in %s\n", L"Mangler filnavn i %s\n"); + addPair("Recursive option with no wildcard", L"Rekursiv alternativ uten wildcard"); + addPair("Did you intend quote the filename", L"Har du tenkt sitere filnavnet"); + addPair("No file to process %s\n", L"Ingen fil Ã¥ behandle %s\n"); + addPair("Did you intend to use --recursive", L"Har du tenkt Ã¥ bruke --recursive"); + addPair("Cannot process UTF-32 encoding", L"Kan ikke behandle UTF-32 koding"); + addPair("Artistic Style has terminated\n", L"Artistic Style har avsluttet\n"); +} + +Polish::Polish() // Polski +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Sformatowany %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Niezmienione %s\n"); // should align with formatted + addPair("Directory %s\n", L"Katalog %s\n"); + addPair("Default option file %s\n", L"DomyÅ›lny plik opcji %s\n"); + addPair("Project option file %s\n", L"Plik opcji projektu %s\n"); + addPair("Exclude %s\n", L"Wykluczać %s\n"); + addPair("Exclude (unmatched) %s\n", L"Wyklucz (niezrównany) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s sformatowany %s niezmienione "); + addPair(" seconds ", L" sekund "); + addPair("%d min %d sec ", L"%d min %d sek "); + addPair("%s lines\n", L"%s linii\n"); + addPair("Opening HTML documentation %s\n", L"Otwarcie dokumentacji HTML %s\n"); + addPair("Invalid default options:", L"NieprawidÅ‚owe opcje domyÅ›lne:"); + addPair("Invalid project options:", L"NieprawidÅ‚owe opcje projektu:"); + addPair("Invalid command line options:", L"NieprawidÅ‚owe opcje wiersza polecenia:"); + addPair("For help on options type 'astyle -h'", L"Aby uzyskać pomoc od rodzaju opcji 'astyle -h'"); + addPair("Cannot open default option file", L"Nie można otworzyć pliku opcji domyÅ›lnych"); + addPair("Cannot open project option file", L"Nie można otworzyć pliku opcji projektu"); + addPair("Cannot open directory", L"Nie można otworzyć katalogu"); + addPair("Cannot open HTML file %s\n", L"Nie można otworzyć pliku HTML %s\n"); + addPair("Command execute failure", L"Wykonaj polecenia niepowodzenia"); + addPair("Command is not installed", L"Polecenie nie jest zainstalowany"); + addPair("Missing filename in %s\n", L"Brakuje pliku w %s\n"); + addPair("Recursive option with no wildcard", L"Rekurencyjne opcja bez symboli"); + addPair("Did you intend quote the filename", L"Czy zamierza Pan podać nazwÄ™ pliku"); + addPair("No file to process %s\n", L"Brak pliku do procesu %s\n"); + addPair("Did you intend to use --recursive", L"Czy masz zamiar używać --recursive"); + addPair("Cannot process UTF-32 encoding", L"Nie można procesu kodowania UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style zostaÅ‚ zakoÅ„czony\n"); +} + +Portuguese::Portuguese() // Português +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formatado %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Inalterado %s\n"); // should align with formatted + addPair("Directory %s\n", L"Diretório %s\n"); + addPair("Default option file %s\n", L"Arquivo de opção padrão %s\n"); + addPair("Project option file %s\n", L"Arquivo de opção de projeto %s\n"); + addPair("Exclude %s\n", L"Excluir %s\n"); + addPair("Exclude (unmatched) %s\n", L"Excluir (incomparável) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formatado %s inalterado "); + addPair(" seconds ", L" segundo "); + addPair("%d min %d sec ", L"%d min %d seg "); + addPair("%s lines\n", L"%s linhas\n"); + addPair("Opening HTML documentation %s\n", L"Abrindo a documentação HTML %s\n"); + addPair("Invalid default options:", L"Opções padrão inválidas:"); + addPair("Invalid project options:", L"Opções de projeto inválidas:"); + addPair("Invalid command line options:", L"Opções de linha de comando inválida:"); + addPair("For help on options type 'astyle -h'", L"Para obter ajuda sobre as opções de tipo 'astyle -h'"); + addPair("Cannot open default option file", L"Não é possível abrir o arquivo de opção padrão"); + addPair("Cannot open project option file", L"Não é possível abrir o arquivo de opção do projeto"); + addPair("Cannot open directory", L"Não é possível abrir diretório"); + addPair("Cannot open HTML file %s\n", L"Não é possível abrir arquivo HTML %s\n"); + addPair("Command execute failure", L"Executar falha de comando"); + addPair("Command is not installed", L"Comando não está instalado"); + addPair("Missing filename in %s\n", L"Filename faltando em %s\n"); + addPair("Recursive option with no wildcard", L"Opção recursiva sem curinga"); + addPair("Did you intend quote the filename", L"Será que você pretende citar o nome do arquivo"); + addPair("No file to process %s\n", L"Nenhum arquivo para processar %s\n"); + addPair("Did you intend to use --recursive", L"Será que você pretende usar --recursive"); + addPair("Cannot process UTF-32 encoding", L"Não pode processar a codificação UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style terminou\n"); +} + +Romanian::Romanian() // Română +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formatat %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Neschimbat %s\n"); // should align with formatted + addPair("Directory %s\n", L"Director %s\n"); + addPair("Default option file %s\n", L"FiÈ™ier opÈ›ional implicit %s\n"); + addPair("Project option file %s\n", L"FiÈ™ier opÈ›iune proiect %s\n"); + addPair("Exclude %s\n", L"ExcludeÈ›i %s\n"); + addPair("Exclude (unmatched) %s\n", L"ExcludeÈ›i (necompensată) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formatat %s neschimbat "); + addPair(" seconds ", L" secunde "); + addPair("%d min %d sec ", L"%d min %d sec "); + addPair("%s lines\n", L"%s linii\n"); + addPair("Opening HTML documentation %s\n", L"DocumentaÈ›ie HTML deschidere %s\n"); + addPair("Invalid default options:", L"OpÈ›iuni implicite nevalide:"); + addPair("Invalid project options:", L"OpÈ›iunile de proiect nevalide:"); + addPair("Invalid command line options:", L"OpÈ›iuni de linie de comandă nevalide:"); + addPair("For help on options type 'astyle -h'", L"Pentru ajutor cu privire la tipul de opÈ›iuni 'astyle -h'"); + addPair("Cannot open default option file", L"Nu se poate deschide fiÈ™ierul cu opÈ›iuni implicite"); + addPair("Cannot open project option file", L"Nu se poate deschide fiÈ™ierul cu opÈ›iuni de proiect"); + addPair("Cannot open directory", L"Nu se poate deschide directorul"); + addPair("Cannot open HTML file %s\n", L"Nu se poate deschide fiÈ™ierul HTML %s\n"); + addPair("Command execute failure", L"Comandă executa eÈ™ec"); + addPair("Command is not installed", L"Comanda nu este instalat"); + addPair("Missing filename in %s\n", L"Lipsă nume de fiÈ™ier %s\n"); + addPair("Recursive option with no wildcard", L"OpÈ›iunea recursiv cu nici un wildcard"); + addPair("Did you intend quote the filename", L"V-intentionati cita numele de fiÈ™ier"); + addPair("No file to process %s\n", L"Nu există un fiÈ™ier pentru a procesa %s\n"); + addPair("Did you intend to use --recursive", L"V-aÈ›i intenÈ›ionaÈ›i să utilizaÈ›i --recursive"); + addPair("Cannot process UTF-32 encoding", L"Nu se poate procesa codificarea UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style a terminat\n"); +} + +Russian::Russian() // руÑÑкий +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Форматированный %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"без изменений %s\n"); // should align with formatted + addPair("Directory %s\n", L"каталог %s\n"); + addPair("Default option file %s\n", L"Файл Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ по умолчанию %s\n"); + addPair("Project option file %s\n", L"Файл опций проекта %s\n"); + addPair("Exclude %s\n", L"иÑключать %s\n"); + addPair("Exclude (unmatched) %s\n", L"ИÑключить (непревзойденный) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s Форматированный %s без изменений "); + addPair(" seconds ", L" Ñекунды "); + addPair("%d min %d sec ", L"%d мин %d Ñек "); + addPair("%s lines\n", L"%s линий\n"); + addPair("Opening HTML documentation %s\n", L"Открытие HTML документации %s\n"); + addPair("Invalid default options:", L"ÐедейÑтвительные параметры по умолчанию:"); + addPair("Invalid project options:", L"ÐедопуÑтимые параметры проекта:"); + addPair("Invalid command line options:", L"ÐедопуÑтимые параметры командной Ñтроки:"); + addPair("For help on options type 'astyle -h'", L"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñправки по 'astyle -h' опций типа"); + addPair("Cannot open default option file", L"Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл параметров по умолчанию"); + addPair("Cannot open project option file", L"Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл опций проекта"); + addPair("Cannot open directory", L"Ðе могу открыть каталог"); + addPair("Cannot open HTML file %s\n", L"Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл HTML %s\n"); + addPair("Command execute failure", L"Выполнить команду недоÑтаточноÑти"); + addPair("Command is not installed", L"Ðе уÑтановлен Команда"); + addPair("Missing filename in %s\n", L"ОтÑутÑтвует Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в %s\n"); + addPair("Recursive option with no wildcard", L"РекурÑивный вариант без каких-либо шаблона"); + addPair("Did you intend quote the filename", L"Ð’Ñ‹ намерены цитатой файла"); + addPair("No file to process %s\n", L"Ðет файлов Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ %s\n"); + addPair("Did you intend to use --recursive", L"Ðеужели вы ÑобираетеÑÑŒ иÑпользовать --recursive"); + addPair("Cannot process UTF-32 encoding", L"Ðе удаетÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ UTF-32 кодировке"); + addPair("Artistic Style has terminated\n", L"Artistic Style прекратил\n"); +} + +Spanish::Spanish() // Español +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formato %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Inalterado %s\n"); // should align with formatted + addPair("Directory %s\n", L"Directorio %s\n"); + addPair("Default option file %s\n", L"Archivo de opciones predeterminado %s\n"); + addPair("Project option file %s\n", L"Archivo de opciones del proyecto %s\n"); + addPair("Exclude %s\n", L"Excluir %s\n"); + addPair("Exclude (unmatched) %s\n", L"Excluir (incomparable) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formato %s inalterado "); + addPair(" seconds ", L" segundo "); + addPair("%d min %d sec ", L"%d min %d seg "); + addPair("%s lines\n", L"%s líneas\n"); + addPair("Opening HTML documentation %s\n", L"Apertura de documentación HTML %s\n"); + addPair("Invalid default options:", L"Opciones predeterminadas no válidas:"); + addPair("Invalid project options:", L"Opciones de proyecto no válidas:"); + addPair("Invalid command line options:", L"No válido opciones de línea de comando:"); + addPair("For help on options type 'astyle -h'", L"Para obtener ayuda sobre las opciones tipo 'astyle -h'"); + addPair("Cannot open default option file", L"No se puede abrir el archivo de opciones predeterminado"); + addPair("Cannot open project option file", L"No se puede abrir el archivo de opciones del proyecto"); + addPair("Cannot open directory", L"No se puede abrir el directorio"); + addPair("Cannot open HTML file %s\n", L"No se puede abrir el archivo HTML %s\n"); + addPair("Command execute failure", L"Ejecutar el fracaso de comandos"); + addPair("Command is not installed", L"El comando no está instalado"); + addPair("Missing filename in %s\n", L"Falta nombre del archivo en %s\n"); + addPair("Recursive option with no wildcard", L"Recursiva opción sin comodín"); + addPair("Did you intend quote the filename", L"Se tiene la intención de citar el nombre de archivo"); + addPair("No file to process %s\n", L"No existe el fichero a procesar %s\n"); + addPair("Did you intend to use --recursive", L"Se va a utilizar --recursive"); + addPair("Cannot process UTF-32 encoding", L"No se puede procesar la codificación UTF-32"); + addPair("Artistic Style has terminated\n", L"Artistic Style ha terminado\n"); +} + +Swedish::Swedish() // Svenska +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"Formaterade %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"Oförändrade %s\n"); // should align with formatted + addPair("Directory %s\n", L"Katalog %s\n"); + addPair("Default option file %s\n", L"Standardalternativsfil %s\n"); + addPair("Project option file %s\n", L"Projektalternativ fil %s\n"); + addPair("Exclude %s\n", L"Uteslut %s\n"); + addPair("Exclude (unmatched) %s\n", L"Uteslut (oöverträffad) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s formaterade %s oförändrade "); + addPair(" seconds ", L" sekunder "); + addPair("%d min %d sec ", L"%d min %d sek "); + addPair("%s lines\n", L"%s linjer\n"); + addPair("Opening HTML documentation %s\n", L"Öppna HTML-dokumentation %s\n"); + addPair("Invalid default options:", L"Ogiltiga standardalternativ:"); + addPair("Invalid project options:", L"Ogiltiga projektalternativ:"); + addPair("Invalid command line options:", L"Ogiltig kommandoraden alternativ:"); + addPair("For help on options type 'astyle -h'", L"För hjälp om alternativ typ 'astyle -h'"); + addPair("Cannot open default option file", L"Kan inte öppna standardalternativsfilen"); + addPair("Cannot open project option file", L"Kan inte öppna projektalternativsfilen"); + addPair("Cannot open directory", L"Kan inte öppna katalog"); + addPair("Cannot open HTML file %s\n", L"Kan inte öppna HTML-filen %s\n"); + addPair("Command execute failure", L"Utför kommando misslyckande"); + addPair("Command is not installed", L"Kommandot är inte installerat"); + addPair("Missing filename in %s\n", L"Saknade filnamn i %s\n"); + addPair("Recursive option with no wildcard", L"Rekursiva alternativ utan jokertecken"); + addPair("Did you intend quote the filename", L"Visste du tänker citera filnamnet"); + addPair("No file to process %s\n", L"Ingen fil att bearbeta %s\n"); + addPair("Did you intend to use --recursive", L"Har du för avsikt att använda --recursive"); + addPair("Cannot process UTF-32 encoding", L"Kan inte hantera UTF-32 kodning"); + addPair("Artistic Style has terminated\n", L"Artistic Style har upphört\n"); +} + +Ukrainian::Ukrainian() // УкраїнÑький +// build the translation vector in the Translation base class +{ + addPair("Formatted %s\n", L"форматований %s\n"); // should align with unchanged + addPair("Unchanged %s\n", L"без змін %s\n"); // should align with formatted + addPair("Directory %s\n", L"Каталог %s\n"); + addPair("Default option file %s\n", L"Файл параметра за замовчуваннÑм %s\n"); + addPair("Project option file %s\n", L"Файл варіанту проекту %s\n"); + addPair("Exclude %s\n", L"Виключити %s\n"); + addPair("Exclude (unmatched) %s\n", L"Виключити (неперевершений) %s\n"); + addPair(" %s formatted %s unchanged ", L" %s відформатований %s без змін "); + addPair(" seconds ", L" Ñекунди "); + addPair("%d min %d sec ", L"%d хви %d cek "); + addPair("%s lines\n", L"%s ліній\n"); + addPair("Opening HTML documentation %s\n", L"Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ HTML документації %s\n"); + addPair("Invalid default options:", L"ÐедійÑні параметри за умовчаннÑм:"); + addPair("Invalid project options:", L"ÐедійÑні параметри проекту:"); + addPair("Invalid command line options:", L"ÐеприпуÑтима параметри командного Ñ€Ñдка:"); + addPair("For help on options type 'astyle -h'", L"Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸ по 'astyle -h' опцій типу"); + addPair("Cannot open default option file", L"Ðеможливо відкрити файл параметрів за замовчуваннÑм"); + addPair("Cannot open project option file", L"Ðеможливо відкрити файл параметрів проекту"); + addPair("Cannot open directory", L"Ðе можу відкрити каталог"); + addPair("Cannot open HTML file %s\n", L"Ðе вдаєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл HTML %s\n"); + addPair("Command execute failure", L"Виконати команду недоÑтатноÑÑ‚Ñ–"); + addPair("Command is not installed", L"Ðе вÑтановлений Команда"); + addPair("Missing filename in %s\n", L"ВідÑÑƒÑ‚Ð½Ñ Ð½Ð°Ð·Ð²Ð° файлу в %s\n"); + addPair("Recursive option with no wildcard", L"РекурÑивний варіант без будь-Ñких шаблону"); + addPair("Did you intend quote the filename", L"Ви маєте намір цитатою файлу"); + addPair("No file to process %s\n", L"Ðемає файлів Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ %s\n"); + addPair("Did you intend to use --recursive", L"Ðевже ви збираєтеÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати --recursive"); + addPair("Cannot process UTF-32 encoding", L"Ðе вдаєтьÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ UTF-32 кодуванні"); + addPair("Artistic Style has terminated\n", L"Artistic Style припинив\n"); +} + + +#endif // ASTYLE_LIB + +} // end of namespace astyle + diff -Nru geos-3.7.1/tools/astyle/ASLocalizer.h geos-3.8.0/tools/astyle/ASLocalizer.h --- geos-3.7.1/tools/astyle/ASLocalizer.h 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASLocalizer.h 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,167 @@ +// ASLocalizer.h +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + + +#ifndef ASLOCALIZER_H +#define ASLOCALIZER_H + +#include +#include + +// library builds do not need ASLocalizer +#ifdef ASTYLE_JNI + #ifndef ASTYLE_LIB // ASTYLE_LIB must be defined for ASTYLE_JNI + #define ASTYLE_LIB + #endif +#endif // ASTYLE_JNI + +namespace astyle { + +using namespace std; + +#ifndef ASTYLE_LIB + +//----------------------------------------------------------------------------- +// ASLocalizer class for console build. +// This class encapsulates all language-dependent settings and is a +// generalization of the C locale concept. +//----------------------------------------------------------------------------- +class Translation; + +class ASLocalizer +{ +public: // functions + ASLocalizer(); + virtual ~ASLocalizer(); + string getLanguageID() const; + const Translation* getTranslationClass() const; +#ifdef _WIN32 + void setLanguageFromLCID(size_t lcid); +#endif + void setLanguageFromName(const char* langID); + const char* settext(const char* textIn) const; + +private: // functions + void setTranslationClass(); + +private: // variables + Translation* m_translation; // pointer to a polymorphic Translation class + string m_langID; // language identifier from the locale + string m_subLangID; // sub language identifier, if needed + string m_localeName; // name of the current locale (Linux only) + size_t m_lcid; // LCID of the user locale (Windows only) +}; + +//---------------------------------------------------------------------------- +// Translation base class. +//---------------------------------------------------------------------------- + +class Translation +// This base class is inherited by the language translation classes. +// Polymorphism is used to call the correct language translator. +// This class contains the translation vector and settext translation method. +// The language vector is built by the language sub classes. +// NOTE: This class must have virtual methods for typeid() to work. +// typeid() is used by AStyleTestI18n_Localizer.cpp. +{ +public: + Translation() {} + virtual ~Translation() {} + string convertToMultiByte(const wstring& wideStr) const; + string getTranslationString(size_t i) const; + size_t getTranslationVectorSize() const; + bool getWideTranslation(const string& stringIn, wstring& wideOut) const; + string& translate(const string& stringIn) const; + +protected: + void addPair(const string& english, const wstring& translated); + // variables + vector > m_translation; // translation vector + +private: + mutable string m_mbTranslation; +}; + +//---------------------------------------------------------------------------- +// Translation classes +// One class for each language. +// These classes have only a constructor which builds the language vector. +//---------------------------------------------------------------------------- + +class Bulgarian : public Translation +{ public: Bulgarian(); }; + +class ChineseSimplified : public Translation +{ public: ChineseSimplified(); }; + +class ChineseTraditional : public Translation +{ public: ChineseTraditional(); }; + +class Dutch : public Translation +{ public: Dutch(); }; + +class English : public Translation +{ public: English(); }; + +class Estonian : public Translation +{ public: Estonian(); }; + +class Finnish : public Translation +{ public: Finnish(); }; + +class French : public Translation +{ public: French(); }; + +class German : public Translation +{ public: German(); }; + +class Greek : public Translation +{ public: Greek(); }; + +class Hindi : public Translation +{ public: Hindi(); }; + +class Hungarian : public Translation +{ public: Hungarian(); }; + +class Italian : public Translation +{ public: Italian(); }; + +class Japanese : public Translation +{ public: Japanese(); }; + +class Korean : public Translation +{ public: Korean(); }; + +class Norwegian : public Translation +{ public: Norwegian(); }; + +class Polish : public Translation +{ public: Polish(); }; + +class Portuguese : public Translation +{ public: Portuguese(); }; + +class Romanian : public Translation +{ public: Romanian(); }; + +class Russian : public Translation +{ public: Russian(); }; + +class Spanish : public Translation +{ public: Spanish(); }; + +class Swedish : public Translation +{ public: Swedish(); }; + +class Ukrainian : public Translation +{ public: Ukrainian(); }; + + +#endif // ASTYLE_LIB + +} // namespace astyle + +#endif // ASLOCALIZER_H diff -Nru geos-3.7.1/tools/astyle/ASResource.cpp geos-3.8.0/tools/astyle/ASResource.cpp --- geos-3.7.1/tools/astyle/ASResource.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/ASResource.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,837 @@ +// ASResource.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#include "astyle.h" +#include + +//----------------------------------------------------------------------------- +// astyle namespace +//----------------------------------------------------------------------------- + +namespace astyle { +// +const string ASResource::_AS_EXCEPT = string("__except"); +const string ASResource::_AS_FINALLY = string("__finally"); +const string ASResource::_AS_TRY = string("__try"); +const string ASResource::AS_ADD = string("add"); +const string ASResource::AS_AUTO = string("auto"); +const string ASResource::AS_AUTORELEASEPOOL = string("autoreleasepool"); +const string ASResource::AS_CASE = string("case"); +const string ASResource::AS_CATCH = string("catch"); +const string ASResource::AS_CLASS = string("class"); +const string ASResource::AS_CONST = string("const"); +const string ASResource::AS_CONST_CAST = string("const_cast"); +const string ASResource::AS_DEFAULT = string("default"); +const string ASResource::AS_DELEGATE = string("delegate"); +const string ASResource::AS_DELETE = string("delete"); +const string ASResource::AS_DO = string("do"); +const string ASResource::AS_DYNAMIC_CAST = string("dynamic_cast"); +const string ASResource::AS_ELSE = string("else"); +const string ASResource::AS_END = string("end"); +const string ASResource::AS_ENUM = string("enum"); +const string ASResource::AS_EXTERN = string("extern"); +const string ASResource::AS_FINAL = string("final"); +const string ASResource::AS_FINALLY = string("finally"); +const string ASResource::AS_FIXED = string("fixed"); +const string ASResource::AS_FOR = string("for"); +const string ASResource::AS_FOREACH = string("foreach"); +const string ASResource::AS_FOREVER = string("forever"); +const string ASResource::AS_GET = string("get"); +const string ASResource::AS_IF = string("if"); +const string ASResource::AS_INTERFACE = string("interface"); +const string ASResource::AS_INTERRUPT = string("interrupt"); +const string ASResource::AS_LET = string("let"); +const string ASResource::AS_LOCK = string("lock"); +const string ASResource::AS_MODULE = string("module"); // CORBA IDL module definition +const string ASResource::AS_NAMESPACE = string("namespace"); +const string ASResource::AS_NEW = string("new"); +const string ASResource::AS_NOEXCEPT = string("noexcept"); +const string ASResource::AS_NS_DURING = string("NS_DURING"); +const string ASResource::AS_NS_HANDLER = string("NS_HANDLER"); +const string ASResource::AS_OPERATOR = string("operator"); +const string ASResource::AS_OVERRIDE = string("override"); +const string ASResource::AS_PRIVATE = string("private"); +const string ASResource::AS_PROTECTED = string("protected"); +const string ASResource::AS_PUBLIC = string("public"); +const string ASResource::AS_QFOREACH = string("Q_FOREACH"); +const string ASResource::AS_QFOREVER = string("Q_FOREVER"); +const string ASResource::AS_REINTERPRET_CAST = string("reinterpret_cast"); +const string ASResource::AS_REMOVE = string("remove"); +const string ASResource::AS_SEALED = string("sealed"); +const string ASResource::AS_SELECTOR = string("selector"); +const string ASResource::AS_SET = string("set"); +const string ASResource::AS_STATIC = string("static"); +const string ASResource::AS_STATIC_CAST = string("static_cast"); +const string ASResource::AS_STRUCT = string("struct"); +const string ASResource::AS_SWITCH = string("switch"); +const string ASResource::AS_SYNCHRONIZED = string("synchronized"); +const string ASResource::AS_TEMPLATE = string("template"); +const string ASResource::AS_THROW = string("throw"); +const string ASResource::AS_THROWS = string("throws"); +const string ASResource::AS_TRY = string("try"); +const string ASResource::AS_UNCHECKED = string("unchecked"); +const string ASResource::AS_UNION = string("union"); +const string ASResource::AS_UNSAFE = string("unsafe"); +const string ASResource::AS_USING = string("using"); +const string ASResource::AS_VOLATILE = string("volatile"); +const string ASResource::AS_WHERE = string("where"); +const string ASResource::AS_WHILE = string("while"); + +const string ASResource::AS_ASM = string("asm"); +const string ASResource::AS__ASM__ = string("__asm__"); +const string ASResource::AS_MS_ASM = string("_asm"); +const string ASResource::AS_MS__ASM = string("__asm"); + +const string ASResource::AS_BAR_DEFINE = string("#define"); +const string ASResource::AS_BAR_INCLUDE = string("#include"); +const string ASResource::AS_BAR_IF = string("#if"); +const string ASResource::AS_BAR_EL = string("#el"); +const string ASResource::AS_BAR_ENDIF = string("#endif"); + +const string ASResource::AS_OPEN_BRACE = string("{"); +const string ASResource::AS_CLOSE_BRACE = string("}"); +const string ASResource::AS_OPEN_LINE_COMMENT = string("//"); +const string ASResource::AS_OPEN_COMMENT = string("/*"); +const string ASResource::AS_CLOSE_COMMENT = string("*/"); + +const string ASResource::AS_ASSIGN = string("="); +const string ASResource::AS_PLUS_ASSIGN = string("+="); +const string ASResource::AS_MINUS_ASSIGN = string("-="); +const string ASResource::AS_MULT_ASSIGN = string("*="); +const string ASResource::AS_DIV_ASSIGN = string("/="); +const string ASResource::AS_MOD_ASSIGN = string("%="); +const string ASResource::AS_OR_ASSIGN = string("|="); +const string ASResource::AS_AND_ASSIGN = string("&="); +const string ASResource::AS_XOR_ASSIGN = string("^="); +const string ASResource::AS_GR_GR_ASSIGN = string(">>="); +const string ASResource::AS_LS_LS_ASSIGN = string("<<="); +const string ASResource::AS_GR_GR_GR_ASSIGN = string(">>>="); +const string ASResource::AS_LS_LS_LS_ASSIGN = string("<<<="); +const string ASResource::AS_GCC_MIN_ASSIGN = string("?"); + +const string ASResource::AS_RETURN = string("return"); +const string ASResource::AS_CIN = string("cin"); +const string ASResource::AS_COUT = string("cout"); +const string ASResource::AS_CERR = string("cerr"); + +const string ASResource::AS_EQUAL = string("=="); +const string ASResource::AS_PLUS_PLUS = string("++"); +const string ASResource::AS_MINUS_MINUS = string("--"); +const string ASResource::AS_NOT_EQUAL = string("!="); +const string ASResource::AS_GR_EQUAL = string(">="); +const string ASResource::AS_GR_GR = string(">>"); +const string ASResource::AS_GR_GR_GR = string(">>>"); +const string ASResource::AS_LS_EQUAL = string("<="); +const string ASResource::AS_LS_LS = string("<<"); +const string ASResource::AS_LS_LS_LS = string("<<<"); +const string ASResource::AS_QUESTION_QUESTION = string("??"); +const string ASResource::AS_LAMBDA = string("=>"); // C# lambda expression arrow +const string ASResource::AS_ARROW = string("->"); +const string ASResource::AS_AND = string("&&"); +const string ASResource::AS_OR = string("||"); +const string ASResource::AS_SCOPE_RESOLUTION = string("::"); + +const string ASResource::AS_PLUS = string("+"); +const string ASResource::AS_MINUS = string("-"); +const string ASResource::AS_MULT = string("*"); +const string ASResource::AS_DIV = string("/"); +const string ASResource::AS_MOD = string("%"); +const string ASResource::AS_GR = string(">"); +const string ASResource::AS_LS = string("<"); +const string ASResource::AS_NOT = string("!"); +const string ASResource::AS_BIT_OR = string("|"); +const string ASResource::AS_BIT_AND = string("&"); +const string ASResource::AS_BIT_NOT = string("~"); +const string ASResource::AS_BIT_XOR = string("^"); +const string ASResource::AS_QUESTION = string("?"); +const string ASResource::AS_COLON = string(":"); +const string ASResource::AS_COMMA = string(","); +const string ASResource::AS_SEMICOLON = string(";"); + +/** + * Sort comparison function. + * Compares the length of the value of pointers in the vectors. + * The LONGEST strings will be first in the vector. + * + * @param a and b, the string pointers to be compared. + */ +bool sortOnLength(const string* a, const string* b) +{ + return (*a).length() > (*b).length(); +} + +/** + * Sort comparison function. + * Compares the value of pointers in the vectors. + * + * @param a and b, the string pointers to be compared. + */ +bool sortOnName(const string* a, const string* b) +{ + return *a < *b; +} + +/** + * Build the vector of assignment operators. + * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp + * + * @param assignmentOperators a reference to the vector to be built. + */ +void ASResource::buildAssignmentOperators(vector* assignmentOperators) +{ + const size_t elements = 15; + static bool reserved = false; + if (!reserved) + { + assignmentOperators->reserve(elements); + reserved = true; + } + + assignmentOperators->emplace_back(&AS_ASSIGN); + assignmentOperators->emplace_back(&AS_PLUS_ASSIGN); + assignmentOperators->emplace_back(&AS_MINUS_ASSIGN); + assignmentOperators->emplace_back(&AS_MULT_ASSIGN); + assignmentOperators->emplace_back(&AS_DIV_ASSIGN); + assignmentOperators->emplace_back(&AS_MOD_ASSIGN); + assignmentOperators->emplace_back(&AS_OR_ASSIGN); + assignmentOperators->emplace_back(&AS_AND_ASSIGN); + assignmentOperators->emplace_back(&AS_XOR_ASSIGN); + + // Java + assignmentOperators->emplace_back(&AS_GR_GR_GR_ASSIGN); + assignmentOperators->emplace_back(&AS_GR_GR_ASSIGN); + assignmentOperators->emplace_back(&AS_LS_LS_ASSIGN); + + // Unknown + assignmentOperators->emplace_back(&AS_LS_LS_LS_ASSIGN); + + assert(assignmentOperators->size() < elements); + sort(assignmentOperators->begin(), assignmentOperators->end(), sortOnLength); +} + +/** + * Build the vector of C++ cast operators. + * Used by ONLY ASFormatter.cpp + * + * @param castOperators a reference to the vector to be built. + */ +void ASResource::buildCastOperators(vector* castOperators) +{ + const size_t elements = 5; + static bool reserved = false; + if (!reserved) + { + castOperators->reserve(elements); + reserved = true; + } + + castOperators->emplace_back(&AS_CONST_CAST); + castOperators->emplace_back(&AS_DYNAMIC_CAST); + castOperators->emplace_back(&AS_REINTERPRET_CAST); + castOperators->emplace_back(&AS_STATIC_CAST); + + assert(castOperators->size() < elements); + sort(castOperators->begin(), castOperators->end(), sortOnName); +} + +/** + * Build the vector of header words. + * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp + * + * @param headers a reference to the vector to be built. + */ +void ASResource::buildHeaders(vector* headers, int fileType, bool beautifier) +{ + const size_t elements = 25; + static bool reserved = false; + if (!reserved) + { + headers->reserve(elements); + reserved = true; + } + + headers->emplace_back(&AS_IF); + headers->emplace_back(&AS_ELSE); + headers->emplace_back(&AS_FOR); + headers->emplace_back(&AS_WHILE); + headers->emplace_back(&AS_DO); + headers->emplace_back(&AS_SWITCH); + headers->emplace_back(&AS_CASE); + headers->emplace_back(&AS_DEFAULT); + headers->emplace_back(&AS_TRY); + headers->emplace_back(&AS_CATCH); + headers->emplace_back(&AS_QFOREACH); // QT + headers->emplace_back(&AS_QFOREVER); // QT + headers->emplace_back(&AS_FOREACH); // QT & C# + headers->emplace_back(&AS_FOREVER); // Qt & Boost + + if (fileType == C_TYPE) + { + headers->emplace_back(&_AS_TRY); // __try + headers->emplace_back(&_AS_FINALLY); // __finally + headers->emplace_back(&_AS_EXCEPT); // __except + } + if (fileType == JAVA_TYPE) + { + headers->emplace_back(&AS_FINALLY); + headers->emplace_back(&AS_SYNCHRONIZED); + } + + if (fileType == SHARP_TYPE) + { + headers->emplace_back(&AS_FINALLY); + headers->emplace_back(&AS_LOCK); + headers->emplace_back(&AS_FIXED); + headers->emplace_back(&AS_GET); + headers->emplace_back(&AS_SET); + headers->emplace_back(&AS_ADD); + headers->emplace_back(&AS_REMOVE); + headers->emplace_back(&AS_USING); + } + + if (beautifier) + { + if (fileType == C_TYPE) + { + headers->emplace_back(&AS_TEMPLATE); + } + + if (fileType == JAVA_TYPE) + { + headers->emplace_back(&AS_STATIC); // for static constructor + } + } + + assert(headers->size() < elements); + sort(headers->begin(), headers->end(), sortOnName); +} + +/** + * Build the vector of indentable headers. + * Used by ONLY ASBeautifier.cpp + * + * @param indentableHeaders a reference to the vector to be built. + */ +void ASResource::buildIndentableHeaders(vector* indentableHeaders) +{ + indentableHeaders->emplace_back(&AS_RETURN); + +// sort(indentableHeaders->begin(), indentableHeaders->end(), sortOnName); +} + +/** +* Build the vector of indentable macros pairs. +* Initialized by ASFormatter, used by ONLY ASEnhancer.cpp +* +* @param indentableMacros a reference to the vector to be built. +*/ +void ASResource::buildIndentableMacros(vector* >* indentableMacros) +{ + const size_t elements = 10; + static bool reserved = false; + if (!reserved) + { + indentableMacros->reserve(elements); + reserved = true; + } + + // the pairs must be retained in memory because of pair pointers + typedef pair macro_pair; + static const macro_pair macros[] = + { + // wxWidgets + macro_pair("BEGIN_EVENT_TABLE", "END_EVENT_TABLE"), + macro_pair("wxBEGIN_EVENT_TABLE", "wxEND_EVENT_TABLE"), + // MFC + macro_pair("BEGIN_DISPATCH_MAP", "END_DISPATCH_MAP"), + macro_pair("BEGIN_EVENT_MAP", "END_EVENT_MAP"), + macro_pair("BEGIN_MESSAGE_MAP", "END_MESSAGE_MAP"), + macro_pair("BEGIN_PROPPAGEIDS", "END_PROPPAGEIDS"), + }; + + size_t entries = sizeof(macros) / sizeof(macros[0]); + for (size_t i = 0; i < entries; i++) + indentableMacros->emplace_back(¯os[i]); + + assert(indentableMacros->size() < elements); +} + +/** + * Build the vector of non-assignment operators. + * Used by ONLY ASBeautifier.cpp + * + * @param nonAssignmentOperators a reference to the vector to be built. + */ +void ASResource::buildNonAssignmentOperators(vector* nonAssignmentOperators) +{ + const size_t elements = 15; + static bool reserved = false; + if (!reserved) + { + nonAssignmentOperators->reserve(elements); + reserved = true; + } + + nonAssignmentOperators->emplace_back(&AS_EQUAL); + nonAssignmentOperators->emplace_back(&AS_PLUS_PLUS); + nonAssignmentOperators->emplace_back(&AS_MINUS_MINUS); + nonAssignmentOperators->emplace_back(&AS_NOT_EQUAL); + nonAssignmentOperators->emplace_back(&AS_GR_EQUAL); + nonAssignmentOperators->emplace_back(&AS_GR_GR_GR); + nonAssignmentOperators->emplace_back(&AS_GR_GR); + nonAssignmentOperators->emplace_back(&AS_LS_EQUAL); + nonAssignmentOperators->emplace_back(&AS_LS_LS_LS); + nonAssignmentOperators->emplace_back(&AS_LS_LS); + nonAssignmentOperators->emplace_back(&AS_ARROW); + nonAssignmentOperators->emplace_back(&AS_AND); + nonAssignmentOperators->emplace_back(&AS_OR); + nonAssignmentOperators->emplace_back(&AS_LAMBDA); + + assert(nonAssignmentOperators->size() < elements); + sort(nonAssignmentOperators->begin(), nonAssignmentOperators->end(), sortOnLength); +} + +/** + * Build the vector of header non-paren headers. + * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp. + * NOTE: Non-paren headers should also be included in the headers vector. + * + * @param nonParenHeaders a reference to the vector to be built. + */ +void ASResource::buildNonParenHeaders(vector* nonParenHeaders, int fileType, bool beautifier) +{ + const size_t elements = 20; + static bool reserved = false; + if (!reserved) + { + nonParenHeaders->reserve(elements); + reserved = true; + } + + nonParenHeaders->emplace_back(&AS_ELSE); + nonParenHeaders->emplace_back(&AS_DO); + nonParenHeaders->emplace_back(&AS_TRY); + nonParenHeaders->emplace_back(&AS_CATCH); // can be paren or non-paren + nonParenHeaders->emplace_back(&AS_CASE); // can be paren or non-paren + nonParenHeaders->emplace_back(&AS_DEFAULT); + nonParenHeaders->emplace_back(&AS_QFOREVER); // QT + nonParenHeaders->emplace_back(&AS_FOREVER); // Boost + + if (fileType == C_TYPE) + { + nonParenHeaders->emplace_back(&_AS_TRY); // __try + nonParenHeaders->emplace_back(&_AS_FINALLY); // __finally + } + if (fileType == JAVA_TYPE) + { + nonParenHeaders->emplace_back(&AS_FINALLY); + } + + if (fileType == SHARP_TYPE) + { + nonParenHeaders->emplace_back(&AS_FINALLY); + nonParenHeaders->emplace_back(&AS_GET); + nonParenHeaders->emplace_back(&AS_SET); + nonParenHeaders->emplace_back(&AS_ADD); + nonParenHeaders->emplace_back(&AS_REMOVE); + } + + if (beautifier) + { + if (fileType == C_TYPE) + { + nonParenHeaders->emplace_back(&AS_TEMPLATE); + } + if (fileType == JAVA_TYPE) + { + nonParenHeaders->emplace_back(&AS_STATIC); + } + } + + assert(nonParenHeaders->size() < elements); + sort(nonParenHeaders->begin(), nonParenHeaders->end(), sortOnName); +} + +/** + * Build the vector of operators. + * Used by ONLY ASFormatter.cpp + * + * @param operators a reference to the vector to be built. + */ +void ASResource::buildOperators(vector* operators, int fileType) +{ + const size_t elements = 50; + static bool reserved = false; + if (!reserved) + { + operators->reserve(elements); + reserved = true; + } + + + operators->emplace_back(&AS_PLUS_ASSIGN); + operators->emplace_back(&AS_MINUS_ASSIGN); + operators->emplace_back(&AS_MULT_ASSIGN); + operators->emplace_back(&AS_DIV_ASSIGN); + operators->emplace_back(&AS_MOD_ASSIGN); + operators->emplace_back(&AS_OR_ASSIGN); + operators->emplace_back(&AS_AND_ASSIGN); + operators->emplace_back(&AS_XOR_ASSIGN); + operators->emplace_back(&AS_EQUAL); + operators->emplace_back(&AS_PLUS_PLUS); + operators->emplace_back(&AS_MINUS_MINUS); + operators->emplace_back(&AS_NOT_EQUAL); + operators->emplace_back(&AS_GR_EQUAL); + operators->emplace_back(&AS_GR_GR_GR_ASSIGN); + operators->emplace_back(&AS_GR_GR_ASSIGN); + operators->emplace_back(&AS_GR_GR_GR); + operators->emplace_back(&AS_GR_GR); + operators->emplace_back(&AS_LS_EQUAL); + operators->emplace_back(&AS_LS_LS_LS_ASSIGN); + operators->emplace_back(&AS_LS_LS_ASSIGN); + operators->emplace_back(&AS_LS_LS_LS); + operators->emplace_back(&AS_LS_LS); + operators->emplace_back(&AS_QUESTION_QUESTION); + operators->emplace_back(&AS_LAMBDA); + operators->emplace_back(&AS_ARROW); + operators->emplace_back(&AS_AND); + operators->emplace_back(&AS_OR); + operators->emplace_back(&AS_SCOPE_RESOLUTION); + operators->emplace_back(&AS_PLUS); + operators->emplace_back(&AS_MINUS); + operators->emplace_back(&AS_MULT); + operators->emplace_back(&AS_DIV); + operators->emplace_back(&AS_MOD); + operators->emplace_back(&AS_QUESTION); + operators->emplace_back(&AS_COLON); + operators->emplace_back(&AS_ASSIGN); + operators->emplace_back(&AS_LS); + operators->emplace_back(&AS_GR); + operators->emplace_back(&AS_NOT); + operators->emplace_back(&AS_BIT_OR); + operators->emplace_back(&AS_BIT_AND); + operators->emplace_back(&AS_BIT_NOT); + operators->emplace_back(&AS_BIT_XOR); + if (fileType == C_TYPE) + { + operators->emplace_back(&AS_GCC_MIN_ASSIGN); + operators->emplace_back(&AS_GCC_MAX_ASSIGN); + } + + assert(operators->size() < elements); + sort(operators->begin(), operators->end(), sortOnLength); +} + +/** + * Build the vector of pre-block statements. + * Used by ONLY ASBeautifier.cpp + * NOTE: Cannot be both a header and a preBlockStatement. + * + * @param preBlockStatements a reference to the vector to be built. + */ +void ASResource::buildPreBlockStatements(vector* preBlockStatements, int fileType) +{ + const size_t elements = 10; + static bool reserved = false; + if (!reserved) + { + preBlockStatements->reserve(elements); + reserved = true; + } + + preBlockStatements->emplace_back(&AS_CLASS); + if (fileType == C_TYPE) + { + preBlockStatements->emplace_back(&AS_STRUCT); + preBlockStatements->emplace_back(&AS_UNION); + preBlockStatements->emplace_back(&AS_NAMESPACE); + preBlockStatements->emplace_back(&AS_MODULE); // for CORBA IDL + preBlockStatements->emplace_back(&AS_INTERFACE); // for CORBA IDL + } + if (fileType == JAVA_TYPE) + { + preBlockStatements->emplace_back(&AS_INTERFACE); + preBlockStatements->emplace_back(&AS_THROWS); + } + if (fileType == SHARP_TYPE) + { + preBlockStatements->emplace_back(&AS_INTERFACE); + preBlockStatements->emplace_back(&AS_NAMESPACE); + preBlockStatements->emplace_back(&AS_WHERE); + preBlockStatements->emplace_back(&AS_STRUCT); + } + + assert(preBlockStatements->size() < elements); + sort(preBlockStatements->begin(), preBlockStatements->end(), sortOnName); +} + +/** + * Build the vector of pre-command headers. + * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp. + * NOTE: Cannot be both a header and a preCommandHeader. + * + * A preCommandHeader is in a function definition between + * the closing paren and the opening brace. + * e.g. in "void foo() const {}", "const" is a preCommandHeader. + */ +void ASResource::buildPreCommandHeaders(vector* preCommandHeaders, int fileType) +{ + const size_t elements = 10; + static bool reserved = false; + if (!reserved) + { + preCommandHeaders->reserve(elements); + reserved = true; + } + + if (fileType == C_TYPE) + { + preCommandHeaders->emplace_back(&AS_CONST); + preCommandHeaders->emplace_back(&AS_FINAL); + preCommandHeaders->emplace_back(&AS_INTERRUPT); + preCommandHeaders->emplace_back(&AS_NOEXCEPT); + preCommandHeaders->emplace_back(&AS_OVERRIDE); + preCommandHeaders->emplace_back(&AS_VOLATILE); + preCommandHeaders->emplace_back(&AS_SEALED); // Visual C only + preCommandHeaders->emplace_back(&AS_AUTORELEASEPOOL); // Obj-C only + } + + if (fileType == JAVA_TYPE) + { + preCommandHeaders->emplace_back(&AS_THROWS); + } + + if (fileType == SHARP_TYPE) + { + preCommandHeaders->emplace_back(&AS_WHERE); + } + + assert(preCommandHeaders->size() < elements); + sort(preCommandHeaders->begin(), preCommandHeaders->end(), sortOnName); +} + +/** + * Build the vector of pre-definition headers. + * Used by ONLY ASFormatter.cpp + * NOTE: Do NOT add 'enum' here. It is an array type brace. + * NOTE: Do NOT add 'extern' here. Do not want an extra indent. + * + * @param preDefinitionHeaders a reference to the vector to be built. + */ +void ASResource::buildPreDefinitionHeaders(vector* preDefinitionHeaders, int fileType) +{ + const size_t elements = 10; + static bool reserved = false; + if (!reserved) + { + preDefinitionHeaders->reserve(elements); + reserved = true; + } + + preDefinitionHeaders->emplace_back(&AS_CLASS); + if (fileType == C_TYPE) + { + preDefinitionHeaders->emplace_back(&AS_STRUCT); + preDefinitionHeaders->emplace_back(&AS_UNION); + preDefinitionHeaders->emplace_back(&AS_NAMESPACE); + preDefinitionHeaders->emplace_back(&AS_MODULE); // for CORBA IDL + preDefinitionHeaders->emplace_back(&AS_INTERFACE); // for CORBA IDL + } + if (fileType == JAVA_TYPE) + { + preDefinitionHeaders->emplace_back(&AS_INTERFACE); + } + if (fileType == SHARP_TYPE) + { + preDefinitionHeaders->emplace_back(&AS_STRUCT); + preDefinitionHeaders->emplace_back(&AS_INTERFACE); + preDefinitionHeaders->emplace_back(&AS_NAMESPACE); + } + + assert(preDefinitionHeaders->size() < elements); + sort(preDefinitionHeaders->begin(), preDefinitionHeaders->end(), sortOnName); +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * ASBase Functions + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// check if a specific line position contains a header. +const string* ASBase::findHeader(const string& line, int i, + const vector* possibleHeaders) const +{ + assert(isCharPotentialHeader(line, i)); + // check the word + size_t maxHeaders = possibleHeaders->size(); + for (size_t p = 0; p < maxHeaders; p++) + { + const string* header = (*possibleHeaders)[p]; + const size_t wordEnd = i + header->length(); + if (wordEnd > line.length()) + continue; + int result = (line.compare(i, header->length(), *header)); + if (result > 0) + continue; + if (result < 0) + break; + // check that this is not part of a longer word + if (wordEnd == line.length()) + return header; + if (isLegalNameChar(line[wordEnd])) + continue; + const char peekChar = peekNextChar(line, wordEnd - 1); + // is not a header if part of a definition + if (peekChar == ',' || peekChar == ')') + break; + // the following accessor definitions are NOT headers + // goto default; is NOT a header + // default(int) keyword in C# is NOT a header + else if ((header == &AS_GET + || header == &AS_SET + || header == &AS_DEFAULT) + && (peekChar == ';' || peekChar == '(' || peekChar == '=')) + break; + return header; + } + return nullptr; +} + +// check if a specific line position contains a keyword. +bool ASBase::findKeyword(const string& line, int i, const string& keyword) const +{ + assert(isCharPotentialHeader(line, i)); + // check the word + const size_t keywordLength = keyword.length(); + const size_t wordEnd = i + keywordLength; + if (wordEnd > line.length()) + return false; + if (line.compare(i, keywordLength, keyword) != 0) + return false; + // check that this is not part of a longer word + if (wordEnd == line.length()) + return true; + if (isLegalNameChar(line[wordEnd])) + return false; + // is not a keyword if part of a definition + const char peekChar = peekNextChar(line, (int) wordEnd - 1); + if (peekChar == ',' || peekChar == ')') + return false; + return true; +} + +// check if a specific line position contains an operator. +const string* ASBase::findOperator(const string& line, int i, + const vector* possibleOperators) const +{ + assert(isCharPotentialOperator(line[i])); + // find the operator in the vector + // the vector contains the LONGEST operators first + // must loop thru the entire vector + size_t maxOperators = possibleOperators->size(); + for (size_t p = 0; p < maxOperators; p++) + { + const size_t wordEnd = i + (*(*possibleOperators)[p]).length(); + if (wordEnd > line.length()) + continue; + if (line.compare(i, (*(*possibleOperators)[p]).length(), *(*possibleOperators)[p]) == 0) + return (*possibleOperators)[p]; + } + return nullptr; +} + +// get the current word on a line +// index must point to the beginning of the word +string ASBase::getCurrentWord(const string& line, size_t index) const +{ + assert(isCharPotentialHeader(line, index)); + size_t lineLength = line.length(); + size_t i; + for (i = index; i < lineLength; i++) + { + if (!isLegalNameChar(line[i])) + break; + } + return line.substr(index, i - index); +} + +// check if a specific character can be used in a legal variable/method/class name +bool ASBase::isLegalNameChar(char ch) const +{ + if (isWhiteSpace(ch)) + return false; + if ((unsigned char) ch > 127) + return false; + return (isalnum((unsigned char) ch) + || ch == '.' || ch == '_' + || (isJavaStyle() && ch == '$') + || (isSharpStyle() && ch == '@')); // may be used as a prefix +} + +// check if a specific character can be part of a header +bool ASBase::isCharPotentialHeader(const string& line, size_t i) const +{ + assert(!isWhiteSpace(line[i])); + char prevCh = ' '; + if (i > 0) + prevCh = line[i - 1]; + if (i > 1 && line[i - 2] == '\\') + prevCh = ' '; + if (!isLegalNameChar(prevCh) && isLegalNameChar(line[i])) + return true; + return false; +} + +// check if a specific character can be part of an operator +bool ASBase::isCharPotentialOperator(char ch) const +{ + assert(!isWhiteSpace(ch)); + if ((unsigned) ch > 127) + return false; + return (ispunct((unsigned char) ch) + && ch != '{' && ch != '}' + && ch != '(' && ch != ')' + && ch != '[' && ch != ']' + && ch != ';' && ch != ',' + && ch != '#' && ch != '\\' + && ch != '\'' && ch != '\"'); +} + +// check if a specific character is a digit +// NOTE: Visual C isdigit() gives assert error if char > 256 +bool ASBase::isDigit(char ch) const +{ + return (ch >= '0' && ch <= '9'); +} + +// check if a specific character is a digit separator +bool ASBase::isDigitSeparator(const string& line, int i) const +{ + assert(line[i] == '\''); + // casting to (unsigned char) eliminates negative characters + // will get a "Debug Assertion Failed" if not cast + bool foundDigitSeparator = i > 0 + && isxdigit((unsigned char) line[i - 1]) + && i < (int) line.length() - 1 + && isxdigit((unsigned char) line[i + 1]); + return foundDigitSeparator; +} + +// peek at the next unread character. +char ASBase::peekNextChar(const string& line, int i) const +{ + char ch = ' '; + size_t peekNum = line.find_first_not_of(" \t", i + 1); + if (peekNum == string::npos) + return ch; + ch = line[peekNum]; + return ch; +} + +} // end namespace astyle diff -Nru geos-3.7.1/tools/astyle/astyle.h geos-3.8.0/tools/astyle/astyle.h --- geos-3.7.1/tools/astyle/astyle.h 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/astyle.h 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,1083 @@ +// astyle.h +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +#ifndef ASTYLE_H +#define ASTYLE_H + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#ifdef __VMS + #define __USE_STD_IOSTREAM 1 + #include +#else + #include +#endif + +#include +#include // for cout +#include +#include +#include + +#ifdef __GNUC__ + #include // need both string and cstring for GCC +#endif + +//----------------------------------------------------------------------------- +// declarations +//----------------------------------------------------------------------------- + +#ifdef _MSC_VER + #pragma warning(disable: 4267) // conversion from size_t to int +#endif + +#ifdef __BORLANDC__ + #pragma warn -8004 // variable is assigned a value that is never used +#endif + +#ifdef __GNUC__ + #pragma GCC diagnostic ignored "-Wconversion" +#endif + +#ifdef __INTEL_COMPILER + #pragma warning(disable: 383) // value copied to temporary, reference to temporary used + #pragma warning(disable: 981) // operands are evaluated in unspecified order +#endif + +#ifdef __clang__ + #pragma clang diagnostic ignored "-Wshorten-64-to-32" +#endif + +//----------------------------------------------------------------------------- +// astyle namespace +//----------------------------------------------------------------------------- + +namespace astyle { +// +using namespace std; + +//---------------------------------------------------------------------------- +// definitions +//---------------------------------------------------------------------------- + +enum FileType { C_TYPE = 0, JAVA_TYPE = 1, SHARP_TYPE = 2 }; + +/* The enums below are not recognized by 'vectors' in Microsoft Visual C++ + V5 when they are part of a namespace!!! Use Visual C++ V6 or higher. +*/ +enum FormatStyle +{ + STYLE_NONE, + STYLE_ALLMAN, + STYLE_JAVA, + STYLE_KR, + STYLE_STROUSTRUP, + STYLE_WHITESMITH, + STYLE_VTK, + STYLE_RATLIFF, + STYLE_GNU, + STYLE_LINUX, + STYLE_HORSTMANN, + STYLE_1TBS, + STYLE_GOOGLE, + STYLE_MOZILLA, + STYLE_PICO, + STYLE_LISP +}; + +enum BraceMode +{ + NONE_MODE, + ATTACH_MODE, + BREAK_MODE, + LINUX_MODE, + RUN_IN_MODE // broken braces +}; + +// maximum value for int is 16,384 (total value of 32,767) +enum BraceType +{ + NULL_TYPE = 0, + NAMESPACE_TYPE = 1, // also a DEFINITION_TYPE + CLASS_TYPE = 2, // also a DEFINITION_TYPE + STRUCT_TYPE = 4, // also a DEFINITION_TYPE + INTERFACE_TYPE = 8, // also a DEFINITION_TYPE + DEFINITION_TYPE = 16, + COMMAND_TYPE = 32, + ARRAY_NIS_TYPE = 64, // also an ARRAY_TYPE + ENUM_TYPE = 128, // also an ARRAY_TYPE + INIT_TYPE = 256, // also an ARRAY_TYPE + ARRAY_TYPE = 512, + EXTERN_TYPE = 1024, // extern "C", not a command type extern + EMPTY_BLOCK_TYPE = 2048, // also a SINGLE_LINE_TYPE + BREAK_BLOCK_TYPE = 4096, // also a SINGLE_LINE_TYPE + SINGLE_LINE_TYPE = 8192 +}; + +enum MinConditional +{ + MINCOND_ZERO, + MINCOND_ONE, + MINCOND_TWO, + MINCOND_ONEHALF, + MINCOND_END +}; + +enum ObjCColonPad +{ + COLON_PAD_NO_CHANGE, + COLON_PAD_NONE, + COLON_PAD_ALL, + COLON_PAD_AFTER, + COLON_PAD_BEFORE +}; + +enum PointerAlign +{ + PTR_ALIGN_NONE, + PTR_ALIGN_TYPE, + PTR_ALIGN_MIDDLE, + PTR_ALIGN_NAME +}; + +enum ReferenceAlign +{ + REF_ALIGN_NONE = PTR_ALIGN_NONE, + REF_ALIGN_TYPE = PTR_ALIGN_TYPE, + REF_ALIGN_MIDDLE = PTR_ALIGN_MIDDLE, + REF_ALIGN_NAME = PTR_ALIGN_NAME, + REF_SAME_AS_PTR +}; + +enum FileEncoding +{ + ENCODING_8BIT, // includes UTF-8 without BOM + UTF_8BOM, // UTF-8 with BOM + UTF_16BE, + UTF_16LE, // Windows default + UTF_32BE, + UTF_32LE +}; + +enum LineEndFormat +{ + LINEEND_DEFAULT, // Use line break that matches most of the file + LINEEND_WINDOWS, + LINEEND_LINUX, + LINEEND_MACOLD, + LINEEND_CRLF = LINEEND_WINDOWS, + LINEEND_LF = LINEEND_LINUX, + LINEEND_CR = LINEEND_MACOLD +}; + +//----------------------------------------------------------------------------- +// Class ASSourceIterator +// A pure virtual class is used by ASFormatter and ASBeautifier instead of +// ASStreamIterator. This allows programs using AStyle as a plug-in to define +// their own ASStreamIterator. The ASStreamIterator class must inherit +// this class. +//----------------------------------------------------------------------------- + +class ASSourceIterator +{ +public: + ASSourceIterator() {} + virtual ~ASSourceIterator() {} + virtual streamoff getPeekStart() const = 0; + virtual int getStreamLength() const = 0; + virtual bool hasMoreLines() const = 0; + virtual string nextLine(bool emptyLineWasDeleted = false) = 0; + virtual string peekNextLine() = 0; + virtual void peekReset() = 0; + virtual streamoff tellg() = 0; +}; + +//----------------------------------------------------------------------------- +// Class ASPeekStream +// A small class using RAII to peek ahead in the ASSourceIterator stream +// and to reset the ASSourceIterator pointer in the destructor. +// It enables a return from anywhere in the method. +//----------------------------------------------------------------------------- + +class ASPeekStream +{ +private: + ASSourceIterator* sourceIterator; + bool needReset; // reset sourceIterator to the original position + +public: + explicit ASPeekStream(ASSourceIterator* sourceIterator_) + { sourceIterator = sourceIterator_; needReset = false; } + + ~ASPeekStream() + { if (needReset) sourceIterator->peekReset(); } + + bool hasMoreLines() const + { return sourceIterator->hasMoreLines(); } + + string peekNextLine() + { needReset = true; return sourceIterator->peekNextLine(); } +}; + + +//----------------------------------------------------------------------------- +// Class ASResource +//----------------------------------------------------------------------------- + +class ASResource +{ +public: + void buildAssignmentOperators(vector* assignmentOperators); + void buildCastOperators(vector* castOperators); + void buildHeaders(vector* headers, int fileType, bool beautifier = false); + void buildIndentableMacros(vector* >* indentableMacros); + void buildIndentableHeaders(vector* indentableHeaders); + void buildNonAssignmentOperators(vector* nonAssignmentOperators); + void buildNonParenHeaders(vector* nonParenHeaders, int fileType, bool beautifier = false); + void buildOperators(vector* operators, int fileType); + void buildPreBlockStatements(vector* preBlockStatements, int fileType); + void buildPreCommandHeaders(vector* preCommandHeaders, int fileType); + void buildPreDefinitionHeaders(vector* preDefinitionHeaders, int fileType); + +public: + static const string AS_IF, AS_ELSE; + static const string AS_DO, AS_WHILE; + static const string AS_FOR; + static const string AS_SWITCH, AS_CASE, AS_DEFAULT; + static const string AS_TRY, AS_CATCH, AS_THROW, AS_THROWS, AS_FINALLY, AS_USING; + static const string _AS_TRY, _AS_FINALLY, _AS_EXCEPT; + static const string AS_PUBLIC, AS_PROTECTED, AS_PRIVATE; + static const string AS_CLASS, AS_STRUCT, AS_UNION, AS_INTERFACE, AS_NAMESPACE; + static const string AS_MODULE; + static const string AS_END; + static const string AS_SELECTOR; + static const string AS_EXTERN, AS_ENUM; + static const string AS_FINAL, AS_OVERRIDE; + static const string AS_STATIC, AS_CONST, AS_SEALED, AS_VOLATILE, AS_NEW, AS_DELETE; + static const string AS_NOEXCEPT, AS_INTERRUPT, AS_AUTORELEASEPOOL; + static const string AS_WHERE, AS_LET, AS_SYNCHRONIZED; + static const string AS_OPERATOR, AS_TEMPLATE; + static const string AS_OPEN_BRACE, AS_CLOSE_BRACE; + static const string AS_OPEN_LINE_COMMENT, AS_OPEN_COMMENT, AS_CLOSE_COMMENT; + static const string AS_BAR_DEFINE, AS_BAR_INCLUDE, AS_BAR_IF, AS_BAR_EL, AS_BAR_ENDIF; + static const string AS_AUTO, AS_RETURN; + static const string AS_CIN, AS_COUT, AS_CERR; + static const string AS_ASSIGN, AS_PLUS_ASSIGN, AS_MINUS_ASSIGN, AS_MULT_ASSIGN; + static const string AS_DIV_ASSIGN, AS_MOD_ASSIGN, AS_XOR_ASSIGN, AS_OR_ASSIGN, AS_AND_ASSIGN; + static const string AS_GR_GR_ASSIGN, AS_LS_LS_ASSIGN, AS_GR_GR_GR_ASSIGN, AS_LS_LS_LS_ASSIGN; + static const string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN; + static const string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL; + static const string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS, AS_GR_GR_GR, AS_GR_GR; + static const string AS_QUESTION_QUESTION, AS_LAMBDA; + static const string AS_ARROW, AS_AND, AS_OR; + static const string AS_SCOPE_RESOLUTION; + static const string AS_PLUS, AS_MINUS, AS_MULT, AS_DIV, AS_MOD, AS_GR, AS_LS; + static const string AS_NOT, AS_BIT_XOR, AS_BIT_OR, AS_BIT_AND, AS_BIT_NOT; + static const string AS_QUESTION, AS_COLON, AS_SEMICOLON, AS_COMMA; + static const string AS_ASM, AS__ASM__, AS_MS_ASM, AS_MS__ASM; + static const string AS_QFOREACH, AS_QFOREVER, AS_FOREVER; + static const string AS_FOREACH, AS_LOCK, AS_UNSAFE, AS_FIXED; + static const string AS_GET, AS_SET, AS_ADD, AS_REMOVE; + static const string AS_DELEGATE, AS_UNCHECKED; + static const string AS_CONST_CAST, AS_DYNAMIC_CAST, AS_REINTERPRET_CAST, AS_STATIC_CAST; + static const string AS_NS_DURING, AS_NS_HANDLER; +}; // Class ASResource + +//----------------------------------------------------------------------------- +// Class ASBase +// Functions definitions are at the end of ASResource.cpp. +//----------------------------------------------------------------------------- + +class ASBase : protected ASResource +{ +private: + // all variables should be set by the "init" function + int baseFileType; // a value from enum FileType + +protected: + ASBase() : baseFileType(C_TYPE) { } + +protected: // inline functions + void init(int fileTypeArg) { baseFileType = fileTypeArg; } + bool isCStyle() const { return (baseFileType == C_TYPE); } + bool isJavaStyle() const { return (baseFileType == JAVA_TYPE); } + bool isSharpStyle() const { return (baseFileType == SHARP_TYPE); } + bool isWhiteSpace(char ch) const { return (ch == ' ' || ch == '\t'); } + +protected: // functions definitions are at the end of ASResource.cpp + const string* findHeader(const string& line, int i, + const vector* possibleHeaders) const; + bool findKeyword(const string& line, int i, const string& keyword) const; + const string* findOperator(const string& line, int i, + const vector* possibleOperators) const; + string getCurrentWord(const string& line, size_t index) const; + bool isDigit(char ch) const; + bool isLegalNameChar(char ch) const; + bool isCharPotentialHeader(const string& line, size_t i) const; + bool isCharPotentialOperator(char ch) const; + bool isDigitSeparator(const string& line, int i) const; + char peekNextChar(const string& line, int i) const; + +}; // Class ASBase + +//----------------------------------------------------------------------------- +// Class ASBeautifier +//----------------------------------------------------------------------------- + +class ASBeautifier : protected ASBase +{ +public: + ASBeautifier(); + virtual ~ASBeautifier(); + virtual void init(ASSourceIterator* iter); + virtual string beautify(const string& originalLine); + void setCaseIndent(bool state); + void setClassIndent(bool state); + void setContinuationIndentation(int indent = 1); + void setCStyle(); + void setDefaultTabLength(); + void setEmptyLineFill(bool state); + void setForceTabXIndentation(int length); + void setAfterParenIndent(bool state); + void setJavaStyle(); + void setLabelIndent(bool state); + void setMaxContinuationIndentLength(int max); + void setMaxInStatementIndentLength(int max); + void setMinConditionalIndentOption(int min); + void setMinConditionalIndentLength(); + void setModeManuallySet(bool state); + void setModifierIndent(bool state); + void setNamespaceIndent(bool state); + void setAlignMethodColon(bool state); + void setSharpStyle(); + void setSpaceIndentation(int length = 4); + void setSwitchIndent(bool state); + void setTabIndentation(int length = 4, bool forceTabs = false); + void setPreprocDefineIndent(bool state); + void setPreprocConditionalIndent(bool state); + int getBeautifierFileType() const; + int getFileType() const; + int getIndentLength() const; + int getTabLength() const; + string getIndentString() const; + string getNextWord(const string& line, size_t currPos) const; + bool getAlignMethodColon() const; + bool getBraceIndent() const; + bool getBlockIndent() const; + bool getCaseIndent() const; + bool getClassIndent() const; + bool getEmptyLineFill() const; + bool getForceTabIndentation() const; + bool getModeManuallySet() const; + bool getModifierIndent() const; + bool getNamespaceIndent() const; + bool getPreprocDefineIndent() const; + bool getSwitchIndent() const; + +protected: + void deleteBeautifierVectors(); + int getNextProgramCharDistance(const string& line, int i) const; + int indexOf(const vector& container, const string* element) const; + void setBlockIndent(bool state); + void setBraceIndent(bool state); + void setBraceIndentVtk(bool state); + string extractPreprocessorStatement(const string& line) const; + string trim(const string& str) const; + string rtrim(const string& str) const; + + // variables set by ASFormatter - must be updated in activeBeautifierStack + int inLineNumber; + int runInIndentContinuation; + int nonInStatementBrace; + int objCColonAlignSubsequent; // for subsequent lines not counting indent + bool lineCommentNoBeautify; + bool isElseHeaderIndent; + bool isCaseHeaderCommentIndent; + bool isNonInStatementArray; + bool isSharpAccessor; + bool isSharpDelegate; + bool isInExternC; + bool isInBeautifySQL; + bool isInIndentableStruct; + bool isInIndentablePreproc; + +private: // functions + ASBeautifier(const ASBeautifier& other); // inline functions + ASBeautifier& operator=(ASBeautifier&); // not to be implemented + + void adjustObjCMethodDefinitionIndentation(const string& line_); + void adjustObjCMethodCallIndentation(const string& line_); + void adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent); + void computePreliminaryIndentation(); + void parseCurrentLine(const string& line); + void popLastContinuationIndent(); + void processPreprocessor(const string& preproc, const string& line); + void registerContinuationIndent(const string& line, int i, int spaceIndentCount_, + int tabIncrementIn, int minIndent, bool updateParenStack); + void registerContinuationIndentColon(const string& line, int i, int tabIncrementIn); + void initVectors(); + void initTempStacksContainer(vector*>*& container, + vector*>* value); + void clearObjCMethodDefinitionAlignment(); + void deleteBeautifierContainer(vector*& container); + void deleteTempStacksContainer(vector*>*& container); + int adjustIndentCountForBreakElseIfComments() const; + int computeObjCColonAlignment(const string& line, int colonAlignPosition) const; + int convertTabToSpaces(int i, int tabIncrementIn) const; + int findObjCColonAlignment(const string& line) const; + int getContinuationIndentAssign(const string& line, size_t currPos) const; + int getContinuationIndentComma(const string& line, size_t currPos) const; + int getObjCFollowingKeyword(const string& line, int bracePos) const; + bool isIndentedPreprocessor(const string& line, size_t currPos) const; + bool isLineEndComment(const string& line, int startPos) const; + bool isPreprocessorConditionalCplusplus(const string& line) const; + bool isInPreprocessorUnterminatedComment(const string& line); + bool isTopLevel() const; + bool statementEndsWithComma(const string& line, int index) const; + const string& getIndentedLineReturn(const string& newLine, const string& originalLine) const; + string getIndentedSpaceEquivalent(const string& line_) const; + string preLineWS(int lineIndentCount, int lineSpaceIndentCount) const; + template void deleteContainer(T& container); + template void initContainer(T& container, T value); + vector*>* copyTempStacks(const ASBeautifier& other) const; + pair computePreprocessorIndent(); + +private: // variables + int beautifierFileType; + vector* headers; + vector* nonParenHeaders; + vector* preBlockStatements; + vector* preCommandHeaders; + vector* assignmentOperators; + vector* nonAssignmentOperators; + vector* indentableHeaders; + + vector* waitingBeautifierStack; + vector* activeBeautifierStack; + vector* waitingBeautifierStackLengthStack; + vector* activeBeautifierStackLengthStack; + vector* headerStack; + vector* >* tempStacks; + vector* parenDepthStack; + vector* blockStatementStack; + vector* parenStatementStack; + vector* braceBlockStateStack; + vector* continuationIndentStack; + vector* continuationIndentStackSizeStack; + vector* parenIndentStack; + vector >* preprocIndentStack; + + ASSourceIterator* sourceIterator; + const string* currentHeader; + const string* previousLastLineHeader; + const string* probationHeader; + const string* lastLineHeader; + string indentString; + string verbatimDelimiter; + bool isInQuote; + bool isInVerbatimQuote; + bool haveLineContinuationChar; + bool isInAsm; + bool isInAsmOneLine; + bool isInAsmBlock; + bool isInComment; + bool isInPreprocessorComment; + bool isInRunInComment; + bool isInCase; + bool isInQuestion; + bool isContinuation; + bool isInHeader; + bool isInTemplate; + bool isInDefine; + bool isInDefineDefinition; + bool classIndent; + bool isIndentModeOff; + bool isInClassHeader; // is in a class before the opening brace + bool isInClassHeaderTab; // is in an indentable class header line + bool isInClassInitializer; // is in a class after the ':' initializer + bool isInClass; // is in a class after the opening brace + bool isInObjCMethodDefinition; + bool isInObjCMethodCall; + bool isInObjCMethodCallFirst; + bool isImmediatelyPostObjCMethodDefinition; + bool isImmediatelyPostObjCMethodCall; + bool isInIndentablePreprocBlock; + bool isInObjCInterface; + bool isInEnum; + bool isInEnumTypeID; + bool isInLet; + bool isInTrailingReturnType; + bool modifierIndent; + bool switchIndent; + bool caseIndent; + bool namespaceIndent; + bool blockIndent; + bool braceIndent; + bool braceIndentVtk; + bool shouldIndentAfterParen; + bool labelIndent; + bool shouldIndentPreprocDefine; + bool isInConditional; + bool isModeManuallySet; + bool shouldForceTabIndentation; + bool emptyLineFill; + bool backslashEndsPrevLine; + bool lineOpensWithLineComment; + bool lineOpensWithComment; + bool lineStartsInComment; + bool blockCommentNoIndent; + bool blockCommentNoBeautify; + bool previousLineProbationTab; + bool lineBeginsWithOpenBrace; + bool lineBeginsWithCloseBrace; + bool lineBeginsWithComma; + bool lineIsCommentOnly; + bool lineIsLineCommentOnly; + bool shouldIndentBracedLine; + bool isInSwitch; + bool foundPreCommandHeader; + bool foundPreCommandMacro; + bool shouldAlignMethodColon; + bool shouldIndentPreprocConditional; + int indentCount; + int spaceIndentCount; + int spaceIndentObjCMethodAlignment; + int bracePosObjCMethodAlignment; + int colonIndentObjCMethodAlignment; + int lineOpeningBlocksNum; + int lineClosingBlocksNum; + int fileType; + int minConditionalOption; + int minConditionalIndent; + int parenDepth; + int indentLength; + int tabLength; + int continuationIndent; + int blockTabCount; + int maxContinuationIndent; + int classInitializerIndents; + int templateDepth; + int squareBracketCount; + int prevFinalLineSpaceIndentCount; + int prevFinalLineIndentCount; + int defineIndentCount; + int preprocBlockIndent; + char quoteChar; + char prevNonSpaceCh; + char currentNonSpaceCh; + char currentNonLegalCh; + char prevNonLegalCh; +}; // Class ASBeautifier + +//----------------------------------------------------------------------------- +// Class ASEnhancer +//----------------------------------------------------------------------------- + +class ASEnhancer : protected ASBase +{ +public: // functions + ASEnhancer(); + virtual ~ASEnhancer(); + void init(int, int, int, bool, bool, bool, bool, bool, bool, bool, + vector* >*); + void enhance(string& line, bool isInNamespace, bool isInPreprocessor, bool isInSQL); + +private: // functions + void convertForceTabIndentToSpaces(string& line) const; + void convertSpaceIndentToForceTab(string& line) const; + size_t findCaseColon(const string& line, size_t caseIndex) const; + int indentLine(string& line, int indent) const; + bool isBeginDeclareSectionSQL(const string& line, size_t index) const; + bool isEndDeclareSectionSQL(const string& line, size_t index) const; + bool isOneLineBlockReached(const string& line, int startChar) const; + void parseCurrentLine(string& line, bool isInPreprocessor, bool isInSQL); + size_t processSwitchBlock(string& line, size_t index); + int unindentLine(string& line, int unindent) const; + +private: + // options from command line or options file + int indentLength; + int tabLength; + bool useTabs; + bool forceTab; + bool namespaceIndent; + bool caseIndent; + bool preprocBlockIndent; + bool preprocDefineIndent; + bool emptyLineFill; + + // parsing variables + int lineNumber; + bool isInQuote; + bool isInComment; + char quoteChar; + + // unindent variables + int braceCount; + int switchDepth; + int eventPreprocDepth; + bool lookingForCaseBrace; + bool unindentNextLine; + bool shouldUnindentLine; + bool shouldUnindentComment; + + // struct used by ParseFormattedLine function + // contains variables used to unindent the case blocks + struct SwitchVariables + { + int switchBraceCount; + int unindentDepth; + bool unindentCase; + }; + + SwitchVariables sw; // switch variables struct + vector switchStack; // stack vector of switch variables + + // event table variables + bool nextLineIsEventIndent; // begin event table indent is reached + bool isInEventTable; // need to indent an event table + vector* >* indentableMacros; + + // SQL variables + bool nextLineIsDeclareIndent; // begin declare section indent is reached + bool isInDeclareSection; // need to indent a declare section + +}; // Class ASEnhancer + +//----------------------------------------------------------------------------- +// Class ASFormatter +//----------------------------------------------------------------------------- + +class ASFormatter : public ASBeautifier +{ +public: // functions + ASFormatter(); + virtual ~ASFormatter(); + virtual void init(ASSourceIterator* si) override; + virtual bool hasMoreLines() const; + virtual string nextLine(); + LineEndFormat getLineEndFormat() const; + bool getIsLineReady() const; + void setFormattingStyle(FormatStyle style); + void setAddBracesMode(bool state); + void setAddOneLineBracesMode(bool state); + void setRemoveBracesMode(bool state); + void setAttachClass(bool state); + void setAttachClosingWhile(bool state); + void setAttachExternC(bool state); + void setAttachNamespace(bool state); + void setAttachInline(bool state); + void setBraceFormatMode(BraceMode mode); + void setBreakAfterMode(bool state); + void setBreakClosingHeaderBracesMode(bool state); + void setBreakBlocksMode(bool state); + void setBreakClosingHeaderBlocksMode(bool state); + void setBreakElseIfsMode(bool state); + void setBreakOneLineBlocksMode(bool state); + void setBreakOneLineHeadersMode(bool state); + void setBreakOneLineStatementsMode(bool state); + void setMethodPrefixPaddingMode(bool state); + void setMethodPrefixUnPaddingMode(bool state); + void setReturnTypePaddingMode(bool state); + void setReturnTypeUnPaddingMode(bool state); + void setParamTypePaddingMode(bool state); + void setParamTypeUnPaddingMode(bool state); + void setCloseTemplatesMode(bool state); + void setCommaPaddingMode(bool state); + void setDeleteEmptyLinesMode(bool state); + void setBreakReturnType(bool state); + void setBreakReturnTypeDecl(bool state); + void setAttachReturnType(bool state); + void setAttachReturnTypeDecl(bool state); + void setIndentCol1CommentsMode(bool state); + void setLineEndFormat(LineEndFormat fmt); + void setMaxCodeLength(int max); + void setObjCColonPaddingMode(ObjCColonPad mode); + void setOperatorPaddingMode(bool state); + void setParensOutsidePaddingMode(bool state); + void setParensFirstPaddingMode(bool state); + void setParensInsidePaddingMode(bool state); + void setParensHeaderPaddingMode(bool state); + void setParensUnPaddingMode(bool state); + void setPointerAlignment(PointerAlign alignment); + void setPreprocBlockIndent(bool state); + void setReferenceAlignment(ReferenceAlign alignment); + void setStripCommentPrefix(bool state); + void setTabSpaceConversionMode(bool state); + size_t getChecksumIn() const; + size_t getChecksumOut() const; + int getChecksumDiff() const; + int getFormatterFileType() const; + // retained for compatibility with release 2.06 + // "Brackets" have been changed to "Braces" in 3.0 + // they are referenced only by the old "bracket" options + void setAddBracketsMode(bool state); + void setAddOneLineBracketsMode(bool state); + void setRemoveBracketsMode(bool state); + void setBreakClosingHeaderBracketsMode(bool state); + + +private: // functions + ASFormatter(const ASFormatter& copy); // not to be implemented + ASFormatter& operator=(ASFormatter&); // not to be implemented + template void deleteContainer(T& container); + template void initContainer(T& container, T value); + char peekNextChar() const; + BraceType getBraceType(); + bool adjustChecksumIn(int adjustment); + bool computeChecksumIn(const string& currentLine_); + bool computeChecksumOut(const string& beautifiedLine); + bool addBracesToStatement(); + bool removeBracesFromStatement(); + bool commentAndHeaderFollows(); + bool getNextChar(); + bool getNextLine(bool emptyLineWasDeleted = false); + bool isArrayOperator() const; + bool isBeforeComment() const; + bool isBeforeAnyComment() const; + bool isBeforeAnyLineEndComment(int startPos) const; + bool isBeforeMultipleLineEndComments(int startPos) const; + bool isBraceType(BraceType a, BraceType b) const; + bool isClassInitializer() const; + bool isClosingHeader(const string* header) const; + bool isCurrentBraceBroken() const; + bool isDereferenceOrAddressOf() const; + bool isExecSQL(const string& line, size_t index) const; + bool isEmptyLine(const string& line) const; + bool isExternC() const; + bool isMultiStatementLine() const; + bool isNextWordSharpNonParenHeader(int startChar) const; + bool isNonInStatementArrayBrace() const; + bool isNumericVariable(string word) const; + bool isOkToSplitFormattedLine(); + bool isPointerOrReference() const; + bool isPointerOrReferenceCentered() const; + bool isPointerOrReferenceVariable(const string& word) const; + bool isPointerToPointer(const string& line, int currPos) const; + bool isSharpStyleWithParen(const string* header) const; + bool isStructAccessModified(const string& firstLine, size_t index) const; + bool isIndentablePreprocessorBlock(const string& firstLine, size_t index); + bool isNDefPreprocStatement(const string& nextLine_, const string& preproc) const; + bool isUnaryOperator() const; + bool isUniformInitializerBrace() const; + bool isImmediatelyPostCast() const; + bool isInExponent() const; + bool isInSwitchStatement() const; + bool isNextCharOpeningBrace(int startChar) const; + bool isOkToBreakBlock(BraceType braceType) const; + bool isOperatorPaddingDisabled() const; + bool pointerSymbolFollows() const; + int findObjCColonAlignment() const; + int getCurrentLineCommentAdjustment(); + int getNextLineCommentAdjustment(); + int isOneLineBlockReached(const string& line, int startChar) const; + void adjustComments(); + void appendChar(char ch, bool canBreakLine); + void appendCharInsideComments(); + void appendClosingHeader(); + void appendOperator(const string& sequence, bool canBreakLine = true); + void appendSequence(const string& sequence, bool canBreakLine = true); + void appendSpacePad(); + void appendSpaceAfter(); + void breakLine(bool isSplitLine = false); + void buildLanguageVectors(); + void updateFormattedLineSplitPoints(char appendedChar); + void updateFormattedLineSplitPointsOperator(const string& sequence); + void checkIfTemplateOpener(); + void clearFormattedLineSplitPoints(); + void convertTabToSpaces(); + void deleteContainer(vector*& container); + void findReturnTypeSplitPoint(const string& firstLine); + void formatArrayRunIn(); + void formatRunIn(); + void formatArrayBraces(BraceType braceType, bool isOpeningArrayBrace); + void formatClosingBrace(BraceType braceType); + void formatCommentBody(); + void formatCommentOpener(); + void formatCommentCloser(); + void formatLineCommentBody(); + void formatLineCommentOpener(); + void formatOpeningBrace(BraceType braceType); + void formatQuoteBody(); + void formatQuoteOpener(); + void formatPointerOrReference(); + void formatPointerOrReferenceCast(); + void formatPointerOrReferenceToMiddle(); + void formatPointerOrReferenceToName(); + void formatPointerOrReferenceToType(); + void fixOptionVariableConflicts(); + void goForward(int i); + void isLineBreakBeforeClosingHeader(); + void initContainer(vector*& container, vector* value); + void initNewLine(); + void padObjCMethodColon(); + void padObjCMethodPrefix(); + void padObjCParamType(); + void padObjCReturnType(); + void padOperators(const string* newOperator); + void padParens(); + void processPreprocessor(); + void resetEndOfStatement(); + void setAttachClosingBraceMode(bool state); + void stripCommentPrefix(); + void testForTimeToSplitFormattedLine(); + void trimContinuationLine(); + void updateFormattedLineSplitPointsPointerOrReference(size_t index); + size_t findFormattedLineSplitPoint() const; + size_t findNextChar(const string& line, char searchChar, int searchStart = 0) const; + const string* checkForHeaderFollowingComment(const string& firstLine) const; + const string* getFollowingOperator() const; + string getPreviousWord(const string& line, int currPos) const; + string peekNextText(const string& firstLine, + bool endOnEmptyLine = false, + shared_ptr streamArg = nullptr) const; + +private: // variables + int formatterFileType; + vector* headers; + vector* nonParenHeaders; + vector* preDefinitionHeaders; + vector* preCommandHeaders; + vector* operators; + vector* assignmentOperators; + vector* castOperators; + vector* >* indentableMacros; // for ASEnhancer + + ASSourceIterator* sourceIterator; + ASEnhancer* enhancer; + + vector* preBraceHeaderStack; + vector* braceTypeStack; + vector* parenStack; + vector* structStack; + vector* questionMarkStack; + + string currentLine; + string formattedLine; + string readyFormattedLine; + string verbatimDelimiter; + const string* currentHeader; + char currentChar; + char previousChar; + char previousNonWSChar; + char previousCommandChar; + char quoteChar; + streamoff preprocBlockEnd; + int charNum; + int runInIndentChars; + int nextLineSpacePadNum; + int objCColonAlign; + int preprocBraceTypeStackSize; + int spacePadNum; + int tabIncrementIn; + int templateDepth; + int squareBracketCount; + size_t checksumIn; + size_t checksumOut; + size_t currentLineFirstBraceNum; // first brace location on currentLine + size_t formattedLineCommentNum; // comment location on formattedLine + size_t leadingSpaces; + size_t maxCodeLength; + size_t methodAttachCharNum; + size_t methodAttachLineNum; + size_t methodBreakCharNum; + size_t methodBreakLineNum; + + // possible split points + size_t maxSemi; // probably a 'for' statement + size_t maxAndOr; // probably an 'if' statement + size_t maxComma; + size_t maxParen; + size_t maxWhiteSpace; + size_t maxSemiPending; + size_t maxAndOrPending; + size_t maxCommaPending; + size_t maxParenPending; + size_t maxWhiteSpacePending; + + size_t previousReadyFormattedLineLength; + FormatStyle formattingStyle; + BraceMode braceFormatMode; + BraceType previousBraceType; + PointerAlign pointerAlignment; + ReferenceAlign referenceAlignment; + ObjCColonPad objCColonPadMode; + LineEndFormat lineEnd; + bool isVirgin; + bool isInVirginLine; + bool shouldPadCommas; + bool shouldPadOperators; + bool shouldPadParensOutside; + bool shouldPadFirstParen; + bool shouldPadParensInside; + bool shouldPadHeader; + bool shouldStripCommentPrefix; + bool shouldUnPadParens; + bool shouldConvertTabs; + bool shouldIndentCol1Comments; + bool shouldIndentPreprocBlock; + bool shouldCloseTemplates; + bool shouldAttachExternC; + bool shouldAttachNamespace; + bool shouldAttachClass; + bool shouldAttachClosingWhile; + bool shouldAttachInline; + bool isInLineComment; + bool isInComment; + bool isInCommentStartLine; + bool noTrimCommentContinuation; + bool isInPreprocessor; + bool isInPreprocessorBeautify; + bool isInTemplate; + bool doesLineStartComment; + bool lineEndsInCommentOnly; + bool lineIsCommentOnly; + bool lineIsLineCommentOnly; + bool lineIsEmpty; + bool isImmediatelyPostCommentOnly; + bool isImmediatelyPostEmptyLine; + bool isInClassInitializer; + bool isInQuote; + bool isInVerbatimQuote; + bool haveLineContinuationChar; + bool isInQuoteContinuation; + bool isHeaderInMultiStatementLine; + bool isSpecialChar; + bool isNonParenHeader; + bool foundQuestionMark; + bool foundPreDefinitionHeader; + bool foundNamespaceHeader; + bool foundClassHeader; + bool foundStructHeader; + bool foundInterfaceHeader; + bool foundPreCommandHeader; + bool foundPreCommandMacro; + bool foundTrailingReturnType; + bool foundCastOperator; + bool isInLineBreak; + bool endOfAsmReached; + bool endOfCodeReached; + bool lineCommentNoIndent; + bool isFormattingModeOff; + bool isInEnum; + bool isInExecSQL; + bool isInAsm; + bool isInAsmOneLine; + bool isInAsmBlock; + bool isLineReady; + bool elseHeaderFollowsComments; + bool caseHeaderFollowsComments; + bool isPreviousBraceBlockRelated; + bool isInPotentialCalculation; + bool isCharImmediatelyPostComment; + bool isPreviousCharPostComment; + bool isCharImmediatelyPostLineComment; + bool isCharImmediatelyPostOpenBlock; + bool isCharImmediatelyPostCloseBlock; + bool isCharImmediatelyPostTemplate; + bool isCharImmediatelyPostReturn; + bool isCharImmediatelyPostThrow; + bool isCharImmediatelyPostNewDelete; + bool isCharImmediatelyPostOperator; + bool isCharImmediatelyPostPointerOrReference; + bool isInObjCMethodDefinition; + bool isInObjCInterface; + bool isInObjCReturnType; + bool isInObjCParam; + bool isInObjCSelector; + bool breakCurrentOneLineBlock; + bool shouldRemoveNextClosingBrace; + bool isInBraceRunIn; + bool returnTypeChecked; + bool currentLineBeginsWithBrace; + bool attachClosingBraceMode; + bool shouldBreakOneLineBlocks; + bool shouldBreakOneLineHeaders; + bool shouldBreakOneLineStatements; + bool shouldBreakClosingHeaderBraces; + bool shouldBreakElseIfs; + bool shouldBreakLineAfterLogical; + bool shouldAddBraces; + bool shouldAddOneLineBraces; + bool shouldRemoveBraces; + bool shouldPadMethodColon; + bool shouldPadMethodPrefix; + bool shouldReparseCurrentChar; + bool shouldUnPadMethodPrefix; + bool shouldPadReturnType; + bool shouldUnPadReturnType; + bool shouldPadParamType; + bool shouldUnPadParamType; + bool shouldDeleteEmptyLines; + bool shouldBreakReturnType; + bool shouldBreakReturnTypeDecl; + bool shouldAttachReturnType; + bool shouldAttachReturnTypeDecl; + bool needHeaderOpeningBrace; + bool shouldBreakLineAtNextChar; + bool shouldKeepLineUnbroken; + bool passedSemicolon; + bool passedColon; + bool isImmediatelyPostNonInStmt; + bool isCharImmediatelyPostNonInStmt; + bool isImmediatelyPostComment; + bool isImmediatelyPostLineComment; + bool isImmediatelyPostEmptyBlock; + bool isImmediatelyPostObjCMethodPrefix; + bool isImmediatelyPostPreprocessor; + bool isImmediatelyPostReturn; + bool isImmediatelyPostThrow; + bool isImmediatelyPostNewDelete; + bool isImmediatelyPostOperator; + bool isImmediatelyPostTemplate; + bool isImmediatelyPostPointerOrReference; + bool shouldBreakBlocks; + bool shouldBreakClosingHeaderBlocks; + bool isPrependPostBlockEmptyLineRequested; + bool isAppendPostBlockEmptyLineRequested; + bool isIndentableProprocessor; + bool isIndentableProprocessorBlock; + bool prependEmptyLine; + bool appendOpeningBrace; + bool foundClosingHeader; + bool isInHeader; + bool isImmediatelyPostHeader; + bool isInCase; + bool isFirstPreprocConditional; + bool processedFirstConditional; + bool isJavaStaticConstructor; + +private: // inline functions + // append the CURRENT character (curentChar) to the current formatted line. + void appendCurrentChar(bool canBreakLine = true) + { appendChar(currentChar, canBreakLine); } + + // check if a specific sequence exists in the current placement of the current line + bool isSequenceReached(const char* sequence) const + { return currentLine.compare(charNum, strlen(sequence), sequence) == 0; } + + // call ASBase::findHeader for the current character + const string* findHeader(const vector* headers_) + { return ASBase::findHeader(currentLine, charNum, headers_); } + + // call ASBase::findOperator for the current character + const string* findOperator(const vector* operators_) + { return ASBase::findOperator(currentLine, charNum, operators_); } +}; // Class ASFormatter + +//----------------------------------------------------------------------------- +// astyle namespace global declarations +//----------------------------------------------------------------------------- +// sort comparison functions for ASResource +bool sortOnLength(const string* a, const string* b); +bool sortOnName(const string* a, const string* b); + +} // namespace astyle + +// end of astyle namespace -------------------------------------------------- + +#endif // closes ASTYLE_H diff -Nru geos-3.7.1/tools/astyle/astyle_main.cpp geos-3.8.0/tools/astyle/astyle_main.cpp --- geos-3.7.1/tools/astyle/astyle_main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/astyle_main.cpp 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,4315 @@ +// astyle_main.cpp +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * AStyle_main source file map. + * This source file contains several classes. + * They are arranged as follows. + * --------------------------------------- + * namespace astyle { + * ASStreamIterator methods + * ASConsole methods + * // Windows specific + * // Linux specific + * ASLibrary methods + * // Windows specific + * // Linux specific + * ASOptions methods + * ASEncoding methods + * } // end of astyle namespace + * Global Area --------------------------- + * Java Native Interface functions + * AStyleMainUtf16 entry point + * AStyleMain entry point + * AStyleGetVersion entry point + * main entry point + * --------------------------------------- + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + */ + +//----------------------------------------------------------------------------- +// headers +//----------------------------------------------------------------------------- + +#include "astyle_main.h" + +#include +#include +#include // needed by some compilers +#include +#include +#include + +// includes for recursive getFileNames() function +#ifdef _WIN32 + #undef UNICODE // use ASCII windows functions + #include +#else + #include + #include + #include + #ifdef __VMS + #include + #include + #include + #include + #include + #include + #endif /* __VMS */ +#endif + +//----------------------------------------------------------------------------- +// declarations +//----------------------------------------------------------------------------- + +// turn off MinGW automatic file globbing +// this CANNOT be in the astyle namespace +#ifndef ASTYLE_LIB + int _CRT_glob = 0; +#endif + +//---------------------------------------------------------------------------- +// astyle namespace +//---------------------------------------------------------------------------- + +namespace astyle { +// +// console build variables +#ifndef ASTYLE_LIB + #ifdef _WIN32 + char g_fileSeparator = '\\'; // Windows file separator + bool g_isCaseSensitive = false; // Windows IS NOT case sensitive + #else + char g_fileSeparator = '/'; // Linux file separator + bool g_isCaseSensitive = true; // Linux IS case sensitive + #endif // _WIN32 +#endif // ASTYLE_LIB + +// java library build variables +#ifdef ASTYLE_JNI + JNIEnv* g_env; + jobject g_obj; + jmethodID g_mid; +#endif + +const char* g_version = "3.1"; + +//----------------------------------------------------------------------------- +// ASStreamIterator class +// typename will be stringstream for AStyle +// it could be istream or wxChar for plug-ins +//----------------------------------------------------------------------------- + +template +ASStreamIterator::ASStreamIterator(T* in) +{ + inStream = in; + buffer.reserve(200); + eolWindows = 0; + eolLinux = 0; + eolMacOld = 0; + peekStart = 0; + prevLineDeleted = false; + checkForEmptyLine = false; + // get length of stream + inStream->seekg(0, inStream->end); + streamLength = inStream->tellg(); + inStream->seekg(0, inStream->beg); +} + +template +ASStreamIterator::~ASStreamIterator() +{ +} + +/** +* get the length of the input stream. +* streamLength variable is set by the constructor. +* +* @return length of the input file stream, converted to an int. +*/ +template +int ASStreamIterator::getStreamLength() const +{ + return static_cast(streamLength); +} + +/** + * read the input stream, delete any end of line characters, + * and build a string that contains the input line. + * + * @return string containing the next input line minus any end of line characters + */ +template +string ASStreamIterator::nextLine(bool emptyLineWasDeleted) +{ + // verify that the current position is correct + assert(peekStart == 0); + + // a deleted line may be replaced if break-blocks is requested + // this sets up the compare to check for a replaced empty line + if (prevLineDeleted) + { + prevLineDeleted = false; + checkForEmptyLine = true; + } + if (!emptyLineWasDeleted) + prevBuffer = buffer; + else + prevLineDeleted = true; + + // read the next record + buffer.clear(); + char ch; + inStream->get(ch); + + while (!inStream->eof() && ch != '\n' && ch != '\r') + { + buffer.append(1, ch); + inStream->get(ch); + } + + if (inStream->eof()) + { + return buffer; + } + + int peekCh = inStream->peek(); + + // find input end-of-line characters + if (!inStream->eof()) + { + if (ch == '\r') // CR+LF is windows otherwise Mac OS 9 + { + if (peekCh == '\n') + { + inStream->get(); + eolWindows++; + } + else + eolMacOld++; + } + else // LF is Linux, allow for improbable LF/CR + { + if (peekCh == '\r') + { + inStream->get(); + eolWindows++; + } + else + eolLinux++; + } + } + else + { + inStream->clear(); + } + + // has not detected an input end of line + if (!eolWindows && !eolLinux && !eolMacOld) + { +#ifdef _WIN32 + eolWindows++; +#else + eolLinux++; +#endif + } + + // set output end of line characters + if (eolWindows >= eolLinux) + { + if (eolWindows >= eolMacOld) + outputEOL = "\r\n"; // Windows (CR+LF) + else + outputEOL = "\r"; // MacOld (CR) + } + else if (eolLinux >= eolMacOld) + outputEOL = "\n"; // Linux (LF) + else + outputEOL = "\r"; // MacOld (CR) + + return buffer; +} + +// save the current position and get the next line +// this can be called for multiple reads +// when finished peeking you MUST call peekReset() +// call this function from ASFormatter ONLY +template +string ASStreamIterator::peekNextLine() +{ + assert(hasMoreLines()); + string nextLine_; + char ch; + + if (peekStart == 0) + peekStart = inStream->tellg(); + + // read the next record + inStream->get(ch); + while (!inStream->eof() && ch != '\n' && ch != '\r') + { + nextLine_.append(1, ch); + inStream->get(ch); + } + + if (inStream->eof()) + { + return nextLine_; + } + + int peekCh = inStream->peek(); + + // remove end-of-line characters + if (!inStream->eof()) + { + if ((peekCh == '\n' || peekCh == '\r') && peekCh != ch) + inStream->get(); + } + + return nextLine_; +} + +// reset current position and EOF for peekNextLine() +template +void ASStreamIterator::peekReset() +{ + assert(peekStart != 0); + inStream->clear(); + inStream->seekg(peekStart); + peekStart = 0; +} + +// save the last input line after input has reached EOF +template +void ASStreamIterator::saveLastInputLine() +{ + assert(inStream->eof()); + prevBuffer = buffer; +} + +// return position of the get pointer +template +streamoff ASStreamIterator::tellg() +{ + return inStream->tellg(); +} + +// check for a change in line ends +template +bool ASStreamIterator::getLineEndChange(int lineEndFormat) const +{ + assert(lineEndFormat == LINEEND_DEFAULT + || lineEndFormat == LINEEND_WINDOWS + || lineEndFormat == LINEEND_LINUX + || lineEndFormat == LINEEND_MACOLD); + + bool lineEndChange = false; + if (lineEndFormat == LINEEND_WINDOWS) + lineEndChange = (eolLinux + eolMacOld != 0); + else if (lineEndFormat == LINEEND_LINUX) + lineEndChange = (eolWindows + eolMacOld != 0); + else if (lineEndFormat == LINEEND_MACOLD) + lineEndChange = (eolWindows + eolLinux != 0); + else + { + if (eolWindows > 0) + lineEndChange = (eolLinux + eolMacOld != 0); + else if (eolLinux > 0) + lineEndChange = (eolWindows + eolMacOld != 0); + else if (eolMacOld > 0) + lineEndChange = (eolWindows + eolLinux != 0); + } + return lineEndChange; +} + +//----------------------------------------------------------------------------- +// ASConsole class +// main function will be included only in the console build +//----------------------------------------------------------------------------- + +#ifndef ASTYLE_LIB + +ASConsole::ASConsole(ASFormatter& formatterArg) : formatter(formatterArg) +{ + errorStream = &cerr; + // command line options + isRecursive = false; + isDryRun = false; + noBackup = false; + preserveDate = false; + isVerbose = false; + isQuiet = false; + isFormattedOnly = false; + ignoreExcludeErrors = false; + ignoreExcludeErrorsDisplay = false; + useAscii = false; + // other variables + bypassBrowserOpen = false; + hasWildcard = false; + filesAreIdentical = true; + lineEndsMixed = false; + origSuffix = ".orig"; + mainDirectoryLength = 0; + filesFormatted = 0; + filesUnchanged = 0; + linesOut = 0; +} + +ASConsole::~ASConsole() +{} + +// rewrite a stringstream converting the line ends +void ASConsole::convertLineEnds(ostringstream& out, int lineEnd) +{ + assert(lineEnd == LINEEND_WINDOWS || lineEnd == LINEEND_LINUX || lineEnd == LINEEND_MACOLD); + const string& inStr = out.str(); // avoids strange looking syntax + string outStr; // the converted output + int inLength = (int) inStr.length(); + for (int pos = 0; pos < inLength; pos++) + { + if (inStr[pos] == '\r') + { + if (inStr[pos + 1] == '\n') + { + // CRLF + if (lineEnd == LINEEND_CR) + { + outStr += inStr[pos]; // Delete the LF + pos++; + continue; + } + else if (lineEnd == LINEEND_LF) + { + outStr += inStr[pos + 1]; // Delete the CR + pos++; + continue; + } + else + { + outStr += inStr[pos]; // Do not change + outStr += inStr[pos + 1]; + pos++; + continue; + } + } + else + { + // CR + if (lineEnd == LINEEND_CRLF) + { + outStr += inStr[pos]; // Insert the CR + outStr += '\n'; // Insert the LF + continue; + } + else if (lineEnd == LINEEND_LF) + { + outStr += '\n'; // Insert the LF + continue; + } + else + { + outStr += inStr[pos]; // Do not change + continue; + } + } + } + else if (inStr[pos] == '\n') + { + // LF + if (lineEnd == LINEEND_CRLF) + { + outStr += '\r'; // Insert the CR + outStr += inStr[pos]; // Insert the LF + continue; + } + else if (lineEnd == LINEEND_CR) + { + outStr += '\r'; // Insert the CR + continue; + } + else + { + outStr += inStr[pos]; // Do not change + continue; + } + } + else + { + outStr += inStr[pos]; // Write the current char + } + } + // replace the stream + out.str(outStr); +} + +void ASConsole::correctMixedLineEnds(ostringstream& out) +{ + LineEndFormat lineEndFormat = LINEEND_DEFAULT; + if (outputEOL == "\r\n") + lineEndFormat = LINEEND_WINDOWS; + if (outputEOL == "\n") + lineEndFormat = LINEEND_LINUX; + if (outputEOL == "\r") + lineEndFormat = LINEEND_MACOLD; + convertLineEnds(out, lineEndFormat); +} + +// check files for 16 or 32 bit encoding +// the file must have a Byte Order Mark (BOM) +// NOTE: some string functions don't work with NULLs (e.g. length()) +FileEncoding ASConsole::detectEncoding(const char* data, size_t dataSize) const +{ + FileEncoding encoding = ENCODING_8BIT; + + if (dataSize >= 3 && memcmp(data, "\xEF\xBB\xBF", 3) == 0) + encoding = UTF_8BOM; + else if (dataSize >= 4 && memcmp(data, "\x00\x00\xFE\xFF", 4) == 0) + encoding = UTF_32BE; + else if (dataSize >= 4 && memcmp(data, "\xFF\xFE\x00\x00", 4) == 0) + encoding = UTF_32LE; + else if (dataSize >= 2 && memcmp(data, "\xFE\xFF", 2) == 0) + encoding = UTF_16BE; + else if (dataSize >= 2 && memcmp(data, "\xFF\xFE", 2) == 0) + encoding = UTF_16LE; + + return encoding; +} + +// error exit without a message +void ASConsole::error() const +{ + (*errorStream) << _("Artistic Style has terminated\n") << endl; + exit(EXIT_FAILURE); +} + +// error exit with a message +void ASConsole::error(const char* why, const char* what) const +{ + (*errorStream) << why << ' ' << what << endl; + error(); +} + +/** + * If no files have been given, use cin for input and cout for output. + * + * This is used to format text for text editors. + * Do NOT display any console messages when this function is used. + */ +void ASConsole::formatCinToCout() +{ + // check for files from --stdin= and --stdout= + if (!stdPathIn.empty()) + { + if (!freopen(stdPathIn.c_str(), "r", stdin)) + error("Cannot open input file", stdPathIn.c_str()); + } + if (!stdPathOut.empty()) + { + if (!freopen(stdPathOut.c_str(), "w", stdout)) + error("Cannot open output file", stdPathOut.c_str()); + + } + // Using cin.tellg() causes problems with both Windows and Linux. + // The Windows problem occurs when the input is not Windows line-ends. + // The tellg() will be out of sequence with the get() statements. + // The Linux cin.tellg() will return -1 (invalid). + // Copying the input sequentially to a stringstream before + // formatting solves the problem for both. + istream* inStream = &cin; + stringstream outStream; + char ch; + inStream->get(ch); + while (!inStream->eof() && !inStream->fail()) + { + outStream.put(ch); + inStream->get(ch); + } + ASStreamIterator streamIterator(&outStream); + // Windows pipe or redirection always outputs Windows line-ends. + // Linux pipe or redirection will output any line end. +#ifdef _WIN32 + LineEndFormat lineEndFormat = LINEEND_DEFAULT; +#else + LineEndFormat lineEndFormat = formatter.getLineEndFormat(); +#endif // _WIN32 + initializeOutputEOL(lineEndFormat); + formatter.init(&streamIterator); + + while (formatter.hasMoreLines()) + { + cout << formatter.nextLine(); + if (formatter.hasMoreLines()) + { + setOutputEOL(lineEndFormat, streamIterator.getOutputEOL()); + cout << outputEOL; + } + else + { + // this can happen if the file if missing a closing brace and break-blocks is requested + if (formatter.getIsLineReady()) + { + setOutputEOL(lineEndFormat, streamIterator.getOutputEOL()); + cout << outputEOL; + cout << formatter.nextLine(); + } + } + } + cout.flush(); +} + +/** + * Open input file, format it, and close the output. + * + * @param fileName_ The path and name of the file to be processed. + */ +void ASConsole::formatFile(const string& fileName_) +{ + stringstream in; + ostringstream out; + FileEncoding encoding = readFile(fileName_, in); + + // Unless a specific language mode has been set, set the language mode + // according to the file's suffix. + if (!formatter.getModeManuallySet()) + { + if (stringEndsWith(fileName_, string(".java"))) + formatter.setJavaStyle(); + else if (stringEndsWith(fileName_, string(".cs"))) + formatter.setSharpStyle(); + else + formatter.setCStyle(); + } + + // set line end format + string nextLine; // next output line + filesAreIdentical = true; // input and output files are identical + LineEndFormat lineEndFormat = formatter.getLineEndFormat(); + initializeOutputEOL(lineEndFormat); + // do this AFTER setting the file mode + ASStreamIterator streamIterator(&in); + formatter.init(&streamIterator); + + // format the file + while (formatter.hasMoreLines()) + { + nextLine = formatter.nextLine(); + out << nextLine; + linesOut++; + if (formatter.hasMoreLines()) + { + setOutputEOL(lineEndFormat, streamIterator.getOutputEOL()); + out << outputEOL; + } + else + { + streamIterator.saveLastInputLine(); // to compare the last input line + // this can happen if the file if missing a closing brace and break-blocks is requested + if (formatter.getIsLineReady()) + { + setOutputEOL(lineEndFormat, streamIterator.getOutputEOL()); + out << outputEOL; + nextLine = formatter.nextLine(); + out << nextLine; + linesOut++; + streamIterator.saveLastInputLine(); + } + } + + if (filesAreIdentical) + { + if (streamIterator.checkForEmptyLine) + { + if (nextLine.find_first_not_of(" \t") != string::npos) + filesAreIdentical = false; + } + else if (!streamIterator.compareToInputBuffer(nextLine)) + filesAreIdentical = false; + streamIterator.checkForEmptyLine = false; + } + } + // correct for mixed line ends + if (lineEndsMixed) + { + correctMixedLineEnds(out); + filesAreIdentical = false; + } + + // remove targetDirectory from filename if required by print + string displayName; + if (hasWildcard) + displayName = fileName_.substr(targetDirectory.length() + 1); + else + displayName = fileName_; + + // if file has changed, write the new file + if (!filesAreIdentical || streamIterator.getLineEndChange(lineEndFormat)) + { + if (!isDryRun) + writeFile(fileName_, encoding, out); + printMsg(_("Formatted %s\n"), displayName); + filesFormatted++; + } + else + { + if (!isFormattedOnly) + printMsg(_("Unchanged %s\n"), displayName); + filesUnchanged++; + } + + assert(formatter.getChecksumDiff() == 0); +} + +/** + * Searches for a file named fileName_ in the current directory. If it is not + * found, recursively searches for fileName_ in the current directory's parent + * directories, returning the location of the first instance of fileName_ + * found. If fileName_ is not found, an empty string is returned. + * + * @param fileName_ The filename the function should attempt to locate. + * @return The full path to fileName_ in the current directory or + * nearest parent directory if found, otherwise an empty + * string. + */ +string ASConsole::findProjectOptionFilePath(const string& fileName_) const +{ + string parent; + + if (!fileNameVector.empty()) + parent = getFullPathName(fileNameVector.front()); + else if (!stdPathIn.empty()) + parent = getFullPathName(stdPathIn); + else + parent = getFullPathName(getCurrentDirectory(fileName_)); + + // remove filename from path + size_t endPath = parent.find_last_of(g_fileSeparator); + if (endPath != string::npos) + parent = parent.substr(0, endPath + 1); + + while (!parent.empty()) + { + string filepath = parent + fileName_; + if (fileExists(filepath.c_str())) + return filepath; + else if (fileName_ == ".astylerc") + { + filepath = parent + "_astylerc"; + if (fileExists(filepath.c_str())) + return filepath; + } + parent = getParentDirectory(parent); + } + return string(); +} + +// for unit testing +vector ASConsole::getExcludeHitsVector() const +{ return excludeHitsVector; } + +// for unit testing +vector ASConsole::getExcludeVector() const +{ return excludeVector; } + +// for unit testing +vector ASConsole::getFileName() const +{ return fileName; } + +// for unit testing +vector ASConsole::getFileNameVector() const +{ return fileNameVector; } + +// for unit testing +vector ASConsole::getFileOptionsVector() const +{ return fileOptionsVector; } + +// for unit testing +bool ASConsole::getFilesAreIdentical() const +{ return filesAreIdentical; } + +// for unit testing +int ASConsole::getFilesFormatted() const +{ return filesFormatted; } + +// for unit testing +bool ASConsole::getIgnoreExcludeErrors() const +{ return ignoreExcludeErrors; } + +// for unit testing +bool ASConsole::getIgnoreExcludeErrorsDisplay() const +{ return ignoreExcludeErrorsDisplay; } + +// for unit testing +bool ASConsole::getIsDryRun() const +{ return isDryRun; } + +// for unit testing +bool ASConsole::getIsFormattedOnly() const +{ return isFormattedOnly; } + +// for unit testing +string ASConsole::getLanguageID() const +{ return localizer.getLanguageID(); } + +// for unit testing +bool ASConsole::getIsQuiet() const +{ return isQuiet; } + +// for unit testing +bool ASConsole::getIsRecursive() const +{ return isRecursive; } + +// for unit testing +bool ASConsole::getIsVerbose() const +{ return isVerbose; } + +// for unit testing +bool ASConsole::getLineEndsMixed() const +{ return lineEndsMixed; } + +// for unit testing +bool ASConsole::getNoBackup() const +{ return noBackup; } + +// for unit testing +string ASConsole::getOptionFileName() const +{ return optionFileName; } + +// for unit testing +vector ASConsole::getOptionsVector() const +{ return optionsVector; } + +// for unit testing +string ASConsole::getOrigSuffix() const +{ return origSuffix; } + +// for unit testing +bool ASConsole::getPreserveDate() const +{ return preserveDate; } + +// for unit testing +string ASConsole::getProjectOptionFileName() const +{ + assert(projectOptionFileName.length() > 0); + // remove the directory path + size_t start = projectOptionFileName.find_last_of(g_fileSeparator); + if (start == string::npos) + start = 0; + return projectOptionFileName.substr(start + 1); +} + +// for unit testing +vector ASConsole::getProjectOptionsVector() const +{ return projectOptionsVector; } + +// for unit testing +string ASConsole::getStdPathIn() const +{ return stdPathIn; } + +// for unit testing +string ASConsole::getStdPathOut() const +{ return stdPathOut; } + +// for unit testing +void ASConsole::setBypassBrowserOpen(bool state) +{ bypassBrowserOpen = state; } + +// for unit testing +ostream* ASConsole::getErrorStream() const +{ + return errorStream; +} + +void ASConsole::setErrorStream(ostream* errStreamPtr) +{ + errorStream = errStreamPtr; +} + +// build a vector of argv options +// the program path argv[0] is excluded +vector ASConsole::getArgvOptions(int argc, char** argv) const +{ + vector argvOptions; + for (int i = 1; i < argc; i++) + { + argvOptions.emplace_back(string(argv[i])); + } + return argvOptions; +} + +string ASConsole::getParam(const string& arg, const char* op) +{ + return arg.substr(strlen(op)); +} + +void ASConsole::getTargetFilenames(string& targetFilename_, + vector& targetFilenameVector) const +{ + size_t beg = 0; + size_t sep = 0; + while (beg < targetFilename_.length()) + { + // find next target + sep = targetFilename_.find_first_of(",;", beg); + if (sep == string::npos) + sep = targetFilename_.length(); + string fileExtension = targetFilename_.substr(beg, sep - beg); + beg = sep + 1; + // remove whitespace + while (fileExtension.length() > 0 + && (fileExtension[0] == ' ' || fileExtension[0] == '\t')) + fileExtension = fileExtension.erase(0, 1); + while (fileExtension.length() > 0 + && (fileExtension[fileExtension.length() - 1] == ' ' + || fileExtension[fileExtension.length() - 1] == '\t')) + fileExtension = fileExtension.erase(fileExtension.length() - 1, 1); + if (fileExtension.length() > 0) + targetFilenameVector.emplace_back(fileExtension); + } + if (targetFilenameVector.size() == 0) + { + fprintf(stderr, _("Missing filename in %s\n"), targetFilename_.c_str()); + error(); + } +} + +// initialize output end of line +void ASConsole::initializeOutputEOL(LineEndFormat lineEndFormat) +{ + assert(lineEndFormat == LINEEND_DEFAULT + || lineEndFormat == LINEEND_WINDOWS + || lineEndFormat == LINEEND_LINUX + || lineEndFormat == LINEEND_MACOLD); + + outputEOL.clear(); // current line end + prevEOL.clear(); // previous line end + lineEndsMixed = false; // output has mixed line ends, LINEEND_DEFAULT only + + if (lineEndFormat == LINEEND_WINDOWS) + outputEOL = "\r\n"; + else if (lineEndFormat == LINEEND_LINUX) + outputEOL = "\n"; + else if (lineEndFormat == LINEEND_MACOLD) + outputEOL = "\r"; + else + outputEOL.clear(); +} + +// read a file into the stringstream 'in' +FileEncoding ASConsole::readFile(const string& fileName_, stringstream& in) const +{ + const int blockSize = 65536; // 64 KB + ifstream fin(fileName_.c_str(), ios::binary); + if (!fin) + error("Cannot open file", fileName_.c_str()); + char* data = new (nothrow) char[blockSize]; + if (data == nullptr) + error("Cannot allocate memory to open file", fileName_.c_str()); + fin.read(data, blockSize); + if (fin.bad()) + error("Cannot read file", fileName_.c_str()); + size_t dataSize = static_cast(fin.gcount()); + FileEncoding encoding = detectEncoding(data, dataSize); + if (encoding == UTF_32BE || encoding == UTF_32LE) + error(_("Cannot process UTF-32 encoding"), fileName_.c_str()); + bool firstBlock = true; + bool isBigEndian = (encoding == UTF_16BE); + while (dataSize != 0) + { + if (encoding == UTF_16LE || encoding == UTF_16BE) + { + // convert utf-16 to utf-8 + size_t utf8Size = encode.utf8LengthFromUtf16(data, dataSize, isBigEndian); + char* utf8Out = new (nothrow) char[utf8Size]; + if (utf8Out == nullptr) + error("Cannot allocate memory for utf-8 conversion", fileName_.c_str()); + size_t utf8Len = encode.utf16ToUtf8(data, dataSize, isBigEndian, firstBlock, utf8Out); + assert(utf8Len <= utf8Size); + in << string(utf8Out, utf8Len); + delete[] utf8Out; + } + else + in << string(data, dataSize); + fin.read(data, blockSize); + if (fin.bad()) + error("Cannot read file", fileName_.c_str()); + dataSize = static_cast(fin.gcount()); + firstBlock = false; + } + fin.close(); + delete[] data; + return encoding; +} + +void ASConsole::setIgnoreExcludeErrors(bool state) +{ ignoreExcludeErrors = state; } + +void ASConsole::setIgnoreExcludeErrorsAndDisplay(bool state) +{ ignoreExcludeErrors = state; ignoreExcludeErrorsDisplay = state; } + +void ASConsole::setIsFormattedOnly(bool state) +{ isFormattedOnly = state; } + +void ASConsole::setIsQuiet(bool state) +{ isQuiet = state; } + +void ASConsole::setIsRecursive(bool state) +{ isRecursive = state; } + +void ASConsole::setIsDryRun(bool state) +{ isDryRun = state; } + +void ASConsole::setIsVerbose(bool state) +{ isVerbose = state; } + +void ASConsole::setNoBackup(bool state) +{ noBackup = state; } + +void ASConsole::setOptionFileName(const string& name) +{ optionFileName = name; } + +void ASConsole::setOrigSuffix(const string& suffix) +{ origSuffix = suffix; } + +void ASConsole::setPreserveDate(bool state) +{ preserveDate = state; } + +void ASConsole::setProjectOptionFileName(const string& optfilepath) +{ projectOptionFileName = optfilepath; } + +void ASConsole::setStdPathIn(const string& path) +{ stdPathIn = path; } + +void ASConsole::setStdPathOut(const string& path) +{ stdPathOut = path; } + +// set outputEOL variable +void ASConsole::setOutputEOL(LineEndFormat lineEndFormat, const string& currentEOL) +{ + if (lineEndFormat == LINEEND_DEFAULT) + { + outputEOL = currentEOL; + if (prevEOL.empty()) + prevEOL = outputEOL; + if (prevEOL != outputEOL) + { + lineEndsMixed = true; + filesAreIdentical = false; + prevEOL = outputEOL; + } + } + else + { + prevEOL = currentEOL; + if (prevEOL != outputEOL) + filesAreIdentical = false; + } +} + +#ifdef _WIN32 // Windows specific + +/** + * WINDOWS function to display the last system error. + */ +void ASConsole::displayLastError() +{ + LPSTR msgBuf; + DWORD lastError = GetLastError(); + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + nullptr, + lastError, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPSTR) &msgBuf, + 0, + nullptr + ); + // Display the string. + (*errorStream) << "Error (" << lastError << ") " << msgBuf << endl; + // Free the buffer. + LocalFree(msgBuf); +} + +/** + * WINDOWS function to get the current directory. + * NOTE: getenv("CD") does not work for Windows Vista. + * The Windows function GetCurrentDirectory is used instead. + * + * @return The path of the current directory + */ +string ASConsole::getCurrentDirectory(const string& fileName_) const +{ + char currdir[MAX_PATH]; + currdir[0] = '\0'; + if (!GetCurrentDirectory(sizeof(currdir), currdir)) + error("Cannot find file", fileName_.c_str()); + return string(currdir); +} + +/** + * WINDOWS function to resolve wildcards and recurse into sub directories. + * The fileName vector is filled with the path and names of files to process. + * + * @param directory The path of the directory to be processed. + * @param wildcards A vector of wildcards to be processed (e.g. *.cpp). + */ +void ASConsole::getFileNames(const string& directory, const vector& wildcards) +{ + vector subDirectory; // sub directories of directory + WIN32_FIND_DATA findFileData; // for FindFirstFile and FindNextFile + + // Find the first file in the directory + // Find will get at least "." and "..". + string firstFile = directory + "\\*"; + HANDLE hFind = FindFirstFile(firstFile.c_str(), &findFileData); + + if (hFind == INVALID_HANDLE_VALUE) + { + // Error (3) The system cannot find the path specified. + // Error (123) The filename, directory name, or volume label syntax is incorrect. + // ::FindClose(hFind); before exiting + displayLastError(); + error(_("Cannot open directory"), directory.c_str()); + } + + // save files and sub directories + do + { + // skip hidden or read only + if (findFileData.cFileName[0] == '.' + || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) + || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)) + continue; + + // is this a sub directory + if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + if (!isRecursive) + continue; + // if a sub directory and recursive, save sub directory + string subDirectoryPath = directory + g_fileSeparator + findFileData.cFileName; + if (isPathExclued(subDirectoryPath)) + printMsg(_("Exclude %s\n"), subDirectoryPath.substr(mainDirectoryLength)); + else + subDirectory.emplace_back(subDirectoryPath); + continue; + } + + string filePathName = directory + g_fileSeparator + findFileData.cFileName; + // check exclude before wildcmp to avoid "unmatched exclude" error + bool isExcluded = isPathExclued(filePathName); + // save file name if wildcard match + for (size_t i = 0; i < wildcards.size(); i++) + { + if (wildcmp(wildcards[i].c_str(), findFileData.cFileName)) + { + if (isExcluded) + printMsg(_("Exclude %s\n"), filePathName.substr(mainDirectoryLength)); + else + fileName.emplace_back(filePathName); + break; + } + } + } + while (FindNextFile(hFind, &findFileData) != 0); + + // check for processing error + ::FindClose(hFind); + DWORD dwError = GetLastError(); + if (dwError != ERROR_NO_MORE_FILES) + error("Error processing directory", directory.c_str()); + + // recurse into sub directories + // if not doing recursive subDirectory is empty + for (unsigned i = 0; i < subDirectory.size(); i++) + getFileNames(subDirectory[i], wildcards); + + return; +} + +// WINDOWS function to get the full path name from the relative path name +// Return the full path name or an empty string if failed. +string ASConsole::getFullPathName(const string& relativePath) const +{ + char fullPath[MAX_PATH]; + GetFullPathName(relativePath.c_str(), MAX_PATH, fullPath, NULL); + return fullPath; +} + +/** + * WINDOWS function to format a number according to the current locale. + * This formats positive integers only, no float. + * + * @param num The number to be formatted. + * @param lcid The LCID of the locale to be used for testing. + * @return The formatted number. + */ +string ASConsole::getNumberFormat(int num, size_t lcid) const +{ +#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__) + // Compilers that don't support C++ locales should still support this assert. + // The C locale should be set but not the C++. + // This function is not necessary if the C++ locale is set. + // The locale().name() return value is not portable to all compilers. + assert(locale().name() == "C"); +#endif + // convert num to a string + stringstream alphaNum; + alphaNum << num; + string number = alphaNum.str(); + if (useAscii) + return number; + + // format the number using the Windows API + if (lcid == 0) + lcid = LOCALE_USER_DEFAULT; + int outSize = ::GetNumberFormat(lcid, 0, number.c_str(), nullptr, nullptr, 0); + char* outBuf = new (nothrow) char[outSize]; + if (outBuf == nullptr) + return number; + ::GetNumberFormat(lcid, 0, number.c_str(), nullptr, outBuf, outSize); + string formattedNum(outBuf); + delete[] outBuf; + // remove the decimal + int decSize = ::GetLocaleInfo(lcid, LOCALE_SDECIMAL, nullptr, 0); + char* decBuf = new (nothrow) char[decSize]; + if (decBuf == nullptr) + return number; + ::GetLocaleInfo(lcid, LOCALE_SDECIMAL, decBuf, decSize); + size_t i = formattedNum.rfind(decBuf); + delete[] decBuf; + if (i != string::npos) + formattedNum.erase(i); + if (!formattedNum.length()) + formattedNum = "0"; + return formattedNum; +} + +/** + * WINDOWS function to check for a HOME directory + * + * @param absPath The path to be evaluated. + * @returns true if absPath is HOME or is an invalid absolute + * path, false otherwise. + */ +bool ASConsole::isHomeOrInvalidAbsPath(const string& absPath) const +{ + char* env = getenv("USERPROFILE"); + if (env == nullptr) + return true; + + if (absPath.c_str() == env) + return true; + + if (absPath.compare(0, strlen(env), env) != 0) + return true; + + return false; +} + +/** + * WINDOWS function to open a HTML file in the default browser. + */ +void ASConsole::launchDefaultBrowser(const char* filePathIn /*nullptr*/) const +{ + struct stat statbuf; + const char* envPaths[] = { "PROGRAMFILES(X86)", "PROGRAMFILES" }; + size_t pathsLen = sizeof(envPaths) / sizeof(envPaths[0]); + string htmlDefaultPath; + for (size_t i = 0; i < pathsLen; i++) + { + const char* envPath = getenv(envPaths[i]); + if (envPath == nullptr) + continue; + htmlDefaultPath = envPath; + if (htmlDefaultPath.length() > 0 + && htmlDefaultPath[htmlDefaultPath.length() - 1] == g_fileSeparator) + htmlDefaultPath.erase(htmlDefaultPath.length() - 1); + htmlDefaultPath.append("\\AStyle\\doc"); + if (stat(htmlDefaultPath.c_str(), &statbuf) == 0 && statbuf.st_mode & S_IFDIR) + break; + } + htmlDefaultPath.append("\\"); + + // build file path + string htmlFilePath; + if (filePathIn == nullptr) + htmlFilePath = htmlDefaultPath + "astyle.html"; + else + { + if (strpbrk(filePathIn, "\\/") == nullptr) + htmlFilePath = htmlDefaultPath + filePathIn; + else + htmlFilePath = filePathIn; + } + standardizePath(htmlFilePath); + if (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG)) + { + printf(_("Cannot open HTML file %s\n"), htmlFilePath.c_str()); + return; + } + + SHELLEXECUTEINFO sei = { sizeof(sei), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + sei.fMask = SEE_MASK_FLAG_NO_UI; + sei.lpVerb = "open"; + sei.lpFile = htmlFilePath.c_str(); + sei.nShow = SW_SHOWNORMAL; + + // browser open will be bypassed in test programs + printf(_("Opening HTML documentation %s\n"), htmlFilePath.c_str()); + if (!bypassBrowserOpen) + { + int ret = ShellExecuteEx(&sei); + if (!ret) + error(_("Command execute failure"), htmlFilePath.c_str()); + } +} + +#else // Linux specific + +/** + * LINUX function to get the current directory. + * This is done if the fileName does not contain a path. + * It is probably from an editor sending a single file. + * + * @param fileName_ The filename is used only for the error message. + * @return The path of the current directory + */ +string ASConsole::getCurrentDirectory(const string& fileName_) const +{ + char* currdir = getenv("PWD"); + if (currdir == nullptr) + error("Cannot find file", fileName_.c_str()); + return string(currdir); +} + +/** + * LINUX function to resolve wildcards and recurse into sub directories. + * The fileName vector is filled with the path and names of files to process. + * + * @param directory The path of the directory to be processed. + * @param wildcards A vector of wildcards to be processed (e.g. *.cpp). + */ +void ASConsole::getFileNames(const string& directory, const vector& wildcards) +{ + struct dirent* entry; // entry from readdir() + struct stat statbuf; // entry from stat() + vector subDirectory; // sub directories of this directory + + // errno is defined in and is set for errors in opendir, readdir, or stat + errno = 0; + + DIR* dp = opendir(directory.c_str()); + if (dp == nullptr) + error(_("Cannot open directory"), directory.c_str()); + + // save the first fileName entry for this recursion + const unsigned firstEntry = fileName.size(); + + // save files and sub directories + while ((entry = readdir(dp)) != nullptr) + { + // get file status + string entryFilepath = directory + g_fileSeparator + entry->d_name; + if (stat(entryFilepath.c_str(), &statbuf) != 0) + { + if (errno == EOVERFLOW) // file over 2 GB is OK + { + errno = 0; + continue; + } + perror("errno message"); + error("Error getting file status in directory", directory.c_str()); + } + // skip hidden or read only + if (entry->d_name[0] == '.' || !(statbuf.st_mode & S_IWUSR)) + continue; + // if a sub directory and recursive, save sub directory + if (S_ISDIR(statbuf.st_mode) && isRecursive) + { + if (isPathExclued(entryFilepath)) + printMsg(_("Exclude %s\n"), entryFilepath.substr(mainDirectoryLength)); + else + subDirectory.emplace_back(entryFilepath); + continue; + } + + // if a file, save file name + if (S_ISREG(statbuf.st_mode)) + { + // check exclude before wildcmp to avoid "unmatched exclude" error + bool isExcluded = isPathExclued(entryFilepath); + // save file name if wildcard match + for (string wildcard : wildcards) + { + if (wildcmp(wildcard.c_str(), entry->d_name) != 0) + { + if (isExcluded) + printMsg(_("Exclude %s\n"), entryFilepath.substr(mainDirectoryLength)); + else + fileName.emplace_back(entryFilepath); + break; + } + } + } + } + + if (closedir(dp) != 0) + { + perror("errno message"); + error("Error reading directory", directory.c_str()); + } + + // sort the current entries for fileName + if (firstEntry < fileName.size()) + sort(&fileName[firstEntry], &fileName[fileName.size()]); + + // recurse into sub directories + // if not doing recursive, subDirectory is empty + if (subDirectory.size() > 1) + sort(subDirectory.begin(), subDirectory.end()); + for (unsigned i = 0; i < subDirectory.size(); i++) + { + getFileNames(subDirectory[i], wildcards); + } +} + +// LINUX function to get the full path name from the relative path name +// Return the full path name or an empty string if failed. +string ASConsole::getFullPathName(const string& relativePath) const +{ + // ignore realPath attribute warning +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-result" +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + char fullPath[PATH_MAX]; + realpath(relativePath.c_str(), fullPath); + return fullPath; +#pragma GCC diagnostic pop +} + +/** + * LINUX function to get locale information and call getNumberFormat. + * This formats positive integers only, no float. + * + * @param num The number to be formatted. + * size_t is for compatibility with the Windows function. + * @return The formatted number. + */ +string ASConsole::getNumberFormat(int num, size_t /*lcid*/) const +{ +#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__) + // Compilers that don't support C++ locales should still support this assert. + // The C locale should be set but not the C++. + // This function is not necessary if the C++ locale is set. + // The locale().name() return value is not portable to all compilers. + assert(locale().name() == "C"); +#endif + + // get the locale info + struct lconv* lc; + lc = localeconv(); + + // format the number + return getNumberFormat(num, lc->grouping, lc->thousands_sep); +} + +/** + * LINUX function to format a number according to the current locale. + * This formats positive integers only, no float. + * + * @param num The number to be formatted. + * @param groupingArg The grouping string from the locale. + * @param separator The thousands group separator from the locale. + * @return The formatted number. + */ +string ASConsole::getNumberFormat(int num, const char* groupingArg, const char* separator) const +{ + // convert num to a string + stringstream alphaNum; + alphaNum << num; + string number = alphaNum.str(); + // format the number from right to left + string formattedNum; + size_t ig = 0; // grouping index + int grouping = groupingArg[ig]; + int i = number.length(); + // check for no grouping + if (grouping == 0) + grouping = number.length(); + while (i > 0) + { + // extract a group of numbers + string group; + if (i < grouping) + group = number; + else + group = number.substr(i - grouping); + // update formatted number + formattedNum.insert(0, group); + i -= grouping; + if (i < 0) + i = 0; + if (i > 0) + formattedNum.insert(0, separator); + number.erase(i); + // update grouping + if (groupingArg[ig] != '\0' + && groupingArg[ig + 1] != '\0') + grouping = groupingArg[++ig]; + } + return formattedNum; +} + +/** + * LINUX function to check for a HOME directory + * + * @param absPath The path to be evaluated. + * @returns true if absPath is HOME or is an invalid absolute + * path, false otherwise. + */ +bool ASConsole::isHomeOrInvalidAbsPath(const string& absPath) const +{ + char* env = getenv("HOME"); + if (env == nullptr) + return true; + + if (absPath.c_str() == env) + return true; + + if (absPath.compare(0, strlen(env), env) != 0) + return true; + + return false; +} + +/** + * LINUX function to open a HTML file in the default browser. + * Use xdg-open from freedesktop.org cross-desktop compatibility suite xdg-utils. + * see http://portland.freedesktop.org/wiki/ + * This is installed on most modern distributions. + */ +void ASConsole::launchDefaultBrowser(const char* filePathIn /*nullptr*/) const +{ + struct stat statbuf; + string htmlDefaultPath = "/usr/share/doc/astyle/html/"; + string htmlDefaultFile = "astyle.html"; + + // build file path + string htmlFilePath; + if (filePathIn == nullptr) + htmlFilePath = htmlDefaultPath + htmlDefaultFile; + else + { + if (strpbrk(filePathIn, "\\/") == nullptr) + htmlFilePath = htmlDefaultPath + filePathIn; + else + htmlFilePath = filePathIn; + } + standardizePath(htmlFilePath); + if (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG)) + { + printf(_("Cannot open HTML file %s\n"), htmlFilePath.c_str()); + return; + } + + // get search paths + const char* envPaths = getenv("PATH"); + if (envPaths == nullptr) + envPaths = "?"; + size_t envlen = strlen(envPaths); + char* paths = new char[envlen + 1]; + strcpy(paths, envPaths); + // find xdg-open (usually in /usr/bin) + // Mac uses open instead +#ifdef __APPLE__ + const char* fileOpen = "open"; +#else + const char* fileOpen = "xdg-open"; +#endif + string searchPath; + char* searchDir = strtok(paths, ":"); + while (searchDir != nullptr) + { + searchPath = searchDir; + if (searchPath.length() > 0 + && searchPath[searchPath.length() - 1] != g_fileSeparator) + searchPath.append(string(1, g_fileSeparator)); + searchPath.append(fileOpen); + if (stat(searchPath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG)) + break; + searchDir = strtok(nullptr, ":"); + } + delete[] paths; + if (searchDir == nullptr) + error(_("Command is not installed"), fileOpen); + + // browser open will be bypassed in test programs + printf(_("Opening HTML documentation %s\n"), htmlFilePath.c_str()); + if (!bypassBrowserOpen) + { + execlp(fileOpen, fileOpen, htmlFilePath.c_str(), nullptr); + // execlp will NOT return if successful + error(_("Command execute failure"), fileOpen); + } +} + +#endif // _WIN32 + +/** + * Returns the parent directory of absPath. If absPath is not a valid absolute + * path or if it does not have a parent, an empty string is returned. + * + * @param absPath The initial directory. + * @return The parent directory of absPath, or an empty string if + * one cannot be found. + */ +string ASConsole::getParentDirectory(const string& absPath) const +{ + if (isHomeOrInvalidAbsPath(absPath)) + { + return string(); + } + size_t offset = absPath.size() - 1; + if (absPath[absPath.size() - 1] == g_fileSeparator) + { + offset -= 1; + } + size_t idx = absPath.rfind(g_fileSeparator, offset); + if (idx == string::npos) + { + return string(); + } + string str = absPath.substr(0, idx + 1); + return str; +} + +// get individual file names from the command-line file path +void ASConsole::getFilePaths(const string& filePath) +{ + fileName.clear(); + targetDirectory = string(); + targetFilename = string(); + vector targetFilenameVector; + + // separate directory and file name + size_t separator = filePath.find_last_of(g_fileSeparator); + if (separator == string::npos) + { + // if no directory is present, use the currently active directory + targetDirectory = getCurrentDirectory(filePath); + targetFilename = filePath; + mainDirectoryLength = targetDirectory.length() + 1; // +1 includes trailing separator + } + else + { + targetDirectory = filePath.substr(0, separator); + targetFilename = filePath.substr(separator + 1); + mainDirectoryLength = targetDirectory.length() + 1; // +1 includes trailing separator + } + + if (targetFilename.length() == 0) + { + fprintf(stderr, _("Missing filename in %s\n"), filePath.c_str()); + error(); + } + + // check filename for wildcards + hasWildcard = false; + if (targetFilename.find_first_of("*?") != string::npos) + hasWildcard = true; + + // If the filename is not quoted on Linux, bash will replace the + // wildcard instead of passing it to the program. + if (isRecursive && !hasWildcard) + { + fprintf(stderr, "%s\n", _("Recursive option with no wildcard")); +#ifndef _WIN32 + fprintf(stderr, "%s\n", _("Did you intend quote the filename")); +#endif + error(); + } + + bool hasMultipleTargets = false; + if (targetFilename.find_first_of(",;") != string::npos) + hasMultipleTargets = true; + + // display directory name for wildcard processing + if (hasWildcard) + { + printSeparatingLine(); + printMsg(_("Directory %s\n"), targetDirectory + g_fileSeparator + targetFilename); + } + + // clear exclude hits vector + size_t excludeHitsVectorSize = excludeHitsVector.size(); + for (size_t ix = 0; ix < excludeHitsVectorSize; ix++) + excludeHitsVector[ix] = false; + + // create a vector of paths and file names to process + if (hasWildcard || isRecursive || hasMultipleTargets) + { + getTargetFilenames(targetFilename, targetFilenameVector); + getFileNames(targetDirectory, targetFilenameVector); + } + else + { + // verify a single file is not a directory (needed on Linux) + string entryFilepath = targetDirectory + g_fileSeparator + targetFilename; + struct stat statbuf; + if (stat(entryFilepath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG)) + fileName.emplace_back(entryFilepath); + } + + // check for unprocessed excludes + bool excludeErr = false; + for (size_t ix = 0; ix < excludeHitsVector.size(); ix++) + { + if (!excludeHitsVector[ix]) + { + excludeErr = true; + if (!ignoreExcludeErrorsDisplay) + { + if (ignoreExcludeErrors) + printMsg(_("Exclude (unmatched) %s\n"), excludeVector[ix]); + else + fprintf(stderr, _("Exclude (unmatched) %s\n"), excludeVector[ix].c_str()); + } + else + { + if (!ignoreExcludeErrors) + fprintf(stderr, _("Exclude (unmatched) %s\n"), excludeVector[ix].c_str()); + } + } + } + + if (excludeErr && !ignoreExcludeErrors) + { + if (hasWildcard && !isRecursive) + fprintf(stderr, "%s\n", _("Did you intend to use --recursive")); + error(); + } + + // check if files were found (probably an input error if not) + if (fileName.empty()) + { + fprintf(stderr, _("No file to process %s\n"), filePath.c_str()); + if (hasWildcard && !isRecursive) + fprintf(stderr, "%s\n", _("Did you intend to use --recursive")); + error(); + } + + if (hasWildcard) + printSeparatingLine(); +} + +// Check if a file exists +bool ASConsole::fileExists(const char* file) const +{ + struct stat buf; + return (stat(file, &buf) == 0); +} + +bool ASConsole::fileNameVectorIsEmpty() const +{ + return fileNameVector.empty(); +} + +bool ASConsole::isOption(const string& arg, const char* op) +{ + return arg.compare(op) == 0; +} + +bool ASConsole::isOption(const string& arg, const char* a, const char* b) +{ + return (isOption(arg, a) || isOption(arg, b)); +} + +bool ASConsole::isParamOption(const string& arg, const char* option) +{ + bool retVal = arg.compare(0, strlen(option), option) == 0; + // if comparing for short option, 2nd char of arg must be numeric + if (retVal && strlen(option) == 1 && arg.length() > 1) + if (!isdigit((unsigned char) arg[1])) + retVal = false; + return retVal; +} + +// compare a path to the exclude vector +// used for both directories and filenames +// updates the g_excludeHitsVector +// return true if a match +bool ASConsole::isPathExclued(const string& subPath) +{ + bool retVal = false; + + // read the exclude vector checking for a match + for (size_t i = 0; i < excludeVector.size(); i++) + { + string exclude = excludeVector[i]; + + if (subPath.length() < exclude.length()) + continue; + + size_t compareStart = subPath.length() - exclude.length(); + // subPath compare must start with a directory name + if (compareStart > 0) + { + char lastPathChar = subPath[compareStart - 1]; + if (lastPathChar != g_fileSeparator) + continue; + } + + string compare = subPath.substr(compareStart); + if (!g_isCaseSensitive) + { + // make it case insensitive for Windows + for (size_t j = 0; j < compare.length(); j++) + compare[j] = (char) tolower(compare[j]); + for (size_t j = 0; j < exclude.length(); j++) + exclude[j] = (char) tolower(exclude[j]); + } + // compare sub directory to exclude data - must check them all + if (compare == exclude) + { + excludeHitsVector[i] = true; + retVal = true; + break; + } + } + return retVal; +} + +void ASConsole::printHelp() const +{ + cout << endl; + cout << " Artistic Style " << g_version << endl; + cout << " Maintained by: Jim Pattee\n"; + cout << " Original Author: Tal Davidson\n"; + cout << endl; + cout << "Usage:\n"; + cout << "------\n"; + cout << " astyle [OPTIONS] File1 File2 File3 [...]\n"; + cout << endl; + cout << " astyle [OPTIONS] < Original > Beautified\n"; + cout << endl; + cout << " When indenting a specific file, the resulting indented file RETAINS\n"; + cout << " the original file-name. The original pre-indented file is renamed,\n"; + cout << " with a suffix of \'.orig\' added to the original filename.\n"; + cout << endl; + cout << " Wildcards (* and ?) may be used in the filename.\n"; + cout << " A \'recursive\' option can process directories recursively.\n"; + cout << " Multiple file extensions may be separated by a comma.\n"; + cout << endl; + cout << " By default, astyle is set up to indent with four spaces per indent,\n"; + cout << " a maximal indentation of 40 spaces inside continuous statements,\n"; + cout << " a minimum indentation of eight spaces inside conditional statements,\n"; + cout << " and NO formatting options.\n"; + cout << endl; + cout << "Options:\n"; + cout << "--------\n"; + cout << " This program follows the usual GNU command line syntax.\n"; + cout << " Long options (starting with '--') must be written one at a time.\n"; + cout << " Short options (starting with '-') may be appended together.\n"; + cout << " Thus, -bps4 is the same as -b -p -s4.\n"; + cout << endl; + cout << "Option Files:\n"; + cout << "-------------\n"; + cout << " Artistic Style looks for a default option file and/or a project\n"; + cout << " option file in the following order:\n"; + cout << " 1. The command line options have precedence.\n"; + cout << " 2. The project option file has precedence over the default file\n"; + cout << " o the file name indicated by the --project= command line option.\n"; + cout << " o the file named .astylerc or _ astylerc.\n"; + cout << " o the file name identified by ARTISTIC_STYLE_PROJECT_OPTIONS.\n"; + cout << " o the file is disabled by --project=none on the command line.\n"; + cout << " 3. The default option file that can be used for all projects.\n"; + cout << " o the file path indicated by the --options= command line option.\n"; + cout << " o the file path indicated by ARTISTIC_STYLE_OPTIONS.\n"; + cout << " o the file named .astylerc in the HOME directory (for Linux).\n"; + cout << " o the file name astylerc in the APPDATA directory (for Windows).\n"; + cout << " o the file is disabled by --project=none on the command line.\n"; + cout << " Long options within the option files may be written without '--'.\n"; + cout << " Line-end comments begin with a '#'.\n"; + cout << endl; + cout << "Disable Formatting:\n"; + cout << "-------------------\n"; + cout << " Disable Block\n"; + cout << " Blocks of code can be disabled with the comment tags *INDENT-OFF*\n"; + cout << " and *INDENT-ON*. It must be contained in a one-line comment.\n"; + cout << endl; + cout << " Disable Line\n"; + cout << " Padding of operators can be disabled on a single line using the\n"; + cout << " comment tag *NOPAD*. It must be contained in a line-end comment.\n"; + cout << endl; + cout << "Brace Style Options:\n"; + cout << "--------------------\n"; + cout << " default brace style\n"; + cout << " If no brace style is requested, the opening braces will not be\n"; + cout << " changed and closing braces will be broken from the preceding line.\n"; + cout << endl; + cout << " --style=allman OR --style=bsd OR --style=break OR -A1\n"; + cout << " Allman style formatting/indenting.\n"; + cout << " Broken braces.\n"; + cout << endl; + cout << " --style=java OR --style=attach OR -A2\n"; + cout << " Java style formatting/indenting.\n"; + cout << " Attached braces.\n"; + cout << endl; + cout << " --style=kr OR --style=k&r OR --style=k/r OR -A3\n"; + cout << " Kernighan & Ritchie style formatting/indenting.\n"; + cout << " Linux braces.\n"; + cout << endl; + cout << " --style=stroustrup OR -A4\n"; + cout << " Stroustrup style formatting/indenting.\n"; + cout << " Linux braces.\n"; + cout << endl; + cout << " --style=whitesmith OR -A5\n"; + cout << " Whitesmith style formatting/indenting.\n"; + cout << " Broken, indented braces.\n"; + cout << " Indented class blocks and switch blocks.\n"; + cout << endl; + cout << " --style=vtk OR -A15\n"; + cout << " VTK style formatting/indenting.\n"; + cout << " Broken, indented braces except for the opening braces.\n"; + cout << endl; + cout << " --style=ratliff OR --style=banner OR -A6\n"; + cout << " Ratliff style formatting/indenting.\n"; + cout << " Attached, indented braces.\n"; + cout << endl; + cout << " --style=gnu OR -A7\n"; + cout << " GNU style formatting/indenting.\n"; + cout << " Broken braces, indented blocks.\n"; + cout << endl; + cout << " --style=linux OR --style=knf OR -A8\n"; + cout << " Linux style formatting/indenting.\n"; + cout << " Linux braces, minimum conditional indent is one-half indent.\n"; + cout << endl; + cout << " --style=horstmann OR --style=run-in OR -A9\n"; + cout << " Horstmann style formatting/indenting.\n"; + cout << " Run-in braces, indented switches.\n"; + cout << endl; + cout << " --style=1tbs OR --style=otbs OR -A10\n"; + cout << " One True Brace Style formatting/indenting.\n"; + cout << " Linux braces, add braces to all conditionals.\n"; + cout << endl; + cout << " --style=google OR -A14\n"; + cout << " Google style formatting/indenting.\n"; + cout << " Attached braces, indented class modifiers.\n"; + cout << endl; + cout << " --style=mozilla OR -A16\n"; + cout << " Mozilla style formatting/indenting.\n"; + cout << " Linux braces, with broken braces for structs and enums,\n"; + cout << " and attached braces for namespaces.\n"; + cout << endl; + cout << " --style=pico OR -A11\n"; + cout << " Pico style formatting/indenting.\n"; + cout << " Run-in opening braces and attached closing braces.\n"; + cout << " Uses keep one line blocks and keep one line statements.\n"; + cout << endl; + cout << " --style=lisp OR -A12\n"; + cout << " Lisp style formatting/indenting.\n"; + cout << " Attached opening braces and attached closing braces.\n"; + cout << " Uses keep one line statements.\n"; + cout << endl; + cout << "Tab Options:\n"; + cout << "------------\n"; + cout << " default indent option\n"; + cout << " If no indentation option is set, the default\n"; + cout << " option of 4 spaces per indent will be used.\n"; + cout << endl; + cout << " --indent=spaces=# OR -s#\n"; + cout << " Indent using # spaces per indent. Not specifying #\n"; + cout << " will result in a default of 4 spaces per indent.\n"; + cout << endl; + cout << " --indent=tab OR --indent=tab=# OR -t OR -t#\n"; + cout << " Indent using tab characters, assuming that each\n"; + cout << " indent is # spaces long. Not specifying # will result\n"; + cout << " in a default assumption of 4 spaces per indent.\n"; + cout << endl; + cout << " --indent=force-tab=# OR -T#\n"; + cout << " Indent using tab characters, assuming that each\n"; + cout << " indent is # spaces long. Force tabs to be used in areas\n"; + cout << " AStyle would prefer to use spaces.\n"; + cout << endl; + cout << " --indent=force-tab-x=# OR -xT#\n"; + cout << " Allows the tab length to be set to a length that is different\n"; + cout << " from the indent length. This may cause the indentation to be\n"; + cout << " a mix of both spaces and tabs. This option sets the tab length.\n"; + cout << endl; + cout << "Brace Modify Options:\n"; + cout << "---------------------\n"; + cout << " --attach-namespaces OR -xn\n"; + cout << " Attach braces to a namespace statement.\n"; + cout << endl; + cout << " --attach-classes OR -xc\n"; + cout << " Attach braces to a class statement.\n"; + cout << endl; + cout << " --attach-inlines OR -xl\n"; + cout << " Attach braces to class inline function definitions.\n"; + cout << endl; + cout << " --attach-extern-c OR -xk\n"; + cout << " Attach braces to an extern \"C\" statement.\n"; + cout << endl; + cout << " --attach-closing-while OR -xV\n"; + cout << " Attach closing while of do-while to the closing brace.\n"; + cout << endl; + cout << "Indentation Options:\n"; + cout << "--------------------\n"; + cout << " --indent-classes OR -C\n"; + cout << " Indent 'class' blocks so that the entire block is indented.\n"; + cout << endl; + cout << " --indent-modifiers OR -xG\n"; + cout << " Indent 'class' access modifiers, 'public:', 'protected:' or\n"; + cout << " 'private:', one half indent. The rest of the class is not\n"; + cout << " indented. \n"; + cout << endl; + cout << " --indent-switches OR -S\n"; + cout << " Indent 'switch' blocks, so that the inner 'case XXX:'\n"; + cout << " headers are indented in relation to the switch block.\n"; + cout << endl; + cout << " --indent-cases OR -K\n"; + cout << " Indent case blocks from the 'case XXX:' headers.\n"; + cout << " Case statements not enclosed in blocks are NOT indented.\n"; + cout << endl; + cout << " --indent-namespaces OR -N\n"; + cout << " Indent the contents of namespace blocks.\n"; + cout << endl; + cout << " --indent-after-parens OR -xU\n"; + cout << " Indent, instead of align, continuation lines following lines\n"; + cout << " that contain an opening paren '(' or an assignment '='. \n"; + cout << endl; + cout << " --indent-continuation=# OR -xt#\n"; + cout << " Indent continuation lines an additional # indents.\n"; + cout << " The valid values are 0 thru 4 indents.\n"; + cout << " The default value is 1 indent.\n"; + cout << endl; + cout << " --indent-labels OR -L\n"; + cout << " Indent labels so that they appear one indent less than\n"; + cout << " the current indentation level, rather than being\n"; + cout << " flushed completely to the left (which is the default).\n"; + cout << endl; + cout << " --indent-preproc-block OR -xW\n"; + cout << " Indent preprocessor blocks at brace level 0.\n"; + cout << " Without this option the preprocessor block is not indented.\n"; + cout << endl; + cout << " --indent-preproc-cond OR -xw\n"; + cout << " Indent preprocessor conditional statements #if/#else/#endif\n"; + cout << " to the same level as the source code.\n"; + cout << endl; + cout << " --indent-preproc-define OR -w\n"; + cout << " Indent multi-line preprocessor #define statements.\n"; + cout << endl; + cout << " --indent-col1-comments OR -Y\n"; + cout << " Indent line comments that start in column one.\n"; + cout << endl; + cout << " --min-conditional-indent=# OR -m#\n"; + cout << " Indent a minimal # spaces in a continuous conditional\n"; + cout << " belonging to a conditional header.\n"; + cout << " The valid values are:\n"; + cout << " 0 - no minimal indent.\n"; + cout << " 1 - indent at least one additional indent.\n"; + cout << " 2 - indent at least two additional indents.\n"; + cout << " 3 - indent at least one-half an additional indent.\n"; + cout << " The default value is 2, two additional indents.\n"; + cout << endl; + cout << " --max-continuation-indent=# OR -M#\n"; + cout << " Indent a maximal # spaces in a continuation line,\n"; + cout << " relative to the previous line.\n"; + cout << " The valid values are 40 thru 120.\n"; + cout << " The default value is 40.\n"; + cout << endl; + cout << "Padding Options:\n"; + cout << "----------------\n"; + cout << " --break-blocks OR -f\n"; + cout << " Insert empty lines around unrelated blocks, labels, classes, ...\n"; + cout << endl; + cout << " --break-blocks=all OR -F\n"; + cout << " Like --break-blocks, except also insert empty lines \n"; + cout << " around closing headers (e.g. 'else', 'catch', ...).\n"; + cout << endl; + cout << " --pad-oper OR -p\n"; + cout << " Insert space padding around operators.\n"; + cout << endl; + cout << " --pad-comma OR -xg\n"; + cout << " Insert space padding after commas.\n"; + cout << endl; + cout << " --pad-paren OR -P\n"; + cout << " Insert space padding around parenthesis on both the outside\n"; + cout << " and the inside.\n"; + cout << endl; + cout << " --pad-paren-out OR -d\n"; + cout << " Insert space padding around parenthesis on the outside only.\n"; + cout << endl; + cout << " --pad-first-paren-out OR -xd\n"; + cout << " Insert space padding around first parenthesis in a series on\n"; + cout << " the outside only.\n"; + cout << endl; + cout << " --pad-paren-in OR -D\n"; + cout << " Insert space padding around parenthesis on the inside only.\n"; + cout << endl; + cout << " --pad-header OR -H\n"; + cout << " Insert space padding after paren headers (e.g. 'if', 'for'...).\n"; + cout << endl; + cout << " --unpad-paren OR -U\n"; + cout << " Remove unnecessary space padding around parenthesis. This\n"; + cout << " can be used in combination with the 'pad' options above.\n"; + cout << endl; + cout << " --delete-empty-lines OR -xd\n"; + cout << " Delete empty lines within a function or method.\n"; + cout << " It will NOT delete lines added by the break-blocks options.\n"; + cout << endl; + cout << " --fill-empty-lines OR -E\n"; + cout << " Fill empty lines with the white space of their\n"; + cout << " previous lines.\n"; + cout << endl; + cout << " --align-pointer=type OR -k1\n"; + cout << " --align-pointer=middle OR -k2\n"; + cout << " --align-pointer=name OR -k3\n"; + cout << " Attach a pointer or reference operator (*, &, or ^) to either\n"; + cout << " the operator type (left), middle, or operator name (right).\n"; + cout << " To align the reference separately use --align-reference.\n"; + cout << endl; + cout << " --align-reference=none OR -W0\n"; + cout << " --align-reference=type OR -W1\n"; + cout << " --align-reference=middle OR -W2\n"; + cout << " --align-reference=name OR -W3\n"; + cout << " Attach a reference operator (&) to either\n"; + cout << " the operator type (left), middle, or operator name (right).\n"; + cout << " If not set, follow pointer alignment.\n"; + cout << endl; + cout << "Formatting Options:\n"; + cout << "-------------------\n"; + cout << " --break-closing-braces OR -y\n"; + cout << " Break braces before closing headers (e.g. 'else', 'catch', ...).\n"; + cout << " Use with --style=java, --style=kr, --style=stroustrup,\n"; + cout << " --style=linux, or --style=1tbs.\n"; + cout << endl; + cout << " --break-elseifs OR -e\n"; + cout << " Break 'else if()' statements into two different lines.\n"; + cout << endl; + cout << " --break-one-line-headers OR -xb\n"; + cout << " Break one line headers (e.g. 'if', 'while', 'else', ...) from a\n"; + cout << " statement residing on the same line.\n"; + cout << endl; + cout << " --add-braces OR -j\n"; + cout << " Add braces to unbraced one line conditional statements.\n"; + cout << endl; + cout << " --add-one-line-braces OR -J\n"; + cout << " Add one line braces to unbraced one line conditional\n"; + cout << " statements.\n"; + cout << endl; + cout << " --remove-braces OR -xj\n"; + cout << " Remove braces from a braced one line conditional statements.\n"; + cout << endl; + cout << " --break-return-type OR -xB\n"; + cout << " --break-return-type-decl OR -xD\n"; + cout << " Break the return type from the function name. Options are\n"; + cout << " for the function definitions and the function declarations.\n"; + cout << endl; + cout << " --attach-return-type OR -xf\n"; + cout << " --attach-return-type-decl OR -xh\n"; + cout << " Attach the return type to the function name. Options are\n"; + cout << " for the function definitions and the function declarations.\n"; + cout << endl; + cout << " --keep-one-line-blocks OR -O\n"; + cout << " Don't break blocks residing completely on one line.\n"; + cout << endl; + cout << " --keep-one-line-statements OR -o\n"; + cout << " Don't break lines containing multiple statements into\n"; + cout << " multiple single-statement lines.\n"; + cout << endl; + cout << " --convert-tabs OR -c\n"; + cout << " Convert tabs to the appropriate number of spaces.\n"; + cout << endl; + cout << " --close-templates OR -xy\n"; + cout << " Close ending angle brackets on template definitions.\n"; + cout << endl; + cout << " --remove-comment-prefix OR -xp\n"; + cout << " Remove the leading '*' prefix on multi-line comments and\n"; + cout << " indent the comment text one indent.\n"; + cout << endl; + cout << " --max-code-length=# OR -xC#\n"; + cout << " --break-after-logical OR -xL\n"; + cout << " max-code-length=# will break the line if it exceeds more than\n"; + cout << " # characters. The valid values are 50 thru 200.\n"; + cout << " If the line contains logical conditionals they will be placed\n"; + cout << " first on the new line. The option break-after-logical will\n"; + cout << " cause the logical conditional to be placed last on the\n"; + cout << " previous line.\n"; + cout << endl; + cout << " --mode=c\n"; + cout << " Indent a C or C++ source file (this is the default).\n"; + cout << endl; + cout << " --mode=java\n"; + cout << " Indent a Java source file.\n"; + cout << endl; + cout << " --mode=cs\n"; + cout << " Indent a C# source file.\n"; + cout << endl; + cout << "Objective-C Options:\n"; + cout << "--------------------\n"; + cout << " --pad-method-prefix OR -xQ\n"; + cout << " Insert space padding after the '-' or '+' Objective-C\n"; + cout << " method prefix.\n"; + cout << endl; + cout << " --unpad-method-prefix OR -xR\n"; + cout << " Remove all space padding after the '-' or '+' Objective-C\n"; + cout << " method prefix.\n"; + cout << endl; + cout << " --pad-return-type OR -xq\n"; + cout << " Insert space padding after the Objective-C return type.\n"; + cout << endl; + cout << " --unpad-return-type OR -xr\n"; + cout << " Remove all space padding after the Objective-C return type.\n"; + cout << endl; + cout << " --pad-param-type OR -xS\n"; + cout << " Insert space padding after the Objective-C return type.\n"; + cout << endl; + cout << " --unpad-param-type OR -xs\n"; + cout << " Remove all space padding after the Objective-C return type.\n"; + cout << endl; + cout << " --align-method-colon OR -xM\n"; + cout << " Align the colons in an Objective-C method definition.\n"; + cout << endl; + cout << " --pad-method-colon=none OR -xP\n"; + cout << " --pad-method-colon=all OR -xP1\n"; + cout << " --pad-method-colon=after OR -xP2\n"; + cout << " --pad-method-colon=before OR -xP3\n"; + cout << " Add or remove space padding before or after the colons in an\n"; + cout << " Objective-C method call.\n"; + cout << endl; + cout << "Other Options:\n"; + cout << "--------------\n"; + cout << " --suffix=####\n"; + cout << " Append the suffix #### instead of '.orig' to original filename.\n"; + cout << endl; + cout << " --suffix=none OR -n\n"; + cout << " Do not retain a backup of the original file.\n"; + cout << endl; + cout << " --recursive OR -r OR -R\n"; + cout << " Process subdirectories recursively.\n"; + cout << endl; + cout << " --dry-run\n"; + cout << " Perform a trial run with no changes made to check for formatting.\n"; + cout << endl; + cout << " --exclude=####\n"; + cout << " Specify a file or directory #### to be excluded from processing.\n"; + cout << endl; + cout << " --ignore-exclude-errors OR -i\n"; + cout << " Allow processing to continue if there are errors in the exclude=####\n"; + cout << " options. It will display the unmatched excludes.\n"; + cout << endl; + cout << " --ignore-exclude-errors-x OR -xi\n"; + cout << " Allow processing to continue if there are errors in the exclude=####\n"; + cout << " options. It will NOT display the unmatched excludes.\n"; + cout << endl; + cout << " --errors-to-stdout OR -X\n"; + cout << " Print errors and help information to standard-output rather than\n"; + cout << " to standard-error.\n"; + cout << endl; + cout << " --preserve-date OR -Z\n"; + cout << " Preserve the original file's date and time modified. The time\n"; + cout << " modified will be changed a few micro seconds to force a compile.\n"; + cout << endl; + cout << " --verbose OR -v\n"; + cout << " Verbose mode. Extra informational messages will be displayed.\n"; + cout << endl; + cout << " --formatted OR -Q\n"; + cout << " Formatted display mode. Display only the files that have been\n"; + cout << " formatted.\n"; + cout << endl; + cout << " --quiet OR -q\n"; + cout << " Quiet mode. Suppress all output except error messages.\n"; + cout << endl; + cout << " --lineend=windows OR -z1\n"; + cout << " --lineend=linux OR -z2\n"; + cout << " --lineend=macold OR -z3\n"; + cout << " Force use of the specified line end style. Valid options\n"; + cout << " are windows (CRLF), linux (LF), and macold (CR).\n"; + cout << endl; + cout << "Command Line Only:\n"; + cout << "------------------\n"; + cout << " --options=####\n"; + cout << " --options=none\n"; + cout << " Specify a default option file #### to read and use.\n"; + cout << " It must contain a file path and a file name.\n"; + cout << " 'none' disables the default option file.\n"; + cout << endl; + cout << " --project\n"; + cout << " --project=####\n"; + cout << " --project=none\n"; + cout << " Specify a project option file #### to read and use.\n"; + cout << " It must contain a file name only, without a directory path.\n"; + cout << " The file should be included in the project top-level directory.\n"; + cout << " The default file name is .astylerc or _astylerc.\n"; + cout << " 'none' disables the project or environment variable file.\n"; + cout << endl; + cout << " --ascii OR -I\n"; + cout << " The displayed output will be ascii characters only.\n"; + cout << endl; + cout << " --version OR -V\n"; + cout << " Print version number.\n"; + cout << endl; + cout << " --help OR -h OR -?\n"; + cout << " Print this help message.\n"; + cout << endl; + cout << " --html OR -!\n"; + cout << " Open the HTML help file \"astyle.html\" in the default browser.\n"; + cout << " The documentation must be installed in the standard install path.\n"; + cout << endl; + cout << " --html=####\n"; + cout << " Open a HTML help file in the default browser using the file path\n"; + cout << " ####. The path may include a directory path and a file name, or a\n"; + cout << " file name only. Paths containing spaces must be enclosed in quotes.\n"; + cout << endl; + cout << " --stdin=####\n"; + cout << " Use the file path #### as input to single file formatting.\n"; + cout << " This is a replacement for redirection.\n"; + cout << endl; + cout << " --stdout=####\n"; + cout << " Use the file path #### as output from single file formatting.\n"; + cout << " This is a replacement for redirection.\n"; + cout << endl; + cout << endl; +} + +/** + * Process files in the fileNameVector. + */ +void ASConsole::processFiles() +{ + if (isVerbose) + printVerboseHeader(); + + clock_t startTime = clock(); // start time of file formatting + + // loop thru input fileNameVector and process the files + for (size_t i = 0; i < fileNameVector.size(); i++) + { + getFilePaths(fileNameVector[i]); + + // loop thru fileName vector formatting the files + for (size_t j = 0; j < fileName.size(); j++) + formatFile(fileName[j]); + } + + // files are processed, display stats + if (isVerbose) + printVerboseStats(startTime); +} + +// process options from the command line and option files +// build the vectors fileNameVector, excludeVector, optionsVector, +// projectOptionsVector and fileOptionsVector +void ASConsole::processOptions(const vector& argvOptions) +{ + string arg; + bool ok = true; + bool optionFileRequired = false; + bool shouldParseOptionFile = true; + bool projectOptionFileRequired = false; + bool shouldParseProjectOptionFile = true; + string projectOptionArg; // save for display + + // get command line options + for (size_t i = 0; i < argvOptions.size(); i++) + { + arg = argvOptions[i]; + + if (isOption(arg, "-I") + || isOption(arg, "--ascii")) + { + useAscii = true; + setlocale(LC_ALL, "C"); // use English decimal indicator + localizer.setLanguageFromName("en"); + } + else if (isOption(arg, "--options=none")) + { + optionFileRequired = false; + shouldParseOptionFile = false; + optionFileName = ""; + } + else if (isParamOption(arg, "--options=")) + { + optionFileName = getParam(arg, "--options="); + standardizePath(optionFileName); + optionFileName = getFullPathName(optionFileName); + optionFileRequired = true; + } + else if (isOption(arg, "--project=none")) + { + projectOptionFileRequired = false; + shouldParseProjectOptionFile = false; + setProjectOptionFileName(""); + } + else if (isParamOption(arg, "--project=")) + { + projectOptionFileName = getParam(arg, "--project="); + standardizePath(projectOptionFileName); + projectOptionFileRequired = true; + shouldParseProjectOptionFile = false; + projectOptionArg = projectOptionFileName; + } + else if (isOption(arg, "--project")) + { + projectOptionFileName = ".astylerc"; + projectOptionFileRequired = true; + shouldParseProjectOptionFile = false; + projectOptionArg = projectOptionFileName; + } + else if (isOption(arg, "-h") + || isOption(arg, "--help") + || isOption(arg, "-?")) + { + printHelp(); + exit(EXIT_SUCCESS); + } + else if (isOption(arg, "-!") + || isOption(arg, "--html")) + { + launchDefaultBrowser(); + exit(EXIT_SUCCESS); + } + else if (isParamOption(arg, "--html=")) + { + string htmlFilePath = getParam(arg, "--html="); + launchDefaultBrowser(htmlFilePath.c_str()); + exit(EXIT_SUCCESS); + } + else if (isOption(arg, "-V") + || isOption(arg, "--version")) + { + printf("Artistic Style Version %s\n", g_version); + exit(EXIT_SUCCESS); + } + else if (isParamOption(arg, "--stdin=")) + { + string path = getParam(arg, "--stdin="); + standardizePath(path); + setStdPathIn(path); + } + else if (isParamOption(arg, "--stdout=")) + { + string path = getParam(arg, "--stdout="); + standardizePath(path); + setStdPathOut(path); + } + else if (arg[0] == '-') + { + optionsVector.emplace_back(arg); + } + else // file-name + { + standardizePath(arg); + fileNameVector.emplace_back(arg); + } + } + + // get option file path and name + if (shouldParseOptionFile) + { + if (optionFileName.empty()) + { + char* env = getenv("ARTISTIC_STYLE_OPTIONS"); + if (env != nullptr) + { + setOptionFileName(env); + standardizePath(optionFileName); + optionFileName = getFullPathName(optionFileName); + } + } + // for Linux + if (optionFileName.empty()) + { + char* env = getenv("HOME"); + if (env != nullptr) + { + string name = string(env) + "/.astylerc"; + if (fileExists(name.c_str())) + setOptionFileName(name); + } + } + // for Windows + if (optionFileName.empty()) + { + char* env = getenv("APPDATA"); + if (env != nullptr) + { + string name = string(env) + "\\astylerc"; + if (fileExists(name.c_str())) + setOptionFileName(name); + } + } + // for Windows + // NOTE: depreciated with release 3.1, remove when appropriate + // there is NO test data for this option + if (optionFileName.empty()) + { + char* env = getenv("USERPROFILE"); + if (env != nullptr) + { + string name = string(env) + "\\astylerc"; + if (fileExists(name.c_str())) + setOptionFileName(name); + } + } + } + + // find project option file + if (projectOptionFileRequired) + { + string optfilepath = findProjectOptionFilePath(projectOptionFileName); + if (optfilepath.empty() || projectOptionArg.empty()) + error(_("Cannot open project option file"), projectOptionArg.c_str()); + standardizePath(optfilepath); + setProjectOptionFileName(optfilepath); + } + if (shouldParseProjectOptionFile) + { + char* env = getenv("ARTISTIC_STYLE_PROJECT_OPTIONS"); + if (env != nullptr) + { + string optfilepath = findProjectOptionFilePath(env); + standardizePath(optfilepath); + setProjectOptionFileName(optfilepath); + } + } + + ASOptions options(formatter, *this); + if (!optionFileName.empty()) + { + stringstream optionsIn; + if (!fileExists(optionFileName.c_str())) + error(_("Cannot open default option file"), optionFileName.c_str()); + FileEncoding encoding = readFile(optionFileName, optionsIn); + // bypass a BOM, all BOMs have been converted to utf-8 + if (encoding == UTF_8BOM || encoding == UTF_16LE || encoding == UTF_16BE) + { + char buf[4]; + optionsIn.get(buf, 4); + assert(strcmp(buf, "\xEF\xBB\xBF") == 0); + } + options.importOptions(optionsIn, fileOptionsVector); + ok = options.parseOptions(fileOptionsVector, + string(_("Invalid default options:"))); + } + else if (optionFileRequired) + error(_("Cannot open default option file"), optionFileName.c_str()); + + if (!ok) + { + (*errorStream) << options.getOptionErrors(); + (*errorStream) << _("For help on options type 'astyle -h'") << endl; + error(); + } + + if (!projectOptionFileName.empty()) + { + stringstream projectOptionsIn; + if (!fileExists(projectOptionFileName.c_str())) + error(_("Cannot open project option file"), projectOptionFileName.c_str()); + FileEncoding encoding = readFile(projectOptionFileName, projectOptionsIn); + // bypass a BOM, all BOMs have been converted to utf-8 + if (encoding == UTF_8BOM || encoding == UTF_16LE || encoding == UTF_16BE) + { + char buf[4]; + projectOptionsIn.get(buf, 4); + assert(strcmp(buf, "\xEF\xBB\xBF") == 0); + } + options.importOptions(projectOptionsIn, projectOptionsVector); + ok = options.parseOptions(projectOptionsVector, + string(_("Invalid project options:"))); + } + + if (!ok) + { + (*errorStream) << options.getOptionErrors(); + (*errorStream) << _("For help on options type 'astyle -h'") << endl; + error(); + } + + // parse the command line options vector for errors + ok = options.parseOptions(optionsVector, + string(_("Invalid command line options:"))); + if (!ok) + { + (*errorStream) << options.getOptionErrors(); + (*errorStream) << _("For help on options type 'astyle -h'") << endl; + error(); + } +} + +// remove a file and check for an error +void ASConsole::removeFile(const char* fileName_, const char* errMsg) const +{ + if (remove(fileName_) != 0) + { + if (errno == ENOENT) // no file is OK + errno = 0; + if (errno) + { + perror("errno message"); + error(errMsg, fileName_); + } + } +} + +// rename a file and check for an error +void ASConsole::renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const +{ + int result = rename(oldFileName, newFileName); + if (result != 0) + { + // if file still exists the remove needs more time - retry + if (errno == EEXIST) + { + errno = 0; + waitForRemove(newFileName); + result = rename(oldFileName, newFileName); + } + if (result != 0) + { + perror("errno message"); + error(errMsg, oldFileName); + } + } +} + +// make sure file separators are correct type (Windows or Linux) +// remove ending file separator +// remove beginning file separator if requested and NOT a complete file path +void ASConsole::standardizePath(string& path, bool removeBeginningSeparator /*false*/) const +{ +#ifdef __VMS + struct FAB fab; + struct NAML naml; + char less[NAML$C_MAXRSS]; + char sess[NAM$C_MAXRSS]; + int r0_status; + + // If we are on a VMS system, translate VMS style filenames to unix + // style. + fab = cc$rms_fab; + fab.fab$l_fna = (char*) -1; + fab.fab$b_fns = 0; + fab.fab$l_naml = &naml; + naml = cc$rms_naml; + strcpy(sess, path.c_str()); + naml.naml$l_long_filename = (char*) sess; + naml.naml$l_long_filename_size = path.length(); + naml.naml$l_long_expand = less; + naml.naml$l_long_expand_alloc = sizeof(less); + naml.naml$l_esa = sess; + naml.naml$b_ess = sizeof(sess); + naml.naml$v_no_short_upcase = 1; + r0_status = sys$parse(&fab); + if (r0_status == RMS$_SYN) + { + error("File syntax error", path.c_str()); + } + else + { + if (!$VMS_STATUS_SUCCESS(r0_status)) + { + (void) lib$signal(r0_status); + } + } + less[naml.naml$l_long_expand_size - naml.naml$b_ver] = '\0'; + sess[naml.naml$b_esl - naml.naml$b_ver] = '\0'; + if (naml.naml$l_long_expand_size > naml.naml$b_esl) + { + path = decc$translate_vms(less); + } + else + { + path = decc$translate_vms(sess); + } +#endif /* __VMS */ + + // make sure separators are correct type (Windows or Linux) + for (size_t i = 0; i < path.length(); i++) + { + i = path.find_first_of("/\\", i); + if (i == string::npos) + break; + path[i] = g_fileSeparator; + } + // remove beginning separator if requested + if (removeBeginningSeparator && (path[0] == g_fileSeparator)) + path.erase(0, 1); +} + +void ASConsole::printMsg(const char* msg, const string& data) const +{ + if (isQuiet) + return; + printf(msg, data.c_str()); +} + +void ASConsole::printSeparatingLine() const +{ + string line; + for (size_t i = 0; i < 60; i++) + line.append("-"); + printMsg("%s\n", line); +} + +void ASConsole::printVerboseHeader() const +{ + assert(isVerbose); + if (isQuiet) + return; + // get the date + time_t lt; + char str[20]; + lt = time(nullptr); + struct tm* ptr = localtime(<); + strftime(str, 20, "%x", ptr); + // print the header + // 60 is the length of the separator in printSeparatingLine() + string header = "Artistic Style " + string(g_version); + size_t numSpaces = 60 - header.length() - strlen(str); + header.append(numSpaces, ' '); + header.append(str); + header.append("\n"); + printf("%s", header.c_str()); + // print option files + if (!optionFileName.empty()) + printf(_("Default option file %s\n"), optionFileName.c_str()); + // NOTE: depreciated with release 3.1, remove when appropriate + if (!optionFileName.empty()) + { + char* env = getenv("USERPROFILE"); + if (env != nullptr && optionFileName == string(env) + "\\astylerc") + printf("The above option file has been DEPRECIATED\n"); + } + // end depreciated + if (!projectOptionFileName.empty()) + printf(_("Project option file %s\n"), projectOptionFileName.c_str()); +} + +void ASConsole::printVerboseStats(clock_t startTime) const +{ + assert(isVerbose); + if (isQuiet) + return; + if (hasWildcard) + printSeparatingLine(); + string formatted = getNumberFormat(filesFormatted); + string unchanged = getNumberFormat(filesUnchanged); + printf(_(" %s formatted %s unchanged "), formatted.c_str(), unchanged.c_str()); + + // show processing time + clock_t stopTime = clock(); + double secs = (stopTime - startTime) / double(CLOCKS_PER_SEC); + if (secs < 60) + { + if (secs < 2.0) + printf("%.2f", secs); + else if (secs < 20.0) + printf("%.1f", secs); + else + printf("%.0f", secs); + printf("%s", _(" seconds ")); + } + else + { + // show minutes and seconds if time is greater than one minute + int min = (int) secs / 60; + secs -= min * 60; + int minsec = int(secs + .5); + printf(_("%d min %d sec "), min, minsec); + } + + string lines = getNumberFormat(linesOut); + printf(_("%s lines\n"), lines.c_str()); + printf("\n"); +} + +void ASConsole::sleep(int seconds) const +{ + clock_t endwait; + endwait = clock_t(clock() + seconds * CLOCKS_PER_SEC); + while (clock() < endwait) {} +} + +bool ASConsole::stringEndsWith(const string& str, const string& suffix) const +{ + int strIndex = (int) str.length() - 1; + int suffixIndex = (int) suffix.length() - 1; + + while (strIndex >= 0 && suffixIndex >= 0) + { + if (tolower(str[strIndex]) != tolower(suffix[suffixIndex])) + return false; + + --strIndex; + --suffixIndex; + } + // suffix longer than string + if (strIndex < 0 && suffixIndex >= 0) + return false; + return true; +} + +void ASConsole::updateExcludeVector(const string& suffixParam) +{ + excludeVector.emplace_back(suffixParam); + standardizePath(excludeVector.back(), true); + excludeHitsVector.push_back(false); +} + +int ASConsole::waitForRemove(const char* newFileName) const +{ + struct stat stBuf; + int seconds; + // sleep a max of 20 seconds for the remove + for (seconds = 1; seconds <= 20; seconds++) + { + sleep(1); + if (stat(newFileName, &stBuf) != 0) + break; + } + errno = 0; + return seconds; +} + +// From The Code Project http://www.codeproject.com/string/wildcmp.asp +// Written by Jack Handy - jakkhandy@hotmail.com +// Modified to compare case insensitive for Windows +int ASConsole::wildcmp(const char* wild, const char* data) const +{ + const char* cp = nullptr, *mp = nullptr; + bool cmpval; + + while ((*data) && (*wild != '*')) + { + if (!g_isCaseSensitive) + cmpval = (tolower(*wild) != tolower(*data)) && (*wild != '?'); + else + cmpval = (*wild != *data) && (*wild != '?'); + + if (cmpval) + { + return 0; + } + wild++; + data++; + } + + while (*data) + { + if (*wild == '*') + { + if (!*++wild) + { + return 1; + } + mp = wild; + cp = data + 1; + } + else + { + if (!g_isCaseSensitive) + cmpval = (tolower(*wild) == tolower(*data) || (*wild == '?')); + else + cmpval = (*wild == *data) || (*wild == '?'); + + if (cmpval) + { + wild++; + data++; + } + else + { + wild = mp; + data = cp++; + } + } + } + + while (*wild == '*') + { + wild++; + } + return !*wild; +} + +void ASConsole::writeFile(const string& fileName_, FileEncoding encoding, ostringstream& out) const +{ + // save date accessed and date modified of original file + struct stat stBuf; + bool statErr = false; + if (stat(fileName_.c_str(), &stBuf) == -1) + statErr = true; + + // create a backup + if (!noBackup) + { + string origFileName = fileName_ + origSuffix; + removeFile(origFileName.c_str(), "Cannot remove pre-existing backup file"); + renameFile(fileName_.c_str(), origFileName.c_str(), "Cannot create backup file"); + } + + // write the output file + ofstream fout(fileName_.c_str(), ios::binary | ios::trunc); + if (!fout) + error("Cannot open output file", fileName_.c_str()); + if (encoding == UTF_16LE || encoding == UTF_16BE) + { + // convert utf-8 to utf-16 + bool isBigEndian = (encoding == UTF_16BE); + size_t utf16Size = encode.utf16LengthFromUtf8(out.str().c_str(), out.str().length()); + char* utf16Out = new char[utf16Size]; + size_t utf16Len = encode.utf8ToUtf16(const_cast(out.str().c_str()), + out.str().length(), isBigEndian, utf16Out); + assert(utf16Len <= utf16Size); + fout << string(utf16Out, utf16Len); + delete[] utf16Out; + } + else + fout << out.str(); + + fout.close(); + + // change date modified to original file date + // Embarcadero must be linked with cw32mt not cw32 + if (preserveDate) + { + if (!statErr) + { + struct utimbuf outBuf; + outBuf.actime = stBuf.st_atime; + // add ticks so 'make' will recognize a change + // Visual Studio 2008 needs more than 1 + outBuf.modtime = stBuf.st_mtime + 10; + if (utime(fileName_.c_str(), &outBuf) == -1) + statErr = true; + } + if (statErr) + { + perror("errno message"); + (*errorStream) << "********* Cannot preserve file date" << endl; + } + } +} + +#else // ASTYLE_LIB + +//----------------------------------------------------------------------------- +// ASLibrary class +// used by shared object (DLL) calls +//----------------------------------------------------------------------------- + +char16_t* ASLibrary::formatUtf16(const char16_t* pSourceIn, // the source to be formatted + const char16_t* pOptions, // AStyle options + fpError fpErrorHandler, // error handler function + fpAlloc fpMemoryAlloc) const // memory allocation function) +{ + const char* utf8In = convertUtf16ToUtf8(pSourceIn); + if (utf8In == nullptr) + { + fpErrorHandler(121, "Cannot convert input utf-16 to utf-8."); + return nullptr; + } + const char* utf8Options = convertUtf16ToUtf8(pOptions); + if (utf8Options == nullptr) + { + delete[] utf8In; + fpErrorHandler(122, "Cannot convert options utf-16 to utf-8."); + return nullptr; + } + // call the Artistic Style formatting function + // cannot use the callers memory allocation here + char* utf8Out = AStyleMain(utf8In, + utf8Options, + fpErrorHandler, + ASLibrary::tempMemoryAllocation); + // finished with these + delete[] utf8In; + delete[] utf8Options; + utf8In = nullptr; + utf8Options = nullptr; + // AStyle error has already been sent + if (utf8Out == nullptr) + return nullptr; + // convert text to wide char and return it + char16_t* utf16Out = convertUtf8ToUtf16(utf8Out, fpMemoryAlloc); + delete[] utf8Out; + utf8Out = nullptr; + if (utf16Out == nullptr) + { + fpErrorHandler(123, "Cannot convert output utf-8 to utf-16."); + return nullptr; + } + return utf16Out; +} + +// STATIC method to allocate temporary memory for AStyle formatting. +// The data will be converted before being returned to the calling program. +char* STDCALL ASLibrary::tempMemoryAllocation(unsigned long memoryNeeded) +{ + char* buffer = new (nothrow) char[memoryNeeded]; + return buffer; +} + +/** + * Convert utf-8 strings to utf16 strings. + * Memory is allocated by the calling program memory allocation function. + * The calling function must check for errors. + */ +char16_t* ASLibrary::convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const +{ + if (utf8In == nullptr) + return nullptr; + char* data = const_cast(utf8In); + size_t dataSize = strlen(utf8In); + bool isBigEndian = encode.getBigEndian(); + // return size is in number of CHARs, not char16_t + size_t utf16Size = (encode.utf16LengthFromUtf8(data, dataSize) + sizeof(char16_t)); + char* utf16Out = fpMemoryAlloc((long) utf16Size); + if (utf16Out == nullptr) + return nullptr; +#ifdef NDEBUG + encode.utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out); +#else + size_t utf16Len = encode.utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out); + assert(utf16Len == utf16Size); +#endif + assert(utf16Size == (encode.utf16len(reinterpret_cast(utf16Out)) + 1) * sizeof(char16_t)); + return reinterpret_cast(utf16Out); +} + +/** + * Convert utf16 strings to utf-8. + * The calling function must check for errors and delete the + * allocated memory. + */ +char* ASLibrary::convertUtf16ToUtf8(const char16_t* utf16In) const +{ + if (utf16In == nullptr) + return nullptr; + char* data = reinterpret_cast(const_cast(utf16In)); + // size must be in chars + size_t dataSize = encode.utf16len(utf16In) * sizeof(char16_t); + bool isBigEndian = encode.getBigEndian(); + size_t utf8Size = encode.utf8LengthFromUtf16(data, dataSize, isBigEndian) + 1; + char* utf8Out = new (nothrow) char[utf8Size]; + if (utf8Out == nullptr) + return nullptr; +#ifdef NDEBUG + encode.utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out); +#else + size_t utf8Len = encode.utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out); + assert(utf8Len == utf8Size); +#endif + assert(utf8Size == strlen(utf8Out) + 1); + return utf8Out; +} + +#endif // ASTYLE_LIB + +//----------------------------------------------------------------------------- +// ASOptions class +// used by both console and library builds +//----------------------------------------------------------------------------- + +#ifdef ASTYLE_LIB +ASOptions::ASOptions(ASFormatter& formatterArg) + : formatter(formatterArg) +{ } +#else +ASOptions::ASOptions(ASFormatter& formatterArg, ASConsole& consoleArg) + : formatter(formatterArg), console(consoleArg) +{ } +#endif + +/** + * parse the options vector + * optionsVector can be either a fileOptionsVector (option file), + * a projectOptionsVector (project option file), + * or an optionsVector (command line) + * + * @return true if no errors, false if errors + */ +bool ASOptions::parseOptions(vector& optionsVector, const string& errorInfo) +{ + vector::iterator option; + string arg, subArg; + optionErrors.clear(); + + for (option = optionsVector.begin(); option != optionsVector.end(); ++option) + { + arg = *option; + + if (arg.compare(0, 2, "--") == 0) + parseOption(arg.substr(2), errorInfo); + else if (arg[0] == '-') + { + size_t i; + + for (i = 1; i < arg.length(); ++i) + { + if (i > 1 + && isalpha((unsigned char) arg[i]) + && arg[i - 1] != 'x') + { + // parse the previous option in subArg + parseOption(subArg, errorInfo); + subArg = ""; + } + // append the current option to subArg + subArg.append(1, arg[i]); + } + // parse the last option + parseOption(subArg, errorInfo); + subArg = ""; + } + else + { + parseOption(arg, errorInfo); + subArg = ""; + } + } + if (optionErrors.str().length() > 0) + return false; + return true; +} + +void ASOptions::parseOption(const string& arg, const string& errorInfo) +{ + if (isOption(arg, "A1", "style=allman") || isOption(arg, "style=bsd") || isOption(arg, "style=break")) + { + formatter.setFormattingStyle(STYLE_ALLMAN); + } + else if (isOption(arg, "A2", "style=java") || isOption(arg, "style=attach")) + { + formatter.setFormattingStyle(STYLE_JAVA); + } + else if (isOption(arg, "A3", "style=k&r") || isOption(arg, "style=kr") || isOption(arg, "style=k/r")) + { + formatter.setFormattingStyle(STYLE_KR); + } + else if (isOption(arg, "A4", "style=stroustrup")) + { + formatter.setFormattingStyle(STYLE_STROUSTRUP); + } + else if (isOption(arg, "A5", "style=whitesmith")) + { + formatter.setFormattingStyle(STYLE_WHITESMITH); + } + else if (isOption(arg, "A15", "style=vtk")) + { + formatter.setFormattingStyle(STYLE_VTK); + } + else if (isOption(arg, "A6", "style=ratliff") || isOption(arg, "style=banner")) + { + formatter.setFormattingStyle(STYLE_RATLIFF); + } + else if (isOption(arg, "A7", "style=gnu")) + { + formatter.setFormattingStyle(STYLE_GNU); + } + else if (isOption(arg, "A8", "style=linux") || isOption(arg, "style=knf")) + { + formatter.setFormattingStyle(STYLE_LINUX); + } + else if (isOption(arg, "A9", "style=horstmann") || isOption(arg, "style=run-in")) + { + formatter.setFormattingStyle(STYLE_HORSTMANN); + } + else if (isOption(arg, "A10", "style=1tbs") || isOption(arg, "style=otbs")) + { + formatter.setFormattingStyle(STYLE_1TBS); + } + else if (isOption(arg, "A14", "style=google")) + { + formatter.setFormattingStyle(STYLE_GOOGLE); + } + else if (isOption(arg, "A16", "style=mozilla")) + { + formatter.setFormattingStyle(STYLE_MOZILLA); + } + else if (isOption(arg, "A11", "style=pico")) + { + formatter.setFormattingStyle(STYLE_PICO); + } + else if (isOption(arg, "A12", "style=lisp") || isOption(arg, "style=python")) + { + formatter.setFormattingStyle(STYLE_LISP); + } + // must check for mode=cs before mode=c !!! + else if (isOption(arg, "mode=cs")) + { + formatter.setSharpStyle(); + formatter.setModeManuallySet(true); + } + else if (isOption(arg, "mode=c")) + { + formatter.setCStyle(); + formatter.setModeManuallySet(true); + } + else if (isOption(arg, "mode=java")) + { + formatter.setJavaStyle(); + formatter.setModeManuallySet(true); + } + else if (isParamOption(arg, "t", "indent=tab=")) + { + int spaceNum = 4; + string spaceNumParam = getParam(arg, "t", "indent=tab="); + if (spaceNumParam.length() > 0) + spaceNum = atoi(spaceNumParam.c_str()); + if (spaceNum < 2 || spaceNum > 20) + isOptionError(arg, errorInfo); + else + { + formatter.setTabIndentation(spaceNum, false); + } + } + else if (isOption(arg, "indent=tab")) + { + formatter.setTabIndentation(4); + } + else if (isParamOption(arg, "T", "indent=force-tab=")) + { + int spaceNum = 4; + string spaceNumParam = getParam(arg, "T", "indent=force-tab="); + if (spaceNumParam.length() > 0) + spaceNum = atoi(spaceNumParam.c_str()); + if (spaceNum < 2 || spaceNum > 20) + isOptionError(arg, errorInfo); + else + { + formatter.setTabIndentation(spaceNum, true); + } + } + else if (isOption(arg, "indent=force-tab")) + { + formatter.setTabIndentation(4, true); + } + else if (isParamOption(arg, "xT", "indent=force-tab-x=")) + { + int tabNum = 8; + string tabNumParam = getParam(arg, "xT", "indent=force-tab-x="); + if (tabNumParam.length() > 0) + tabNum = atoi(tabNumParam.c_str()); + if (tabNum < 2 || tabNum > 20) + isOptionError(arg, errorInfo); + else + { + formatter.setForceTabXIndentation(tabNum); + } + } + else if (isOption(arg, "indent=force-tab-x")) + { + formatter.setForceTabXIndentation(8); + } + else if (isParamOption(arg, "s", "indent=spaces=")) + { + int spaceNum = 4; + string spaceNumParam = getParam(arg, "s", "indent=spaces="); + if (spaceNumParam.length() > 0) + spaceNum = atoi(spaceNumParam.c_str()); + if (spaceNum < 2 || spaceNum > 20) + isOptionError(arg, errorInfo); + else + { + formatter.setSpaceIndentation(spaceNum); + } + } + else if (isOption(arg, "indent=spaces")) + { + formatter.setSpaceIndentation(4); + } + else if (isParamOption(arg, "xt", "indent-continuation=")) + { + int contIndent = 1; + string contIndentParam = getParam(arg, "xt", "indent-continuation="); + if (contIndentParam.length() > 0) + contIndent = atoi(contIndentParam.c_str()); + if (contIndent < 0) + isOptionError(arg, errorInfo); + else if (contIndent > 4) + isOptionError(arg, errorInfo); + else + formatter.setContinuationIndentation(contIndent); + } + else if (isParamOption(arg, "m", "min-conditional-indent=")) + { + int minIndent = MINCOND_TWO; + string minIndentParam = getParam(arg, "m", "min-conditional-indent="); + if (minIndentParam.length() > 0) + minIndent = atoi(minIndentParam.c_str()); + if (minIndent >= MINCOND_END) + isOptionError(arg, errorInfo); + else + formatter.setMinConditionalIndentOption(minIndent); + } + else if (isParamOption(arg, "M", "max-continuation-indent=")) + { + int maxIndent = 40; + string maxIndentParam = getParam(arg, "M", "max-continuation-indent="); + if (maxIndentParam.length() > 0) + maxIndent = atoi(maxIndentParam.c_str()); + if (maxIndent < 40) + isOptionError(arg, errorInfo); + else if (maxIndent > 120) + isOptionError(arg, errorInfo); + else + formatter.setMaxContinuationIndentLength(maxIndent); + } + else if (isOption(arg, "N", "indent-namespaces")) + { + formatter.setNamespaceIndent(true); + } + else if (isOption(arg, "C", "indent-classes")) + { + formatter.setClassIndent(true); + } + else if (isOption(arg, "xG", "indent-modifiers")) + { + formatter.setModifierIndent(true); + } + else if (isOption(arg, "S", "indent-switches")) + { + formatter.setSwitchIndent(true); + } + else if (isOption(arg, "K", "indent-cases")) + { + formatter.setCaseIndent(true); + } + else if (isOption(arg, "xU", "indent-after-parens")) + { + formatter.setAfterParenIndent(true); + } + else if (isOption(arg, "L", "indent-labels")) + { + formatter.setLabelIndent(true); + } + else if (isOption(arg, "xW", "indent-preproc-block")) + { + formatter.setPreprocBlockIndent(true); + } + else if (isOption(arg, "w", "indent-preproc-define")) + { + formatter.setPreprocDefineIndent(true); + } + else if (isOption(arg, "xw", "indent-preproc-cond")) + { + formatter.setPreprocConditionalIndent(true); + } + else if (isOption(arg, "y", "break-closing-braces")) + { + formatter.setBreakClosingHeaderBracesMode(true); + } + else if (isOption(arg, "O", "keep-one-line-blocks")) + { + formatter.setBreakOneLineBlocksMode(false); + } + else if (isOption(arg, "o", "keep-one-line-statements")) + { + formatter.setBreakOneLineStatementsMode(false); + } + else if (isOption(arg, "P", "pad-paren")) + { + formatter.setParensOutsidePaddingMode(true); + formatter.setParensInsidePaddingMode(true); + } + else if (isOption(arg, "d", "pad-paren-out")) + { + formatter.setParensOutsidePaddingMode(true); + } + else if (isOption(arg, "xd", "pad-first-paren-out")) + { + formatter.setParensFirstPaddingMode(true); + } + else if (isOption(arg, "D", "pad-paren-in")) + { + formatter.setParensInsidePaddingMode(true); + } + else if (isOption(arg, "H", "pad-header")) + { + formatter.setParensHeaderPaddingMode(true); + } + else if (isOption(arg, "U", "unpad-paren")) + { + formatter.setParensUnPaddingMode(true); + } + else if (isOption(arg, "p", "pad-oper")) + { + formatter.setOperatorPaddingMode(true); + } + else if (isOption(arg, "xg", "pad-comma")) + { + formatter.setCommaPaddingMode(true); + } + else if (isOption(arg, "xe", "delete-empty-lines")) + { + formatter.setDeleteEmptyLinesMode(true); + } + else if (isOption(arg, "E", "fill-empty-lines")) + { + formatter.setEmptyLineFill(true); + } + else if (isOption(arg, "c", "convert-tabs")) + { + formatter.setTabSpaceConversionMode(true); + } + else if (isOption(arg, "xy", "close-templates")) + { + formatter.setCloseTemplatesMode(true); + } + else if (isOption(arg, "F", "break-blocks=all")) + { + formatter.setBreakBlocksMode(true); + formatter.setBreakClosingHeaderBlocksMode(true); + } + else if (isOption(arg, "f", "break-blocks")) + { + formatter.setBreakBlocksMode(true); + } + else if (isOption(arg, "e", "break-elseifs")) + { + formatter.setBreakElseIfsMode(true); + } + else if (isOption(arg, "xb", "break-one-line-headers")) + { + formatter.setBreakOneLineHeadersMode(true); + } + else if (isOption(arg, "j", "add-braces")) + { + formatter.setAddBracesMode(true); + } + else if (isOption(arg, "J", "add-one-line-braces")) + { + formatter.setAddOneLineBracesMode(true); + } + else if (isOption(arg, "xj", "remove-braces")) + { + formatter.setRemoveBracesMode(true); + } + else if (isOption(arg, "Y", "indent-col1-comments")) + { + formatter.setIndentCol1CommentsMode(true); + } + else if (isOption(arg, "align-pointer=type")) + { + formatter.setPointerAlignment(PTR_ALIGN_TYPE); + } + else if (isOption(arg, "align-pointer=middle")) + { + formatter.setPointerAlignment(PTR_ALIGN_MIDDLE); + } + else if (isOption(arg, "align-pointer=name")) + { + formatter.setPointerAlignment(PTR_ALIGN_NAME); + } + else if (isParamOption(arg, "k")) + { + int align = 0; + string styleParam = getParam(arg, "k"); + if (styleParam.length() > 0) + align = atoi(styleParam.c_str()); + if (align < 1 || align > 3) + isOptionError(arg, errorInfo); + else if (align == 1) + formatter.setPointerAlignment(PTR_ALIGN_TYPE); + else if (align == 2) + formatter.setPointerAlignment(PTR_ALIGN_MIDDLE); + else if (align == 3) + formatter.setPointerAlignment(PTR_ALIGN_NAME); + } + else if (isOption(arg, "align-reference=none")) + { + formatter.setReferenceAlignment(REF_ALIGN_NONE); + } + else if (isOption(arg, "align-reference=type")) + { + formatter.setReferenceAlignment(REF_ALIGN_TYPE); + } + else if (isOption(arg, "align-reference=middle")) + { + formatter.setReferenceAlignment(REF_ALIGN_MIDDLE); + } + else if (isOption(arg, "align-reference=name")) + { + formatter.setReferenceAlignment(REF_ALIGN_NAME); + } + else if (isParamOption(arg, "W")) + { + int align = 0; + string styleParam = getParam(arg, "W"); + if (styleParam.length() > 0) + align = atoi(styleParam.c_str()); + if (align < 0 || align > 3) + isOptionError(arg, errorInfo); + else if (align == 0) + formatter.setReferenceAlignment(REF_ALIGN_NONE); + else if (align == 1) + formatter.setReferenceAlignment(REF_ALIGN_TYPE); + else if (align == 2) + formatter.setReferenceAlignment(REF_ALIGN_MIDDLE); + else if (align == 3) + formatter.setReferenceAlignment(REF_ALIGN_NAME); + } + else if (isParamOption(arg, "max-code-length=")) + { + int maxLength = 50; + string maxLengthParam = getParam(arg, "max-code-length="); + if (maxLengthParam.length() > 0) + maxLength = atoi(maxLengthParam.c_str()); + if (maxLength < 50) + isOptionError(arg, errorInfo); + else if (maxLength > 200) + isOptionError(arg, errorInfo); + else + formatter.setMaxCodeLength(maxLength); + } + else if (isParamOption(arg, "xC")) + { + int maxLength = 50; + string maxLengthParam = getParam(arg, "xC"); + if (maxLengthParam.length() > 0) + maxLength = atoi(maxLengthParam.c_str()); + if (maxLength > 200) + isOptionError(arg, errorInfo); + else + formatter.setMaxCodeLength(maxLength); + } + else if (isOption(arg, "xL", "break-after-logical")) + { + formatter.setBreakAfterMode(true); + } + else if (isOption(arg, "xc", "attach-classes")) + { + formatter.setAttachClass(true); + } + else if (isOption(arg, "xV", "attach-closing-while")) + { + formatter.setAttachClosingWhile(true); + } + else if (isOption(arg, "xk", "attach-extern-c")) + { + formatter.setAttachExternC(true); + } + else if (isOption(arg, "xn", "attach-namespaces")) + { + formatter.setAttachNamespace(true); + } + else if (isOption(arg, "xl", "attach-inlines")) + { + formatter.setAttachInline(true); + } + else if (isOption(arg, "xp", "remove-comment-prefix")) + { + formatter.setStripCommentPrefix(true); + } + else if (isOption(arg, "xB", "break-return-type")) + { + formatter.setBreakReturnType(true); + } + else if (isOption(arg, "xD", "break-return-type-decl")) + { + formatter.setBreakReturnTypeDecl(true); + } + else if (isOption(arg, "xf", "attach-return-type")) + { + formatter.setAttachReturnType(true); + } + else if (isOption(arg, "xh", "attach-return-type-decl")) + { + formatter.setAttachReturnTypeDecl(true); + } + // Objective-C options + else if (isOption(arg, "xQ", "pad-method-prefix")) + { + formatter.setMethodPrefixPaddingMode(true); + } + else if (isOption(arg, "xR", "unpad-method-prefix")) + { + formatter.setMethodPrefixUnPaddingMode(true); + } + else if (isOption(arg, "xq", "pad-return-type")) + { + formatter.setReturnTypePaddingMode(true); + } + else if (isOption(arg, "xr", "unpad-return-type")) + { + formatter.setReturnTypeUnPaddingMode(true); + } + else if (isOption(arg, "xS", "pad-param-type")) + { + formatter.setParamTypePaddingMode(true); + } + else if (isOption(arg, "xs", "unpad-param-type")) + { + formatter.setParamTypeUnPaddingMode(true); + } + else if (isOption(arg, "xM", "align-method-colon")) + { + formatter.setAlignMethodColon(true); + } + else if (isOption(arg, "xP0", "pad-method-colon=none")) + { + formatter.setObjCColonPaddingMode(COLON_PAD_NONE); + } + else if (isOption(arg, "xP1", "pad-method-colon=all")) + { + formatter.setObjCColonPaddingMode(COLON_PAD_ALL); + } + else if (isOption(arg, "xP2", "pad-method-colon=after")) + { + formatter.setObjCColonPaddingMode(COLON_PAD_AFTER); + } + else if (isOption(arg, "xP3", "pad-method-colon=before")) + { + formatter.setObjCColonPaddingMode(COLON_PAD_BEFORE); + } + // NOTE: depreciated options - remove when appropriate + // depreciated options //////////////////////////////////////////////////////////////////////// + else if (isOption(arg, "indent-preprocessor")) // depreciated release 2.04 + { + formatter.setPreprocDefineIndent(true); + } + else if (isOption(arg, "style=ansi")) // depreciated release 2.05 + { + formatter.setFormattingStyle(STYLE_ALLMAN); + } + // depreciated in release 3.0 ///////////////////////////////////////////////////////////////// + else if (isOption(arg, "break-closing-brackets")) // depreciated release 3.0 + { + formatter.setBreakClosingHeaderBracketsMode(true); + } + else if (isOption(arg, "add-brackets")) // depreciated release 3.0 + { + formatter.setAddBracketsMode(true); + } + else if (isOption(arg, "add-one-line-brackets")) // depreciated release 3.0 + { + formatter.setAddOneLineBracketsMode(true); + } + else if (isOption(arg, "remove-brackets")) // depreciated release 3.0 + { + formatter.setRemoveBracketsMode(true); + } + else if (isParamOption(arg, "max-instatement-indent=")) // depreciated release 3.0 + { + int maxIndent = 40; + string maxIndentParam = getParam(arg, "max-instatement-indent="); + if (maxIndentParam.length() > 0) + maxIndent = atoi(maxIndentParam.c_str()); + if (maxIndent < 40) + isOptionError(arg, errorInfo); + else if (maxIndent > 120) + isOptionError(arg, errorInfo); + else + formatter.setMaxInStatementIndentLength(maxIndent); + } + // end depreciated options //////////////////////////////////////////////////////////////////// +#ifdef ASTYLE_LIB + // End of options used by GUI ///////////////////////////////////////////////////////////////// + else + isOptionError(arg, errorInfo); +#else + // Options used by only console /////////////////////////////////////////////////////////////// + else if (isOption(arg, "n", "suffix=none")) + { + console.setNoBackup(true); + } + else if (isParamOption(arg, "suffix=")) + { + string suffixParam = getParam(arg, "suffix="); + if (suffixParam.length() > 0) + { + console.setOrigSuffix(suffixParam); + } + } + else if (isParamOption(arg, "exclude=")) + { + string suffixParam = getParam(arg, "exclude="); + if (suffixParam.length() > 0) + console.updateExcludeVector(suffixParam); + } + else if (isOption(arg, "r", "R") || isOption(arg, "recursive")) + { + console.setIsRecursive(true); + } + else if (isOption(arg, "dry-run")) + { + console.setIsDryRun(true); + } + else if (isOption(arg, "Z", "preserve-date")) + { + console.setPreserveDate(true); + } + else if (isOption(arg, "v", "verbose")) + { + console.setIsVerbose(true); + } + else if (isOption(arg, "Q", "formatted")) + { + console.setIsFormattedOnly(true); + } + else if (isOption(arg, "q", "quiet")) + { + console.setIsQuiet(true); + } + else if (isOption(arg, "i", "ignore-exclude-errors")) + { + console.setIgnoreExcludeErrors(true); + } + else if (isOption(arg, "xi", "ignore-exclude-errors-x")) + { + console.setIgnoreExcludeErrorsAndDisplay(true); + } + else if (isOption(arg, "X", "errors-to-stdout")) + { + console.setErrorStream(&cout); + } + else if (isOption(arg, "lineend=windows")) + { + formatter.setLineEndFormat(LINEEND_WINDOWS); + } + else if (isOption(arg, "lineend=linux")) + { + formatter.setLineEndFormat(LINEEND_LINUX); + } + else if (isOption(arg, "lineend=macold")) + { + formatter.setLineEndFormat(LINEEND_MACOLD); + } + else if (isParamOption(arg, "z")) + { + int lineendType = 0; + string lineendParam = getParam(arg, "z"); + if (lineendParam.length() > 0) + lineendType = atoi(lineendParam.c_str()); + if (lineendType < 1 || lineendType > 3) + isOptionError(arg, errorInfo); + else if (lineendType == 1) + formatter.setLineEndFormat(LINEEND_WINDOWS); + else if (lineendType == 2) + formatter.setLineEndFormat(LINEEND_LINUX); + else if (lineendType == 3) + formatter.setLineEndFormat(LINEEND_MACOLD); + } + else + isOptionError(arg, errorInfo); +#endif +} // End of parseOption function + +// Parse options from the option file. +void ASOptions::importOptions(stringstream& in, vector& optionsVector) +{ + char ch; + bool isInQuote = false; + char quoteChar = ' '; + string currentToken; + + while (in) + { + currentToken = ""; + do + { + in.get(ch); + if (in.eof()) + break; + // treat '#' as line comments + if (ch == '#') + while (in) + { + in.get(ch); + if (ch == '\n' || ch == '\r') + break; + } + + // break options on new-lines, tabs, commas, or spaces + // remove quotes from output + if (in.eof() || ch == '\n' || ch == '\r' || ch == '\t' || ch == ',') + break; + if (ch == ' ' && !isInQuote) + break; + if (ch == quoteChar && isInQuote) + break; + if (ch == '"' || ch == '\'') + { + isInQuote = true; + quoteChar = ch; + continue; + } + currentToken.append(1, ch); + } + while (in); + + if (currentToken.length() != 0) + optionsVector.emplace_back(currentToken); + isInQuote = false; + } +} + +string ASOptions::getOptionErrors() const +{ + return optionErrors.str(); +} + +string ASOptions::getParam(const string& arg, const char* op) +{ + return arg.substr(strlen(op)); +} + +string ASOptions::getParam(const string& arg, const char* op1, const char* op2) +{ + return isParamOption(arg, op1) ? getParam(arg, op1) : getParam(arg, op2); +} + +bool ASOptions::isOption(const string& arg, const char* op) +{ + return arg.compare(op) == 0; +} + +bool ASOptions::isOption(const string& arg, const char* op1, const char* op2) +{ + return (isOption(arg, op1) || isOption(arg, op2)); +} + +void ASOptions::isOptionError(const string& arg, const string& errorInfo) +{ + if (optionErrors.str().length() == 0) + optionErrors << errorInfo << endl; // need main error message + optionErrors << "\t" << arg << endl; +} + +bool ASOptions::isParamOption(const string& arg, const char* option) +{ + bool retVal = arg.compare(0, strlen(option), option) == 0; + // if comparing for short option, 2nd char of arg must be numeric + if (retVal && strlen(option) == 1 && arg.length() > 1) + if (!isdigit((unsigned char) arg[1])) + retVal = false; + return retVal; +} + +bool ASOptions::isParamOption(const string& arg, const char* option1, const char* option2) +{ + return isParamOption(arg, option1) || isParamOption(arg, option2); +} + +//---------------------------------------------------------------------------- +// ASEncoding class +//---------------------------------------------------------------------------- + +// Return true if an int is big endian. +bool ASEncoding::getBigEndian() const +{ + char16_t word = 0x0001; + char* byte = (char*) &word; + return (byte[0] ? false : true); +} + +// Swap the two low order bytes of a 16 bit integer value. +int ASEncoding::swap16bit(int value) const +{ + return (((value & 0xff) << 8) | ((value & 0xff00) >> 8)); +} + +// Return the length of a utf-16 C string. +// The length is in number of char16_t. +size_t ASEncoding::utf16len(const utf16* utf16In) const +{ + size_t length = 0; + while (*utf16In++ != '\0') + length++; + return length; +} + +// Adapted from SciTE UniConversion.cxx. +// Copyright 1998-2001 by Neil Hodgson +// Modified for Artistic Style by Jim Pattee. +// Compute the length of an output utf-8 file given a utf-16 file. +// Input inLen is the size in BYTES (not wchar_t). +size_t ASEncoding::utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const +{ + size_t len = 0; + size_t wcharLen = (inLen / 2) + (inLen % 2); + const char16_t* uptr = reinterpret_cast(utf16In); + for (size_t i = 0; i < wcharLen;) + { + size_t uch = isBigEndian ? swap16bit(uptr[i]) : uptr[i]; + if (uch < 0x80) + len++; + else if (uch < 0x800) + len += 2; + else if ((uch >= SURROGATE_LEAD_FIRST) && (uch <= SURROGATE_LEAD_LAST)) + { + len += 4; + i++; + } + else + len += 3; + i++; + } + return len; +} + +// Adapted from SciTE Utf8_16.cxx. +// Copyright (C) 2002 Scott Kirkwood. +// Modified for Artistic Style by Jim Pattee. +// Convert a utf-8 file to utf-16. +size_t ASEncoding::utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const +{ + int nCur = 0; + ubyte* pRead = reinterpret_cast(utf8In); + utf16* pCur = reinterpret_cast(utf16Out); + const ubyte* pEnd = pRead + inLen; + const utf16* pCurStart = pCur; + eState state = eStart; + + // the BOM will automatically be converted to utf-16 + while (pRead < pEnd) + { + switch (state) + { + case eStart: + if ((0xF0 & *pRead) == 0xF0) + { + nCur = (0x7 & *pRead) << 18; + state = eSecondOf4Bytes; + } + else if ((0xE0 & *pRead) == 0xE0) + { + nCur = (~0xE0 & *pRead) << 12; + state = ePenultimate; + } + else if ((0xC0 & *pRead) == 0xC0) + { + nCur = (~0xC0 & *pRead) << 6; + state = eFinal; + } + else + { + nCur = *pRead; + state = eStart; + } + break; + case eSecondOf4Bytes: + nCur |= (0x3F & *pRead) << 12; + state = ePenultimate; + break; + case ePenultimate: + nCur |= (0x3F & *pRead) << 6; + state = eFinal; + break; + case eFinal: + nCur |= (0x3F & *pRead); + state = eStart; + break; + // no default case is needed + } + ++pRead; + + if (state == eStart) + { + int codePoint = nCur; + if (codePoint >= SURROGATE_FIRST_VALUE) + { + codePoint -= SURROGATE_FIRST_VALUE; + int lead = (codePoint >> 10) + SURROGATE_LEAD_FIRST; + *pCur++ = static_cast(isBigEndian ? swap16bit(lead) : lead); + int trail = (codePoint & 0x3ff) + SURROGATE_TRAIL_FIRST; + *pCur++ = static_cast(isBigEndian ? swap16bit(trail) : trail); + } + else + *pCur++ = static_cast(isBigEndian ? swap16bit(codePoint) : codePoint); + } + } + // return value is the output length in BYTES (not wchar_t) + return (pCur - pCurStart) * 2; +} + +// Adapted from SciTE UniConversion.cxx. +// Copyright 1998-2001 by Neil Hodgson +// Modified for Artistic Style by Jim Pattee. +// Compute the length of an output utf-16 file given a utf-8 file. +// Return value is the size in BYTES (not wchar_t). +size_t ASEncoding::utf16LengthFromUtf8(const char* utf8In, size_t len) const +{ + size_t ulen = 0; + size_t charLen; + for (size_t i = 0; i < len;) + { + unsigned char ch = static_cast(utf8In[i]); + if (ch < 0x80) + charLen = 1; + else if (ch < 0x80 + 0x40 + 0x20) + charLen = 2; + else if (ch < 0x80 + 0x40 + 0x20 + 0x10) + charLen = 3; + else + { + charLen = 4; + ulen++; + } + i += charLen; + ulen++; + } + // return value is the length in bytes (not wchar_t) + return ulen * 2; +} + +// Adapted from SciTE Utf8_16.cxx. +// Copyright (C) 2002 Scott Kirkwood. +// Modified for Artistic Style by Jim Pattee. +// Convert a utf-16 file to utf-8. +size_t ASEncoding::utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian, + bool firstBlock, char* utf8Out) const +{ + int nCur16 = 0; + int nCur = 0; + ubyte* pRead = reinterpret_cast(utf16In); + ubyte* pCur = reinterpret_cast(utf8Out); + const ubyte* pEnd = pRead + inLen; + const ubyte* pCurStart = pCur; + static eState state = eStart; // state is retained for subsequent blocks + if (firstBlock) + state = eStart; + + // the BOM will automatically be converted to utf-8 + while (pRead < pEnd) + { + switch (state) + { + case eStart: + if (pRead >= pEnd) + { + ++pRead; + break; + } + if (isBigEndian) + { + nCur16 = static_cast(*pRead++ << 8); + nCur16 |= static_cast(*pRead); + } + else + { + nCur16 = *pRead++; + nCur16 |= static_cast(*pRead << 8); + } + if (nCur16 >= SURROGATE_LEAD_FIRST && nCur16 <= SURROGATE_LEAD_LAST) + { + ++pRead; + int trail; + if (isBigEndian) + { + trail = static_cast(*pRead++ << 8); + trail |= static_cast(*pRead); + } + else + { + trail = *pRead++; + trail |= static_cast(*pRead << 8); + } + nCur16 = (((nCur16 & 0x3ff) << 10) | (trail & 0x3ff)) + SURROGATE_FIRST_VALUE; + } + ++pRead; + + if (nCur16 < 0x80) + { + nCur = static_cast(nCur16 & 0xFF); + state = eStart; + } + else if (nCur16 < 0x800) + { + nCur = static_cast(0xC0 | (nCur16 >> 6)); + state = eFinal; + } + else if (nCur16 < SURROGATE_FIRST_VALUE) + { + nCur = static_cast(0xE0 | (nCur16 >> 12)); + state = ePenultimate; + } + else + { + nCur = static_cast(0xF0 | (nCur16 >> 18)); + state = eSecondOf4Bytes; + } + break; + case eSecondOf4Bytes: + nCur = static_cast(0x80 | ((nCur16 >> 12) & 0x3F)); + state = ePenultimate; + break; + case ePenultimate: + nCur = static_cast(0x80 | ((nCur16 >> 6) & 0x3F)); + state = eFinal; + break; + case eFinal: + nCur = static_cast(0x80 | (nCur16 & 0x3F)); + state = eStart; + break; + // no default case is needed + } + *pCur++ = static_cast(nCur); + } + return pCur - pCurStart; +} + +//---------------------------------------------------------------------------- + +} // namespace astyle + +//---------------------------------------------------------------------------- + +using namespace astyle; + +//---------------------------------------------------------------------------- +// ASTYLE_JNI functions for Java library builds +//---------------------------------------------------------------------------- + +#ifdef ASTYLE_JNI + +// called by a java program to get the version number +// the function name is constructed from method names in the calling java program +extern "C" EXPORT +jstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass) +{ + return env->NewStringUTF(g_version); +} + +// called by a java program to format the source code +// the function name is constructed from method names in the calling java program +extern "C" EXPORT +jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env, + jobject obj, + jstring textInJava, + jstring optionsJava) +{ + g_env = env; // make object available globally + g_obj = obj; // make object available globally + + jstring textErr = env->NewStringUTF(""); // zero length text returned if an error occurs + + // get the method ID + jclass cls = env->GetObjectClass(obj); + g_mid = env->GetMethodID(cls, "ErrorHandler", "(ILjava/lang/String;)V"); + if (g_mid == nullptr) + { + cout << "Cannot find java method ErrorHandler" << endl; + return textErr; + } + + // convert jstring to char* + const char* textIn = env->GetStringUTFChars(textInJava, nullptr); + const char* options = env->GetStringUTFChars(optionsJava, nullptr); + + // call the C++ formatting function + char* textOut = AStyleMain(textIn, options, javaErrorHandler, javaMemoryAlloc); + // if an error message occurred it was displayed by errorHandler + if (textOut == nullptr) + return textErr; + + // release memory + jstring textOutJava = env->NewStringUTF(textOut); + delete[] textOut; + env->ReleaseStringUTFChars(textInJava, textIn); + env->ReleaseStringUTFChars(optionsJava, options); + + return textOutJava; +} + +// Call the Java error handler +void STDCALL javaErrorHandler(int errorNumber, const char* errorMessage) +{ + jstring errorMessageJava = g_env->NewStringUTF(errorMessage); + g_env->CallVoidMethod(g_obj, g_mid, errorNumber, errorMessageJava); +} + +// Allocate memory for the formatted text +char* STDCALL javaMemoryAlloc(unsigned long memoryNeeded) +{ + // error condition is checked after return from AStyleMain + char* buffer = new (nothrow) char[memoryNeeded]; + return buffer; +} + +#endif // ASTYLE_JNI + +//---------------------------------------------------------------------------- +// ASTYLE_LIB functions for library builds +//---------------------------------------------------------------------------- + +#ifdef ASTYLE_LIB + +//---------------------------------------------------------------------------- +// ASTYLE_LIB entry point for AStyleMainUtf16 library builds +//---------------------------------------------------------------------------- +/* +* IMPORTANT Visual C DLL linker for WIN32 must have the additional options: +* /EXPORT:AStyleMain=_AStyleMain@16 +* /EXPORT:AStyleMainUtf16=_AStyleMainUtf16@16 +* /EXPORT:AStyleGetVersion=_AStyleGetVersion@0 +* No /EXPORT is required for x64 +*/ +extern "C" EXPORT char16_t* STDCALL AStyleMainUtf16(const char16_t* pSourceIn, // the source to be formatted + const char16_t* pOptions, // AStyle options + fpError fpErrorHandler, // error handler function + fpAlloc fpMemoryAlloc) // memory allocation function +{ + if (fpErrorHandler == nullptr) // cannot display a message if no error handler + return nullptr; + + if (pSourceIn == nullptr) + { + fpErrorHandler(101, "No pointer to source input."); + return nullptr; + } + if (pOptions == nullptr) + { + fpErrorHandler(102, "No pointer to AStyle options."); + return nullptr; + } + if (fpMemoryAlloc == nullptr) + { + fpErrorHandler(103, "No pointer to memory allocation function."); + return nullptr; + } +#ifndef _WIN32 + // check size of char16_t on Linux + int sizeCheck = 2; + if (sizeof(char16_t) != sizeCheck) + { + fpErrorHandler(104, "char16_t is not the correct size."); + return nullptr; + } +#endif + + ASLibrary library; + char16_t* utf16Out = library.formatUtf16(pSourceIn, pOptions, fpErrorHandler, fpMemoryAlloc); + return utf16Out; +} + +//---------------------------------------------------------------------------- +// ASTYLE_LIB entry point for library builds +//---------------------------------------------------------------------------- +/* + * IMPORTANT Visual C DLL linker for WIN32 must have the additional options: + * /EXPORT:AStyleMain=_AStyleMain@16 + * /EXPORT:AStyleMainUtf16=_AStyleMainUtf16@16 + * /EXPORT:AStyleGetVersion=_AStyleGetVersion@0 + * No /EXPORT is required for x64 + */ +extern "C" EXPORT char* STDCALL AStyleMain(const char* pSourceIn, // the source to be formatted + const char* pOptions, // AStyle options + fpError fpErrorHandler, // error handler function + fpAlloc fpMemoryAlloc) // memory allocation function +{ + if (fpErrorHandler == nullptr) // cannot display a message if no error handler + return nullptr; + + if (pSourceIn == nullptr) + { + fpErrorHandler(101, "No pointer to source input."); + return nullptr; + } + if (pOptions == nullptr) + { + fpErrorHandler(102, "No pointer to AStyle options."); + return nullptr; + } + if (fpMemoryAlloc == nullptr) + { + fpErrorHandler(103, "No pointer to memory allocation function."); + return nullptr; + } + + ASFormatter formatter; + ASOptions options(formatter); + + vector optionsVector; + stringstream opt(pOptions); + + options.importOptions(opt, optionsVector); + + bool ok = options.parseOptions(optionsVector, "Invalid Artistic Style options:"); + if (!ok) + fpErrorHandler(130, options.getOptionErrors().c_str()); + + stringstream in(pSourceIn); + ASStreamIterator streamIterator(&in); + ostringstream out; + formatter.init(&streamIterator); + + while (formatter.hasMoreLines()) + { + out << formatter.nextLine(); + if (formatter.hasMoreLines()) + out << streamIterator.getOutputEOL(); + else + { + // this can happen if the file if missing a closing brace and break-blocks is requested + if (formatter.getIsLineReady()) + { + out << streamIterator.getOutputEOL(); + out << formatter.nextLine(); + } + } + } + + size_t textSizeOut = out.str().length(); + char* pTextOut = fpMemoryAlloc((long) textSizeOut + 1); // call memory allocation function + if (pTextOut == nullptr) + { + fpErrorHandler(120, "Allocation failure on output."); + return nullptr; + } + + strcpy(pTextOut, out.str().c_str()); +#ifndef NDEBUG + // The checksum is an assert in the console build and ASFormatter. + // This error returns the incorrectly formatted file to the editor. + // This is done to allow the file to be saved for debugging purposes. + if (formatter.getChecksumDiff() != 0) + fpErrorHandler(220, + "Checksum error.\n" + "The incorrectly formatted file will be returned for debugging."); +#endif + return pTextOut; +} + +extern "C" EXPORT const char* STDCALL AStyleGetVersion(void) +{ + return g_version; +} + +// ASTYLECON_LIB is defined to exclude "main" from the test programs +#elif !defined(ASTYLECON_LIB) + +//---------------------------------------------------------------------------- +// main function for ASConsole build +//---------------------------------------------------------------------------- + +int main(int argc, char** argv) +{ + // create objects + ASFormatter formatter; + unique_ptr console(new ASConsole(formatter)); + + // process command line and option files + // build the vectors fileNameVector, optionsVector, and fileOptionsVector + vector argvOptions; + argvOptions = console->getArgvOptions(argc, argv); + console->processOptions(argvOptions); + + // if no files have been given, use cin for input and cout for output + if (!console->fileNameVectorIsEmpty()) + console->processFiles(); + else + console->formatCinToCout(); + + return EXIT_SUCCESS; +} + +#endif // ASTYLE_LIB diff -Nru geos-3.7.1/tools/astyle/astyle_main.h geos-3.8.0/tools/astyle/astyle_main.h --- geos-3.7.1/tools/astyle/astyle_main.h 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/astyle_main.h 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,452 @@ +// astyle_main.h +// Copyright (c) 2018 by Jim Pattee . +// This code is licensed under the MIT License. +// License.md describes the conditions under which this software may be distributed. + +#ifndef ASTYLE_MAIN_H +#define ASTYLE_MAIN_H + +//---------------------------------------------------------------------------- +// headers +//---------------------------------------------------------------------------- + +#include "astyle.h" + +#include +#include + +#if defined(__BORLANDC__) && __BORLANDC__ < 0x0650 + // Embarcadero needs this for the following utime.h + // otherwise "struct utimbuf" gets an error on time_t + // 0x0650 for C++Builder XE3 + using std::time_t; +#endif + +#if defined(_MSC_VER) + #include + #include +#else + #include + #include +#endif // end compiler checks + +#ifdef ASTYLE_JNI + #include + #ifndef ASTYLE_LIB // ASTYLE_LIB must be defined for ASTYLE_JNI + #define ASTYLE_LIB + #endif +#endif // ASTYLE_JNI + +#ifndef ASTYLE_LIB + // for console build only + #include "ASLocalizer.h" + #define _(a) localizer.settext(a) +#endif // ASTYLE_LIB + +//----------------------------------------------------------------------------- +// declarations +//----------------------------------------------------------------------------- + +// for G++ implementation of string.compare: +#if defined(__GNUC__) && __GNUC__ < 3 + #error - Use GNU C compiler release 3 or higher +#endif + +// for getenv and localtime +#if defined(_MSC_VER) + #pragma warning(disable: 4996) // secure version deprecation warnings +#endif + +// for Visual Studio supported C++11 standard +#if defined(_MSC_VER) && _MSC_VER < 1600 + #error Use Microsoft Visual Studio 2010 or higher +#endif + +#ifdef __clang__ + #pragma clang diagnostic ignored "-Wdeprecated-declarations" // getenv, localtime + #pragma clang diagnostic ignored "-Wmissing-braces" +#endif + +// for mingw BOM, UTF-16, and Unicode functions +#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) + #if (__MINGW32_MAJOR_VERSION > 3) || \ + ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 16)) + #error - Use MinGW compiler version 4 or higher + #endif +#endif + +#ifdef ASTYLE_LIB + + // define STDCALL and EXPORT for Windows + // MINGW defines STDCALL in Windows.h (actually windef.h) + // EXPORT has no value if ASTYLE_NO_EXPORT is defined + #ifdef _WIN32 + #ifndef STDCALL + #define STDCALL __stdcall + #endif + // define this to prevent compiler warning and error messages + #ifdef ASTYLE_NO_EXPORT + #define EXPORT + #else + #define EXPORT __declspec(dllexport) + #endif + // define STDCALL and EXPORT for non-Windows + // visibility attribute allows "-fvisibility=hidden" compiler option + #else + #define STDCALL + #if __GNUC__ >= 4 + #define EXPORT __attribute__ ((visibility ("default"))) + #else + #define EXPORT + #endif + #endif // #ifdef _WIN32 + + // define pointers to callback error handler and memory allocation + typedef void (STDCALL* fpError)(int errorNumber, const char* errorMessage); + typedef char* (STDCALL* fpAlloc)(unsigned long memoryNeeded); + +#endif // #ifdef ASTYLE_LIB + +//---------------------------------------------------------------------------- +// astyle namespace +//---------------------------------------------------------------------------- + +namespace astyle { +// +//---------------------------------------------------------------------------- +// ASStreamIterator class +// typename will be stringstream for AStyle +// it could be istream or wxChar for plug-ins +// ASSourceIterator is an inherited abstract class defined in astyle.h +//---------------------------------------------------------------------------- + +template +class ASStreamIterator : public ASSourceIterator +{ +public: + bool checkForEmptyLine; + + // function declarations + explicit ASStreamIterator(T* in); + virtual ~ASStreamIterator(); + bool getLineEndChange(int lineEndFormat) const; + int getStreamLength() const override; + string nextLine(bool emptyLineWasDeleted) override; + string peekNextLine() override; + void peekReset() override; + void saveLastInputLine(); + streamoff tellg() override; + +private: + ASStreamIterator(const ASStreamIterator& copy); // copy constructor not to be implemented + ASStreamIterator& operator=(ASStreamIterator&); // assignment operator not to be implemented + T* inStream; // pointer to the input stream + string buffer; // current input line + string prevBuffer; // previous input line + string outputEOL; // next output end of line char + int eolWindows; // number of Windows line endings, CRLF + int eolLinux; // number of Linux line endings, LF + int eolMacOld; // number of old Mac line endings. CR + streamoff streamLength; // length of the input file stream + streamoff peekStart; // starting position for peekNextLine + bool prevLineDeleted; // the previous input line was deleted + +public: // inline functions + bool compareToInputBuffer(const string& nextLine_) const + { return (nextLine_ == prevBuffer); } + const string& getOutputEOL() const { return outputEOL; } + streamoff getPeekStart() const override { return peekStart; } + bool hasMoreLines() const override { return !inStream->eof(); } +}; + +//---------------------------------------------------------------------------- +// ASEncoding class for utf8/16 conversions +// used by both console and library builds +//---------------------------------------------------------------------------- + +class ASEncoding +{ +private: + typedef char16_t utf16; // 16 bits unsigned + typedef unsigned char utf8; // 8 bits + typedef unsigned char ubyte; // 8 bits + enum { SURROGATE_LEAD_FIRST = 0xD800 }; + enum { SURROGATE_LEAD_LAST = 0xDBFF }; + enum { SURROGATE_TRAIL_FIRST = 0xDC00 }; + enum { SURROGATE_TRAIL_LAST = 0xDFFF }; + enum { SURROGATE_FIRST_VALUE = 0x10000 }; + enum eState { eStart, eSecondOf4Bytes, ePenultimate, eFinal }; + +public: + bool getBigEndian() const; + int swap16bit(int value) const; + size_t utf16len(const utf16* utf16In) const; + size_t utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const; + size_t utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const; + size_t utf16LengthFromUtf8(const char* utf8In, size_t len) const; + size_t utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian, + bool firstBlock, char* utf8Out) const; +}; + +//---------------------------------------------------------------------------- +// ASOptions class for options processing +// used by both console and library builds +//---------------------------------------------------------------------------- +class ASConsole; + +class ASOptions +{ +public: +#ifdef ASTYLE_LIB + ASOptions(ASFormatter& formatterArg); +#else + ASOptions(ASFormatter& formatterArg, ASConsole& consoleArg); +#endif + string getOptionErrors() const; + void importOptions(stringstream& in, vector& optionsVector); + bool parseOptions(vector& optionsVector, const string& errorInfo); + +private: + // variables + ASFormatter& formatter; + stringstream optionErrors; // option error messages +#ifndef ASTYLE_LIB + ASConsole& console; // DO NOT USE for ASTYLE_LIB +#endif + + // functions + ASOptions(const ASOptions&); // copy constructor not to be implemented + ASOptions& operator=(ASOptions&); // assignment operator not to be implemented + string getParam(const string& arg, const char* op); + string getParam(const string& arg, const char* op1, const char* op2); + bool isOption(const string& arg, const char* op); + bool isOption(const string& arg, const char* op1, const char* op2); + void isOptionError(const string& arg, const string& errorInfo); + bool isParamOption(const string& arg, const char* option); + bool isParamOption(const string& arg, const char* option1, const char* option2); + void parseOption(const string& arg, const string& errorInfo); +}; + +#ifndef ASTYLE_LIB + +//---------------------------------------------------------------------------- +// ASConsole class for console build +//---------------------------------------------------------------------------- + +class ASConsole +{ +private: // variables + ASFormatter& formatter; // reference to the ASFormatter object + ASEncoding encode; // file encoding conversion + ASLocalizer localizer; // language translation + ostream* errorStream; // direct error messages to cerr or cout + // command line options + bool isRecursive; // recursive option + bool isDryRun; // dry-run option + bool noBackup; // suffix=none option + bool preserveDate; // preserve-date option + bool isVerbose; // verbose option + bool isQuiet; // quiet option + bool isFormattedOnly; // formatted lines only option + bool ignoreExcludeErrors; // don't abort on unmatched excludes + bool ignoreExcludeErrorsDisplay; // don't display unmatched excludes + bool useAscii; // ascii option + // other variables + bool bypassBrowserOpen; // don't open the browser on html options + bool hasWildcard; // file name includes a wildcard + size_t mainDirectoryLength; // directory length to be excluded in displays + bool filesAreIdentical; // input and output files are identical + int filesFormatted; // number of files formatted + int filesUnchanged; // number of files unchanged + bool lineEndsMixed; // output has mixed line ends + int linesOut; // number of output lines + + string outputEOL; // current line end + string prevEOL; // previous line end + string optionFileName; // file path and name of the options file + string origSuffix; // suffix= option + string projectOptionFileName; // file path and name of the project options file + string stdPathIn; // path to input from stdin= + string stdPathOut; // path to output from stdout= + string targetDirectory; // path to the directory being processed + string targetFilename; // file name being processed + + vector excludeVector; // exclude from wildcard hits + vector excludeHitsVector; // exclude flags for error reporting + vector fileNameVector; // file paths and names from the command line + vector optionsVector; // options from the command line + vector projectOptionsVector;// project options from the project options file + vector fileOptionsVector; // options from the options file + vector fileName; // files to be processed including path + +public: // functions + explicit ASConsole(ASFormatter& formatterArg); + ~ASConsole(); + void convertLineEnds(ostringstream& out, int lineEnd); + FileEncoding detectEncoding(const char* data, size_t dataSize) const; + void error() const; + void error(const char* why, const char* what) const; + void formatCinToCout(); + vector getArgvOptions(int argc, char** argv) const; + bool fileExists(const char* file) const; + bool fileNameVectorIsEmpty() const; + ostream* getErrorStream() const; + bool getFilesAreIdentical() const; + int getFilesFormatted() const; + bool getIgnoreExcludeErrors() const; + bool getIgnoreExcludeErrorsDisplay() const; + bool getIsDryRun() const; + bool getIsFormattedOnly() const; + bool getIsQuiet() const; + bool getIsRecursive() const; + bool getIsVerbose() const; + bool getLineEndsMixed() const; + bool getNoBackup() const; + bool getPreserveDate() const; + string getLanguageID() const; + string getNumberFormat(int num, size_t lcid = 0) const; + string getNumberFormat(int num, const char* groupingArg, const char* separator) const; + string getOptionFileName() const; + string getOrigSuffix() const; + string getProjectOptionFileName() const; + string getStdPathIn() const; + string getStdPathOut() const; + void getTargetFilenames(string& targetFilename_, vector& targetFilenameVector) const; + void processFiles(); + void processOptions(const vector& argvOptions); + void setBypassBrowserOpen(bool state); + void setErrorStream(ostream* errStreamPtr); + void setIgnoreExcludeErrors(bool state); + void setIgnoreExcludeErrorsAndDisplay(bool state); + void setIsDryRun(bool state); + void setIsFormattedOnly(bool state); + void setIsQuiet(bool state); + void setIsRecursive(bool state); + void setIsVerbose(bool state); + void setNoBackup(bool state); + void setOptionFileName(const string& name); + void setOrigSuffix(const string& suffix); + void setPreserveDate(bool state); + void setProjectOptionFileName(const string& optfilepath); + void setStdPathIn(const string& path); + void setStdPathOut(const string& path); + void standardizePath(string& path, bool removeBeginningSeparator = false) const; + bool stringEndsWith(const string& str, const string& suffix) const; + void updateExcludeVector(const string& suffixParam); + vector getExcludeVector() const; + vector getExcludeHitsVector() const; + vector getFileNameVector() const; + vector getOptionsVector() const; + vector getProjectOptionsVector() const; + vector getFileOptionsVector() const; + vector getFileName() const; + +private: // functions + ASConsole(const ASConsole&); // copy constructor not to be implemented + ASConsole& operator=(ASConsole&); // assignment operator not to be implemented + void correctMixedLineEnds(ostringstream& out); + void formatFile(const string& fileName_); + string getParentDirectory(const string& absPath) const; + string findProjectOptionFilePath(const string& fileName_) const; + string getCurrentDirectory(const string& fileName_) const; + void getFileNames(const string& directory, const vector& wildcards); + void getFilePaths(const string& filePath); + string getFullPathName(const string& relativePath) const; + string getParam(const string& arg, const char* op); + bool isHomeOrInvalidAbsPath(const string& absPath) const; + void initializeOutputEOL(LineEndFormat lineEndFormat); + bool isOption(const string& arg, const char* op); + bool isOption(const string& arg, const char* a, const char* b); + bool isParamOption(const string& arg, const char* option); + bool isPathExclued(const string& subPath); + void launchDefaultBrowser(const char* filePathIn = nullptr) const; + void printHelp() const; + void printMsg(const char* msg, const string& data) const; + void printSeparatingLine() const; + void printVerboseHeader() const; + void printVerboseStats(clock_t startTime) const; + FileEncoding readFile(const string& fileName_, stringstream& in) const; + void removeFile(const char* fileName_, const char* errMsg) const; + void renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const; + void setOutputEOL(LineEndFormat lineEndFormat, const string& currentEOL); + void sleep(int seconds) const; + int waitForRemove(const char* newFileName) const; + int wildcmp(const char* wild, const char* data) const; + void writeFile(const string& fileName_, FileEncoding encoding, ostringstream& out) const; +#ifdef _WIN32 + void displayLastError(); +#endif +}; +#else // ASTYLE_LIB + +//---------------------------------------------------------------------------- +// ASLibrary class for library build +//---------------------------------------------------------------------------- + +class ASLibrary +{ +public: + ASLibrary() {} + virtual ~ASLibrary() {} + // virtual functions are mocked in testing + char16_t* formatUtf16(const char16_t*, const char16_t*, fpError, fpAlloc) const; + virtual char16_t* convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const; + virtual char* convertUtf16ToUtf8(const char16_t* utf16In) const; + +private: + static char* STDCALL tempMemoryAllocation(unsigned long memoryNeeded); + +private: + ASEncoding encode; // file encoding conversion +}; + +#endif // ASTYLE_LIB + +//---------------------------------------------------------------------------- + +} // end of namespace astyle + +//---------------------------------------------------------------------------- +// declarations for java native interface (JNI) build +// they are called externally and are NOT part of the namespace +//---------------------------------------------------------------------------- +#ifdef ASTYLE_JNI +void STDCALL javaErrorHandler(int errorNumber, const char* errorMessage); +char* STDCALL javaMemoryAlloc(unsigned long memoryNeeded); +// the following function names are constructed from method names in the calling java program +extern "C" EXPORT +jstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass); +extern "C" EXPORT +jstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env, + jobject obj, + jstring textInJava, + jstring optionsJava); +#endif // ASTYLE_JNI + +//---------------------------------------------------------------------------- +// declarations for UTF-16 interface +// they are called externally and are NOT part of the namespace +//---------------------------------------------------------------------------- +#ifdef ASTYLE_LIB +extern "C" EXPORT +char16_t* STDCALL AStyleMainUtf16(const char16_t* pSourceIn, + const char16_t* pOptions, + fpError fpErrorHandler, + fpAlloc fpMemoryAlloc); +#endif // ASTYLE_LIB + +//----------------------------------------------------------------------------- +// declarations for standard DLL interface +// they are called externally and are NOT part of the namespace +//----------------------------------------------------------------------------- +#ifdef ASTYLE_LIB +extern "C" EXPORT char* STDCALL AStyleMain(const char* pSourceIn, + const char* pOptions, + fpError fpErrorHandler, + fpAlloc fpMemoryAlloc); +extern "C" EXPORT const char* STDCALL AStyleGetVersion(void); +#endif // ASTYLE_LIB + +//----------------------------------------------------------------------------- + +#endif // closes ASTYLE_MAIN_H diff -Nru geos-3.7.1/tools/astyle/CMakeLists.txt geos-3.8.0/tools/astyle/CMakeLists.txt --- geos-3.7.1/tools/astyle/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/CMakeLists.txt 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,16 @@ +################################################################################# +# +# Copyright (C) 2019 Paul Ramsey +# +# This is free software; you can redistribute and/or modify it under +# the terms of the GNU Lesser General Public Licence as published +# by the Free Software Foundation. +# See the COPYING file for more information. +# +################################################################################# + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +file(GLOB_RECURSE astyle_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +add_executable(astyle ${astyle_SOURCES}) +# message(STATUS "Enable AStyle") + diff -Nru geos-3.7.1/tools/astyle/Makefile.am geos-3.8.0/tools/astyle/Makefile.am --- geos-3.7.1/tools/astyle/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/Makefile.am 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,26 @@ +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# + +AUTOMAKE_OPTIONS = subdir-objects + +AM_CPPFLAGS = + +EXTRA_DIST = \ + CMakeLists.txt + +noinst_PROGRAMS = astyle + +astyle_SOURCES = \ + ASBeautifier.cpp \ + ASEnhancer.cpp \ + ASFormatter.cpp \ + ASLocalizer.cpp \ + ASResource.cpp \ + astyle_main.cpp + + +noinst_HEADERS = \ + ASLocalizer.h \ + astyle.h \ + astyle_main.h diff -Nru geos-3.7.1/tools/astyle/Makefile.in geos-3.8.0/tools/astyle/Makefile.in --- geos-3.7.1/tools/astyle/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle/Makefile.in 2019-10-10 17:21:13.000000000 +0000 @@ -0,0 +1,668 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 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@ + +# +# This file is part of project GEOS (http://trac.osgeo.org/geos/) +# + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +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@ +target_triplet = @target@ +noinst_PROGRAMS = astyle$(EXEEXT) +subdir = tools/astyle +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/ax_check_compile_flag.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/macros/ax_cxx_compile_stdcxx_11.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_astyle_OBJECTS = ASBeautifier.$(OBJEXT) ASEnhancer.$(OBJEXT) \ + ASFormatter.$(OBJEXT) ASLocalizer.$(OBJEXT) \ + ASResource.$(OBJEXT) astyle_main.$(OBJEXT) +astyle_OBJECTS = $(am_astyle_OBJECTS) +astyle_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(astyle_SOURCES) +DIST_SOURCES = $(astyle_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +HAVE_CXX11 = @HAVE_CXX11@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +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@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_ARCH_INCLUDE_DIR = @RUBY_ARCH_INCLUDE_DIR@ +RUBY_ARCH_LIB_DIR = @RUBY_ARCH_LIB_DIR@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SITE_ARCH = @RUBY_SITE_ARCH@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +VERSION_RELEASE = @VERSION_RELEASE@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +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@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +AM_CPPFLAGS = +EXTRA_DIST = \ + CMakeLists.txt + +astyle_SOURCES = \ + ASBeautifier.cpp \ + ASEnhancer.cpp \ + ASFormatter.cpp \ + ASLocalizer.cpp \ + ASResource.cpp \ + astyle_main.cpp + +noinst_HEADERS = \ + ASLocalizer.h \ + astyle.h \ + astyle_main.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 tools/astyle/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tools/astyle/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 + +astyle$(EXEEXT): $(astyle_OBJECTS) $(astyle_DEPENDENCIES) $(EXTRA_astyle_DEPENDENCIES) + @rm -f astyle$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(astyle_OBJECTS) $(astyle_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASBeautifier.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASEnhancer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASFormatter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASLocalizer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASResource.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/astyle_main.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + 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-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +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) $(HEADERS) +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: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +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 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: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am 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 tags-am 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 -Nru geos-3.7.1/tools/astyle.sh geos-3.8.0/tools/astyle.sh --- geos-3.7.1/tools/astyle.sh 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/astyle.sh 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/sh + +DIR=`dirname $0` +${DIR}/astyle/astyle \ + --style=stroustrup \ + --unpad-paren \ + --pad-header \ + --pad-comma \ + --indent=spaces=4 \ + --align-pointer=type \ + --max-code-length=120 \ + --lineend=linux \ + $@ diff -Nru geos-3.7.1/tools/CMakeLists.txt geos-3.8.0/tools/CMakeLists.txt --- geos-3.7.1/tools/CMakeLists.txt 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/tools/CMakeLists.txt 2019-10-08 16:20:35.000000000 +0000 @@ -6,35 +6,48 @@ # # This is free software; you can redistribute and/or modify it under # the terms of the GNU Lesser General Public Licence as published -# by the Free Software Foundation. +# by the Free Software Foundation. # See the COPYING file for more information. # ################################################################################# -if(UNIX OR MINGW) - if(APPLE AND GEOS_ENABLE_MACOSX_FRAMEWORK AND GEOS_ENABLE_MACOSX_FRAMEWORK_UNIXCOMPAT) - set(installdest GEOS.framework/Versions/${VERSION_MAJOR}/unix/bin) - set(prefix ${CMAKE_INSTALL_PREFIX}/GEOS.framework/Versions/${VERSION_MAJOR}/unix) - elseif(APPLE AND GEOS_ENABLE_MACOSX_FRAMEWORK) - # just a dummy so installdest not set - # want geos-config only for Mac unix build or framework+unixcompat - else() - set(installdest bin) - set(prefix ${CMAKE_INSTALL_PREFIX}) - endif() - - set(exec_prefix ${prefix}/bin) - set(libdir ${prefix}/lib) - - if(installdest) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/geos-config.in - ${CMAKE_CURRENT_BINARY_DIR}/geos-config @ONLY) - - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/geos-config - DESTINATION ${installdest} - PERMISSIONS - OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/geos-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/geos-config) + + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/geos-config + DESTINATION bin + PERMISSIONS + OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +add_subdirectory(astyle) + +# if(UNIX OR MINGW) + +# if(APPLE AND GEOS_ENABLE_MACOSX_FRAMEWORK AND GEOS_ENABLE_MACOSX_FRAMEWORK_UNIXCOMPAT) +# set(installdest GEOS.framework/Versions/${VERSION_MAJOR}/unix/bin) +# set(prefix ${CMAKE_INSTALL_PREFIX}/GEOS.framework/Versions/${VERSION_MAJOR}/unix) +# elseif(APPLE AND GEOS_ENABLE_MACOSX_FRAMEWORK) +# # just a dummy so installdest not set +# # want geos-config only for Mac unix build or framework+unixcompat +# else() +# set(installdest bin) +# set(prefix ${CMAKE_INSTALL_PREFIX}) +# endif() + +# set(exec_prefix ${prefix}/bin) +# set(libdir ${prefix}/lib) + +# if(installdest) +# configure_file(${CMAKE_CURRENT_SOURCE_DIR}/geos-config.in +# ${CMAKE_CURRENT_BINARY_DIR}/geos-config @ONLY) + +# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/geos-config +# DESTINATION ${installdest} +# PERMISSIONS +# OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) +# endif() + +# endif() -endif() diff -Nru geos-3.7.1/tools/geos-config.cmake geos-3.8.0/tools/geos-config.cmake --- geos-3.7.1/tools/geos-config.cmake 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/tools/geos-config.cmake 2019-10-08 16:20:35.000000000 +0000 @@ -0,0 +1,76 @@ +#!/bin/sh + +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@/bin +libdir=@CMAKE_INSTALL_PREFIX@/lib + +usage() +{ + cat <&2 +fi + +while test $# -gt 0; do +case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; +esac +case $1 in + --prefix) + echo @CMAKE_INSTALL_PREFIX@ + ;; + --version) + echo @GEOS_VERSION@ + ;; + --cflags) + echo -I@CMAKE_INSTALL_PREFIX@/include + ;; + --libs) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos-@GEOS_VERSION_MAJOR@ + ;; + --clibs) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos_c + ;; + --cclibs) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos + ;; + --static-clibs) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos_c -lgeos -lm + ;; + --static-cclibs) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos -lm + ;; + --ldflags) + echo -L@CMAKE_INSTALL_PREFIX@/lib -lgeos + ;; + --includes) + echo @CMAKE_INSTALL_PREFIX@/include + ;; + --jtsport) + echo @JTS_PORT@ + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + diff -Nru geos-3.7.1/tools/geos-config.in geos-3.8.0/tools/geos-config.in --- geos-3.7.1/tools/geos-config.in 2018-11-09 23:03:28.000000000 +0000 +++ geos-3.8.0/tools/geos-config.in 2019-10-08 16:20:35.000000000 +0000 @@ -32,36 +32,36 @@ esac case $1 in --prefix) - echo ${prefix} + echo @prefix@ ;; --version) echo @VERSION@ ;; --cflags) - echo -I${prefix}/include + echo -I@prefix@/include ;; --libs) # TODO: make an alias for --clibs # see http://trac.osgeo.org/geos/ticket/497 - echo -L${libdir} -lgeos-@VERSION_RELEASE@ + echo -L@libdir@ -lgeos-@VERSION_RELEASE@ ;; --clibs) - echo -L${libdir} -lgeos_c + echo -L@libdir@ -lgeos_c ;; --cclibs) - echo -L${libdir} -lgeos + echo -L@libdir@ -lgeos ;; --static-clibs) - echo -L${libdir} -lgeos_c -lgeos -lm + echo -L@libdir@ -lgeos_c -lgeos -lm ;; --static-cclibs) - echo -L${libdir} -lgeos -lm + echo -L@libdir@ -lgeos -lm ;; --ldflags) - echo -L${libdir} + echo -L@libdir@ ;; --includes) - echo ${prefix}/include + echo @prefix@/include ;; --jtsport) echo @JTS_PORT@ diff -Nru geos-3.7.1/tools/Makefile.am geos-3.8.0/tools/Makefile.am --- geos-3.7.1/tools/Makefile.am 2018-10-19 22:32:06.000000000 +0000 +++ geos-3.8.0/tools/Makefile.am 2019-10-08 16:20:35.000000000 +0000 @@ -2,4 +2,8 @@ # This file is part of project GEOS (http://trac.osgeo.org/geos/) bin_SCRIPTS = geos-config -EXTRA_DIST = CMakeLists.txt repo_revision.sh +EXTRA_DIST = \ + CMakeLists.txt \ + geos-config.cmake + +SUBDIRS = astyle diff -Nru geos-3.7.1/tools/Makefile.in geos-3.8.0/tools/Makefile.in --- geos-3.7.1/tools/Makefile.in 2018-11-29 23:05:20.000000000 +0000 +++ geos-3.8.0/tools/Makefile.in 2019-10-10 17:21:13.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,17 +15,7 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -90,6 +80,8 @@ host_triplet = @host@ target_triplet = @target@ subdir = tools +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/geos-config.in $(srcdir)/astyle.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ @@ -105,12 +97,10 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/config.h \ - $(top_builddir)/include/geos/platform.h +CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = geos-config -CONFIG_CLEAN_VPATH_FILES = +CONFIG_CLEAN_VPATH_FILES = astyle.sh am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ @@ -154,14 +144,73 @@ am__v_at_1 = SOURCES = DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-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 \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/geos-config.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +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" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ @@ -194,6 +243,7 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ +DOXYGEN_LOGFILE = @DOXYGEN_LOGFILE@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -210,9 +260,6 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTERFACE_AGE = @INTERFACE_AGE@ -INTERFACE_CURRENT = @INTERFACE_CURRENT@ -INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ LD = @LD@ LDFLAGS = @LDFLAGS@ @@ -222,7 +269,6 @@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ @@ -340,8 +386,12 @@ # # This file is part of project GEOS (http://trac.osgeo.org/geos/) bin_SCRIPTS = geos-config -EXTRA_DIST = CMakeLists.txt repo_revision.sh -all: all-am +EXTRA_DIST = \ + CMakeLists.txt \ + geos-config.cmake + +SUBDIRS = astyle +all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @@ -356,13 +406,14 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tools/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__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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) @@ -416,17 +467,107 @@ clean-libtool: -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: -cscope cscopelist: +# 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. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + 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" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + 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; \ + $(am__define_uniq_tagged_files); \ + 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-recursive +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir-am: $(DISTFILES) +distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -456,22 +597,48 @@ || exit 1; \ fi; \ done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + 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 check-am: all-am -check: check-am +check: check-recursive all-am: Makefile $(SCRIPTS) -installdirs: +installdirs: installdirs-recursive +installdirs-am: 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: 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-am +installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ @@ -493,89 +660,88 @@ 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: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am -distclean: distclean-am +distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic +distclean-am: clean-am distclean-generic distclean-tags -dvi: dvi-am +dvi: dvi-recursive dvi-am: -html: html-am +html: html-recursive html-am: -info: info-am +info: info-recursive info-am: install-data-am: -install-dvi: install-dvi-am +install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS -install-html: install-html-am +install-html: install-html-recursive install-html-am: -install-info: install-info-am +install-info: install-info-recursive install-info-am: install-man: -install-pdf: install-pdf-am +install-pdf: install-pdf-recursive install-pdf-am: -install-ps: install-ps-am +install-ps: install-ps-recursive install-ps-am: installcheck-am: -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool -pdf: pdf-am +pdf: pdf-recursive pdf-am: -ps: ps-am +ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS -.MAKE: install-am install-strip +.MAKE: $(am__recursive_targets) install-am install-strip -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - cscopelist-am ctags-am distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS 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 \ + installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binSCRIPTS -.PRECIOUS: Makefile - # 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. diff -Nru geos-3.7.1/tools/repo_revision.sh geos-3.8.0/tools/repo_revision.sh --- geos-3.7.1/tools/repo_revision.sh 2018-11-29 22:42:01.000000000 +0000 +++ geos-3.8.0/tools/repo_revision.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -#!/bin/sh - -LC_ALL="C" # what for ? - -[ -z "$top_srcdir" ] && top_srcdir="." -rev_file=$top_srcdir'/geos_revision.h' - -read_rev() { - - if test -d $top_srcdir"/.svn"; then - read_rev_svn - elif test -d $top_srcdir"/.git"; then - read_rev_git - else - echo "Can't fetch local revision (neither .svn nor .git found)" >&2 - echo 0 - fi -} - -read_rev_git() { - - # TODO: test on old systems, I think I saw some `which` - # implementations returning "nothing found" or something - # like that, making the later if ( ! $svn_exe ) always false - # - git_exe=`which git`; - if test -z "$git_exe"; then - echo "Can't fetch SVN revision: no git executable found" >&2 - echo 0; - fi - - last_commit=`cd ${top_srcdir} && ${git_exe} log -1` - - if test -z "$last_commit"; then - echo "Can't fetch last commit info from git log" >&2 - echo 0 - return - fi - - svnrev=`echo "$last_commit" | grep git-svn | cut -d@ -f2 | cut -d' ' -f1` - if test -n "$svnrev"; then - # Last commit has SVN metadata, we'll use that - echo r$svnrev - return - fi - - # Last commit has no SVN metadata, we'll use sha - sha=`cd ${top_srcdir} && ${git_exe} describe --always` - echo $sha -} - -read_rev_svn() { - - # TODO: test on old systems, I think I saw some `which` - # implementations returning "nothing found" or something - # like that, making the later if ( ! $svn_exe ) always false - # - svn_exe=`which svn` - if test -z "$svn_exe"; then - echo "Can't fetch SVN revision: no svn executable found" >&2 - echo 0; - fi - - svn_info=`"${svn_exe}" info | grep 'Last Changed Rev:' | cut -d: -f2` - - if test -z "$svn_info"; then - echo "Can't fetch SVN revision with `svn info`" >&2 - echo 0 - else - echo r${svn_info} - fi -} - -write_defn() { - rev=$1 - oldrev=0 - - # Do not override the file if new detected - # revision isn't zero nor different from the existing one - if test -f $rev_file; then - oldrev=`grep GEOS_REVISION ${rev_file} | awk '{print $2}'` - if test "$rev" = 0 -o "$rev" = "$oldrev"; then - echo "Not updating existing rev file at $oldrev" >&2 - return; - fi - fi - - echo "#define GEOS_REVISION \"$rev\"" | tee $rev_file - echo "Wrote rev '$rev' in file '$rev_file'" >&2 -} - -# Read the svn revision number -svn_rev=`read_rev` - -# Write it -write_defn $svn_rev diff -Nru geos-3.7.1/Version.txt geos-3.8.0/Version.txt --- geos-3.7.1/Version.txt 1970-01-01 00:00:00.000000000 +0000 +++ geos-3.8.0/Version.txt 2019-10-10 17:49:25.000000000 +0000 @@ -0,0 +1,22 @@ + +# GEOS Versions +GEOS_VERSION_MAJOR=3 +GEOS_VERSION_MINOR=8 +GEOS_VERSION_PATCH=0 + +# OPTIONS: "", "dev", "rc1" etc. +GEOS_PATCH_WORD= + +# GEOS CAPI Versions +# +# Always increase the revision value. +# Increase the current value whenever an interface has been +# added, removed or changed. +# Increase the age value only if the changes made to the ABI +# are backward compatible. +CAPI_INTERFACE_CURRENT=14 +CAPI_INTERFACE_REVISION=1 +CAPI_INTERFACE_AGE=13 + +# JTS Port +JTS_PORT=1.13.0